diff options
349 files changed, 33944 insertions, 13458 deletions
diff --git a/.gitignore b/.gitignore index 3fc95170aa..71350ca1b9 100644 --- a/.gitignore +++ b/.gitignore @@ -143,6 +143,7 @@ JAVADOC-GENERATED /make/output.mk /make/emd2exml +/make/make_emakefile # Created by "out_build update_primary" /bootstrap/primary_compiler/ diff --git a/HOWTO/INSTALL-WIN32.md b/HOWTO/INSTALL-WIN32.md index d7be255e9f..c74107d749 100644 --- a/HOWTO/INSTALL-WIN32.md +++ b/HOWTO/INSTALL-WIN32.md @@ -392,7 +392,7 @@ tools: LIB="$WIN_VISUAL_STUDIO_ROOT\\VC\\lib\\;$WIN_SDK\\lib\\winv6.3\\um\\x86" - INCLUDE="$WIN_VISUAL_STUDIO_ROOT\\VC\\include\\;$WIN_SDK\\include\\shared\\; + INCLUDE="$WIN_VISUAL_STUDIO_ROOT\\VC\\include\\;$WIN_SDK\\include\\shared\\;\ $WIN_SDK\\include\\um;$WIN_SDK\\include\\winrt\\;$WIN_SDK\\include\\um\\gl" export CYGWIN PATH LIBPATH LIB INCLUDE diff --git a/OTP_VERSION b/OTP_VERSION index 02f94dcfc1..a027c639c4 100644 --- a/OTP_VERSION +++ b/OTP_VERSION @@ -1 +1 @@ -19.0.5 +19.1.5 diff --git a/bootstrap/bin/start.boot b/bootstrap/bin/start.boot Binary files differindex 4a1f656c3c..9956d75a24 100644 --- a/bootstrap/bin/start.boot +++ b/bootstrap/bin/start.boot diff --git a/bootstrap/bin/start_clean.boot b/bootstrap/bin/start_clean.boot Binary files differindex 4a1f656c3c..9956d75a24 100644 --- a/bootstrap/bin/start_clean.boot +++ b/bootstrap/bin/start_clean.boot diff --git a/bootstrap/lib/compiler/ebin/beam_asm.beam b/bootstrap/lib/compiler/ebin/beam_asm.beam Binary files differindex 481d43c967..1214600cc5 100644 --- a/bootstrap/lib/compiler/ebin/beam_asm.beam +++ b/bootstrap/lib/compiler/ebin/beam_asm.beam diff --git a/bootstrap/lib/compiler/ebin/beam_block.beam b/bootstrap/lib/compiler/ebin/beam_block.beam Binary files differindex b6a4b6f10f..95846cdda9 100644 --- a/bootstrap/lib/compiler/ebin/beam_block.beam +++ b/bootstrap/lib/compiler/ebin/beam_block.beam diff --git a/bootstrap/lib/compiler/ebin/beam_dict.beam b/bootstrap/lib/compiler/ebin/beam_dict.beam Binary files differindex 4e12260e65..5561744faa 100644 --- a/bootstrap/lib/compiler/ebin/beam_dict.beam +++ b/bootstrap/lib/compiler/ebin/beam_dict.beam diff --git a/bootstrap/lib/compiler/ebin/beam_jump.beam b/bootstrap/lib/compiler/ebin/beam_jump.beam Binary files differindex 2d1961570f..bceb7936d6 100644 --- a/bootstrap/lib/compiler/ebin/beam_jump.beam +++ b/bootstrap/lib/compiler/ebin/beam_jump.beam diff --git a/bootstrap/lib/compiler/ebin/beam_split.beam b/bootstrap/lib/compiler/ebin/beam_split.beam Binary files differindex 4a63468419..524e9a3078 100644 --- a/bootstrap/lib/compiler/ebin/beam_split.beam +++ b/bootstrap/lib/compiler/ebin/beam_split.beam diff --git a/bootstrap/lib/compiler/ebin/beam_utils.beam b/bootstrap/lib/compiler/ebin/beam_utils.beam Binary files differindex 25cd7ce430..36f23e98cc 100644 --- a/bootstrap/lib/compiler/ebin/beam_utils.beam +++ b/bootstrap/lib/compiler/ebin/beam_utils.beam diff --git a/bootstrap/lib/compiler/ebin/beam_validator.beam b/bootstrap/lib/compiler/ebin/beam_validator.beam Binary files differindex 9d952f0a64..07cfa5a87a 100644 --- a/bootstrap/lib/compiler/ebin/beam_validator.beam +++ b/bootstrap/lib/compiler/ebin/beam_validator.beam diff --git a/bootstrap/lib/compiler/ebin/compiler.app b/bootstrap/lib/compiler/ebin/compiler.app index ebd5205219..fd908e3c3f 100644 --- a/bootstrap/lib/compiler/ebin/compiler.app +++ b/bootstrap/lib/compiler/ebin/compiler.app @@ -19,7 +19,7 @@ {application, compiler, [{description, "ERTS CXC 138 10"}, - {vsn, "7.0.1"}, + {vsn, "7.0.2"}, {modules, [ beam_a, beam_asm, diff --git a/bootstrap/lib/compiler/ebin/core_parse.beam b/bootstrap/lib/compiler/ebin/core_parse.beam Binary files differindex 2599138a8c..c85f2ec140 100644 --- a/bootstrap/lib/compiler/ebin/core_parse.beam +++ b/bootstrap/lib/compiler/ebin/core_parse.beam diff --git a/bootstrap/lib/compiler/ebin/sys_core_dsetel.beam b/bootstrap/lib/compiler/ebin/sys_core_dsetel.beam Binary files differindex 81da8b62c5..47b804d61d 100644 --- a/bootstrap/lib/compiler/ebin/sys_core_dsetel.beam +++ b/bootstrap/lib/compiler/ebin/sys_core_dsetel.beam diff --git a/bootstrap/lib/compiler/ebin/sys_core_fold.beam b/bootstrap/lib/compiler/ebin/sys_core_fold.beam Binary files differindex 75a6570461..3ba8d92655 100644 --- a/bootstrap/lib/compiler/ebin/sys_core_fold.beam +++ b/bootstrap/lib/compiler/ebin/sys_core_fold.beam diff --git a/bootstrap/lib/compiler/ebin/v3_codegen.beam b/bootstrap/lib/compiler/ebin/v3_codegen.beam Binary files differindex 6afb674a9f..cb64a1a2ac 100644 --- a/bootstrap/lib/compiler/ebin/v3_codegen.beam +++ b/bootstrap/lib/compiler/ebin/v3_codegen.beam diff --git a/bootstrap/lib/kernel/ebin/code_server.beam b/bootstrap/lib/kernel/ebin/code_server.beam Binary files differindex 7f073fe932..8cd118bc9d 100644 --- a/bootstrap/lib/kernel/ebin/code_server.beam +++ b/bootstrap/lib/kernel/ebin/code_server.beam diff --git a/bootstrap/lib/kernel/ebin/disk_log_1.beam b/bootstrap/lib/kernel/ebin/disk_log_1.beam Binary files differindex 6b10d652de..4e819c4899 100644 --- a/bootstrap/lib/kernel/ebin/disk_log_1.beam +++ b/bootstrap/lib/kernel/ebin/disk_log_1.beam diff --git a/bootstrap/lib/kernel/ebin/hipe_unified_loader.beam b/bootstrap/lib/kernel/ebin/hipe_unified_loader.beam Binary files differindex f6715adbfe..c8edaa58d1 100644 --- a/bootstrap/lib/kernel/ebin/hipe_unified_loader.beam +++ b/bootstrap/lib/kernel/ebin/hipe_unified_loader.beam diff --git a/bootstrap/lib/kernel/ebin/inet.beam b/bootstrap/lib/kernel/ebin/inet.beam Binary files differindex ff7f0ba7e6..b11c8fa56d 100644 --- a/bootstrap/lib/kernel/ebin/inet.beam +++ b/bootstrap/lib/kernel/ebin/inet.beam diff --git a/bootstrap/lib/kernel/ebin/kernel.app b/bootstrap/lib/kernel/ebin/kernel.app index a4600713e5..569e0fb5b1 100644 --- a/bootstrap/lib/kernel/ebin/kernel.app +++ b/bootstrap/lib/kernel/ebin/kernel.app @@ -22,7 +22,7 @@ {application, kernel, [ {description, "ERTS CXC 138 10"}, - {vsn, "5.0"}, + {vsn, "5.1"}, {modules, [application, application_controller, application_master, diff --git a/bootstrap/lib/kernel/ebin/kernel.appup b/bootstrap/lib/kernel/ebin/kernel.appup index 1ed9771492..28f35f54d2 100644 --- a/bootstrap/lib/kernel/ebin/kernel.appup +++ b/bootstrap/lib/kernel/ebin/kernel.appup @@ -16,11 +16,11 @@ %% limitations under the License. %% %% %CopyrightEnd% -{"5.0", +{"5.1", %% Up from - max one major revision back - [{<<"5\\.0(\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* + [{<<"5\\.[0-1](\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* {<<"4\\.[0-2](\\.[0-9]+)*">>,[restart_new_emulator]}], % OTP-18.* %% Down to - max one major revision back - [{<<"5\\.0(\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* + [{<<"5\\.[0-1](\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* {<<"4\\.[0-2](\\.[0-9]+)*">>,[restart_new_emulator]}] % OTP-18.* }. diff --git a/bootstrap/lib/kernel/ebin/os.beam b/bootstrap/lib/kernel/ebin/os.beam Binary files differindex 9ebe6c770f..f5f81c5838 100644 --- a/bootstrap/lib/kernel/ebin/os.beam +++ b/bootstrap/lib/kernel/ebin/os.beam diff --git a/bootstrap/lib/stdlib/ebin/edlin_expand.beam b/bootstrap/lib/stdlib/ebin/edlin_expand.beam Binary files differindex adc0f4ba1c..9c368c5e90 100644 --- a/bootstrap/lib/stdlib/ebin/edlin_expand.beam +++ b/bootstrap/lib/stdlib/ebin/edlin_expand.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_parse.beam b/bootstrap/lib/stdlib/ebin/erl_parse.beam Binary files differindex d75b490162..d58ca32495 100644 --- a/bootstrap/lib/stdlib/ebin/erl_parse.beam +++ b/bootstrap/lib/stdlib/ebin/erl_parse.beam diff --git a/bootstrap/lib/stdlib/ebin/error_logger_file_h.beam b/bootstrap/lib/stdlib/ebin/error_logger_file_h.beam Binary files differindex 0e61e87708..b845a64248 100644 --- a/bootstrap/lib/stdlib/ebin/error_logger_file_h.beam +++ b/bootstrap/lib/stdlib/ebin/error_logger_file_h.beam diff --git a/bootstrap/lib/stdlib/ebin/error_logger_tty_h.beam b/bootstrap/lib/stdlib/ebin/error_logger_tty_h.beam Binary files differindex 46eafce18e..af784cf79d 100644 --- a/bootstrap/lib/stdlib/ebin/error_logger_tty_h.beam +++ b/bootstrap/lib/stdlib/ebin/error_logger_tty_h.beam diff --git a/bootstrap/lib/stdlib/ebin/gen_statem.beam b/bootstrap/lib/stdlib/ebin/gen_statem.beam Binary files differindex 3dc104f1c3..e4f06a8278 100644 --- a/bootstrap/lib/stdlib/ebin/gen_statem.beam +++ b/bootstrap/lib/stdlib/ebin/gen_statem.beam diff --git a/bootstrap/lib/stdlib/ebin/stdlib.app b/bootstrap/lib/stdlib/ebin/stdlib.app index 81b30526ab..3172169b30 100644 --- a/bootstrap/lib/stdlib/ebin/stdlib.app +++ b/bootstrap/lib/stdlib/ebin/stdlib.app @@ -20,7 +20,7 @@ %% {application, stdlib, [{description, "ERTS CXC 138 10"}, - {vsn, "3.0.1"}, + {vsn, "3.1"}, {modules, [array, base64, beam_lib, diff --git a/bootstrap/lib/stdlib/ebin/stdlib.appup b/bootstrap/lib/stdlib/ebin/stdlib.appup index 322a329931..db27ef6efd 100644 --- a/bootstrap/lib/stdlib/ebin/stdlib.appup +++ b/bootstrap/lib/stdlib/ebin/stdlib.appup @@ -16,11 +16,11 @@ %% limitations under the License. %% %% %CopyrightEnd% -{"3.0.1", +{"3.1", %% Up from - max one major revision back - [{<<"3\\.0(\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* + [{<<"3\\.[0-1](\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* {<<"2\\.[5-8](\\.[0-9]+)*">>,[restart_new_emulator]}], % OTP-18.* %% Down to - max one major revision back - [{<<"3\\.0(\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* + [{<<"3\\.[0-1](\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* {<<"2\\.[5-8](\\.[0-9]+)*">>,[restart_new_emulator]}] % OTP-18.* }. diff --git a/bootstrap/lib/stdlib/ebin/supervisor.beam b/bootstrap/lib/stdlib/ebin/supervisor.beam Binary files differindex c7534b5438..a05ae66941 100644 --- a/bootstrap/lib/stdlib/ebin/supervisor.beam +++ b/bootstrap/lib/stdlib/ebin/supervisor.beam diff --git a/bootstrap/lib/stdlib/ebin/zip.beam b/bootstrap/lib/stdlib/ebin/zip.beam Binary files differindex 919166fe89..a0b09cd576 100644 --- a/bootstrap/lib/stdlib/ebin/zip.beam +++ b/bootstrap/lib/stdlib/ebin/zip.beam diff --git a/configure.in b/configure.in index ea98dc9836..a149acbb55 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. dnl %CopyrightBegin% dnl -dnl Copyright Ericsson AB 1998-2014. All Rights Reserved. +dnl Copyright Ericsson AB 1998-2016. All Rights Reserved. dnl dnl Licensed under the Apache License, Version 2.0 (the "License"); dnl you may not use this file except in compliance with the License. @@ -105,7 +105,6 @@ else fi AC_SUBST(CROSS_COMPILING) - AC_ARG_ENABLE(bootstrap-only, AS_HELP_STRING([--enable-bootstrap-only], [enable bootstrap only configuration]), @@ -229,7 +228,10 @@ AS_HELP_STRING([--enable-kernel-poll], [enable kernel poll support]) AS_HELP_STRING([--disable-kernel-poll], [disable kernel poll support])) AC_ARG_ENABLE(sctp, -AS_HELP_STRING([--enable-sctp], [enable sctp support]) +AS_HELP_STRING([--enable-sctp], [enable sctp support (default) +to on demand load the SCTP library in runtime]) +AS_HELP_STRING([--enable-sctp=lib], [enable sctp support +to link against the SCTP library]) AS_HELP_STRING([--disable-sctp], [disable sctp support])) AC_ARG_ENABLE(hipe, @@ -368,6 +370,49 @@ if test X${enable_native_libs} = Xyes -a X${enable_hipe} != Xno; then fi AC_SUBST(NATIVE_LIBS_ENABLED) +if test $CROSS_COMPILING = no; then + case $host_os in + darwin*) + macosx_version=`sw_vers -productVersion` + test $? -eq 0 || { + AC_MSG_ERROR([Failed to execute 'sw_vers'; please provide it in PATH]) + } + [case "$macosx_version" in + [1-9][0-9].[0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)|\1\2|'`;; + [1-9][0-9].[0-9].[0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)\.\([^\.]*\)|\1\2\3|'`;; + [1-9][0-9].[1-9][0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)|\1\200|'`;; + [1-9][0-9].[1-9][0-9].[0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)\.\([^\.]*\)|\1\20\3|'`;; + [1-9][0-9].[1-9][0-9].[1-9][0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)\.\([^\.]*\)|\1\2\3|'`;; + *) + int_macosx_version=unexpected;; + esac] + test $int_macosx_version != unexpected || { + AC_MSG_ERROR([Unexpected MacOSX version ($macosx_version) returned by 'sw_vers -productVersion'; this configure script probably needs to be updated]) + } + AC_TRY_COMPILE([ +#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > $int_macosx_version +#error Compiling for a newer MacOSX version... +#endif + ], [;], + [], + [AC_MSG_ERROR([ + + You are natively building Erlang/OTP for a later version of MacOSX + than current version ($macosx_version). You either need to + cross-build Erlang/OTP, or set the environment variable + MACOSX_DEPLOYMENT_TARGET to $macosx_version (or a lower version). + +])]) + ;; + *) + ;; + esac +fi rm -f $ERL_TOP/lib/SKIP-APPLICATIONS for app in `cd lib && ls -d *`; do diff --git a/erts/aclocal.m4 b/erts/aclocal.m4 index 013bfe5652..6c0544da31 100644 --- a/erts/aclocal.m4 +++ b/erts/aclocal.m4 @@ -736,10 +736,23 @@ AC_DEFUN(ERL_MONOTONIC_CLOCK, ;; esac + clock_gettime_lib="" + AC_CHECK_LIB(rt, clock_gettime, [clock_gettime_lib="-lrt"]) + + save_LIBS="$LIBS" + LIBS="$LIBS $clock_gettime_lib" + + if test "$LD_MAY_BE_WEAK" != "no"; then + trust_test="#error May not be there due to weak linking" + else + trust_test="" + fi + AC_CACHE_CHECK([for clock_gettime(CLOCK_MONOTONIC_RAW, _)], erl_cv_clock_gettime_monotonic_raw, [ - AC_TRY_COMPILE([ + AC_TRY_LINK([ #include <time.h> +$trust_test ], [ struct timespec ts; @@ -755,8 +768,9 @@ AC_DEFUN(ERL_MONOTONIC_CLOCK, AC_CACHE_CHECK([for clock_gettime() with ${check_msg}monotonic clock type], erl_cv_clock_gettime_monotonic_$1, [ for clock_type in $prefer_resolution_clock_gettime_monotonic $default_resolution_clock_gettime_monotonic $high_resolution_clock_gettime_monotonic $low_resolution_clock_gettime_monotonic; do - AC_TRY_COMPILE([ + AC_TRY_LINK([ #include <time.h> +$trust_test ], [ struct timespec ts; @@ -771,7 +785,15 @@ AC_DEFUN(ERL_MONOTONIC_CLOCK, done ]) - AC_CHECK_FUNCS([clock_getres clock_get_attributes gethrtime]) + LIBS="$save_LIBS" + + if test "$LD_MAY_BE_WEAK" != "no"; then + check_for_clock_getres= + else + check_for_clock_getres=clock_getres + fi + + AC_CHECK_FUNCS([$check_for_clock_getres clock_get_attributes gethrtime]) AC_CACHE_CHECK([for mach clock_get_time() with monotonic clock type], erl_cv_mach_clock_get_time_monotonic, [ @@ -840,7 +862,7 @@ AC_DEFUN(ERL_MONOTONIC_CLOCK, break fi done - AC_CHECK_LIB(rt, clock_gettime, [erl_monotonic_clock_lib="-lrt"]) + erl_monotonic_clock_lib=$clock_gettime_lib ;; mach_clock_get_time) erl_monotonic_clock_id=SYSTEM_CLOCK @@ -879,11 +901,24 @@ AC_DEFUN(ERL_WALL_CLOCK, ;; esac + clock_gettime_lib="" + AC_CHECK_LIB(rt, clock_gettime, [clock_gettime_lib="-lrt"]) + + save_LIBS="$LIBS" + LIBS="$LIBS $clock_gettime_lib" + + if test "$LD_MAY_BE_WEAK" != "no"; then + trust_test="#error May not be there due to weak linking" + else + trust_test="" + fi + AC_CACHE_CHECK([for clock_gettime() with ${check_msg}wall clock type], erl_cv_clock_gettime_wall_$1, [ for clock_type in $prefer_resolution_clock_gettime_wall $default_resolution_clock_gettime_wall $high_resolution_clock_gettime_wall $low_resolution_clock_gettime_wall; do - AC_TRY_COMPILE([ + AC_TRY_LINK([ #include <time.h> +$trust_test ], [ struct timespec ts; @@ -898,7 +933,15 @@ AC_DEFUN(ERL_WALL_CLOCK, done ]) - AC_CHECK_FUNCS([clock_getres clock_get_attributes gettimeofday]) + LIBS="$save_LIBS" + + if test "$LD_MAY_BE_WEAK" != "no"; then + check_for_clock_getres= + else + check_for_clock_getres=clock_getres + fi + + AC_CHECK_FUNCS([$check_for_clock_getres clock_get_attributes gettimeofday]) AC_CACHE_CHECK([for mach clock_get_time() with wall clock type], erl_cv_mach_clock_get_time_wall, [ @@ -919,6 +962,7 @@ AC_DEFUN(ERL_WALL_CLOCK, erl_cv_mach_clock_get_time_wall=no) ]) + erl_wall_clock_lib= erl_wall_clock_low_resolution=no erl_wall_clock_id= case $1-$erl_cv_clock_gettime_wall_$1-$erl_cv_mach_clock_get_time_wall-$ac_cv_func_gettimeofday-$host_os in @@ -932,6 +976,7 @@ AC_DEFUN(ERL_WALL_CLOCK, ;; *-CLOCK_*-*-*-*) erl_wall_clock_func=clock_gettime + erl_wall_clock_lib=$clock_gettime_lib erl_wall_clock_id=$erl_cv_clock_gettime_wall_$1 for low_res_id in $low_resolution_clock_gettime_wall; do if test $erl_wall_clock_id = $low_res_id; then @@ -1680,7 +1725,7 @@ case "$THR_LIB_NAME" in AC_DEFINE(ETHR_HAVE_SCHED_YIELD, 1, [Define if you have the sched_yield() function.]) AC_MSG_CHECKING([whether sched_yield() returns an int]) sched_yield_ret_int=no - AC_TRY_COMPILE([ + AC_TRY_LINK([ #ifdef ETHR_HAVE_SCHED_H #include <sched.h> #endif @@ -1699,7 +1744,7 @@ case "$THR_LIB_NAME" in AC_DEFINE(ETHR_HAVE_PTHREAD_YIELD, 1, [Define if you have the pthread_yield() function.]) AC_MSG_CHECKING([whether pthread_yield() returns an int]) pthread_yield_ret_int=no - AC_TRY_COMPILE([ + AC_TRY_LINK([ #if defined(ETHR_NEED_NPTL_PTHREAD_H) #include <nptl/pthread.h> #elif defined(ETHR_HAVE_MIT_PTHREAD_H) @@ -2436,7 +2481,13 @@ if test $erl_monotonic_clock_low_resolution = yes; then AC_DEFINE(ERTS_HAVE_LOW_RESOLUTION_OS_MONOTONIC_LOW, [1], [Define if you have a low resolution OS monotonic clock]) fi -xrtlib="$erl_monotonic_clock_lib" +xrtlib= +if test "$erl_monotonic_clock_lib" != ""; then + xrtlib="$erl_monotonic_clock_lib" +fi +if test "$erl_wall_clock_lib" != ""; then + xrtlib="$erl_wall_clock_lib" +fi if test "x$erl_monotonic_clock_id" != "x"; then AC_DEFINE_UNQUOTED(MONOTONIC_CLOCK_ID_STR, ["$erl_monotonic_clock_id"], [Define as a string of monotonic clock id to use]) AC_DEFINE_UNQUOTED(MONOTONIC_CLOCK_ID, [$erl_monotonic_clock_id], [Define to monotonic clock id to use]) diff --git a/erts/configure.in b/erts/configure.in index 883ce2db68..4799178583 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -196,12 +196,18 @@ AS_HELP_STRING([--disable-kernel-poll], [disable kernel poll support]), AC_ARG_ENABLE(sctp, -AS_HELP_STRING([--enable-sctp], [enable sctp support (default)]) +AS_HELP_STRING([--enable-sctp], [enable sctp support (default) +to on demand load the SCTP library in runtime if needed]) +AS_HELP_STRING([--enable-sctp=lib], [enable sctp support +to link against the SCTP library]) AS_HELP_STRING([--disable-sctp], [disable sctp support]), -[ case "$enableval" in - no) enable_sctp=no ;; - *) enable_sctp=yes ;; - esac ], enable_sctp=unknown) +[ case "x$enableval" in + xno|xyes|xlib|x) + ;; + x*) + AC_MSG_ERROR("invalid value --enable-sctp=$enableval") + ;; + esac ]) AC_ARG_ENABLE(hipe, AS_HELP_STRING([--enable-hipe], [enable hipe support]) @@ -875,6 +881,22 @@ dnl for now that is the way we do it. USER_LD=$LD USER_LDFLAGS="$LDFLAGS" LD='$(CC)' +case $host_os in + darwin*) + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,-no_weak_imports" + AC_TRY_LINK([],[], + [ + LD_MAY_BE_WEAK=no + ], + [ + LD_MAY_BE_WEAK=yes + LDFLAGS="$saved_LDFLAGS" + ]);; + *) + LD_MAY_BE_WEAK=no;; +esac + AC_SUBST(LD) LDFLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH" @@ -1710,8 +1732,9 @@ if test "x$enable_sctp" != "xno" ; then fi if test x"$ac_cv_header_netinet_sctp_h" = x"yes"; then - AC_CHECK_LIB(sctp, sctp_bindx) - AC_CHECK_FUNCS([sctp_peeloff sctp_getladdrs sctp_freeladdrs sctp_getpaddrs sctp_freepaddrs]) + AS_IF([test "x$enable_sctp" = "xlib"], + AC_CHECK_LIB(sctp, sctp_bindx)) + AC_CHECK_FUNCS([sctp_bindx sctp_peeloff sctp_getladdrs sctp_freeladdrs sctp_getpaddrs sctp_freepaddrs]) AC_CHECK_DECLS([SCTP_UNORDERED, SCTP_ADDR_OVER, SCTP_ABORT, SCTP_EOF, SCTP_SENDALL, SCTP_ADDR_CONFIRMED, SCTP_DELAYED_ACK_TIME, @@ -1964,7 +1987,7 @@ getaddrinfo("","",NULL,NULL); if test $have_getaddrinfo = yes; then AC_MSG_RESULT([yes]) AC_MSG_CHECKING([whether getaddrinfo accepts enough flags]) - AC_TRY_COMPILE([ + AC_TRY_LINK([ #include <stdlib.h> #include <string.h> #ifdef HAVE_WINSOCK2_H @@ -2079,7 +2102,7 @@ int main(void) { fi]);; esac -if test $have_posix_memalign = yes; then +if test "$have_posix_memalign" = "yes"; then AC_DEFINE(HAVE_POSIX_MEMALIGN,[1], [Define to 1 if you have the `posix_memalign' function.]) fi @@ -2221,7 +2244,7 @@ dnl Checks for features/quirks in the system that affects Erlang. dnl ---------------------------------------------------------------------- AC_MSG_CHECKING([for sched_getaffinity/sched_setaffinity]) -AC_TRY_COMPILE([#include <sched.h>], +AC_TRY_LINK([#include <sched.h>], [ #ifndef CPU_SETSIZE #error no CPU_SETSIZE @@ -2244,7 +2267,7 @@ fi AC_MSG_CHECKING([for pset functionality]) -AC_TRY_COMPILE([#include <sys/pset.h>], +AC_TRY_LINK([#include <sys/pset.h>], [ int res; psetid_t id = PS_MYID; @@ -2262,7 +2285,7 @@ if test $pset_functionality = yes; then fi AC_MSG_CHECKING([for processor_bind functionality]) -AC_TRY_COMPILE([ +AC_TRY_LINK([ #include <sys/types.h> #include <sys/processor.h> #include <sys/procset.h> @@ -2278,7 +2301,7 @@ if test $processor_bind_functionality = yes; then fi AC_MSG_CHECKING([for cpuset_getaffinity/cpuset_setaffinity]) -AC_TRY_COMPILE([ +AC_TRY_LINK([ #include <sys/param.h> #include <sys/cpuset.h> ], @@ -2477,7 +2500,7 @@ if test "x$ac_cv_func_sbrk" = "xyes"; then for rtype in $ret_types; do for atype in $arg_types; do IFS=$save_ifs - AC_TRY_COMPILE([#include <sys/types.h> + AC_TRY_LINK([#include <sys/types.h> #include <unistd.h>], [$rtype sbrk($atype incr);], [erts_cv_sbrk_ret_arg_types="$rtype,$atype"]) @@ -2514,7 +2537,7 @@ if test $ac_cv_func_brk = yes; then for rtype in $ret_types; do for atype in $arg_types; do IFS=$save_ifs - AC_TRY_COMPILE([#include <sys/types.h> + AC_TRY_LINK([#include <sys/types.h> #include <unistd.h>], [$rtype brk($atype endds);], [erts_cv_brk_ret_arg_types="$rtype,$atype"]) @@ -2798,7 +2821,7 @@ if test X${enable_fp_exceptions} != Xyes ; then FPE=unreliable else - AC_MSG_CHECKING([for unreliable floating point execptions]) + AC_MSG_CHECKING([for unreliable floating point exceptions]) AC_TRY_RUN([ @@ -3536,7 +3559,7 @@ fi # if test $have_kernel_poll = epoll; then AC_MSG_CHECKING([whether epoll is level triggered]) - AC_TRY_COMPILE([#include <sys/epoll.h>],[ + AC_TRY_LINK([#include <sys/epoll.h>],[ #ifdef EPOLLET /* Edge triggered option exist, assume level triggered is default */ diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index f62d3fb170..eb1d24cf12 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -393,9 +393,11 @@ <tag><c><![CDATA[-pa Dir1 Dir2 ...]]></c></tag> <item> <p>Adds the specified directories to the beginning of the code - path, similar to <c><![CDATA[code:add_pathsa/1]]></c>; see - <seealso marker="kernel:code"><c>code(3)</c></seealso>. - As an alternative to <c>-pa</c>, if several directories are + path, similar to <seealso marker="kernel:code#add_pathsa/1"> + <c><![CDATA[code:add_pathsa/1]]></c></seealso>. Note that the + order of the given directories will be reversed in the + resulting path.</p> + <p>As an alternative to <c>-pa</c>, if several directories are to be prepended to the code path and the directories have a common parent directory, that parent directory can be specified in environment variable <c>ERL_LIBS</c>; see diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index d0a3a77e43..b0d25389fd 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -516,7 +516,14 @@ Z = erlang:adler32_combine(X,Y,iolist_size(Data2)).</code> <desc> <p>Returns an Erlang term that is the result of decoding binary object <c><anno>Binary</anno></c>, which must be encoded - according to the Erlang external term format.</p> + according to the <seealso marker="erts:erl_ext_dist"> + Erlang external term format</seealso>.</p> + <pre> +> <input>Bin = term_to_binary(hello).</input> +<<131,100,0,5,104,101,108,108,111>> +> <input>hello = binary_to_term(Bin).</input> +hello +</pre> <warning> <p>When decoding binaries from untrusted sources, consider using <c>binary_to_term/2</c> to prevent Denial @@ -555,6 +562,14 @@ Z = erlang:adler32_combine(X,Y,iolist_size(Data2)).</code> </taglist> <p>Failure: <c>badarg</c> if <c>safe</c> is specified and unsafe data is decoded.</p> + <pre> +> <input>binary_to_term(<<131,100,0,5,104,101,108,108,111>>, [safe]).</input> +** exception error: bad argument +> <input>hello.</input> +hello +> <input>binary_to_term(<<131,100,0,5,104,101,108,108,111>>, [safe]).</input> +hello +</pre> <p>See also <seealso marker="#term_to_binary/1"><c>term_to_binary/1</c></seealso>, <seealso marker="#binary_to_term/1"> @@ -2689,7 +2704,7 @@ os_prompt%</pre> to the last occurrence is used. Example:</p> <pre> > <input>erlang:make_tuple(5, [], [{2,ignored},{5,zz},{2,aa}]).</input> -{{[],aa,[],[],zz}</pre> +{[],aa,[],[],zz}</pre> </desc> </func> @@ -8599,12 +8614,19 @@ ok </fsummary> <desc> <p>Returns a binary data object that is the result of encoding - <c><anno>Term</anno></c> according to the Erlang external - term format.</p> + <c><anno>Term</anno></c> according to the + <seealso marker="erts:erl_ext_dist">Erlang external + term format.</seealso></p> <p>This can be used for various purposes, for example, writing a term to a file in an efficient way, or sending an Erlang term to some type of communications channel not supported by distributed Erlang.</p> + <pre> +> <input>Bin = term_to_binary(hello).</input> +<<131,100,0,5,104,101,108,108,111>> +> <input>hello = binary_to_term(Bin).</input> +hello +</pre> <p>See also <seealso marker="#binary_to_term/1"> <c>binary_to_term/1</c></seealso>.</p> </desc> diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index 2a36e5568c..412675fd2b 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -32,6 +32,322 @@ <p>This document describes the changes made to the ERTS application.</p> +<section><title>Erts 8.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix bug for calls from hipe code to BIFs that disable GC + while yielding. Has been causing Dialyzer crashes on ARM + (and presumably all other non-intel platforms).</p> + <p> + Own Id: OTP-13724 Aux Id: PR-1116 </p> + </item> + <item> + <p> + Fix a bug where changing the current working directory of + the VM would not change the current working directory of + programs spawned using <c>erlang:open_port({spawn,""}, + ...)</c>.</p> + <p> + Own Id: OTP-13733 Aux Id: ERL-175 </p> + </item> + <item> + <p> + Fix a bug where disabling tracing from a process that had + return_to tracing enabled and was tracing on + <c>erlang:trace/3</c> would cause a segmentation fault.</p> + <p> + Own Id: OTP-13734</p> + </item> + <item> + <p> + Update all erts documentation to use simpler English, use + consistent terminology and be easier to navigate.</p> + <p> + Own Id: OTP-13740</p> + </item> + <item> + <p> + Add dirty schedulers to the microstate accounting + statistics.</p> + <p> + Own Id: OTP-13744</p> + </item> + <item> + <p> + Fixed dirty scheduler build support on 32-bit windows.</p> + <p> + Own Id: OTP-13759</p> + </item> + <item> + <p> + inet:getstat(Socket) on an SCTP socket returned 0 for + send stats. This bug has now been corrected. Reported by + systra as issue ERL-102 on bugs.erlang.org.</p> + <p> + Own Id: OTP-13773 Aux Id: ERL-102 </p> + </item> + <item> + <p> + AF_UNSPEC and unknown address families were misread by + UDP receive in prim_inet resulting in an exception. This + bug has now been corrected.</p> + <p> + Own Id: OTP-13775</p> + </item> + <item> + <p> + Sweep HiPE stack for literals during code purge.</p> + <p> + Own Id: OTP-13777 Aux Id: PR-1122 </p> + </item> + <item> + <p> + Fix bug in run_erl for OpenBSD that could cause it on + rare occations to exit without starting the program (erl) + at all.</p> + <p> + Own Id: OTP-13795</p> + </item> + <item> + <p> + Update build scripts to not make assumtions about where + env, cp and perl are located.</p> + <p> + Own Id: OTP-13800</p> + </item> + <item> + <p> + Fixed a bug where init:stop could deadlock if a process + with infinite shutdown timeout (e.g. a supervisor) + attempted to load code while terminating.</p> + <p> + Own Id: OTP-13802</p> + </item> + <item> + <p> + Fixed a segmentation fault on sparc CPUs when free'ing a + tracer module's state.</p> + <p> + Own Id: OTP-13803</p> + </item> + <item> + <p> + <c>fun</c>s was not properly handled during purge of a + module. This could cause a crash of the VM after a purge + of a module.</p> + <p> + Own Id: OTP-13809</p> + </item> + <item> + <p> + Fixed a memory leak when the process monitoring a port + crashed.</p> + <p> + Own Id: OTP-13818</p> + </item> + <item> + <p> + Fixed multiple dirty scheduler related tracing bugs.</p> + <p> + Own Id: OTP-13822</p> + </item> + <item> + <p> + Fix error handling in beam code runtime loader for a + number of cases when index and size fields got corrupted + (negative) values.</p> + <p> + Own Id: OTP-13848 Aux Id: ERL-216 </p> + </item> + <item> + <p> + Minor fix of dirty scheduler implementation.</p> + <p> + Own Id: OTP-13852</p> + </item> + <item> + <p> + Calls to <c>erl_drv_send_term()</c> or + <c>erl_drv_output_term()</c> from a non-scheduler thread + while the corresponding port was invalid caused the + emulator to enter an inconsistent state which eventually + caused an emulator crash.</p> + <p> + Own Id: OTP-13866</p> + </item> + <item> + <p> + Fix a rare race condition in <c>erlang:open_port({spawn, + ""}, ...)</c> that would result in the erl_child_setup + program aborting and cause the emulator to exit.</p> + <p> + Own Id: OTP-13868</p> + </item> + <item> + <p>Driver and NIF operations accessing processes or ports + could cause an emulator crash when used from + non-scheduler threads. Those operations are:</p> <list> + <item><c>erl_drv_send_term()</c></item> + <item><c>driver_send_term()</c></item> + <item><c>erl_drv_output_term()</c></item> + <item><c>driver_output_term()</c></item> + <item><c>enif_send()</c></item> + <item><c>enif_port_command()</c></item> </list> + <p> + Own Id: OTP-13869</p> + </item> + <item> + <p> + Fix start scripts generation dependency in Makefile</p> + <p> + Own Id: OTP-13871 Aux Id: ERL-241 </p> + </item> + <item> + <p> + The VM could crash if <c>erlang:get_stacktrace()</c> was + called after a rescheduled NIF had thrown an exception.</p> + <p> + Own Id: OTP-13877</p> + </item> + <item> + <p>Calling <c>code:delete/1</c> before a loading a module + with an on_load function, the old code would be + overwritten, causing a memory or a crash if NIFs were + involved. (Thanks to vans163 for reporting this bug.)</p> + <p> + Own Id: OTP-13893 Aux Id: ERL-240 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Improved accuracy of timeouts on MacOS X. This by setting + premature timeouts followed by a short actual timeout + during scheduler wait.</p> + <p> + Own Id: OTP-13698</p> + </item> + <item> + <p>Added the following symbolic time unit representations + to the <seealso + marker="erlang#type-time_unit"><c>erlang:time_unit()</c></seealso> + type:</p> <list> <item><c>second</c></item> + <item><c>millisecond</c></item> + <item><c>microsecond</c></item> + <item><c>nanosecond</c></item> </list> <p>The following + symbolic time unit representations are now + <em>deprecated</em>, but still part of the + <c>erlang:time_unit()</c> type:</p> <list> + <item><c>seconds</c></item> + <item><c>milli_seconds</c></item> + <item><c>micro_seconds</c></item> + <item><c>nano_seconds</c></item> </list> + <p> + Own Id: OTP-13735</p> + </item> + <item> + <p> + Fix maps hashing entropy of maps with maps keys.</p> + <p> + Own Id: OTP-13763 Aux Id: ERL-199 </p> + </item> + <item> + <p> + Improved dirty scheduler support. A purge of a module can + now be performed without having to wait for completion of + all ongoing dirty NIF calls.</p> + <p> + Note that when enabling support for dirty schedulers, a + new purge strategy will as of ERTS version 8.1 be + enabled. This new strategy is not fully backwards + compatible with the strategy used by default. For more + information see the documentation of <seealso + marker="erts:erlang#check_process_code/3"><c>erlang:check_process_code/3</c></seealso>.</p> + <p> + Own Id: OTP-13808 Aux Id: OTP-13833 </p> + </item> + <item> + <p> + A new purge strategy has been introduced. The new + strategy will by default be disabled during the OTP 19 + release, but will be the only strategy available as of + the OTP 20 release.</p> + <p> + The new strategy is slightly incompatible with the + strategy being used by default in OTP 19. Using the + default strategy, processes holding <c>fun</c>s that + refer to the module being purged either fail a soft + purge, or will be killed during a hard purge. The new + strategy completely ignores <c>fun</c>s. If <c>fun</c>s + referring to the code being purged exist, and are used + after a purge, an exception will be raised upon usage. + That is, the behavior will be exactly the same as the + case when a <c>fun</c> is received by a process after the + purge.</p> + <p> + The new strategy can optionally be enabled when building + OTP during OTP 19, and will automatically be enabled if + the runtime system is built with support for dirty + schedulers.</p> + <p> + For more information see the documentation of <seealso + marker="erts:erlang#check_process_code/3"><c>erlang:check_process_code/3</c></seealso>.</p> + <p> + Own Id: OTP-13833</p> + </item> + <item> + <p> + Fixed unnecessary overestimation of heap size need during + garbage collection.</p> + <p> + Own Id: OTP-13851</p> + </item> + </list> + </section> + +</section> + +<section><title>Erts 8.0.5</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed a VM crash that occured in a garbage collection of + a process when it had received binaries. This bug was + introduced in ERTS version 8.0 (OTP 19.0).</p> + <p> + Own Id: OTP-13890</p> + </item> + </list> + </section> + +</section> + +<section><title>Erts 8.0.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed a VM crash that occured in garbage collection of a + process when it had received maps over the distribution. + This bug was introduced in ERTS version 8.0 (OTP 19.0).</p> + <p> + Own Id: OTP-13889</p> + </item> + </list> + </section> + +</section> + <section><title>Erts 8.0.3</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/erts/doc/src/run_erl.xml b/erts/doc/src/run_erl.xml index ad7b2c5b85..a9b6a7e2c6 100644 --- a/erts/doc/src/run_erl.xml +++ b/erts/doc/src/run_erl.xml @@ -49,7 +49,7 @@ <funcs> <func> <name>run_erl [-daemon] pipe_dir/ log_dir "exec command - [command_arguments]"</name> + arg1 arg2 ..."</name> <fsummary>Start the Erlang emulator without attached terminal.</fsummary> <desc> <p>Arguments:</p> @@ -92,11 +92,10 @@ </item> </list> </item> - <tag><c>"exec command [command_arguments]"</c></tag> + <tag><c>"exec command arg1 arg2 ..."</c></tag> <item> - <p>In the third argument, <c><![CDATA[command]]></c> is the - executable to execute where everything written to <c>stdin</c> - and <c>stdout</c> is logged to <c><![CDATA[log_dir]]></c>.</p> + <p>A space-separated string specifying the program to be executed. + The second field is typically a command name such as <c>erl</c>.</p> </item> </taglist> </desc> @@ -105,7 +104,7 @@ <section> <title>Notes concerning the Log Files</title> - <p>While running, <c>run_erl</c> (as stated earlier) sends all output, + <p>While running, <c>run_erl</c> sends all output, uninterpreted, to a log file. The file is named <c><![CDATA[erlang.log.N]]></c>, where <c>N</c> is an integer. When the log is "full" (default log size is 100 KB), <c>run_erl</c> starts to log diff --git a/erts/emulator/beam/atom.names b/erts/emulator/beam/atom.names index 9dae67cb2d..2b66bf6f4e 100644 --- a/erts/emulator/beam/atom.names +++ b/erts/emulator/beam/atom.names @@ -505,6 +505,7 @@ atom port_limit atom port_op atom positive atom prepare +atom prepare_on_load atom print atom priority atom private diff --git a/erts/emulator/beam/beam_bif_load.c b/erts/emulator/beam/beam_bif_load.c index dddcfbb77d..5969197168 100644 --- a/erts/emulator/beam/beam_bif_load.c +++ b/erts/emulator/beam/beam_bif_load.c @@ -53,6 +53,7 @@ static struct { ErlFunEntry *def_funs[10]; Uint fe_size; Uint fe_ix; + struct erl_module_instance saved_old; } purge_state; Process *erts_code_purger = NULL; @@ -105,6 +106,8 @@ init_purge_state(void) purge_state.fe_size = sizeof(purge_state.def_funs); purge_state.fe_size /= sizeof(purge_state.def_funs[0]); purge_state.fe_ix = 0; + + purge_state.saved_old.code_hdr = 0; } void @@ -739,10 +742,13 @@ BIF_RETTYPE call_on_load_function_1(BIF_ALIST_1) { Module* modp = erts_get_module(BIF_ARG_1, erts_active_code_ix()); - if (modp && modp->old.code_hdr) { - BIF_TRAP_CODE_PTR_0(BIF_P, modp->old.code_hdr->on_load_function_ptr); + if (!modp || !modp->on_load) { + BIF_ERROR(BIF_P, BADARG); } - else { + if (modp->on_load->code_hdr) { + BIF_TRAP_CODE_PTR_0(BIF_P, + modp->on_load->code_hdr->on_load_function_ptr); + } else { BIF_ERROR(BIF_P, BADARG); } } @@ -765,14 +771,14 @@ BIF_RETTYPE finish_after_on_load_2(BIF_ALIST_2) code_ix = erts_active_code_ix(); modp = erts_get_module(BIF_ARG_1, code_ix); - if (!modp || !modp->old.code_hdr) { + if (!modp || !modp->on_load || !modp->on_load->code_hdr) { error: erts_smp_thr_progress_unblock(); erts_smp_proc_lock(BIF_P, ERTS_PROC_LOCK_MAIN); erts_release_code_write_permission(); BIF_ERROR(BIF_P, BADARG); } - if (modp->old.code_hdr->on_load_function_ptr == NULL) { + if (modp->on_load->code_hdr->on_load_function_ptr == NULL) { goto error; } if (BIF_ARG_2 != am_false && BIF_ARG_2 != am_true) { @@ -781,14 +787,17 @@ BIF_RETTYPE finish_after_on_load_2(BIF_ALIST_2) if (BIF_ARG_2 == am_true) { int i; - struct erl_module_instance t; /* - * Swap old and new code. + * Make the code with the on_load function current. */ - t = modp->curr; - modp->curr = modp->old; - modp->old = t; + + if (modp->curr.code_hdr) { + modp->old = modp->curr; + } + modp->curr = *modp->on_load; + erts_free(ERTS_ALC_T_PREPARED_CODE, modp->on_load); + modp->on_load = 0; /* * The on_load function succeded. Fix up export entries. @@ -1731,7 +1740,8 @@ BIF_RETTYPE erts_internal_purge_module_2(BIF_ALIST_2) switch (BIF_ARG_2) { - case am_prepare: { + case am_prepare: + case am_prepare_on_load: { /* * Prepare for purge by marking all fun * entries referring to the code to purge @@ -1756,7 +1766,22 @@ BIF_RETTYPE erts_internal_purge_module_2(BIF_ALIST_2) /* * Any code to purge? */ - erts_rlock_old_code(code_ix); + + if (BIF_ARG_2 == am_prepare_on_load) { + erts_rwlock_old_code(code_ix); + } else { + erts_rlock_old_code(code_ix); + } + + if (BIF_ARG_2 == am_prepare_on_load) { + ASSERT(modp->on_load); + ASSERT(modp->on_load->code_hdr); + purge_state.saved_old = modp->old; + modp->old = *modp->on_load; + erts_free(ERTS_ALC_T_PREPARED_CODE, (void *) modp->on_load); + modp->on_load = 0; + } + if (!modp->old.code_hdr) res = am_false; else { @@ -1774,7 +1799,12 @@ BIF_RETTYPE erts_internal_purge_module_2(BIF_ALIST_2) ERTS_SET_COPY_LITERAL_AREA(modp->old.code_hdr->literal_area); #endif } - erts_runlock_old_code(code_ix); + + if (BIF_ARG_2 == am_prepare_on_load) { + erts_rwunlock_old_code(code_ix); + } else { + erts_runlock_old_code(code_ix); + } } #ifndef ERTS_SMP @@ -1911,8 +1941,14 @@ BIF_RETTYPE erts_internal_purge_module_2(BIF_ALIST_2) modp->old.code_length = 0; modp->old.catches = BEAM_CATCHES_NIL; erts_remove_from_ranges(code); + ERTS_BIF_PREP_RET(ret, am_true); } + + if (purge_state.saved_old.code_hdr) { + modp->old = purge_state.saved_old; + purge_state.saved_old.code_hdr = 0; + } erts_rwunlock_old_code(code_ix); } if (is_blocking) { diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c index f63addb309..0afdedf6c2 100644 --- a/erts/emulator/beam/beam_load.c +++ b/erts/emulator/beam/beam_load.c @@ -833,11 +833,20 @@ erts_finish_loading(Binary* magic, Process* c_p, size = stp->loaded_size; erts_total_code_size += size; - if (stp->on_load) { - inst_p = &mod_tab_p->old; - } else { + + if (!stp->on_load) { inst_p = &mod_tab_p->curr; + } else { + mod_tab_p->on_load = + (struct erl_module_instance *) + erts_alloc(ERTS_ALC_T_PREPARED_CODE, + sizeof(struct erl_module_instance)); + inst_p = mod_tab_p->on_load; + inst_p->nif = 0; + inst_p->num_breakpoints = 0; + inst_p->num_traced_exports = 0; } + inst_p->code_hdr = stp->hdr; inst_p->code_length = size; diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c index 75f8ebefbd..6f641a1ea7 100644 --- a/erts/emulator/beam/erl_gc.c +++ b/erts/emulator/beam/erl_gc.c @@ -150,6 +150,7 @@ static void move_msgq_to_heap(Process *p); static int reached_max_heap_size(Process *p, Uint total_heap_size, Uint extra_heap_size, Uint extra_old_heap_size); static void init_gc_info(ErtsGCInfo *gcip); +static Uint64 next_vheap_size(Process* p, Uint64 vheap, Uint64 vheap_sz); #ifdef HARDDEBUG static void disallow_heap_frag_ref_in_heap(Process* p); @@ -387,6 +388,11 @@ erts_gc_after_bif_call_lhf(Process* p, ErlHeapFragment *live_hf_end, return result; } + if (!p->mbuf) { + /* Must have GC:d in BIF call... invalidate live_hf_end */ + live_hf_end = ERTS_INVALID_HFRAG_PTR; + } + if (is_non_value(result)) { if (p->freason == TRAP) { #if HIPE @@ -535,9 +541,19 @@ young_gen_usage(Process *p) if (p->flags & F_ON_HEAP_MSGQ) { ErtsMessage *mp; - for (mp = p->msg.first; mp; mp = mp->next) + for (mp = p->msg.first; mp; mp = mp->next) { + /* + * We leave not yet decoded distribution messages + * as they are in the queue since it is not + * possible to determine a maximum size until + * actual decoding. However, we use their estimated + * size when calculating need, and by this making + * it more likely that they will fit on the heap + * when actually decoded. + */ if (mp->data.attached) hsz += erts_msg_attached_data_size(mp); + } } aheap = p->abandoned_heap; @@ -747,6 +763,9 @@ do_major_collection: p->last_old_htop = p->old_htop; #endif + ASSERT(!p->mbuf); + ASSERT(!ERTS_IS_GC_DESIRED(p)); + return reds; } @@ -2251,44 +2270,31 @@ copy_one_frag(Eterm** hpp, ErlOffHeap* off_heap, static void move_msgq_to_heap(Process *p) { + ErtsMessage **mpp = &p->msg.first; + Uint64 pre_oh = MSO(p).overhead; while (*mpp) { ErtsMessage *mp = *mpp; if (mp->data.attached) { ErlHeapFragment *bp; - ErtsHeapFactory factory; - - erts_factory_proc_prealloc_init(&factory, p, - erts_msg_attached_data_size(mp)); - - if (is_non_value(ERL_MESSAGE_TERM(mp))) { - if (mp->data.dist_ext) { - ASSERT(mp->data.dist_ext->heap_size >= 0); - if (is_not_nil(ERL_MESSAGE_TOKEN(mp))) { - bp = erts_dist_ext_trailer(mp->data.dist_ext); - ERL_MESSAGE_TOKEN(mp) = copy_struct(ERL_MESSAGE_TOKEN(mp), - bp->used_size, - &factory.hp, - factory.off_heap); - erts_cleanup_offheap(&bp->off_heap); - } - ERL_MESSAGE_TERM(mp) = erts_decode_dist_ext(&factory, - mp->data.dist_ext); - erts_free_dist_ext_copy(mp->data.dist_ext); - mp->data.dist_ext = NULL; - } - } - else { + + /* + * We leave not yet decoded distribution messages + * as they are in the queue since it is not + * possible to determine a maximum size until + * actual decoding... + */ + if (is_value(ERL_MESSAGE_TERM(mp))) { bp = erts_message_to_heap_frag(mp); if (bp->next) - erts_move_multi_frags(&factory.hp, factory.off_heap, bp, + erts_move_multi_frags(&p->htop, &p->off_heap, bp, mp->m, ERL_MESSAGE_REF_ARRAY_SZ, 0); else - copy_one_frag(&factory.hp, factory.off_heap, bp, + copy_one_frag(&p->htop, &p->off_heap, bp, mp->m, ERL_MESSAGE_REF_ARRAY_SZ); if (mp->data.attached != ERTS_MSG_COMBINED_HFRAG) { @@ -2305,12 +2311,15 @@ move_msgq_to_heap(Process *p) mp = new_mp; } } - - erts_factory_close(&factory); } mpp = &(*mpp)->next; } + + if (pre_oh != MSO(p).overhead) { + /* Got new binaries; update vheap size... */ + BIN_VHEAP_SZ(p) = next_vheap_size(p, MSO(p).overhead, BIN_VHEAP_SZ(p)); + } } static Uint diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c index 559b4017e7..9a873857b9 100644 --- a/erts/emulator/beam/erl_nif.c +++ b/erts/emulator/beam/erl_nif.c @@ -3203,18 +3203,20 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) if (init_func != NULL) handle = init_func; + this_mi = &module_p->curr; + prev_mi = &module_p->old; if (in_area(caller, module_p->old.code_hdr, module_p->old.code_length)) { - if (module_p->old.code_hdr->on_load_function_ptr) { - this_mi = &module_p->old; + ret = load_nif_error(BIF_P, "old_code", "Calling load_nif from old " + "module '%T' not allowed", mod_atom); + goto error; + } else if (module_p->on_load) { + ASSERT(module_p->on_load->code_hdr->on_load_function_ptr); + if (module_p->curr.code_hdr) { prev_mi = &module_p->curr; } else { - ret = load_nif_error(BIF_P, "old_code", "Calling load_nif from old " - "module '%T' not allowed", mod_atom); - goto error; + prev_mi = &module_p->old; } - } else { - this_mi = &module_p->curr; - prev_mi = &module_p->old; + this_mi = module_p->on_load; } if (init_func == NULL && @@ -3358,7 +3360,7 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) veto = entry->reload(&env, &lib->priv_data, BIF_ARG_2); erts_post_nif(&env); if (veto) { - ret = load_nif_error(BIF_P, reload, "Library reload-call unsuccessful."); + ret = load_nif_error(BIF_P, reload, "Library reload-call unsuccessful (%d).", veto); } else { commit_opened_resource_types(lib); @@ -3380,7 +3382,7 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) erts_post_nif(&env); if (veto) { prev_mi->nif->priv_data = prev_old_data; - ret = load_nif_error(BIF_P, upgrade, "Library upgrade-call unsuccessful."); + ret = load_nif_error(BIF_P, upgrade, "Library upgrade-call unsuccessful (%d).", veto); } else commit_opened_resource_types(lib); @@ -3390,7 +3392,7 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) veto = entry->load(&env, &lib->priv_data, BIF_ARG_2); erts_post_nif(&env); if (veto) { - ret = load_nif_error(BIF_P, "load", "Library load-call unsuccessful."); + ret = load_nif_error(BIF_P, "load", "Library load-call unsuccessful (%d).", veto); } else commit_opened_resource_types(lib); diff --git a/erts/emulator/beam/module.c b/erts/emulator/beam/module.c index 3eb11f1693..4f36377450 100644 --- a/erts/emulator/beam/module.c +++ b/erts/emulator/beam/module.c @@ -85,6 +85,7 @@ static Module* module_alloc(Module* tmpl) obj->old.num_breakpoints = 0; obj->curr.num_traced_exports = 0; obj->old.num_traced_exports = 0; + obj->on_load = 0; return obj; } @@ -201,6 +202,7 @@ void module_start_staging(void) dst_mod->curr = src_mod->curr; dst_mod->old = src_mod->old; + dst_mod->on_load = src_mod->on_load; } /* @@ -214,6 +216,7 @@ void module_start_staging(void) dst_mod->curr = src_mod->curr; dst_mod->old = src_mod->old; + dst_mod->on_load = src_mod->on_load; } newsz = index_table_sz(dst); erts_smp_atomic_add_nob(&tot_module_bytes, (newsz - oldsz)); diff --git a/erts/emulator/beam/module.h b/erts/emulator/beam/module.h index 5a60bc90d9..1c1afc8461 100644 --- a/erts/emulator/beam/module.h +++ b/erts/emulator/beam/module.h @@ -39,6 +39,7 @@ typedef struct erl_module { struct erl_module_instance curr; struct erl_module_instance old; /* protected by "old_code" rwlock */ + struct erl_module_instance* on_load; } Module; Module* erts_get_module(Eterm mod, ErtsCodeIndex code_ix); diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c index 254d3baeb1..1885338ce5 100644 --- a/erts/emulator/drivers/common/inet_drv.c +++ b/erts/emulator/drivers/common/inet_drv.c @@ -777,6 +777,7 @@ static int is_nonzero(const char *s, size_t n) #define INET_LOPT_NETNS 38 /* Network namespace pathname */ #define INET_LOPT_TCP_SHOW_ECONNRESET 39 /* tell user about incoming RST */ #define INET_LOPT_LINE_DELIM 40 /* Line delimiting char */ +#define INET_OPT_TCLASS 41 /* IPv6 transport class */ /* SCTP options: a separate range, from 100: */ #define SCTP_OPT_RTOINFO 100 #define SCTP_OPT_ASSOCINFO 101 @@ -1330,6 +1331,7 @@ static ErlDrvTermData am_reuseaddr; static ErlDrvTermData am_dontroute; static ErlDrvTermData am_priority; static ErlDrvTermData am_tos; +static ErlDrvTermData am_tclass; static ErlDrvTermData am_ipv6_v6only; static ErlDrvTermData am_netns; #endif @@ -3720,6 +3722,7 @@ static void inet_init_sctp(void) { INIT_ATOM(dontroute); INIT_ATOM(priority); INIT_ATOM(tos); + INIT_ATOM(tclass); INIT_ATOM(ipv6_v6only); INIT_ATOM(netns); @@ -6228,6 +6231,15 @@ static int inet_set_opts(inet_descriptor* desc, char* ptr, int len) #else continue; #endif +#if defined(IPV6_TCLASS) && defined(SOL_IPV6) + case INET_OPT_TCLASS: + proto = SOL_IPV6; + type = IPV6_TCLASS; + propagate = 1; + DEBUGF(("inet_set_opts(%ld): s=%d, IPV6_TCLASS=%d\r\n", + (long)desc->port, desc->s, ival)); + break; +#endif case TCP_OPT_NODELAY: proto = IPPROTO_TCP; @@ -6661,6 +6673,19 @@ static int sctp_set_opts(inet_descriptor* desc, char* ptr, int len) continue; /* Option not supported -- ignore it */ # endif +# if defined(IPV6_TCLASS) && defined(SOL_IPV6) + case INET_OPT_TCLASS: + { + arg.ival= get_int32 (curr); curr += 4; + proto = SOL_IPV6; + type = IPV6_TCLASS; + arg_ptr = (char*) (&arg.ival); + arg_sz = sizeof ( arg.ival); + break; + } +# endif + + case INET_OPT_IPV6_V6ONLY: # if HAVE_DECL_IPV6_V6ONLY { @@ -7162,6 +7187,15 @@ static ErlDrvSSizeT inet_fill_opts(inet_descriptor* desc, put_int32(0, ptr); continue; #endif + case INET_OPT_TCLASS: +#if defined(IPV6_TCLASS) && defined(SOL_IPV6) + proto = SOL_IPV6; + type = IPV6_TCLASS; + break; +#else + TRUNCATE_TO(0,ptr); + continue; +#endif case INET_OPT_REUSEADDR: type = SO_REUSEADDR; break; @@ -7556,6 +7590,7 @@ static ErlDrvSSizeT sctp_fill_opts(inet_descriptor* desc, case INET_OPT_DONTROUTE: case INET_OPT_PRIORITY : case INET_OPT_TOS : + case INET_OPT_TCLASS : case INET_OPT_IPV6_V6ONLY: case SCTP_OPT_AUTOCLOSE: case SCTP_OPT_MAXSEG : @@ -7629,6 +7664,19 @@ static ErlDrvSSizeT sctp_fill_opts(inet_descriptor* desc, continue; # endif } + case INET_OPT_TCLASS: + { +# if defined(IPV6_TCLASS) && defined(SOL_IPV6) + proto = SOL_IPV6; + type = IPV6_TCLASS; + is_int = 1; + tag = am_tclass; + break; +# else + /* Not supported -- ignore */ + continue; +# endif + } case INET_OPT_IPV6_V6ONLY: # if HAVE_DECL_IPV6_V6ONLY { diff --git a/erts/emulator/sys/unix/sys.c b/erts/emulator/sys/unix/sys.c index 089efec3e8..b0e623a5b9 100644 --- a/erts/emulator/sys/unix/sys.c +++ b/erts/emulator/sys/unix/sys.c @@ -715,13 +715,13 @@ static RETSIGTYPE suspend_signal(void) static RETSIGTYPE suspend_signal(int signum) #endif { - int res, buf[1], __errno = errno; + int res, buf[1], tmp_errno = errno; do { res = read(sig_suspend_fds[0], buf, sizeof(int)); } while (res < 0 && errno == EINTR); /* restore previous errno in case read changed it */ - errno = __errno; + errno = tmp_errno; } #endif /* #ifdef ERTS_SYS_SUSPEND_SIGNAL */ diff --git a/erts/emulator/test/driver_SUITE.erl b/erts/emulator/test/driver_SUITE.erl index 1df72193a6..2fbf6eae61 100644 --- a/erts/emulator/test/driver_SUITE.erl +++ b/erts/emulator/test/driver_SUITE.erl @@ -452,11 +452,7 @@ timer_delay(Config) when is_list(Config) -> TimeBefore = erlang:monotonic_time(), Timeout0 = 350, erlang:port_command(Port, <<?DELAY_START_TIMER,Timeout0:32>>), - Timeout = Timeout0 + - case os:type() of - {win32,_} -> 0; %Driver doesn't sleep on Windows. - _ -> 1000 - end, + Timeout = Timeout0 + 1000, receive {Port,{data,[?TIMER]}} -> Elapsed = erl_millisecs() - erl_millisecs(TimeBefore), diff --git a/erts/emulator/test/driver_SUITE_data/timer_drv.c b/erts/emulator/test/driver_SUITE_data/timer_drv.c index 57538e0d57..c3ce3b6e49 100644 --- a/erts/emulator/test/driver_SUITE_data/timer_drv.c +++ b/erts/emulator/test/driver_SUITE_data/timer_drv.c @@ -1,5 +1,13 @@ #include <stdio.h> #include "erl_driver.h" +#ifdef __WIN32__ +# include <windows.h> +#else +# include <sys/time.h> +# include <sys/types.h> +# include <sys/select.h> +# include <unistd.h> +#endif #define get_int32(s) ((((unsigned char*) (s))[0] << 24) | \ (((unsigned char*) (s))[1] << 16) | \ @@ -17,6 +25,7 @@ static ErlDrvData timer_start(ErlDrvPort, char*); static void timer_stop(ErlDrvData); static void timer_read(ErlDrvData, char*, ErlDrvSizeT); static void timer(ErlDrvData); +static void ms_sleep(int ms); static ErlDrvEntry timer_driver_entry = { @@ -75,9 +84,7 @@ static void timer_read(ErlDrvData p, char *buf, ErlDrvSizeT len) reply[0] = CANCELLED; driver_output(port, reply, 1); } else if (buf[0] == DELAY_START_TIMER) { -#ifndef __WIN32__ - sleep(1); -#endif + ms_sleep(1000); driver_set_timer(port, get_int32(buf + 1)); } } @@ -95,3 +102,34 @@ static void timer(ErlDrvData port) reply[0] = TIMER; driver_output((ErlDrvPort)port, reply, 1); } + +static void +ms_sleep(int ms) +{ + /* Important that we do not return too early... */ + ErlDrvTime time, timeout_time; + + time = erl_drv_monotonic_time(ERL_DRV_USEC); + + timeout_time = time + ((ErlDrvTime) ms)*1000; + + while (time < timeout_time) { + ErlDrvTime timeout = timeout_time - time; + +#ifdef __WIN32__ + Sleep((DWORD) (timeout / 1000)); +#else + { + struct timeval tv; + + tv.tv_sec = (long) timeout / (1000*1000); + tv.tv_usec = (long) timeout % (1000*1000); + + select(0, NULL, NULL, NULL, &tv); + } +#endif + + time = erl_drv_monotonic_time(ERL_DRV_USEC); + } + +} diff --git a/erts/emulator/test/nif_SUITE.erl b/erts/emulator/test/nif_SUITE.erl index 8df2733fac..9c1694fa8a 100644 --- a/erts/emulator/test/nif_SUITE.erl +++ b/erts/emulator/test/nif_SUITE.erl @@ -29,6 +29,7 @@ -export([all/0, suite/0, init_per_testcase/2, end_per_testcase/2, basic/1, reload/1, upgrade/1, heap_frag/1, + t_on_load/1, types/1, many_args/1, binaries/1, get_string/1, get_atom/1, maps/1, api_macros/1, @@ -68,6 +69,7 @@ suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> [basic, reload, upgrade, heap_frag, types, many_args, + t_on_load, binaries, get_string, get_atom, maps, api_macros, from_array, iolist_as_binary, resource, resource_binary, resource_takeover, threading, send, send2, send3, @@ -83,10 +85,19 @@ all() -> nif_port_command, nif_snprintf]. +init_per_testcase(t_on_load, Config) -> + ets:new(nif_SUITE, [named_table]), + Config; init_per_testcase(_Case, Config) -> Config. +end_per_testcase(t_on_load, _Config) -> + ets:delete(nif_SUITE), + testcase_cleanup(); end_per_testcase(_Func, _Config) -> + testcase_cleanup(). + +testcase_cleanup() -> P1 = code:purge(nif_mod), Del = code:delete(nif_mod), P2 = code:purge(nif_mod), @@ -174,11 +185,33 @@ upgrade(Config) when is_list(Config) -> true = erlang:delete_module(nif_mod), [] = nif_mod_call_history(), + %% Repeat upgrade again but from old (deleted) instance + {module,nif_mod} = erlang:load_module(nif_mod,Bin), + undefined = nif_mod:lib_version(), + 1 = call(Pid,lib_version), + [{lib_version,1,9,109}] = nif_mod_call_history(), + + ok = nif_mod:load_nif_lib(Config, 1), + 1 = nif_mod:lib_version(), + [{upgrade,1,10,110},{lib_version,1,11,111}] = nif_mod_call_history(), + + upgraded = call(Pid,upgrade), + false = check_process_code(Pid, nif_mod), + true = erlang:purge_module(nif_mod), + [{unload,1,12,112}] = nif_mod_call_history(), + + 1 = nif_mod:lib_version(), + [{lib_version,1,13,113}] = nif_mod_call_history(), + + true = erlang:delete_module(nif_mod), + [] = nif_mod_call_history(), + + Pid ! die, {'DOWN', MRef, process, Pid, normal} = receive_any(), false = check_process_code(Pid, nif_mod), true = erlang:purge_module(nif_mod), - [{unload,1,9,109}] = nif_mod_call_history(), + [{unload,1,14,114}] = nif_mod_call_history(), %% Module upgrade with different lib version {module,nif_mod} = erlang:load_module(nif_mod,Bin), @@ -215,17 +248,170 @@ upgrade(Config) when is_list(Config) -> true = erlang:delete_module(nif_mod), [] = nif_mod_call_history(), + + %% Reverse upgrade but from old (deleted) instance + {module,nif_mod} = erlang:load_module(nif_mod,Bin), + undefined = nif_mod:lib_version(), + [] = nif_mod_call_history(), + 2 = call(Pid2,lib_version), + [{lib_version,2,4,204}] = nif_mod_call_history(), + + ok = nif_mod:load_nif_lib(Config, 1), + 1 = nif_mod:lib_version(), + [{upgrade,1,1,101},{lib_version,1,2,102}] = nif_mod_call_history(), + + 2 = call(Pid2,lib_version), + [{lib_version,2,5,205}] = nif_mod_call_history(), + + upgraded = call(Pid2,upgrade), + false = check_process_code(Pid2, nif_mod), + true = erlang:purge_module(nif_mod), + [{unload,2,6,206}] = nif_mod_call_history(), + + 1 = nif_mod:lib_version(), + [{lib_version,1,3,103}] = nif_mod_call_history(), + + true = erlang:delete_module(nif_mod), + [] = nif_mod_call_history(), + + Pid2 ! die, {'DOWN', MRef2, process, Pid2, normal} = receive_any(), false= check_process_code(Pid2, nif_mod), true = erlang:purge_module(nif_mod), - [{unload,2,4,204}] = nif_mod_call_history(), + [{unload,1,4,104}] = nif_mod_call_history(), true = lists:member(?MODULE, erlang:system_info(taints)), true = lists:member(nif_mod, erlang:system_info(taints)), verify_tmpmem(TmpMem), ok. +%% Test loading/upgrade in on_load +t_on_load(Config) when is_list(Config) -> + TmpMem = tmpmem(), + ensure_lib_loaded(Config), + + Data = proplists:get_value(data_dir, Config), + File = filename:join(Data, "nif_mod"), + {ok,nif_mod,Bin} = compile:file(File, [binary,return_errors, + {d,'USE_ON_LOAD'}]), + + %% Use ETS to tell nif_mod:on_load what to do + ets:insert(nif_SUITE, {data_dir, Data}), + ets:insert(nif_SUITE, {lib_version, 1}), + {module,nif_mod} = code:load_binary(nif_mod,File,Bin), + hold_nif_mod_priv_data(nif_mod:get_priv_data_ptr()), + [{load,1,1,101},{get_priv_data_ptr,1,2,102}] = nif_mod_call_history(), + + {Pid,MRef} = nif_mod:start(), + 1 = call(Pid,lib_version), + [{lib_version,1,3,103}] = nif_mod_call_history(), + + %% Module upgrade with same lib-version + {module,nif_mod} = code:load_binary(nif_mod,File,Bin), + 1 = nif_mod:lib_version(), + 1 = call(Pid,lib_version), + [{upgrade,1,4,104},{lib_version,1,5,105},{lib_version,1,6,106}] = nif_mod_call_history(), + + upgraded = call(Pid,upgrade), + false = check_process_code(Pid, nif_mod), + true = code:soft_purge(nif_mod), + [{unload,1,7,107}] = nif_mod_call_history(), + + 1 = nif_mod:lib_version(), + [{lib_version,1,8,108}] = nif_mod_call_history(), + + true = code:delete(nif_mod), + [] = nif_mod_call_history(), + + %% Repeat upgrade again but from old (deleted) instance + {module,nif_mod} = code:load_binary(nif_mod,File,Bin), + [{upgrade,1,9,109}] = nif_mod_call_history(), + 1 = nif_mod:lib_version(), + 1 = call(Pid,lib_version), + [{lib_version,1,10,110},{lib_version,1,11,111}] = nif_mod_call_history(), + + upgraded = call(Pid,upgrade), + false = check_process_code(Pid, nif_mod), + true = code:soft_purge(nif_mod), + [{unload,1,12,112}] = nif_mod_call_history(), + + 1 = nif_mod:lib_version(), + [{lib_version,1,13,113}] = nif_mod_call_history(), + + true = code:delete(nif_mod), + [] = nif_mod_call_history(), + + + Pid ! die, + {'DOWN', MRef, process, Pid, normal} = receive_any(), + false = check_process_code(Pid, nif_mod), + true = code:soft_purge(nif_mod), + [{unload,1,14,114}] = nif_mod_call_history(), + + %% Module upgrade with different lib version + {module,nif_mod} = code:load_binary(nif_mod,File,Bin), + hold_nif_mod_priv_data(nif_mod:get_priv_data_ptr()), + [{load,1,1,101},{get_priv_data_ptr,1,2,102}] = nif_mod_call_history(), + + 1 = nif_mod:lib_version(), + {Pid2,MRef2} = nif_mod:start(), + 1 = call(Pid2,lib_version), + [{lib_version,1,3,103},{lib_version,1,4,104}] = nif_mod_call_history(), + + true = ets:insert(nif_SUITE,{lib_version,2}), + {module,nif_mod} = code:load_binary(nif_mod,File,Bin), + [{upgrade,2,1,201}] = nif_mod_call_history(), + + 2 = nif_mod:lib_version(), + 1 = call(Pid2,lib_version), + [{lib_version,2,2,202},{lib_version,1,5,105}] = nif_mod_call_history(), + + upgraded = call(Pid2,upgrade), + false = check_process_code(Pid2, nif_mod), + true = code:soft_purge(nif_mod), + [{unload,1,6,106}] = nif_mod_call_history(), + + 2 = nif_mod:lib_version(), + 2 = call(Pid2,lib_version), + [{lib_version,2,3,203},{lib_version,2,4,204}] = nif_mod_call_history(), + + true = code:delete(nif_mod), + [] = nif_mod_call_history(), + + %% Reverse upgrade but from old (deleted) instance + ets:insert(nif_SUITE,{lib_version,1}), + {module,nif_mod} = code:load_binary(nif_mod,File,Bin), + [{upgrade,1,1,101}] = nif_mod_call_history(), + + 1 = nif_mod:lib_version(), + 2 = call(Pid2,lib_version), + [{lib_version,1,2,102},{lib_version,2,5,205}] = nif_mod_call_history(), + + upgraded = call(Pid2,upgrade), + false = check_process_code(Pid2, nif_mod), + true = code:soft_purge(nif_mod), + [{unload,2,6,206}] = nif_mod_call_history(), + + 1 = nif_mod:lib_version(), + [{lib_version,1,3,103}] = nif_mod_call_history(), + + true = code:delete(nif_mod), + [] = nif_mod_call_history(), + + + Pid2 ! die, + {'DOWN', MRef2, process, Pid2, normal} = receive_any(), + false= check_process_code(Pid2, nif_mod), + true = code:soft_purge(nif_mod), + [{unload,1,4,104}] = nif_mod_call_history(), + + true = lists:member(?MODULE, erlang:system_info(taints)), + true = lists:member(nif_mod, erlang:system_info(taints)), + verify_tmpmem(TmpMem), + ok. + + %% Test NIF building heap fragments heap_frag(Config) when is_list(Config) -> TmpMem = tmpmem(), diff --git a/erts/emulator/test/nif_SUITE_data/nif_mod.erl b/erts/emulator/test/nif_SUITE_data/nif_mod.erl index eec1bb8858..1fcc33faa4 100644 --- a/erts/emulator/test/nif_SUITE_data/nif_mod.erl +++ b/erts/emulator/test/nif_SUITE_data/nif_mod.erl @@ -29,6 +29,16 @@ -define(nif_stub,nif_stub_error(?LINE)). +-ifdef(USE_ON_LOAD). +-on_load(on_load/0). + +on_load() -> + [{data_dir, Path}] = ets:lookup(nif_SUITE, data_dir), + [{lib_version, Ver}] = ets:lookup(nif_SUITE, lib_version), + erlang:load_nif(filename:join(Path,libname(Ver)), []). + +-endif. + load_nif_lib(Config, Ver) -> load_nif_lib(Config, Ver, []). diff --git a/erts/etc/unix/cerl.src b/erts/etc/unix/cerl.src index c5422ab2ed..30f2d831b5 100644 --- a/erts/etc/unix/cerl.src +++ b/erts/etc/unix/cerl.src @@ -399,19 +399,29 @@ elif [ "x$GDB" = "xdump" ]; then cmdfile="/tmp/.cerlgdb.$$" case "x$core" in x/*) - gdbcmd="$EMU_NAME ${core}" ;; *) dir=`pwd` - gdbcmd="$EMU_NAME ${dir}/${core}" + core="${dir}/${core}" ;; esac - echo "set width 0 + case `uname` in + Darwin) + echo " +thread backtrace all +quit +" > $cmdfile + exec lldb -s $cmdfile -c ${core} $EMU_NAME + ;; + *) + echo "set width 0 set height 0 set verbose off source $ROOTDIR/erts/etc/unix/etp-commands thread apply all bt " > $cmdfile - exec gdb --batch --command=$cmdfile $gdbcmd + exec gdb --batch --command=$cmdfile $EMU_NAME $core + ;; + esac fi diff --git a/erts/etc/unix/etp-commands.in b/erts/etc/unix/etp-commands.in index e2bf302cca..1a4f641301 100644 --- a/erts/etc/unix/etp-commands.in +++ b/erts/etc/unix/etp-commands.in @@ -52,7 +52,7 @@ document etp-help % etpf-cons, etpf-boxed, % % Special commands for not really terms: -% etp-mfa, etp-cp, +% etp-mfa, etp-cp, etp-disasm, % etp-msgq, etpf-msgq, % etp-stacktrace, etp-stackdump, etpf-stackdump, etp-dictdump % etp-process-info, etp-process-memory-info @@ -1090,12 +1090,10 @@ document etp-mfa %--------------------------------------------------------------------------- end - - -define etp-cp-1 +define etp-cp-func-info-1 # Args: Eterm cp # -# Non-reentrant +# Non-reentrant, takes cp, sets $etp_cp_p to MFA in func_info # set $etp_cp = (Eterm)($arg0) set $etp_ranges = &r[(int)the_active_code_index] @@ -1137,8 +1135,21 @@ define etp-cp-1 end end if $etp_cp_p + set $cp_cp_p_offset = ($etp_cp-((Eterm)($etp_cp_p-2))) + else + set $cp_cp_p_offset = 0 + end +end + +define etp-cp-1 +# Args: Eterm cp +# +# Non-reentrant +# + etp-cp-func-info-1 $arg0 + if $etp_cp_p printf "#Cp" - etp-mfa-1 ($etp_cp_p) ($etp_cp-((Eterm)($etp_cp_p-2))) + etp-mfa-1 $etp_cp_p $cp_cp_p_offset else if $etp_cp == beam_apply+1 printf "#Cp<terminate process normally>" @@ -2478,11 +2489,58 @@ end document etp-schedulers %--------------------------------------------------------------------------- % etp-schedulers -% +% % Print misc info about all schedulers %--------------------------------------------------------------------------- end +define etp-disasm-1 + set $code_ptr = ((BeamInstr*)$arg0) + set $addr = *$code_ptr + set $i = 0 + while $i < (sizeof(opc) / sizeof(OpEntry)) + if $addr == beam_ops[$i] + printf "%s %d", opc[$i].name, opc[$i].sz + set $next_i = $code_ptr + opc[$i].sz + set $i += 4999 + end + set $i++ + end +end + +define etp-disasm + etp-cp-func-info-1 $arg0 + if $etp_cp_p == 0 + printf "invalid argument" + else + etp-mfa-1 $etp_cp_p $cp_cp_p_offset + printf ": " + etp-disasm-1 $arg0 + printf "\r\n" + while $next_i < ((BeamInstr*)$arg1) + set $prev_i = $next_i + etp-cp-func-info-1 $next_i + etp-mfa-1 $etp_cp_p $cp_cp_p_offset + printf ": " + etp-disasm-1 $next_i + if $prev_i == $next_i + # ptr did not advance, we are inside some strange opcode with argument + set $next_i++ + printf "instr argument" + end + printf "\r\n" + end + end +end + +document etp-disasm +%--------------------------------------------------------------------------- +% etp-disasm StartI EndI +% +% Disassemble the code inbetween StartI and EndI +%--------------------------------------------------------------------------- +end + define etp-migration-info set $minfo = (ErtsMigrationPaths *) *((UWord *) &erts_migration_paths) set $rq_ix = 0 diff --git a/erts/preloaded/ebin/erts_code_purger.beam b/erts/preloaded/ebin/erts_code_purger.beam Binary files differindex a1eb126098..6956eee740 100644 --- a/erts/preloaded/ebin/erts_code_purger.beam +++ b/erts/preloaded/ebin/erts_code_purger.beam diff --git a/erts/preloaded/ebin/erts_internal.beam b/erts/preloaded/ebin/erts_internal.beam Binary files differindex 22817be8f4..227b62b7d3 100644 --- a/erts/preloaded/ebin/erts_internal.beam +++ b/erts/preloaded/ebin/erts_internal.beam diff --git a/erts/preloaded/ebin/init.beam b/erts/preloaded/ebin/init.beam Binary files differindex 849273f746..74a0184818 100644 --- a/erts/preloaded/ebin/init.beam +++ b/erts/preloaded/ebin/init.beam diff --git a/erts/preloaded/ebin/prim_inet.beam b/erts/preloaded/ebin/prim_inet.beam Binary files differindex ae4861c336..1a573ce297 100644 --- a/erts/preloaded/ebin/prim_inet.beam +++ b/erts/preloaded/ebin/prim_inet.beam diff --git a/erts/preloaded/src/erts_code_purger.erl b/erts/preloaded/src/erts_code_purger.erl index ee4fcedd2d..28d71fd07e 100644 --- a/erts/preloaded/src/erts_code_purger.erl +++ b/erts/preloaded/src/erts_code_purger.erl @@ -22,7 +22,8 @@ %% Purpose : Implement system process erts_code_purger %% to handle code module purging. --export([start/0, purge/1, soft_purge/1, pending_purge_lambda/3]). +-export([start/0, purge/1, soft_purge/1, pending_purge_lambda/3, + finish_after_on_load/2]). -spec start() -> term(). start() -> @@ -40,6 +41,11 @@ loop() -> Res = do_soft_purge(Mod), From ! {reply, soft_purge, Res, Ref}; + {finish_after_on_load,{Mod,Keep},From,Ref} + when is_atom(Mod), is_pid(From) -> + Res = do_finish_after_on_load(Mod, Keep), + From ! {reply, finish_after_on_load, Res, Ref}; + {test_purge, Mod, From, Type, Ref} when is_atom(Mod), is_pid(From) -> do_test_purge(Mod, From, Type, Ref); @@ -129,6 +135,35 @@ do_soft_purge(Mod) -> end) end. +%% finish_after_on_load(Module, Keep) +%% Finish after running on_load function. If Keep is false, +%% purge the code for the on_load function. + +finish_after_on_load(Mod, Keep) -> + Ref = make_ref(), + erts_code_purger ! {finish_after_on_load, {Mod,Keep}, self(), Ref}, + receive + {reply, finish_after_on_load, Result, Ref} -> + Result + end. + +do_finish_after_on_load(Mod, Keep) -> + erlang:finish_after_on_load(Mod, Keep), + case Keep of + true -> + ok; + false -> + case erts_internal:purge_module(Mod, prepare_on_load) of + false -> + true; + true -> + _ = check_proc_code(erlang:processes(), Mod, true), + true = erts_internal:purge_module(Mod, complete) + end + end. + + + %% %% check_proc_code(Pids, Mod, Hard) - Send asynchronous %% requests to all processes to perform a check_process_code diff --git a/erts/preloaded/src/erts_internal.erl b/erts/preloaded/src/erts_internal.erl index 6229754c8c..6aae5ba38c 100644 --- a/erts/preloaded/src/erts_internal.erl +++ b/erts/preloaded/src/erts_internal.erl @@ -304,7 +304,7 @@ release_literal_area_switch() -> -spec purge_module(Module, Op) -> boolean() when Module :: module(), - Op :: 'prepare' | 'abort' | 'complete'. + Op :: 'prepare' | 'prepare_on_load' | 'abort' | 'complete'. purge_module(_Module, _Op) -> erlang:nif_error(undefined). diff --git a/erts/preloaded/src/init.erl b/erts/preloaded/src/init.erl index 962528f7ab..551ca4ea40 100644 --- a/erts/preloaded/src/init.erl +++ b/erts/preloaded/src/init.erl @@ -205,7 +205,7 @@ boot(BootArgs) -> {Start0,Flags,Args} = parse_boot_args(BootArgs), %% We don't get to profile parsing of BootArgs - case get_flag(profile_boot, Flags, false) of + case b2a(get_flag(profile_boot, Flags, false)) of false -> ok; true -> debug_profile_start() end, @@ -782,7 +782,7 @@ do_boot(Init,Flags,Start) -> (catch erlang:system_info({purify, "Node: " ++ atom_to_list(node())})), start_em(Start), - case get_flag(profile_boot,Flags,false) of + case b2a(get_flag(profile_boot,Flags,false)) of false -> ok; true -> debug_profile_format_mfas(debug_profile_mfas()), diff --git a/erts/preloaded/src/prim_inet.erl b/erts/preloaded/src/prim_inet.erl index bcf16402b0..61f727e8a4 100644 --- a/erts/preloaded/src/prim_inet.erl +++ b/erts/preloaded/src/prim_inet.erl @@ -347,7 +347,17 @@ accept_opts(L, S) -> case getopts(L, [active, nodelay, keepalive, delay_send, priority, tos]) of {ok, Opts} -> case setopts(S, Opts) of - ok -> {ok, S}; + ok -> + case getopts(L, [tclass]) of + {ok, []} -> + {ok, S}; + {ok, TClassOpts} -> + case setopts(S, TClassOpts) of + ok -> + {ok, S}; + Error -> close(S), Error + end + end; Error -> close(S), Error end; Error -> @@ -1196,6 +1206,7 @@ enc_opt(sndbuf) -> ?INET_OPT_SNDBUF; enc_opt(recbuf) -> ?INET_OPT_RCVBUF; enc_opt(priority) -> ?INET_OPT_PRIORITY; enc_opt(tos) -> ?INET_OPT_TOS; +enc_opt(tclass) -> ?INET_OPT_TCLASS; enc_opt(nodelay) -> ?TCP_OPT_NODELAY; enc_opt(multicast_if) -> ?UDP_OPT_MULTICAST_IF; enc_opt(multicast_ttl) -> ?UDP_OPT_MULTICAST_TTL; @@ -1255,6 +1266,7 @@ dec_opt(?INET_OPT_SNDBUF) -> sndbuf; dec_opt(?INET_OPT_RCVBUF) -> recbuf; dec_opt(?INET_OPT_PRIORITY) -> priority; dec_opt(?INET_OPT_TOS) -> tos; +dec_opt(?INET_OPT_TCLASS) -> tclass; dec_opt(?TCP_OPT_NODELAY) -> nodelay; dec_opt(?UDP_OPT_MULTICAST_IF) -> multicast_if; dec_opt(?UDP_OPT_MULTICAST_TTL) -> multicast_ttl; @@ -1329,6 +1341,7 @@ type_opt_1(sndbuf) -> int; type_opt_1(recbuf) -> int; type_opt_1(priority) -> int; type_opt_1(tos) -> int; +type_opt_1(tclass) -> int; type_opt_1(nodelay) -> bool; type_opt_1(ipv6_v6only) -> bool; %% multicast diff --git a/erts/start_scripts/Makefile b/erts/start_scripts/Makefile index dd7e2ea530..ae2521474e 100644 --- a/erts/start_scripts/Makefile +++ b/erts/start_scripts/Makefile @@ -17,6 +17,9 @@ # # %CopyrightEnd% # + +.NOTPARALLEL: + include $(ERL_TOP)/make/target.mk include $(ERL_TOP)/make/$(TARGET)/otp.mk diff --git a/erts/vsn.mk b/erts/vsn.mk index acd4509304..ad9148f61f 100644 --- a/erts/vsn.mk +++ b/erts/vsn.mk @@ -18,7 +18,7 @@ # %CopyrightEnd% # -VSN = 8.0.3 +VSN = 8.1 # Port number 4365 in 4.2 # Port number 4366 in 4.3 diff --git a/lib/asn1/doc/src/notes.xml b/lib/asn1/doc/src/notes.xml index ac3d9c828e..499a7e40c3 100644 --- a/lib/asn1/doc/src/notes.xml +++ b/lib/asn1/doc/src/notes.xml @@ -32,6 +32,22 @@ <p>This document describes the changes made to the asn1 application.</p> +<section><title>Asn1 4.0.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Compiling multiple ASN.1 modules in the same directory + with parallel make (make -j) should now be safe.</p> + <p> + Own Id: OTP-13624</p> + </item> + </list> + </section> + +</section> + <section><title>Asn1 4.0.3</title> <section><title>Improvements and New Features</title> diff --git a/lib/asn1/vsn.mk b/lib/asn1/vsn.mk index 527af05da1..e4bf3e2236 100644 --- a/lib/asn1/vsn.mk +++ b/lib/asn1/vsn.mk @@ -1 +1 @@ -ASN1_VSN = 4.0.3 +ASN1_VSN = 4.0.4 diff --git a/lib/common_test/doc/src/ct.xml b/lib/common_test/doc/src/ct.xml index ffc64cba67..53ef41dd5b 100644 --- a/lib/common_test/doc/src/ct.xml +++ b/lib/common_test/doc/src/ct.xml @@ -620,6 +620,21 @@ </func> <func> + <name>get_verbosity(Category) -> Level | undefined</name> + <fsummary>Read the verbosity level for a logging category.</fsummary> + <type> + <v>Category = default | atom()</v> + <v>Level = integer()</v> + </type> + <desc><marker id="get_verbosity-1"/> + <p>This function returns the verbosity level for the specified logging + category. See the <seealso marker="write_test_chapter#logging"> + User's Guide</seealso> for details. Use the value <c>default</c> to read + the general verbosity level.</p> + </desc> + </func> + + <func> <name>install(Opts) -> ok | {error, Reason}</name> <fsummary>Installs configuration files and event handlers.</fsummary> <type> @@ -1225,6 +1240,21 @@ </func> <func> + <name>set_verbosity(Category, Level) -> ok</name> + <fsummary>Set the verbosity level for a logging category.</fsummary> + <type> + <v>Category = default | atom()</v> + <v>Level = integer()</v> + </type> + <desc><marker id="set_verbosity-2"/> + <p>Use this function to set, or modify, the verbosity level for a logging + category. See the <seealso marker="write_test_chapter#logging"> + User's Guide</seealso> for details. Use the value <c>default</c> to set the + general verbosity level.</p> + </desc> + </func> + + <func> <name>sleep(Time) -> ok</name> <fsummary>This function, similar to timer:sleep/1, suspends the test case for a specified time.</fsummary> diff --git a/lib/common_test/doc/src/ct_telnet.xml b/lib/common_test/doc/src/ct_telnet.xml index eba3c3030d..8e85cccc99 100644 --- a/lib/common_test/doc/src/ct_telnet.xml +++ b/lib/common_test/doc/src/ct_telnet.xml @@ -337,7 +337,7 @@ <c>FullMatch</c> is the string matched by the whole regular expression, and <c>SubMatchN</c> is the string that matched subexpression number <c>N</c>. Subexpressions are denoted with - <c>(' ')</c> in the regular expression.</p> + <c>'(' ')'</c> in the regular expression.</p> <p>If a <c>Tag</c> is speciifed, the returned <c>Match</c> also includes the matched <c>Tag</c>. Otherwise, only <c>RxMatch</c> diff --git a/lib/common_test/doc/src/notes.xml b/lib/common_test/doc/src/notes.xml index 32ae699c7a..7653670d30 100644 --- a/lib/common_test/doc/src/notes.xml +++ b/lib/common_test/doc/src/notes.xml @@ -33,6 +33,42 @@ <file>notes.xml</file> </header> +<section><title>Common_Test 1.12.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + If the telnet server would pause during transmission of a + line of text before terminating the line, the + <c>ct_telnet:expect/3</c> function would print the line + twice in the test case HTML log. This problem has been + fixed.</p> + <p> + Own Id: OTP-13730 Aux Id: seq13135 </p> + </item> + <item> + <p> + The functions <c>ct:set_verbosity/2</c> and + <c>ct:get_verbosity/1</c> have been added in order to + make it possible for test cases, CT Hooks, or test + framework functions, to modify and read verbosity levels + for logging.</p> + <p> + Own Id: OTP-13841</p> + </item> + <item> + <p><c>make</c> (tools) and <c>ct_make</c> (common_test) + would crash if an Erlang source file contained a + <c>-warning()</c> directive.</p> + <p> + Own Id: OTP-13855</p> + </item> + </list> + </section> + +</section> + <section><title>Common_Test 1.12.2</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/common_test/doc/src/write_test_chapter.xml b/lib/common_test/doc/src/write_test_chapter.xml index 7bd2ccf588..1d3fbb6f76 100644 --- a/lib/common_test/doc/src/write_test_chapter.xml +++ b/lib/common_test/doc/src/write_test_chapter.xml @@ -1031,6 +1031,10 @@ 4. Categorized info, importance = 25 6. Categorized error, importance = 99</pre> + <p>The functions <seealso marker="ct#set_verbosity-2"><c>ct:set_verbosity/2</c></seealso> + and <seealso marker="ct#get_verbosity-1"><c>ct:get_verbosity/1</c></seealso> may be used + to modify and read verbosity levels during test execution.</p> + <p>The arguments <c>Format</c> and <c>FormatArgs</c> in <c>ct:log/print/pal</c> are always passed on to the STDLIB function <c>io:format/3</c> (For details, see the <seealso marker="stdlib:io"><c>io</c></seealso> manual page).</p> diff --git a/lib/common_test/src/ct.erl b/lib/common_test/src/ct.erl index d7ae81a5ce..f9f845e1a9 100644 --- a/lib/common_test/src/ct.erl +++ b/lib/common_test/src/ct.erl @@ -68,6 +68,7 @@ log/1, log/2, log/3, log/4, log/5, print/1, print/2, print/3, print/4, pal/1, pal/2, pal/3, pal/4, + set_verbosity/2, get_verbosity/1, capture_start/0, capture_stop/0, capture_get/0, capture_get/1, fail/1, fail/2, comment/1, comment/2, make_priv_dir/0, testcases/2, userdata/2, userdata/3, @@ -715,6 +716,24 @@ pal(Category,Importance,Format,Args) -> ct_logs:tc_pal(Category,Importance,Format,Args). %%%----------------------------------------------------------------- +%%% @spec set_verbosity(Category, Level) -> ok +%%% Category = default | atom() +%%% Level = integer() +%%% +%%% @doc Set the verbosity level for a category +set_verbosity(Category, Level) -> + ct_util:set_verbosity({Category,Level}). + +%%%----------------------------------------------------------------- +%%% @spec get_verbosity(Category) -> Level | undefined +%%% Category = default | atom() +%%% Level = integer() +%%% +%%% @doc Read the verbosity level for a category +get_verbosity(Category) -> + ct_util:get_verbosity(Category). + +%%%----------------------------------------------------------------- %%% @spec capture_start() -> ok %%% %%% @doc Start capturing all text strings printed to stdout during diff --git a/lib/common_test/vsn.mk b/lib/common_test/vsn.mk index c68750886a..ab5cfd7a80 100644 --- a/lib/common_test/vsn.mk +++ b/lib/common_test/vsn.mk @@ -1 +1 @@ -COMMON_TEST_VSN = 1.12.2 +COMMON_TEST_VSN = 1.12.3 diff --git a/lib/compiler/doc/src/notes.xml b/lib/compiler/doc/src/notes.xml index dd6b132a92..6aaf16e9a5 100644 --- a/lib/compiler/doc/src/notes.xml +++ b/lib/compiler/doc/src/notes.xml @@ -32,6 +32,43 @@ <p>This document describes the changes made to the Compiler application.</p> +<section><title>Compiler 7.0.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + If the compiler fails to write the BEAM file, it will now + report the reason of the error for the write operation.</p> + <p> + Own Id: OTP-13701</p> + </item> + <item> + <p> + Fixed an internal compiler error. (Thanks to Svilen + Ivanov for reporting this bug.)</p> + <p> + Own Id: OTP-13780 Aux Id: ERL-202 </p> + </item> + <item> + <p> + The compiler could crash when trying to compile a + complicated expression with multiple catches all on one + line . (Thanks to Thomas Arts for reporting this bug.)</p> + <p> + Own Id: OTP-13804 Aux Id: ERL-209 </p> + </item> + <item> + <p> + Eliminated a few internal compiler failures.</p> + <p> + Own Id: OTP-13863</p> + </item> + </list> + </section> + +</section> + <section><title>Compiler 7.0.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/compiler/src/beam_block.erl b/lib/compiler/src/beam_block.erl index ec41925beb..6a35191f6e 100644 --- a/lib/compiler/src/beam_block.erl +++ b/lib/compiler/src/beam_block.erl @@ -58,13 +58,6 @@ blockify(Is) -> blockify([{loop_rec,{f,Fail},{x,0}},{loop_rec_end,_Lbl},{label,Fail}|Is], Acc) -> %% Useless instruction sequence. blockify(Is, Acc); -blockify([{get_map_elements,F,S,{list,Gets}}|Is0], Acc) -> - %% A get_map_elements instruction is only safe at the beginning of - %% a block because of the failure label. - {Ss,Ds} = beam_utils:split_even(Gets), - I = {set,Ds,[S|Ss],{get_map_elements,F}}, - {Block,Is} = collect_block(Is0, [I]), - blockify(Is, [{block,Block}|Acc]); blockify([I|Is0]=IsAll, Acc) -> case collect(I) of error -> blockify(Is0, [I|Acc]); @@ -220,7 +213,6 @@ move_allocates_1([], Acc) -> Acc. alloc_may_pass({set,_,_,{alloc,_,_}}) -> false; alloc_may_pass({set,_,_,{set_tuple_element,_}}) -> false; -alloc_may_pass({set,_,_,{get_map_elements,_}}) -> false; alloc_may_pass({set,_,_,put_list}) -> false; alloc_may_pass({set,_,_,put}) -> false; alloc_may_pass({set,_,_,_}) -> true. @@ -235,8 +227,6 @@ opt([{set,_,_,{line,_}}=Line1, {set,[D2],[{integer,Idx2},Reg],{bif,element,{f,0}}}=I2|Is]) when Idx1 < Idx2, D1 =/= D2, D1 =/= Reg, D2 =/= Reg -> opt([Line2,I2,Line1,I1|Is]); -opt([{set,[_|_],_Ss,{get_map_elements,_F}}=I|Is]) -> - [I|opt(Is)]; opt([{set,Ds0,Ss,Op}|Is0]) -> {Ds,Is} = opt_moves(Ds0, Is0), [{set,Ds,Ss,Op}|opt(Is)]; diff --git a/lib/compiler/src/beam_bsm.erl b/lib/compiler/src/beam_bsm.erl index 286307a4be..ae1b34ba49 100644 --- a/lib/compiler/src/beam_bsm.erl +++ b/lib/compiler/src/beam_bsm.erl @@ -205,8 +205,15 @@ btb_reaches_match_1(Is, Regs, D) -> btb_reaches_match_2([{block,Bl}|Is], Regs0, D) -> Regs = btb_reaches_match_block(Bl, Regs0), btb_reaches_match_1(Is, Regs, D); -btb_reaches_match_2([{call,Arity,{f,Lbl}}|Is], Regs, D) -> - btb_call(Arity, Lbl, Regs, Is, D); +btb_reaches_match_2([{call,Arity,{f,Lbl}}|Is], Regs0, D) -> + case is_tail_call(Is) of + true -> + Regs1 = btb_kill_not_live(Arity, Regs0), + Regs = btb_kill_yregs(Regs1), + btb_tail_call(Lbl, Regs, D); + false -> + btb_call(Arity, Lbl, Regs0, Is, D) + end; btb_reaches_match_2([{apply,Arity}|Is], Regs, D) -> btb_call(Arity+2, apply, Regs, Is, D); btb_reaches_match_2([{call_fun,Live}=I|Is], Regs, D) -> @@ -360,6 +367,10 @@ btb_reaches_match_2([{line,_}|Is], Regs, D) -> btb_reaches_match_2([I|_], Regs, _) -> btb_error({btb_context_regs(Regs),I,not_handled}). +is_tail_call([{deallocate,_}|_]) -> true; +is_tail_call([return|_]) -> true; +is_tail_call(_) -> false. + btb_call(Arity, Lbl, Regs0, Is, D0) -> Regs = btb_kill_not_live(Arity, Regs0), case btb_are_x_registers_empty(Regs) of @@ -369,15 +380,15 @@ btb_call(Arity, Lbl, Regs0, Is, D0) -> D = btb_tail_call(Lbl, Regs, D0), %% No problem so far (the called function can handle a - %% match context). Now we must make sure that the rest - %% of this function following the call does not attempt - %% to use the match context in case there is a copy - %% tucked away in a y register. + %% match context). Now we must make sure that we don't + %% have any copies of the match context tucked away in an + %% y register. RegList = btb_context_regs(Regs), - YRegs = [R || {y,_}=R <- RegList], - case btb_are_all_unused(YRegs, Is, D) of - true -> D; - false -> btb_error({multiple_uses,RegList}) + case [R || {y,_}=R <- RegList] of + [] -> + D; + [_|_] -> + btb_error({multiple_uses,RegList}) end; true -> %% No match context in any x register. It could have been diff --git a/lib/compiler/src/beam_flatten.erl b/lib/compiler/src/beam_flatten.erl index 36369bd0b4..c9ff07b496 100644 --- a/lib/compiler/src/beam_flatten.erl +++ b/lib/compiler/src/beam_flatten.erl @@ -64,7 +64,6 @@ norm({set,[],[S,D],{set_tuple_element,I}}) -> {set_tuple_element,S,D,I}; norm({set,[D1,D2],[S],get_list}) -> {get_list,S,D1,D2}; norm({set,[D],[S|Puts],{alloc,R,{put_map,Op,F}}}) -> {put_map,F,Op,S,D,R,{list,Puts}}; -%% get_map_elements is always handled in beam_split (moved out of block) norm({set,[],[],remove_message}) -> remove_message; norm({set,[],[],fclearerror}) -> fclearerror; norm({set,[],[],fcheckerror}) -> {fcheckerror,{f,0}}. diff --git a/lib/compiler/src/beam_split.erl b/lib/compiler/src/beam_split.erl index c83c686953..feeab0af50 100644 --- a/lib/compiler/src/beam_split.erl +++ b/lib/compiler/src/beam_split.erl @@ -56,9 +56,6 @@ split_block([{set,[D],[S|Puts],{alloc,R,{put_map,Op,{f,Lbl}=Fail}}}|Is], Bl, Acc) when Lbl =/= 0 -> split_block(Is, [], [{put_map,Fail,Op,S,D,R,{list,Puts}}| make_block(Bl, Acc)]); -split_block([{set,Ds,[S|Ss],{get_map_elements,Fail}}|Is], Bl, Acc) -> - Gets = beam_utils:join_even(Ss,Ds), - split_block(Is, [], [{get_map_elements,Fail,S,{list,Gets}}|make_block(Bl, Acc)]); split_block([{set,[R],[],{try_catch,Op,L}}|Is], Bl, Acc) -> split_block(Is, [], [{Op,R,L}|make_block(Bl, Acc)]); split_block([{set,[],[],{line,_}=Line}|Is], Bl, Acc) -> diff --git a/lib/compiler/src/beam_utils.erl b/lib/compiler/src/beam_utils.erl index a15ecf633e..249d9395ca 100644 --- a/lib/compiler/src/beam_utils.erl +++ b/lib/compiler/src/beam_utils.erl @@ -26,7 +26,7 @@ empty_label_index/0,index_label/3,index_labels/1, code_at/2,bif_to_test/3,is_pure_test/1, live_opt/1,delete_live_annos/1,combine_heap_needs/2, - join_even/2,split_even/1]). + split_even/1]). -import(lists, [member/2,sort/1,reverse/1,splitwith/2]). @@ -233,11 +233,6 @@ combine_heap_needs(H1, H2) when is_integer(H1), is_integer(H2) -> split_even(Rs) -> split_even(Rs, [], []). -%% join_even/1 -%% {[1,3,5],[2,4,6]} -> [1,2,3,4,5,6] - -join_even([], []) -> []; -join_even([S|Ss], [D|Ds]) -> [S,D|join_even(Ss, Ds)]. %%% %%% Local functions. @@ -753,6 +748,11 @@ live_opt([timeout=I|Is], _, D, Acc) -> live_opt(Is, 0, D, [I|Acc]); live_opt([{wait,_}=I|Is], _, D, Acc) -> live_opt(Is, 0, D, [I|Acc]); +live_opt([{get_map_elements,Fail,Src,{list,List}}=I|Is], Regs0, D, Acc) -> + {Ss,Ds} = split_even(List), + Regs1 = x_live([Src|Ss], x_dead(Ds, Regs0)), + Regs = live_join_label(Fail, D, Regs1), + live_opt(Is, Regs, D, [I|Acc]); %% Transparent instructions - they neither use nor modify x registers. live_opt([{deallocate,_}=I|Is], Regs, D, Acc) -> diff --git a/lib/compiler/src/beam_validator.erl b/lib/compiler/src/beam_validator.erl index 4c0cb6780a..16dba35adc 100644 --- a/lib/compiler/src/beam_validator.erl +++ b/lib/compiler/src/beam_validator.erl @@ -808,9 +808,11 @@ validate_bs_skip_utf(Fail, Ctx, Live, Vst0) -> %% A possibility for garbage collection must not occur between setelement/3 and %% set_tuple_element/3. %% +%% Note that #vst.current will be 'none' if the instruction is unreachable. +%% val_dsetel({move,_,_}, Vst) -> Vst; -val_dsetel({call_ext,3,{extfunc,erlang,setelement,3}}, #vst{current=St}=Vst) -> +val_dsetel({call_ext,3,{extfunc,erlang,setelement,3}}, #vst{current=#st{}=St}=Vst) -> Vst#vst{current=St#st{setelem=true}}; val_dsetel({set_tuple_element,_,_,_}, #vst{current=#st{setelem=false}}) -> error(illegal_context_for_set_tuple_element); diff --git a/lib/compiler/test/beam_block_SUITE.erl b/lib/compiler/test/beam_block_SUITE.erl index 9fcb6e497d..55d5f2dbe8 100644 --- a/lib/compiler/test/beam_block_SUITE.erl +++ b/lib/compiler/test/beam_block_SUITE.erl @@ -22,7 +22,7 @@ -export([all/0,suite/0,groups/0,init_per_suite/1,end_per_suite/1, init_per_group/2,end_per_group/2, get_map_elements/1,otp_7345/1,move_opt_across_gc_bif/1, - erl_202/1]). + erl_202/1,repro/1]). %% The only test for the following functions is that %% the code compiles and is accepted by beam_validator. @@ -39,7 +39,8 @@ groups() -> [get_map_elements, otp_7345, move_opt_across_gc_bif, - erl_202 + erl_202, + repro ]}]. init_per_suite(Config) -> @@ -158,6 +159,27 @@ erl_202({{_, _},X}, _) -> erl_202({_, _}, #erl_202_r1{y=R2}) -> {R2#erl_202_r2.x}. +%% See https://bugs.erlang.org/browse/ERL-266. +%% Instructions with failure labels are not safe to include +%% in a block. Including get_map_elements in a block would +%% lead to unsafe code. + +repro(_Config) -> + [] = maps:to_list(repro([], #{}, #{})), + [{tmp1,n}] = maps:to_list(repro([{tmp1,0}], #{}, #{})), + [{tmp1,name}] = maps:to_list(repro([{tmp1,0}], #{}, #{0=>name})), + ok. + +repro([], TempNames, _Slots) -> + TempNames; +repro([{Temp, Slot}|Xs], TempNames, Slots0) -> + {Name, Slots} = + case Slots0 of + #{Slot := Name0} -> {Name0, Slots0}; + #{} -> {n, Slots0#{Slot => n}} + end, + repro(Xs, TempNames#{Temp => Name}, Slots). + %%% %%% The only test of the following code is that it compiles. %%% diff --git a/lib/compiler/test/beam_validator_SUITE.erl b/lib/compiler/test/beam_validator_SUITE.erl index 263fd2ca7e..ca85eef688 100644 --- a/lib/compiler/test/beam_validator_SUITE.erl +++ b/lib/compiler/test/beam_validator_SUITE.erl @@ -32,7 +32,8 @@ bad_bin_match/1,bad_dsetel/1, state_after_fault_in_catch/1,no_exception_in_catch/1, undef_label/1,illegal_instruction/1,failing_gc_guard_bif/1, - map_field_lists/1,cover_bin_opt/1]). + map_field_lists/1,cover_bin_opt/1, + val_dsetel/1]). -include_lib("common_test/include/ct.hrl"). @@ -60,7 +61,7 @@ groups() -> freg_state,bad_bin_match,bad_dsetel, state_after_fault_in_catch,no_exception_in_catch, undef_label,illegal_instruction,failing_gc_guard_bif, - map_field_lists,cover_bin_opt]}]. + map_field_lists,cover_bin_opt,val_dsetel]}]. init_per_suite(Config) -> Config. @@ -546,3 +547,23 @@ beam_val(M) -> _ = [io:put_chars(beam_validator:format_error(E)) || E <- Errors], Errors. + +%%%------------------------------------------------------------------------- + +val_dsetel(_Config) -> + self() ! 13, + {'EXIT',{{try_clause,participating},_}} = (catch night(0)), + ok. + +night(Turned) -> + receive + 13 -> + try participating of engine -> 16 after false end + end, + %% The setelement/3 call is unreachable. + Turned(setelement(#{true => Turned}, + participating(Turned, "suit", 40, []), + Turned < Turned)), + ok. + +participating(_, _, _, _) -> ok. diff --git a/lib/compiler/test/bs_match_SUITE.erl b/lib/compiler/test/bs_match_SUITE.erl index 224abf6c29..a9bee888d9 100644 --- a/lib/compiler/test/bs_match_SUITE.erl +++ b/lib/compiler/test/bs_match_SUITE.erl @@ -38,7 +38,8 @@ no_partition/1,calling_a_binary/1,binary_in_map/1, match_string_opt/1,select_on_integer/1, map_and_binary/1,unsafe_branch_caching/1, - bad_literals/1,good_literals/1,constant_propagation/1]). + bad_literals/1,good_literals/1,constant_propagation/1 + ]). -export([coverage_id/1,coverage_external_ignore/2]). @@ -768,6 +769,11 @@ multiple_uses(Config) when is_list(Config) -> {344,62879,345,<<245,159,1,89>>} = multiple_uses_1(<<1,88,245,159,1,89>>), true = multiple_uses_2(<<0,0,197,18>>), <<42,43>> = multiple_uses_3(<<0,0,42,43>>, fun id/1), + + ok = first_after(<<>>, 42), + <<1>> = first_after(<<1,2,3>>, 0), + <<2>> = first_after(<<1,2,3>>, 1), + ok. multiple_uses_1(<<X:16,Tail/binary>>) -> @@ -789,6 +795,24 @@ multiple_uses_match(<<Y:16,Z:16>>) -> multiple_uses_cmp(<<Y:16>>, <<Y:16>>) -> true; multiple_uses_cmp(<<_:16>>, <<_:16>>) -> false. +first_after(Data, Offset) -> + case byte_size(Data) > Offset of + false -> + {First, Rest} = {ok, ok}, + ok; + true -> + <<_:Offset/binary, Rest/binary>> = Data, + %% 'Rest' saved in y(0) before the call. + {First, _} = match_first(Data, Rest), + %% When beam_bsm sees the code, the following line + %% which uses y(0) has been optimized away. + {First, Rest} = {First, Rest}, + First + end. + +match_first(_, <<First:1/binary, Rest/binary>>) -> + {First, Rest}. + zero_label(Config) when is_list(Config) -> <<"nosemouth">> = read_pols(<<"FACE","nose","mouth">>), <<"CE">> = read_pols(<<"noFACE">>), diff --git a/lib/compiler/vsn.mk b/lib/compiler/vsn.mk index 334784657e..87fde38f2b 100644 --- a/lib/compiler/vsn.mk +++ b/lib/compiler/vsn.mk @@ -1 +1 @@ -COMPILER_VSN = 7.0.1 +COMPILER_VSN = 7.0.2 diff --git a/lib/crypto/c_src/crypto.c b/lib/crypto/c_src/crypto.c index 00fc81c84f..c100fc8ee2 100644 --- a/lib/crypto/c_src/crypto.c +++ b/lib/crypto/c_src/crypto.c @@ -50,8 +50,12 @@ #include <openssl/ripemd.h> #include <openssl/bn.h> #include <openssl/objects.h> -#include <openssl/rc4.h> -#include <openssl/rc2.h> +#ifndef OPENSSL_NO_RC4 + #include <openssl/rc4.h> +#endif /* OPENSSL_NO_RC4 */ +#ifndef OPENSSL_NO_RC2 + #include <openssl/rc2.h> +#endif #include <openssl/blowfish.h> #include <openssl/rand.h> #include <openssl/evp.h> @@ -468,7 +472,13 @@ struct cipher_type_t { struct cipher_type_t cipher_types[] = { - {{"rc2_cbc"}, {&EVP_rc2_cbc}}, + {{"rc2_cbc"}, +#ifndef OPENSSL_NO_RC2 + {&EVP_rc2_cbc} +#else + {NULL} +#endif + }, {{"des_cbc"}, {COND_NO_DES_PTR(&EVP_des_cbc)}}, {{"des_cfb"}, {COND_NO_DES_PTR(&EVP_des_cfb8)}}, {{"des_ecb"}, {COND_NO_DES_PTR(&EVP_des_ecb)}}, @@ -578,7 +588,7 @@ static void error_handler(void* null, const char* errstr) } #endif /* HAVE_DYNAMIC_CRYPTO_LIB */ -static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) +static int initialize(ErlNifEnv* env, ERL_NIF_TERM load_info) { #ifdef OPENSSL_THREADS ErlNifSysInfo sys_info; @@ -593,7 +603,7 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) char lib_buf[1000]; if (!verify_lib_version()) - return 0; + return __LINE__; /* load_info: {301, <<"/full/path/of/this/library">>} */ if (!enif_get_tuple(env, load_info, &tpl_arity, &tpl_array) @@ -603,7 +613,7 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) || !enif_inspect_binary(env, tpl_array[1], &lib_bin)) { PRINTF_ERR1("CRYPTO: Invalid load_info '%T'", load_info); - return 0; + return __LINE__; } hmac_context_rtype = enif_open_resource_type(env, NULL, "hmac_context", @@ -612,7 +622,7 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) NULL); if (!hmac_context_rtype) { PRINTF_ERR0("CRYPTO: Could not open resource type 'hmac_context'"); - return 0; + return __LINE__; } #if OPENSSL_VERSION_NUMBER >= OpenSSL_version_plain(1,0,0) evp_md_ctx_rtype = enif_open_resource_type(env, NULL, "EVP_MD_CTX", @@ -621,7 +631,7 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) NULL); if (!evp_md_ctx_rtype) { PRINTF_ERR0("CRYPTO: Could not open resource type 'EVP_MD_CTX'"); - return 0; + return __LINE__; } #endif #ifdef HAVE_EVP_AES_CTR @@ -631,14 +641,14 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) NULL); if (!evp_cipher_ctx_rtype) { PRINTF_ERR0("CRYPTO: Could not open resource type 'EVP_CIPHER_CTX'"); - return 0; + return __LINE__; } #endif if (library_refc > 0) { /* Repeated loading of this library (module upgrade). * Atoms and callbacks are already set, we are done. */ - return 1; + return 0; } atom_true = enif_make_atom(env,"true"); @@ -684,14 +694,14 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) { void* handle; if (!change_basename(&lib_bin, lib_buf, sizeof(lib_buf), crypto_callback_name)) { - return 0; + return __LINE__; } if (!(handle = enif_dlopen(lib_buf, &error_handler, NULL))) { - return 0; + return __LINE__; } if (!(funcp = (get_crypto_callbacks_t*) enif_dlsym(handle, "get_crypto_callbacks", &error_handler, NULL))) { - return 0; + return __LINE__; } } #else /* !HAVE_DYNAMIC_CRYPTO_LIB */ @@ -710,7 +720,7 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) if (!ccb || ccb->sizeof_me != sizeof(*ccb)) { PRINTF_ERR0("Invalid 'crypto_callbacks'"); - return 0; + return __LINE__; } CRYPTO_set_mem_functions(ccb->crypto_alloc, ccb->crypto_realloc, ccb->crypto_free); @@ -724,13 +734,14 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) CRYPTO_set_dynlock_destroy_callback(ccb->dyn_destroy_function); } #endif /* OPENSSL_THREADS */ - return 1; + return 0; } static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) { - if (!init(env, load_info)) { - return -1; + int errline = initialize(env, load_info); + if (errline) { + return errline; } *priv_data = NULL; @@ -741,14 +752,16 @@ static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) static int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data, ERL_NIF_TERM load_info) { + int errline; if (*old_priv_data != NULL) { - return -1; /* Don't know how to do that */ + return __LINE__; /* Don't know how to do that */ } if (*priv_data != NULL) { - return -1; /* Don't know how to do that */ + return __LINE__; /* Don't know how to do that */ } - if (!init(env, load_info)) { - return -1; + errline = initialize(env, load_info); + if (errline) { + return errline; } library_refc++; return 0; @@ -827,8 +840,12 @@ static void init_algorithms_types(ErlNifEnv* env) algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"blowfish_cfb64"); algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"blowfish_ofb64"); algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"blowfish_ecb"); +#ifndef OPENSSL_NO_RC2 algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"rc2_cbc"); +#endif +#ifndef OPENSSL_NO_RC4 algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"rc4"); +#endif #if defined(HAVE_GCM) algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"aes_gcm"); #endif @@ -2327,6 +2344,7 @@ static ERL_NIF_TERM do_exor(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) static ERL_NIF_TERM rc4_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Key, Data) */ +#ifndef OPENSSL_NO_RC4 ErlNifBinary key, data; RC4_KEY rc4_key; ERL_NIF_TERM ret; @@ -2340,10 +2358,14 @@ static ERL_NIF_TERM rc4_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg enif_make_new_binary(env, data.size, &ret)); CONSUME_REDS(env,data); return ret; -} +#else + return enif_raise_exception(env, atom_notsup); +#endif +} static ERL_NIF_TERM rc4_set_key(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Key) */ +#ifndef OPENSSL_NO_RC4 ErlNifBinary key; ERL_NIF_TERM ret; @@ -2353,11 +2375,14 @@ static ERL_NIF_TERM rc4_set_key(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg RC4_set_key((RC4_KEY*)enif_make_new_binary(env, sizeof(RC4_KEY), &ret), key.size, key.data); return ret; +#else + return enif_raise_exception(env, atom_notsup); +#endif } static ERL_NIF_TERM rc4_encrypt_with_state(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (State, Data) */ - +#ifndef OPENSSL_NO_RC4 ErlNifBinary state, data; RC4_KEY* rc4_key; ERL_NIF_TERM new_state, new_data; @@ -2373,7 +2398,10 @@ static ERL_NIF_TERM rc4_encrypt_with_state(ErlNifEnv* env, int argc, const ERL_N enif_make_new_binary(env, data.size, &new_data)); CONSUME_REDS(env,data); return enif_make_tuple2(env,new_state,new_data); -} +#else + return enif_raise_exception(env, atom_notsup); +#endif +} static int get_rsa_private_key(ErlNifEnv* env, ERL_NIF_TERM key, RSA *rsa) { diff --git a/lib/crypto/doc/src/notes.xml b/lib/crypto/doc/src/notes.xml index 56e165a1d1..4ae64e059e 100644 --- a/lib/crypto/doc/src/notes.xml +++ b/lib/crypto/doc/src/notes.xml @@ -31,6 +31,32 @@ </header> <p>This document describes the changes made to the Crypto application.</p> +<section><title>Crypto 3.7.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Crypto has been fixed to work against OpenSSL versions + with disabled DES ciphers. Correct spelling of cipher + algorithm 'des3_cfb' has been introduced; the previous + misspeling still works.</p> + <p> + Own Id: OTP-13783 Aux Id: ERL-203 </p> + </item> + <item> + <p> + The size of an internal array in crypto has been fixed to + not segfault when having all possible ciphers. Bug fix by + Duncan Overbruck.</p> + <p> + Own Id: OTP-13789 Aux Id: PR-1140 </p> + </item> + </list> + </section> + +</section> + <section><title>Crypto 3.7</title> <section><title>Improvements and New Features</title> diff --git a/lib/crypto/test/old_crypto_SUITE.erl b/lib/crypto/test/old_crypto_SUITE.erl index 4a6753b2ed..324ed39c6d 100644 --- a/lib/crypto/test/old_crypto_SUITE.erl +++ b/lib/crypto/test/old_crypto_SUITE.erl @@ -1080,7 +1080,9 @@ rc2_cbc(doc) -> "Encrypt and decrypt according to RC2 CBC and check the result. " "Example stripped out from public_key application test"; rc2_cbc(Config) when is_list(Config) -> - + if_supported(rc2_cbc, fun rc2_cbc_do/0). + +rc2_cbc_do() -> Key = <<146,210,160,124,215,227,153,239,227,17,222,140,3,93,27,191>>, IV = <<72,91,135,182,25,42,35,210>>, @@ -2117,6 +2119,9 @@ rc4_test(doc) -> rc4_test(suite) -> []; rc4_test(Config) when is_list(Config) -> + if_supported(rc4, fun rc4_test_do/0). + +rc4_test_do() -> CT1 = <<"Yo baby yo">>, R1 = <<118,122,68,110,157,166,141,212,139,39>>, K = "apaapa", @@ -2132,6 +2137,9 @@ rc4_stream_test(doc) -> rc4_stream_test(suite) -> []; rc4_stream_test(Config) when is_list(Config) -> + if_supported(rc4, fun rc4_stream_test_do/0). + +rc4_stream_test_do() -> CT1 = <<"Yo ">>, CT2 = <<"baby yo">>, K = "apaapa", diff --git a/lib/crypto/vsn.mk b/lib/crypto/vsn.mk index 96466869d1..bbee24554a 100644 --- a/lib/crypto/vsn.mk +++ b/lib/crypto/vsn.mk @@ -1 +1 @@ -CRYPTO_VSN = 3.7 +CRYPTO_VSN = 3.7.1 diff --git a/lib/debugger/doc/src/notes.xml b/lib/debugger/doc/src/notes.xml index 2e0d834269..93bc46ddbe 100644 --- a/lib/debugger/doc/src/notes.xml +++ b/lib/debugger/doc/src/notes.xml @@ -33,6 +33,22 @@ <p>This document describes the changes made to the Debugger application.</p> +<section><title>Debugger 4.2.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Update build scripts to not make assumtions about where + env, cp and perl are located.</p> + <p> + Own Id: OTP-13800</p> + </item> + </list> + </section> + +</section> + <section><title>Debugger 4.2</title> <section><title>Improvements and New Features</title> diff --git a/lib/debugger/vsn.mk b/lib/debugger/vsn.mk index dd496013cd..f5440865ef 100644 --- a/lib/debugger/vsn.mk +++ b/lib/debugger/vsn.mk @@ -1 +1 @@ -DEBUGGER_VSN = 4.2 +DEBUGGER_VSN = 4.2.1 diff --git a/lib/dialyzer/doc/src/book.xml b/lib/dialyzer/doc/src/book.xml index aecc0e5bfa..46df8b81b8 100644 --- a/lib/dialyzer/doc/src/book.xml +++ b/lib/dialyzer/doc/src/book.xml @@ -25,7 +25,7 @@ <title>Dialyzer</title> <prepared></prepared> <docno></docno> - <date></date> + <date>2016-09-19</date> <rev></rev> <file>book.xml</file> </header> diff --git a/lib/dialyzer/doc/src/dialyzer.xml b/lib/dialyzer/doc/src/dialyzer.xml index 619db125b1..553bfef41b 100644 --- a/lib/dialyzer/doc/src/dialyzer.xml +++ b/lib/dialyzer/doc/src/dialyzer.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2006</year><year>2015</year> + <year>2006</year><year>2016</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -25,341 +25,477 @@ <title>dialyzer</title> <prepared></prepared> <docno></docno> - <date></date> + <date>2016-09-20</date> <rev></rev> + <file>dialyzer.xml</file> </header> <module>dialyzer</module> - <modulesummary>The Dialyzer, a DIscrepancy AnalYZer for ERlang programs</modulesummary> + <modulesummary>Dialyzer, a DIscrepancy AnaLYZer for ERlang programs. + </modulesummary> <description> - <p>The Dialyzer is a static analysis tool that identifies software - discrepancies such as definite type errors, code which has become - dead or unreachable due to some programming error, unnecessary - tests, etc. in single Erlang modules or entire (sets of) - applications. Dialyzer starts its analysis from either - debug-compiled BEAM bytecode or from Erlang source code. The file - and line number of a discrepancy is reported along with an - indication of what the discrepancy is about. Dialyzer bases its - analysis on the concept of success typings which allows for sound - warnings (no false positives).</p> - <p>Read more about Dialyzer and about how to use it from the GUI - in <seealso marker="dialyzer_chapter">Dialyzer User's - Guide</seealso>.</p> + <p>Dialyzer is a static analysis tool that identifies software + discrepancies, such as definite type errors, code that has become dead + or unreachable because of programming error, and unnecessary tests, + in single Erlang modules or entire (sets of) applications.</p> + + <p>Dialyzer starts its analysis from either + debug-compiled BEAM bytecode or from Erlang source code. The file + and line number of a discrepancy is reported along with an + indication of what the discrepancy is about. Dialyzer bases its + analysis on the concept of success typings, which allows for sound + warnings (no false positives).</p> </description> <section> - <title>Using the Dialyzer from the command line</title> - <p>Dialyzer also has a command line version for automated use. Below is a - brief description of the list of its options. The same information can - be obtained by writing</p> - <code type="none"> - dialyzer --help</code> - <p>in a shell. Please refer to the GUI description for more details on - the operation of Dialyzer.</p> - <p>The exit status of the command line version is:</p> + <marker id="command_line"></marker> + <title>Using Dialyzer from the Command Line</title> + <p>Dialyzer has a command-line version for automated use. This + section provides a brief description of the options. The same information + can be obtained by writing the following in a shell:</p> + <code type="none"> - 0 - No problems were encountered during the analysis and no - warnings were emitted. - 1 - Problems were encountered during the analysis. - 2 - No problems were encountered, but warnings were emitted.</code> - <p>Usage:</p> +dialyzer --help</code> + + <p>For more details about the operation of Dialyzer, see section + <seealso marker="dialyzer_chapter#dialyzer_gui"> + Using Dialyzer from the GUI</seealso> in the User's Guide.</p> + + <p><em>Exit status of the command-line version:</em></p> + + <taglist> + <tag><c>0</c></tag> + <item> + <p>No problems were found during the analysis and no warnings were + emitted.</p> + </item> + <tag><c>1</c></tag> + <item> + <p>Problems were found during the analysis.</p> + </item> + <tag><c>2</c></tag> + <item> + <p>No problems were found during the analysis, but warnings were + emitted.</p> + </item> + </taglist> + + <p><em>Usage:</em></p> + <code type="none"> - dialyzer [--help] [--version] [--shell] [--quiet] [--verbose] - [-pa dir]* [--plt plt] [--plts plt*] [-Ddefine]* - [-I include_dir]* [--output_plt file] [-Wwarn]* [--raw] - [--src] [--gui] [files_or_dirs] [-r dirs] - [--apps applications] [-o outfile] - [--build_plt] [--add_to_plt] [--remove_from_plt] - [--check_plt] [--no_check_plt] [--plt_info] [--get_warnings] - [--dump_callgraph file] [--no_native] [--fullpath] - [--statistics] [--no_native_cache]</code> - <p>Options:</p> +dialyzer [--add_to_plt] [--apps applications] [--build_plt] + [--check_plt] [-Ddefine]* [-Dname] [--dump_callgraph file] + [files_or_dirs] [--fullpath] [--get_warnings] [--gui] [--help] + [-I include_dir]* [--no_check_plt] [--no_native] + [--no_native_cache] [-o outfile] [--output_plt file] [-pa dir]* + [--plt plt] [--plt_info] [--plts plt*] [--quiet] [-r dirs] + [--raw] [--remove_from_plt] [--shell] [--src] [--statistics] + [--verbose] [--version] [-Wwarn]*</code> + + <note> + <p>* denotes that multiple occurrences of the option are possible.</p> + </note> + + <p><em>Options:</em></p> + <taglist> - <tag><c><![CDATA[files_or_dirs]]></c> (for backwards compatibility also - as: <c><![CDATA[-c files_or_dirs]]></c>)</tag> - <item>Use Dialyzer from the command line to detect defects in the - specified files or directories containing <c><![CDATA[.erl]]></c> or - <c><![CDATA[.beam]]></c> files, depending on the type of the - analysis.</item> - <tag><c><![CDATA[-r dirs]]></c></tag> - <item>Same as the previous but the specified directories are searched - recursively for subdirectories containing <c><![CDATA[.erl]]></c> or - <c><![CDATA[.beam]]></c> files in them, depending on the type of - analysis.</item> - <tag><c><![CDATA[--apps applications]]></c></tag> - <item>Option typically used when building or modifying a plt as in: + <tag><c>--add_to_plt</c></tag> + <item> + <p>The PLT is extended to also include the files specified with + <c>-c</c> and <c>-r</c>. Use + <c>--plt</c> to specify which PLT to start from, + and <c>--output_plt</c> to specify where to put the PLT. + Notice that the analysis possibly can include files from the PLT if + they depend on the new files. This option only works for BEAM + files.</p> + </item> + <tag><c>--apps applications</c></tag> + <item> + <p>This option is typically used when building or modifying a PLT as + in:</p> <code type="none"> - dialyzer --build_plt --apps erts kernel stdlib mnesia ...</code> - to conveniently refer to library applications corresponding to the - Erlang/OTP installation. However, the option is general and can also - be used during analysis in order to refer to Erlang/OTP applications. - In addition, file or directory names can also be included, as in: +dialyzer --build_plt --apps erts kernel stdlib mnesia ...</code> + <p>to refer conveniently to library applications corresponding to the + Erlang/OTP installation. However, this option is general and can also + be used during analysis to refer to Erlang/OTP applications. + File or directory names can also be included, as in:</p> <code type="none"> - dialyzer --apps inets ssl ./ebin ../other_lib/ebin/my_module.beam</code></item> - <tag><c><![CDATA[-o outfile]]></c> (or - <c><![CDATA[--output outfile]]></c>)</tag> - <item>When using Dialyzer from the command line, send the analysis - results to the specified outfile rather than to stdout.</item> - <tag><c><![CDATA[--raw]]></c></tag> - <item>When using Dialyzer from the command line, output the raw analysis - results (Erlang terms) instead of the formatted result. The raw format - is easier to post-process (for instance, to filter warnings or to - output HTML pages).</item> - <tag><c><![CDATA[--src]]></c></tag> - <item>Override the default, which is to analyze BEAM files, and - analyze starting from Erlang source code instead.</item> - <tag><c><![CDATA[-Dname]]></c> (or <c><![CDATA[-Dname=value]]></c>)</tag> - <item>When analyzing from source, pass the define to Dialyzer. (**)</item> - <tag><c><![CDATA[-I include_dir]]></c></tag> - <item>When analyzing from source, pass the <c><![CDATA[include_dir]]></c> - to Dialyzer. (**)</item> - <tag><c><![CDATA[-pa dir]]></c></tag> - <item>Include <c><![CDATA[dir]]></c> in the path for Erlang (useful when - analyzing files that have <c><![CDATA['-include_lib()']]></c> - directives).</item> - <tag><c><![CDATA[--output_plt file]]></c></tag> - <item>Store the plt at the specified file after building it.</item> - <tag><c><![CDATA[--plt plt]]></c></tag> - <item>Use the specified plt as the initial plt (if the plt was built - during setup the files will be checked for consistency).</item> - <tag><c><![CDATA[--plts plt*]]></c></tag> - <item>Merge the specified plts to create the initial plt -- requires - that the plts are disjoint (i.e., do not have any module - appearing in more than one plt). - The plts are created in the usual way: +dialyzer --apps inets ssl ./ebin ../other_lib/ebin/my_module.beam</code> + </item> + <tag><c>--build_plt</c></tag> + <item> + <p>The analysis starts from an empty PLT and creates a new one from + the files specified with <c>-c</c> and + <c>-r</c>. This option only works for BEAM files. + To override the default PLT location, use + <c>--plt</c> or <c>--output_plt</c>.</p> + </item> + <tag><c>--check_plt</c></tag> + <item> + <p>Check the PLT for consistency and rebuild it if it is not + up-to-date.</p> + </item> + <tag><c>-Dname</c> (or <c>-Dname=value</c>)</tag> + <item> + <p>When analyzing from source, pass the define to Dialyzer. + (**)</p> + </item> + <tag><c>--dump_callgraph file</c></tag> + <item> + <p>Dump the call graph into the specified file whose format is + determined by the filename extension. Supported extensions are: + <c>raw</c>, <c>dot</c>, and <c>ps</c>. If something else is used as + filename extension, default format <c>.raw</c> is used.</p> + </item> + <tag><c>files_or_dirs</c> (for backward compatibility also + as <c>-c files_or_dirs</c>)</tag> + <item> + <p>Use Dialyzer from the command line to detect defects in the + specified files or directories containing <c>.erl</c> or + <c>.beam</c> files, depending on the type of the + analysis.</p> + </item> + <tag><c>--fullpath</c></tag> + <item> + <p>Display the full path names of files for which warnings are + emitted.</p> + </item> + <tag><c>--get_warnings</c></tag> + <item> + <p>Make Dialyzer emit warnings even when manipulating the PLT. + Warnings are only emitted for files that are analyzed.</p> + </item> + <tag><c>--gui</c></tag> + <item> + <p>Use the GUI.</p></item> + <tag><c>--help</c> (or <c>-h</c>)</tag> + <item> + <p>Print this message and exit.</p> + </item> + <tag><c>-I include_dir</c></tag> + <item> + <p>When analyzing from source, pass the <c>include_dir</c> + to Dialyzer. (**)</p> + </item> + <tag><c>--no_check_plt</c></tag> + <item> + <p>Skip the PLT check when running Dialyzer. This is useful when + working with installed PLTs that never change.</p> + </item> + <tag><c>--no_native</c> (or <c>-nn</c>)</tag> + <item> + <p>Bypass the native code compilation of some key files that + Dialyzer heuristically performs when dialyzing many files. + This avoids the compilation time, but can result in (much) longer + analysis time.</p> + </item> + <tag><c>--no_native_cache</c></tag> + <item> + <p>By default, Dialyzer caches the results of native compilation + in directory <c>$XDG_CACHE_HOME/erlang/dialyzer_hipe_cache</c>. + <c>XDG_CACHE_HOME</c> defaults to <c>$HOME/.cache</c>. + Use this option to disable caching.</p> + </item> + <tag><c>-o outfile</c> (or + <c>--output outfile</c>)</tag> + <item> + <p>When using Dialyzer from the command line, send the analysis + results to the specified outfile rather than to <c>stdout</c>.</p> + </item> + <tag><c>--output_plt file</c></tag> + <item> + <p>Store the PLT at the specified file after building it.</p> + </item> + <tag><c>-pa dir</c></tag> + <item> + <p>Include <c>dir</c> in the path for Erlang. This is useful + when analyzing files that have <c>-include_lib()</c> + directives.</p> + </item> + <tag><c>--plt plt</c></tag> + <item> + <p>Use the specified PLT as the initial PLT. If the PLT was built + during setup, the files are checked for consistency.</p> + </item> + <tag><c>--plt_info</c></tag> + <item> + <p>Make Dialyzer print information about the PLT and then quit. + The PLT can be specified with <c>--plt(s)</c>.</p> + </item> + <tag><c>--plts plt*</c></tag> + <item> + <p>Merge the specified PLTs to create the initial PLT. This requires + that the PLTs are disjoint (that is, do not have any module + appearing in more than one PLT). + The PLTs are created in the usual way:</p> <code type="none"> - dialyzer --build_plt --output_plt plt_1 files_to_include - ... - dialyzer --build_plt --output_plt plt_n files_to_include</code> - and then can be used in either of the following ways: +dialyzer --build_plt --output_plt plt_1 files_to_include +... +dialyzer --build_plt --output_plt plt_n files_to_include</code> + <p>They can then be used in either of the following ways:</p> <code type="none"> - dialyzer files_to_analyze --plts plt_1 ... plt_n</code> - or: +dialyzer files_to_analyze --plts plt_1 ... plt_n</code> + <p>or</p> <code type="none"> - dialyzer --plts plt_1 ... plt_n -- files_to_analyze</code> - (Note the -- delimiter in the second case)</item> - <tag><c><![CDATA[-Wwarn]]></c></tag> - <item>A family of options which selectively turn on/off warnings - (for help on the names of warnings use - <c><![CDATA[dialyzer -Whelp]]></c>). - Note that the options can also be given in the file with a - <c>-dialyzer()</c> attribute. See <seealso - marker="#suppression">Requesting or Suppressing Warnings in - Source Files</seealso> below for details.</item> - <tag><c><![CDATA[--shell]]></c></tag> - <item>Do not disable the Erlang shell while running the GUI.</item> - <tag><c><![CDATA[--version]]></c> (or <c><![CDATA[-v]]></c>)</tag> - <item>Print the Dialyzer version and some more information and - exit.</item> - <tag><c><![CDATA[--help]]></c> (or <c><![CDATA[-h]]></c>)</tag> - <item>Print this message and exit.</item> - <tag><c><![CDATA[--quiet]]></c> (or <c><![CDATA[-q]]></c>)</tag> - <item>Make Dialyzer a bit more quiet.</item> - <tag><c><![CDATA[--verbose]]></c></tag> - <item>Make Dialyzer a bit more verbose.</item> - <tag><c><![CDATA[--statistics]]></c></tag> - <item>Prints information about the progress of execution (analysis phases, - time spent in each and size of the relative input).</item> - <tag><c><![CDATA[--build_plt]]></c></tag> - <item>The analysis starts from an empty plt and creates a new one from - the files specified with <c><![CDATA[-c]]></c> and - <c><![CDATA[-r]]></c>. Only works for beam files. Use - <c><![CDATA[--plt]]></c> or <c><![CDATA[--output_plt]]></c> to - override the default plt location.</item> - <tag><c><![CDATA[--add_to_plt]]></c></tag> - <item>The plt is extended to also include the files specified with - <c><![CDATA[-c]]></c> and <c><![CDATA[-r]]></c>. Use - <c><![CDATA[--plt]]></c> to specify which plt to start from, - and <c><![CDATA[--output_plt]]></c> to specify where to put the plt. - Note that the analysis might include files from the plt if they depend - on the new files. This option only works with beam files.</item> - <tag><c><![CDATA[--remove_from_plt]]></c></tag> - <item>The information from the files specified with - <c><![CDATA[-c]]></c> and <c><![CDATA[-r]]></c> is removed - from the plt. Note that this may cause a re-analysis of the remaining - dependent files.</item> - <tag><c><![CDATA[--check_plt]]></c></tag> - <item>Check the plt for consistency and rebuild it if it is not - up-to-date.</item> - <tag><c><![CDATA[--no_check_plt]]></c></tag> - <item>Skip the plt check when running Dialyzer. Useful when working with - installed plts that never change.</item> - <tag><c><![CDATA[--plt_info]]></c></tag> - <item>Make Dialyzer print information about the plt and then quit. The - plt can be specified with <c><![CDATA[--plt(s)]]></c>.</item> - <tag><c><![CDATA[--get_warnings]]></c></tag> - <item>Make Dialyzer emit warnings even when manipulating the plt. - Warnings are only emitted for files that are actually analyzed.</item> - <tag><c><![CDATA[--dump_callgraph file]]></c></tag> - <item>Dump the call graph into the specified file whose format is - determined by the file name extension. Supported extensions are: raw, - dot, and ps. If something else is used as file name extension, default - format '.raw' will be used.</item> - <tag><c><![CDATA[--no_native]]></c> (or <c><![CDATA[-nn]]></c>)</tag> - <item>Bypass the native code compilation of some key files that Dialyzer - heuristically performs when dialyzing many files; this avoids the - compilation time but it may result in (much) longer analysis - time.</item> - <tag><c><![CDATA[--no_native_cache]]></c></tag> - <item>By default, Dialyzer caches the results of native compilation in the - <c>$XDG_CACHE_HOME/erlang/dialyzer_hipe_cache</c> directory. - <c>XDG_CACHE_HOME</c> defaults to <c>$HOME/.cache</c>. - Use this option to disable caching.</item> - <tag><c><![CDATA[--fullpath]]></c></tag> - <item>Display the full path names of files for which warnings are emitted.</item> - <tag><c><![CDATA[--gui]]></c></tag> - <item>Use the GUI.</item> +dialyzer --plts plt_1 ... plt_n -- files_to_analyze</code> + <p>Notice the <c>--</c> delimiter in the second case.</p> + </item> + <tag><c>--quiet</c> (or <c>-q</c>)</tag> + <item> + <p>Make Dialyzer a bit more quiet.</p> + </item> + <tag><c>-r dirs</c></tag> + <item> + <p>Same as <c>files_or_dirs</c>, but the specified + directories are searched + recursively for subdirectories containing <c>.erl</c> or + <c>.beam</c> files in them, depending on the type of + analysis.</p> + </item> + <tag><c>--raw</c></tag> + <item> + <p>When using Dialyzer from the command line, output the raw + analysis results (Erlang terms) instead of the formatted result. + The raw format + is easier to post-process (for example, to filter warnings or to + output HTML pages).</p> + </item> + <tag><c>--remove_from_plt</c></tag> + <item> + <p>The information from the files specified with + <c>-c</c> and <c>-r</c> is removed from + the PLT. Notice that this can cause a reanalysis of the remaining + dependent files.</p> + </item> + <tag><c>--shell</c></tag> + <item> + <p>Do not disable the Erlang shell while running the GUI.</p> + </item> + <tag><c>--src</c></tag> + <item> + <p>Override the default, which is to analyze BEAM files, and + analyze starting from Erlang source code instead.</p> + </item> + <tag><c>--statistics</c></tag> + <item> + <p>Print information about the progress of execution (analysis phases, + time spent in each, and size of the relative input).</p> + </item> + <tag><c>--verbose</c></tag> + <item> + <p>Make Dialyzer a bit more verbose.</p> + </item> + <tag><c>--version</c> (or <c>-v</c>)</tag> + <item> + <p>Print the Dialyzer version and some more information and + exit.</p> + </item> + <tag><c>-Wwarn</c></tag> + <item> + <p>A family of options that selectively turn on/off warnings. + (For help on the names of warnings, use + <c>dialyzer -Whelp</c>.) + Notice that the options can also be specified in the file with a + <c>-dialyzer()</c> attribute. For details, see section <seealso + marker="#suppression">Requesting or Suppressing Warnings in + Source Files</seealso>.</p> + </item> </taglist> + <note> - <p>* denotes that multiple occurrences of these options are possible.</p> - <p>** options <c><![CDATA[-D]]></c> and <c><![CDATA[-I]]></c> work both from command-line and in the Dialyzer GUI; - the syntax of defines and includes is the same as that used by <c><![CDATA[erlc]]></c>.</p> + <p>** options <c>-D</c> and <c>-I</c> work both + from the command line and in the Dialyzer GUI; the syntax of + defines and includes is the same as that used by + <seealso marker="erts:erlc">erlc(1)</seealso>.</p> </note> - <p>Warning options:</p> + + <p><em>Warning options:</em></p> + <taglist> - <tag><c><![CDATA[-Wno_return]]></c></tag> - <item>Suppress warnings for functions that will never return a - value.</item> - <tag><c><![CDATA[-Wno_unused]]></c></tag> - <item>Suppress warnings for unused functions.</item> - <tag><c><![CDATA[-Wno_improper_lists]]></c></tag> - <item>Suppress warnings for construction of improper lists.</item> - <tag><c><![CDATA[-Wno_fun_app]]></c></tag> - <item>Suppress warnings for fun applications that will fail.</item> - <tag><c><![CDATA[-Wno_match]]></c></tag> - <item>Suppress warnings for patterns that are unused or cannot - match.</item> - <tag><c><![CDATA[-Wno_opaque]]></c></tag> - <item>Suppress warnings for violations of opaqueness of data types.</item> - <tag><c><![CDATA[-Wno_fail_call]]></c></tag> - <item>Suppress warnings for failing calls.</item> - <tag><c><![CDATA[-Wno_contracts]]></c></tag> - <item>Suppress warnings about invalid contracts.</item> - <tag><c><![CDATA[-Wno_behaviours]]></c></tag> - <item>Suppress warnings about behaviour callbacks which drift from the - published recommended interfaces.</item> - <tag><c><![CDATA[-Wno_missing_calls]]></c></tag> - <item>Suppress warnings about calls to missing functions.</item> - <tag><c><![CDATA[-Wno_undefined_callbacks]]></c></tag> - <item>Suppress warnings about behaviours that have no - <c>-callback</c> attributes for their callbacks.</item> - <tag><c><![CDATA[-Wunmatched_returns]]></c>***</tag> - <item>Include warnings for function calls which ignore a structured return - value or do not match against one of many possible return - value(s).</item> - <tag><c><![CDATA[-Werror_handling]]></c>***</tag> - <item>Include warnings for functions that only return by means of an - exception.</item> - <tag><c><![CDATA[-Wrace_conditions]]></c>***</tag> - <item>Include warnings for possible race conditions. Note that the - analysis that finds data races performs intra-procedural data flow analysis - and can sometimes explode in time. Enable it at your own risk. - </item> - <tag><c><![CDATA[-Wunderspecs]]></c>***</tag> - <item>Warn about underspecified functions - (the -spec is strictly more allowing than the success typing).</item> - <tag><c><![CDATA[-Wunknown]]></c>***</tag> - <item>Let warnings about unknown functions and types affect the - exit status of the command line version. The default is to ignore - warnings about unknown functions and types when setting the exit - status. When using the Dialyzer from Erlang, warnings about unknown - functions and types are returned; the default is not to return - these warnings.</item> + <tag><c>-Werror_handling</c> (***)</tag> + <item> + <p>Include warnings for functions that only return by an exception.</p> + </item> + <tag><c>-Wno_behaviours</c></tag> + <item> + <p>Suppress warnings about behavior callbacks that drift from the + published recommended interfaces.</p> + </item> + <tag><c>-Wno_contracts</c></tag> + <item> + <p>Suppress warnings about invalid contracts.</p> + </item> + <tag><c>-Wno_fail_call</c></tag> + <item> + <p>Suppress warnings for failing calls.</p> + </item> + <tag><c>-Wno_fun_app</c></tag> + <item> + <p>Suppress warnings for fun applications that will fail.</p> + </item> + <tag><c>-Wno_improper_lists</c></tag> + <item> + <p>Suppress warnings for construction of improper lists.</p> + </item> + <tag><c>-Wno_match</c></tag> + <item> + <p>Suppress warnings for patterns that are unused or cannot match.</p> + </item> + <tag><c>-Wno_missing_calls</c></tag> + <item> + <p>Suppress warnings about calls to missing functions.</p> + </item> + <tag><c>-Wno_opaque</c></tag> + <item> + <p>Suppress warnings for violations of opaqueness of data types.</p> + </item> + <tag><c>-Wno_return</c></tag> + <item> + <p>Suppress warnings for functions that will never return a value.</p> + </item> + <tag><c>-Wno_undefined_callbacks</c></tag> + <item> + <p>Suppress warnings about behaviors that have no + <c>-callback</c> attributes for their callbacks.</p> + </item> + <tag><c>-Wno_unused</c></tag> + <item> + <p>Suppress warnings for unused functions.</p> + </item> + <tag><c>-Wrace_conditions</c> (***)</tag> + <item> + <p>Include warnings for possible race conditions. Notice that the + analysis that finds data races performs intra-procedural data flow + analysis and can sometimes explode in time. Enable it at your own + risk.</p> + </item> + <tag><c>-Wunderspecs</c> (***)</tag> + <item> + <p>Warn about underspecified functions (the specification is strictly + more allowing than the success typing).</p> + </item> + <tag><c>-Wunknown</c> (***)</tag> + <item> + <p>Let warnings about unknown functions and types affect the + exit status of the command-line version. The default is to ignore + warnings about unknown functions and types when setting the exit + status. When using Dialyzer from Erlang, warnings about unknown + functions and types are returned; the default is not to return + these warnings.</p> + </item> + <tag><c>-Wunmatched_returns</c> (***)</tag> + <item> + <p>Include warnings for function calls that ignore a structured return + value or do not match against one of many possible return + value(s).</p> + </item> </taglist> - <p>The following options are also available but their use is not - recommended: (they are mostly for Dialyzer developers and internal - debugging)</p> + + <p>The following options are also available, but their use is not + recommended (they are mostly for Dialyzer developers and internal + debugging):</p> + <taglist> - <tag><c><![CDATA[-Woverspecs]]></c>***</tag> - <item>Warn about overspecified functions - (the -spec is strictly less allowing than the success typing).</item> - <tag><c><![CDATA[-Wspecdiffs]]></c>***</tag> - <item>Warn when the -spec is different than the success typing.</item> + <tag><c>-Woverspecs</c> (***)</tag> + <item> + <p>Warn about overspecified functions (the specification is strictly + less allowing than the success typing).</p> + </item> + <tag><c>-Wspecdiffs</c> (***)</tag> + <item> + <p>Warn when the specification is different than the success typing.</p> + </item> </taglist> + <note> - <p>*** Identifies options that turn on warnings rather than - turning them off.</p> + <p>*** denotes options that turn on warnings rather than + turning them off.</p> </note> </section> <section> - <title>Using the Dialyzer from Erlang</title> - <p>You can also use Dialyzer directly from Erlang. Both the GUI and the - command line versions are available. The options are similar to the ones - given from the command line, so please refer to the sections above for - a description of these.</p> + <title>Using Dialyzer from Erlang</title> + <p>Dialyzer can be used directly from Erlang. Both the GUI and the + command-line versions are also available. The options are similar to the + ones given from the command line, see section + <seealso marker="#command_line"> + Using Dialyzer from the Command Line</seealso>.</p> </section> <section> <marker id="suppression"></marker> <title>Requesting or Suppressing Warnings in Source Files</title> - <p> - The <c>-dialyzer()</c> attribute can be used for turning off + <p>Attribute <c>-dialyzer()</c> can be used for turning off warnings in a module by specifying functions or warning options. For example, to turn off all warnings for the function - <c>f/0</c>, include the following line: - </p> -<code type="none"> --dialyzer({nowarn_function, f/0}). -</code> + <c>f/0</c>, include the following line:</p> + + <code type="none"> +-dialyzer({nowarn_function, f/0}).</code> + <p>To turn off warnings for improper lists, add the following line - to the source file: - </p> -<code type="none"> --dialyzer(no_improper_lists). -</code> - <p>The <c>-dialyzer()</c> attribute is allowed after function - declarations. Lists of warning options or functions are allowed: - </p> -<code type="none"> --dialyzer([{nowarn_function, [f/0]}, no_improper_lists]). -</code> - <p> - Warning options can be restricted to functions: - </p> -<code type="none"> --dialyzer({no_improper_lists, g/0}). -</code> -<code type="none"> --dialyzer({[no_return, no_match], [g/0, h/0]}). -</code> - <p> - For help on the warning options use <c>dialyzer -Whelp</c>. The - options are also enumerated <seealso - marker="#gui/1">below</seealso> (<c>WarnOpts</c>). - </p> + to the source file:</p> + + <code type="none"> +-dialyzer(no_improper_lists).</code> + + <p>Attribute <c>-dialyzer()</c> is allowed after function + declarations. Lists of warning options or functions are allowed:</p> + + <code type="none"> +-dialyzer([{nowarn_function, [f/0]}, no_improper_lists]).</code> + + <p>Warning options can be restricted to functions:</p> + + <code type="none"> +-dialyzer({no_improper_lists, g/0}).</code> + + <code type="none"> +-dialyzer({[no_return, no_match], [g/0, h/0]}).</code> + + <p>For help on the warning options, use <c>dialyzer -Whelp</c>. The + options are also enumerated, see function <seealso marker="#gui/1"> + <c>gui/1</c></seealso> below (<c>WarnOpts</c>).</p> + <note> - <p> - The <c>-dialyzer()</c> attribute is not checked by the Erlang - Compiler, but by the Dialyzer itself. - </p> + <p>Attribute <c>-dialyzer()</c> is not checked by the Erlang + compiler, but by Dialyzer itself.</p> </note> + <note> - <p> - The warning option <c>-Wrace_conditions</c> has no effect when - set in source files. - </p> + <p>Warning option <c>-Wrace_conditions</c> has no effect when + set in source files.</p> </note> - <p> - The <c>-dialyzer()</c> attribute can also be used for turning on - warnings. For instance, if a module has been fixed regarding - unmatched returns, adding the line - </p> -<code type="none"> --dialyzer(unmatched_returns). -</code> - <p> - can help in assuring that no new unmatched return warnings are - introduced. - </p> + + <p>Attribute <c>-dialyzer()</c> can also be used for turning on + warnings. For example, if a module has been fixed regarding + unmatched returns, adding the following line can help in assuring + that no new unmatched return warnings are introduced:</p> + + <code type="none"> +-dialyzer(unmatched_returns).</code> </section> <funcs> <func> + <name>format_warning(Msg) -> string()</name> + <fsummary>Get the string version of a warning message.</fsummary> + <type> + <v>Msg = {Tag, Id, msg()}</v> + <d>See <c>run/1</c>.</d> + </type> + <desc> + <p>Get a string from warnings as returned by + <seealso marker="#run/1"><c>run/1</c></seealso>.</p> + </desc> + </func> + + <func> <name>gui() -> ok | {error, Msg}</name> <name>gui(OptList) -> ok | {error, Msg}</name> - <fsummary>Dialyzer GUI version</fsummary> + <fsummary>Dialyzer GUI version.</fsummary> <type> - <v>OptList -- see below</v> + <v>OptList</v> + <d>See below.</d> </type> <desc> <p>Dialyzer GUI version.</p> @@ -368,9 +504,12 @@ OptList :: [Option] Option :: {files, [Filename :: string()]} | {files_rec, [DirName :: string()]} | {defines, [{Macro :: atom(), Value :: term()}]} - | {from, src_code | byte_code} %% Defaults to byte_code - | {init_plt, FileName :: string()} %% If changed from default - | {plts, [FileName :: string()]} %% If changed from default + | {from, src_code | byte_code} + %% Defaults to byte_code + | {init_plt, FileName :: string()} + %% If changed from default + | {plts, [FileName :: string()]} + %% If changed from default | {include_dirs, [DirName :: string()]} | {output_file, FileName :: string()} | {output_plt, FileName :: string()} @@ -383,76 +522,71 @@ Option :: {files, [Filename :: string()]} | {warnings, [WarnOpts]} | {get_warnings, bool()} -WarnOpts :: no_return - | no_unused - | no_improper_lists +WarnOpts :: error_handling + | no_behaviours + | no_contracts + | no_fail_call | no_fun_app + | no_improper_lists | no_match + | no_missing_calls | no_opaque - | no_fail_call - | no_contracts - | no_behaviours + | no_return | no_undefined_callbacks - | unmatched_returns - | error_handling + | no_unused | race_conditions - | overspecs | underspecs - | specdiffs - | unknown</code> + | unknown + | unmatched_returns + | overspecs + | specdiffs</code> </desc> </func> + <func> - <name>run(OptList) -> Warnings</name> - <fsummary>Dialyzer command line version</fsummary> - <type> - <v>OptList -- see gui/0,1</v> - <v>Warnings -- see below </v> - </type> + <name>plt_info(string()) -> {'ok', [{atom(), any()}]} | {'error', atom()}</name> + <fsummary>Return information about the specified PLT.</fsummary> <desc> - <p>Dialyzer command line version.</p> - <code type="none"> -Warnings :: [{Tag, Id, Msg}] -Tag :: 'warn_behaviour' - | 'warn_bin_construction' - | 'warn_callgraph' - | 'warn_contract_not_equal' - | 'warn_contract_range' - | 'warn_contract_subtype' - | 'warn_contract_supertype' - | 'warn_contract_syntax' - | 'warn_contract_types' - | 'warn_failing_call' - | 'warn_fun_app' - | 'warn_matching' - | 'warn_non_proper_list' - | 'warn_not_called' - | 'warn_opaque' - | 'warn_race_condition' - | 'warn_return_no_exit' - | 'warn_return_only_exit' - | 'warn_umatched_return' - | 'warn_undefined_callbacks' - | 'warn_unknown' -Id = {File :: string(), Line :: integer()} -Msg = msg() -- Undefined</code> + <p>Returns information about the specified PLT.</p> </desc> </func> + <func> - <name>format_warning(Msg) -> string()</name> - <fsummary>Get the string version of a warning message.</fsummary> + <name>run(OptList) -> Warnings</name> + <fsummary>Dialyzer command-line version.</fsummary> <type> - <v>Msg = {Tag, Id, msg()} -- See run/1</v> + <v>OptList</v> + <d>See <c>gui/0,1</c>.</d> + <v>Warnings</v> + <d>See below.</d> </type> <desc> - <p>Get a string from warnings as returned by dialyzer:run/1.</p> - </desc> - </func> - <func> - <name>plt_info(string()) -> {'ok', [{atom(), any()}]} | {'error', atom()}</name> - <fsummary>Returns information about the specified plt.</fsummary> - <desc> - <p>Returns information about the specified plt.</p> + <p>Dialyzer command-line version.</p> + <code type="none"> +Warnings :: [{Tag, Id, Msg}] +Tag :: 'warn_behaviour' + | 'warn_bin_construction' + | 'warn_callgraph' + | 'warn_contract_not_equal' + | 'warn_contract_range' + | 'warn_contract_subtype' + | 'warn_contract_supertype' + | 'warn_contract_syntax' + | 'warn_contract_types' + | 'warn_failing_call' + | 'warn_fun_app' + | 'warn_matching' + | 'warn_non_proper_list' + | 'warn_not_called' + | 'warn_opaque' + | 'warn_race_condition' + | 'warn_return_no_exit' + | 'warn_return_only_exit' + | 'warn_umatched_return' + | 'warn_undefined_callbacks' + | 'warn_unknown' +Id = {File :: string(), Line :: integer()} +Msg = msg() -- Undefined</code> </desc> </func> </funcs> diff --git a/lib/dialyzer/doc/src/dialyzer_chapter.xml b/lib/dialyzer/doc/src/dialyzer_chapter.xml index c445f2633f..b5acf3732e 100644 --- a/lib/dialyzer/doc/src/dialyzer_chapter.xml +++ b/lib/dialyzer/doc/src/dialyzer_chapter.xml @@ -25,196 +25,211 @@ <title>Dialyzer</title> <prepared></prepared> <docno></docno> - <date></date> + <date>2016-09-19</date> <rev></rev> <file>dialyzer_chapter.xml</file> </header> <section> <title>Introduction</title> - <p><em>Dialyzer</em> is a static analysis tool that identifies software discrepancies - such as type errors, unreachable code, unnecessary tests, etc in single Erlang modules - or entire (sets of) applications.</p> - </section> - - <section> - <title>Using the Dialyzer from the GUI</title> - <section> - <title>Choosing the applications or modules</title> - <p>In the "File" window you will find a listing of the current directory. - Click your way to the directories/modules you want to add or type the - correct path in the entry.</p> - <p>Mark the directories/modules you want to analyze for discrepancies and - click "Add". You can either add the <c><![CDATA[.beam]]></c> and <c><![CDATA[.erl]]></c>-files directly, or - you can add directories that contain these kinds of files. Note that - you are only allowed to add the type of files that can be analyzed in - the current mode of operation (see below), and that you cannot mix - <c><![CDATA[.beam]]></c> and <c><![CDATA[.erl]]></c>-files.</p> + <title>Scope</title> + <p>Dialyzer is a static analysis tool that identifies software + discrepancies, such as definite type errors, code that has become dead + or unreachable because of programming error, and unnecessary tests, + in single Erlang modules or entire (sets of) applications.</p> + + <p>Dialyzer can be called from the command line, from Erlang, + and from a GUI.</p> </section> <section> - <title>The analysis modes</title> - <p>Dialyzer has two modes of analysis, "Byte Code" or "Source Code". - These are controlled by the buttons in the top-middle part of the - main window, under "Analysis Options".</p> - </section> - - <section> - <title>Controlling the discrepancies reported by the Dialyzer</title> - <p>Under the "Warnings" pull-down menu, there are buttons that control - which discrepancies are reported to the user in the "Warnings" window. - By clicking on these buttons, one can enable/disable a whole class of - warnings. Information about the classes of warnings can be found on - the "Warnings" item under the "Help" menu (at the rightmost top corner).</p> - <p>If modules are compiled with inlining, spurious warnings may be emitted. - In the "Options" menu you can choose to ignore inline-compiled modules - when analyzing byte code. When starting from source code this is not a - problem since the inlining is explicitly turned off by Dialyzer. The - option causes Dialyzer to suppress all warnings from inline-compiled - modules, since there is currently no way for Dialyzer to find what - parts of the code have been produced by inlining. </p> + <title>Prerequisites</title> + <p>It is assumed that the reader is familiar with the Erlang programming + language.</p> </section> + </section> - <section> - <title>Running the analysis</title> - <p>Once you have chosen the modules or directories you want to analyze, - click the "Run" button to start the analysis. If for some reason you - want to stop the analysis while it is running, push the "Stop" button.</p> - <p>The information from the analysis will be displayed in the Log and the - Warnings windows.</p> - </section> + <section> + <marker id="plt"/> + <title>The Persistent Lookup Table</title> + <p>Dialyzer stores the result of an analysis in a Persistent + Lookup Table (PLT). The PLT can then be used as a starting + point for later analyses. It is recommended to build a PLT with the + Erlang/OTP applications that you are using, but also to include your + own applications that you are using frequently.</p> + + <p>The PLT is built using option <c>--build_plt</c> to Dialyzer. + The following command builds the recommended minimal PLT for + Erlang/OTP:</p> - <section> - <title>Include directories and macro definitions</title> - <p>When analyzing from source you might have to supply Dialyzer with a - list of include directories and macro definitions (as you can do with - the <c><![CDATA[erlc]]></c> flags <c><![CDATA[-I]]></c> and <c><![CDATA[-D]]></c>). This can be done either by starting Dialyzer - with these flags from the command line as in:</p> - <code type="none"> + <code type="none"> +dialyzer --build_plt --apps erts kernel stdlib mnesia</code> - dialyzer -I my_includes -DDEBUG -Dvsn=42 -I one_more_dir - </code> - <p>or by adding these explicitly using the "Manage Macro Definitions" or - "Manage Include Directories" sub-menus in the "Options" menu.</p> - </section> + <p>Dialyzer looks if there is an environment variable called + <c>DIALYZER_PLT</c> and places the PLT at this location. If no such + variable is set, Dialyzer places the PLT at + <c>$HOME/.dialyzer_plt</c>. The placement can also be specified using + the options <c>--plt</c> or <c>--output_plt</c>.</p> - <section> - <title>Saving the information on the Log and Warnings windows</title> - <p>In the "File" menu there are options to save the contents of the Log - and the Warnings window. Just choose the options and enter the file to - save the contents in.</p> - <p>There are also buttons to clear the contents of each window.</p> - </section> + <p>Information can be added to an existing PLT using option + <c>--add_to_plt</c>. If you also want to include the Erlang compiler in + the PLT and place it in a new PLT, then use the following command:</p> - <section> - <title>Inspecting the inferred types of the analyzed functions</title> - <p>Dialyzer stores the information of the analyzed functions in a - Persistent Lookup Table (PLT). After an analysis you can inspect this - information. In the PLT menu you can choose to either search the PLT - or inspect the contents of the whole PLT. The information is presented - in edoc format.</p> - </section> - </section> + <code type="none"> +dialyzer --add_to_plt --apps compiler --output_plt my.plt</code> - <section> - <title>Using the Dialyzer from the command line</title> - <p>See <seealso marker="dialyzer">dialyzer(3)</seealso>.</p> - </section> + <p>Then you can add your favorite application my_app to the new + PLT:</p> - <section> - <title>Using the Dialyzer from Erlang</title> - <p>See <seealso marker="dialyzer">dialyzer(3)</seealso>.</p> - </section> + <code type="none"> +dialyzer --add_to_plt --plt my.plt -r my_app/ebin</code> - <section> - <title>More on the Persistent Lookup Table (PLT)</title> + <p>But you realize that it is unnecessary to have the Erlang compiler in this + one:</p> - <p> The persistent lookup table, or PLT, is used to store the - result of an analysis. The PLT can then be used as a starting - point for later analyses. It is recommended to build a PLT with - the otp applications that you are using, but also to include your - own applications that you are using frequently.</p> + <code type="none"> +dialyzer --remove_from_plt --plt my.plt --apps compiler</code> - <p>The PLT is built using the --build_plt option to dialyzer. The - following command builds the recommended minimal PLT for OTP.</p> + <p>Later, when you have fixed a bug in your application my_app, + you want to update the PLT so that it becomes fresh the next time + you run Dialyzer. In this case, run the following command:</p> <code type="none"> +dialyzer --check_plt --plt my.plt</code> - dialyzer --build_plt -r $ERL_TOP/lib/stdlib/ebin\ - $ERL_TOP/lib/kernel/ebin \ - $ERL_TOP/lib/mnesia/ebin - </code> + <p>Dialyzer then reanalyzes the changed files + and the files that depend on these files. Notice that this + consistency check is performed automatically the next time you + run Dialyzer with this PLT. Option <c>--check_plt</c> is only + for doing so without doing any other analysis.</p> - <p>Dialyzer will look if there is an environment variable called - $DIALYZER_PLT and place the PLT at this location. If no such - variable is set, Dialyzer will place the PLT at - $HOME/.dialyzer_plt. The placement can also be specified using the - --plt, or --output_plt options.</p> - - <p>You can also add information to an existing plt using the - --add_to_plt option. Suppose you want to also include the compiler - in the PLT and place it in a new PLT, then give the command</p> + <p>To get information about a PLT, use the following option:</p> <code type="none"> +dialyzer --plt_info</code> - dialyzer --add_to_plt -r $ERL_TOP/lib/compiler/ebin --output_plt my.plt - </code> + <p>To specify which PLT, use option <c>--plt</c>.</p> - <p>Then you would like to add your favorite application my_app to - the new plt.</p> + <p>To get the output printed to a file, use option <c>--output_file</c>.</p> - <code type="none"> + <p>Notice that when manipulating the PLT, no warnings are + emitted. To turn on warnings during (re)analysis of the PLT, use + option <c>--get_warnings</c>.</p> + </section> - dialyzer --add_to_plt --plt my.plt -r my_app/ebin - </code> + <section> + <title>Using Dialyzer from the Command Line</title> + <p>Dialyzer has a command-line version for automated use. + See <seealso marker="dialyzer"><c>dialyzer(3)</c></seealso>.</p> + </section> - <p>But you realize that it is unnecessary to have compiler in this one.</p> + <section> + <title>Using Dialyzer from Erlang</title> + <p>Dialyzer can also be used directly from Erlang. + See <seealso marker="dialyzer"><c>dialyzer(3)</c></seealso>.</p> + </section> - <code type="none"> + <section> + <marker id="dialyzer_gui"/> + <title>Using Dialyzer from the GUI</title> + <section> + <title>Choosing the Applications or Modules</title> + <p>The <em>File</em> window displays a listing of the current directory. + Click your way to the directories/modules you want to add or type the + correct path in the entry.</p> - dialyzer --remove_from_plt --plt my.plt -r $ERL_TOP/lib/compiler/ebin - </code> + <p>Mark the directories/modules you want to analyze for discrepancies and + click <em>Add</em>. You can either add the <c>.beam</c> and + <c>.erl</c> files directly, or add directories that contain + these kind of files. Notice that + you are only allowed to add the type of files that can be analyzed in + the current mode of operation (see below), and that you cannot mix + <c>.beam</c> and <c>.erl</c> files.</p> + </section> - <p> Later, when you have fixed a bug in your application my_app, - you want to update the plt so that it will be fresh the next time - you run Dialyzer, run the command</p> + <section> + <title>Analysis Modes</title> + <p>Dialyzer has two analysis modes: "Byte Code" and "Source Code". + They are controlled by the buttons in the top-middle part of the + main window, under <em>Analysis Options</em>.</p> + </section> - <code type="none"> + <section> + <title>Controlling the Discrepancies Reported by Dialyzer</title> + <p>Under the <em>Warnings</em> pull-down menu, there are buttons that + control which discrepancies are reported to the user in the + <em>Warnings</em> window. By clicking these buttons, you can + enable/disable a whole class of warnings. Information about the classes + of warnings is found on the "Warnings" item under the <em>Help</em> + menu (in the rightmost top corner).</p> + + <p>If modules are compiled with inlining, spurious warnings can be + emitted. In the <em>Options</em> menu you can choose to ignore + inline-compiled modules when analyzing byte code. + When starting from source code, this is not a problem because + inlining is explicitly turned off by Dialyzer. The option causes + Dialyzer to suppress all warnings from inline-compiled + modules, as there is currently no way for Dialyzer to find what + parts of the code have been produced by inlining.</p> + </section> - dialyzer --check_plt --plt my.plt - </code> + <section> + <title>Running the Analysis</title> + <p>Once you have chosen the modules or directories you want to analyze, + click the <em>Run</em> button to start the analysis. If you for some + reason want to stop the analysis while it is running, click the + <em>Stop</em> button.</p> - <p> Dialyzer will then reanalyze the files that have been changed, - and the files that depend on these files. Note that this - consistency check will be performed automatically the next time - you run Dialyzer with this plt. The --check_plt option is merely - for doing so without doing any other analysis.</p> + <p>The information from the analysis is displayed in the <em>Log</em> + window and the <em>Warnings</em> window.</p> + </section> - <p> To get some information about a plt use the option</p> - <code type="none"> + <section> + <title>Include Directories and Macro Definitions</title> + <p>When analyzing from source, you might have to supply Dialyzer + with a list of include directories and macro definitions (as you can do + with the <seealso marker="erts:erlc"><c>erlc</c></seealso> flags + <c>-I</c> and <c>-D</c>). This can be done + either by starting Dialyzer with these flags from the command + line as in:</p> + + <code type="none"> +dialyzer -I my_includes -DDEBUG -Dvsn=42 -I one_more_dir</code> - dialyzer --plt_info - </code> + <p>or by adding these explicitly using submenu + <em>Manage Macro Definitions</em> or + <em>Manage Include Directories</em> in the <em>Options</em> menu.</p> + </section> - <p>You can also specify which plt with the --plt option, and get the - output printed to a file with --output_file</p> + <section> + <title>Saving the Information on the Log and Warnings Windows</title> + <p>The <em>File</em> menu includes options to save the contents of the + <em>Log</em> window and the <em>Warnings</em> window. Simply choose the + options and enter the file to save the contents in.</p> - <p>Note that when manipulating the plt, no warnings are - emitted. To turn on warnings during (re)analysis of the plt, use - the option --get_warnings.</p> + <p>There are also buttons to clear the contents of each window.</p> + </section> + <section> + <title>Inspecting the Inferred Types of the Analyzed Functions</title> + <p>Dialyzer stores the information of the analyzed functions in a + Persistent Lookup Table (PLT), see section + <seealso marker="#plt">The Persistent Lookup Table</seealso>.</p> + + <p>After an analysis, you can inspect this information. + In the <em>PLT</em> menu you can choose to either search the PLT + or inspect the contents of the whole PLT. The information is presented + in <seealso marker="edoc:edoc"><c>EDoc</c></seealso> format.</p> + </section> </section> <section> - <title>Feedback and bug reports</title> - <p>At this point, we very much welcome user feedback (even wish-lists!). - If you notice something weird, especially if the Dialyzer reports any - discrepancy that is a false positive, please send an error report - describing the symptoms and how to reproduce them to:</p> - <code type="none"><![CDATA[ - ]]></code> + <title>Feedback and Bug Reports</title> + <p>We very much welcome user feedback - even wishlists! + If you notice anything weird, especially if Dialyzer reports + any discrepancy that is a false positive, please send an error report + describing the symptoms and how to reproduce them.</p> </section> </chapter> diff --git a/lib/dialyzer/doc/src/notes.xml b/lib/dialyzer/doc/src/notes.xml index 6400072b1f..b0f0a9aef0 100644 --- a/lib/dialyzer/doc/src/notes.xml +++ b/lib/dialyzer/doc/src/notes.xml @@ -32,6 +32,29 @@ <p>This document describes the changes made to the Dialyzer application.</p> +<section><title>Dialyzer 3.0.2</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> The translation of forms to types is improved for + opaque types in a few cases. </p> + <p> + Own Id: OTP-13682</p> + </item> + <item> + <p> Add warning suppression to compiler-generated case + statements. Warnings about clauses that cannot match and + are also compiler generated are suppressed unless none of + the clauses return. </p> + <p> + Own Id: OTP-13723 Aux Id: ERL-159, PR-1121 </p> + </item> + </list> + </section> + +</section> + <section><title>Dialyzer 3.0.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/dialyzer/doc/src/part.xml b/lib/dialyzer/doc/src/part.xml index 575f77549a..9bfcf21a66 100644 --- a/lib/dialyzer/doc/src/part.xml +++ b/lib/dialyzer/doc/src/part.xml @@ -25,12 +25,11 @@ <title>Dialyzer User's Guide</title> <prepared></prepared> <docno></docno> - <date></date> + <date>2016-09-19</date> <rev></rev> <file>part.xml</file> </header> <description> - <p><em>Dialyzer</em> is a static analysis tool that identifies software discrepancies such as type errors, unreachable code, unnecessary tests, etc in single Erlang modules or entire (sets of) applications.</p> </description> <xi:include href="dialyzer_chapter.xml"/> </part> diff --git a/lib/dialyzer/doc/src/ref_man.xml b/lib/dialyzer/doc/src/ref_man.xml index 01478cfb40..ddac047f2e 100644 --- a/lib/dialyzer/doc/src/ref_man.xml +++ b/lib/dialyzer/doc/src/ref_man.xml @@ -25,11 +25,10 @@ <title>Dialyzer Reference Manual</title> <prepared></prepared> <docno></docno> - <date></date> + <date>2016-09-19</date> <rev></rev> </header> <description> - <p><em>Dialyzer</em> is a static analysis tool that identifies software discrepancies such as type errors, unreachable code, unnecessary tests, etc in single Erlang modules or entire (sets of) applications.</p> </description> <xi:include href="dialyzer.xml"/> </application> diff --git a/lib/dialyzer/test/opaque_SUITE_data/dialyzer_options b/lib/dialyzer/test/opaque_SUITE_data/dialyzer_options index ffdf8270c8..06ed52043a 100644 --- a/lib/dialyzer/test/opaque_SUITE_data/dialyzer_options +++ b/lib/dialyzer/test/opaque_SUITE_data/dialyzer_options @@ -1,2 +1,2 @@ {dialyzer_options, [{warnings, [no_unused, no_return]}]}. -{time_limit, 2}. +{time_limit, 20}. diff --git a/lib/dialyzer/test/opaque_SUITE_data/results/para b/lib/dialyzer/test/opaque_SUITE_data/results/para index 8fe67e39ad..b23d0cae3a 100644 --- a/lib/dialyzer/test/opaque_SUITE_data/results/para +++ b/lib/dialyzer/test/opaque_SUITE_data/results/para @@ -19,9 +19,9 @@ para3.erl:55: Invalid type specification for function para3:t2/0. The success ty para3.erl:65: The attempt to match a term of type {{{{{para3_adt:ot1(_,_,_,_,_)}}}}} against the pattern {{{{{17}}}}} breaks the opaqueness of para3_adt:ot1(_,_,_,_,_) para3.erl:68: The pattern {{{{17}}}} can never match the type {{{{{para3_adt:ot1(_,_,_,_,_)}}}}} para3.erl:74: Invalid type specification for function para3:exp_adt/0. The success typing is () -> 3 -para4.erl:21: Invalid type specification for function para4:a/1. The success typing is (dict:dict(atom() | integer(),atom() | integer()) | para4:d_all()) -> [{atom() | integer(),atom() | integer()}] -para4.erl:26: Invalid type specification for function para4:i/1. The success typing is (dict:dict(atom() | integer(),atom() | integer()) | para4:d_all()) -> [{atom() | integer(),atom() | integer()}] -para4.erl:31: Invalid type specification for function para4:t/1. The success typing is (dict:dict(atom() | integer(),atom() | integer()) | para4:d_all()) -> [{atom() | integer(),atom() | integer()}] +para4.erl:21: Invalid type specification for function para4:a/1. The success typing is (para4:d_all() | para4:d_atom()) -> [{atom() | integer(),atom() | integer()}] +para4.erl:26: Invalid type specification for function para4:i/1. The success typing is (para4:d_all() | para4:d_integer()) -> [{atom() | integer(),atom() | integer()}] +para4.erl:31: Invalid type specification for function para4:t/1. The success typing is (para4:d_all() | para4:d_tuple()) -> [{atom() | integer(),atom() | integer()}] para4.erl:59: Attempt to test for equality between a term of type para4_adt:t(atom() | integer()) and a term of opaque type para4_adt:t(integer()) para4.erl:64: Attempt to test for equality between a term of type para4_adt:t(atom() | integer()) and a term of opaque type para4_adt:t(atom()) para4.erl:69: Attempt to test for equality between a term of type para4_adt:int(1 | 2 | 3 | 4) and a term of opaque type para4_adt:int(1 | 2) diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/hipe_vectors/hipe_ig_moves.erl b/lib/dialyzer/test/opaque_SUITE_data/src/hipe_vectors/hipe_ig_moves.erl new file mode 100644 index 0000000000..2a70606dab --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/hipe_vectors/hipe_ig_moves.erl @@ -0,0 +1,83 @@ +%% -*- erlang-indent-level: 2 -*- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +%%============================================================================= + +-module(hipe_ig_moves). +-export([new/1, + new_move/3, + get_moves/1]). + +%%----------------------------------------------------------------------------- +%% The main data structure; its fields are: +%% - movelist : mapping from temp to set of associated move numbers +%% - nrmoves : number of distinct move instructions seen so far +%% - moveinsns : list of move instructions, in descending move number order +%% - moveset : set of move instructions + +-record(ig_moves, {movelist :: movelist(), + nrmoves = 0 :: non_neg_integer(), + moveinsns = [] :: [{_,_}], + moveset = gb_sets:empty() :: gb_sets:set()}). + +-type movelist() :: hipe_vectors:vector(ordsets:ordset(non_neg_integer())). + +%%----------------------------------------------------------------------------- + +-spec new(non_neg_integer()) -> #ig_moves{}. + +new(NrTemps) -> + MoveList = hipe_vectors:new(NrTemps, ordsets:new()), + #ig_moves{movelist = MoveList}. + +-spec new_move(_, _, #ig_moves{}) -> #ig_moves{}. + +new_move(Dst, Src, IG_moves) -> + MoveSet = IG_moves#ig_moves.moveset, + MoveInsn = {Dst, Src}, + case gb_sets:is_member(MoveInsn, MoveSet) of + true -> + IG_moves; + false -> + MoveNr = IG_moves#ig_moves.nrmoves, + Movelist0 = IG_moves#ig_moves.movelist, + Movelist1 = add_movelist(MoveNr, Dst, + add_movelist(MoveNr, Src, Movelist0)), + IG_moves#ig_moves{nrmoves = MoveNr+1, + movelist = Movelist1, + moveinsns = [MoveInsn|IG_moves#ig_moves.moveinsns], + moveset = gb_sets:insert(MoveInsn, MoveSet)} + end. + +-spec add_movelist(non_neg_integer(), non_neg_integer(), movelist()) + -> movelist(). + +add_movelist(MoveNr, Temp, MoveList) -> + AssocMoves = hipe_vectors:get(MoveList, Temp), + %% XXX: MoveNr does not occur in moveList[Temp], but the new list must be an + %% ordset due to the ordsets:union in hipe_coalescing_regalloc:combine(). + hipe_vectors:set(MoveList, Temp, ordsets:add_element(MoveNr, AssocMoves)). + +-spec get_moves(#ig_moves{}) -> {movelist(), non_neg_integer(), tuple()}. + +get_moves(IG_moves) -> % -> {MoveList, NrMoves, MoveInsns} + {IG_moves#ig_moves.movelist, + IG_moves#ig_moves.nrmoves, + list_to_tuple(lists:reverse(IG_moves#ig_moves.moveinsns))}. diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/hipe_vectors/hipe_vectors.erl b/lib/dialyzer/test/opaque_SUITE_data/src/hipe_vectors/hipe_vectors.erl new file mode 100644 index 0000000000..279f244586 --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/hipe_vectors/hipe_vectors.erl @@ -0,0 +1,136 @@ +%% -*- erlang-indent-level: 2 -*- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% VECTORS IN ERLANG +%% +%% Abstract interface to vectors, indexed from 0 to size-1. + +-module(hipe_vectors). +-export([new/2, + set/3, + get/2, + size/1, + vector_to_list/1, + %% list_to_vector/1, + list/1]). + +%%-define(USE_TUPLES, true). +%%-define(USE_GBTREES, true). +-define(USE_ARRAYS, true). + +-type vector() :: vector(_). +-export_type([vector/0, vector/1]). + +-spec new(non_neg_integer(), V) -> vector(E) when V :: E. +-spec set(vector(E), non_neg_integer(), V :: E) -> vector(E). +-spec get(vector(E), non_neg_integer()) -> E. +-spec size(vector(_)) -> non_neg_integer(). +-spec vector_to_list(vector(E)) -> [E]. +%% -spec list_to_vector([E]) -> vector(E). +-spec list(vector(E)) -> [{non_neg_integer(), E}]. + +%% --------------------------------------------------------------------- + +-ifdef(USE_TUPLES). +-opaque vector(_) :: tuple(). + +new(N, V) -> + erlang:make_tuple(N, V). + +size(V) -> erlang:tuple_size(V). + +list(Vec) -> + index(tuple_to_list(Vec), 0). + +index([X|Xs],N) -> + [{N,X} | index(Xs,N+1)]; +index([],_) -> + []. + +%% list_to_vector(Xs) -> +%% list_to_tuple(Xs). + +vector_to_list(V) -> + tuple_to_list(V). + +set(Vec, Ix, V) -> + setelement(Ix+1, Vec, V). + +get(Vec, Ix) -> element(Ix+1, Vec). + +-endif. %% ifdef USE_TUPLES + +%% --------------------------------------------------------------------- + +-ifdef(USE_GBTREES). +-opaque vector(E) :: gb_trees:tree(non_neg_integer(), E). + +new(N, V) when is_integer(N), N >= 0 -> + gb_trees:from_orddict(mklist(N, V)). + +mklist(N, V) -> + mklist(0, N, V). + +mklist(M, N, V) when M < N -> + [{M, V} | mklist(M+1, N, V)]; +mklist(_, _, _) -> + []. + +size(V) -> gb_trees:size(V). + +list(Vec) -> + gb_trees:to_list(Vec). + +%% list_to_vector(Xs) -> +%% gb_trees:from_orddict(index(Xs, 0)). +%% +%% index([X|Xs], N) -> +%% [{N, X} | index(Xs, N+1)]; +%% index([],_) -> +%% []. + +vector_to_list(V) -> + gb_trees:values(V). + +set(Vec, Ix, V) -> + gb_trees:update(Ix, V, Vec). + +get(Vec, Ix) -> + gb_trees:get(Ix, Vec). + +-endif. %% ifdef USE_GBTREES + +%% --------------------------------------------------------------------- + +-ifdef(USE_ARRAYS). +-opaque vector(E) :: array:array(E). +%%-type vector(E) :: array:array(E). % Work around dialyzer bug + +new(N, V) -> array:new(N, {default, V}). +size(V) -> array:size(V). +list(Vec) -> array:to_orddict(Vec). +%% list_to_vector(Xs) -> array:from_list(Xs). +vector_to_list(V) -> array:to_list(V). +set(Vec, Ix, V) -> array:set(Ix, V, Vec). +get(Vec, Ix) -> array:get(Ix, Vec). + +-endif. %% ifdef USE_ARRAYS diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/recrec/cerl.erl b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/cerl.erl new file mode 100644 index 0000000000..a4fdbfd5f0 --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/cerl.erl @@ -0,0 +1,4602 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% + +%% ===================================================================== +%% @doc Core Erlang abstract syntax trees. +%% +%% <p> This module defines an abstract data type for representing Core +%% Erlang source code as syntax trees.</p> +%% +%% <p>A recommended starting point for the first-time user is the +%% documentation of the function <a +%% href="#type-1"><code>type/1</code></a>.</p> +%% +%% <h3><b>NOTES:</b></h3> +%% +%% <p>This module deals with the composition and decomposition of +%% <em>syntactic</em> entities (as opposed to semantic ones); its +%% purpose is to hide all direct references to the data structures +%% used to represent these entities. With few exceptions, the +%% functions in this module perform no semantic interpretation of +%% their inputs, and in general, the user is assumed to pass +%% type-correct arguments - if this is not done, the effects are not +%% defined.</p> +%% +%% <p>Currently, the internal data structure used is the same as +%% the record-based data structures used traditionally in the Beam +%% compiler.</p> +%% +%% <p>The internal representations of abstract syntax trees are +%% subject to change without notice, and should not be documented +%% outside this module. Furthermore, we do not give any guarantees on +%% how an abstract syntax tree may or may not be represented, <em>with +%% the following exceptions</em>: no syntax tree is represented by a +%% single atom, such as <code>none</code>, by a list constructor +%% <code>[X | Y]</code>, or by the empty list <code>[]</code>. This +%% can be relied on when writing functions that operate on syntax +%% trees.</p> +%% +%% @type cerl(). An abstract Core Erlang syntax tree. +%% +%% <p>Every abstract syntax tree has a <em>type</em>, given by the +%% function <a href="#type-1"><code>type/1</code></a>. In addition, +%% each syntax tree has a list of <em>user annotations</em> (cf. <a +%% href="#get_ann-1"><code>get_ann/1</code></a>), which are included +%% in the Core Erlang syntax.</p> + +-module(cerl). + +-export([abstract/1, add_ann/2, alias_pat/1, alias_var/1, + ann_abstract/2, ann_c_alias/3, ann_c_apply/3, ann_c_atom/2, + ann_c_call/4, ann_c_case/3, ann_c_catch/2, ann_c_char/2, + ann_c_clause/3, ann_c_clause/4, ann_c_cons/3, ann_c_float/2, + ann_c_fname/3, ann_c_fun/3, ann_c_int/2, ann_c_let/4, + ann_c_letrec/3, ann_c_module/4, ann_c_module/5, ann_c_nil/1, + ann_c_cons_skel/3, ann_c_tuple_skel/2, ann_c_primop/3, + ann_c_receive/2, ann_c_receive/4, ann_c_seq/3, ann_c_string/2, + ann_c_try/6, ann_c_tuple/2, ann_c_values/2, ann_c_var/2, + ann_make_data/3, ann_make_list/2, ann_make_list/3, + ann_make_data_skel/3, ann_make_tree/3, apply_args/1, + apply_arity/1, apply_op/1, atom_lit/1, atom_name/1, atom_val/1, + c_alias/2, c_apply/2, c_atom/1, c_call/3, c_case/2, c_catch/1, + c_char/1, c_clause/2, c_clause/3, c_cons/2, c_float/1, + c_fname/2, c_fun/2, c_int/1, c_let/3, c_letrec/2, c_module/3, + c_module/4, c_nil/0, c_cons_skel/2, c_tuple_skel/1, c_primop/2, + c_receive/1, c_receive/3, c_seq/2, c_string/1, c_try/5, + c_tuple/1, c_values/1, c_var/1, call_args/1, call_arity/1, + call_module/1, call_name/1, case_arg/1, case_arity/1, + case_clauses/1, catch_body/1, char_lit/1, char_val/1, + clause_arity/1, clause_body/1, clause_guard/1, clause_pats/1, + clause_vars/1, concrete/1, cons_hd/1, cons_tl/1, copy_ann/2, + data_arity/1, data_es/1, data_type/1, float_lit/1, float_val/1, + fname_arity/1, fname_id/1, fold_literal/1, from_records/1, + fun_arity/1, fun_body/1, fun_vars/1, get_ann/1, int_lit/1, + int_val/1, is_c_alias/1, is_c_apply/1, is_c_atom/1, + is_c_call/1, is_c_case/1, is_c_catch/1, is_c_char/1, + is_c_clause/1, is_c_cons/1, is_c_float/1, is_c_fname/1, + is_c_fun/1, is_c_int/1, is_c_let/1, is_c_letrec/1, is_c_list/1, + is_c_module/1, is_c_nil/1, is_c_primop/1, is_c_receive/1, + is_c_seq/1, is_c_string/1, is_c_try/1, is_c_tuple/1, + is_c_values/1, is_c_var/1, is_data/1, is_leaf/1, is_literal/1, + is_literal_term/1, is_print_char/1, is_print_string/1, + let_arg/1, let_arity/1, let_body/1, let_vars/1, letrec_body/1, + letrec_defs/1, letrec_vars/1, list_elements/1, list_length/1, + make_data/2, make_list/1, make_list/2, make_data_skel/2, + make_tree/2, meta/1, module_attrs/1, module_defs/1, + module_exports/1, module_name/1, module_vars/1, + pat_list_vars/1, pat_vars/1, primop_args/1, primop_arity/1, + primop_name/1, receive_action/1, receive_clauses/1, + receive_timeout/1, seq_arg/1, seq_body/1, set_ann/2, + string_lit/1, string_val/1, subtrees/1, to_records/1, + try_arg/1, try_body/1, try_vars/1, try_evars/1, try_handler/1, + tuple_arity/1, tuple_es/1, type/1, unfold_literal/1, + update_c_alias/3, update_c_apply/3, update_c_call/4, + update_c_case/3, update_c_catch/2, update_c_clause/4, + update_c_cons/3, update_c_cons_skel/3, update_c_fname/2, + update_c_fname/3, update_c_fun/3, update_c_let/4, + update_c_letrec/3, update_c_module/5, update_c_primop/3, + update_c_receive/4, update_c_seq/3, update_c_try/6, + update_c_tuple/2, update_c_tuple_skel/2, update_c_values/2, + update_c_var/2, update_data/3, update_list/2, update_list/3, + update_data_skel/3, update_tree/2, update_tree/3, + values_arity/1, values_es/1, var_name/1, c_binary/1, + update_c_binary/2, ann_c_binary/2, is_c_binary/1, + binary_segments/1, c_bitstr/3, c_bitstr/4, c_bitstr/5, + update_c_bitstr/5, update_c_bitstr/6, ann_c_bitstr/5, + ann_c_bitstr/6, is_c_bitstr/1, bitstr_val/1, bitstr_size/1, + bitstr_bitsize/1, bitstr_unit/1, bitstr_type/1, bitstr_flags/1, + + %% keep map exports here for now + c_map_pattern/1, + is_c_map/1, + is_c_map_pattern/1, + map_es/1, + map_arg/1, + update_c_map/3, + c_map/1, is_c_map_empty/1, + ann_c_map/2, ann_c_map/3, + ann_c_map_pattern/2, + map_pair_op/1,map_pair_key/1,map_pair_val/1, + update_c_map_pair/4, + c_map_pair/2, c_map_pair_exact/2, + ann_c_map_pair/4 + ]). + +-export_type([c_binary/0, c_bitstr/0, c_call/0, c_clause/0, c_cons/0, c_fun/0, + c_let/0, c_literal/0, c_map/0, c_map_pair/0, + c_module/0, c_tuple/0, + c_values/0, c_var/0, cerl/0, + anns/0, attrs/0, defs/0, litval/0, var_name/0]). + +-include("core_parse.hrl"). + +-type c_alias() :: #c_alias{}. +-type c_apply() :: #c_apply{}. +-type c_binary() :: #c_binary{}. +-type c_bitstr() :: #c_bitstr{}. +-type c_call() :: #c_call{}. +-type c_case() :: #c_case{}. +-type c_catch() :: #c_catch{}. +-type c_clause() :: #c_clause{}. +-type c_cons() :: #c_cons{}. +-type c_fun() :: #c_fun{}. +-type c_let() :: #c_let{}. +-type c_letrec() :: #c_letrec{}. +-type c_literal() :: #c_literal{}. +-type c_map() :: #c_map{}. +-type c_map_pair() :: #c_map_pair{}. +-type c_module() :: #c_module{}. +-type c_primop() :: #c_primop{}. +-type c_receive() :: #c_receive{}. +-type c_seq() :: #c_seq{}. +-type c_try() :: #c_try{}. +-type c_tuple() :: #c_tuple{}. +-type c_values() :: #c_values{}. +-type c_var() :: #c_var{}. + +-type cerl() :: c_alias() | c_apply() | c_binary() | c_bitstr() + | c_call() | c_case() | c_catch() | c_clause() | c_cons() + | c_fun() | c_let() | c_letrec() | c_literal() + | c_map() | c_map_pair() + | c_module() | c_primop() | c_receive() | c_seq() + | c_try() | c_tuple() | c_values() | c_var(). + +-type anns() :: [term()]. +-type attr() :: {c_literal(), c_literal()}. +-type attrs() :: [attr()]. +-type def() :: {c_var(), c_fun()}. +-type defs() :: [def()]. + +-type litval() :: atom() | bitstring() | map() | number() + | string() | tuple() | [litval()]. + +-type var_name() :: integer() | atom() | {atom(), arity()}. + + +%% ===================================================================== +%% Representation (general) +%% +%% All nodes are represented by tuples of arity 2 or (generally) +%% greater, whose first element is an atom which uniquely identifies the +%% type of the node, and whose second element is a (proper) list of +%% annotation terms associated with the node - this is by default empty. +%% +%% For most node constructor functions, there are analogous functions +%% named 'ann_...', taking one extra argument 'As' (always the first +%% argument), specifying an annotation list at node creation time. +%% Similarly, there are also functions named 'update_...', taking one +%% extra argument 'Old', specifying a node from which all fields not +%% explicitly given as arguments should be copied (generally, this is +%% the annotation field only). +%% ===================================================================== + +%% @spec type(Node::cerl()) -> atom() +%% +%% @doc Returns the type tag of <code>Node</code>. Current node types +%% are: +%% +%% <p><center><table border="1"> +%% <tr> +%% <td>alias</td> +%% <td>apply</td> +%% <td>binary</td> +%% <td>bitstr</td> +%% <td>call</td> +%% <td>case</td> +%% <td>catch</td> +%% <td>clause</td> +%% </tr><tr> +%% <td>cons</td> +%% <td>fun</td> +%% <td>let</td> +%% <td>letrec</td> +%% <td>literal</td> +%% <td>map</td> +%% <td>map_pair</td> +%% <td>module</td> +%% </tr><tr> +%% <td>primop</td> +%% <td>receive</td> +%% <td>seq</td> +%% <td>try</td> +%% <td>tuple</td> +%% <td>values</td> +%% <td>var</td> +%% </tr> +%% </table></center></p> +%% +%% <p>Note: The name of the primary constructor function for a node +%% type is always the name of the type itself, prefixed by +%% "<code>c_</code>"; recognizer predicates are correspondingly +%% prefixed by "<code>is_c_</code>". Furthermore, to simplify +%% preservation of annotations (cf. <code>get_ann/1</code>), there are +%% analogous constructor functions prefixed by "<code>ann_c_</code>" +%% and "<code>update_c_</code>", for setting the annotation list of +%% the new node to either a specific value or to the annotations of an +%% existing node, respectively.</p> +%% +%% @see abstract/1 +%% @see c_alias/2 +%% @see c_apply/2 +%% @see c_binary/1 +%% @see c_bitstr/5 +%% @see c_call/3 +%% @see c_case/2 +%% @see c_catch/1 +%% @see c_clause/3 +%% @see c_cons/2 +%% @see c_fun/2 +%% @see c_let/3 +%% @see c_letrec/2 +%% @see c_module/3 +%% @see c_primop/2 +%% @see c_receive/1 +%% @see c_seq/2 +%% @see c_try/5 +%% @see c_tuple/1 +%% @see c_values/1 +%% @see c_var/1 +%% @see get_ann/1 +%% @see to_records/1 +%% @see from_records/1 +%% @see data_type/1 +%% @see subtrees/1 +%% @see meta/1 + +-type ctype() :: 'alias' | 'apply' | 'binary' | 'bitrst' | 'call' | 'case' + | 'catch' | 'clause' | 'cons' | 'fun' | 'let' | 'letrec' + | 'literal' | 'map' | 'map_pair' | 'module' | 'primop' + | 'receive' | 'seq' | 'try' | 'tuple' | 'values' | 'var'. + +-spec type(cerl()) -> ctype(). + +type(#c_alias{}) -> alias; +type(#c_apply{}) -> apply; +type(#c_binary{}) -> binary; +type(#c_bitstr{}) -> bitstr; +type(#c_call{}) -> call; +type(#c_case{}) -> 'case'; +type(#c_catch{}) -> 'catch'; +type(#c_clause{}) -> clause; +type(#c_cons{}) -> cons; +type(#c_fun{}) -> 'fun'; +type(#c_let{}) -> 'let'; +type(#c_letrec{}) -> letrec; +type(#c_literal{}) -> literal; +type(#c_map{}) -> map; +type(#c_map_pair{}) -> map_pair; +type(#c_module{}) -> module; +type(#c_primop{}) -> primop; +type(#c_receive{}) -> 'receive'; +type(#c_seq{}) -> seq; +type(#c_try{}) -> 'try'; +type(#c_tuple{}) -> tuple; +type(#c_values{}) -> values; +type(#c_var{}) -> var. + + +%% @spec is_leaf(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is a leaf node, +%% otherwise <code>false</code>. The current leaf node types are +%% <code>literal</code> and <code>var</code>. +%% +%% <p>Note: all literals (cf. <code>is_literal/1</code>) are leaf +%% nodes, even if they represent structured (constant) values such as +%% <code>{foo, [bar, baz]}</code>. Also note that variables are leaf +%% nodes but not literals.</p> +%% +%% @see type/1 +%% @see is_literal/1 + +-spec is_leaf(cerl()) -> boolean(). + +is_leaf(Node) -> + case type(Node) of + literal -> true; + var -> true; + _ -> false + end. + + +%% @spec get_ann(cerl()) -> anns() +%% +%% @doc Returns the list of user annotations associated with a syntax +%% tree node. For a newly created node, this is the empty list. The +%% annotations may be any terms. +%% +%% @see set_ann/2 + +-spec get_ann(cerl()) -> anns(). + +get_ann(Node) -> + element(2, Node). + + +%% @spec set_ann(Node::cerl(), Annotations::anns()) -> cerl() +%% +%% @doc Sets the list of user annotations of <code>Node</code> to +%% <code>Annotations</code>. +%% +%% @see get_ann/1 +%% @see add_ann/2 +%% @see copy_ann/2 + +-spec set_ann(cerl(), anns()) -> cerl(). + +set_ann(Node, List) -> + setelement(2, Node, List). + + +%% @spec add_ann(Annotations::anns(), Node::cerl()) -> cerl() +%% +%% @doc Appends <code>Annotations</code> to the list of user +%% annotations of <code>Node</code>. +%% +%% <p>Note: this is equivalent to <code>set_ann(Node, Annotations ++ +%% get_ann(Node))</code>, but potentially more efficient.</p> +%% +%% @see get_ann/1 +%% @see set_ann/2 + +-spec add_ann(anns(), cerl()) -> cerl(). + +add_ann(Terms, Node) -> + set_ann(Node, Terms ++ get_ann(Node)). + + +%% @spec copy_ann(Source::cerl(), Target::cerl()) -> cerl() +%% +%% @doc Copies the list of user annotations from <code>Source</code> +%% to <code>Target</code>. +%% +%% <p>Note: this is equivalent to <code>set_ann(Target, +%% get_ann(Source))</code>, but potentially more efficient.</p> +%% +%% @see get_ann/1 +%% @see set_ann/2 + +-spec copy_ann(cerl(), cerl()) -> cerl(). + +copy_ann(Source, Target) -> + set_ann(Target, get_ann(Source)). + + +%% @spec abstract(Term::litval()) -> cerl() +%% +%% @doc Creates a syntax tree corresponding to an Erlang term. +%% <code>Term</code> must be a literal term, i.e., one that can be +%% represented as a source code literal. Thus, it may not contain a +%% process identifier, port, reference or function value as a subterm. +%% +%% <p>Note: This is a constant time operation.</p> +%% +%% @see ann_abstract/2 +%% @see concrete/1 +%% @see is_literal/1 +%% @see is_literal_term/1 + +-spec abstract(litval()) -> c_literal(). + +abstract(T) -> + #c_literal{val = T}. + + +%% @spec ann_abstract(Annotations::anns(), Term::litval()) -> cerl() +%% @see abstract/1 + +-spec ann_abstract(anns(), litval()) -> c_literal(). + +ann_abstract(As, T) -> + #c_literal{val = T, anno = As}. + + +%% @spec is_literal_term(Term::term()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Term</code> can be +%% represented as a literal, otherwise <code>false</code>. This +%% function takes time proportional to the size of <code>Term</code>. +%% +%% @see abstract/1 + +-spec is_literal_term(term()) -> boolean(). + +is_literal_term(T) when is_integer(T) -> true; +is_literal_term(T) when is_float(T) -> true; +is_literal_term(T) when is_atom(T) -> true; +is_literal_term([]) -> true; +is_literal_term([H | T]) -> + is_literal_term(H) andalso is_literal_term(T); +is_literal_term(T) when is_tuple(T) -> + is_literal_term_list(tuple_to_list(T)); +is_literal_term(B) when is_bitstring(B) -> true; +is_literal_term(M) when is_map(M) -> + is_literal_term_list(maps:to_list(M)); +is_literal_term(_) -> + false. + +-spec is_literal_term_list([term()]) -> boolean(). + +is_literal_term_list([T | Ts]) -> + case is_literal_term(T) of + true -> + is_literal_term_list(Ts); + false -> + false + end; +is_literal_term_list([]) -> + true. + + +%% @spec concrete(Node::c_literal()) -> litval() +%% +%% @doc Returns the Erlang term represented by a syntax tree. An +%% exception is thrown if <code>Node</code> does not represent a +%% literal term. +%% +%% <p>Note: This is a constant time operation.</p> +%% +%% @see abstract/1 +%% @see is_literal/1 + +%% Because the normal tuple and list constructor operations always +%% return a literal if the arguments are literals, 'concrete' and +%% 'is_literal' never need to traverse the structure. + +-spec concrete(c_literal()) -> litval(). + +concrete(#c_literal{val = V}) -> + V. + + +%% @spec is_literal(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> represents a +%% literal term, otherwise <code>false</code>. This function returns +%% <code>true</code> if and only if the value of +%% <code>concrete(Node)</code> is defined. +%% +%% <p>Note: This is a constant time operation.</p> +%% +%% @see abstract/1 +%% @see concrete/1 +%% @see fold_literal/1 + +-spec is_literal(cerl()) -> boolean(). + +is_literal(#c_literal{}) -> + true; +is_literal(_) -> + false. + + +%% @spec fold_literal(Node::cerl()) -> cerl() +%% +%% @doc Assures that literals have a compact representation. This is +%% occasionally useful if <code>c_cons_skel/2</code>, +%% <code>c_tuple_skel/1</code> or <code>unfold_literal/1</code> were +%% used in the construction of <code>Node</code>, and you want to revert +%% to the normal "folded" representation of literals. If +%% <code>Node</code> represents a tuple or list constructor, its +%% elements are rewritten recursively, and the node is reconstructed +%% using <code>c_cons/2</code> or <code>c_tuple/1</code>, respectively; +%% otherwise, <code>Node</code> is not changed. +%% +%% @see is_literal/1 +%% @see c_cons_skel/2 +%% @see c_tuple_skel/1 +%% @see c_cons/2 +%% @see c_tuple/1 +%% @see unfold_literal/1 + +-spec fold_literal(cerl()) -> cerl(). + +fold_literal(Node) -> + case type(Node) of + tuple -> + update_c_tuple(Node, fold_literal_list(tuple_es(Node))); + cons -> + update_c_cons(Node, fold_literal(cons_hd(Node)), + fold_literal(cons_tl(Node))); + _ -> + Node + end. + +fold_literal_list([E | Es]) -> + [fold_literal(E) | fold_literal_list(Es)]; +fold_literal_list([]) -> + []. + + +%% @spec unfold_literal(Node::cerl()) -> cerl() +%% +%% @doc Assures that literals have a fully expanded representation. If +%% <code>Node</code> represents a literal tuple or list constructor, its +%% elements are rewritten recursively, and the node is reconstructed +%% using <code>c_cons_skel/2</code> or <code>c_tuple_skel/1</code>, +%% respectively; otherwise, <code>Node</code> is not changed. The {@link +%% fold_literal/1} can be used to revert to the normal compact +%% representation. +%% +%% @see is_literal/1 +%% @see c_cons_skel/2 +%% @see c_tuple_skel/1 +%% @see c_cons/2 +%% @see c_tuple/1 +%% @see fold_literal/1 + +-spec unfold_literal(cerl()) -> cerl(). + +unfold_literal(Node) -> + case type(Node) of + literal -> + copy_ann(Node, unfold_concrete(concrete(Node))); + _ -> + Node + end. + +unfold_concrete(Val) -> + case Val of + _ when is_tuple(Val) -> + c_tuple_skel(unfold_concrete_list(tuple_to_list(Val))); + [H|T] -> + c_cons_skel(unfold_concrete(H), unfold_concrete(T)); + _ -> + abstract(Val) + end. + +unfold_concrete_list([E | Es]) -> + [unfold_concrete(E) | unfold_concrete_list(Es)]; +unfold_concrete_list([]) -> + []. + + +%% --------------------------------------------------------------------- + +%% @spec c_module(Name::c_literal(), Exports, Definitions) -> c_module() +%% +%% Exports = [c_var()] +%% Definitions = defs() +%% +%% @equiv c_module(Name, Exports, [], Definitions) + +-spec c_module(c_literal(), [c_var()], defs()) -> c_module(). + +c_module(Name, Exports, Defs) -> + #c_module{name = Name, exports = Exports, attrs = [], defs = Defs}. + + +%% @spec c_module(Name::c_literal(), Exports, Attributes, Definitions) -> +%% c_module() +%% +%% Exports = [c_var()] +%% Attributes = attrs() +%% Definitions = defs() +%% +%% @doc Creates an abstract module definition. The result represents +%% <pre> +%% module <em>Name</em> [<em>E1</em>, ..., <em>Ek</em>] +%% attributes [<em>K1</em> = <em>T1</em>, ..., +%% <em>Km</em> = <em>Tm</em>] +%% <em>V1</em> = <em>F1</em> +%% ... +%% <em>Vn</em> = <em>Fn</em> +%% end</pre> +%% +%% if <code>Exports</code> = <code>[E1, ..., Ek]</code>, +%% <code>Attributes</code> = <code>[{K1, T1}, ..., {Km, Tm}]</code>, +%% and <code>Definitions</code> = <code>[{V1, F1}, ..., {Vn, +%% Fn}]</code>. +%% +%% <p><code>Name</code> and all the <code>Ki</code> must be atom +%% literals, and all the <code>Ti</code> must be constant literals. All +%% the <code>Vi</code> and <code>Ei</code> must have type +%% <code>var</code> and represent function names. All the +%% <code>Fi</code> must have type <code>'fun'</code>.</p> +%% +%% @see c_module/3 +%% @see module_name/1 +%% @see module_exports/1 +%% @see module_attrs/1 +%% @see module_defs/1 +%% @see module_vars/1 +%% @see ann_c_module/4 +%% @see ann_c_module/5 +%% @see update_c_module/5 +%% @see c_atom/1 +%% @see c_var/1 +%% @see c_fun/2 +%% @see is_literal/1 + +-spec c_module(c_literal(), [c_var()], attrs(), defs()) -> c_module(). + +c_module(Name, Exports, Attrs, Defs) -> + #c_module{name = Name, exports = Exports, attrs = Attrs, defs = Defs}. + + +%% @spec ann_c_module(As::anns(), Name::c_literal(), Exports, +%% Definitions) -> c_module() +%% +%% Exports = [c_var()] +%% Definitions = defs() +%% +%% @see c_module/3 +%% @see ann_c_module/5 + +-spec ann_c_module(anns(), c_literal(), [c_var()], defs()) -> c_module(). + +ann_c_module(As, Name, Exports, Defs) -> + #c_module{name = Name, exports = Exports, attrs = [], defs = Defs, + anno = As}. + + +%% @spec ann_c_module(As::anns(), Name::c_literal(), Exports, +%% Attributes, Definitions) -> c_module() +%% +%% Exports = [c_var()] +%% Attributes = attrs() +%% Definitions = defs() +%% +%% @see c_module/4 +%% @see ann_c_module/4 + +-spec ann_c_module(anns(), c_literal(), [c_var()], attrs(), defs()) -> + c_module(). + +ann_c_module(As, Name, Exports, Attrs, Defs) -> + #c_module{name = Name, exports = Exports, attrs = Attrs, defs = Defs, + anno = As}. + + +%% @spec update_c_module(Old::cerl(), Name::c_literal(), Exports, +%% Attributes, Definitions) -> c_module() +%% +%% Exports = [c_var()] +%% Attributes = attrs() +%% Definitions = defs() +%% +%% @see c_module/4 + +-spec update_c_module(c_module(), c_literal(), [c_var()], attrs(), defs()) -> + c_module(). + +update_c_module(Node, Name, Exports, Attrs, Defs) -> + #c_module{name = Name, exports = Exports, attrs = Attrs, defs = Defs, + anno = get_ann(Node)}. + + +%% @spec is_c_module(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% module definition, otherwise <code>false</code>. +%% +%% @see type/1 + +-spec is_c_module(cerl()) -> boolean(). + +is_c_module(#c_module{}) -> + true; +is_c_module(_) -> + false. + + +%% @spec module_name(Node::c_module()) -> c_literal() +%% +%% @doc Returns the name subtree of an abstract module definition. +%% +%% @see c_module/4 + +-spec module_name(c_module()) -> c_literal(). + +module_name(Node) -> + Node#c_module.name. + + +%% @spec module_exports(Node::c_module()) -> [c_var()] +%% +%% @doc Returns the list of exports subtrees of an abstract module +%% definition. +%% +%% @see c_module/4 + +-spec module_exports(c_module()) -> [c_var()]. + +module_exports(Node) -> + Node#c_module.exports. + + +%% @spec module_attrs(Node::c_module()) -> [{cerl(), cerl()}] +%% +%% @doc Returns the list of pairs of attribute key/value subtrees of +%% an abstract module definition. +%% +%% @see c_module/4 + +-spec module_attrs(c_module()) -> attrs(). + +module_attrs(Node) -> + Node#c_module.attrs. + + +%% @spec module_defs(Node::c_module()) -> defs() +%% +%% @doc Returns the list of function definitions of an abstract module +%% definition. +%% +%% @see c_module/4 + +-spec module_defs(c_module()) -> defs(). + +module_defs(Node) -> + Node#c_module.defs. + + +%% @spec module_vars(Node::c_module()) -> [c_var()] +%% +%% @doc Returns the list of left-hand side function variable subtrees +%% of an abstract module definition. +%% +%% @see c_module/4 + +-spec module_vars(c_module()) -> [c_var()]. + +module_vars(Node) -> + [F || {F, _} <- module_defs(Node)]. + + +%% --------------------------------------------------------------------- + +%% @spec c_int(Value::integer()) -> c_literal() +%% +%% @doc Creates an abstract integer literal. The lexical +%% representation is the canonical decimal numeral of +%% <code>Value</code>. +%% +%% @see ann_c_int/2 +%% @see is_c_int/1 +%% @see int_val/1 +%% @see int_lit/1 +%% @see c_char/1 + +-spec c_int(integer()) -> c_literal(). + +c_int(Value) -> + #c_literal{val = Value}. + + +%% @spec ann_c_int(As::anns(), Value::integer()) -> c_literal() +%% @see c_int/1 + +-spec ann_c_int(anns(), integer()) -> c_literal(). + +ann_c_int(As, Value) -> + #c_literal{val = Value, anno = As}. + + +%% @spec is_c_int(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> represents an +%% integer literal, otherwise <code>false</code>. +%% @see c_int/1 + +-spec is_c_int(cerl()) -> boolean(). + +is_c_int(#c_literal{val = V}) when is_integer(V) -> + true; +is_c_int(_) -> + false. + + +%% @spec int_val(c_literal()) -> integer() +%% +%% @doc Returns the value represented by an integer literal node. +%% @see c_int/1 + +-spec int_val(c_literal()) -> integer(). + +int_val(Node) -> + Node#c_literal.val. + + +%% @spec int_lit(c_literal()) -> string() +%% +%% @doc Returns the numeral string represented by an integer literal +%% node. +%% @see c_int/1 + +-spec int_lit(c_literal()) -> string(). + +int_lit(Node) -> + integer_to_list(int_val(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_float(Value::float()) -> c_literal() +%% +%% @doc Creates an abstract floating-point literal. The lexical +%% representation is the decimal floating-point numeral of +%% <code>Value</code>. +%% +%% @see ann_c_float/2 +%% @see is_c_float/1 +%% @see float_val/1 +%% @see float_lit/1 + +%% Note that not all floating-point numerals can be represented with +%% full precision. + +-spec c_float(float()) -> c_literal(). + +c_float(Value) -> + #c_literal{val = Value}. + + +%% @spec ann_c_float(As::anns(), Value::float()) -> c_literal() +%% @see c_float/1 + +-spec ann_c_float(anns(), float()) -> c_literal(). + +ann_c_float(As, Value) -> + #c_literal{val = Value, anno = As}. + + +%% @spec is_c_float(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> represents a +%% floating-point literal, otherwise <code>false</code>. +%% @see c_float/1 + +-spec is_c_float(cerl()) -> boolean(). + +is_c_float(#c_literal{val = V}) when is_float(V) -> + true; +is_c_float(_) -> + false. + + +%% @spec float_val(c_literal()) -> float() +%% +%% @doc Returns the value represented by a floating-point literal +%% node. +%% @see c_float/1 + +-spec float_val(c_literal()) -> float(). + +float_val(Node) -> + Node#c_literal.val. + + +%% @spec float_lit(c_literal()) -> string() +%% +%% @doc Returns the numeral string represented by a floating-point +%% literal node. +%% @see c_float/1 + +-spec float_lit(c_literal()) -> string(). + +float_lit(Node) -> + float_to_list(float_val(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_atom(Name) -> c_literal() +%% Name = atom() | string() +%% +%% @doc Creates an abstract atom literal. The print name of the atom +%% is the character sequence represented by <code>Name</code>. +%% +%% <p>Note: passing a string as argument to this function causes a +%% corresponding atom to be created for the internal representation.</p> +%% +%% @see ann_c_atom/2 +%% @see is_c_atom/1 +%% @see atom_val/1 +%% @see atom_name/1 +%% @see atom_lit/1 + +-spec c_atom(atom() | string()) -> c_literal(). + +c_atom(Name) when is_atom(Name) -> + #c_literal{val = Name}; +c_atom(Name) -> + #c_literal{val = list_to_atom(Name)}. + + +%% @spec ann_c_atom(As::anns(), Name) -> cerl() +%% Name = atom() | string() +%% @see c_atom/1 + +-spec ann_c_atom(anns(), atom() | string()) -> c_literal(). + +ann_c_atom(As, Name) when is_atom(Name) -> + #c_literal{val = Name, anno = As}; +ann_c_atom(As, Name) -> + #c_literal{val = list_to_atom(Name), anno = As}. + + +%% @spec is_c_atom(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> represents an +%% atom literal, otherwise <code>false</code>. +%% +%% @see c_atom/1 + +-spec is_c_atom(cerl()) -> boolean(). + +is_c_atom(#c_literal{val = V}) when is_atom(V) -> + true; +is_c_atom(_) -> + false. + +%% @spec atom_val(c_literal()) -> atom() +%% +%% @doc Returns the value represented by an abstract atom. +%% +%% @see c_atom/1 + +-spec atom_val(c_literal()) -> atom(). + +atom_val(Node) -> + Node#c_literal.val. + + +%% @spec atom_name(c_literal()) -> string() +%% +%% @doc Returns the printname of an abstract atom. +%% +%% @see c_atom/1 + +-spec atom_name(c_literal()) -> string(). + +atom_name(Node) -> + atom_to_list(atom_val(Node)). + + +%% @spec atom_lit(cerl()) -> string() +%% +%% @doc Returns the literal string represented by an abstract +%% atom. This always includes surrounding single-quote characters. +%% +%% <p>Note that an abstract atom may have several literal +%% representations, and that the representation yielded by this +%% function is not fixed; e.g., +%% <code>atom_lit(c_atom("a\012b"))</code> could yield the string +%% <code>"\'a\\nb\'"</code>.</p> +%% +%% @see c_atom/1 + +%% TODO: replace the use of the unofficial 'write_string/2'. + +-spec atom_lit(cerl()) -> nonempty_string(). + +atom_lit(Node) -> + io_lib:write_string(atom_name(Node), $'). %' stupid Emacs. + + +%% --------------------------------------------------------------------- + +%% @spec c_char(Value) -> c_literal() +%% +%% Value = char() | integer() +%% +%% @doc Creates an abstract character literal. If the local +%% implementation of Erlang defines <code>char()</code> as a subset of +%% <code>integer()</code>, this function is equivalent to +%% <code>c_int/1</code>. Otherwise, if the given value is an integer, +%% it will be converted to the character with the corresponding +%% code. The lexical representation of a character is +%% "<code>$<em>Char</em></code>", where <code>Char</code> is a single +%% printing character or an escape sequence. +%% +%% @see c_int/1 +%% @see c_string/1 +%% @see ann_c_char/2 +%% @see is_c_char/1 +%% @see char_val/1 +%% @see char_lit/1 +%% @see is_print_char/1 + +-spec c_char(non_neg_integer()) -> c_literal(). + +c_char(Value) when is_integer(Value), Value >= 0 -> + #c_literal{val = Value}. + + +%% @spec ann_c_char(As::anns(), Value::char()) -> c_literal() +%% @see c_char/1 + +-spec ann_c_char(anns(), char()) -> c_literal(). + +ann_c_char(As, Value) -> + #c_literal{val = Value, anno = As}. + + +%% @spec is_c_char(Node::c_literal()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> may represent a +%% character literal, otherwise <code>false</code>. +%% +%% <p>If the local implementation of Erlang defines +%% <code>char()</code> as a subset of <code>integer()</code>, then +%% <code>is_c_int(<em>Node</em>)</code> will also yield +%% <code>true</code>.</p> +%% +%% @see c_char/1 +%% @see is_print_char/1 + +-spec is_c_char(c_literal()) -> boolean(). + +is_c_char(#c_literal{val = V}) when is_integer(V), V >= 0 -> + is_char_value(V); +is_c_char(_) -> + false. + + +%% @spec is_print_char(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> may represent a +%% "printing" character, otherwise <code>false</code>. (Cf. +%% <code>is_c_char/1</code>.) A "printing" character has either a +%% given graphical representation, or a "named" escape sequence such +%% as "<code>\n</code>". Currently, only ISO 8859-1 (Latin-1) +%% character values are recognized. +%% +%% @see c_char/1 +%% @see is_c_char/1 + +-spec is_print_char(cerl()) -> boolean(). + +is_print_char(#c_literal{val = V}) when is_integer(V), V >= 0 -> + is_print_char_value(V); +is_print_char(_) -> + false. + + +%% @spec char_val(c_literal()) -> char() +%% +%% @doc Returns the value represented by an abstract character literal. +%% +%% @see c_char/1 + +-spec char_val(c_literal()) -> char(). + +char_val(Node) -> + Node#c_literal.val. + + +%% @spec char_lit(c_literal()) -> string() +%% +%% @doc Returns the literal string represented by an abstract +%% character. This includes a leading <code>$</code> +%% character. Currently, all characters that are not in the set of ISO +%% 8859-1 (Latin-1) "printing" characters will be escaped. +%% +%% @see c_char/1 + +-spec char_lit(c_literal()) -> nonempty_string(). + +char_lit(Node) -> + io_lib:write_char(char_val(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_string(Value::string()) -> c_literal() +%% +%% @doc Creates an abstract string literal. Equivalent to creating an +%% abstract list of the corresponding character literals +%% (cf. <code>is_c_string/1</code>), but is typically more +%% efficient. The lexical representation of a string is +%% "<code>"<em>Chars</em>"</code>", where <code>Chars</code> is a +%% sequence of printing characters or spaces. +%% +%% @see c_char/1 +%% @see ann_c_string/2 +%% @see is_c_string/1 +%% @see string_val/1 +%% @see string_lit/1 +%% @see is_print_string/1 + +-spec c_string(string()) -> c_literal(). + +c_string(Value) -> + #c_literal{val = Value}. + + +%% @spec ann_c_string(As::anns(), Value::string()) -> c_literal() +%% @see c_string/1 + +-spec ann_c_string(anns(), string()) -> c_literal(). + +ann_c_string(As, Value) -> + #c_literal{val = Value, anno = As}. + + +%% @spec is_c_string(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> may represent a +%% string literal, otherwise <code>false</code>. Strings are defined +%% as lists of characters; see <code>is_c_char/1</code> for details. +%% +%% @see c_string/1 +%% @see is_c_char/1 +%% @see is_print_string/1 + +-spec is_c_string(cerl()) -> boolean(). + +is_c_string(#c_literal{val = V}) -> + is_char_list(V); +is_c_string(_) -> + false. + + +%% @spec is_print_string(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> may represent a +%% string literal containing only "printing" characters, otherwise +%% <code>false</code>. See <code>is_c_string/1</code> and +%% <code>is_print_char/1</code> for details. Currently, only ISO +%% 8859-1 (Latin-1) character values are recognized. +%% +%% @see c_string/1 +%% @see is_c_string/1 +%% @see is_print_char/1 + +-spec is_print_string(cerl()) -> boolean(). + +is_print_string(#c_literal{val = V}) -> + is_print_char_list(V); +is_print_string(_) -> + false. + + +%% @spec string_val(cerl()) -> string() +%% +%% @doc Returns the value represented by an abstract string literal. +%% +%% @see c_string/1 + +-spec string_val(c_literal()) -> string(). + +string_val(Node) -> + Node#c_literal.val. + + +%% @spec string_lit(cerl()) -> string() +%% +%% @doc Returns the literal string represented by an abstract string. +%% This includes surrounding double-quote characters +%% <code>"..."</code>. Currently, characters that are not in the set +%% of ISO 8859-1 (Latin-1) "printing" characters will be escaped, +%% except for spaces. +%% +%% @see c_string/1 + +-spec string_lit(c_literal()) -> nonempty_string(). + +string_lit(Node) -> + io_lib:write_string(string_val(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_nil() -> cerl() +%% +%% @doc Creates an abstract empty list. The result represents +%% "<code>[]</code>". The empty list is traditionally called "nil". +%% +%% @see ann_c_nil/1 +%% @see is_c_list/1 +%% @see c_cons/2 + +-spec c_nil() -> c_literal(). + +c_nil() -> + #c_literal{val = []}. + + +%% @spec ann_c_nil(As::anns()) -> cerl() +%% @see c_nil/0 + +-spec ann_c_nil(anns()) -> c_literal(). + +ann_c_nil(As) -> + #c_literal{val = [], anno = As}. + + +%% @spec is_c_nil(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% empty list, otherwise <code>false</code>. + +-spec is_c_nil(cerl()) -> boolean(). + +is_c_nil(#c_literal{val = []}) -> + true; +is_c_nil(_) -> + false. + + +%% --------------------------------------------------------------------- + +%% @spec c_cons(Head::cerl(), Tail::cerl()) -> cerl() +%% +%% @doc Creates an abstract list constructor. The result represents +%% "<code>[<em>Head</em> | <em>Tail</em>]</code>". Note that if both +%% <code>Head</code> and <code>Tail</code> have type +%% <code>literal</code>, then the result will also have type +%% <code>literal</code>, and annotations on <code>Head</code> and +%% <code>Tail</code> are lost. +%% +%% <p>Recall that in Erlang, the tail element of a list constructor is +%% not necessarily a list.</p> +%% +%% @see ann_c_cons/3 +%% @see update_c_cons/3 +%% @see c_cons_skel/2 +%% @see is_c_cons/1 +%% @see cons_hd/1 +%% @see cons_tl/1 +%% @see is_c_list/1 +%% @see c_nil/0 +%% @see list_elements/1 +%% @see list_length/1 +%% @see make_list/2 + +%% *Always* collapse literals. + +-spec c_cons(cerl(), cerl()) -> c_literal() | c_cons(). + +c_cons(#c_literal{val = Head}, #c_literal{val = Tail}) -> + #c_literal{val = [Head | Tail]}; +c_cons(Head, Tail) -> + #c_cons{hd = Head, tl = Tail}. + + +%% @spec ann_c_cons(As::anns(), Head::cerl(), Tail::cerl()) -> cerl() +%% @see c_cons/2 + +-spec ann_c_cons(anns(), cerl(), cerl()) -> c_literal() | c_cons(). + +ann_c_cons(As, #c_literal{val = Head}, #c_literal{val = Tail}) -> + #c_literal{val = [Head | Tail], anno = As}; +ann_c_cons(As, Head, Tail) -> + #c_cons{hd = Head, tl = Tail, anno = As}. + + +%% @spec update_c_cons(Old::cerl(), Head::cerl(), Tail::cerl()) -> +%% cerl() +%% @see c_cons/2 + +-spec update_c_cons(c_literal() | c_cons(), cerl(), cerl()) -> + c_literal() | c_cons(). + +update_c_cons(Node, #c_literal{val = Head}, #c_literal{val = Tail}) -> + #c_literal{val = [Head | Tail], anno = get_ann(Node)}; +update_c_cons(Node, Head, Tail) -> + #c_cons{hd = Head, tl = Tail, anno = get_ann(Node)}. + + +%% @spec c_cons_skel(Head::cerl(), Tail::cerl()) -> c_cons() +%% +%% @doc Creates an abstract list constructor skeleton. Does not fold +%% constant literals, i.e., the result always has type +%% <code>cons</code>, representing "<code>[<em>Head</em> | +%% <em>Tail</em>]</code>". +%% +%% <p>This function is occasionally useful when it is necessary to have +%% annotations on the subnodes of a list constructor node, even when the +%% subnodes are constant literals. Note however that +%% <code>is_literal/1</code> will yield <code>false</code> and +%% <code>concrete/1</code> will fail if passed the result from this +%% function.</p> +%% +%% <p><code>fold_literal/1</code> can be used to revert a node to the +%% normal-form representation.</p> +%% +%% @see ann_c_cons_skel/3 +%% @see update_c_cons_skel/3 +%% @see c_cons/2 +%% @see is_c_cons/1 +%% @see is_c_list/1 +%% @see c_nil/0 +%% @see is_literal/1 +%% @see fold_literal/1 +%% @see concrete/1 + +%% *Never* collapse literals. + +-spec c_cons_skel(cerl(), cerl()) -> c_cons(). + +c_cons_skel(Head, Tail) -> + #c_cons{hd = Head, tl = Tail}. + + +%% @spec ann_c_cons_skel(As::anns(), Head::cerl(), Tail::cerl()) -> +%% c_cons() +%% @see c_cons_skel/2 + +-spec ann_c_cons_skel(anns(), cerl(), cerl()) -> c_cons(). + +ann_c_cons_skel(As, Head, Tail) -> + #c_cons{hd = Head, tl = Tail, anno = As}. + + +%% @spec update_c_cons_skel(Old::cerl(), Head::cerl(), Tail::cerl()) -> +%% c_cons() +%% @see c_cons_skel/2 + +-spec update_c_cons_skel(c_cons() | c_literal(), cerl(), cerl()) -> c_cons(). + +update_c_cons_skel(Node, Head, Tail) -> + #c_cons{hd = Head, tl = Tail, anno = get_ann(Node)}. + + +%% @spec is_c_cons(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% list constructor, otherwise <code>false</code>. + +-spec is_c_cons(cerl()) -> boolean(). + +is_c_cons(#c_cons{}) -> + true; +is_c_cons(#c_literal{val = [_ | _]}) -> + true; +is_c_cons(_) -> + false. + + +%% @spec cons_hd(cerl()) -> cerl() +%% +%% @doc Returns the head subtree of an abstract list constructor. +%% +%% @see c_cons/2 + +-spec cons_hd(c_cons() | c_literal()) -> cerl(). + +cons_hd(#c_cons{hd = Head}) -> + Head; +cons_hd(#c_literal{val = [Head | _]}) -> + #c_literal{val = Head}. + + +%% @spec cons_tl(c_cons() | c_literal()) -> cerl() +%% +%% @doc Returns the tail subtree of an abstract list constructor. +%% +%% <p>Recall that the tail does not necessarily represent a proper +%% list.</p> +%% +%% @see c_cons/2 + +-spec cons_tl(c_cons() | c_literal()) -> cerl(). + +cons_tl(#c_cons{tl = Tail}) -> + Tail; +cons_tl(#c_literal{val = [_ | Tail]}) -> + #c_literal{val = Tail}. + + +%% @spec is_c_list(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> represents a +%% proper list, otherwise <code>false</code>. A proper list is either +%% the empty list <code>[]</code>, or a cons cell <code>[<em>Head</em> | +%% <em>Tail</em>]</code>, where recursively <code>Tail</code> is a +%% proper list. +%% +%% <p>Note: Because <code>Node</code> is a syntax tree, the actual +%% run-time values corresponding to its subtrees may often be partially +%% or completely unknown. Thus, if <code>Node</code> represents e.g. +%% "<code>[... | Ns]</code>" (where <code>Ns</code> is a variable), then +%% the function will return <code>false</code>, because it is not known +%% whether <code>Ns</code> will be bound to a list at run-time. If +%% <code>Node</code> instead represents e.g. "<code>[1, 2, 3]</code>" or +%% "<code>[A | []]</code>", then the function will return +%% <code>true</code>.</p> +%% +%% @see c_cons/2 +%% @see c_nil/0 +%% @see list_elements/1 +%% @see list_length/1 + +-spec is_c_list(cerl()) -> boolean(). + +is_c_list(#c_cons{tl = Tail}) -> + is_c_list(Tail); +is_c_list(#c_literal{val = V}) -> + is_proper_list(V); +is_c_list(_) -> + false. + +is_proper_list([_ | Tail]) -> + is_proper_list(Tail); +is_proper_list([]) -> + true; +is_proper_list(_) -> + false. + +%% @spec list_elements(c_cons() | c_literal()) -> [cerl()] +%% +%% @doc Returns the list of element subtrees of an abstract list. +%% <code>Node</code> must represent a proper list. E.g., if +%% <code>Node</code> represents "<code>[<em>X1</em>, <em>X2</em> | +%% [<em>X3</em>, <em>X4</em> | []]</code>", then +%% <code>list_elements(Node)</code> yields the list <code>[X1, X2, X3, +%% X4]</code>. +%% +%% @see c_cons/2 +%% @see c_nil/0 +%% @see is_c_list/1 +%% @see list_length/1 +%% @see make_list/2 + +-spec list_elements(c_cons() | c_literal()) -> [cerl()]. + +list_elements(#c_cons{hd = Head, tl = Tail}) -> + [Head | list_elements(Tail)]; +list_elements(#c_literal{val = V}) -> + abstract_list(V). + +abstract_list([X | Xs]) -> + [abstract(X) | abstract_list(Xs)]; +abstract_list([]) -> + []. + + +%% @spec list_length(Node::c_cons() | c_literal()) -> integer() +%% +%% @doc Returns the number of element subtrees of an abstract list. +%% <code>Node</code> must represent a proper list. E.g., if +%% <code>Node</code> represents "<code>[X1 | [X2, X3 | [X4, X5, +%% X6]]]</code>", then <code>list_length(Node)</code> returns the +%% integer 6. +%% +%% <p>Note: this is equivalent to +%% <code>length(list_elements(Node))</code>, but potentially more +%% efficient.</p> +%% +%% @see c_cons/2 +%% @see c_nil/0 +%% @see is_c_list/1 +%% @see list_elements/1 + +-spec list_length(c_cons() | c_literal()) -> non_neg_integer(). + +list_length(L) -> + list_length(L, 0). + +list_length(#c_cons{tl = Tail}, A) -> + list_length(Tail, A + 1); +list_length(#c_literal{val = V}, A) -> + A + length(V). + + +%% @spec make_list(List) -> Node +%% @equiv make_list(List, none) + +-spec make_list([cerl()]) -> cerl(). + +make_list(List) -> + ann_make_list([], List). + + +%% @spec make_list(List::[cerl()], Tail) -> cerl() +%% +%% Tail = cerl() | none +%% +%% @doc Creates an abstract list from the elements in <code>List</code> +%% and the optional <code>Tail</code>. If <code>Tail</code> is +%% <code>none</code>, the result will represent a nil-terminated list, +%% otherwise it represents "<code>[... | <em>Tail</em>]</code>". +%% +%% @see c_cons/2 +%% @see c_nil/0 +%% @see ann_make_list/3 +%% @see update_list/3 +%% @see list_elements/1 + +-spec make_list([cerl()], cerl() | 'none') -> cerl(). + +make_list(List, Tail) -> + ann_make_list([], List, Tail). + + +%% @spec update_list(Old::cerl(), List::[cerl()]) -> cerl() +%% @equiv update_list(Old, List, none) + +-spec update_list(cerl(), [cerl()]) -> cerl(). + +update_list(Node, List) -> + ann_make_list(get_ann(Node), List). + + +%% @spec update_list(Old::cerl(), List::[cerl()], Tail) -> cerl() +%% +%% Tail = cerl() | none +%% +%% @see make_list/2 +%% @see update_list/2 + +-spec update_list(cerl(), [cerl()], cerl() | 'none') -> cerl(). + +update_list(Node, List, Tail) -> + ann_make_list(get_ann(Node), List, Tail). + + +%% @spec ann_make_list(As::anns(), List::[cerl()]) -> cerl() +%% @equiv ann_make_list(As, List, none) + +-spec ann_make_list(anns(), [cerl()]) -> cerl(). + +ann_make_list(As, List) -> + ann_make_list(As, List, none). + + +%% @spec ann_make_list(As::anns(), List::[cerl()], Tail) -> cerl() +%% +%% Tail = cerl() | none +%% +%% @see make_list/2 +%% @see ann_make_list/2 + +-spec ann_make_list(anns(), [cerl()], cerl() | 'none') -> cerl(). + +ann_make_list(As, [H | T], Tail) -> + ann_c_cons(As, H, make_list(T, Tail)); % `c_cons' folds literals +ann_make_list(As, [], none) -> + ann_c_nil(As); +ann_make_list(_, [], Node) -> + Node. + + +%% --------------------------------------------------------------------- +%% maps + +%% @spec is_c_map(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% map constructor, otherwise <code>false</code>. + +-spec is_c_map(cerl()) -> boolean(). + +is_c_map(#c_map{}) -> + true; +is_c_map(#c_literal{val = V}) when is_map(V) -> + true; +is_c_map(_) -> + false. + +-spec map_es(c_map() | c_literal()) -> [c_map_pair()]. + +map_es(#c_literal{anno=As,val=M}) when is_map(M) -> + [ann_c_map_pair(As, + #c_literal{anno=As,val='assoc'}, + #c_literal{anno=As,val=K}, + #c_literal{anno=As,val=V}) || {K,V} <- maps:to_list(M)]; +map_es(#c_map{es = Es}) -> + Es. + +-spec map_arg(c_map() | c_literal()) -> c_map() | c_literal(). + +map_arg(#c_literal{anno=As,val=M}) when is_map(M) -> + #c_literal{anno=As,val=#{}}; +map_arg(#c_map{arg=M}) -> + M. + +-spec c_map([c_map_pair()]) -> c_map(). + +c_map(Pairs) -> + ann_c_map([], Pairs). + +-spec c_map_pattern([c_map_pair()]) -> c_map(). + +c_map_pattern(Pairs) -> + #c_map{es=Pairs, is_pat=true}. + +-spec ann_c_map_pattern([term()], [c_map_pair()]) -> c_map(). + +ann_c_map_pattern(As, Pairs) -> + #c_map{anno=As, es=Pairs, is_pat=true}. + +-spec is_c_map_empty(c_map() | c_literal()) -> boolean(). + +is_c_map_empty(#c_map{ es=[] }) -> true; +is_c_map_empty(#c_literal{val=M}) when is_map(M),map_size(M) =:= 0 -> true; +is_c_map_empty(_) -> false. + +-spec is_c_map_pattern(c_map()) -> boolean(). + +is_c_map_pattern(#c_map{is_pat=IsPat}) -> + IsPat. + +-spec ann_c_map([term()], [c_map_pair()]) -> c_map() | c_literal(). + +ann_c_map(As, Es) -> + ann_c_map(As, #c_literal{val=#{}}, Es). + +-spec ann_c_map(anns(), c_map() | c_literal(), [c_map_pair()]) -> c_map() | c_literal(). + +ann_c_map(As, #c_literal{val=M}, Es) when is_map(M) -> + fold_map_pairs(As,Es,M); +ann_c_map(As, M, Es) -> + #c_map{arg=M, es=Es, anno=As}. + +fold_map_pairs(As,[],M) -> #c_literal{anno=As,val=M}; +%% M#{ K => V} +fold_map_pairs(As,[#c_map_pair{op=#c_literal{val=assoc},key=Ck,val=Cv}=E|Es],M) -> + case is_lit_list([Ck,Cv]) of + true -> + [K,V] = lit_list_vals([Ck,Cv]), + fold_map_pairs(As,Es,maps:put(K,V,M)); + false -> + #c_map{arg=#c_literal{val=M,anno=As}, es=[E|Es], anno=As} + end; +%% M#{ K := V} +fold_map_pairs(As,[#c_map_pair{op=#c_literal{val=exact},key=Ck,val=Cv}=E|Es],M) -> + case is_lit_list([Ck,Cv]) of + true -> + [K,V] = lit_list_vals([Ck,Cv]), + case maps:is_key(K,M) of + true -> fold_map_pairs(As,Es,maps:put(K,V,M)); + false -> + #c_map{arg=#c_literal{val=M,anno=As}, es=[E|Es], anno=As } + end; + false -> + #c_map{arg=#c_literal{val=M,anno=As}, es=[E|Es], anno=As } + end. + +-spec update_c_map(c_map(), cerl(), [cerl()]) -> c_map() | c_literal(). + +update_c_map(#c_map{is_pat=true}=Old, M, Es) -> + Old#c_map{arg=M, es=Es}; +update_c_map(#c_map{is_pat=false}=Old, M, Es) -> + ann_c_map(get_ann(Old), M, Es). + +map_pair_key(#c_map_pair{key=K}) -> K. +map_pair_val(#c_map_pair{val=V}) -> V. +map_pair_op(#c_map_pair{op=Op}) -> Op. + +-spec c_map_pair(cerl(), cerl()) -> c_map_pair(). + +c_map_pair(Key,Val) -> + #c_map_pair{op=#c_literal{val=assoc},key=Key,val=Val}. + +-spec c_map_pair_exact(cerl(), cerl()) -> c_map_pair(). + +c_map_pair_exact(Key,Val) -> + #c_map_pair{op=#c_literal{val=exact},key=Key,val=Val}. + +-spec ann_c_map_pair(anns(), cerl(), cerl(), cerl()) -> + c_map_pair(). + +ann_c_map_pair(As,Op,K,V) -> + #c_map_pair{op = Op, key = K, val = V, anno = As}. + +update_c_map_pair(Old,Op,K,V) -> + #c_map_pair{op = Op, key = K, val = V, anno = get_ann(Old)}. + + +%% --------------------------------------------------------------------- + +%% @spec c_tuple(Elements::[cerl()]) -> cerl() +%% +%% @doc Creates an abstract tuple. If <code>Elements</code> is +%% <code>[E1, ..., En]</code>, the result represents +%% "<code>{<em>E1</em>, ..., <em>En</em>}</code>". Note that if all +%% nodes in <code>Elements</code> have type <code>literal</code>, or if +%% <code>Elements</code> is empty, then the result will also have type +%% <code>literal</code> and annotations on nodes in +%% <code>Elements</code> are lost. +%% +%% <p>Recall that Erlang has distinct 1-tuples, i.e., <code>{X}</code> +%% is always distinct from <code>X</code> itself.</p> +%% +%% @see ann_c_tuple/2 +%% @see update_c_tuple/2 +%% @see is_c_tuple/1 +%% @see tuple_es/1 +%% @see tuple_arity/1 +%% @see c_tuple_skel/1 + +%% *Always* collapse literals. + +-spec c_tuple([cerl()]) -> c_tuple() | c_literal(). + +c_tuple(Es) -> + case is_lit_list(Es) of + false -> + #c_tuple{es = Es}; + true -> + #c_literal{val = list_to_tuple(lit_list_vals(Es))} + end. + + +%% @spec ann_c_tuple(As::anns(), Elements::[cerl()]) -> cerl() +%% @see c_tuple/1 + +-spec ann_c_tuple(anns(), [cerl()]) -> c_tuple() | c_literal(). + +ann_c_tuple(As, Es) -> + case is_lit_list(Es) of + false -> + #c_tuple{es = Es, anno = As}; + true -> + #c_literal{val = list_to_tuple(lit_list_vals(Es)), anno = As} + end. + + +%% @spec update_c_tuple(Old::cerl(), Elements::[cerl()]) -> cerl() +%% @see c_tuple/1 + +-spec update_c_tuple(c_tuple() | c_literal(), [cerl()]) -> c_tuple() | c_literal(). + +update_c_tuple(Node, Es) -> + case is_lit_list(Es) of + false -> + #c_tuple{es = Es, anno = get_ann(Node)}; + true -> + #c_literal{val = list_to_tuple(lit_list_vals(Es)), + anno = get_ann(Node)} + end. + + +%% @spec c_tuple_skel(Elements::[cerl()]) -> cerl() +%% +%% @doc Creates an abstract tuple skeleton. Does not fold constant +%% literals, i.e., the result always has type <code>tuple</code>, +%% representing "<code>{<em>E1</em>, ..., <em>En</em>}</code>", if +%% <code>Elements</code> is <code>[E1, ..., En]</code>. +%% +%% <p>This function is occasionally useful when it is necessary to have +%% annotations on the subnodes of a tuple node, even when all the +%% subnodes are constant literals. Note however that +%% <code>is_literal/1</code> will yield <code>false</code> and +%% <code>concrete/1</code> will fail if passed the result from this +%% function.</p> +%% +%% <p><code>fold_literal/1</code> can be used to revert a node to the +%% normal-form representation.</p> +%% +%% @see ann_c_tuple_skel/2 +%% @see update_c_tuple_skel/2 +%% @see c_tuple/1 +%% @see tuple_es/1 +%% @see is_c_tuple/1 +%% @see is_literal/1 +%% @see fold_literal/1 +%% @see concrete/1 + +%% *Never* collapse literals. + +-spec c_tuple_skel([cerl()]) -> c_tuple(). + +c_tuple_skel(Es) -> + #c_tuple{es = Es}. + + +%% @spec ann_c_tuple_skel(As::anns(), Elements::[cerl()]) -> cerl() +%% @see c_tuple_skel/1 + +-spec ann_c_tuple_skel(anns(), [cerl()]) -> c_tuple(). + +ann_c_tuple_skel(As, Es) -> + #c_tuple{es = Es, anno = As}. + + +%% @spec update_c_tuple_skel(Old::cerl(), Elements::[cerl()]) -> cerl() +%% @see c_tuple_skel/1 + +-spec update_c_tuple_skel(c_tuple(), [cerl()]) -> c_tuple(). + +update_c_tuple_skel(Old, Es) -> + #c_tuple{es = Es, anno = get_ann(Old)}. + + +%% @spec is_c_tuple(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% tuple, otherwise <code>false</code>. +%% +%% @see c_tuple/1 + +-spec is_c_tuple(cerl()) -> boolean(). + +is_c_tuple(#c_tuple{}) -> + true; +is_c_tuple(#c_literal{val = V}) when is_tuple(V) -> + true; +is_c_tuple(_) -> + false. + + +%% @spec tuple_es(cerl()) -> [cerl()] +%% +%% @doc Returns the list of element subtrees of an abstract tuple. +%% +%% @see c_tuple/1 + +-spec tuple_es(c_tuple() | c_literal()) -> [cerl()]. + +tuple_es(#c_tuple{es = Es}) -> + Es; +tuple_es(#c_literal{val = V}) -> + make_lit_list(tuple_to_list(V)). + + +%% @spec tuple_arity(Node::cerl()) -> integer() +%% +%% @doc Returns the number of element subtrees of an abstract tuple. +%% +%% <p>Note: this is equivalent to <code>length(tuple_es(Node))</code>, +%% but potentially more efficient.</p> +%% +%% @see tuple_es/1 +%% @see c_tuple/1 + +-spec tuple_arity(c_tuple() | c_literal()) -> non_neg_integer(). + +tuple_arity(#c_tuple{es = Es}) -> + length(Es); +tuple_arity(#c_literal{val = V}) when is_tuple(V) -> + tuple_size(V). + + +%% --------------------------------------------------------------------- + +%% @spec c_var(Name::var_name()) -> cerl() +%% +%% var_name() = integer() | atom() | {atom(), arity()} +%% +%% @doc Creates an abstract variable. A variable is identified by its +%% name, given by the <code>Name</code> parameter. +%% +%% <p>If a name is given by a single atom, it should either be a +%% "simple" atom which does not need to be single-quoted in Erlang, or +%% otherwise its print name should correspond to a proper Erlang +%% variable, i.e., begin with an uppercase character or an +%% underscore. Names on the form <code>{A, N}</code> represent +%% function name variables "<code><em>A</em>/<em>N</em></code>"; these +%% are special variables which may be bound only in the function +%% definitions of a module or a <code>letrec</code>. They may not be +%% bound in <code>let</code> expressions and cannot occur in clause +%% patterns. The atom <code>A</code> in a function name may be any +%% atom; the integer <code>N</code> must be nonnegative. The functions +%% <code>c_fname/2</code> etc. are utilities for handling function +%% name variables.</p> +%% +%% <p>When printing variable names, they must have the form of proper +%% Core Erlang variables and function names. E.g., a name represented +%% by an integer such as <code>42</code> could be formatted as +%% "<code>_42</code>", an atom <code>'Xxx'</code> simply as +%% "<code>Xxx</code>", and an atom <code>foo</code> as +%% "<code>_foo</code>". However, one must assure that any two valid +%% distinct names are never mapped to the same strings. Tuples such +%% as <code>{foo, 2}</code> representing function names can simply by +%% formatted as "<code>'foo'/2</code>", with no risk of conflicts.</p> +%% +%% @see ann_c_var/2 +%% @see update_c_var/2 +%% @see is_c_var/1 +%% @see var_name/1 +%% @see c_fname/2 +%% @see c_module/4 +%% @see c_letrec/2 + +-spec c_var(var_name()) -> c_var(). + +c_var(Name) -> + #c_var{name = Name}. + + +%% @spec ann_c_var(As::anns(), Name::var_name()) -> c_var() +%% +%% @see c_var/1 + +-spec ann_c_var(anns(), var_name()) -> c_var(). + +ann_c_var(As, Name) -> + #c_var{name = Name, anno = As}. + +%% @spec update_c_var(Old::cerl(), Name::var_name()) -> c_var() +%% +%% @see c_var/1 + +-spec update_c_var(c_var(), var_name()) -> c_var(). + +update_c_var(Node, Name) -> + #c_var{name = Name, anno = get_ann(Node)}. + + +%% @spec is_c_var(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% variable, otherwise <code>false</code>. +%% +%% @see c_var/1 + +-spec is_c_var(cerl()) -> boolean(). + +is_c_var(#c_var{}) -> + true; +is_c_var(_) -> + false. + + +%% @spec c_fname(Name::atom(), Arity::arity()) -> c_var() +%% @equiv c_var({Name, Arity}) +%% @see fname_id/1 +%% @see fname_arity/1 +%% @see is_c_fname/1 +%% @see ann_c_fname/3 +%% @see update_c_fname/3 + +-spec c_fname(atom(), arity()) -> c_var(). + +c_fname(Atom, Arity) -> + c_var({Atom, Arity}). + + +%% @spec ann_c_fname(As::anns(), Name::atom(), Arity::arity()) -> c_var() +%% +%% @equiv ann_c_var(As, {Atom, Arity}) +%% @see c_fname/2 + +-spec ann_c_fname(anns(), atom(), arity()) -> c_var(). + +ann_c_fname(As, Atom, Arity) -> + ann_c_var(As, {Atom, Arity}). + + +%% @spec update_c_fname(Old::c_var(), Name::atom()) -> c_var() +%% @doc Like <code>update_c_fname/3</code>, but takes the arity from +%% <code>Node</code>. +%% @see update_c_fname/3 +%% @see c_fname/2 + +-spec update_c_fname(c_var(), atom()) -> c_var(). + +update_c_fname(#c_var{name = {_, Arity}, anno = As}, Atom) -> + #c_var{name = {Atom, Arity}, anno = As}. + + +%% @spec update_c_fname(Old::var(), Name::atom(), Arity::arity()) -> c_var() +%% +%% @equiv update_c_var(Old, {Atom, Arity}) +%% @see update_c_fname/2 +%% @see c_fname/2 + +-spec update_c_fname(c_var(), atom(), arity()) -> c_var(). + +update_c_fname(Node, Atom, Arity) -> + update_c_var(Node, {Atom, Arity}). + + +%% @spec is_c_fname(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% function name variable, otherwise <code>false</code>. +%% +%% @see c_fname/2 +%% @see c_var/1 +%% @see var_name/1 + +-spec is_c_fname(cerl()) -> boolean(). + +is_c_fname(#c_var{name = {A, N}}) when is_atom(A), is_integer(N), N >= 0 -> + true; +is_c_fname(_) -> + false. + + +%% @spec var_name(c_var()) -> var_name() +%% +%% @doc Returns the name of an abstract variable. +%% +%% @see c_var/1 + +-spec var_name(c_var()) -> var_name(). + +var_name(Node) -> + Node#c_var.name. + + +%% @spec fname_id(c_var()) -> atom() +%% +%% @doc Returns the identifier part of an abstract function name +%% variable. +%% +%% @see fname_arity/1 +%% @see c_fname/2 + +-spec fname_id(c_var()) -> atom(). + +fname_id(#c_var{name={A,_}}) -> + A. + + +%% @spec fname_arity(c_var()) -> arity() +%% +%% @doc Returns the arity part of an abstract function name variable. +%% +%% @see fname_id/1 +%% @see c_fname/2 + +-spec fname_arity(c_var()) -> arity(). + +fname_arity(#c_var{name={_,N}}) -> + N. + + +%% --------------------------------------------------------------------- + +%% @spec c_values(Elements::[cerl()]) -> c_values() +%% +%% @doc Creates an abstract value list. If <code>Elements</code> is +%% <code>[E1, ..., En]</code>, the result represents +%% "<code><<em>E1</em>, ..., <em>En</em>></code>". +%% +%% @see ann_c_values/2 +%% @see update_c_values/2 +%% @see is_c_values/1 +%% @see values_es/1 +%% @see values_arity/1 + +-spec c_values([cerl()]) -> c_values(). + +c_values(Es) -> + #c_values{es = Es}. + + +%% @spec ann_c_values(As::anns(), Elements::[cerl()]) -> c_values() +%% @see c_values/1 + +-spec ann_c_values(anns(), [cerl()]) -> c_values(). + +ann_c_values(As, Es) -> + #c_values{es = Es, anno = As}. + + +%% @spec update_c_values(Old::cerl(), Elements::[cerl()]) -> c_values() +%% @see c_values/1 + +-spec update_c_values(c_values(), [cerl()]) -> c_values(). + +update_c_values(Node, Es) -> + #c_values{es = Es, anno = get_ann(Node)}. + + +%% @spec is_c_values(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% value list; otherwise <code>false</code>. +%% +%% @see c_values/1 + +-spec is_c_values(cerl()) -> boolean(). + +is_c_values(#c_values{}) -> + true; +is_c_values(_) -> + false. + + +%% @spec values_es(c_values()) -> [cerl()] +%% +%% @doc Returns the list of element subtrees of an abstract value +%% list. +%% +%% @see c_values/1 +%% @see values_arity/1 + +-spec values_es(c_values()) -> [cerl()]. + +values_es(Node) -> + Node#c_values.es. + + +%% @spec values_arity(Node::c_values()) -> non_neg_integer() +%% +%% @doc Returns the number of element subtrees of an abstract value +%% list. +%% +%% <p>Note: This is equivalent to +%% <code>length(values_es(Node))</code>, but potentially more +%% efficient.</p> +%% +%% @see c_values/1 +%% @see values_es/1 + +-spec values_arity(c_values()) -> non_neg_integer(). + +values_arity(Node) -> + length(values_es(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_binary(Segments::[c_bitstr()]) -> c_binary() +%% +%% @doc Creates an abstract binary-template. A binary object is a +%% sequence of 8-bit bytes. It is specified by zero or more bit-string +%% template <em>segments</em> of arbitrary lengths (in number of bits), +%% such that the sum of the lengths is evenly divisible by 8. If +%% <code>Segments</code> is <code>[S1, ..., Sn]</code>, the result +%% represents "<code>#{<em>S1</em>, ..., <em>Sn</em>}#</code>". All the +%% <code>Si</code> must have type <code>bitstr</code>. +%% +%% @see ann_c_binary/2 +%% @see update_c_binary/2 +%% @see is_c_binary/1 +%% @see binary_segments/1 +%% @see c_bitstr/5 + +-spec c_binary([c_bitstr()]) -> c_binary(). + +c_binary(Segments) -> + #c_binary{segments = Segments}. + + +%% @spec ann_c_binary(As::anns(), Segments::[c_bitstr()]) -> c_binary() +%% @see c_binary/1 + +-spec ann_c_binary(anns(), [c_bitstr()]) -> c_binary(). + +ann_c_binary(As, Segments) -> + #c_binary{segments = Segments, anno = As}. + + +%% @spec update_c_binary(Old::cerl(), Segments::[c_bitstr()]) -> cerl() +%% @see c_binary/1 + +-spec update_c_binary(c_binary(), [c_bitstr()]) -> c_binary(). + +update_c_binary(Node, Segments) -> + #c_binary{segments = Segments, anno = get_ann(Node)}. + + +%% @spec is_c_binary(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% binary-template; otherwise <code>false</code>. +%% +%% @see c_binary/1 + +-spec is_c_binary(cerl()) -> boolean(). + +is_c_binary(#c_binary{}) -> + true; +is_c_binary(_) -> + false. + + +%% @spec binary_segments(cerl()) -> [c_bitstr()] +%% +%% @doc Returns the list of segment subtrees of an abstract +%% binary-template. +%% +%% @see c_binary/1 +%% @see c_bitstr/5 + +-spec binary_segments(c_binary()) -> [c_bitstr()]. + +binary_segments(Node) -> + Node#c_binary.segments. + + +%% @spec c_bitstr(Value::cerl(), Size::cerl(), Unit::cerl(), +%% Type::cerl(), Flags::cerl()) -> c_bitstr() +%% +%% @doc Creates an abstract bit-string template. These can only occur as +%% components of an abstract binary-template (see {@link c_binary/1}). +%% The result represents "<code>#<<em>Value</em>>(<em>Size</em>, +%% <em>Unit</em>, <em>Type</em>, <em>Flags</em>)</code>", where +%% <code>Unit</code> must represent a positive integer constant, +%% <code>Type</code> must represent a constant atom (one of +%% <code>'integer'</code>, <code>'float'</code>, or +%% <code>'binary'</code>), and <code>Flags</code> must represent a +%% constant list <code>"[<em>F1</em>, ..., <em>Fn</em>]"</code> where +%% all the <code>Fi</code> are atoms. +%% +%% @see c_binary/1 +%% @see ann_c_bitstr/6 +%% @see update_c_bitstr/6 +%% @see is_c_bitstr/1 +%% @see bitstr_val/1 +%% @see bitstr_size/1 +%% @see bitstr_unit/1 +%% @see bitstr_type/1 +%% @see bitstr_flags/1 + +-spec c_bitstr(cerl(), cerl(), cerl(), cerl(), cerl()) -> c_bitstr(). + +c_bitstr(Val, Size, Unit, Type, Flags) -> + #c_bitstr{val = Val, size = Size, unit = Unit, type = Type, + flags = Flags}. + + +%% @spec c_bitstr(Value::cerl(), Size::cerl(), Type::cerl(), +%% Flags::cerl()) -> c_bitstr() +%% @equiv c_bitstr(Value, Size, abstract(1), Type, Flags) + +-spec c_bitstr(cerl(), cerl(), cerl(), cerl()) -> c_bitstr(). + +c_bitstr(Val, Size, Type, Flags) -> + c_bitstr(Val, Size, abstract(1), Type, Flags). + + +%% @spec c_bitstr(Value::cerl(), Type::cerl(), +%% Flags::cerl()) -> c_bitstr() +%% @equiv c_bitstr(Value, abstract(all), abstract(1), Type, Flags) + +-spec c_bitstr(cerl(), cerl(), cerl()) -> c_bitstr(). + +c_bitstr(Val, Type, Flags) -> + c_bitstr(Val, abstract(all), abstract(1), Type, Flags). + + +%% @spec ann_c_bitstr(As::anns(), Value::cerl(), Size::cerl(), +%% Unit::cerl(), Type::cerl(), Flags::cerl()) -> cerl() +%% @see c_bitstr/5 +%% @see ann_c_bitstr/5 + +-spec ann_c_bitstr(anns(), cerl(), cerl(), cerl(), cerl(), cerl()) -> + c_bitstr(). + +ann_c_bitstr(As, Val, Size, Unit, Type, Flags) -> + #c_bitstr{val = Val, size = Size, unit = Unit, type = Type, + flags = Flags, anno = As}. + +%% @spec ann_c_bitstr(As::anns(), Value::cerl(), Size::cerl(), +%% Type::cerl(), Flags::cerl()) -> c_bitstr() +%% @equiv ann_c_bitstr(As, Value, Size, abstract(1), Type, Flags) + +-spec ann_c_bitstr(anns(), cerl(), cerl(), cerl(), cerl()) -> c_bitstr(). + +ann_c_bitstr(As, Value, Size, Type, Flags) -> + ann_c_bitstr(As, Value, Size, abstract(1), Type, Flags). + + +%% @spec update_c_bitstr(Old::c_bitstr(), Value::cerl(), Size::cerl(), +%% Unit::cerl(), Type::cerl(), Flags::cerl()) -> c_bitstr() +%% @see c_bitstr/5 +%% @see update_c_bitstr/5 + +-spec update_c_bitstr(c_bitstr(), cerl(), cerl(), cerl(), cerl(), cerl()) -> + c_bitstr(). + +update_c_bitstr(Node, Val, Size, Unit, Type, Flags) -> + #c_bitstr{val = Val, size = Size, unit = Unit, type = Type, + flags = Flags, anno = get_ann(Node)}. + + +%% @spec update_c_bitstr(Old::c_bitstr(), Value::cerl(), Size::cerl(), +%% Type::cerl(), Flags::cerl()) -> c_bitstr() +%% @equiv update_c_bitstr(Node, Value, Size, abstract(1), Type, Flags) + +-spec update_c_bitstr(c_bitstr(), cerl(), cerl(), cerl(), cerl()) -> c_bitstr(). + +update_c_bitstr(Node, Value, Size, Type, Flags) -> + update_c_bitstr(Node, Value, Size, abstract(1), Type, Flags). + +%% @spec is_c_bitstr(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% bit-string template; otherwise <code>false</code>. +%% +%% @see c_bitstr/5 + +-spec is_c_bitstr(cerl()) -> boolean(). + +is_c_bitstr(#c_bitstr{}) -> + true; +is_c_bitstr(_) -> + false. + + +%% @spec bitstr_val(c_bitstr()) -> cerl() +%% +%% @doc Returns the value subtree of an abstract bit-string template. +%% +%% @see c_bitstr/5 + +-spec bitstr_val(c_bitstr()) -> cerl(). + +bitstr_val(Node) -> + Node#c_bitstr.val. + + +%% @spec bitstr_size(c_bitstr()) -> cerl() +%% +%% @doc Returns the size subtree of an abstract bit-string template. +%% +%% @see c_bitstr/5 + +-spec bitstr_size(c_bitstr()) -> cerl(). + +bitstr_size(Node) -> + Node#c_bitstr.size. + + +%% @spec bitstr_bitsize(c_bitstr()) -> any | all | utf | integer() +%% +%% @doc Returns the total size in bits of an abstract bit-string +%% template. If the size field is an integer literal, the result is the +%% product of the size and unit values; if the size field is the atom +%% literal <code>all</code>, the atom <code>all</code> is returned. +%% If the size is not a literal, the atom <code>any</code> is returned. +%% +%% @see c_bitstr/5 + +-spec bitstr_bitsize(c_bitstr()) -> 'all' | 'any' | 'utf' | non_neg_integer(). + +bitstr_bitsize(Node) -> + Size = Node#c_bitstr.size, + case is_literal(Size) of + true -> + case concrete(Size) of + all -> + all; + undefined -> + %% just an assertion below + "utf" ++ _ = atom_to_list(concrete(Node#c_bitstr.type)), + utf; + S when is_integer(S) -> + S * concrete(Node#c_bitstr.unit) + end; + false -> + any + end. + + +%% @spec bitstr_unit(c_bitstr()) -> cerl() +%% +%% @doc Returns the unit subtree of an abstract bit-string template. +%% +%% @see c_bitstr/5 + +-spec bitstr_unit(c_bitstr()) -> cerl(). + +bitstr_unit(Node) -> + Node#c_bitstr.unit. + + +%% @spec bitstr_type(c_bitstr()) -> cerl() +%% +%% @doc Returns the type subtree of an abstract bit-string template. +%% +%% @see c_bitstr/5 + +-spec bitstr_type(c_bitstr()) -> cerl(). + +bitstr_type(Node) -> + Node#c_bitstr.type. + + +%% @spec bitstr_flags(c_bitstr()) -> cerl() +%% +%% @doc Returns the flags subtree of an abstract bit-string template. +%% +%% @see c_bitstr/5 + +-spec bitstr_flags(c_bitstr()) -> cerl(). + +bitstr_flags(Node) -> + Node#c_bitstr.flags. + + +%% --------------------------------------------------------------------- + +%% @spec c_fun(Variables::[c_var()], Body::cerl()) -> c_fun() +%% +%% @doc Creates an abstract fun-expression. If <code>Variables</code> +%% is <code>[V1, ..., Vn]</code>, the result represents "<code>fun +%% (<em>V1</em>, ..., <em>Vn</em>) -> <em>Body</em></code>". All the +%% <code>Vi</code> must have type <code>var</code>. +%% +%% @see ann_c_fun/3 +%% @see update_c_fun/3 +%% @see is_c_fun/1 +%% @see fun_vars/1 +%% @see fun_body/1 +%% @see fun_arity/1 + +-spec c_fun([c_var()], cerl()) -> c_fun(). + +c_fun(Variables, Body) -> + #c_fun{vars = Variables, body = Body}. + + +%% @spec ann_c_fun(As::anns(), Variables::[c_var()], Body::cerl()) -> +%% c_fun() +%% @see c_fun/2 + +-spec ann_c_fun(anns(), [c_var()], cerl()) -> c_fun(). + +ann_c_fun(As, Variables, Body) -> + #c_fun{vars = Variables, body = Body, anno = As}. + + +%% @spec update_c_fun(Old::c_fun(), Variables::[c_var()], +%% Body::cerl()) -> c_fun() +%% @see c_fun/2 + +-spec update_c_fun(c_fun(), [c_var()], cerl()) -> c_fun(). + +update_c_fun(Node, Variables, Body) -> + #c_fun{vars = Variables, body = Body, anno = get_ann(Node)}. + + +%% @spec is_c_fun(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% fun-expression, otherwise <code>false</code>. +%% +%% @see c_fun/2 + +-spec is_c_fun(cerl()) -> boolean(). + +is_c_fun(#c_fun{}) -> + true; % Now this is fun! +is_c_fun(_) -> + false. + + +%% @spec fun_vars(c_fun()) -> [c_var()] +%% +%% @doc Returns the list of parameter subtrees of an abstract +%% fun-expression. +%% +%% @see c_fun/2 +%% @see fun_arity/1 + +-spec fun_vars(c_fun()) -> [c_var()]. + +fun_vars(Node) -> + Node#c_fun.vars. + + +%% @spec fun_body(c_fun()) -> cerl() +%% +%% @doc Returns the body subtree of an abstract fun-expression. +%% +%% @see c_fun/2 + +-spec fun_body(c_fun()) -> cerl(). + +fun_body(Node) -> + Node#c_fun.body. + + +%% @spec fun_arity(Node::c_fun()) -> arity() +%% +%% @doc Returns the number of parameter subtrees of an abstract +%% fun-expression. +%% +%% <p>Note: this is equivalent to <code>length(fun_vars(Node))</code>, +%% but potentially more efficient.</p> +%% +%% @see c_fun/2 +%% @see fun_vars/1 + +-spec fun_arity(c_fun()) -> arity(). + +fun_arity(Node) -> + length(fun_vars(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_seq(Argument::cerl(), Body::cerl()) -> c_seq() +%% +%% @doc Creates an abstract sequencing expression. The result +%% represents "<code>do <em>Argument</em> <em>Body</em></code>". +%% +%% @see ann_c_seq/3 +%% @see update_c_seq/3 +%% @see is_c_seq/1 +%% @see seq_arg/1 +%% @see seq_body/1 + +-spec c_seq(cerl(), cerl()) -> c_seq(). + +c_seq(Argument, Body) -> + #c_seq{arg = Argument, body = Body}. + + +%% @spec ann_c_seq(As::anns(), Argument::cerl(), Body::cerl()) -> c_seq() +%% +%% @see c_seq/2 + +-spec ann_c_seq(anns(), cerl(), cerl()) -> c_seq(). + +ann_c_seq(As, Argument, Body) -> + #c_seq{arg = Argument, body = Body, anno = As}. + + +%% @spec update_c_seq(Old::c_seq(), Argument::cerl(), Body::cerl()) -> +%% c_seq() +%% @see c_seq/2 + +-spec update_c_seq(c_seq(), cerl(), cerl()) -> c_seq(). + +update_c_seq(Node, Argument, Body) -> + #c_seq{arg = Argument, body = Body, anno = get_ann(Node)}. + + +%% @spec is_c_seq(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% sequencing expression, otherwise <code>false</code>. +%% +%% @see c_seq/2 + +-spec is_c_seq(cerl()) -> boolean(). + +is_c_seq(#c_seq{}) -> + true; +is_c_seq(_) -> + false. + + +%% @spec seq_arg(c_seq()) -> cerl() +%% +%% @doc Returns the argument subtree of an abstract sequencing +%% expression. +%% +%% @see c_seq/2 + +-spec seq_arg(c_seq()) -> cerl(). + +seq_arg(Node) -> + Node#c_seq.arg. + + +%% @spec seq_body(c_seq()) -> cerl() +%% +%% @doc Returns the body subtree of an abstract sequencing expression. +%% +%% @see c_seq/2 + +-spec seq_body(c_seq()) -> cerl(). + +seq_body(Node) -> + Node#c_seq.body. + + +%% --------------------------------------------------------------------- + +%% @spec c_let(Variables::[c_var()], Argument::cerl(), Body::cerl()) -> +%% c_let() +%% +%% @doc Creates an abstract let-expression. If <code>Variables</code> +%% is <code>[V1, ..., Vn]</code>, the result represents "<code>let +%% <<em>V1</em>, ..., <em>Vn</em>> = <em>Argument</em> in +%% <em>Body</em></code>". All the <code>Vi</code> must have type +%% <code>var</code>. +%% +%% @see ann_c_let/4 +%% @see update_c_let/4 +%% @see is_c_let/1 +%% @see let_vars/1 +%% @see let_arg/1 +%% @see let_body/1 +%% @see let_arity/1 + +-spec c_let([c_var()], cerl(), cerl()) -> c_let(). + +c_let(Variables, Argument, Body) -> + #c_let{vars = Variables, arg = Argument, body = Body}. + + +%% ann_c_let(As, Variables, Argument, Body) -> c_let() +%% @see c_let/3 + +-spec ann_c_let(anns(), [c_var()], cerl(), cerl()) -> c_let(). + +ann_c_let(As, Variables, Argument, Body) -> + #c_let{vars = Variables, arg = Argument, body = Body, anno = As}. + + +%% update_c_let(Old, Variables, Argument, Body) -> c_let() +%% @see c_let/3 + +-spec update_c_let(c_let(), [c_var()], cerl(), cerl()) -> c_let(). + +update_c_let(Node, Variables, Argument, Body) -> + #c_let{vars = Variables, arg = Argument, body = Body, + anno = get_ann(Node)}. + + +%% @spec is_c_let(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% let-expression, otherwise <code>false</code>. +%% +%% @see c_let/3 + +-spec is_c_let(cerl()) -> boolean(). + +is_c_let(#c_let{}) -> + true; +is_c_let(_) -> + false. + + +%% @spec let_vars(c_let()) -> [c_var()] +%% +%% @doc Returns the list of left-hand side variables of an abstract +%% let-expression. +%% +%% @see c_let/3 +%% @see let_arity/1 + +-spec let_vars(c_let()) -> [c_var()]. + +let_vars(Node) -> + Node#c_let.vars. + + +%% @spec let_arg(c_let()) -> cerl() +%% +%% @doc Returns the argument subtree of an abstract let-expression. +%% +%% @see c_let/3 + +-spec let_arg(c_let()) -> cerl(). + +let_arg(Node) -> + Node#c_let.arg. + + +%% @spec let_body(c_let()) -> cerl() +%% +%% @doc Returns the body subtree of an abstract let-expression. +%% +%% @see c_let/3 + +-spec let_body(c_let()) -> cerl(). + +let_body(Node) -> + Node#c_let.body. + + +%% @spec let_arity(Node::c_let()) -> non_neg_integer() +%% +%% @doc Returns the number of left-hand side variables of an abstract +%% let-expression. +%% +%% <p>Note: this is equivalent to <code>length(let_vars(Node))</code>, +%% but potentially more efficient.</p> +%% +%% @see c_let/3 +%% @see let_vars/1 + +-spec let_arity(c_let()) -> non_neg_integer(). + +let_arity(Node) -> + length(let_vars(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_letrec(Definitions::defs(), Body::cerl()) -> c_letrec() +%% +%% @doc Creates an abstract letrec-expression. If +%% <code>Definitions</code> is <code>[{V1, F1}, ..., {Vn, Fn}]</code>, +%% the result represents "<code>letrec <em>V1</em> = <em>F1</em> +%% ... <em>Vn</em> = <em>Fn</em> in <em>Body</em></code>. All the +%% <code>Vi</code> must have type <code>var</code> and represent +%% function names. All the <code>Fi</code> must have type +%% <code>'fun'</code>. +%% +%% @see ann_c_letrec/3 +%% @see update_c_letrec/3 +%% @see is_c_letrec/1 +%% @see letrec_defs/1 +%% @see letrec_body/1 +%% @see letrec_vars/1 + +-spec c_letrec(defs(), cerl()) -> c_letrec(). + +c_letrec(Defs, Body) -> + #c_letrec{defs = Defs, body = Body}. + + +%% @spec ann_c_letrec(As::anns(), Definitions::defs(), +%% Body::cerl()) -> c_letrec() +%% @see c_letrec/2 + +-spec ann_c_letrec(anns(), defs(), cerl()) -> c_letrec(). + +ann_c_letrec(As, Defs, Body) -> + #c_letrec{defs = Defs, body = Body, anno = As}. + + +%% @spec update_c_letrec(Old::c_letrec(), Definitions::defs(), +%% Body::cerl()) -> c_letrec() +%% @see c_letrec/2 + +-spec update_c_letrec(c_letrec(), defs(), cerl()) -> c_letrec(). + +update_c_letrec(Node, Defs, Body) -> + #c_letrec{defs = Defs, body = Body, anno = get_ann(Node)}. + + +%% @spec is_c_letrec(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% letrec-expression, otherwise <code>false</code>. +%% +%% @see c_letrec/2 + +-spec is_c_letrec(cerl()) -> boolean(). + +is_c_letrec(#c_letrec{}) -> + true; +is_c_letrec(_) -> + false. + + +%% @spec letrec_defs(Node::c_letrec()) -> defs() +%% +%% @doc Returns the list of definitions of an abstract +%% letrec-expression. If <code>Node</code> represents "<code>letrec +%% <em>V1</em> = <em>F1</em> ... <em>Vn</em> = <em>Fn</em> in +%% <em>Body</em></code>", the returned value is <code>[{V1, F1}, ..., +%% {Vn, Fn}]</code>. +%% +%% @see c_letrec/2 + +-spec letrec_defs(c_letrec()) -> defs(). + +letrec_defs(Node) -> + Node#c_letrec.defs. + + +%% @spec letrec_body(c_letrec()) -> cerl() +%% +%% @doc Returns the body subtree of an abstract letrec-expression. +%% +%% @see c_letrec/2 + +-spec letrec_body(c_letrec()) -> cerl(). + +letrec_body(Node) -> + Node#c_letrec.body. + + +%% @spec letrec_vars(c_letrec()) -> [cerl()] +%% +%% @doc Returns the list of left-hand side function variable subtrees +%% of a letrec-expression. If <code>Node</code> represents +%% "<code>letrec <em>V1</em> = <em>F1</em> ... <em>Vn</em> = +%% <em>Fn</em> in <em>Body</em></code>", the returned value is +%% <code>[V1, ..., Vn]</code>. +%% +%% @see c_letrec/2 + +-spec letrec_vars(c_letrec()) -> [cerl()]. + +letrec_vars(Node) -> + [F || {F, _} <- letrec_defs(Node)]. + + +%% --------------------------------------------------------------------- + +%% @spec c_case(Argument::cerl(), Clauses::[cerl()]) -> c_case() +%% +%% @doc Creates an abstract case-expression. If <code>Clauses</code> +%% is <code>[C1, ..., Cn]</code>, the result represents "<code>case +%% <em>Argument</em> of <em>C1</em> ... <em>Cn</em> +%% end</code>". <code>Clauses</code> must not be empty. +%% +%% @see ann_c_case/3 +%% @see update_c_case/3 +%% @see is_c_case/1 +%% @see c_clause/3 +%% @see case_arg/1 +%% @see case_clauses/1 +%% @see case_arity/1 + +-spec c_case(cerl(), [cerl()]) -> c_case(). + +c_case(Expr, Clauses) -> + #c_case{arg = Expr, clauses = Clauses}. + + +%% @spec ann_c_case(As::anns(), Argument::cerl(), +%% Clauses::[cerl()]) -> c_case() +%% @see c_case/2 + +-spec ann_c_case(anns(), cerl(), [cerl()]) -> c_case(). + +ann_c_case(As, Expr, Clauses) -> + #c_case{arg = Expr, clauses = Clauses, anno = As}. + + +%% @spec update_c_case(Old::cerl(), Argument::cerl(), +%% Clauses::[cerl()]) -> c_case() +%% @see c_case/2 + +-spec update_c_case(c_case(), cerl(), [cerl()]) -> c_case(). + +update_c_case(Node, Expr, Clauses) -> + #c_case{arg = Expr, clauses = Clauses, anno = get_ann(Node)}. + + +%% is_c_case(Node) -> boolean() +%% +%% Node = cerl() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% case-expression; otherwise <code>false</code>. +%% +%% @see c_case/2 + +-spec is_c_case(cerl()) -> boolean(). + +is_c_case(#c_case{}) -> + true; +is_c_case(_) -> + false. + + +%% @spec case_arg(c_case()) -> cerl() +%% +%% @doc Returns the argument subtree of an abstract case-expression. +%% +%% @see c_case/2 + +-spec case_arg(c_case()) -> cerl(). + +case_arg(Node) -> + Node#c_case.arg. + + +%% @spec case_clauses(c_case()) -> [cerl()] +%% +%% @doc Returns the list of clause subtrees of an abstract +%% case-expression. +%% +%% @see c_case/2 +%% @see case_arity/1 + +-spec case_clauses(c_case()) -> [cerl()]. + +case_clauses(Node) -> + Node#c_case.clauses. + + +%% @spec case_arity(Node::c_case()) -> non_neg_integer() +%% +%% @doc Equivalent to +%% <code>clause_arity(hd(case_clauses(Node)))</code>, but potentially +%% more efficient. +%% +%% @see c_case/2 +%% @see case_clauses/1 +%% @see clause_arity/1 + +-spec case_arity(c_case()) -> non_neg_integer(). + +case_arity(Node) -> + clause_arity(hd(case_clauses(Node))). + + +%% --------------------------------------------------------------------- + +%% @spec c_clause(Patterns::[cerl()], Body::cerl()) -> c_clause() +%% @equiv c_clause(Patterns, c_atom(true), Body) +%% @see c_atom/1 + +-spec c_clause([cerl()], cerl()) -> c_clause(). + +c_clause(Patterns, Body) -> + c_clause(Patterns, c_atom(true), Body). + + +%% @spec c_clause(Patterns::[cerl()], Guard::cerl(), Body::cerl()) -> +%% c_clause() +%% +%% @doc Creates an an abstract clause. If <code>Patterns</code> is +%% <code>[P1, ..., Pn]</code>, the result represents +%% "<code><<em>P1</em>, ..., <em>Pn</em>> when <em>Guard</em> -> +%% <em>Body</em></code>". +%% +%% @see c_clause/2 +%% @see ann_c_clause/4 +%% @see update_c_clause/4 +%% @see is_c_clause/1 +%% @see c_case/2 +%% @see c_receive/3 +%% @see clause_pats/1 +%% @see clause_guard/1 +%% @see clause_body/1 +%% @see clause_arity/1 +%% @see clause_vars/1 + +-spec c_clause([cerl()], cerl(), cerl()) -> c_clause(). + +c_clause(Patterns, Guard, Body) -> + #c_clause{pats = Patterns, guard = Guard, body = Body}. + + +%% @spec ann_c_clause(As::anns(), Patterns::[cerl()], +%% Body::cerl()) -> c_clause() +%% @equiv ann_c_clause(As, Patterns, c_atom(true), Body) +%% @see c_clause/3 + +-spec ann_c_clause(anns(), [cerl()], cerl()) -> c_clause(). + +ann_c_clause(As, Patterns, Body) -> + ann_c_clause(As, Patterns, c_atom(true), Body). + + +%% @spec ann_c_clause(As::anns(), Patterns::[cerl()], Guard::cerl(), +%% Body::cerl()) -> c_clause() +%% @see ann_c_clause/3 +%% @see c_clause/3 + +-spec ann_c_clause(anns(), [cerl()], cerl(), cerl()) -> c_clause(). + +ann_c_clause(As, Patterns, Guard, Body) -> + #c_clause{pats = Patterns, guard = Guard, body = Body, anno = As}. + + +%% @spec update_c_clause(Old::c_clause(), Patterns::[cerl()], +%% Guard::cerl(), Body::cerl()) -> c_clause() +%% @see c_clause/3 + +-spec update_c_clause(c_clause(), [cerl()], cerl(), cerl()) -> c_clause(). + +update_c_clause(Node, Patterns, Guard, Body) -> + #c_clause{pats = Patterns, guard = Guard, body = Body, + anno = get_ann(Node)}. + + +%% @spec is_c_clause(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% clause, otherwise <code>false</code>. +%% +%% @see c_clause/3 + +-spec is_c_clause(cerl()) -> boolean(). + +is_c_clause(#c_clause{}) -> + true; +is_c_clause(_) -> + false. + + +%% @spec clause_pats(c_clause()) -> [cerl()] +%% +%% @doc Returns the list of pattern subtrees of an abstract clause. +%% +%% @see c_clause/3 +%% @see clause_arity/1 + +-spec clause_pats(c_clause()) -> [cerl()]. + +clause_pats(Node) -> + Node#c_clause.pats. + + +%% @spec clause_guard(c_clause()) -> cerl() +%% +%% @doc Returns the guard subtree of an abstract clause. +%% +%% @see c_clause/3 + +-spec clause_guard(c_clause()) -> cerl(). + +clause_guard(Node) -> + Node#c_clause.guard. + + +%% @spec clause_body(c_clause()) -> cerl() +%% +%% @doc Returns the body subtree of an abstract clause. +%% +%% @see c_clause/3 + +-spec clause_body(c_clause()) -> cerl(). + +clause_body(Node) -> + Node#c_clause.body. + + +%% @spec clause_arity(Node::c_clause()) -> non_neg_integer() +%% +%% @doc Returns the number of pattern subtrees of an abstract clause. +%% +%% <p>Note: this is equivalent to +%% <code>length(clause_pats(Node))</code>, but potentially more +%% efficient.</p> +%% +%% @see c_clause/3 +%% @see clause_pats/1 + +-spec clause_arity(c_clause()) -> non_neg_integer(). + +clause_arity(Node) -> + length(clause_pats(Node)). + + +%% @spec clause_vars(c_clause()) -> [cerl()] +%% +%% @doc Returns the list of all abstract variables in the patterns of +%% an abstract clause. The order of listing is not defined. +%% +%% @see c_clause/3 +%% @see pat_list_vars/1 + +-spec clause_vars(c_clause()) -> [cerl()]. + +clause_vars(Clause) -> + pat_list_vars(clause_pats(Clause)). + + +%% @spec pat_vars(Pattern::cerl()) -> [cerl()] +%% +%% @doc Returns the list of all abstract variables in a pattern. An +%% exception is thrown if <code>Node</code> does not represent a +%% well-formed Core Erlang clause pattern. The order of listing is not +%% defined. +%% +%% @see pat_list_vars/1 +%% @see clause_vars/1 + +-spec pat_vars(cerl()) -> [cerl()]. + +pat_vars(Node) -> + pat_vars(Node, []). + +pat_vars(Node, Vs) -> + case type(Node) of + var -> + [Node | Vs]; + literal -> + Vs; + cons -> + pat_vars(cons_hd(Node), pat_vars(cons_tl(Node), Vs)); + tuple -> + pat_list_vars(tuple_es(Node), Vs); + map -> + pat_list_vars(map_es(Node), Vs); + map_pair -> + %% map_pair_key is not a pattern var, excluded + pat_list_vars([map_pair_op(Node),map_pair_val(Node)],Vs); + binary -> + pat_list_vars(binary_segments(Node), Vs); + bitstr -> + %% bitstr_size is not a pattern var, excluded + pat_vars(bitstr_val(Node), Vs); + alias -> + pat_vars(alias_pat(Node), [alias_var(Node) | Vs]) + end. + + +%% @spec pat_list_vars(Patterns::[cerl()]) -> [cerl()] +%% +%% @doc Returns the list of all abstract variables in the given +%% patterns. An exception is thrown if some element in +%% <code>Patterns</code> does not represent a well-formed Core Erlang +%% clause pattern. The order of listing is not defined. +%% +%% @see pat_vars/1 +%% @see clause_vars/1 + +-spec pat_list_vars([cerl()]) -> [cerl()]. + +pat_list_vars(Ps) -> + pat_list_vars(Ps, []). + +pat_list_vars([P | Ps], Vs) -> + pat_list_vars(Ps, pat_vars(P, Vs)); +pat_list_vars([], Vs) -> + Vs. + + +%% --------------------------------------------------------------------- + +%% @spec c_alias(Variable::c_var(), Pattern::cerl()) -> c_alias() +%% +%% @doc Creates an abstract pattern alias. The result represents +%% "<code><em>Variable</em> = <em>Pattern</em></code>". +%% +%% @see ann_c_alias/3 +%% @see update_c_alias/3 +%% @see is_c_alias/1 +%% @see alias_var/1 +%% @see alias_pat/1 +%% @see c_clause/3 + +-spec c_alias(c_var(), cerl()) -> c_alias(). + +c_alias(Var, Pattern) -> + #c_alias{var = Var, pat = Pattern}. + + +%% @spec ann_c_alias(As::anns(), Variable::c_var(), +%% Pattern::cerl()) -> c_alias() +%% @see c_alias/2 + +-spec ann_c_alias(anns(), c_var(), cerl()) -> c_alias(). + +ann_c_alias(As, Var, Pattern) -> + #c_alias{var = Var, pat = Pattern, anno = As}. + + +%% @spec update_c_alias(Old::cerl(), Variable::c_var(), +%% Pattern::cerl()) -> c_alias() +%% @see c_alias/2 + +-spec update_c_alias(c_alias(), c_var(), cerl()) -> c_alias(). + +update_c_alias(Node, Var, Pattern) -> + #c_alias{var = Var, pat = Pattern, anno = get_ann(Node)}. + + +%% @spec is_c_alias(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% pattern alias, otherwise <code>false</code>. +%% +%% @see c_alias/2 + +-spec is_c_alias(cerl()) -> boolean(). + +is_c_alias(#c_alias{}) -> + true; +is_c_alias(_) -> + false. + + +%% @spec alias_var(c_alias()) -> c_var() +%% +%% @doc Returns the variable subtree of an abstract pattern alias. +%% +%% @see c_alias/2 + +-spec alias_var(c_alias()) -> c_var(). + +alias_var(Node) -> + Node#c_alias.var. + + +%% @spec alias_pat(c_alias()) -> cerl() +%% +%% @doc Returns the pattern subtree of an abstract pattern alias. +%% +%% @see c_alias/2 + +-spec alias_pat(c_alias()) -> cerl(). + +alias_pat(Node) -> + Node#c_alias.pat. + + +%% --------------------------------------------------------------------- + +%% @spec c_receive(Clauses::[cerl()]) -> c_receive() +%% @equiv c_receive(Clauses, c_atom(infinity), c_atom(true)) +%% @see c_atom/1 + +-spec c_receive([cerl()]) -> c_receive(). + +c_receive(Clauses) -> + c_receive(Clauses, c_atom(infinity), c_atom(true)). + + +%% @spec c_receive(Clauses::[cerl()], Timeout::cerl(), +%% Action::cerl()) -> c_receive() +%% +%% @doc Creates an abstract receive-expression. If +%% <code>Clauses</code> is <code>[C1, ..., Cn]</code>, the result +%% represents "<code>receive <em>C1</em> ... <em>Cn</em> after +%% <em>Timeout</em> -> <em>Action</em> end</code>". +%% +%% @see c_receive/1 +%% @see ann_c_receive/4 +%% @see update_c_receive/4 +%% @see is_c_receive/1 +%% @see receive_clauses/1 +%% @see receive_timeout/1 +%% @see receive_action/1 + +-spec c_receive([cerl()], cerl(), cerl()) -> c_receive(). + +c_receive(Clauses, Timeout, Action) -> + #c_receive{clauses = Clauses, timeout = Timeout, action = Action}. + + +%% @spec ann_c_receive(As::anns(), Clauses::[cerl()]) -> c_receive() +%% @equiv ann_c_receive(As, Clauses, c_atom(infinity), c_atom(true)) +%% @see c_receive/3 +%% @see c_atom/1 + +-spec ann_c_receive(anns(), [cerl()]) -> c_receive(). + +ann_c_receive(As, Clauses) -> + ann_c_receive(As, Clauses, c_atom(infinity), c_atom(true)). + + +%% @spec ann_c_receive(As::anns(), Clauses::[cerl()], +%% Timeout::cerl(), Action::cerl()) -> c_receive() +%% @see ann_c_receive/2 +%% @see c_receive/3 + +-spec ann_c_receive(anns(), [cerl()], cerl(), cerl()) -> c_receive(). + +ann_c_receive(As, Clauses, Timeout, Action) -> + #c_receive{clauses = Clauses, timeout = Timeout, action = Action, + anno = As}. + + +%% @spec update_c_receive(Old::cerl(), Clauses::[cerl()], +%% Timeout::cerl(), Action::cerl()) -> c_receive() +%% @see c_receive/3 + +-spec update_c_receive(c_receive(), [cerl()], cerl(), cerl()) -> c_receive(). + +update_c_receive(Node, Clauses, Timeout, Action) -> + #c_receive{clauses = Clauses, timeout = Timeout, action = Action, + anno = get_ann(Node)}. + + +%% @spec is_c_receive(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% receive-expression, otherwise <code>false</code>. +%% +%% @see c_receive/3 + +-spec is_c_receive(cerl()) -> boolean(). + +is_c_receive(#c_receive{}) -> + true; +is_c_receive(_) -> + false. + + +%% @spec receive_clauses(c_receive()) -> [cerl()] +%% +%% @doc Returns the list of clause subtrees of an abstract +%% receive-expression. +%% +%% @see c_receive/3 + +-spec receive_clauses(c_receive()) -> [cerl()]. + +receive_clauses(Node) -> + Node#c_receive.clauses. + + +%% @spec receive_timeout(c_receive()) -> cerl() +%% +%% @doc Returns the timeout subtree of an abstract receive-expression. +%% +%% @see c_receive/3 + +-spec receive_timeout(c_receive()) -> cerl(). + +receive_timeout(Node) -> + Node#c_receive.timeout. + + +%% @spec receive_action(c_receive()) -> cerl() +%% +%% @doc Returns the action subtree of an abstract receive-expression. +%% +%% @see c_receive/3 + +-spec receive_action(c_receive()) -> cerl(). + +receive_action(Node) -> + Node#c_receive.action. + + +%% --------------------------------------------------------------------- + +%% @spec c_apply(Operator::c_var(), Arguments::[cerl()]) -> c_apply() +%% +%% @doc Creates an abstract function application. If +%% <code>Arguments</code> is <code>[A1, ..., An]</code>, the result +%% represents "<code>apply <em>Operator</em>(<em>A1</em>, ..., +%% <em>An</em>)</code>". +%% +%% @see ann_c_apply/3 +%% @see update_c_apply/3 +%% @see is_c_apply/1 +%% @see apply_op/1 +%% @see apply_args/1 +%% @see apply_arity/1 +%% @see c_call/3 +%% @see c_primop/2 + +-spec c_apply(c_var(), [cerl()]) -> c_apply(). + +c_apply(Operator, Arguments) -> + #c_apply{op = Operator, args = Arguments}. + + +%% @spec ann_c_apply(As::anns(), Operator::c_var(), +%% Arguments::[cerl()]) -> c_apply() +%% @see c_apply/2 + +-spec ann_c_apply(anns(), c_var(), [cerl()]) -> c_apply(). + +ann_c_apply(As, Operator, Arguments) -> + #c_apply{op = Operator, args = Arguments, anno = As}. + + +%% @spec update_c_apply(Old::c_apply(), Operator::cerl(), +%% Arguments::[cerl()]) -> c_apply() +%% @see c_apply/2 + +-spec update_c_apply(c_apply(), c_var(), [cerl()]) -> c_apply(). + +update_c_apply(Node, Operator, Arguments) -> + #c_apply{op = Operator, args = Arguments, anno = get_ann(Node)}. + + +%% @spec is_c_apply(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% function application, otherwise <code>false</code>. +%% +%% @see c_apply/2 + +-spec is_c_apply(cerl()) -> boolean(). + +is_c_apply(#c_apply{}) -> + true; +is_c_apply(_) -> + false. + + +%% @spec apply_op(c_apply()) -> c_var() +%% +%% @doc Returns the operator subtree of an abstract function +%% application. +%% +%% @see c_apply/2 + +-spec apply_op(c_apply()) -> c_var(). + +apply_op(Node) -> + Node#c_apply.op. + + +%% @spec apply_args(c_apply()) -> [cerl()] +%% +%% @doc Returns the list of argument subtrees of an abstract function +%% application. +%% +%% @see c_apply/2 +%% @see apply_arity/1 + +-spec apply_args(c_apply()) -> [cerl()]. + +apply_args(Node) -> + Node#c_apply.args. + + +%% @spec apply_arity(Node::c_apply()) -> arity() +%% +%% @doc Returns the number of argument subtrees of an abstract +%% function application. +%% +%% <p>Note: this is equivalent to +%% <code>length(apply_args(Node))</code>, but potentially more +%% efficient.</p> +%% +%% @see c_apply/2 +%% @see apply_args/1 + +-spec apply_arity(c_apply()) -> arity(). + +apply_arity(Node) -> + length(apply_args(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_call(Module::cerl(), Name::cerl(), Arguments::[cerl()]) -> +%% c_call() +%% +%% @doc Creates an abstract inter-module call. If +%% <code>Arguments</code> is <code>[A1, ..., An]</code>, the result +%% represents "<code>call <em>Module</em>:<em>Name</em>(<em>A1</em>, +%% ..., <em>An</em>)</code>". +%% +%% @see ann_c_call/4 +%% @see update_c_call/4 +%% @see is_c_call/1 +%% @see call_module/1 +%% @see call_name/1 +%% @see call_args/1 +%% @see call_arity/1 +%% @see c_apply/2 +%% @see c_primop/2 + +-spec c_call(cerl(), cerl(), [cerl()]) -> c_call(). + +c_call(Module, Name, Arguments) -> + #c_call{module = Module, name = Name, args = Arguments}. + + +%% @spec ann_c_call(As::anns(), Module::cerl(), Name::cerl(), +%% Arguments::[cerl()]) -> c_call() +%% @see c_call/3 + +-spec ann_c_call(anns(), cerl(), cerl(), [cerl()]) -> c_call(). + +ann_c_call(As, Module, Name, Arguments) -> + #c_call{module = Module, name = Name, args = Arguments, anno = As}. + + +%% @spec update_c_call(Old::cerl(), Module::cerl(), Name::cerl(), +%% Arguments::[cerl()]) -> c_call() +%% @see c_call/3 + +-spec update_c_call(cerl(), cerl(), cerl(), [cerl()]) -> c_call(). + +update_c_call(Node, Module, Name, Arguments) -> + #c_call{module = Module, name = Name, args = Arguments, + anno = get_ann(Node)}. + + +%% @spec is_c_call(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% inter-module call expression; otherwise <code>false</code>. +%% +%% @see c_call/3 + +-spec is_c_call(cerl()) -> boolean(). + +is_c_call(#c_call{}) -> + true; +is_c_call(_) -> + false. + + +%% @spec call_module(c_call()) -> cerl() +%% +%% @doc Returns the module subtree of an abstract inter-module call. +%% +%% @see c_call/3 + +-spec call_module(c_call()) -> cerl(). + +call_module(Node) -> + Node#c_call.module. + + +%% @spec call_name(c_call()) -> cerl() +%% +%% @doc Returns the name subtree of an abstract inter-module call. +%% +%% @see c_call/3 + +-spec call_name(c_call()) -> cerl(). + +call_name(Node) -> + Node#c_call.name. + + +%% @spec call_args(c_call()) -> [cerl()] +%% +%% @doc Returns the list of argument subtrees of an abstract +%% inter-module call. +%% +%% @see c_call/3 +%% @see call_arity/1 + +-spec call_args(c_call()) -> [cerl()]. + +call_args(Node) -> + Node#c_call.args. + + +%% @spec call_arity(Node::c_call()) -> arity() +%% +%% @doc Returns the number of argument subtrees of an abstract +%% inter-module call. +%% +%% <p>Note: this is equivalent to +%% <code>length(call_args(Node))</code>, but potentially more +%% efficient.</p> +%% +%% @see c_call/3 +%% @see call_args/1 + +-spec call_arity(c_call()) -> arity(). + +call_arity(Node) -> + length(call_args(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_primop(Name::c_literal(), Arguments::[cerl()]) -> c_primop() +%% +%% @doc Creates an abstract primitive operation call. If +%% <code>Arguments</code> is <code>[A1, ..., An]</code>, the result +%% represents "<code>primop <em>Name</em>(<em>A1</em>, ..., +%% <em>An</em>)</code>". <code>Name</code> must be an atom literal. +%% +%% @see ann_c_primop/3 +%% @see update_c_primop/3 +%% @see is_c_primop/1 +%% @see primop_name/1 +%% @see primop_args/1 +%% @see primop_arity/1 +%% @see c_apply/2 +%% @see c_call/3 + +-spec c_primop(c_literal(), [cerl()]) -> c_primop(). + +c_primop(Name, Arguments) -> + #c_primop{name = Name, args = Arguments}. + + +%% @spec ann_c_primop(As::anns(), Name::c_literal(), +%% Arguments::[cerl()]) -> c_primop() +%% @see c_primop/2 + +-spec ann_c_primop(anns(), c_literal(), [cerl()]) -> c_primop(). + +ann_c_primop(As, Name, Arguments) -> + #c_primop{name = Name, args = Arguments, anno = As}. + + +%% @spec update_c_primop(Old::cerl(), Name::c_literal(), +%% Arguments::[cerl()]) -> c_primop() +%% @see c_primop/2 + +-spec update_c_primop(cerl(), c_literal(), [cerl()]) -> c_primop(). + +update_c_primop(Node, Name, Arguments) -> + #c_primop{name = Name, args = Arguments, anno = get_ann(Node)}. + + +%% @spec is_c_primop(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% primitive operation call, otherwise <code>false</code>. +%% +%% @see c_primop/2 + +-spec is_c_primop(cerl()) -> boolean(). + +is_c_primop(#c_primop{}) -> + true; +is_c_primop(_) -> + false. + + +%% @spec primop_name(c_primop()) -> c_literal() +%% +%% @doc Returns the name subtree of an abstract primitive operation +%% call. +%% +%% @see c_primop/2 + +-spec primop_name(c_primop()) -> c_literal(). + +primop_name(Node) -> + Node#c_primop.name. + + +%% @spec primop_args(c_primop()) -> [cerl()] +%% +%% @doc Returns the list of argument subtrees of an abstract primitive +%% operation call. +%% +%% @see c_primop/2 +%% @see primop_arity/1 + +-spec primop_args(c_primop()) -> [cerl()]. + +primop_args(Node) -> + Node#c_primop.args. + + +%% @spec primop_arity(Node::c_primop()) -> arity() +%% +%% @doc Returns the number of argument subtrees of an abstract +%% primitive operation call. +%% +%% <p>Note: this is equivalent to +%% <code>length(primop_args(Node))</code>, but potentially more +%% efficient.</p> +%% +%% @see c_primop/2 +%% @see primop_args/1 + +-spec primop_arity(c_primop()) -> arity(). + +primop_arity(Node) -> + length(primop_args(Node)). + + +%% --------------------------------------------------------------------- + +%% @spec c_try(Argument::cerl(), Variables::[c_var()], Body::cerl(), +%% ExceptionVars::[c_var()], Handler::cerl()) -> c_try() +%% +%% @doc Creates an abstract try-expression. If <code>Variables</code> is +%% <code>[V1, ..., Vn]</code> and <code>ExceptionVars</code> is +%% <code>[X1, ..., Xm]</code>, the result represents "<code>try +%% <em>Argument</em> of <<em>V1</em>, ..., <em>Vn</em>> -> +%% <em>Body</em> catch <<em>X1</em>, ..., <em>Xm</em>> -> +%% <em>Handler</em></code>". All the <code>Vi</code> and <code>Xi</code> +%% must have type <code>var</code>. +%% +%% @see ann_c_try/6 +%% @see update_c_try/6 +%% @see is_c_try/1 +%% @see try_arg/1 +%% @see try_vars/1 +%% @see try_body/1 +%% @see c_catch/1 + +-spec c_try(cerl(), [c_var()], cerl(), [c_var()], cerl()) -> c_try(). + +c_try(Expr, Vs, Body, Evs, Handler) -> + #c_try{arg = Expr, vars = Vs, body = Body, + evars = Evs, handler = Handler}. + + +%% @spec ann_c_try(As::[term()], Expression::cerl(), +%% Variables::[c_var()], Body::cerl(), +%% EVars::[c_var()], Handler::cerl()) -> c_try() +%% @see c_try/5 + +-spec ann_c_try(anns(), cerl(), [c_var()], cerl(), [c_var()], cerl()) -> + c_try(). + +ann_c_try(As, Expr, Vs, Body, Evs, Handler) -> + #c_try{arg = Expr, vars = Vs, body = Body, + evars = Evs, handler = Handler, anno = As}. + + +%% @spec update_c_try(Old::c_try(), Expression::cerl(), +%% Variables::[c_var()], Body::cerl(), +%% EVars::[c_var()], Handler::cerl()) -> cerl() +%% @see c_try/5 + +-spec update_c_try(c_try(), cerl(), [c_var()], cerl(), [c_var()], cerl()) -> + c_try(). + +update_c_try(Node, Expr, Vs, Body, Evs, Handler) -> + #c_try{arg = Expr, vars = Vs, body = Body, + evars = Evs, handler = Handler, anno = get_ann(Node)}. + + +%% @spec is_c_try(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% try-expression, otherwise <code>false</code>. +%% +%% @see c_try/5 + +-spec is_c_try(cerl()) -> boolean(). + +is_c_try(#c_try{}) -> + true; +is_c_try(_) -> + false. + + +%% @spec try_arg(c_try()) -> cerl() +%% +%% @doc Returns the expression subtree of an abstract try-expression. +%% +%% @see c_try/5 + +-spec try_arg(c_try()) -> cerl(). + +try_arg(Node) -> + Node#c_try.arg. + + +%% @spec try_vars(c_try()) -> [c_var()] +%% +%% @doc Returns the list of success variable subtrees of an abstract +%% try-expression. +%% +%% @see c_try/5 + +-spec try_vars(c_try()) -> [c_var()]. + +try_vars(Node) -> + Node#c_try.vars. + + +%% @spec try_body(c_try()) -> cerl() +%% +%% @doc Returns the success body subtree of an abstract try-expression. +%% +%% @see c_try/5 + +-spec try_body(c_try()) -> cerl(). + +try_body(Node) -> + Node#c_try.body. + + +%% @spec try_evars(c_try()) -> [c_var()] +%% +%% @doc Returns the list of exception variable subtrees of an abstract +%% try-expression. +%% +%% @see c_try/5 + +-spec try_evars(c_try()) -> [c_var()]. + +try_evars(Node) -> + Node#c_try.evars. + + +%% @spec try_handler(c_try()) -> cerl() +%% +%% @doc Returns the exception body subtree of an abstract +%% try-expression. +%% +%% @see c_try/5 + +-spec try_handler(c_try()) -> cerl(). + +try_handler(Node) -> + Node#c_try.handler. + + +%% --------------------------------------------------------------------- + +%% @spec c_catch(Body::cerl()) -> c_catch() +%% +%% @doc Creates an abstract catch-expression. The result represents +%% "<code>catch <em>Body</em></code>". +%% +%% <p>Note: catch-expressions can be rewritten as try-expressions, and +%% will eventually be removed from Core Erlang.</p> +%% +%% @see ann_c_catch/2 +%% @see update_c_catch/2 +%% @see is_c_catch/1 +%% @see catch_body/1 +%% @see c_try/5 + +-spec c_catch(cerl()) -> c_catch(). + +c_catch(Body) -> + #c_catch{body = Body}. + + +%% @spec ann_c_catch(As::anns(), Body::cerl()) -> c_catch() +%% @see c_catch/1 + +-spec ann_c_catch(anns(), cerl()) -> c_catch(). + +ann_c_catch(As, Body) -> + #c_catch{body = Body, anno = As}. + + +%% @spec update_c_catch(Old::c_catch(), Body::cerl()) -> c_catch() +%% @see c_catch/1 + +-spec update_c_catch(c_catch(), cerl()) -> c_catch(). + +update_c_catch(Node, Body) -> + #c_catch{body = Body, anno = get_ann(Node)}. + + +%% @spec is_c_catch(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> is an abstract +%% catch-expression, otherwise <code>false</code>. +%% +%% @see c_catch/1 + +-spec is_c_catch(cerl()) -> boolean(). + +is_c_catch(#c_catch{}) -> + true; +is_c_catch(_) -> + false. + + +%% @spec catch_body(Node::c_catch()) -> cerl() +%% +%% @doc Returns the body subtree of an abstract catch-expression. +%% +%% @see c_catch/1 + +-spec catch_body(c_catch()) -> cerl(). + +catch_body(Node) -> + Node#c_catch.body. + + +%% --------------------------------------------------------------------- + +%% @spec to_records(Tree::cerl()) -> record(record_types()) +%% +%% @doc Translates an abstract syntax tree to a corresponding explicit +%% record representation. The records are defined in the file +%% "<code>cerl.hrl</code>". +%% +%% @see type/1 +%% @see from_records/1 + +-spec to_records(cerl()) -> cerl(). + +to_records(Node) -> + Node. + +%% @spec from_records(Tree::record(record_types())) -> cerl() +%% +%% record_types() = c_alias | c_apply | c_binary | c_bitstr | c_call | +%% c_case | c_catch | c_clause | c_cons | c_fun | +%% c_let | c_letrec | c_literal | c_map | c_map_pair | +%% c_module | c_primop | c_receive | c_seq | +%% c_try | c_tuple | c_values | c_var +%% +%% @doc Translates an explicit record representation to a +%% corresponding abstract syntax tree. The records are defined in the +%% file "<code>core_parse.hrl</code>". +%% +%% @see type/1 +%% @see to_records/1 + +-spec from_records(cerl()) -> cerl(). + +from_records(Node) -> + Node. + + +%% --------------------------------------------------------------------- + +%% @spec is_data(Node::cerl()) -> boolean() +%% +%% @doc Returns <code>true</code> if <code>Node</code> represents a +%% data constructor, otherwise <code>false</code>. Data constructors +%% are cons cells, tuples, and atomic literals. +%% +%% @see data_type/1 +%% @see data_es/1 +%% @see data_arity/1 + +-spec is_data(cerl()) -> boolean(). + +is_data(#c_literal{}) -> + true; +is_data(#c_cons{}) -> + true; +is_data(#c_tuple{}) -> + true; +is_data(_) -> + false. + + +%% @spec data_type(Node::cerl()) -> dtype() +%% +%% dtype() = cons | tuple | {atomic, Value} +%% Value = integer() | float() | atom() | [] +%% +%% @doc Returns a type descriptor for a data constructor +%% node. (Cf. <code>is_data/1</code>.) This is mainly useful for +%% comparing types and for constructing new nodes of the same type +%% (cf. <code>make_data/2</code>). If <code>Node</code> represents an +%% integer, floating-point number, atom or empty list, the result is +%% <code>{atomic, Value}</code>, where <code>Value</code> is the value +%% of <code>concrete(Node)</code>, otherwise the result is either +%% <code>cons</code> or <code>tuple</code>. +%% +%% <p>Type descriptors can be compared for equality or order (in the +%% Erlang term order), but remember that floating-point values should +%% in general never be tested for equality.</p> +%% +%% @see is_data/1 +%% @see make_data/2 +%% @see type/1 +%% @see concrete/1 + +-type value() :: integer() | float() | atom() | []. +-type dtype() :: 'cons' | 'tuple' | {'atomic', value()}. +-type c_lct() :: c_literal() | c_cons() | c_tuple(). + +-spec data_type(c_lct()) -> dtype(). + +data_type(#c_literal{val = V}) -> + case V of + [_ | _] -> + cons; + _ when is_tuple(V) -> + tuple; + _ -> + {atomic, V} + end; +data_type(#c_cons{}) -> + cons; +data_type(#c_tuple{}) -> + tuple. + +%% @spec data_es(Node::cerl()) -> [cerl()] +%% +%% @doc Returns the list of subtrees of a data constructor node. If +%% the arity of the constructor is zero, the result is the empty list. +%% +%% <p>Note: if <code>data_type(Node)</code> is <code>cons</code>, the +%% number of subtrees is exactly two. If <code>data_type(Node)</code> +%% is <code>{atomic, Value}</code>, the number of subtrees is +%% zero.</p> +%% +%% @see is_data/1 +%% @see data_type/1 +%% @see data_arity/1 +%% @see make_data/2 + +-spec data_es(c_lct()) -> [cerl()]. + +data_es(#c_literal{val = V}) -> + case V of + [Head | Tail] -> + [#c_literal{val = Head}, #c_literal{val = Tail}]; + _ when is_tuple(V) -> + make_lit_list(tuple_to_list(V)); + _ -> + [] + end; +data_es(#c_cons{hd = H, tl = T}) -> + [H, T]; +data_es(#c_tuple{es = Es}) -> + Es. + +%% @spec data_arity(Node::cerl()) -> non_neg_integer() +%% +%% @doc Returns the number of subtrees of a data constructor +%% node. This is equivalent to <code>length(data_es(Node))</code>, but +%% potentially more efficient. +%% +%% @see is_data/1 +%% @see data_es/1 + +-spec data_arity(c_lct()) -> non_neg_integer(). + +data_arity(#c_literal{val = V}) -> + case V of + [_ | _] -> + 2; + _ when is_tuple(V) -> + tuple_size(V); + _ -> + 0 + end; +data_arity(#c_cons{}) -> + 2; +data_arity(#c_tuple{es = Es}) -> + length(Es). + + +%% @spec make_data(Type::dtype(), Elements::[cerl()]) -> cerl() +%% +%% @doc Creates a data constructor node with the specified type and +%% subtrees. (Cf. <code>data_type/1</code>.) An exception is thrown +%% if the length of <code>Elements</code> is invalid for the given +%% <code>Type</code>; see <code>data_es/1</code> for arity constraints +%% on constructor types. +%% +%% @see data_type/1 +%% @see data_es/1 +%% @see ann_make_data/3 +%% @see update_data/3 +%% @see make_data_skel/2 + +-spec make_data(dtype(), [cerl()]) -> c_lct(). + +make_data(CType, Es) -> + ann_make_data([], CType, Es). + + +%% @spec ann_make_data(As::anns(), Type::dtype(), +%% Elements::[cerl()]) -> cerl() +%% @see make_data/2 + +-spec ann_make_data(anns(), dtype(), [cerl()]) -> c_lct(). + +ann_make_data(As, {atomic, V}, []) -> #c_literal{val = V, anno = As}; +ann_make_data(As, cons, [H, T]) -> ann_c_cons(As, H, T); +ann_make_data(As, tuple, Es) -> ann_c_tuple(As, Es). + +%% @spec update_data(Old::cerl(), Type::dtype(), +%% Elements::[cerl()]) -> cerl() +%% @see make_data/2 + +-spec update_data(cerl(), dtype(), [cerl()]) -> c_lct(). + +update_data(Node, CType, Es) -> + ann_make_data(get_ann(Node), CType, Es). + + +%% @spec make_data_skel(Type::dtype(), Elements::[cerl()]) -> cerl() +%% +%% @doc Like <code>make_data/2</code>, but analogous to +%% <code>c_tuple_skel/1</code> and <code>c_cons_skel/2</code>. +%% +%% @see ann_make_data_skel/3 +%% @see update_data_skel/3 +%% @see make_data/2 +%% @see c_tuple_skel/1 +%% @see c_cons_skel/2 + +-spec make_data_skel(dtype(), [cerl()]) -> c_lct(). + +make_data_skel(CType, Es) -> + ann_make_data_skel([], CType, Es). + + +%% @spec ann_make_data_skel(As::anns(), Type::dtype(), +%% Elements::[cerl()]) -> cerl() +%% @see make_data_skel/2 + +-spec ann_make_data_skel(anns(), dtype(), [cerl()]) -> c_lct(). + +ann_make_data_skel(As, {atomic, V}, []) -> #c_literal{val = V, anno = As}; +ann_make_data_skel(As, cons, [H, T]) -> ann_c_cons_skel(As, H, T); +ann_make_data_skel(As, tuple, Es) -> ann_c_tuple_skel(As, Es). + + +%% @spec update_data_skel(Old::cerl(), Type::dtype(), +%% Elements::[cerl()]) -> cerl() +%% @see make_data_skel/2 + +-spec update_data_skel(cerl(), dtype(), [cerl()]) -> c_lct(). + +update_data_skel(Node, CType, Es) -> + ann_make_data_skel(get_ann(Node), CType, Es). + + +%% --------------------------------------------------------------------- + +%% @spec subtrees(Node::cerl()) -> [[cerl()]] +%% +%% @doc Returns the grouped list of all subtrees of a node. If +%% <code>Node</code> is a leaf node (cf. <code>is_leaf/1</code>), this +%% is the empty list, otherwise the result is always a nonempty list, +%% containing the lists of subtrees of <code>Node</code>, in +%% left-to-right order as they occur in the printed program text, and +%% grouped by category. Often, each group contains only a single +%% subtree. +%% +%% <p>Depending on the type of <code>Node</code>, the size of some +%% groups may be variable (e.g., the group consisting of all the +%% elements of a tuple), while others always contain the same number +%% of elements - usually exactly one (e.g., the group containing the +%% argument expression of a case-expression). Note, however, that the +%% exact structure of the returned list (for a given node type) should +%% in general not be depended upon, since it might be subject to +%% change without notice.</p> +%% +%% <p>The function <code>subtrees/1</code> and the constructor functions +%% <code>make_tree/2</code> and <code>update_tree/2</code> can be a +%% great help if one wants to traverse a syntax tree, visiting all its +%% subtrees, but treat nodes of the tree in a uniform way in most or all +%% cases. Using these functions makes this simple, and also assures that +%% your code is not overly sensitive to extensions of the syntax tree +%% data type, because any node types not explicitly handled by your code +%% can be left to a default case.</p> +%% +%% <p>For example: +%% <pre> +%% postorder(F, Tree) -> +%% F(case subtrees(Tree) of +%% [] -> Tree; +%% List -> update_tree(Tree, +%% [[postorder(F, Subtree) +%% || Subtree <- Group] +%% || Group <- List]) +%% end). +%% </pre> +%% maps the function <code>F</code> on <code>Tree</code> and all its +%% subtrees, doing a post-order traversal of the syntax tree. (Note +%% the use of <code>update_tree/2</code> to preserve annotations.) For +%% a simple function like: +%% <pre> +%% f(Node) -> +%% case type(Node) of +%% atom -> atom("a_" ++ atom_name(Node)); +%% _ -> Node +%% end. +%% </pre> +%% the call <code>postorder(fun f/1, Tree)</code> will yield a new +%% representation of <code>Tree</code> in which all atom names have +%% been extended with the prefix "a_", but nothing else (including +%% annotations) has been changed.</p> +%% +%% @see is_leaf/1 +%% @see make_tree/2 +%% @see update_tree/2 + +-spec subtrees(cerl()) -> [[cerl()]]. + +subtrees(T) -> + case is_leaf(T) of + true -> + []; + false -> + case type(T) of + values -> + [values_es(T)]; + binary -> + [binary_segments(T)]; + bitstr -> + [[bitstr_val(T)], [bitstr_size(T)], + [bitstr_unit(T)], [bitstr_type(T)], + [bitstr_flags(T)]]; + cons -> + [[cons_hd(T)], [cons_tl(T)]]; + tuple -> + [tuple_es(T)]; + map -> + [map_es(T)]; + map_pair -> + [[map_pair_op(T)],[map_pair_key(T)],[map_pair_val(T)]]; + 'let' -> + [let_vars(T), [let_arg(T)], [let_body(T)]]; + seq -> + [[seq_arg(T)], [seq_body(T)]]; + apply -> + [[apply_op(T)], apply_args(T)]; + call -> + [[call_module(T)], [call_name(T)], + call_args(T)]; + primop -> + [[primop_name(T)], primop_args(T)]; + 'case' -> + [[case_arg(T)], case_clauses(T)]; + clause -> + [clause_pats(T), [clause_guard(T)], + [clause_body(T)]]; + alias -> + [[alias_var(T)], [alias_pat(T)]]; + 'fun' -> + [fun_vars(T), [fun_body(T)]]; + 'receive' -> + [receive_clauses(T), [receive_timeout(T)], + [receive_action(T)]]; + 'try' -> + [[try_arg(T)], try_vars(T), [try_body(T)], + try_evars(T), [try_handler(T)]]; + 'catch' -> + [[catch_body(T)]]; + letrec -> + Es = unfold_tuples(letrec_defs(T)), + [Es, [letrec_body(T)]]; + module -> + As = unfold_tuples(module_attrs(T)), + Es = unfold_tuples(module_defs(T)), + [[module_name(T)], module_exports(T), As, Es] + end + end. + + +%% @spec update_tree(Old::cerl(), Groups::[[cerl()]]) -> cerl() +%% +%% @doc Creates a syntax tree with the given subtrees, and the same +%% type and annotations as the <code>Old</code> node. This is +%% equivalent to <code>ann_make_tree(get_ann(Node), type(Node), +%% Groups)</code>, but potentially more efficient. +%% +%% @see update_tree/3 +%% @see ann_make_tree/3 +%% @see get_ann/1 +%% @see type/1 + +-spec update_tree(cerl(), [[cerl()],...]) -> cerl(). + +update_tree(Node, Gs) -> + ann_make_tree(get_ann(Node), type(Node), Gs). + + +%% @spec update_tree(Old::cerl(), Type::ctype(), Groups::[[cerl()]]) -> +%% cerl() +%% +%% @doc Creates a syntax tree with the given type and subtrees, and +%% the same annotations as the <code>Old</code> node. This is +%% equivalent to <code>ann_make_tree(get_ann(Node), Type, +%% Groups)</code>, but potentially more efficient. +%% +%% @see update_tree/2 +%% @see ann_make_tree/3 +%% @see get_ann/1 + +-spec update_tree(cerl(), ctype(), [[cerl()],...]) -> cerl(). + +update_tree(Node, Type, Gs) -> + ann_make_tree(get_ann(Node), Type, Gs). + + +%% @spec make_tree(Type::ctype(), Groups::[[cerl()]]) -> cerl() +%% +%% @doc Creates a syntax tree with the given type and subtrees. +%% <code>Type</code> must be a node type name +%% (cf. <code>type/1</code>) that does not denote a leaf node type +%% (cf. <code>is_leaf/1</code>). <code>Groups</code> must be a +%% <em>nonempty</em> list of groups of syntax trees, representing the +%% subtrees of a node of the given type, in left-to-right order as +%% they would occur in the printed program text, grouped by category +%% as done by <code>subtrees/1</code>. +%% +%% <p>The result of <code>ann_make_tree(get_ann(Node), type(Node), +%% subtrees(Node))</code> (cf. <code>update_tree/2</code>) represents +%% the same source code text as the original <code>Node</code>, +%% assuming that <code>subtrees(Node)</code> yields a nonempty +%% list. However, it does not necessarily have the exact same data +%% representation as <code>Node</code>.</p> +%% +%% @see ann_make_tree/3 +%% @see type/1 +%% @see is_leaf/1 +%% @see subtrees/1 +%% @see update_tree/2 + +-spec make_tree(ctype(), [[cerl()],...]) -> cerl(). + +make_tree(Type, Gs) -> + ann_make_tree([], Type, Gs). + + +%% @spec ann_make_tree(As::anns(), Type::ctype(), +%% Groups::[[cerl()]]) -> cerl() +%% +%% @doc Creates a syntax tree with the given annotations, type and +%% subtrees. See <code>make_tree/2</code> for details. +%% +%% @see make_tree/2 + +-spec ann_make_tree(anns(), ctype(), [[cerl()],...]) -> cerl(). + +ann_make_tree(As, values, [Es]) -> ann_c_values(As, Es); +ann_make_tree(As, binary, [Ss]) -> ann_c_binary(As, Ss); +ann_make_tree(As, bitstr, [[V],[S],[U],[T],[Fs]]) -> + ann_c_bitstr(As, V, S, U, T, Fs); +ann_make_tree(As, cons, [[H], [T]]) -> ann_c_cons(As, H, T); +ann_make_tree(As, tuple, [Es]) -> ann_c_tuple(As, Es); +ann_make_tree(As, map, [Es]) -> ann_c_map(As, Es); +ann_make_tree(As, map, [[A], Es]) -> ann_c_map(As, A, Es); +ann_make_tree(As, map_pair, [[Op], [K], [V]]) -> ann_c_map_pair(As, Op, K, V); +ann_make_tree(As, 'let', [Vs, [A], [B]]) -> ann_c_let(As, Vs, A, B); +ann_make_tree(As, seq, [[A], [B]]) -> ann_c_seq(As, A, B); +ann_make_tree(As, apply, [[Op], Es]) -> ann_c_apply(As, Op, Es); +ann_make_tree(As, call, [[M], [N], Es]) -> ann_c_call(As, M, N, Es); +ann_make_tree(As, primop, [[N], Es]) -> ann_c_primop(As, N, Es); +ann_make_tree(As, 'case', [[A], Cs]) -> ann_c_case(As, A, Cs); +ann_make_tree(As, clause, [Ps, [G], [B]]) -> ann_c_clause(As, Ps, G, B); +ann_make_tree(As, alias, [[V], [P]]) -> ann_c_alias(As, V, P); +ann_make_tree(As, 'fun', [Vs, [B]]) -> ann_c_fun(As, Vs, B); +ann_make_tree(As, 'receive', [Cs, [T], [A]]) -> + ann_c_receive(As, Cs, T, A); +ann_make_tree(As, 'try', [[E], Vs, [B], Evs, [H]]) -> + ann_c_try(As, E, Vs, B, Evs, H); +ann_make_tree(As, 'catch', [[B]]) -> ann_c_catch(As, B); +ann_make_tree(As, letrec, [Es, [B]]) -> + ann_c_letrec(As, fold_tuples(Es), B); +ann_make_tree(As, module, [[N], Xs, Es, Ds]) -> + ann_c_module(As, N, Xs, fold_tuples(Es), fold_tuples(Ds)). + + +%% --------------------------------------------------------------------- + +%% @spec meta(Tree::cerl()) -> cerl() +%% +%% @doc Creates a meta-representation of a syntax tree. The result +%% represents an Erlang expression "<code><em>MetaTree</em></code>" +%% which, if evaluated, will yield a new syntax tree representing the +%% same source code text as <code>Tree</code> (although the actual +%% data representation may be different). The expression represented +%% by <code>MetaTree</code> is <em>implementation independent</em> +%% with regard to the data structures used by the abstract syntax tree +%% implementation. +%% +%% <p>Any node in <code>Tree</code> whose node type is +%% <code>var</code> (cf. <code>type/1</code>), and whose list of +%% annotations (cf. <code>get_ann/1</code>) contains the atom +%% <code>meta_var</code>, will remain unchanged in the resulting tree, +%% except that exactly one occurrence of <code>meta_var</code> is +%% removed from its annotation list.</p> +%% +%% <p>The main use of the function <code>meta/1</code> is to transform +%% a data structure <code>Tree</code>, which represents a piece of +%% program code, into a form that is <em>representation independent +%% when printed</em>. E.g., suppose <code>Tree</code> represents a +%% variable named "V". Then (assuming a function <code>print/1</code> +%% for printing syntax trees), evaluating +%% <code>print(abstract(Tree))</code> - simply using +%% <code>abstract/1</code> to map the actual data structure onto a +%% syntax tree representation - would output a string that might look +%% something like "<code>{var, ..., 'V'}</code>", which is obviously +%% dependent on the implementation of the abstract syntax trees. This +%% could e.g. be useful for caching a syntax tree in a file. However, +%% in some situations like in a program generator generator (with two +%% "generator"), it may be unacceptable. Using +%% <code>print(meta(Tree))</code> instead would output a +%% <em>representation independent</em> syntax tree generating +%% expression; in the above case, something like +%% "<code>cerl:c_var('V')</code>".</p> +%% +%% <p>The implementation tries to generate compact code with respect +%% to literals and lists.</p> +%% +%% @see abstract/1 +%% @see type/1 +%% @see get_ann/1 + +-spec meta(cerl()) -> cerl(). + +meta(Node) -> + %% First of all we check for metavariables: + case type(Node) of + var -> + case lists:member(meta_var, get_ann(Node)) of + false -> + meta_0(var, Node); + true -> + %% A meta-variable: remove the first found + %% 'meta_var' annotation, but otherwise leave + %% the node unchanged. + set_ann(Node, lists:delete(meta_var, get_ann(Node))) + end; + Type -> + meta_0(Type, Node) + end. + +meta_0(Type, Node) -> + case get_ann(Node) of + [] -> + meta_1(Type, Node); + As -> + meta_call(set_ann, [meta_1(Type, Node), abstract(As)]) + end. + +meta_1(literal, Node) -> + %% We handle atomic literals separately, to get a bit + %% more compact code. For the rest, we use 'abstract'. + case concrete(Node) of + V when is_atom(V) -> + meta_call(c_atom, [Node]); + V when is_integer(V) -> + meta_call(c_int, [Node]); + V when is_float(V) -> + meta_call(c_float, [Node]); + [] -> + meta_call(c_nil, []); + _ -> + meta_call(abstract, [Node]) + end; +meta_1(var, Node) -> + %% A normal variable or function name. + meta_call(c_var, [abstract(var_name(Node))]); +meta_1(values, Node) -> + meta_call(c_values, + [make_list(meta_list(values_es(Node)))]); +meta_1(binary, Node) -> + meta_call(c_binary, + [make_list(meta_list(binary_segments(Node)))]); +meta_1(bitstr, Node) -> + meta_call(c_bitstr, + [meta(bitstr_val(Node)), + meta(bitstr_size(Node)), + meta(bitstr_unit(Node)), + meta(bitstr_type(Node)), + meta(bitstr_flags(Node))]); +meta_1(cons, Node) -> + %% The list is split up if some sublist has annotatations. If + %% we get exactly one element, we generate a 'c_cons' call + %% instead of 'make_list' to reconstruct the node. + case split_list(Node) of + {[H], Node1} -> + meta_call(c_cons, [meta(H), meta(Node1)]); + {L, Node1} -> + meta_call(make_list, + [make_list(meta_list(L)), meta(Node1)]) + end; +meta_1(tuple, Node) -> + meta_call(c_tuple, + [make_list(meta_list(tuple_es(Node)))]); +meta_1('let', Node) -> + meta_call(c_let, + [make_list(meta_list(let_vars(Node))), + meta(let_arg(Node)), meta(let_body(Node))]); +meta_1(seq, Node) -> + meta_call(c_seq, + [meta(seq_arg(Node)), meta(seq_body(Node))]); +meta_1(apply, Node) -> + meta_call(c_apply, + [meta(apply_op(Node)), + make_list(meta_list(apply_args(Node)))]); +meta_1(call, Node) -> + meta_call(c_call, + [meta(call_module(Node)), meta(call_name(Node)), + make_list(meta_list(call_args(Node)))]); +meta_1(primop, Node) -> + meta_call(c_primop, + [meta(primop_name(Node)), + make_list(meta_list(primop_args(Node)))]); +meta_1('case', Node) -> + meta_call(c_case, + [meta(case_arg(Node)), + make_list(meta_list(case_clauses(Node)))]); +meta_1(clause, Node) -> + meta_call(c_clause, + [make_list(meta_list(clause_pats(Node))), + meta(clause_guard(Node)), + meta(clause_body(Node))]); +meta_1(alias, Node) -> + meta_call(c_alias, + [meta(alias_var(Node)), meta(alias_pat(Node))]); +meta_1('fun', Node) -> + meta_call(c_fun, + [make_list(meta_list(fun_vars(Node))), + meta(fun_body(Node))]); +meta_1('receive', Node) -> + meta_call(c_receive, + [make_list(meta_list(receive_clauses(Node))), + meta(receive_timeout(Node)), + meta(receive_action(Node))]); +meta_1('try', Node) -> + meta_call(c_try, + [meta(try_arg(Node)), + make_list(meta_list(try_vars(Node))), + meta(try_body(Node)), + make_list(meta_list(try_evars(Node))), + meta(try_handler(Node))]); +meta_1('catch', Node) -> + meta_call(c_catch, [meta(catch_body(Node))]); +meta_1(letrec, Node) -> + meta_call(c_letrec, + [make_list([c_tuple([meta(N), meta(F)]) + || {N, F} <- letrec_defs(Node)]), + meta(letrec_body(Node))]); +meta_1(module, Node) -> + meta_call(c_module, + [meta(module_name(Node)), + make_list(meta_list(module_exports(Node))), + make_list([c_tuple([meta(A), meta(V)]) + || {A, V} <- module_attrs(Node)]), + make_list([c_tuple([meta(N), meta(F)]) + || {N, F} <- module_defs(Node)])]). + +meta_call(F, As) -> + c_call(c_atom(?MODULE), c_atom(F), As). + +meta_list([T | Ts]) -> + [meta(T) | meta_list(Ts)]; +meta_list([]) -> + []. + +split_list(Node) -> + split_list(set_ann(Node, []), []). + +split_list(Node, L) -> + A = get_ann(Node), + case type(Node) of + cons when A =:= [] -> + split_list(cons_tl(Node), [cons_hd(Node) | L]); + _ -> + {lists:reverse(L), Node} + end. + + +%% --------------------------------------------------------------------- + +%% General utilities + +is_lit_list([#c_literal{} | Es]) -> + is_lit_list(Es); +is_lit_list([_ | _]) -> + false; +is_lit_list([]) -> + true. + +lit_list_vals([#c_literal{val = V} | Es]) -> + [V | lit_list_vals(Es)]; +lit_list_vals([]) -> + []. + +-spec make_lit_list([litval()]) -> [c_literal()]. + +make_lit_list([V | Vs]) -> + [#c_literal{val = V} | make_lit_list(Vs)]; +make_lit_list([]) -> + []. + +%% The following tests are the same as done by 'io_lib:char_list' and +%% 'io_lib:printable_list', respectively, but for a single character. + +is_char_value(V) when V >= $\000, V =< $\377 -> true; +is_char_value(_) -> false. + +is_print_char_value(V) when V >= $\040, V =< $\176 -> true; +is_print_char_value(V) when V >= $\240, V =< $\377 -> true; +is_print_char_value(V) when V =:= $\b -> true; +is_print_char_value(V) when V =:= $\d -> true; +is_print_char_value(V) when V =:= $\e -> true; +is_print_char_value(V) when V =:= $\f -> true; +is_print_char_value(V) when V =:= $\n -> true; +is_print_char_value(V) when V =:= $\r -> true; +is_print_char_value(V) when V =:= $\s -> true; +is_print_char_value(V) when V =:= $\t -> true; +is_print_char_value(V) when V =:= $\v -> true; +is_print_char_value(V) when V =:= $\" -> true; +is_print_char_value(V) when V =:= $\' -> true; %' stupid Emacs. +is_print_char_value(V) when V =:= $\\ -> true; +is_print_char_value(_) -> false. + +is_char_list([V | Vs]) when is_integer(V) -> + is_char_value(V) andalso is_char_list(Vs); +is_char_list([]) -> + true; +is_char_list(_) -> + false. + +is_print_char_list([V | Vs]) when is_integer(V) -> + is_print_char_value(V) andalso is_print_char_list(Vs); +is_print_char_list([]) -> + true; +is_print_char_list(_) -> + false. + +unfold_tuples([{X, Y} | Ps]) -> + [X, Y | unfold_tuples(Ps)]; +unfold_tuples([]) -> + []. + +fold_tuples([X, Y | Es]) -> + [{X, Y} | fold_tuples(Es)]; +fold_tuples([]) -> + []. diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/recrec/core_parse.hrl b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/core_parse.hrl new file mode 100644 index 0000000000..5823622f05 --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/core_parse.hrl @@ -0,0 +1,122 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +%% Purpose : Core Erlang syntax trees as records. + +%% It would be nice to incorporate some generic functions as well but +%% this could make including this file difficult. + +%% Note: the annotation list is *always* the first record field. +%% Thus it is possible to define the macros: +%% -define(get_ann(X), element(2, X)). +%% -define(set_ann(X, Y), setelement(2, X, Y)). + +%% The record definitions appear alphabetically + +-record(c_alias, {anno=[] :: cerl:anns(), + var :: cerl:c_var(), + pat :: cerl:cerl()}). + +-record(c_apply, {anno=[] :: cerl:anns(), + op :: cerl:c_var(), + args :: [cerl:cerl()]}). + +-record(c_binary, {anno=[] :: cerl:anns(), + segments :: [cerl:c_bitstr()]}). + +-record(c_bitstr, {anno=[], val, % val :: Tree, + size, % size :: Tree, + unit, % unit :: Tree, + type, % type :: Tree, + flags}). % flags :: Tree + +-record(c_call, {anno=[], module, % module :: cerl:cerl(), + name, % name :: cerl:cerl(), + args}). % args :: [cerl:cerl()] + +-record(c_case, {anno=[] :: cerl:anns(), + arg :: cerl:cerl(), + clauses :: [cerl:cerl()]}). + +-record(c_catch, {anno=[] :: cerl:anns(), body :: cerl:cerl()}). + +-record(c_clause, {anno=[] :: cerl:anns(), + pats, % :: [cerl:cerl()], % pats :: [Tree], + guard, % :: cerl:cerl(), % guard :: Tree, + body}). % :: cerl:cerl()}). % body :: Tree + +-record(c_cons, {anno=[] :: cerl:anns(), + hd :: cerl:cerl(), + tl :: cerl:cerl()}). + +-record(c_fun, {anno=[] :: cerl:anns(), + vars :: [cerl:c_var()], + body :: cerl:cerl()}). + +-record(c_let, {anno=[] :: cerl:anns(), + vars :: [cerl:c_var()], + arg :: cerl:cerl(), + body :: cerl:cerl()}). + +-record(c_letrec, {anno=[] :: cerl:anns(), + defs :: cerl:defs(), + body :: cerl:cerl()}). + +-record(c_literal, {anno=[] :: cerl:anns(), val :: cerl:litval()}). + +-record(c_map, {anno=[] :: cerl:anns(), + arg=#c_literal{val=#{}} :: cerl:c_var() | cerl:c_literal(), + es :: [cerl:c_map_pair()], + is_pat=false :: boolean()}). + +-record(c_map_pair, {anno=[] :: cerl:anns(), + op, %:: #c_literal{val::'assoc'} | #c_literal{val::'exact'}, + key, + val}). + +-record(c_module, {anno=[] :: cerl:anns(), + name :: cerl:c_literal(), + exports :: [cerl:c_var()], + attrs :: cerl:attrs(), + defs :: cerl:defs()}). + +-record(c_primop, {anno=[] :: cerl:anns(), + name :: cerl:c_literal(), + args :: [cerl:cerl()]}). + +-record(c_receive, {anno=[]:: cerl:anns(), + clauses, % clauses :: [Tree], + timeout, % timeout :: Tree, + action}). % action :: Tree + +-record(c_seq, {anno=[] :: cerl:anns(), + arg, % arg :: cerl:cerl(), + body}). % body :: cerl:cerl() + +-record(c_try, {anno=[], arg, % arg :: cerl:cerl(), + vars, % vars :: [cerl:c_var()], + body, % body :: cerl:cerl(), + evars, % evars :: [cerl:c_var()], + handler}). % handler :: cerl:cerl() + +-record(c_tuple, {anno=[] :: cerl:anns(), es :: [cerl:cerl()]}). + +-record(c_values, {anno=[] :: cerl:anns(), es :: [cerl:cerl()]}). + +-record(c_var, {anno=[] :: cerl:anns(), name :: cerl:var_name()}). diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer.hrl b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer.hrl new file mode 100644 index 0000000000..ea6a71217c --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer.hrl @@ -0,0 +1,180 @@ +%%% This is an -*- Erlang -*- file. +%%% +%%% %CopyrightBegin% +%%% +%%% Copyright Ericsson AB 2006-2015. All Rights Reserved. +%%% +%%% Licensed under the Apache License, Version 2.0 (the "License"); +%%% you may not use this file except in compliance with the License. +%%% You may obtain a copy of the License at +%%% +%%% http://www.apache.org/licenses/LICENSE-2.0 +%%% +%%% Unless required by applicable law or agreed to in writing, software +%%% distributed under the License is distributed on an "AS IS" BASIS, +%%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%%% See the License for the specific language governing permissions and +%%% limitations under the License. +%%% +%%% %CopyrightEnd% +%%% +%%%------------------------------------------------------------------- +%%% File : dialyzer.hrl +%%% Author : Tobias Lindahl <[email protected]> +%%% Kostis Sagonas <[email protected]> +%%% Description : Header file for Dialyzer. +%%% +%%% Created : 1 Oct 2004 by Kostis Sagonas <[email protected]> +%%%------------------------------------------------------------------- + +-define(RET_NOTHING_SUSPICIOUS, 0). +-define(RET_INTERNAL_ERROR, 1). +-define(RET_DISCREPANCIES, 2). + +-type dial_ret() :: ?RET_NOTHING_SUSPICIOUS + | ?RET_INTERNAL_ERROR + | ?RET_DISCREPANCIES. + +%%-------------------------------------------------------------------- +%% Warning classification +%%-------------------------------------------------------------------- + +-define(WARN_RETURN_NO_RETURN, warn_return_no_exit). +-define(WARN_RETURN_ONLY_EXIT, warn_return_only_exit). +-define(WARN_NOT_CALLED, warn_not_called). +-define(WARN_NON_PROPER_LIST, warn_non_proper_list). +-define(WARN_FUN_APP, warn_fun_app). +-define(WARN_MATCHING, warn_matching). +-define(WARN_OPAQUE, warn_opaque). +-define(WARN_FAILING_CALL, warn_failing_call). +-define(WARN_BIN_CONSTRUCTION, warn_bin_construction). +-define(WARN_CONTRACT_TYPES, warn_contract_types). +-define(WARN_CONTRACT_SYNTAX, warn_contract_syntax). +-define(WARN_CONTRACT_NOT_EQUAL, warn_contract_not_equal). +-define(WARN_CONTRACT_SUBTYPE, warn_contract_subtype). +-define(WARN_CONTRACT_SUPERTYPE, warn_contract_supertype). +-define(WARN_CONTRACT_RANGE, warn_contract_range). +-define(WARN_CALLGRAPH, warn_callgraph). +-define(WARN_UNMATCHED_RETURN, warn_umatched_return). +-define(WARN_RACE_CONDITION, warn_race_condition). +-define(WARN_BEHAVIOUR, warn_behaviour). +-define(WARN_UNDEFINED_CALLBACK, warn_undefined_callbacks). +-define(WARN_UNKNOWN, warn_unknown). +-define(WARN_MAP_CONSTRUCTION, warn_map_construction). + +%% +%% The following type has double role: +%% 1. It is the set of warnings that will be collected. +%% 2. It is also the set of tags for warnings that will be returned. +%% +-type dial_warn_tag() :: ?WARN_RETURN_NO_RETURN | ?WARN_RETURN_ONLY_EXIT + | ?WARN_NOT_CALLED | ?WARN_NON_PROPER_LIST + | ?WARN_MATCHING | ?WARN_OPAQUE | ?WARN_FUN_APP + | ?WARN_FAILING_CALL | ?WARN_BIN_CONSTRUCTION + | ?WARN_CONTRACT_TYPES | ?WARN_CONTRACT_SYNTAX + | ?WARN_CONTRACT_NOT_EQUAL | ?WARN_CONTRACT_SUBTYPE + | ?WARN_CONTRACT_SUPERTYPE | ?WARN_CALLGRAPH + | ?WARN_UNMATCHED_RETURN | ?WARN_RACE_CONDITION + | ?WARN_BEHAVIOUR | ?WARN_CONTRACT_RANGE + | ?WARN_UNDEFINED_CALLBACK | ?WARN_UNKNOWN + | ?WARN_MAP_CONSTRUCTION. + +%% +%% This is the representation of each warning as they will be returned +%% to dialyzer's callers +%% +-type file_line() :: {file:filename(), non_neg_integer()}. +-type dial_warning() :: {dial_warn_tag(), file_line(), {atom(), [term()]}}. + +%% +%% This is the representation of each warning before suppressions have +%% been applied +%% +-type m_or_mfa() :: module() % warnings not associated with any function + | mfa(). +-type warning_info() :: {file:filename(), non_neg_integer(), m_or_mfa()}. +-type raw_warning() :: {dial_warn_tag(), warning_info(), {atom(), [term()]}}. + +%% +%% This is the representation of dialyzer's internal errors +%% +-type dial_error() :: any(). %% XXX: underspecified + +%%-------------------------------------------------------------------- +%% Basic types used either in the record definitions below or in other +%% parts of the application +%%-------------------------------------------------------------------- + +-type anal_type() :: 'succ_typings' | 'plt_build'. +-type anal_type1() :: anal_type() | 'plt_add' | 'plt_check' | 'plt_remove'. +-type contr_constr() :: {'subtype', erl_types:erl_type(), erl_types:erl_type()}. +-type contract_pair() :: {erl_types:erl_type(), [contr_constr()]}. +-type dial_define() :: {atom(), term()}. +-type dial_option() :: {atom(), term()}. +-type dial_options() :: [dial_option()]. +-type fopt() :: 'basename' | 'fullpath'. +-type format() :: 'formatted' | 'raw'. +-type label() :: non_neg_integer(). +-type dial_warn_tags():: ordsets:ordset(dial_warn_tag()). +-type rep_mode() :: 'quiet' | 'normal' | 'verbose'. +-type start_from() :: 'byte_code' | 'src_code'. +-type mfa_or_funlbl() :: label() | mfa(). +-type solver() :: 'v1' | 'v2'. + +%%-------------------------------------------------------------------- +%% Record declarations used by various files +%%-------------------------------------------------------------------- + +-type doc_plt() :: 'undefined' | dialyzer_plt:plt(). + +-record(analysis, {analysis_pid :: pid() | 'undefined', + type = succ_typings :: anal_type(), + defines = [] :: [dial_define()], + doc_plt :: doc_plt(), + files = [] :: [file:filename()], + include_dirs = [] :: [file:filename()], + start_from = byte_code :: start_from(), + plt :: dialyzer_plt:plt(), + use_contracts = true :: boolean(), + race_detection = false :: boolean(), + behaviours_chk = false :: boolean(), + timing = false :: boolean() | 'debug', + timing_server = none :: dialyzer_timing:timing_server(), + callgraph_file = "" :: file:filename(), + solvers :: [solver()]}). + +-record(options, {files = [] :: [file:filename()], + files_rec = [] :: [file:filename()], + analysis_type = succ_typings :: anal_type1(), + timing = false :: boolean() | 'debug', + defines = [] :: [dial_define()], + from = byte_code :: start_from(), + get_warnings = maybe :: boolean() | 'maybe', + init_plts = [] :: [file:filename()], + include_dirs = [] :: [file:filename()], + output_plt = none :: 'none' | file:filename(), + legal_warnings = ordsets:new() :: dial_warn_tags(), + report_mode = normal :: rep_mode(), + erlang_mode = false :: boolean(), + use_contracts = true :: boolean(), + output_file = none :: 'none' | file:filename(), + output_format = formatted :: format(), + filename_opt = basename :: fopt(), + callgraph_file = "" :: file:filename(), + check_plt = true :: boolean(), + solvers = [] :: [solver()]}). + +-record(contract, {contracts = [] :: [contract_pair()], + args = [] :: [erl_types:erl_type()], + forms = [] :: [{_, _}]}). + +%%-------------------------------------------------------------------- + +-define(timing(Server, Msg, Var, Expr), + begin + dialyzer_timing:start_stamp(Server, Msg), + Var = Expr, + dialyzer_timing:end_stamp(Server), + Var + end). +-define(timing(Server, Msg, Expr), ?timing(Server, Msg, _T, Expr)). diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer_dataflow.erl b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer_dataflow.erl new file mode 100644 index 0000000000..9399789464 --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer_dataflow.erl @@ -0,0 +1,3802 @@ +%% -*- erlang-indent-level: 2 -*- +%%-------------------------------------------------------------------- +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2006-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% + +%%%------------------------------------------------------------------- +%%% File : dialyzer_dataflow.erl +%%% Author : Tobias Lindahl <[email protected]> +%%% Description : +%%% +%%% Created : 19 Apr 2005 by Tobias Lindahl <[email protected]> +%%%------------------------------------------------------------------- + +-module(dialyzer_dataflow). + +-export([get_fun_types/5, get_warnings/5, format_args/3]). + +%% Data structure interfaces. +-export([state__add_warning/2, state__cleanup/1, + state__duplicate/1, dispose_state/1, + state__get_callgraph/1, state__get_races/1, + state__get_records/1, state__put_callgraph/2, + state__put_races/2, state__records_only/1, + state__find_function/2]). + +-export_type([state/0]). + +-include("dialyzer.hrl"). + +-import(erl_types, + [t_inf/2, t_inf/3, t_inf_lists/2, t_inf_lists/3, + t_inf_lists/3, t_is_equal/2, t_is_subtype/2, t_subtract/2, + t_sup/1, t_sup/2]). + +-import(erl_types, + [any_none/1, t_any/0, t_atom/0, t_atom/1, t_atom_vals/1, t_atom_vals/2, + t_binary/0, t_boolean/0, + t_bitstr/0, t_bitstr/2, t_bitstr_concat/1, t_bitstr_match/2, + t_cons/0, t_cons/2, t_cons_hd/2, t_cons_tl/2, + t_contains_opaque/2, + t_find_opaque_mismatch/3, t_float/0, t_from_range/2, t_from_term/1, + t_fun/0, t_fun/2, t_fun_args/1, t_fun_args/2, t_fun_range/1, + t_fun_range/2, t_integer/0, t_integers/1, + t_is_any/1, t_is_atom/1, t_is_atom/2, t_is_any_atom/3, + t_is_boolean/2, + t_is_integer/2, t_is_list/1, + t_is_nil/2, t_is_none/1, t_is_none_or_unit/1, + t_is_number/2, t_is_reference/2, t_is_pid/2, t_is_port/2, + t_is_unit/1, + t_limit/2, t_list/0, t_list_elements/2, + t_maybe_improper_list/0, t_module/0, + t_none/0, t_non_neg_integer/0, t_number/0, t_number_vals/2, + t_pid/0, t_port/0, t_product/1, t_reference/0, + t_to_string/2, t_to_tlist/1, + t_tuple/0, t_tuple/1, t_tuple_args/1, t_tuple_args/2, + t_tuple_subtypes/2, + t_unit/0, t_unopaque/2, + t_map/0, t_map/1, t_is_singleton/2 + ]). + +%%-define(DEBUG, true). +%%-define(DEBUG_PP, true). +%%-define(DEBUG_TIME, true). + +-ifdef(DEBUG). +-import(erl_types, [t_to_string/1]). +-define(debug(S_, L_), io:format(S_, L_)). +-else. +-define(debug(S_, L_), ok). +-endif. + +%%-------------------------------------------------------------------- + +-type type() :: erl_types:erl_type(). +-type types() :: erl_types:type_table(). + +-type curr_fun() :: 'undefined' | 'top' | mfa_or_funlbl(). + +-define(no_arg, no_arg). + +-define(TYPE_LIMIT, 3). + +-define(BITS, 128). + +%% Types with comment 'race' are due to dialyzer_races.erl. +-record(state, {callgraph :: dialyzer_callgraph:callgraph() + | 'undefined', % race + codeserver :: dialyzer_codeserver:codeserver() + | 'undefined', % race + envs :: env_tab() + | 'undefined', % race + fun_tab :: fun_tab() + | 'undefined', % race + fun_homes :: dict:dict(label(), mfa()) + | 'undefined', % race + plt :: dialyzer_plt:plt() + | 'undefined', % race + opaques :: [type()] + | 'undefined', % race + races = dialyzer_races:new() :: dialyzer_races:races(), + records = dict:new() :: types(), + tree_map :: dict:dict(label(), cerl:cerl()) + | 'undefined', % race + warning_mode = false :: boolean(), + warnings = [] :: [raw_warning()], + work :: {[_], [_], sets:set()} + | 'undefined', % race + module :: module(), + curr_fun :: curr_fun() + }). + +-record(map, {map = maps:new() :: type_tab(), + subst = maps:new() :: subst_tab(), + modified = [] :: [Key :: term()], + modified_stack = [] :: [{[Key :: term()],reference()}], + ref = undefined :: reference() | undefined}). + +-type env_tab() :: dict:dict(label(), #map{}). +-type fun_entry() :: {Args :: [type()], RetType :: type()}. +-type fun_tab() :: dict:dict('top' | label(), + {'not_handled', fun_entry()} | fun_entry()). +-type key() :: label() | cerl:cerl(). +-type type_tab() :: #{key() => type()}. +-type subst_tab() :: #{key() => cerl:cerl()}. + +%% Exported Types + +-opaque state() :: #state{}. + +%%-------------------------------------------------------------------- + +-type fun_types() :: dict:dict(label(), type()). + +-spec get_warnings(cerl:c_module(), dialyzer_plt:plt(), + dialyzer_callgraph:callgraph(), + dialyzer_codeserver:codeserver(), + types()) -> + {[raw_warning()], fun_types()}. + +get_warnings(Tree, Plt, Callgraph, Codeserver, Records) -> + State1 = analyze_module(Tree, Plt, Callgraph, Codeserver, Records, true), + State2 = state__renew_warnings(state__get_warnings(State1), State1), + State3 = state__get_race_warnings(State2), + {State3#state.warnings, state__all_fun_types(State3)}. + +-spec get_fun_types(cerl:c_module(), dialyzer_plt:plt(), + dialyzer_callgraph:callgraph(), + dialyzer_codeserver:codeserver(), + types()) -> fun_types(). + +get_fun_types(Tree, Plt, Callgraph, Codeserver, Records) -> + State = analyze_module(Tree, Plt, Callgraph, Codeserver, Records, false), + state__all_fun_types(State). + +%%% =========================================================================== +%%% +%%% The analysis. +%%% +%%% =========================================================================== + +analyze_module(Tree, Plt, Callgraph, Codeserver, Records, GetWarnings) -> + debug_pp(Tree, false), + Module = cerl:atom_val(cerl:module_name(Tree)), + TopFun = cerl:ann_c_fun([{label, top}], [], Tree), + State = state__new(Callgraph, Codeserver, TopFun, Plt, Module, Records), + State1 = state__race_analysis(not GetWarnings, State), + State2 = analyze_loop(State1), + case GetWarnings of + true -> + State3 = state__set_warning_mode(State2), + State4 = analyze_loop(State3), + dialyzer_races:race(State4); + false -> + State2 + end. + +analyze_loop(State) -> + case state__get_work(State) of + none -> state__set_curr_fun(undefined, State); + {Fun, NewState0} -> + NewState1 = state__set_curr_fun(get_label(Fun), NewState0), + {ArgTypes, IsCalled} = state__get_args_and_status(Fun, NewState1), + case not IsCalled of + true -> + ?debug("Not handling (not called) ~w: ~s\n", + [NewState1#state.curr_fun, + t_to_string(t_product(ArgTypes))]), + analyze_loop(NewState1); + false -> + case state__fun_env(Fun, NewState1) of + none -> + ?debug("Not handling (no env) ~w: ~s\n", + [NewState1#state.curr_fun, + t_to_string(t_product(ArgTypes))]), + analyze_loop(NewState1); + Map -> + ?debug("Handling fun ~p: ~s\n", + [NewState1#state.curr_fun, + t_to_string(state__fun_type(Fun, NewState1))]), + Vars = cerl:fun_vars(Fun), + Map1 = enter_type_lists(Vars, ArgTypes, Map), + Body = cerl:fun_body(Fun), + FunLabel = get_label(Fun), + IsRaceAnalysisEnabled = is_race_analysis_enabled(State), + NewState3 = + case IsRaceAnalysisEnabled of + true -> + NewState2 = state__renew_curr_fun( + state__lookup_name(FunLabel, NewState1), FunLabel, + NewState1), + state__renew_race_list([], 0, NewState2); + false -> NewState1 + end, + {NewState4, _Map2, BodyType} = + traverse(Body, Map1, NewState3), + ?debug("Done analyzing: ~w:~s\n", + [NewState1#state.curr_fun, + t_to_string(t_fun(ArgTypes, BodyType))]), + NewState5 = + case IsRaceAnalysisEnabled of + true -> renew_race_code(NewState4); + false -> NewState4 + end, + NewState6 = + state__update_fun_entry(Fun, ArgTypes, BodyType, NewState5), + ?debug("done adding stuff for ~w\n", + [state__lookup_name(get_label(Fun), State)]), + analyze_loop(NewState6) + end + end + end. + +traverse(Tree, Map, State) -> + ?debug("Handling ~p\n", [cerl:type(Tree)]), + %% debug_pp_map(Map), + case cerl:type(Tree) of + alias -> + %% This only happens when checking for illegal record patterns + %% so the handling is a bit rudimentary. + traverse(cerl:alias_pat(Tree), Map, State); + apply -> + handle_apply(Tree, Map, State); + binary -> + Segs = cerl:binary_segments(Tree), + {State1, Map1, SegTypes} = traverse_list(Segs, Map, State), + {State1, Map1, t_bitstr_concat(SegTypes)}; + bitstr -> + handle_bitstr(Tree, Map, State); + call -> + handle_call(Tree, Map, State); + 'case' -> + handle_case(Tree, Map, State); + 'catch' -> + {State1, _Map1, _} = traverse(cerl:catch_body(Tree), Map, State), + {State1, Map, t_any()}; + cons -> + handle_cons(Tree, Map, State); + 'fun' -> + Type = state__fun_type(Tree, State), + case state__warning_mode(State) of + true -> {State, Map, Type}; + false -> + State2 = state__add_work(get_label(Tree), State), + State3 = state__update_fun_env(Tree, Map, State2), + {State3, Map, Type} + end; + 'let' -> + handle_let(Tree, Map, State); + letrec -> + Defs = cerl:letrec_defs(Tree), + Body = cerl:letrec_body(Tree), + %% By not including the variables in scope we can assure that we + %% will get the current function type when using the variables. + FoldFun = fun({Var, Fun}, {AccState, AccMap}) -> + {NewAccState, NewAccMap0, FunType} = + traverse(Fun, AccMap, AccState), + NewAccMap = enter_type(Var, FunType, NewAccMap0), + {NewAccState, NewAccMap} + end, + {State1, Map1} = lists:foldl(FoldFun, {State, Map}, Defs), + traverse(Body, Map1, State1); + literal -> + Type = literal_type(Tree), + {State, Map, Type}; + module -> + handle_module(Tree, Map, State); + primop -> + Type = + case cerl:atom_val(cerl:primop_name(Tree)) of + match_fail -> t_none(); + raise -> t_none(); + bs_init_writable -> t_from_term(<<>>); + Other -> erlang:error({'Unsupported primop', Other}) + end, + {State, Map, Type}; + 'receive' -> + handle_receive(Tree, Map, State); + seq -> + Arg = cerl:seq_arg(Tree), + Body = cerl:seq_body(Tree), + {State1, Map1, ArgType} = SMA = traverse(Arg, Map, State), + case t_is_none_or_unit(ArgType) of + true -> + SMA; + false -> + State2 = + case + t_is_any(ArgType) + orelse t_is_simple(ArgType, State) + orelse is_call_to_send(Arg) + orelse is_lc_simple_list(Arg, ArgType, State) + of + true -> % do not warn in these cases + State1; + false -> + state__add_warning(State1, ?WARN_UNMATCHED_RETURN, Arg, + {unmatched_return, + [format_type(ArgType, State1)]}) + end, + traverse(Body, Map1, State2) + end; + 'try' -> + handle_try(Tree, Map, State); + tuple -> + handle_tuple(Tree, Map, State); + map -> + handle_map(Tree, Map, State); + values -> + Elements = cerl:values_es(Tree), + {State1, Map1, EsType} = traverse_list(Elements, Map, State), + Type = t_product(EsType), + {State1, Map1, Type}; + var -> + ?debug("Looking up unknown variable: ~p\n", [Tree]), + case state__lookup_type_for_letrec(Tree, State) of + error -> + LType = lookup_type(Tree, Map), + {State, Map, LType}; + {ok, Type} -> {State, Map, Type} + end; + Other -> + erlang:error({'Unsupported type', Other}) + end. + +traverse_list(Trees, Map, State) -> + traverse_list(Trees, Map, State, []). + +traverse_list([Tree|Tail], Map, State, Acc) -> + {State1, Map1, Type} = traverse(Tree, Map, State), + traverse_list(Tail, Map1, State1, [Type|Acc]); +traverse_list([], Map, State, Acc) -> + {State, Map, lists:reverse(Acc)}. + +%%________________________________________ +%% +%% Special instructions +%% + +handle_apply(Tree, Map, State) -> + Args = cerl:apply_args(Tree), + Op = cerl:apply_op(Tree), + {State0, Map1, ArgTypes} = traverse_list(Args, Map, State), + {State1, Map2, OpType} = traverse(Op, Map1, State0), + case any_none(ArgTypes) of + true -> + {State1, Map2, t_none()}; + false -> + FunList = + case state__lookup_call_site(Tree, State) of + error -> [external]; %% so that we go directly in the fallback + {ok, List} -> List + end, + FunInfoList = [{local, state__fun_info(Fun, State)} || Fun <- FunList], + case + handle_apply_or_call(FunInfoList, Args, ArgTypes, Map2, Tree, State1) + of + {had_external, State2} -> + %% Fallback: use whatever info we collected from traversing the op + %% instead of the result that has been generalized to t_any(). + Arity = length(Args), + OpType1 = t_inf(OpType, t_fun(Arity, t_any())), + case t_is_none(OpType1) of + true -> + Msg = {fun_app_no_fun, + [format_cerl(Op), format_type(OpType, State2), Arity]}, + State3 = state__add_warning(State2, ?WARN_FAILING_CALL, + Tree, Msg), + {State3, Map2, t_none()}; + false -> + NewArgs = t_inf_lists(ArgTypes, + t_fun_args(OpType1, 'universe')), + case any_none(NewArgs) of + true -> + Msg = {fun_app_args, + [format_args(Args, ArgTypes, State), + format_type(OpType, State)]}, + State3 = state__add_warning(State2, ?WARN_FAILING_CALL, + Tree, Msg), + {State3, enter_type(Op, OpType1, Map2), t_none()}; + false -> + Map3 = enter_type_lists(Args, NewArgs, Map2), + Range0 = t_fun_range(OpType1, 'universe'), + Range = + case t_is_unit(Range0) of + true -> t_none(); + false -> Range0 + end, + {State2, enter_type(Op, OpType1, Map3), Range} + end + end; + Normal -> Normal + end + end. + +handle_apply_or_call(FunInfoList, Args, ArgTypes, Map, Tree, State) -> + None = t_none(), + %% Call-site analysis may be inaccurate and consider more funs than those that + %% are actually possible. If all of them are incorrect, then warnings can be + %% emitted. If at least one fun is ok, however, then no warning is emitted, + %% just in case the bad ones are not really possible. The last argument is + %% used for this, with the following encoding: + %% Initial value: {none, []} + %% First fun checked: {one, <List of warns>} + %% More funs checked: {many, <List of warns>} + %% A '{one, []}' can only become '{many, []}'. + %% If at any point an fun does not add warnings, then the list is also + %% replaced with an empty list. + handle_apply_or_call(FunInfoList, Args, ArgTypes, Map, Tree, State, + [None || _ <- ArgTypes], None, false, {none, []}). + +handle_apply_or_call([{local, external}|Left], Args, ArgTypes, Map, Tree, State, + _AccArgTypes, _AccRet, _HadExternal, Warns) -> + {HowMany, _} = Warns, + NewHowMany = + case HowMany of + none -> one; + _ -> many + end, + NewWarns = {NewHowMany, []}, + handle_apply_or_call(Left, Args, ArgTypes, Map, Tree, State, + ArgTypes, t_any(), true, NewWarns); +handle_apply_or_call([{TypeOfApply, {Fun, Sig, Contr, LocalRet}}|Left], + Args, ArgTypes, Map, Tree, + #state{opaques = Opaques} = State, + AccArgTypes, AccRet, HadExternal, Warns) -> + Any = t_any(), + AnyArgs = [Any || _ <- Args], + GenSig = {AnyArgs, fun(_) -> t_any() end}, + {CArgs, CRange} = + case Contr of + {value, #contract{args = As} = C} -> + {As, fun(FunArgs) -> + dialyzer_contracts:get_contract_return(C, FunArgs) + end}; + none -> GenSig + end, + {BifArgs, BifRange} = + case TypeOfApply of + remote -> + {M, F, A} = Fun, + case erl_bif_types:is_known(M, F, A) of + true -> + BArgs = erl_bif_types:arg_types(M, F, A), + BRange = + fun(FunArgs) -> + erl_bif_types:type(M, F, A, FunArgs, Opaques) + end, + {BArgs, BRange}; + false -> + GenSig + end; + local -> GenSig + end, + {SigArgs, SigRange} = + case Sig of + {value, {SR, SA}} -> {SA, SR}; + none -> {AnyArgs, t_any()} + end, + + ?debug("--------------------------------------------------------\n", []), + ?debug("Fun: ~p\n", [state__lookup_name(Fun, State)]), + ?debug("Module ~p\n", [State#state.module]), + ?debug("CArgs ~s\n", [erl_types:t_to_string(t_product(CArgs))]), + ?debug("ArgTypes ~s\n", [erl_types:t_to_string(t_product(ArgTypes))]), + ?debug("BifArgs ~p\n", [erl_types:t_to_string(t_product(BifArgs))]), + + NewArgsSig = t_inf_lists(SigArgs, ArgTypes, Opaques), + ?debug("SigArgs ~s\n", [erl_types:t_to_string(t_product(SigArgs))]), + ?debug("NewArgsSig: ~s\n", [erl_types:t_to_string(t_product(NewArgsSig))]), + NewArgsContract = t_inf_lists(CArgs, ArgTypes, Opaques), + ?debug("NewArgsContract: ~s\n", + [erl_types:t_to_string(t_product(NewArgsContract))]), + NewArgsBif = t_inf_lists(BifArgs, ArgTypes, Opaques), + ?debug("NewArgsBif: ~s\n", [erl_types:t_to_string(t_product(NewArgsBif))]), + NewArgTypes0 = t_inf_lists(NewArgsSig, NewArgsContract), + NewArgTypes = t_inf_lists(NewArgTypes0, NewArgsBif, Opaques), + ?debug("NewArgTypes ~s\n", [erl_types:t_to_string(t_product(NewArgTypes))]), + ?debug("\n", []), + + BifRet = BifRange(NewArgTypes), + ContrRet = CRange(NewArgTypes), + RetWithoutContr = t_inf(SigRange, BifRet), + RetWithoutLocal = t_inf(ContrRet, RetWithoutContr), + + ?debug("RetWithoutContr: ~s\n",[erl_types:t_to_string(RetWithoutContr)]), + ?debug("RetWithoutLocal: ~s\n", [erl_types:t_to_string(RetWithoutLocal)]), + ?debug("BifRet: ~s\n", [erl_types:t_to_string(BifRange(NewArgTypes))]), + ?debug("SigRange: ~s\n", [erl_types:t_to_string(SigRange)]), + ?debug("ContrRet: ~s\n", [erl_types:t_to_string(ContrRet)]), + ?debug("LocalRet: ~s\n", [erl_types:t_to_string(LocalRet)]), + + State1 = + case is_race_analysis_enabled(State) of + true -> + Ann = cerl:get_ann(Tree), + File = get_file(Ann), + Line = abs(get_line(Ann)), + dialyzer_races:store_race_call(Fun, ArgTypes, Args, + {File, Line}, State); + false -> State + end, + FailedConj = any_none([RetWithoutLocal|NewArgTypes]), + IsFailBif = t_is_none(BifRange(BifArgs)), + IsFailSig = t_is_none(SigRange), + ?debug("FailedConj: ~p~n", [FailedConj]), + ?debug("IsFailBif: ~p~n", [IsFailBif]), + ?debug("IsFailSig: ~p~n", [IsFailSig]), + State2 = + case FailedConj andalso not (IsFailBif orelse IsFailSig) of + true -> + case t_is_none(RetWithoutLocal) andalso + not t_is_none(RetWithoutContr) andalso + not any_none(NewArgTypes) of + true -> + {value, C1} = Contr, + Contract = dialyzer_contracts:contract_to_string(C1), + {M1, F1, A1} = state__lookup_name(Fun, State), + ArgStrings = format_args(Args, ArgTypes, State), + CRet = erl_types:t_to_string(RetWithoutContr), + %% This Msg will be post_processed by dialyzer_succ_typings + Msg = + {contract_range, [Contract, M1, F1, A1, ArgStrings, CRet]}, + state__add_warning(State1, ?WARN_CONTRACT_RANGE, Tree, Msg); + false -> + FailedSig = any_none(NewArgsSig), + FailedContract = + any_none([CRange(NewArgsContract)|NewArgsContract]), + FailedBif = any_none([BifRange(NewArgsBif)|NewArgsBif]), + InfSig = t_inf(t_fun(SigArgs, SigRange), + t_fun(BifArgs, BifRange(BifArgs))), + FailReason = + apply_fail_reason(FailedSig, FailedBif, FailedContract), + Msg = get_apply_fail_msg(Fun, Args, ArgTypes, NewArgTypes, InfSig, + Contr, CArgs, State1, FailReason, Opaques), + WarnType = case Msg of + {call, _} -> ?WARN_FAILING_CALL; + {apply, _} -> ?WARN_FAILING_CALL; + {call_with_opaque, _} -> ?WARN_OPAQUE; + {call_without_opaque, _} -> ?WARN_OPAQUE; + {opaque_type_test, _} -> ?WARN_OPAQUE + end, + Frc = {erlang, is_record, 3} =:= state__lookup_name(Fun, State), + state__add_warning(State1, WarnType, Tree, Msg, Frc) + end; + false -> State1 + end, + State3 = + case TypeOfApply of + local -> + case state__is_escaping(Fun, State2) of + true -> State2; + false -> + ForwardArgs = [t_limit(X, ?TYPE_LIMIT) || X <- ArgTypes], + forward_args(Fun, ForwardArgs, State2) + end; + remote -> + add_bif_warnings(Fun, NewArgTypes, Tree, State2) + end, + NewAccArgTypes = + case FailedConj of + true -> AccArgTypes; + false -> [t_sup(X, Y) || {X, Y} <- lists:zip(NewArgTypes, AccArgTypes)] + end, + TotalRet = + case t_is_none(LocalRet) andalso t_is_unit(RetWithoutLocal) of + true -> RetWithoutLocal; + false -> t_inf(RetWithoutLocal, LocalRet) + end, + NewAccRet = t_sup(AccRet, TotalRet), + ?debug("NewAccRet: ~s\n", [t_to_string(NewAccRet)]), + {NewWarnings, State4} = state__remove_added_warnings(State, State3), + {HowMany, OldWarnings} = Warns, + NewWarns = + case HowMany of + none -> {one, NewWarnings}; + _ -> + case OldWarnings =:= [] of + true -> {many, []}; + false -> + case NewWarnings =:= [] of + true -> {many, []}; + false -> {many, NewWarnings ++ OldWarnings} + end + end + end, + handle_apply_or_call(Left, Args, ArgTypes, Map, Tree, + State4, NewAccArgTypes, NewAccRet, HadExternal, NewWarns); +handle_apply_or_call([], Args, _ArgTypes, Map, _Tree, State, + AccArgTypes, AccRet, HadExternal, {_, Warnings}) -> + State1 = state__add_warnings(Warnings, State), + case HadExternal of + false -> + NewMap = enter_type_lists(Args, AccArgTypes, Map), + {State1, NewMap, AccRet}; + true -> + {had_external, State1} + end. + +apply_fail_reason(FailedSig, FailedBif, FailedContract) -> + if + (FailedSig orelse FailedBif) andalso (not FailedContract) -> only_sig; + FailedContract andalso (not (FailedSig orelse FailedBif)) -> only_contract; + true -> both + end. + +get_apply_fail_msg(Fun, Args, ArgTypes, NewArgTypes, + Sig, Contract, ContrArgs, State, FailReason, Opaques) -> + ArgStrings = format_args(Args, ArgTypes, State), + ContractInfo = + case Contract of + {value, #contract{} = C} -> + {dialyzer_contracts:is_overloaded(C), + dialyzer_contracts:contract_to_string(C)}; + none -> {false, none} + end, + EnumArgTypes = lists:zip(lists:seq(1, length(NewArgTypes)), NewArgTypes), + ArgNs = [Arg || {Arg, Type} <- EnumArgTypes, t_is_none(Type)], + case state__lookup_name(Fun, State) of + {M, F, A} -> + case is_opaque_type_test_problem(Fun, Args, NewArgTypes, State) of + {yes, Arg, ArgType} -> + {opaque_type_test, [atom_to_list(F), ArgStrings, + format_arg(Arg), format_type(ArgType, State)]}; + no -> + SigArgs = t_fun_args(Sig), + BadOpaque = + opaque_problems([SigArgs, ContrArgs], ArgTypes, Opaques, ArgNs), + %% In fact *both* 'call_with_opaque' and + %% 'call_without_opaque' are possible. + case lists:keyfind(decl, 1, BadOpaque) of + {decl, BadArgs} -> + %% a structured term is used where an opaque is expected + ExpectedTriples = + case FailReason of + only_sig -> expected_arg_triples(BadArgs, SigArgs, State); + _ -> expected_arg_triples(BadArgs, ContrArgs, State) + end, + {call_without_opaque, [M, F, ArgStrings, ExpectedTriples]}; + false -> + case lists:keyfind(use, 1, BadOpaque) of + {use, BadArgs} -> + %% an opaque term is used where a structured term is expected + ExpectedArgs = + case FailReason of + only_sig -> SigArgs; + _ -> ContrArgs + end, + {call_with_opaque, [M, F, ArgStrings, BadArgs, ExpectedArgs]}; + false -> + case + erl_bif_types:opaque_args(M, F, A, ArgTypes, Opaques) + of + [] -> %% there is a structured term clash in some argument + {call, [M, F, ArgStrings, + ArgNs, FailReason, + format_sig_args(Sig, State), + format_type(t_fun_range(Sig), State), + ContractInfo]}; + Ns -> + {call_with_opaque, [M, F, ArgStrings, Ns, ContrArgs]} + end + end + end + end; + Label when is_integer(Label) -> + {apply, [ArgStrings, + ArgNs, FailReason, + format_sig_args(Sig, State), + format_type(t_fun_range(Sig), State), + ContractInfo]} + end. + +%% -> [{ElementI, [ArgN]}] where [ArgN] is a non-empty list of +%% arguments containing unknown opaque types and Element is 1 or 2. +opaque_problems(ContractOrSigList, ArgTypes, Opaques, ArgNs) -> + ArgElementList = find_unknown(ContractOrSigList, ArgTypes, Opaques, ArgNs), + F = fun(1) -> decl; (2) -> use end, + [{F(ElementI), lists:usort([ArgN || {ArgN, EI} <- ArgElementList, + EI =:= ElementI])} || + ElementI <- lists:usort([EI || {_, EI} <- ArgElementList])]. + +%% -> [{ArgN, ElementI}] where ElementI = 1 means there is an unknown +%% opaque type in argument ArgN of the the contract/signature, +%% and ElementI = 2 means that there is an unknown opaque type in +%% argument ArgN of the the (current) argument types. +find_unknown(ContractOrSigList, ArgTypes, Opaques, NoneArgNs) -> + ArgNs = lists:seq(1, length(ArgTypes)), + [{ArgN, ElementI} || + ContractOrSig <- ContractOrSigList, + {E1, E2, ArgN} <- lists:zip3(ContractOrSig, ArgTypes, ArgNs), + lists:member(ArgN, NoneArgNs), + ElementI <- erl_types:t_find_unknown_opaque(E1, E2, Opaques)]. + +is_opaque_type_test_problem(Fun, Args, ArgTypes, State) -> + case Fun of + {erlang, FN, 1} when FN =:= is_atom; FN =:= is_boolean; + FN =:= is_binary; FN =:= is_bitstring; + FN =:= is_float; FN =:= is_function; + FN =:= is_integer; FN =:= is_list; + FN =:= is_number; FN =:= is_pid; FN =:= is_port; + FN =:= is_reference; FN =:= is_tuple; + FN =:= is_map -> + type_test_opaque_arg(Args, ArgTypes, State#state.opaques); + {erlang, FN, 2} when FN =:= is_function -> + type_test_opaque_arg(Args, ArgTypes, State#state.opaques); + _ -> no + end. + +type_test_opaque_arg([], [], _Opaques) -> + no; +type_test_opaque_arg([Arg|Args], [ArgType|ArgTypes], Opaques) -> + case erl_types:t_has_opaque_subtype(ArgType, Opaques) of + true -> {yes, Arg, ArgType}; + false -> type_test_opaque_arg(Args, ArgTypes, Opaques) + end. + +expected_arg_triples(ArgNs, ArgTypes, State) -> + [begin + Arg = lists:nth(N, ArgTypes), + {N, Arg, format_type(Arg, State)} + end || N <- ArgNs]. + +add_bif_warnings({erlang, Op, 2}, [T1, T2] = Ts, Tree, State) + when Op =:= '=:='; Op =:= '==' -> + Opaques = State#state.opaques, + Inf = t_inf(T1, T2, Opaques), + case + t_is_none(Inf) andalso (not any_none(Ts)) + andalso (not is_int_float_eq_comp(T1, Op, T2, Opaques)) + of + true -> + %% Give priority to opaque warning (as usual). + case erl_types:t_find_unknown_opaque(T1, T2, Opaques) of + [] -> + Args = comp_format_args([], T1, Op, T2, State), + state__add_warning(State, ?WARN_MATCHING, Tree, {exact_eq, Args}); + Ns -> + Args = comp_format_args(Ns, T1, Op, T2, State), + state__add_warning(State, ?WARN_OPAQUE, Tree, {opaque_eq, Args}) + end; + false -> + State + end; +add_bif_warnings({erlang, Op, 2}, [T1, T2] = Ts, Tree, State) + when Op =:= '=/='; Op =:= '/=' -> + Opaques = State#state.opaques, + case + (not any_none(Ts)) + andalso (not is_int_float_eq_comp(T1, Op, T2, Opaques)) + of + true -> + case erl_types:t_find_unknown_opaque(T1, T2, Opaques) of + [] -> State; + Ns -> + Args = comp_format_args(Ns, T1, Op, T2, State), + state__add_warning(State, ?WARN_OPAQUE, Tree, {opaque_neq, Args}) + end; + false -> + State + end; +add_bif_warnings(_, _, _, State) -> + State. + +is_int_float_eq_comp(T1, Op, T2, Opaques) -> + (Op =:= '==' orelse Op =:= '/=') andalso + ((erl_types:t_is_float(T1, Opaques) + andalso t_is_integer(T2, Opaques)) orelse + (t_is_integer(T1, Opaques) + andalso erl_types:t_is_float(T2, Opaques))). + +comp_format_args([1|_], T1, Op, T2, State) -> + [format_type(T2, State), Op, format_type(T1, State)]; +comp_format_args(_, T1, Op, T2, State) -> + [format_type(T1, State), Op, format_type(T2, State)]. + +%%---------------------------------------- + +handle_bitstr(Tree, Map, State) -> + %% Construction of binaries. + Size = cerl:bitstr_size(Tree), + Val = cerl:bitstr_val(Tree), + BitstrType = cerl:concrete(cerl:bitstr_type(Tree)), + {State1, Map1, SizeType0} = traverse(Size, Map, State), + {State2, Map2, ValType0} = traverse(Val, Map1, State1), + case cerl:bitstr_bitsize(Tree) of + BitSz when BitSz =:= all orelse BitSz =:= utf -> + ValType = + case BitSz of + all -> + true = (BitstrType =:= binary), + t_inf(ValType0, t_bitstr()); + utf -> + true = lists:member(BitstrType, [utf8, utf16, utf32]), + t_inf(ValType0, t_integer()) + end, + Map3 = enter_type(Val, ValType, Map2), + case t_is_none(ValType) of + true -> + Msg = {bin_construction, ["value", + format_cerl(Val), format_cerl(Tree), + format_type(ValType0, State2)]}, + State3 = state__add_warning(State2, ?WARN_BIN_CONSTRUCTION, Val, Msg), + {State3, Map3, t_none()}; + false -> + {State2, Map3, t_bitstr()} + end; + BitSz when is_integer(BitSz) orelse BitSz =:= any -> + SizeType = t_inf(SizeType0, t_non_neg_integer()), + ValType = + case BitstrType of + binary -> t_inf(ValType0, t_bitstr()); + float -> t_inf(ValType0, t_number()); + integer -> t_inf(ValType0, t_integer()) + end, + case any_none([SizeType, ValType]) of + true -> + {Msg, Offending} = + case t_is_none(SizeType) of + true -> + {{bin_construction, + ["size", format_cerl(Size), format_cerl(Tree), + format_type(SizeType0, State2)]}, + Size}; + false -> + {{bin_construction, + ["value", format_cerl(Val), format_cerl(Tree), + format_type(ValType0, State2)]}, + Val} + end, + State3 = state__add_warning(State2, ?WARN_BIN_CONSTRUCTION, + Offending, Msg), + {State3, Map2, t_none()}; + false -> + UnitVal = cerl:concrete(cerl:bitstr_unit(Tree)), + Opaques = State2#state.opaques, + NumberVals = t_number_vals(SizeType, Opaques), + {State3, Type} = + case t_contains_opaque(SizeType, Opaques) of + true -> + Msg = {opaque_size, [format_type(SizeType, State2), + format_cerl(Size)]}, + {state__add_warning(State2, ?WARN_OPAQUE, Size, Msg), + t_none()}; + false -> + case NumberVals of + [OneSize] -> {State2, t_bitstr(0, OneSize * UnitVal)}; + unknown -> {State2, t_bitstr()}; + _ -> + MinSize = erl_types:number_min(SizeType, Opaques), + {State2, t_bitstr(UnitVal, UnitVal * MinSize)} + end + end, + Map3 = enter_type_lists([Val, Size, Tree], + [ValType, SizeType, Type], Map2), + {State3, Map3, Type} + end + end. + +%%---------------------------------------- + +handle_call(Tree, Map, State) -> + M = cerl:call_module(Tree), + F = cerl:call_name(Tree), + Args = cerl:call_args(Tree), + MFAList = [M, F|Args], + {State1, Map1, [MType0, FType0|As]} = traverse_list(MFAList, Map, State), + Opaques = State#state.opaques, + MType = t_inf(t_module(), MType0, Opaques), + FType = t_inf(t_atom(), FType0, Opaques), + Map2 = enter_type_lists([M, F], [MType, FType], Map1), + MOpaque = t_is_none(MType) andalso (not t_is_none(MType0)), + FOpaque = t_is_none(FType) andalso (not t_is_none(FType0)), + case any_none([MType, FType|As]) of + true -> + State2 = + if + MOpaque -> % This is a problem we just detected; not a known one + MS = format_cerl(M), + case t_is_none(t_inf(t_module(), MType0)) of + true -> + Msg = {app_call, [MS, format_cerl(F), + format_args(Args, As, State1), + MS, format_type(t_module(), State1), + format_type(MType0, State1)]}, + state__add_warning(State1, ?WARN_FAILING_CALL, Tree, Msg); + false -> + Msg = {opaque_call, [MS, format_cerl(F), + format_args(Args, As, State1), + MS, format_type(MType0, State1)]}, + state__add_warning(State1, ?WARN_FAILING_CALL, Tree, Msg) + end; + FOpaque -> + FS = format_cerl(F), + case t_is_none(t_inf(t_atom(), FType0)) of + true -> + Msg = {app_call, [format_cerl(M), FS, + format_args(Args, As, State1), + FS, format_type(t_atom(), State1), + format_type(FType0, State1)]}, + state__add_warning(State1, ?WARN_FAILING_CALL, Tree, Msg); + false -> + Msg = {opaque_call, [format_cerl(M), FS, + format_args(Args, As, State1), + FS, format_type(FType0, State1)]}, + state__add_warning(State1, ?WARN_FAILING_CALL, Tree, Msg) + end; + true -> State1 + end, + {State2, Map2, t_none()}; + false -> + case t_is_atom(MType) of + true -> + %% XXX: Consider doing this for all combinations of MF + case {t_atom_vals(MType), t_atom_vals(FType)} of + {[MAtom], [FAtom]} -> + FunInfo = [{remote, state__fun_info({MAtom, FAtom, length(Args)}, + State1)}], + handle_apply_or_call(FunInfo, Args, As, Map2, Tree, State1); + {_MAtoms, _FAtoms} -> + {State1, Map2, t_any()} + end; + false -> + {State1, Map2, t_any()} + end + end. + +%%---------------------------------------- + +handle_case(Tree, Map, State) -> + Arg = cerl:case_arg(Tree), + Clauses = filter_match_fail(cerl:case_clauses(Tree)), + {State1, Map1, ArgType} = SMA = traverse(Arg, Map, State), + case t_is_none_or_unit(ArgType) of + true -> SMA; + false -> + State2 = + case is_race_analysis_enabled(State) of + true -> + {RaceList, RaceListSize} = get_race_list_and_size(State1), + state__renew_race_list([beg_case|RaceList], + RaceListSize + 1, State1); + false -> State1 + end, + Map2 = join_maps_begin(Map1), + {MapList, State3, Type} = + handle_clauses(Clauses, Arg, ArgType, ArgType, State2, + [], Map2, [], []), + Map3 = join_maps_end(MapList, Map2), + debug_pp_map(Map3), + {State3, Map3, Type} + end. + +%%---------------------------------------- + +handle_cons(Tree, Map, State) -> + Hd = cerl:cons_hd(Tree), + Tl = cerl:cons_tl(Tree), + {State1, Map1, HdType} = traverse(Hd, Map, State), + {State2, Map2, TlType} = traverse(Tl, Map1, State1), + State3 = + case t_is_none(t_inf(TlType, t_list(), State2#state.opaques)) of + true -> + Msg = {improper_list_constr, [format_type(TlType, State2)]}, + state__add_warning(State2, ?WARN_NON_PROPER_LIST, Tree, Msg); + false -> + State2 + end, + Type = t_cons(HdType, TlType), + {State3, Map2, Type}. + +%%---------------------------------------- + +handle_let(Tree, Map, State) -> + IsRaceAnalysisEnabled = is_race_analysis_enabled(State), + Arg = cerl:let_arg(Tree), + Vars = cerl:let_vars(Tree), + {Map0, State0} = + case cerl:is_c_var(Arg) of + true -> + [Var] = Vars, + {enter_subst(Var, Arg, Map), + case IsRaceAnalysisEnabled of + true -> + {RaceList, RaceListSize} = get_race_list_and_size(State), + state__renew_race_list( + [dialyzer_races:let_tag_new(Var, Arg)|RaceList], + RaceListSize + 1, State); + false -> State + end}; + false -> {Map, State} + end, + Body = cerl:let_body(Tree), + {State1, Map1, ArgTypes} = SMA = traverse(Arg, Map0, State0), + State2 = + case IsRaceAnalysisEnabled andalso cerl:is_c_call(Arg) of + true -> + Mod = cerl:call_module(Arg), + Name = cerl:call_name(Arg), + case cerl:is_literal(Mod) andalso + cerl:concrete(Mod) =:= ets andalso + cerl:is_literal(Name) andalso + cerl:concrete(Name) =:= new of + true -> renew_race_public_tables(Vars, State1); + false -> State1 + end; + false -> State1 + end, + case t_is_none_or_unit(ArgTypes) of + true -> SMA; + false -> + Map2 = enter_type_lists(Vars, t_to_tlist(ArgTypes), Map1), + traverse(Body, Map2, State2) + end. + +%%---------------------------------------- + +handle_module(Tree, Map, State) -> + %% By not including the variables in scope we can assure that we + %% will get the current function type when using the variables. + Defs = cerl:module_defs(Tree), + PartFun = fun({_Var, Fun}) -> + state__is_escaping(get_label(Fun), State) + end, + {Defs1, Defs2} = lists:partition(PartFun, Defs), + Letrec = cerl:c_letrec(Defs1, cerl:c_int(42)), + {State1, Map1, _FunTypes} = traverse(Letrec, Map, State), + %% Also add environments for the other top-level functions. + VarTypes = [{Var, state__fun_type(Fun, State1)} || {Var, Fun} <- Defs], + EnvMap = enter_type_list(VarTypes, Map), + FoldFun = fun({_Var, Fun}, AccState) -> + state__update_fun_env(Fun, EnvMap, AccState) + end, + State2 = lists:foldl(FoldFun, State1, Defs2), + {State2, Map1, t_any()}. + +%%---------------------------------------- + +handle_receive(Tree, Map, State) -> + Clauses = filter_match_fail(cerl:receive_clauses(Tree)), + Timeout = cerl:receive_timeout(Tree), + State1 = + case is_race_analysis_enabled(State) of + true -> + {RaceList, RaceListSize} = get_race_list_and_size(State), + state__renew_race_list([beg_case|RaceList], + RaceListSize + 1, State); + false -> State + end, + {MapList, State2, ReceiveType} = + handle_clauses(Clauses, ?no_arg, t_any(), t_any(), State1, [], Map, + [], []), + Map1 = join_maps(MapList, Map), + {State3, Map2, TimeoutType} = traverse(Timeout, Map1, State2), + Opaques = State3#state.opaques, + case (t_is_atom(TimeoutType, Opaques) andalso + (t_atom_vals(TimeoutType, Opaques) =:= ['infinity'])) of + true -> + {State3, Map2, ReceiveType}; + false -> + Action = cerl:receive_action(Tree), + {State4, Map3, ActionType} = traverse(Action, Map, State3), + Map4 = join_maps([Map3, Map1], Map), + Type = t_sup(ReceiveType, ActionType), + {State4, Map4, Type} + end. + +%%---------------------------------------- + +handle_try(Tree, Map, State) -> + Arg = cerl:try_arg(Tree), + EVars = cerl:try_evars(Tree), + Vars = cerl:try_vars(Tree), + Body = cerl:try_body(Tree), + Handler = cerl:try_handler(Tree), + {State1, Map1, ArgType} = traverse(Arg, Map, State), + Map2 = mark_as_fresh(Vars, Map1), + {SuccState, SuccMap, SuccType} = + case bind_pat_vars(Vars, t_to_tlist(ArgType), [], Map2, State1) of + {error, _, _, _, _} -> + {State1, map__new(), t_none()}; + {SuccMap1, VarTypes} -> + %% Try to bind the argument. Will only succeed if + %% it is a simple structured term. + SuccMap2 = + case bind_pat_vars_reverse([Arg], [t_product(VarTypes)], [], + SuccMap1, State1) of + {error, _, _, _, _} -> SuccMap1; + {SM, _} -> SM + end, + traverse(Body, SuccMap2, State1) + end, + ExcMap1 = mark_as_fresh(EVars, Map), + {State2, ExcMap2, HandlerType} = traverse(Handler, ExcMap1, SuccState), + TryType = t_sup(SuccType, HandlerType), + {State2, join_maps([ExcMap2, SuccMap], Map1), TryType}. + +%%---------------------------------------- + +handle_map(Tree,Map,State) -> + Pairs = cerl:map_es(Tree), + Arg = cerl:map_arg(Tree), + {State1, Map1, ArgType} = traverse(Arg, Map, State), + ArgType1 = t_inf(t_map(), ArgType), + case t_is_none_or_unit(ArgType1) of + true -> + {State1, Map1, ArgType1}; + false -> + {State2, Map2, TypePairs, ExactKeys} = + traverse_map_pairs(Pairs, Map1, State1, t_none(), [], []), + InsertPair = fun({KV,assoc,_},Acc) -> erl_types:t_map_put(KV,Acc); + ({KV,exact,KVTree},Acc) -> + case t_is_none(T=erl_types:t_map_update(KV,Acc)) of + true -> throw({none, Acc, KV, KVTree}); + false -> T + end + end, + try lists:foldl(InsertPair, ArgType1, TypePairs) + of ResT -> + BindT = t_map([{K, t_any()} || K <- ExactKeys]), + case bind_pat_vars_reverse([Arg], [BindT], [], Map2, State2) of + {error, _, _, _, _} -> {State2, Map2, ResT}; + {Map3, _} -> {State2, Map3, ResT} + end + catch {none, MapType, {K,_}, KVTree} -> + Msg2 = {map_update, [format_type(MapType, State2), + format_type(K, State2)]}, + {state__add_warning(State2, ?WARN_MAP_CONSTRUCTION, KVTree, Msg2), + Map2, t_none()} + end + end. + +traverse_map_pairs([], Map, State, _ShadowKeys, PairAcc, KeyAcc) -> + {State, Map, lists:reverse(PairAcc), KeyAcc}; +traverse_map_pairs([Pair|Pairs], Map, State, ShadowKeys, PairAcc, KeyAcc) -> + Key = cerl:map_pair_key(Pair), + Val = cerl:map_pair_val(Pair), + Op = cerl:map_pair_op(Pair), + {State1, Map1, [K,V]} = traverse_list([Key,Val],Map,State), + KeyAcc1 = + case cerl:is_literal(Op) andalso cerl:concrete(Op) =:= exact andalso + t_is_singleton(K, State#state.opaques) andalso + t_is_none(t_inf(ShadowKeys, K)) of + true -> [K|KeyAcc]; + false -> KeyAcc + end, + traverse_map_pairs(Pairs, Map1, State1, t_sup(K, ShadowKeys), + [{{K,V},cerl:concrete(Op),Pair}|PairAcc], KeyAcc1). + +%%---------------------------------------- + +handle_tuple(Tree, Map, State) -> + Elements = cerl:tuple_es(Tree), + {State1, Map1, EsType} = traverse_list(Elements, Map, State), + TupleType = t_tuple(EsType), + case t_is_none(TupleType) of + true -> + {State1, Map1, t_none()}; + false -> + %% Let's find out if this is a record + case Elements of + [Tag|Left] -> + case cerl:is_c_atom(Tag) andalso is_literal_record(Tree) of + true -> + TagVal = cerl:atom_val(Tag), + case state__lookup_record(TagVal, length(Left), State1) of + error -> {State1, Map1, TupleType}; + {ok, RecType} -> + InfTupleType = t_inf(RecType, TupleType), + case t_is_none(InfTupleType) of + true -> + RecC = format_type(TupleType, State1), + FieldDiffs = format_field_diffs(TupleType, State1), + Msg = {record_constr, [RecC, FieldDiffs]}, + State2 = state__add_warning(State1, ?WARN_MATCHING, + Tree, Msg), + {State2, Map1, t_none()}; + false -> + case bind_pat_vars(Elements, t_tuple_args(RecType), + [], Map1, State1) of + {error, bind, ErrorPat, ErrorType, _} -> + Msg = {record_constr, + [TagVal, format_patterns(ErrorPat), + format_type(ErrorType, State1)]}, + State2 = state__add_warning(State1, ?WARN_MATCHING, + Tree, Msg), + {State2, Map1, t_none()}; + {error, opaque, ErrorPat, ErrorType, OpaqueType} -> + Msg = {opaque_match, + [format_patterns(ErrorPat), + format_type(ErrorType, State1), + format_type(OpaqueType, State1)]}, + State2 = state__add_warning(State1, ?WARN_OPAQUE, + Tree, Msg), + {State2, Map1, t_none()}; + {Map2, ETypes} -> + {State1, Map2, t_tuple(ETypes)} + end + end + end; + false -> + {State1, Map1, t_tuple(EsType)} + end; + [] -> + {State1, Map1, t_tuple([])} + end + end. + +%%---------------------------------------- +%% Clauses +%% +handle_clauses([C|Left], Arg, ArgType, OrigArgType, State, CaseTypes, MapIn, + Acc, ClauseAcc) -> + IsRaceAnalysisEnabled = is_race_analysis_enabled(State), + State1 = + case IsRaceAnalysisEnabled of + true -> + {RaceList, RaceListSize} = get_race_list_and_size(State), + state__renew_race_list( + [dialyzer_races:beg_clause_new(Arg, cerl:clause_pats(C), + cerl:clause_guard(C))| + RaceList], RaceListSize + 1, + State); + false -> State + end, + {State2, ClauseMap, BodyType, NewArgType} = + do_clause(C, Arg, ArgType, OrigArgType, MapIn, State1), + {NewClauseAcc, State3} = + case IsRaceAnalysisEnabled of + true -> + {RaceList1, RaceListSize1} = get_race_list_and_size(State2), + EndClause = dialyzer_races:end_clause_new(Arg, cerl:clause_pats(C), + cerl:clause_guard(C)), + {[EndClause|ClauseAcc], + state__renew_race_list([EndClause|RaceList1], + RaceListSize1 + 1, State2)}; + false -> {ClauseAcc, State2} + end, + {NewCaseTypes, NewAcc} = + case t_is_none(BodyType) of + true -> {CaseTypes, Acc}; + false -> {[BodyType|CaseTypes], [ClauseMap|Acc]} + end, + handle_clauses(Left, Arg, NewArgType, OrigArgType, State3, + NewCaseTypes, MapIn, NewAcc, NewClauseAcc); +handle_clauses([], _Arg, _ArgType, _OrigArgType, State, CaseTypes, _MapIn, Acc, + ClauseAcc) -> + State1 = + case is_race_analysis_enabled(State) of + true -> + {RaceList, RaceListSize} = get_race_list_and_size(State), + state__renew_race_list( + [dialyzer_races:end_case_new(ClauseAcc)|RaceList], + RaceListSize + 1, State); + false -> State + end, + {lists:reverse(Acc), State1, t_sup(CaseTypes)}. + +do_clause(C, Arg, ArgType0, OrigArgType, Map, State) -> + Pats = cerl:clause_pats(C), + Guard = cerl:clause_guard(C), + Body = cerl:clause_body(C), + State1 = + case is_race_analysis_enabled(State) of + true -> + state__renew_fun_args(Pats, State); + false -> State + end, + Map0 = mark_as_fresh(Pats, Map), + Map1 = if Arg =:= ?no_arg -> Map0; + true -> bind_subst(Arg, Pats, Map0) + end, + BindRes = + case t_is_none(ArgType0) of + true -> + {error, bind, Pats, ArgType0, ArgType0}; + false -> + ArgTypes = + case t_is_any(ArgType0) of + true -> [ArgType0 || _ <- Pats]; + false -> t_to_tlist(ArgType0) + end, + bind_pat_vars(Pats, ArgTypes, [], Map1, State1) + end, + case BindRes of + {error, ErrorType, NewPats, Type, OpaqueTerm} -> + ?debug("Failed binding pattern: ~s\nto ~s\n", + [cerl_prettypr:format(C), format_type(ArgType0, State1)]), + case state__warning_mode(State1) of + false -> + {State1, Map, t_none(), ArgType0}; + true -> + {Msg, Force} = + case t_is_none(ArgType0) of + true -> + PatString = format_patterns(Pats), + PatTypes = [PatString, format_type(OrigArgType, State1)], + %% See if this is covered by an earlier clause or if it + %% simply cannot match + OrigArgTypes = + case t_is_any(OrigArgType) of + true -> Any = t_any(), [Any || _ <- Pats]; + false -> t_to_tlist(OrigArgType) + end, + Tag = + case bind_pat_vars(Pats, OrigArgTypes, [], Map1, State1) of + {error, bind, _, _, _} -> pattern_match; + {error, record, _, _, _} -> record_match; + {error, opaque, _, _, _} -> opaque_match; + {_, _} -> pattern_match_cov + end, + {{Tag, PatTypes}, false}; + false -> + %% Try to find out if this is a default clause in a list + %% comprehension and supress this. A real Hack(tm) + Force0 = + case is_compiler_generated(cerl:get_ann(C)) of + true -> + case Pats of + [Pat] -> + case cerl:is_c_cons(Pat) of + true -> + not (cerl:is_c_var(cerl:cons_hd(Pat)) andalso + cerl:is_c_var(cerl:cons_tl(Pat)) andalso + cerl:is_literal(Guard) andalso + (cerl:concrete(Guard) =:= true)); + false -> + true + end; + [Pat0, Pat1] -> % binary comprehension + case cerl:is_c_cons(Pat0) of + true -> + not (cerl:is_c_var(cerl:cons_hd(Pat0)) andalso + cerl:is_c_var(cerl:cons_tl(Pat0)) andalso + cerl:is_c_var(Pat1) andalso + cerl:is_literal(Guard) andalso + (cerl:concrete(Guard) =:= true)); + false -> + true + end; + _ -> true + end; + false -> + true + end, + PatString = + case ErrorType of + bind -> format_patterns(Pats); + record -> format_patterns(NewPats); + opaque -> format_patterns(NewPats) + end, + PatTypes = case ErrorType of + bind -> [PatString, format_type(ArgType0, State1)]; + record -> [PatString, format_type(Type, State1)]; + opaque -> [PatString, format_type(Type, State1), + format_type(OpaqueTerm, State1)] + end, + FailedTag = case ErrorType of + bind -> pattern_match; + record -> record_match; + opaque -> opaque_match + end, + {{FailedTag, PatTypes}, Force0} + end, + WarnType = case Msg of + {opaque_match, _} -> ?WARN_OPAQUE; + {pattern_match, _} -> ?WARN_MATCHING; + {record_match, _} -> ?WARN_MATCHING; + {pattern_match_cov, _} -> ?WARN_MATCHING + end, + {state__add_warning(State1, WarnType, C, Msg, Force), + Map, t_none(), ArgType0} + end; + {Map2, PatTypes} -> + Map3 = + case Arg =:= ?no_arg of + true -> Map2; + false -> + %% Try to bind the argument. Will only succeed if + %% it is a simple structured term. + case bind_pat_vars_reverse([Arg], [t_product(PatTypes)], + [], Map2, State1) of + {error, _, _, _, _} -> Map2; + {NewMap, _} -> NewMap + end + end, + NewArgType = + case Arg =:= ?no_arg of + true -> ArgType0; + false -> + GenType = dialyzer_typesig:get_safe_underapprox(Pats, Guard), + t_subtract(t_product(t_to_tlist(ArgType0)), GenType) + end, + case bind_guard(Guard, Map3, State1) of + {error, Reason} -> + ?debug("Failed guard: ~s\n", + [cerl_prettypr:format(C, [{hook, cerl_typean:pp_hook()}])]), + PatString = format_patterns(Pats), + DefaultMsg = + case Pats =:= [] of + true -> {guard_fail, []}; + false -> + {guard_fail_pat, [PatString, format_type(ArgType0, State1)]} + end, + State2 = + case Reason of + none -> state__add_warning(State1, ?WARN_MATCHING, C, DefaultMsg); + {FailGuard, Msg} -> + case is_compiler_generated(cerl:get_ann(FailGuard)) of + false -> + WarnType = case Msg of + {guard_fail, _} -> ?WARN_MATCHING; + {neg_guard_fail, _} -> ?WARN_MATCHING; + {opaque_guard, _} -> ?WARN_OPAQUE + end, + state__add_warning(State1, WarnType, FailGuard, Msg); + true -> + state__add_warning(State1, ?WARN_MATCHING, C, Msg) + end + end, + {State2, Map, t_none(), NewArgType}; + Map4 -> + {RetState, RetMap, BodyType} = traverse(Body, Map4, State1), + {RetState, RetMap, BodyType, NewArgType} + end + end. + +bind_subst(Arg, Pats, Map) -> + case cerl:type(Arg) of + values -> + bind_subst_list(cerl:values_es(Arg), Pats, Map); + var -> + [Pat] = Pats, + enter_subst(Arg, Pat, Map); + _ -> + Map + end. + +bind_subst_list([Arg|ArgLeft], [Pat|PatLeft], Map) -> + NewMap = + case {cerl:type(Arg), cerl:type(Pat)} of + {var, var} -> enter_subst(Arg, Pat, Map); + {var, alias} -> enter_subst(Arg, cerl:alias_pat(Pat), Map); + {literal, literal} -> Map; + {T, T} -> bind_subst_list(lists:flatten(cerl:subtrees(Arg)), + lists:flatten(cerl:subtrees(Pat)), + Map); + _ -> Map + end, + bind_subst_list(ArgLeft, PatLeft, NewMap); +bind_subst_list([], [], Map) -> + Map. + +%%---------------------------------------- +%% Patterns +%% + +bind_pat_vars(Pats, Types, Acc, Map, State) -> + try + bind_pat_vars(Pats, Types, Acc, Map, State, false) + catch + throw:Error -> + %% Error = {error, bind | opaque | record, ErrorPats, ErrorType} + Error + end. + +bind_pat_vars_reverse(Pats, Types, Acc, Map, State) -> + try + bind_pat_vars(Pats, Types, Acc, Map, State, true) + catch + throw:Error -> + %% Error = {error, bind | opaque | record, ErrorPats, ErrorType} + Error + end. + +bind_pat_vars([Pat|PatLeft], [Type|TypeLeft], Acc, Map, State, Rev) -> + ?debug("Binding pat: ~w to ~s\n", [cerl:type(Pat), format_type(Type, State)] +), + Opaques = State#state.opaques, + {NewMap, TypeOut} = + case cerl:type(Pat) of + alias -> + %% Map patterns are more allowing than the type of their literal. We + %% must unfold AliasPat if it is a literal. + AliasPat = dialyzer_utils:refold_pattern(cerl:alias_pat(Pat)), + Var = cerl:alias_var(Pat), + Map1 = enter_subst(Var, AliasPat, Map), + {Map2, [PatType]} = bind_pat_vars([AliasPat], [Type], [], + Map1, State, Rev), + {enter_type(Var, PatType, Map2), PatType}; + binary -> + %% Cannot bind the binary if we are in reverse match since + %% binary patterns and binary construction are not symmetric. + case Rev of + true -> {Map, t_bitstr()}; + false -> + BinType = t_inf(t_bitstr(), Type, Opaques), + case t_is_none(BinType) of + true -> + case t_find_opaque_mismatch(t_bitstr(), Type, Opaques) of + {ok, T1, T2} -> + bind_error([Pat], T1, T2, opaque); + error -> + bind_error([Pat], Type, t_none(), bind) + end; + false -> + Segs = cerl:binary_segments(Pat), + {Map1, SegTypes} = bind_bin_segs(Segs, BinType, Map, State), + {Map1, t_bitstr_concat(SegTypes)} + end + end; + cons -> + Cons = t_inf(Type, t_cons(), Opaques), + case t_is_none(Cons) of + true -> + bind_opaque_pats(t_cons(), Type, Pat, State); + false -> + {Map1, [HdType, TlType]} = + bind_pat_vars([cerl:cons_hd(Pat), cerl:cons_tl(Pat)], + [t_cons_hd(Cons, Opaques), + t_cons_tl(Cons, Opaques)], + [], Map, State, Rev), + {Map1, t_cons(HdType, TlType)} + end; + literal -> + Pat0 = dialyzer_utils:refold_pattern(Pat), + case cerl:is_literal(Pat0) of + true -> + Literal = literal_type(Pat), + case t_is_none(t_inf(Literal, Type, Opaques)) of + true -> + bind_opaque_pats(Literal, Type, Pat, State); + false -> {Map, Literal} + end; + false -> + %% Retry with the unfolded pattern + {Map1, [PatType]} + = bind_pat_vars([Pat0], [Type], [], Map, State, Rev), + {Map1, PatType} + end; + map -> + MapT = t_inf(Type, t_map(), Opaques), + case t_is_none(MapT) of + true -> + bind_opaque_pats(t_map(), Type, Pat, State); + false -> + case Rev of + %% TODO: Reverse matching (propagating a matched subset back to a value) + true -> {Map, MapT}; + false -> + FoldFun = + fun(Pair, {MapAcc, ListAcc}) -> + %% Only exact (:=) can appear in patterns + exact = cerl:concrete(cerl:map_pair_op(Pair)), + Key = cerl:map_pair_key(Pair), + KeyType = + case cerl:type(Key) of + var -> + case state__lookup_type_for_letrec(Key, State) of + error -> lookup_type(Key, MapAcc); + {ok, RecType} -> RecType + end; + literal -> + literal_type(Key) + end, + Bind = erl_types:t_map_get(KeyType, MapT), + {MapAcc1, [ValType]} = + bind_pat_vars([cerl:map_pair_val(Pair)], + [Bind], [], MapAcc, State, Rev), + case t_is_singleton(KeyType, Opaques) of + true -> {MapAcc1, [{KeyType, ValType}|ListAcc]}; + false -> {MapAcc1, ListAcc} + end + end, + {Map1, Pairs} = lists:foldl(FoldFun, {Map, []}, cerl:map_es(Pat)), + {Map1, t_inf(MapT, t_map(Pairs))} + end + end; + tuple -> + Es = cerl:tuple_es(Pat), + {TypedRecord, Prototype} = + case Es of + [] -> {false, t_tuple([])}; + [Tag|Left] -> + case cerl:is_c_atom(Tag) andalso is_literal_record(Pat) of + true -> + TagAtom = cerl:atom_val(Tag), + case state__lookup_record(TagAtom, length(Left), State) of + error -> {false, t_tuple(length(Es))}; + {ok, Record} -> + [_Head|AnyTail] = [t_any() || _ <- Es], + UntypedRecord = t_tuple([t_atom(TagAtom)|AnyTail]), + {not t_is_equal(Record, UntypedRecord), Record} + end; + false -> {false, t_tuple(length(Es))} + end + end, + Tuple = t_inf(Prototype, Type, Opaques), + case t_is_none(Tuple) of + true -> + bind_opaque_pats(Prototype, Type, Pat, State); + false -> + SubTuples = t_tuple_subtypes(Tuple, Opaques), + %% Need to call the top function to get the try-catch wrapper + MapJ = join_maps_begin(Map), + Results = + case Rev of + true -> + [bind_pat_vars_reverse(Es, t_tuple_args(SubTuple, Opaques), + [], MapJ, State) + || SubTuple <- SubTuples]; + false -> + [bind_pat_vars(Es, t_tuple_args(SubTuple, Opaques), [], + MapJ, State) + || SubTuple <- SubTuples] + end, + case lists:keyfind(opaque, 2, Results) of + {error, opaque, _PatList, _Type, Opaque} -> + bind_error([Pat], Tuple, Opaque, opaque); + false -> + case [M || {M, _} <- Results, M =/= error] of + [] -> + case TypedRecord of + true -> bind_error([Pat], Tuple, Prototype, record); + false -> bind_error([Pat], Tuple, t_none(), bind) + end; + Maps -> + Map1 = join_maps_end(Maps, MapJ), + TupleType = t_sup([t_tuple(EsTypes) + || {M, EsTypes} <- Results, M =/= error]), + {Map1, TupleType} + end + end + end; + values -> + Es = cerl:values_es(Pat), + {Map1, EsTypes} = + bind_pat_vars(Es, t_to_tlist(Type), [], Map, State, Rev), + {Map1, t_product(EsTypes)}; + var -> + VarType1 = + case state__lookup_type_for_letrec(Pat, State) of + error -> lookup_type(Pat, Map); + {ok, RecType} -> RecType + end, + %% Must do inf when binding args to pats. Vars in pats are fresh. + VarType2 = t_inf(VarType1, Type, Opaques), + case t_is_none(VarType2) of + true -> + case t_find_opaque_mismatch(VarType1, Type, Opaques) of + {ok, T1, T2} -> + bind_error([Pat], T1, T2, opaque); + error -> + bind_error([Pat], Type, t_none(), bind) + end; + false -> + Map1 = enter_type(Pat, VarType2, Map), + {Map1, VarType2} + end; + _Other -> + %% Catch all is needed when binding args to pats + ?debug("Failed match for ~p\n", [_Other]), + bind_error([Pat], Type, t_none(), bind) + end, + bind_pat_vars(PatLeft, TypeLeft, [TypeOut|Acc], NewMap, State, Rev); +bind_pat_vars([], [], Acc, Map, _State, _Rev) -> + {Map, lists:reverse(Acc)}. + +bind_bin_segs(BinSegs, BinType, Map, State) -> + bind_bin_segs(BinSegs, BinType, [], Map, State). + +bind_bin_segs([Seg|Segs], BinType, Acc, Map, State) -> + Val = cerl:bitstr_val(Seg), + SegType = cerl:concrete(cerl:bitstr_type(Seg)), + UnitVal = cerl:concrete(cerl:bitstr_unit(Seg)), + case cerl:bitstr_bitsize(Seg) of + all -> + binary = SegType, [] = Segs, %% just an assert + T = t_inf(t_bitstr(UnitVal, 0), BinType), + {Map1, [Type]} = bind_pat_vars([Val], [T], [], Map, State, false), + Type1 = remove_local_opaque_types(Type, State#state.opaques), + bind_bin_segs(Segs, t_bitstr(0, 0), [Type1|Acc], Map1, State); + utf -> % XXX: possibly can be strengthened + true = lists:member(SegType, [utf8, utf16, utf32]), + {Map1, [_]} = bind_pat_vars([Val], [t_integer()], [], Map, State, false), + Type = t_binary(), + bind_bin_segs(Segs, BinType, [Type|Acc], Map1, State); + BitSz when is_integer(BitSz) orelse BitSz =:= any -> + Size = cerl:bitstr_size(Seg), + {Map1, [SizeType]} = + bind_pat_vars([Size], [t_non_neg_integer()], [], Map, State, false), + Opaques = State#state.opaques, + NumberVals = t_number_vals(SizeType, Opaques), + case t_contains_opaque(SizeType, Opaques) of + true -> bind_error([Seg], SizeType, t_none(), opaque); + false -> ok + end, + Type = + case NumberVals of + [OneSize] -> t_bitstr(0, UnitVal * OneSize); + _ -> % 'unknown' too + MinSize = erl_types:number_min(SizeType, Opaques), + t_bitstr(UnitVal, UnitVal * MinSize) + end, + ValConstr = + case SegType of + binary -> Type; %% The same constraints as for the whole bitstr + float -> t_float(); + integer -> + case NumberVals of + unknown -> t_integer(); + List -> + SizeVal = lists:max(List), + Flags = cerl:concrete(cerl:bitstr_flags(Seg)), + N = SizeVal * UnitVal, + case N >= ?BITS of + true -> + case lists:member(signed, Flags) of + true -> t_from_range(neg_inf, pos_inf); + false -> t_from_range(0, pos_inf) + end; + false -> + case lists:member(signed, Flags) of + true -> t_from_range(-(1 bsl (N - 1)), 1 bsl (N - 1) - 1); + false -> t_from_range(0, 1 bsl N - 1) + end + end + end + end, + {Map2, [_]} = bind_pat_vars([Val], [ValConstr], [], Map1, State, false), + NewBinType = t_bitstr_match(Type, BinType), + case t_is_none(NewBinType) of + true -> bind_error([Seg], BinType, t_none(), bind); + false -> bind_bin_segs(Segs, NewBinType, [Type|Acc], Map2, State) + end + end; +bind_bin_segs([], _BinType, Acc, Map, _State) -> + {Map, lists:reverse(Acc)}. + +bind_error(Pats, Type, OpaqueType, Error0) -> + Error = case {Error0, Pats} of + {bind, [Pat]} -> + case is_literal_record(Pat) of + true -> record; + false -> Error0 + end; + _ -> Error0 + end, + throw({error, Error, Pats, Type, OpaqueType}). + +-spec bind_opaque_pats(type(), type(), cerl:c_literal(), state()) -> + no_return(). + +bind_opaque_pats(GenType, Type, Pat, State) -> + case t_find_opaque_mismatch(GenType, Type, State#state.opaques) of + {ok, T1, T2} -> + bind_error([Pat], T1, T2, opaque); + error -> + bind_error([Pat], Type, t_none(), bind) + end. + +%%---------------------------------------- +%% Guards +%% + +bind_guard(Guard, Map, State) -> + try bind_guard(Guard, Map, maps:new(), pos, State) of + {Map1, _Type} -> Map1 + catch + throw:{fail, Warning} -> {error, Warning}; + throw:{fatal_fail, Warning} -> {error, Warning} + end. + +bind_guard(Guard, Map, Env, Eval, State) -> + ?debug("Handling ~w guard: ~s\n", + [Eval, cerl_prettypr:format(Guard, [{noann, true}])]), + case cerl:type(Guard) of + binary -> + {Map, t_binary()}; + 'case' -> + Arg = cerl:case_arg(Guard), + Clauses = cerl:case_clauses(Guard), + bind_guard_case_clauses(Arg, Clauses, Map, Env, Eval, State); + cons -> + Hd = cerl:cons_hd(Guard), + Tl = cerl:cons_tl(Guard), + {Map1, HdType} = bind_guard(Hd, Map, Env, dont_know, State), + {Map2, TlType} = bind_guard(Tl, Map1, Env, dont_know, State), + {Map2, t_cons(HdType, TlType)}; + literal -> + {Map, literal_type(Guard)}; + 'try' -> + Arg = cerl:try_arg(Guard), + [Var] = cerl:try_vars(Guard), + EVars = cerl:try_evars(Guard), + %%?debug("Storing: ~w\n", [Var]), + Map1 = join_maps_begin(Map), + Map2 = mark_as_fresh(EVars, Map1), + %% Visit handler first so we know if it should be ignored + {{HandlerMap, HandlerType}, HandlerE} = + try {bind_guard(cerl:try_handler(Guard), Map2, Env, Eval, State), none} + catch throw:HE -> + {{Map2, t_none()}, HE} + end, + BodyEnv = maps:put(get_label(Var), Arg, Env), + Wanted = case Eval of pos -> t_atom(true); neg -> t_atom(false); + dont_know -> t_any() end, + case t_is_none(t_inf(HandlerType, Wanted)) of + %% Handler won't save us; pretend it does not exist + true -> bind_guard(cerl:try_body(Guard), Map, BodyEnv, Eval, State); + false -> + {{BodyMap, BodyType}, BodyE} = + try {bind_guard(cerl:try_body(Guard), Map1, BodyEnv, + Eval, State), none} + catch throw:BE -> + {{Map1, t_none()}, BE} + end, + Map3 = join_maps_end([BodyMap, HandlerMap], Map1), + case t_is_none(Sup = t_sup(BodyType, HandlerType)) of + true -> + %% Pick a reason. N.B. We assume that the handler is always + %% compiler-generated if the body is; that way, we won't need to + %% check. + Fatality = case {BodyE, HandlerE} of + {{fatal_fail, _}, _} -> fatal_fail; + {_, {fatal_fail, _}} -> fatal_fail; + _ -> fail + end, + throw({Fatality, + case {BodyE, HandlerE} of + {{_, Rsn}, _} when Rsn =/= none -> Rsn; + {_, {_,Rsn}} -> Rsn; + _ -> none + end}); + false -> {Map3, Sup} + end + end; + tuple -> + Es0 = cerl:tuple_es(Guard), + {Map1, Es} = bind_guard_list(Es0, Map, Env, dont_know, State), + {Map1, t_tuple(Es)}; + map -> + case Eval of + dont_know -> handle_guard_map(Guard, Map, Env, State); + _PosOrNeg -> {Map, t_none()} %% Map exprs do not produce bools + end; + 'let' -> + Arg = cerl:let_arg(Guard), + [Var] = cerl:let_vars(Guard), + %%?debug("Storing: ~w\n", [Var]), + NewEnv = maps:put(get_label(Var), Arg, Env), + bind_guard(cerl:let_body(Guard), Map, NewEnv, Eval, State); + values -> + Es = cerl:values_es(Guard), + List = [bind_guard(V, Map, Env, dont_know, State) || V <- Es], + Type = t_product([T || {_, T} <- List]), + {Map, Type}; + var -> + ?debug("Looking for var(~w)...", [cerl_trees:get_label(Guard)]), + case maps:find(get_label(Guard), Env) of + error -> + ?debug("Did not find it\n", []), + Type = lookup_type(Guard, Map), + Constr = + case Eval of + pos -> t_atom(true); + neg -> t_atom(false); + dont_know -> Type + end, + Inf = t_inf(Constr, Type), + {enter_type(Guard, Inf, Map), Inf}; + {ok, Tree} -> + ?debug("Found it\n", []), + {Map1, Type} = bind_guard(Tree, Map, Env, Eval, State), + {enter_type(Guard, Type, Map1), Type} + end; + call -> + handle_guard_call(Guard, Map, Env, Eval, State) + end. + +handle_guard_call(Guard, Map, Env, Eval, State) -> + MFA = {cerl:atom_val(cerl:call_module(Guard)), + cerl:atom_val(cerl:call_name(Guard)), + cerl:call_arity(Guard)}, + case MFA of + {erlang, F, 1} when F =:= is_atom; F =:= is_boolean; + F =:= is_binary; F =:= is_bitstring; + F =:= is_float; F =:= is_function; + F =:= is_integer; F =:= is_list; F =:= is_map; + F =:= is_number; F =:= is_pid; F =:= is_port; + F =:= is_reference; F =:= is_tuple -> + handle_guard_type_test(Guard, F, Map, Env, Eval, State); + {erlang, is_function, 2} -> + handle_guard_is_function(Guard, Map, Env, Eval, State); + MFA when (MFA =:= {erlang, internal_is_record, 3}) or + (MFA =:= {erlang, is_record, 3}) -> + handle_guard_is_record(Guard, Map, Env, Eval, State); + {erlang, '=:=', 2} -> + handle_guard_eqeq(Guard, Map, Env, Eval, State); + {erlang, '==', 2} -> + handle_guard_eq(Guard, Map, Env, Eval, State); + {erlang, 'and', 2} -> + handle_guard_and(Guard, Map, Env, Eval, State); + {erlang, 'or', 2} -> + handle_guard_or(Guard, Map, Env, Eval, State); + {erlang, 'not', 1} -> + handle_guard_not(Guard, Map, Env, Eval, State); + {erlang, Comp, 2} when Comp =:= '<'; Comp =:= '=<'; + Comp =:= '>'; Comp =:= '>=' -> + handle_guard_comp(Guard, Comp, Map, Env, Eval, State); + _ -> + handle_guard_gen_fun(MFA, Guard, Map, Env, Eval, State) + end. + +handle_guard_gen_fun({M, F, A}, Guard, Map, Env, Eval, State) -> + Args = cerl:call_args(Guard), + {Map1, As} = bind_guard_list(Args, Map, Env, dont_know, State), + Opaques = State#state.opaques, + BifRet = erl_bif_types:type(M, F, A, As, Opaques), + case t_is_none(BifRet) of + true -> + %% Is this an error-bif? + case t_is_none(erl_bif_types:type(M, F, A)) of + true -> signal_guard_fail(Eval, Guard, As, State); + false -> signal_guard_fatal_fail(Eval, Guard, As, State) + end; + false -> + BifArgs = bif_args(M, F, A), + Map2 = enter_type_lists(Args, t_inf_lists(BifArgs, As, Opaques), Map1), + Ret = + case Eval of + pos -> t_inf(t_atom(true), BifRet); + neg -> t_inf(t_atom(false), BifRet); + dont_know -> BifRet + end, + case t_is_none(Ret) of + true -> + case Eval =:= pos of + true -> signal_guard_fail(Eval, Guard, As, State); + false -> throw({fail, none}) + end; + false -> {Map2, Ret} + end + end. + +handle_guard_type_test(Guard, F, Map, Env, Eval, State) -> + [Arg] = cerl:call_args(Guard), + {Map1, ArgType} = bind_guard(Arg, Map, Env, dont_know, State), + case bind_type_test(Eval, F, ArgType, State) of + error -> + ?debug("Type test: ~w failed\n", [F]), + signal_guard_fail(Eval, Guard, [ArgType], State); + {ok, NewArgType, Ret} -> + ?debug("Type test: ~w succeeded, NewType: ~s, Ret: ~s\n", + [F, t_to_string(NewArgType), t_to_string(Ret)]), + {enter_type(Arg, NewArgType, Map1), Ret} + end. + +bind_type_test(Eval, TypeTest, ArgType, State) -> + Type = case TypeTest of + is_atom -> t_atom(); + is_boolean -> t_boolean(); + is_binary -> t_binary(); + is_bitstring -> t_bitstr(); + is_float -> t_float(); + is_function -> t_fun(); + is_integer -> t_integer(); + is_list -> t_maybe_improper_list(); + is_map -> t_map(); + is_number -> t_number(); + is_pid -> t_pid(); + is_port -> t_port(); + is_reference -> t_reference(); + is_tuple -> t_tuple() + end, + case Eval of + pos -> + Inf = t_inf(Type, ArgType, State#state.opaques), + case t_is_none(Inf) of + true -> error; + false -> {ok, Inf, t_atom(true)} + end; + neg -> + Sub = t_subtract(ArgType, Type), + case t_is_none(Sub) of + true -> error; + false -> {ok, Sub, t_atom(false)} + end; + dont_know -> + {ok, ArgType, t_boolean()} + end. + +handle_guard_comp(Guard, Comp, Map, Env, Eval, State) -> + Args = cerl:call_args(Guard), + [Arg1, Arg2] = Args, + {Map1, ArgTypes} = bind_guard_list(Args, Map, Env, dont_know, State), + Opaques = State#state.opaques, + [Type1, Type2] = ArgTypes, + IsInt1 = t_is_integer(Type1, Opaques), + IsInt2 = t_is_integer(Type2, Opaques), + case {type(Arg1), type(Arg2)} of + {{literal, Lit1}, {literal, Lit2}} -> + case erlang:Comp(cerl:concrete(Lit1), cerl:concrete(Lit2)) of + true when Eval =:= pos -> {Map, t_atom(true)}; + true when Eval =:= dont_know -> {Map, t_atom(true)}; + true when Eval =:= neg -> {Map, t_atom(true)}; + false when Eval =:= pos -> + signal_guard_fail(Eval, Guard, ArgTypes, State); + false when Eval =:= dont_know -> {Map, t_atom(false)}; + false when Eval =:= neg -> {Map, t_atom(false)} + end; + {{literal, Lit1}, var} when IsInt1 andalso IsInt2 andalso (Eval =:= pos) -> + case bind_comp_literal_var(Lit1, Arg2, Type2, Comp, Map1, Opaques) of + error -> signal_guard_fail(Eval, Guard, ArgTypes, State); + {ok, NewMap} -> {NewMap, t_atom(true)} + end; + {var, {literal, Lit2}} when IsInt1 andalso IsInt2 andalso (Eval =:= pos) -> + case bind_comp_literal_var(Lit2, Arg1, Type1, invert_comp(Comp), + Map1, Opaques) of + error -> signal_guard_fail(Eval, Guard, ArgTypes, State); + {ok, NewMap} -> {NewMap, t_atom(true)} + end; + {_, _} -> + handle_guard_gen_fun({erlang, Comp, 2}, Guard, Map, Env, Eval, State) + end. + +invert_comp('=<') -> '>='; +invert_comp('<') -> '>'; +invert_comp('>=') -> '=<'; +invert_comp('>') -> '<'. + +bind_comp_literal_var(Lit, Var, VarType, CompOp, Map, Opaques) -> + LitVal = cerl:concrete(Lit), + NewVarType = + case t_number_vals(VarType, Opaques) of + unknown -> + Range = + case CompOp of + '=<' -> t_from_range(LitVal, pos_inf); + '<' -> t_from_range(LitVal + 1, pos_inf); + '>=' -> t_from_range(neg_inf, LitVal); + '>' -> t_from_range(neg_inf, LitVal - 1) + end, + t_inf(Range, VarType, Opaques); + NumberVals -> + NewNumberVals = [X || X <- NumberVals, erlang:CompOp(LitVal, X)], + t_integers(NewNumberVals) + end, + case t_is_none(NewVarType) of + true -> error; + false -> {ok, enter_type(Var, NewVarType, Map)} + end. + +handle_guard_is_function(Guard, Map, Env, Eval, State) -> + Args = cerl:call_args(Guard), + {Map1, ArgTypes0} = bind_guard_list(Args, Map, Env, dont_know, State), + [FunType0, ArityType0] = ArgTypes0, + Opaques = State#state.opaques, + ArityType = t_inf(ArityType0, t_integer(), Opaques), + case t_is_none(ArityType) of + true -> signal_guard_fail(Eval, Guard, ArgTypes0, State); + false -> + FunTypeConstr = + case t_number_vals(ArityType, State#state.opaques) of + unknown -> t_fun(); + Vals -> + t_sup([t_fun(lists:duplicate(X, t_any()), t_any()) || X <- Vals]) + end, + FunType = t_inf(FunType0, FunTypeConstr, Opaques), + case t_is_none(FunType) of + true -> + case Eval of + pos -> signal_guard_fail(Eval, Guard, ArgTypes0, State); + neg -> {Map1, t_atom(false)}; + dont_know -> {Map1, t_atom(false)} + end; + false -> + case Eval of + pos -> {enter_type_lists(Args, [FunType, ArityType], Map1), + t_atom(true)}; + neg -> {Map1, t_atom(false)}; + dont_know -> {Map1, t_boolean()} + end + end + end. + +handle_guard_is_record(Guard, Map, Env, Eval, State) -> + Args = cerl:call_args(Guard), + [Rec, Tag0, Arity0] = Args, + Tag = cerl:atom_val(Tag0), + Arity = cerl:int_val(Arity0), + {Map1, RecType} = bind_guard(Rec, Map, Env, dont_know, State), + ArityMin1 = Arity - 1, + Opaques = State#state.opaques, + Tuple = t_tuple([t_atom(Tag)|lists:duplicate(ArityMin1, t_any())]), + case t_is_none(t_inf(Tuple, RecType, Opaques)) of + true -> + case erl_types:t_has_opaque_subtype(RecType, Opaques) of + true -> + signal_guard_fail(Eval, Guard, + [RecType, t_from_term(Tag), + t_from_term(Arity)], + State); + false -> + case Eval of + pos -> signal_guard_fail(Eval, Guard, + [RecType, t_from_term(Tag), + t_from_term(Arity)], + State); + neg -> {Map1, t_atom(false)}; + dont_know -> {Map1, t_atom(false)} + end + end; + false -> + TupleType = + case state__lookup_record(Tag, ArityMin1, State) of + error -> Tuple; + {ok, Prototype} -> Prototype + end, + Type = t_inf(TupleType, RecType, State#state.opaques), + case t_is_none(Type) of + true -> + %% No special handling of opaque errors. + FArgs = "record " ++ format_type(RecType, State), + Msg = {record_matching, [FArgs, Tag]}, + throw({fail, {Guard, Msg}}); + false -> + case Eval of + pos -> {enter_type(Rec, Type, Map1), t_atom(true)}; + neg -> {Map1, t_atom(false)}; + dont_know -> {Map1, t_boolean()} + end + end + end. + +handle_guard_eq(Guard, Map, Env, Eval, State) -> + [Arg1, Arg2] = cerl:call_args(Guard), + case {type(Arg1), type(Arg2)} of + {{literal, Lit1}, {literal, Lit2}} -> + case cerl:concrete(Lit1) =:= cerl:concrete(Lit2) of + true -> + if + Eval =:= pos -> {Map, t_atom(true)}; + Eval =:= neg -> + ArgTypes = [t_from_term(cerl:concrete(Lit1)), + t_from_term(cerl:concrete(Lit2))], + signal_guard_fail(Eval, Guard, ArgTypes, State); + Eval =:= dont_know -> {Map, t_atom(true)} + end; + false -> + if + Eval =:= neg -> {Map, t_atom(false)}; + Eval =:= dont_know -> {Map, t_atom(false)}; + Eval =:= pos -> + ArgTypes = [t_from_term(cerl:concrete(Lit1)), + t_from_term(cerl:concrete(Lit2))], + signal_guard_fail(Eval, Guard, ArgTypes, State) + end + end; + {{literal, Lit1}, _} when Eval =:= pos -> + case cerl:concrete(Lit1) of + Atom when is_atom(Atom) -> + bind_eqeq_guard_lit_other(Guard, Lit1, Arg2, Map, Env, State); + [] -> + bind_eqeq_guard_lit_other(Guard, Lit1, Arg2, Map, Env, State); + _ -> + bind_eq_guard(Guard, Lit1, Arg2, Map, Env, Eval, State) + end; + {_, {literal, Lit2}} when Eval =:= pos -> + case cerl:concrete(Lit2) of + Atom when is_atom(Atom) -> + bind_eqeq_guard_lit_other(Guard, Lit2, Arg1, Map, Env, State); + [] -> + bind_eqeq_guard_lit_other(Guard, Lit2, Arg1, Map, Env, State); + _ -> + bind_eq_guard(Guard, Arg1, Lit2, Map, Env, Eval, State) + end; + {_, _} -> + bind_eq_guard(Guard, Arg1, Arg2, Map, Env, Eval, State) + end. + +bind_eq_guard(Guard, Arg1, Arg2, Map, Env, Eval, State) -> + {Map1, Type1} = bind_guard(Arg1, Map, Env, dont_know, State), + {Map2, Type2} = bind_guard(Arg2, Map1, Env, dont_know, State), + Opaques = State#state.opaques, + case + t_is_nil(Type1, Opaques) orelse t_is_nil(Type2, Opaques) + orelse t_is_atom(Type1, Opaques) orelse t_is_atom(Type2, Opaques) + of + true -> bind_eqeq_guard(Guard, Arg1, Arg2, Map, Env, Eval, State); + false -> + %% XXX. Is this test OK? + OpArgs = erl_types:t_find_unknown_opaque(Type1, Type2, Opaques), + case OpArgs =:= [] of + true -> + case Eval of + pos -> {Map2, t_atom(true)}; + neg -> {Map2, t_atom(false)}; + dont_know -> {Map2, t_boolean()} + end; + false -> + signal_guard_fail(Eval, Guard, [Type1, Type2], State) + end + end. + +handle_guard_eqeq(Guard, Map, Env, Eval, State) -> + [Arg1, Arg2] = cerl:call_args(Guard), + case {type(Arg1), type(Arg2)} of + {{literal, Lit1}, {literal, Lit2}} -> + + case cerl:concrete(Lit1) =:= cerl:concrete(Lit2) of + true -> + if Eval =:= neg -> + ArgTypes = [t_from_term(cerl:concrete(Lit1)), + t_from_term(cerl:concrete(Lit2))], + signal_guard_fail(Eval, Guard, ArgTypes, State); + Eval =:= pos -> {Map, t_atom(true)}; + Eval =:= dont_know -> {Map, t_atom(true)} + end; + false -> + if Eval =:= neg -> {Map, t_atom(false)}; + Eval =:= dont_know -> {Map, t_atom(false)}; + Eval =:= pos -> + ArgTypes = [t_from_term(cerl:concrete(Lit1)), + t_from_term(cerl:concrete(Lit2))], + signal_guard_fail(Eval, Guard, ArgTypes, State) + end + end; + {{literal, Lit1}, _} when Eval =:= pos -> + bind_eqeq_guard_lit_other(Guard, Lit1, Arg2, Map, Env, State); + {_, {literal, Lit2}} when Eval =:= pos -> + bind_eqeq_guard_lit_other(Guard, Lit2, Arg1, Map, Env, State); + {_, _} -> + bind_eqeq_guard(Guard, Arg1, Arg2, Map, Env, Eval, State) + end. + +bind_eqeq_guard(Guard, Arg1, Arg2, Map, Env, Eval, State) -> + {Map1, Type1} = bind_guard(Arg1, Map, Env, dont_know, State), + {Map2, Type2} = bind_guard(Arg2, Map1, Env, dont_know, State), + ?debug("Types are:~s =:= ~s\n", [t_to_string(Type1), + t_to_string(Type2)]), + Opaques = State#state.opaques, + Inf = t_inf(Type1, Type2, Opaques), + case t_is_none(Inf) of + true -> + OpArgs = erl_types:t_find_unknown_opaque(Type1, Type2, Opaques), + case OpArgs =:= [] of + true -> + case Eval of + neg -> {Map2, t_atom(false)}; + dont_know -> {Map2, t_atom(false)}; + pos -> signal_guard_fail(Eval, Guard, [Type1, Type2], State) + end; + false -> + signal_guard_fail(Eval, Guard, [Type1, Type2], State) + end; + false -> + case Eval of + pos -> + case {cerl:type(Arg1), cerl:type(Arg2)} of + {var, var} -> + Map3 = enter_subst(Arg1, Arg2, Map2), + Map4 = enter_type(Arg2, Inf, Map3), + {Map4, t_atom(true)}; + {var, _} -> + Map3 = enter_type(Arg1, Inf, Map2), + {Map3, t_atom(true)}; + {_, var} -> + Map3 = enter_type(Arg2, Inf, Map2), + {Map3, t_atom(true)}; + {_, _} -> + {Map2, t_atom(true)} + end; + neg -> + {Map2, t_atom(false)}; + dont_know -> + {Map2, t_boolean()} + end + end. + +bind_eqeq_guard_lit_other(Guard, Arg1, Arg2, Map, Env, State) -> + Eval = dont_know, + Opaques = State#state.opaques, + case cerl:concrete(Arg1) of + true -> + {_, Type} = MT = bind_guard(Arg2, Map, Env, pos, State), + case t_is_any_atom(true, Type, Opaques) of + true -> MT; + false -> + {_, Type0} = bind_guard(Arg2, Map, Env, Eval, State), + signal_guard_fail(Eval, Guard, [Type0, t_atom(true)], State) + end; + false -> + {Map1, Type} = bind_guard(Arg2, Map, Env, neg, State), + case t_is_any_atom(false, Type, Opaques) of + true -> {Map1, t_atom(true)}; + false -> + {_, Type0} = bind_guard(Arg2, Map, Env, Eval, State), + signal_guard_fail(Eval, Guard, [Type0, t_atom(false)], State) + end; + Term -> + LitType = t_from_term(Term), + {Map1, Type} = bind_guard(Arg2, Map, Env, Eval, State), + case t_is_subtype(LitType, Type) of + false -> signal_guard_fail(Eval, Guard, [Type, LitType], State); + true -> + case cerl:is_c_var(Arg2) of + true -> {enter_type(Arg2, LitType, Map1), t_atom(true)}; + false -> {Map1, t_atom(true)} + end + end + end. + +handle_guard_and(Guard, Map, Env, Eval, State) -> + [Arg1, Arg2] = cerl:call_args(Guard), + Opaques = State#state.opaques, + case Eval of + pos -> + {Map1, Type1} = bind_guard(Arg1, Map, Env, Eval, State), + case t_is_any_atom(true, Type1, Opaques) of + false -> signal_guard_fail(Eval, Guard, [Type1, t_any()], State); + true -> + {Map2, Type2} = bind_guard(Arg2, Map1, Env, Eval, State), + case t_is_any_atom(true, Type2, Opaques) of + false -> signal_guard_fail(Eval, Guard, [Type1, Type2], State); + true -> {Map2, t_atom(true)} + end + end; + neg -> + MapJ = join_maps_begin(Map), + {Map1, Type1} = + try bind_guard(Arg1, MapJ, Env, neg, State) + catch throw:{fail, _} -> bind_guard(Arg2, MapJ, Env, pos, State) + end, + {Map2, Type2} = + try bind_guard(Arg2, MapJ, Env, neg, State) + catch throw:{fail, _} -> bind_guard(Arg1, MapJ, Env, pos, State) + end, + case + t_is_any_atom(false, Type1, Opaques) + orelse t_is_any_atom(false, Type2, Opaques) + of + true -> {join_maps_end([Map1, Map2], MapJ), t_atom(false)}; + false -> signal_guard_fail(Eval, Guard, [Type1, Type2], State) + end; + dont_know -> + MapJ = join_maps_begin(Map), + {Map1, Type1} = bind_guard(Arg1, MapJ, Env, dont_know, State), + {Map2, Type2} = bind_guard(Arg2, MapJ, Env, dont_know, State), + Bool1 = t_inf(Type1, t_boolean()), + Bool2 = t_inf(Type2, t_boolean()), + case t_is_none(Bool1) orelse t_is_none(Bool2) of + true -> throw({fatal_fail, none}); + false -> + NewMap = join_maps_end([Map1, Map2], MapJ), + NewType = + case {t_atom_vals(Bool1, Opaques), t_atom_vals(Bool2, Opaques)} of + {['true'] , ['true'] } -> t_atom(true); + {['false'], _ } -> t_atom(false); + {_ , ['false']} -> t_atom(false); + {unknown , _ } -> + signal_guard_fail(Eval, Guard, [Type1, Type2], State); + {_ , unknown } -> + signal_guard_fail(Eval, Guard, [Type1, Type2], State); + {_ , _ } -> t_boolean() + + end, + {NewMap, NewType} + end + end. + +handle_guard_or(Guard, Map, Env, Eval, State) -> + [Arg1, Arg2] = cerl:call_args(Guard), + Opaques = State#state.opaques, + case Eval of + pos -> + MapJ = join_maps_begin(Map), + {Map1, Bool1} = + try bind_guard(Arg1, MapJ, Env, pos, State) + catch + throw:{fail,_} -> bind_guard(Arg1, MapJ, Env, dont_know, State) + end, + {Map2, Bool2} = + try bind_guard(Arg2, MapJ, Env, pos, State) + catch + throw:{fail,_} -> bind_guard(Arg2, MapJ, Env, dont_know, State) + end, + case + ((t_is_any_atom(true, Bool1, Opaques) + andalso t_is_boolean(Bool2, Opaques)) + orelse + (t_is_any_atom(true, Bool2, Opaques) + andalso t_is_boolean(Bool1, Opaques))) + of + true -> {join_maps_end([Map1, Map2], MapJ), t_atom(true)}; + false -> signal_guard_fail(Eval, Guard, [Bool1, Bool2], State) + end; + neg -> + {Map1, Type1} = bind_guard(Arg1, Map, Env, neg, State), + case t_is_any_atom(false, Type1, Opaques) of + false -> signal_guard_fail(Eval, Guard, [Type1, t_any()], State); + true -> + {Map2, Type2} = bind_guard(Arg2, Map1, Env, neg, State), + case t_is_any_atom(false, Type2, Opaques) of + false -> signal_guard_fail(Eval, Guard, [Type1, Type2], State); + true -> {Map2, t_atom(false)} + end + end; + dont_know -> + MapJ = join_maps_begin(Map), + {Map1, Type1} = bind_guard(Arg1, MapJ, Env, dont_know, State), + {Map2, Type2} = bind_guard(Arg2, MapJ, Env, dont_know, State), + Bool1 = t_inf(Type1, t_boolean()), + Bool2 = t_inf(Type2, t_boolean()), + case t_is_none(Bool1) orelse t_is_none(Bool2) of + true -> throw({fatal_fail, none}); + false -> + NewMap = join_maps_end([Map1, Map2], MapJ), + NewType = + case {t_atom_vals(Bool1, Opaques), t_atom_vals(Bool2, Opaques)} of + {['false'], ['false']} -> t_atom(false); + {['true'] , _ } -> t_atom(true); + {_ , ['true'] } -> t_atom(true); + {unknown , _ } -> + signal_guard_fail(Eval, Guard, [Type1, Type2], State); + {_ , unknown } -> + signal_guard_fail(Eval, Guard, [Type1, Type2], State); + {_ , _ } -> t_boolean() + end, + {NewMap, NewType} + end + end. + +handle_guard_not(Guard, Map, Env, Eval, State) -> + [Arg] = cerl:call_args(Guard), + Opaques = State#state.opaques, + case Eval of + neg -> + {Map1, Type} = bind_guard(Arg, Map, Env, pos, State), + case t_is_any_atom(true, Type, Opaques) of + true -> {Map1, t_atom(false)}; + false -> + {_, Type0} = bind_guard(Arg, Map, Env, Eval, State), + signal_guard_fail(Eval, Guard, [Type0], State) + end; + pos -> + {Map1, Type} = bind_guard(Arg, Map, Env, neg, State), + case t_is_any_atom(false, Type, Opaques) of + true -> {Map1, t_atom(true)}; + false -> + {_, Type0} = bind_guard(Arg, Map, Env, Eval, State), + signal_guard_fail(Eval, Guard, [Type0], State) + end; + dont_know -> + {Map1, Type} = bind_guard(Arg, Map, Env, dont_know, State), + Bool = t_inf(Type, t_boolean()), + case t_is_none(Bool) of + true -> throw({fatal_fail, none}); + false -> + case t_atom_vals(Bool, Opaques) of + ['true'] -> {Map1, t_atom(false)}; + ['false'] -> {Map1, t_atom(true)}; + [_, _] -> {Map1, Bool}; + unknown -> signal_guard_fail(Eval, Guard, [Type], State) + end + end + end. + +bind_guard_list(Guards, Map, Env, Eval, State) -> + bind_guard_list(Guards, Map, Env, Eval, State, []). + +bind_guard_list([G|Gs], Map, Env, Eval, State, Acc) -> + {Map1, T} = bind_guard(G, Map, Env, Eval, State), + bind_guard_list(Gs, Map1, Env, Eval, State, [T|Acc]); +bind_guard_list([], Map, _Env, _Eval, _State, Acc) -> + {Map, lists:reverse(Acc)}. + +handle_guard_map(Guard, Map, Env, State) -> + Pairs = cerl:map_es(Guard), + Arg = cerl:map_arg(Guard), + {Map1, ArgType0} = bind_guard(Arg, Map, Env, dont_know, State), + ArgType1 = t_inf(t_map(), ArgType0), + case t_is_none_or_unit(ArgType1) of + true -> {Map1, t_none()}; + false -> + {Map2, TypePairs} = bind_guard_map_pairs(Pairs, Map1, Env, State, []), + {Map2, lists:foldl(fun({KV,assoc},Acc) -> erl_types:t_map_put(KV,Acc); + ({KV,exact},Acc) -> erl_types:t_map_update(KV,Acc) + end, ArgType1, TypePairs)} + end. + +bind_guard_map_pairs([], Map, _Env, _State, PairAcc) -> + {Map, lists:reverse(PairAcc)}; +bind_guard_map_pairs([Pair|Pairs], Map, Env, State, PairAcc) -> + Key = cerl:map_pair_key(Pair), + Val = cerl:map_pair_val(Pair), + Op = cerl:map_pair_op(Pair), + {Map1, [K,V]} = bind_guard_list([Key,Val],Map,Env,dont_know,State), + bind_guard_map_pairs(Pairs, Map1, Env, State, + [{{K,V},cerl:concrete(Op)}|PairAcc]). + +-type eval() :: 'pos' | 'neg' | 'dont_know'. + +-spec signal_guard_fail(eval(), cerl:c_call(), [type()], + state()) -> no_return(). + +signal_guard_fail(Eval, Guard, ArgTypes, State) -> + signal_guard_failure(Eval, Guard, ArgTypes, fail, State). + +-spec signal_guard_fatal_fail(eval(), cerl:c_call(), [erl_types:erl_type()], + state()) -> no_return(). + +signal_guard_fatal_fail(Eval, Guard, ArgTypes, State) -> + signal_guard_failure(Eval, Guard, ArgTypes, fatal_fail, State). + +signal_guard_failure(Eval, Guard, ArgTypes, Tag, State) -> + Args = cerl:call_args(Guard), + F = cerl:atom_val(cerl:call_name(Guard)), + {M, F, A} = MFA = {cerl:atom_val(cerl:call_module(Guard)), F, length(Args)}, + Opaques = State#state.opaques, + {Kind, XInfo} = + case erl_bif_types:opaque_args(M, F, A, ArgTypes, Opaques) of + [] -> + {case Eval of + neg -> neg_guard_fail; + pos -> guard_fail; + dont_know -> guard_fail + end, + []}; + Ns -> {opaque_guard, [Ns]} + end, + FArgs = + case is_infix_op(MFA) of + true -> + [ArgType1, ArgType2] = ArgTypes, + [Arg1, Arg2] = Args, + [format_args_1([Arg1], [ArgType1], State), + atom_to_list(F), + format_args_1([Arg2], [ArgType2], State)] ++ XInfo; + false -> + [F, format_args(Args, ArgTypes, State)] + end, + Msg = {Kind, FArgs}, + throw({Tag, {Guard, Msg}}). + +is_infix_op({erlang, '=:=', 2}) -> true; +is_infix_op({erlang, '==', 2}) -> true; +is_infix_op({erlang, '=/=', 2}) -> true; +is_infix_op({erlang, '=/', 2}) -> true; +is_infix_op({erlang, '<', 2}) -> true; +is_infix_op({erlang, '=<', 2}) -> true; +is_infix_op({erlang, '>', 2}) -> true; +is_infix_op({erlang, '>=', 2}) -> true; +is_infix_op({M, F, A}) when is_atom(M), is_atom(F), + is_integer(A), 0 =< A, A =< 255 -> false. + +bif_args(M, F, A) -> + case erl_bif_types:arg_types(M, F, A) of + unknown -> lists:duplicate(A, t_any()); + List -> List + end. + +bind_guard_case_clauses(Arg, Clauses, Map0, Env, Eval, State) -> + Clauses1 = filter_fail_clauses(Clauses), + Map = join_maps_begin(Map0), + {GenMap, GenArgType} = bind_guard(Arg, Map, Env, dont_know, State), + bind_guard_case_clauses(GenArgType, GenMap, Arg, Clauses1, Map, Env, Eval, + t_none(), [], State). + +filter_fail_clauses([Clause|Left]) -> + case (cerl:clause_pats(Clause) =:= []) of + true -> + Body = cerl:clause_body(Clause), + case cerl:is_literal(Body) andalso (cerl:concrete(Body) =:= fail) orelse + cerl:is_c_primop(Body) andalso + (cerl:atom_val(cerl:primop_name(Body)) =:= match_fail) of + true -> filter_fail_clauses(Left); + false -> [Clause|filter_fail_clauses(Left)] + end; + false -> + [Clause|filter_fail_clauses(Left)] + end; +filter_fail_clauses([]) -> + []. + +bind_guard_case_clauses(GenArgType, GenMap, ArgExpr, [Clause|Left], + Map, Env, Eval, AccType, AccMaps, State) -> + Pats = cerl:clause_pats(Clause), + {NewMap0, ArgType} = + case Pats of + [Pat] -> + case cerl:is_literal(Pat) of + true -> + try + case cerl:concrete(Pat) of + true -> bind_guard(ArgExpr, Map, Env, pos, State); + false -> bind_guard(ArgExpr, Map, Env, neg, State); + _ -> {GenMap, GenArgType} + end + catch + throw:{fail, _} -> {none, GenArgType} + end; + false -> + {GenMap, GenArgType} + end; + _ -> {GenMap, GenArgType} + end, + NewMap1 = + case Pats =:= [] of + true -> NewMap0; + false -> + case t_is_none(ArgType) of + true -> none; + false -> + ArgTypes = case t_is_any(ArgType) of + true -> Any = t_any(), [Any || _ <- Pats]; + false -> t_to_tlist(ArgType) + end, + case bind_pat_vars(Pats, ArgTypes, [], NewMap0, State) of + {error, _, _, _, _} -> none; + {PatMap, _PatTypes} -> PatMap + end + end + end, + Guard = cerl:clause_guard(Clause), + GenPatType = dialyzer_typesig:get_safe_underapprox(Pats, Guard), + NewGenArgType = t_subtract(GenArgType, GenPatType), + case (NewMap1 =:= none) orelse t_is_none(GenArgType) of + true -> + bind_guard_case_clauses(NewGenArgType, GenMap, ArgExpr, Left, Map, Env, + Eval, AccType, AccMaps, State); + false -> + {NewAccType, NewAccMaps} = + try + {NewMap2, GuardType} = bind_guard(Guard, NewMap1, Env, pos, State), + case t_is_none(t_inf(t_atom(true), GuardType)) of + true -> throw({fail, none}); + false -> ok + end, + {NewMap3, CType} = bind_guard(cerl:clause_body(Clause), NewMap2, + Env, Eval, State), + Opaques = State#state.opaques, + case Eval of + pos -> + case t_is_any_atom(true, CType, Opaques) of + true -> ok; + false -> throw({fail, none}) + end; + neg -> + case t_is_any_atom(false, CType, Opaques) of + true -> ok; + false -> throw({fail, none}) + end; + dont_know -> + ok + end, + {t_sup(AccType, CType), [NewMap3|AccMaps]} + catch + throw:{fail, _What} -> {AccType, AccMaps} + end, + bind_guard_case_clauses(NewGenArgType, GenMap, ArgExpr, Left, Map, Env, + Eval, NewAccType, NewAccMaps, State) + end; +bind_guard_case_clauses(_GenArgType, _GenMap, _ArgExpr, [], Map, _Env, _Eval, + AccType, AccMaps, _State) -> + case t_is_none(AccType) of + true -> throw({fail, none}); + false -> {join_maps_end(AccMaps, Map), AccType} + end. + +%%% =========================================================================== +%%% +%%% Maps and types. +%%% +%%% =========================================================================== + +map__new() -> + #map{}. + +%% join_maps_begin pushes 'modified' to the stack; join_maps pops +%% 'modified' from the stack. + +join_maps_begin(#map{modified = M, modified_stack = S, ref = Ref} = Map) -> + Map#map{ref = make_ref(), modified = [], modified_stack = [{M,Ref} | S]}. + +join_maps_end(Maps, MapOut) -> + #map{ref = Ref, modified_stack = [{M1,R1} | S]} = MapOut, + true = lists:all(fun(M) -> M#map.ref =:= Ref end, Maps), % sanity + Keys0 = lists:usort(lists:append([M#map.modified || M <- Maps])), + #map{map = Map, subst = Subst} = MapOut, + Keys = [Key || + Key <- Keys0, + maps:is_key(Key, Map) orelse maps:is_key(Key, Subst)], + Out = case Maps of + [] -> join_maps(Maps, MapOut); + _ -> join_maps(Keys, Maps, MapOut) + end, + debug_join_check(Maps, MapOut, Out), + Out#map{ref = R1, + modified = Out#map.modified ++ M1, % duplicates possible + modified_stack = S}. + +join_maps(Maps, MapOut) -> + #map{map = Map, subst = Subst} = MapOut, + Keys = ordsets:from_list(maps:keys(Map) ++ maps:keys(Subst)), + join_maps(Keys, Maps, MapOut). + +join_maps(Keys, Maps, MapOut) -> + KTs = join_maps_collect(Keys, Maps, MapOut), + lists:foldl(fun({K, T}, M) -> enter_type(K, T, M) end, MapOut, KTs). + +join_maps_collect([Key|Left], Maps, MapOut) -> + Type = join_maps_one_key(Maps, Key, t_none()), + case t_is_equal(lookup_type(Key, MapOut), Type) of + true -> join_maps_collect(Left, Maps, MapOut); + false -> [{Key, Type} | join_maps_collect(Left, Maps, MapOut)] + end; +join_maps_collect([], _Maps, _MapOut) -> + []. + +join_maps_one_key([Map|Left], Key, AccType) -> + case t_is_any(AccType) of + true -> + %% We can stop here + AccType; + false -> + join_maps_one_key(Left, Key, t_sup(lookup_type(Key, Map), AccType)) + end; +join_maps_one_key([], _Key, AccType) -> + AccType. + +-ifdef(DEBUG). +debug_join_check(Maps, MapOut, Out) -> + #map{map = Map, subst = Subst} = Out, + #map{map = Map2, subst = Subst2} = join_maps(Maps, MapOut), + F = fun(D) -> lists:keysort(1, maps:to_list(D)) end, + [throw({bug, join_maps}) || + F(Map) =/= F(Map2) orelse F(Subst) =/= F(Subst2)]. +-else. +debug_join_check(_Maps, _MapOut, _Out) -> ok. +-endif. + +enter_type_lists([Key|KeyTail], [Val|ValTail], Map) -> + Map1 = enter_type(Key, Val, Map), + enter_type_lists(KeyTail, ValTail, Map1); +enter_type_lists([], [], Map) -> + Map. + +enter_type_list([{Key, Val}|Left], Map) -> + Map1 = enter_type(Key, Val, Map), + enter_type_list(Left, Map1); +enter_type_list([], Map) -> + Map. + +enter_type(Key, Val, MS) -> + case cerl:is_literal(Key) of + true -> MS; + false -> + case cerl:is_c_values(Key) of + true -> + Keys = cerl:values_es(Key), + case t_is_any(Val) orelse t_is_none(Val) of + true -> + enter_type_lists(Keys, [Val || _ <- Keys], MS); + false -> + enter_type_lists(Keys, t_to_tlist(Val), MS) + end; + false -> + #map{map = Map, subst = Subst} = MS, + KeyLabel = get_label(Key), + case maps:find(KeyLabel, Subst) of + {ok, NewKey} -> + ?debug("Binding ~p to ~p\n", [KeyLabel, NewKey]), + enter_type(NewKey, Val, MS); + error -> + ?debug("Entering ~p :: ~s\n", [KeyLabel, t_to_string(Val)]), + case maps:find(KeyLabel, Map) of + {ok, Value} -> + case erl_types:t_is_equal(Val, Value) of + true -> MS; + false -> store_map(KeyLabel, Val, MS) + end; + error -> store_map(KeyLabel, Val, MS) + end + end + end + end. + +store_map(Key, Val, #map{map = Map, ref = undefined} = MapRec) -> + MapRec#map{map = maps:put(Key, Val, Map)}; +store_map(Key, Val, #map{map = Map, modified = Mod} = MapRec) -> + MapRec#map{map = maps:put(Key, Val, Map), modified = [Key | Mod]}. + +enter_subst(Key, Val0, #map{subst = Subst} = MS) -> + KeyLabel = get_label(Key), + Val = dialyzer_utils:refold_pattern(Val0), + case cerl:is_literal(Val) of + true -> + store_map(KeyLabel, literal_type(Val), MS); + false -> + case cerl:is_c_var(Val) of + false -> MS; + true -> + ValLabel = get_label(Val), + case maps:find(ValLabel, Subst) of + {ok, NewVal} -> + enter_subst(Key, NewVal, MS); + error -> + if KeyLabel =:= ValLabel -> MS; + true -> + ?debug("Subst: storing ~p = ~p\n", [KeyLabel, ValLabel]), + store_subst(KeyLabel, ValLabel, MS) + end + end + end + end. + +store_subst(Key, Val, #map{subst = S, ref = undefined} = Map) -> + Map#map{subst = maps:put(Key, Val, S)}; +store_subst(Key, Val, #map{subst = S, modified = Mod} = Map) -> + Map#map{subst = maps:put(Key, Val, S), modified = [Key | Mod]}. + +lookup_type(Key, #map{map = Map, subst = Subst}) -> + lookup(Key, Map, Subst, t_none()). + +lookup(Key, Map, Subst, AnyNone) -> + case cerl:is_literal(Key) of + true -> literal_type(Key); + false -> + Label = get_label(Key), + case maps:find(Label, Subst) of + {ok, NewKey} -> lookup(NewKey, Map, Subst, AnyNone); + error -> + case maps:find(Label, Map) of + {ok, Val} -> Val; + error -> AnyNone + end + end + end. + +lookup_fun_sig(Fun, Callgraph, Plt) -> + MFAorLabel = + case dialyzer_callgraph:lookup_name(Fun, Callgraph) of + error -> Fun; + {ok, MFA} -> MFA + end, + dialyzer_plt:lookup(Plt, MFAorLabel). + +literal_type(Lit) -> + t_from_term(cerl:concrete(Lit)). + +mark_as_fresh([Tree|Left], Map) -> + SubTrees1 = lists:append(cerl:subtrees(Tree)), + {SubTrees2, Map1} = + case cerl:type(Tree) of + bitstr -> + %% The Size field is not fresh. + {SubTrees1 -- [cerl:bitstr_size(Tree)], Map}; + map_pair -> + %% The keys are not fresh + {SubTrees1 -- [cerl:map_pair_key(Tree)], Map}; + var -> + {SubTrees1, enter_type(Tree, t_any(), Map)}; + _ -> + {SubTrees1, Map} + end, + mark_as_fresh(SubTrees2 ++ Left, Map1); +mark_as_fresh([], Map) -> + Map. + +-ifdef(DEBUG). +debug_pp_map(#map{map = Map}=MapRec) -> + Keys = maps:keys(Map), + io:format("Map:\n", []), + lists:foreach(fun (Key) -> + io:format("\t~w :: ~s\n", + [Key, t_to_string(lookup_type(Key, MapRec))]) + end, Keys), + ok. +-else. +debug_pp_map(_Map) -> ok. +-endif. + +%%% =========================================================================== +%%% +%%% Utilities +%%% +%%% =========================================================================== + +get_label(L) when is_integer(L) -> + L; +get_label(T) -> + cerl_trees:get_label(T). + +t_is_simple(ArgType, State) -> + Opaques = State#state.opaques, + t_is_atom(ArgType, Opaques) orelse t_is_number(ArgType, Opaques) + orelse t_is_port(ArgType, Opaques) + orelse t_is_pid(ArgType, Opaques) orelse t_is_reference(ArgType, Opaques) + orelse t_is_nil(ArgType, Opaques). + +remove_local_opaque_types(Type, Opaques) -> + t_unopaque(Type, Opaques). + +%% t_is_structured(ArgType) -> +%% case t_is_nil(ArgType) of +%% true -> false; +%% false -> +%% SType = t_inf(t_sup([t_list(), t_tuple(), t_binary()]), ArgType), +%% t_is_equal(ArgType, SType) +%% end. + +is_call_to_send(Tree) -> + case cerl:is_c_call(Tree) of + false -> false; + true -> + Mod = cerl:call_module(Tree), + Name = cerl:call_name(Tree), + Arity = cerl:call_arity(Tree), + cerl:is_c_atom(Mod) + andalso cerl:is_c_atom(Name) + andalso is_send(cerl:atom_val(Name)) + andalso (cerl:atom_val(Mod) =:= erlang) + andalso (Arity =:= 2) + end. + +is_send('!') -> true; +is_send(send) -> true; +is_send(_) -> false. + +is_lc_simple_list(Tree, TreeType, State) -> + Opaques = State#state.opaques, + Ann = cerl:get_ann(Tree), + lists:member(list_comprehension, Ann) + andalso t_is_list(TreeType) + andalso t_is_simple(t_list_elements(TreeType, Opaques), State). + +filter_match_fail([Clause] = Cls) -> + Body = cerl:clause_body(Clause), + case cerl:type(Body) of + primop -> + case cerl:atom_val(cerl:primop_name(Body)) of + match_fail -> []; + raise -> []; + _ -> Cls + end; + _ -> Cls + end; +filter_match_fail([H|T]) -> + [H|filter_match_fail(T)]; +filter_match_fail([]) -> + %% This can actually happen, for example in + %% receive after 1 -> ok end + []. + +%%% =========================================================================== +%%% +%%% The State. +%%% +%%% =========================================================================== + +state__new(Callgraph, Codeserver, Tree, Plt, Module, Records) -> + Opaques = erl_types:t_opaque_from_records(Records), + {TreeMap, FunHomes} = build_tree_map(Tree, Callgraph), + Funs = dict:fetch_keys(TreeMap), + FunTab = init_fun_tab(Funs, dict:new(), TreeMap, Callgraph, Plt), + ExportedFuns = + [Fun || Fun <- Funs--[top], dialyzer_callgraph:is_escaping(Fun, Callgraph)], + Work = init_work(ExportedFuns), + Env = lists:foldl(fun(Fun, Env) -> dict:store(Fun, map__new(), Env) end, + dict:new(), Funs), + #state{callgraph = Callgraph, codeserver = Codeserver, + envs = Env, fun_tab = FunTab, fun_homes = FunHomes, opaques = Opaques, + plt = Plt, races = dialyzer_races:new(), records = Records, + warning_mode = false, warnings = [], work = Work, tree_map = TreeMap, + module = Module}. + +state__warning_mode(#state{warning_mode = WM}) -> + WM. + +state__set_warning_mode(#state{tree_map = TreeMap, fun_tab = FunTab, + races = Races} = State) -> + ?debug("==========\nStarting warning pass\n==========\n", []), + Funs = dict:fetch_keys(TreeMap), + State#state{work = init_work([top|Funs--[top]]), + fun_tab = FunTab, warning_mode = true, + races = dialyzer_races:put_race_analysis(true, Races)}. + +state__race_analysis(Analysis, #state{races = Races} = State) -> + State#state{races = dialyzer_races:put_race_analysis(Analysis, Races)}. + +state__renew_curr_fun(CurrFun, CurrFunLabel, + #state{races = Races} = State) -> + State#state{races = dialyzer_races:put_curr_fun(CurrFun, CurrFunLabel, + Races)}. + +state__renew_fun_args(Args, #state{races = Races} = State) -> + case state__warning_mode(State) of + true -> State; + false -> + State#state{races = dialyzer_races:put_fun_args(Args, Races)} + end. + +state__renew_race_list(RaceList, RaceListSize, + #state{races = Races} = State) -> + State#state{races = dialyzer_races:put_race_list(RaceList, RaceListSize, + Races)}. + +state__renew_warnings(Warnings, State) -> + State#state{warnings = Warnings}. + +-spec state__add_warning(raw_warning(), state()) -> state(). + +state__add_warning(Warn, #state{warnings = Warnings} = State) -> + State#state{warnings = [Warn|Warnings]}. + +state__add_warning(State, Tag, Tree, Msg) -> + state__add_warning(State, Tag, Tree, Msg, false). + +state__add_warning(#state{warning_mode = false} = State, _, _, _, _) -> + State; +state__add_warning(#state{warnings = Warnings, warning_mode = true} = State, + Tag, Tree, Msg, Force) -> + Ann = cerl:get_ann(Tree), + case Force of + true -> + WarningInfo = {get_file(Ann), + abs(get_line(Ann)), + State#state.curr_fun}, + Warn = {Tag, WarningInfo, Msg}, + ?debug("MSG ~s\n", [dialyzer:format_warning(Warn)]), + State#state{warnings = [Warn|Warnings]}; + false -> + case is_compiler_generated(Ann) of + true -> State; + false -> + WarningInfo = {get_file(Ann), get_line(Ann), State#state.curr_fun}, + Warn = {Tag, WarningInfo, Msg}, + case Tag of + ?WARN_CONTRACT_RANGE -> ok; + _ -> ?debug("MSG ~s\n", [dialyzer:format_warning(Warn)]) + end, + State#state{warnings = [Warn|Warnings]} + end + end. + +state__remove_added_warnings(OldState, NewState) -> + #state{warnings = OldWarnings} = OldState, + #state{warnings = NewWarnings} = NewState, + {NewWarnings -- OldWarnings, NewState#state{warnings = OldWarnings}}. + +state__add_warnings(Warns, #state{warnings = Warnings} = State) -> + State#state{warnings = Warns ++ Warnings}. + +-spec state__set_curr_fun(curr_fun(), state()) -> state(). + +state__set_curr_fun(undefined, State) -> + State#state{curr_fun = undefined}; +state__set_curr_fun(FunLbl, State) -> + State#state{curr_fun = find_function(FunLbl, State)}. + +-spec state__find_function(mfa_or_funlbl(), state()) -> mfa_or_funlbl(). + +state__find_function(FunLbl, State) -> + find_function(FunLbl, State). + +state__get_race_warnings(#state{races = Races} = State) -> + {Races1, State1} = dialyzer_races:get_race_warnings(Races, State), + State1#state{races = Races1}. + +state__get_warnings(#state{tree_map = TreeMap, fun_tab = FunTab, + callgraph = Callgraph, plt = Plt} = State) -> + FoldFun = + fun({top, _}, AccState) -> AccState; + ({FunLbl, Fun}, AccState) -> + AccState1 = state__set_curr_fun(FunLbl, AccState), + {NotCalled, Ret} = + case dict:fetch(get_label(Fun), FunTab) of + {not_handled, {_Args0, Ret0}} -> {true, Ret0}; + {_Args0, Ret0} -> {false, Ret0} + end, + case NotCalled of + true -> + case dialyzer_callgraph:lookup_name(FunLbl, Callgraph) of + error -> AccState1; + {ok, {_M, F, A}} -> + Msg = {unused_fun, [F, A]}, + state__add_warning(AccState1, ?WARN_NOT_CALLED, Fun, Msg) + end; + false -> + {Name, Contract} = + case dialyzer_callgraph:lookup_name(FunLbl, Callgraph) of + error -> {[], none}; + {ok, {_M, F, A} = MFA} -> + {[F, A], dialyzer_plt:lookup_contract(Plt, MFA)} + end, + case t_is_none(Ret) of + true -> + %% Check if the function has a contract that allows this. + Warn = + case Contract of + none -> not parent_allows_this(FunLbl, AccState1); + {value, C} -> + GenRet = dialyzer_contracts:get_contract_return(C), + not t_is_unit(GenRet) + end, + case Warn of + true -> + case classify_returns(Fun) of + no_match -> + Msg = {no_return, [no_match|Name]}, + state__add_warning(AccState1, ?WARN_RETURN_NO_RETURN, + Fun, Msg); + only_explicit -> + Msg = {no_return, [only_explicit|Name]}, + state__add_warning(AccState1, ?WARN_RETURN_ONLY_EXIT, + Fun, Msg); + only_normal -> + Msg = {no_return, [only_normal|Name]}, + state__add_warning(AccState1, ?WARN_RETURN_NO_RETURN, + Fun, Msg); + both -> + Msg = {no_return, [both|Name]}, + state__add_warning(AccState1, ?WARN_RETURN_NO_RETURN, + Fun, Msg) + end; + false -> + AccState + end; + false -> + AccState + end + end + end, + #state{warnings = Warn} = lists:foldl(FoldFun, State, dict:to_list(TreeMap)), + Warn. + +state__is_escaping(Fun, #state{callgraph = Callgraph}) -> + dialyzer_callgraph:is_escaping(Fun, Callgraph). + +state__lookup_type_for_letrec(Var, #state{callgraph = Callgraph} = State) -> + Label = get_label(Var), + case dialyzer_callgraph:lookup_letrec(Label, Callgraph) of + error -> error; + {ok, FunLabel} -> + {ok, state__fun_type(FunLabel, State)} + end. + +state__lookup_name({_, _, _} = MFA, #state{}) -> + MFA; +state__lookup_name(top, #state{}) -> + top; +state__lookup_name(Fun, #state{callgraph = Callgraph}) -> + case dialyzer_callgraph:lookup_name(Fun, Callgraph) of + {ok, MFA} -> MFA; + error -> Fun + end. + +state__lookup_record(Tag, Arity, #state{records = Records}) -> + case erl_types:lookup_record(Tag, Arity, Records) of + {ok, Fields} -> + RecType = + t_tuple([t_atom(Tag)| + [FieldType || {_FieldName, _Abstr, FieldType} <- Fields]]), + {ok, RecType}; + error -> + error + end. + +state__get_args_and_status(Tree, #state{fun_tab = FunTab}) -> + Fun = get_label(Tree), + case dict:find(Fun, FunTab) of + {ok, {not_handled, {ArgTypes, _}}} -> {ArgTypes, false}; + {ok, {ArgTypes, _}} -> {ArgTypes, true} + end. + +build_tree_map(Tree, Callgraph) -> + Fun = + fun(T, {Dict, Homes, FunLbls} = Acc) -> + case cerl:is_c_fun(T) of + true -> + FunLbl = get_label(T), + Dict1 = dict:store(FunLbl, T, Dict), + case catch dialyzer_callgraph:lookup_name(FunLbl, Callgraph) of + {ok, MFA} -> + F2 = + fun(Lbl, Dict0) -> + dict:store(Lbl, MFA, Dict0) + end, + Homes1 = lists:foldl(F2, Homes, [FunLbl|FunLbls]), + {Dict1, Homes1, []}; + _ -> + {Dict1, Homes, [FunLbl|FunLbls]} + end; + false -> + Acc + end + end, + Dict0 = dict:new(), + {Dict, Homes, _} = cerl_trees:fold(Fun, {Dict0, Dict0, []}, Tree), + {Dict, Homes}. + +init_fun_tab([top|Left], Dict, TreeMap, Callgraph, Plt) -> + NewDict = dict:store(top, {[], t_none()}, Dict), + init_fun_tab(Left, NewDict, TreeMap, Callgraph, Plt); +init_fun_tab([Fun|Left], Dict, TreeMap, Callgraph, Plt) -> + Arity = cerl:fun_arity(dict:fetch(Fun, TreeMap)), + FunEntry = + case dialyzer_callgraph:is_escaping(Fun, Callgraph) of + true -> + Args = lists:duplicate(Arity, t_any()), + case lookup_fun_sig(Fun, Callgraph, Plt) of + none -> {Args, t_unit()}; + {value, {RetType, _}} -> + case t_is_none(RetType) of + true -> {Args, t_none()}; + false -> {Args, t_unit()} + end + end; + false -> {not_handled, {lists:duplicate(Arity, t_none()), t_unit()}} + end, + NewDict = dict:store(Fun, FunEntry, Dict), + init_fun_tab(Left, NewDict, TreeMap, Callgraph, Plt); +init_fun_tab([], Dict, _TreeMap, _Callgraph, _Plt) -> + ?debug("DICT:~p\n",[dict:to_list(Dict)]), + Dict. + +state__update_fun_env(Tree, Map, #state{envs = Envs} = State) -> + NewEnvs = dict:store(get_label(Tree), Map, Envs), + State#state{envs = NewEnvs}. + +state__fun_env(Tree, #state{envs = Envs}) -> + Fun = get_label(Tree), + case dict:find(Fun, Envs) of + error -> none; + {ok, Map} -> Map + end. + +state__clean_not_called(#state{fun_tab = FunTab} = State) -> + NewFunTab = + dict:map(fun(top, Entry) -> Entry; + (_Fun, {not_handled, {Args, _}}) -> {Args, t_none()}; + (_Fun, Entry) -> Entry + end, FunTab), + State#state{fun_tab = NewFunTab}. + +state__all_fun_types(State) -> + #state{fun_tab = FunTab} = state__clean_not_called(State), + Tab1 = dict:erase(top, FunTab), + dict:map(fun(_Fun, {Args, Ret}) -> t_fun(Args, Ret)end, Tab1). + +state__fun_type(Fun, #state{fun_tab = FunTab}) -> + Label = + if is_integer(Fun) -> Fun; + true -> get_label(Fun) + end, + Entry = dict:find(Label, FunTab), + ?debug("FunType ~p:~p\n",[Label, Entry]), + case Entry of + {ok, {not_handled, {A, R}}} -> + t_fun(A, R); + {ok, {A, R}} -> + t_fun(A, R) + end. + +state__update_fun_entry(Tree, ArgTypes, Out0, + #state{fun_tab=FunTab, callgraph=CG, plt=Plt} = State)-> + Fun = get_label(Tree), + Out1 = + if Fun =:= top -> Out0; + true -> + case lookup_fun_sig(Fun, CG, Plt) of + {value, {SigRet, _}} -> t_inf(SigRet, Out0); + none -> Out0 + end + end, + Out = t_limit(Out1, ?TYPE_LIMIT), + {ok, {OldArgTypes, OldOut}} = dict:find(Fun, FunTab), + SameArgs = lists:all(fun({A, B}) -> erl_types:t_is_equal(A, B) + end, lists:zip(OldArgTypes, ArgTypes)), + SameOut = t_is_equal(OldOut, Out), + if + SameArgs, SameOut -> + ?debug("Fixpoint for ~w: ~s\n", + [state__lookup_name(Fun, State), + t_to_string(t_fun(ArgTypes, Out))]), + State; + true -> + %% Can only happen in self-recursive functions. + NewEntry = {OldArgTypes, Out}, + ?debug("New Entry for ~w: ~s\n", + [state__lookup_name(Fun, State), + t_to_string(t_fun(OldArgTypes, Out))]), + NewFunTab = dict:store(Fun, NewEntry, FunTab), + State1 = State#state{fun_tab = NewFunTab}, + state__add_work_from_fun(Tree, State1) + end. + +state__add_work_from_fun(_Tree, #state{warning_mode = true} = State) -> + State; +state__add_work_from_fun(Tree, #state{callgraph = Callgraph, + tree_map = TreeMap} = State) -> + case get_label(Tree) of + top -> State; + Label when is_integer(Label) -> + case dialyzer_callgraph:in_neighbours(Label, Callgraph) of + none -> State; + MFAList -> + LabelList = [dialyzer_callgraph:lookup_label(MFA, Callgraph) + || MFA <- MFAList], + %% Must filter the result for results in this module. + FilteredList = [L || {ok, L} <- LabelList, dict:is_key(L, TreeMap)], + ?debug("~w: Will try to add:~w\n", + [state__lookup_name(Label, State), MFAList]), + lists:foldl(fun(L, AccState) -> + state__add_work(L, AccState) + end, State, FilteredList) + end + end. + +state__add_work(external, State) -> + State; +state__add_work(top, State) -> + State; +state__add_work(Fun, #state{work = Work} = State) -> + NewWork = add_work(Fun, Work), + State#state{work = NewWork}. + +state__get_work(#state{work = Work, tree_map = TreeMap} = State) -> + case get_work(Work) of + none -> none; + {Fun, NewWork} -> + {dict:fetch(Fun, TreeMap), State#state{work = NewWork}} + end. + +state__lookup_call_site(Tree, #state{callgraph = Callgraph}) -> + Label = get_label(Tree), + dialyzer_callgraph:lookup_call_site(Label, Callgraph). + +state__fun_info(external, #state{}) -> + external; +state__fun_info({_, _, _} = MFA, #state{plt = PLT}) -> + {MFA, + dialyzer_plt:lookup(PLT, MFA), + dialyzer_plt:lookup_contract(PLT, MFA), + t_any()}; +state__fun_info(Fun, #state{callgraph = CG, fun_tab = FunTab, plt = PLT}) -> + {Sig, Contract} = + case dialyzer_callgraph:lookup_name(Fun, CG) of + error -> + {dialyzer_plt:lookup(PLT, Fun), none}; + {ok, MFA} -> + {dialyzer_plt:lookup(PLT, MFA), dialyzer_plt:lookup_contract(PLT, MFA)} + end, + LocalRet = + case dict:fetch(Fun, FunTab) of + {not_handled, {_Args, Ret}} -> Ret; + {_Args, Ret} -> Ret + end, + ?debug("LocalRet: ~s\n", [t_to_string(LocalRet)]), + {Fun, Sig, Contract, LocalRet}. + +forward_args(Fun, ArgTypes, #state{work = Work, fun_tab = FunTab} = State) -> + {OldArgTypes, OldOut, Fixpoint} = + case dict:find(Fun, FunTab) of + {ok, {not_handled, {OldArgTypes0, OldOut0}}} -> + {OldArgTypes0, OldOut0, false}; + {ok, {OldArgTypes0, OldOut0}} -> + {OldArgTypes0, OldOut0, + t_is_subtype(t_product(ArgTypes), t_product(OldArgTypes0))} + end, + case Fixpoint of + true -> State; + false -> + NewArgTypes = [t_sup(X, Y) || + {X, Y} <- lists:zip(ArgTypes, OldArgTypes)], + NewWork = add_work(Fun, Work), + ?debug("~w: forwarding args ~s\n", + [state__lookup_name(Fun, State), + t_to_string(t_product(NewArgTypes))]), + NewFunTab = dict:store(Fun, {NewArgTypes, OldOut}, FunTab), + State#state{work = NewWork, fun_tab = NewFunTab} + end. + +-spec state__cleanup(state()) -> state(). + +state__cleanup(#state{callgraph = Callgraph, + races = Races, + records = Records}) -> + #state{callgraph = dialyzer_callgraph:cleanup(Callgraph), + races = dialyzer_races:cleanup(Races), + records = Records}. + +-spec state__duplicate(state()) -> state(). + +state__duplicate(#state{callgraph = Callgraph} = State) -> + State#state{callgraph = dialyzer_callgraph:duplicate(Callgraph)}. + +-spec dispose_state(state()) -> ok. + +dispose_state(#state{callgraph = Callgraph}) -> + dialyzer_callgraph:dispose_race_server(Callgraph). + +-spec state__get_callgraph(state()) -> dialyzer_callgraph:callgraph(). + +state__get_callgraph(#state{callgraph = Callgraph}) -> + Callgraph. + +-spec state__get_races(state()) -> dialyzer_races:races(). + +state__get_races(#state{races = Races}) -> + Races. + +-spec state__get_records(state()) -> types(). + +state__get_records(#state{records = Records}) -> + Records. + +-spec state__put_callgraph(dialyzer_callgraph:callgraph(), state()) -> + state(). + +state__put_callgraph(Callgraph, State) -> + State#state{callgraph = Callgraph}. + +-spec state__put_races(dialyzer_races:races(), state()) -> state(). + +state__put_races(Races, State) -> + State#state{races = Races}. + +-spec state__records_only(state()) -> state(). + +state__records_only(#state{records = Records}) -> + #state{records = Records}. + +%%% =========================================================================== +%%% +%%% Races +%%% +%%% =========================================================================== + +is_race_analysis_enabled(#state{races = Races, callgraph = Callgraph}) -> + RaceDetection = dialyzer_callgraph:get_race_detection(Callgraph), + RaceAnalysis = dialyzer_races:get_race_analysis(Races), + RaceDetection andalso RaceAnalysis. + +get_race_list_and_size(#state{races = Races}) -> + dialyzer_races:get_race_list_and_size(Races). + +renew_race_code(#state{races = Races, callgraph = Callgraph, + warning_mode = WarningMode} = State) -> + case WarningMode of + true -> State; + false -> + NewCallgraph = dialyzer_callgraph:renew_race_code(Races, Callgraph), + State#state{callgraph = NewCallgraph} + end. + +renew_race_public_tables([Var], #state{races = Races, callgraph = Callgraph, + warning_mode = WarningMode} = State) -> + case WarningMode of + true -> State; + false -> + Table = dialyzer_races:get_new_table(Races), + case Table of + no_t -> State; + _Other -> + VarLabel = get_label(Var), + NewCallgraph = + dialyzer_callgraph:renew_race_public_tables(VarLabel, Callgraph), + State#state{callgraph = NewCallgraph} + end + end. + +%%% =========================================================================== +%%% +%%% Worklist +%%% +%%% =========================================================================== + +init_work(List) -> + {List, [], sets:from_list(List)}. + +get_work({[], [], _Set}) -> + none; +get_work({[H|T], Rev, Set}) -> + {H, {T, Rev, sets:del_element(H, Set)}}; +get_work({[], Rev, Set}) -> + get_work({lists:reverse(Rev), [], Set}). + +add_work(New, {List, Rev, Set} = Work) -> + case sets:is_element(New, Set) of + true -> Work; + false -> {List, [New|Rev], sets:add_element(New, Set)} + end. + +%%% =========================================================================== +%%% +%%% Utilities. +%%% +%%% =========================================================================== + +get_line([Line|_]) when is_integer(Line) -> Line; +get_line([_|Tail]) -> get_line(Tail); +get_line([]) -> -1. + +get_file([]) -> []; +get_file([{file, File}|_]) -> File; +get_file([_|Tail]) -> get_file(Tail). + +is_compiler_generated(Ann) -> + lists:member(compiler_generated, Ann) orelse (get_line(Ann) < 1). + +is_literal_record(Tree) -> + Ann = cerl:get_ann(Tree), + lists:member(record, Ann). + +-spec format_args([cerl:cerl()], [type()], state()) -> + nonempty_string(). + +format_args([], [], _State) -> + "()"; +format_args(ArgList0, TypeList, State) -> + ArgList = fold_literals(ArgList0), + "(" ++ format_args_1(ArgList, TypeList, State) ++ ")". + +format_args_1([Arg], [Type], State) -> + format_arg(Arg) ++ format_type(Type, State); +format_args_1([Arg|Args], [Type|Types], State) -> + String = + case cerl:is_literal(Arg) of + true -> format_cerl(Arg); + false -> format_arg(Arg) ++ format_type(Type, State) + end, + String ++ "," ++ format_args_1(Args, Types, State). + +format_arg(Arg) -> + Default = "", + case cerl:is_c_var(Arg) of + true -> + case cerl:var_name(Arg) of + Atom when is_atom(Atom) -> + case atom_to_list(Atom) of + "cor"++_ -> Default; + "rec"++_ -> Default; + Name -> Name ++ "::" + end; + _What -> Default + end; + false -> + Default + end. + +-spec format_type(type(), state()) -> string(). + +format_type(Type, #state{records = R}) -> + t_to_string(Type, R). + +-spec format_field_diffs(type(), state()) -> string(). + +format_field_diffs(RecConstruction, #state{records = R}) -> + erl_types:record_field_diffs_to_string(RecConstruction, R). + +-spec format_sig_args(type(), state()) -> string(). + +format_sig_args(Type, #state{opaques = Opaques} = State) -> + SigArgs = t_fun_args(Type, Opaques), + case SigArgs of + [] -> "()"; + [SArg|SArgs] -> + lists:flatten("(" ++ format_type(SArg, State) + ++ ["," ++ format_type(T, State) || T <- SArgs] ++ ")") + end. + +format_cerl(Tree) -> + cerl_prettypr:format(cerl:set_ann(Tree, []), + [{hook, dialyzer_utils:pp_hook()}, + {noann, true}, + {paper, 100000}, %% These guys strip + {ribbon, 100000} %% newlines. + ]). + +format_patterns(Pats0) -> + Pats = fold_literals(Pats0), + NewPats = map_pats(cerl:c_values(Pats)), + String = format_cerl(NewPats), + case Pats of + [PosVar] -> + case cerl:is_c_var(PosVar) andalso (cerl:var_name(PosVar) =/= '') of + true -> "variable "++String; + false -> "pattern "++String + end; + _ -> + "pattern "++String + end. + +map_pats(Pats) -> + Fun = fun(Tree) -> + case cerl:is_c_var(Tree) of + true -> + case cerl:var_name(Tree) of + Atom when is_atom(Atom) -> + case atom_to_list(Atom) of + "cor"++_ -> cerl:c_var(''); + "rec"++_ -> cerl:c_var(''); + _ -> cerl:set_ann(Tree, []) + end; + _What -> cerl:c_var('') + end; + false -> + cerl:set_ann(Tree, []) + end + end, + cerl_trees:map(Fun, Pats). + +fold_literals(TreeList) -> + [cerl:fold_literal(Tree) || Tree <- TreeList]. + +type(Tree) -> + Folded = cerl:fold_literal(Tree), + case cerl:type(Folded) of + literal -> {literal, Folded}; + Type -> Type + end. + +is_literal(Tree) -> + Folded = cerl:fold_literal(Tree), + case cerl:is_literal(Folded) of + true -> {yes, Folded}; + false -> no + end. + +parent_allows_this(FunLbl, #state{callgraph = Callgraph, plt = Plt} =State) -> + case state__is_escaping(FunLbl, State) of + false -> false; % if it isn't escaping it can't be a return value + true -> + case state__lookup_name(FunLbl, State) of + {_M, _F, _A} -> false; % if it has a name it is not a fun + _ -> + case dialyzer_callgraph:in_neighbours(FunLbl, Callgraph) of + [Parent] -> + case state__lookup_name(Parent, State) of + {_M, _F, _A} = PMFA -> + case dialyzer_plt:lookup_contract(Plt, PMFA) of + none -> false; + {value, C} -> + GenRet = dialyzer_contracts:get_contract_return(C), + case erl_types:t_is_fun(GenRet) of + false -> false; % element of structure? far-fetched... + true -> t_is_unit(t_fun_range(GenRet)) + end + end; + _ -> false % parent should have a name to have a contract + end; + _ -> false % called in other funs? far-fetched... + end + end + end. + +find_function({_, _, _} = MFA, _State) -> + MFA; +find_function(top, _State) -> + top; +find_function(FunLbl, #state{fun_homes = Homes}) -> + dict:fetch(FunLbl, Homes). + +classify_returns(Tree) -> + case find_terminals(cerl:fun_body(Tree)) of + {false, false} -> no_match; + {true, false} -> only_explicit; + {false, true} -> only_normal; + {true, true} -> both + end. + +find_terminals(Tree) -> + case cerl:type(Tree) of + apply -> {false, true}; + binary -> {false, true}; + bitstr -> {false, true}; + call -> + M0 = cerl:call_module(Tree), + F0 = cerl:call_name(Tree), + A = length(cerl:call_args(Tree)), + case {is_literal(M0), is_literal(F0)} of + {{yes, LitM}, {yes, LitF}} -> + M = cerl:concrete(LitM), + F = cerl:concrete(LitF), + case (erl_bif_types:is_known(M, F, A) + andalso t_is_none(erl_bif_types:type(M, F, A))) of + true -> {true, false}; + false -> {false, true} + end; + _ -> + %% We cannot make assumptions. Say that both are true. + {true, true} + end; + 'case' -> find_terminals_list(cerl:case_clauses(Tree)); + 'catch' -> find_terminals(cerl:catch_body(Tree)); + clause -> find_terminals(cerl:clause_body(Tree)); + cons -> {false, true}; + 'fun' -> {false, true}; + 'let' -> find_terminals(cerl:let_body(Tree)); + letrec -> find_terminals(cerl:letrec_body(Tree)); + literal -> {false, true}; + map -> {false, true}; + primop -> {false, false}; %% match_fail, etc. are not explicit exits. + 'receive' -> + Timeout = cerl:receive_timeout(Tree), + Clauses = cerl:receive_clauses(Tree), + case (cerl:is_literal(Timeout) andalso + (cerl:concrete(Timeout) =:= infinity)) of + true -> + if Clauses =:= [] -> {false, true}; %% A never ending receive. + true -> find_terminals_list(Clauses) + end; + false -> find_terminals_list([cerl:receive_action(Tree)|Clauses]) + end; + seq -> find_terminals(cerl:seq_body(Tree)); + 'try' -> + find_terminals_list([cerl:try_handler(Tree), cerl:try_body(Tree)]); + tuple -> {false, true}; + values -> {false, true}; + var -> {false, true} + end. + +find_terminals_list(List) -> + find_terminals_list(List, false, false). + +find_terminals_list([Tree|Left], Explicit1, Normal1) -> + {Explicit2, Normal2} = find_terminals(Tree), + case {Explicit1 or Explicit2, Normal1 or Normal2} of + {true, true} = Ans -> Ans; + {NewExplicit, NewNormal} -> + find_terminals_list(Left, NewExplicit, NewNormal) + end; +find_terminals_list([], Explicit, Normal) -> + {Explicit, Normal}. + +%%---------------------------------------------------------------------------- + +-ifdef(DEBUG_PP). +debug_pp(Tree, true) -> + io:put_chars(cerl_prettypr:format(Tree, [{hook, cerl_typean:pp_hook()}])), + io:nl(), + ok; +debug_pp(Tree, false) -> + io:put_chars(cerl_prettypr:format(strip_annotations(Tree))), + io:nl(), + ok. + +strip_annotations(Tree) -> + Fun = fun(T) -> + case cerl:type(T) of + var -> + cerl:set_ann(T, [{label, cerl_trees:get_label(T)}]); + 'fun' -> + cerl:set_ann(T, [{label, cerl_trees:get_label(T)}]); + _ -> + cerl:set_ann(T, []) + end + end, + cerl_trees:map(Fun, Tree). + +-else. + +debug_pp(_Tree, _UseHook) -> + ok. +-endif. diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer_races.erl b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer_races.erl new file mode 100644 index 0000000000..bb43d1dcb8 --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer_races.erl @@ -0,0 +1,2494 @@ +%% -*- erlang-indent-level: 2 -*- +%%----------------------------------------------------------------------- +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-2015. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% + +%%%---------------------------------------------------------------------- +%%% File : dialyzer_races.erl +%%% Author : Maria Christakis <[email protected]> +%%% Description : Utility functions for race condition detection +%%% +%%% Created : 21 Nov 2008 by Maria Christakis <[email protected]> +%%%---------------------------------------------------------------------- +-module(dialyzer_races). + +%% Race Analysis + +-export([store_race_call/5, race/1, get_race_warnings/2, format_args/4]). + +%% Record Interfaces + +-export([beg_clause_new/3, cleanup/1, end_case_new/1, end_clause_new/3, + get_curr_fun/1, get_curr_fun_args/1, get_new_table/1, + get_race_analysis/1, get_race_list/1, get_race_list_size/1, + get_race_list_and_size/1, + let_tag_new/2, new/0, put_curr_fun/3, put_fun_args/2, + put_race_analysis/2, put_race_list/3]). + +-export_type([races/0, core_vars/0]). + +-include("dialyzer.hrl"). + +%%% =========================================================================== +%%% +%%% Definitions +%%% +%%% =========================================================================== + +-define(local, 5). +-define(no_arg, no_arg). +-define(no_label, no_label). +-define(bypassed, bypassed). + +-define(WARN_WHEREIS_REGISTER, warn_whereis_register). +-define(WARN_WHEREIS_UNREGISTER, warn_whereis_unregister). +-define(WARN_ETS_LOOKUP_INSERT, warn_ets_lookup_insert). +-define(WARN_MNESIA_DIRTY_READ_WRITE, warn_mnesia_dirty_read_write). +-define(WARN_NO_WARN, warn_no_warn). + +%%% =========================================================================== +%%% +%%% Local Types +%%% +%%% =========================================================================== + +-type label_type() :: label() | [label()] | {label()} | ?no_label. +-type args() :: [label_type() | [string()]]. +-type core_vars() :: cerl:cerl() | ?no_arg | ?bypassed. +-type var_to_map1() :: core_vars() | [cerl:cerl()]. +-type var_to_map2() :: cerl:cerl() | [cerl:cerl()] | ?bypassed. +-type core_args() :: [core_vars()] | 'empty'. +-type op() :: 'bind' | 'unbind'. + +-type dep_calls() :: 'whereis' | 'ets_lookup' | 'mnesia_dirty_read'. +-type warn_calls() :: 'register' | 'unregister' | 'ets_insert' + | 'mnesia_dirty_write'. +-type call() :: 'whereis' | 'register' | 'unregister' | 'ets_new' + | 'ets_lookup' | 'ets_insert' | 'mnesia_dirty_read1' + | 'mnesia_dirty_read2' | 'mnesia_dirty_write1' + | 'mnesia_dirty_write2' | 'function_call'. +-type race_tag() :: 'whereis_register' | 'whereis_unregister' + | 'ets_lookup_insert' | 'mnesia_dirty_read_write'. + +%% The following type is similar to the raw_warning() type but has a +%% tag which is local to this module and is not propagated to outside +-type dial_race_warning() :: {race_warn_tag(), warning_info(), {atom(), [term()]}}. +-type race_warn_tag() :: ?WARN_WHEREIS_REGISTER | ?WARN_WHEREIS_UNREGISTER + | ?WARN_ETS_LOOKUP_INSERT | ?WARN_MNESIA_DIRTY_READ_WRITE. + +-record(beg_clause, {arg :: var_to_map1() | 'undefined', + pats :: var_to_map1() | 'undefined', + guard :: cerl:cerl() | 'undefined'}). +-record(end_clause, {arg :: var_to_map1() | 'undefined', + pats :: var_to_map1() | 'undefined', + guard :: cerl:cerl() | 'undefined'}). +-record(end_case, {clauses :: [#end_clause{}]}). +-record(curr_fun, {status :: 'in' | 'out' | 'undefined', + mfa :: dialyzer_callgraph:mfa_or_funlbl() + | 'undefined', + label :: label() | 'undefined', + def_vars :: [core_vars()] | 'undefined', + arg_types :: [erl_types:erl_type()] | 'undefined', + call_vars :: [core_vars()] | 'undefined', + var_map :: dict:dict() | 'undefined'}). +-record(dep_call, {call_name :: dep_calls(), + args :: args() | 'undefined', + arg_types :: [erl_types:erl_type()], + vars :: [core_vars()], + state :: dialyzer_dataflow:state(), + file_line :: file_line(), + var_map :: dict:dict() | 'undefined'}). +-record(fun_call, {caller :: dialyzer_callgraph:mfa_or_funlbl(), + callee :: dialyzer_callgraph:mfa_or_funlbl(), + arg_types :: [erl_types:erl_type()], + vars :: [core_vars()]}). +-record(let_tag, {var :: var_to_map1(), + arg :: var_to_map1()}). +-record(warn_call, {call_name :: warn_calls(), + args :: args(), + var_map :: dict:dict() | 'undefined'}). + +-type case_tags() :: 'beg_case' | #beg_clause{} | #end_clause{} | #end_case{}. +-type code() :: [#dep_call{} | #fun_call{} | #warn_call{} | + #curr_fun{} | #let_tag{} | case_tags() | race_tag()]. + +-type table_var() :: label() | ?no_label. +-type table() :: {'named', table_var(), [string()]} | 'other' | 'no_t'. + +-record(race_fun, {mfa :: mfa(), + args :: args(), + arg_types :: [erl_types:erl_type()], + vars :: [core_vars()], + file_line :: file_line(), + index :: non_neg_integer(), + fun_mfa :: dialyzer_callgraph:mfa_or_funlbl(), + fun_label :: label()}). + +-record(races, {curr_fun :: dialyzer_callgraph:mfa_or_funlbl() + | 'undefined', + curr_fun_label :: label() | 'undefined', + curr_fun_args = 'empty' :: core_args(), + new_table = 'no_t' :: table(), + race_list = [] :: code(), + race_list_size = 0 :: non_neg_integer(), + race_tags = [] :: [#race_fun{}], + %% true for fun types and warning mode + race_analysis = false :: boolean(), + race_warnings = [] :: [dial_race_warning()]}). + +%%% =========================================================================== +%%% +%%% Exported Types +%%% +%%% =========================================================================== + +-opaque races() :: #races{}. + +%%% =========================================================================== +%%% +%%% Race Analysis +%%% +%%% =========================================================================== + +-spec store_race_call(dialyzer_callgraph:mfa_or_funlbl(), + [erl_types:erl_type()], [core_vars()], + file_line(), dialyzer_dataflow:state()) -> + dialyzer_dataflow:state(). + +store_race_call(Fun, ArgTypes, Args, FileLine, State) -> + Races = dialyzer_dataflow:state__get_races(State), + CurrFun = Races#races.curr_fun, + CurrFunLabel = Races#races.curr_fun_label, + RaceTags = Races#races.race_tags, + CleanState = dialyzer_dataflow:state__records_only(State), + {NewRaceList, NewRaceListSize, NewRaceTags, NewTable} = + case CurrFun of + {_Module, module_info, A} when A =:= 0 orelse A =:= 1 -> + {[], 0, RaceTags, no_t}; + _Thing -> + RaceList = Races#races.race_list, + RaceListSize = Races#races.race_list_size, + case Fun of + {erlang, get_module_info, A} when A =:= 1 orelse A =:= 2 -> + {[], 0, RaceTags, no_t}; + {erlang, register, 2} -> + VarArgs = format_args(Args, ArgTypes, CleanState, register), + RaceFun = #race_fun{mfa = Fun, args = VarArgs, + arg_types = ArgTypes, vars = Args, + file_line = FileLine, index = RaceListSize, + fun_mfa = CurrFun, fun_label = CurrFunLabel}, + {[#warn_call{call_name = register, args = VarArgs}| + RaceList], RaceListSize + 1, [RaceFun|RaceTags], no_t}; + {erlang, unregister, 1} -> + VarArgs = format_args(Args, ArgTypes, CleanState, unregister), + RaceFun = #race_fun{mfa = Fun, args = VarArgs, + arg_types = ArgTypes, vars = Args, + file_line = FileLine, index = RaceListSize, + fun_mfa = CurrFun, fun_label = CurrFunLabel}, + {[#warn_call{call_name = unregister, args = VarArgs}| + RaceList], RaceListSize + 1, [RaceFun|RaceTags], no_t}; + {erlang, whereis, 1} -> + VarArgs = format_args(Args, ArgTypes, CleanState, whereis), + {[#dep_call{call_name = whereis, args = VarArgs, + arg_types = ArgTypes, vars = Args, + state = CleanState, file_line = FileLine}| + RaceList], RaceListSize + 1, RaceTags, no_t}; + {ets, insert, 2} -> + VarArgs = format_args(Args, ArgTypes, CleanState, ets_insert), + RaceFun = #race_fun{mfa = Fun, args = VarArgs, + arg_types = ArgTypes, vars = Args, + file_line = FileLine, index = RaceListSize, + fun_mfa = CurrFun, fun_label = CurrFunLabel}, + {[#warn_call{call_name = ets_insert, args = VarArgs}| + RaceList], RaceListSize + 1, [RaceFun|RaceTags], no_t}; + {ets, lookup, 2} -> + VarArgs = format_args(Args, ArgTypes, CleanState, ets_lookup), + {[#dep_call{call_name = ets_lookup, args = VarArgs, + arg_types = ArgTypes, vars = Args, + state = CleanState, file_line = FileLine}| + RaceList], RaceListSize + 1, RaceTags, no_t}; + {ets, new, 2} -> + VarArgs = format_args(Args, ArgTypes, CleanState, ets_new), + [VarArgs1, VarArgs2, _, Options] = VarArgs, + NewTable1 = + case lists:member("'public'", Options) of + true -> + case lists:member("'named_table'", Options) of + true -> + {named, VarArgs1, VarArgs2}; + false -> other + end; + false -> no_t + end, + {RaceList, RaceListSize, RaceTags, NewTable1}; + {mnesia, dirty_read, A} when A =:= 1 orelse A =:= 2 -> + VarArgs = + case A of + 1 -> + format_args(Args, ArgTypes, CleanState, mnesia_dirty_read1); + 2 -> + format_args(Args, ArgTypes, CleanState, mnesia_dirty_read2) + end, + {[#dep_call{call_name = mnesia_dirty_read, args = VarArgs, + arg_types = ArgTypes, vars = Args, + state = CleanState, file_line = FileLine}|RaceList], + RaceListSize + 1, RaceTags, no_t}; + {mnesia, dirty_write, A} when A =:= 1 orelse A =:= 2 -> + VarArgs = + case A of + 1 -> + format_args(Args, ArgTypes, CleanState, mnesia_dirty_write1); + 2 -> + format_args(Args, ArgTypes, CleanState, mnesia_dirty_write2) + end, + RaceFun = #race_fun{mfa = Fun, args = VarArgs, + arg_types = ArgTypes, vars = Args, + file_line = FileLine, index = RaceListSize, + fun_mfa = CurrFun, fun_label = CurrFunLabel}, + {[#warn_call{call_name = mnesia_dirty_write, + args = VarArgs}|RaceList], + RaceListSize + 1, [RaceFun|RaceTags], no_t}; + Int when is_integer(Int) -> + {[#fun_call{caller = CurrFun, callee = Int, arg_types = ArgTypes, + vars = Args}|RaceList], + RaceListSize + 1, RaceTags, no_t}; + _Other -> + Callgraph = dialyzer_dataflow:state__get_callgraph(State), + case digraph:vertex(dialyzer_callgraph:get_digraph(Callgraph), + Fun) of + {Fun, confirmed} -> + {[#fun_call{caller = CurrFun, callee = Fun, + arg_types = ArgTypes, vars = Args}|RaceList], + RaceListSize + 1, RaceTags, no_t}; + false -> + {RaceList, RaceListSize, RaceTags, no_t} + end + end + end, + state__renew_info(NewRaceList, NewRaceListSize, NewRaceTags, NewTable, State). + +-spec race(dialyzer_dataflow:state()) -> dialyzer_dataflow:state(). + +race(State) -> + Races = dialyzer_dataflow:state__get_races(State), + RaceTags = Races#races.race_tags, + RetState = + case RaceTags of + [] -> State; + [#race_fun{mfa = Fun, + args = VarArgs, arg_types = ArgTypes, + vars = Args, file_line = FileLine, + index = Index, fun_mfa = CurrFun, + fun_label = CurrFunLabel}|T] -> + Callgraph = dialyzer_dataflow:state__get_callgraph(State), + {ok, [_Args, Code]} = + dict:find(CurrFun, dialyzer_callgraph:get_race_code(Callgraph)), + RaceList = lists:reverse(Code), + RaceWarnTag = + case Fun of + {erlang, register, 2} -> ?WARN_WHEREIS_REGISTER; + {erlang, unregister, 1} -> ?WARN_WHEREIS_UNREGISTER; + {ets, insert, 2} -> ?WARN_ETS_LOOKUP_INSERT; + {mnesia, dirty_write, _A} -> ?WARN_MNESIA_DIRTY_READ_WRITE + end, + State1 = + state__renew_curr_fun(CurrFun, + state__renew_curr_fun_label(CurrFunLabel, + state__renew_race_list(lists:nthtail(length(RaceList) - Index, + RaceList), State))), + DepList = fixup_race_list(RaceWarnTag, VarArgs, State1), + {State2, RaceWarn} = + get_race_warn(Fun, Args, ArgTypes, DepList, State), + {File, Line} = FileLine, + CurrMFA = dialyzer_dataflow:state__find_function(CurrFun, State), + WarningInfo = {File, Line, CurrMFA}, + race( + state__add_race_warning( + state__renew_race_tags(T, State2), RaceWarn, RaceWarnTag, + WarningInfo)) + end, + state__renew_race_tags([], RetState). + +fixup_race_list(RaceWarnTag, WarnVarArgs, State) -> + Races = dialyzer_dataflow:state__get_races(State), + CurrFun = Races#races.curr_fun, + CurrFunLabel = Races#races.curr_fun_label, + RaceList = Races#races.race_list, + Callgraph = dialyzer_dataflow:state__get_callgraph(State), + Digraph = dialyzer_callgraph:get_digraph(Callgraph), + Calls = digraph:edges(Digraph), + RaceTag = + case RaceWarnTag of + ?WARN_WHEREIS_REGISTER -> whereis_register; + ?WARN_WHEREIS_UNREGISTER -> whereis_unregister; + ?WARN_ETS_LOOKUP_INSERT -> ets_lookup_insert; + ?WARN_MNESIA_DIRTY_READ_WRITE -> mnesia_dirty_read_write + end, + NewRaceList = [RaceTag|RaceList], + CleanState = dialyzer_dataflow:state__cleanup(State), + NewState = state__renew_race_list(NewRaceList, CleanState), + DepList1 = + fixup_race_forward_pullout(CurrFun, CurrFunLabel, Calls, + lists:reverse(NewRaceList), [], CurrFun, + WarnVarArgs, RaceWarnTag, dict:new(), + [], [], [], 2 * ?local, NewState), + Parents = fixup_race_backward(CurrFun, Calls, Calls, [], ?local), + UParents = lists:usort(Parents), + Filtered = filter_parents(UParents, UParents, Digraph), + NewParents = + case lists:member(CurrFun, Filtered) of + true -> Filtered; + false -> [CurrFun|Filtered] + end, + DepList2 = + fixup_race_list_helper(NewParents, Calls, CurrFun, WarnVarArgs, + RaceWarnTag, NewState), + dialyzer_dataflow:dispose_state(CleanState), + lists:usort(cleanup_dep_calls(DepList1 ++ DepList2)). + +fixup_race_list_helper(Parents, Calls, CurrFun, WarnVarArgs, RaceWarnTag, + State) -> + case Parents of + [] -> []; + [Head|Tail] -> + Callgraph = dialyzer_dataflow:state__get_callgraph(State), + Code = + case dict:find(Head, dialyzer_callgraph:get_race_code(Callgraph)) of + error -> []; + {ok, [_A, C]} -> C + end, + {ok, FunLabel} = dialyzer_callgraph:lookup_label(Head, Callgraph), + DepList1 = + fixup_race_forward_pullout(Head, FunLabel, Calls, Code, [], CurrFun, + WarnVarArgs, RaceWarnTag, dict:new(), + [], [], [], 2 * ?local, State), + DepList2 = + fixup_race_list_helper(Tail, Calls, CurrFun, WarnVarArgs, + RaceWarnTag, State), + DepList1 ++ DepList2 + end. + +%%% =========================================================================== +%%% +%%% Forward Analysis +%%% +%%% =========================================================================== + +fixup_race_forward_pullout(CurrFun, CurrFunLabel, Calls, Code, RaceList, + InitFun, WarnVarArgs, RaceWarnTag, RaceVarMap, + FunDefVars, FunCallVars, FunArgTypes, NestingLevel, + State) -> + TState = dialyzer_dataflow:state__duplicate(State), + {DepList, NewCurrFun, NewCurrFunLabel, NewCalls, + NewCode, NewRaceList, NewRaceVarMap, NewFunDefVars, + NewFunCallVars, NewFunArgTypes, NewNestingLevel} = + fixup_race_forward(CurrFun, CurrFunLabel, Calls, Code, RaceList, + InitFun, WarnVarArgs, RaceWarnTag, RaceVarMap, + FunDefVars, FunCallVars, FunArgTypes, NestingLevel, + cleanup_race_code(TState)), + dialyzer_dataflow:dispose_state(TState), + case NewCode of + [] -> DepList; + [#fun_call{caller = NewCurrFun, callee = Call, arg_types = FunTypes, + vars = FunArgs}|Tail] -> + Callgraph = dialyzer_dataflow:state__get_callgraph(State), + OkCall = {ok, Call}, + {Name, Label} = + case is_integer(Call) of + true -> + case dialyzer_callgraph:lookup_name(Call, Callgraph) of + error -> {OkCall, OkCall}; + N -> {N, OkCall} + end; + false -> + {OkCall, dialyzer_callgraph:lookup_label(Call, Callgraph)} + end, + {NewCurrFun1, NewCurrFunLabel1, NewCalls1, NewCode1, NewRaceList1, + NewRaceVarMap1, NewFunDefVars1, NewFunCallVars1, NewFunArgTypes1, + NewNestingLevel1} = + case Label =:= error of + true -> + {NewCurrFun, NewCurrFunLabel, NewCalls, Tail, NewRaceList, + NewRaceVarMap, NewFunDefVars, NewFunCallVars, NewFunArgTypes, + NewNestingLevel}; + false -> + {ok, Fun} = Name, + {ok, Int} = Label, + case dict:find(Fun, dialyzer_callgraph:get_race_code(Callgraph)) of + error -> + {NewCurrFun, NewCurrFunLabel, NewCalls, Tail, NewRaceList, + NewRaceVarMap, NewFunDefVars, NewFunCallVars, NewFunArgTypes, + NewNestingLevel}; + {ok, [Args, CodeB]} -> + Races = dialyzer_dataflow:state__get_races(State), + {RetCurrFun, RetCurrFunLabel, RetCalls, RetCode, + RetRaceList, RetRaceVarMap, RetFunDefVars, RetFunCallVars, + RetFunArgTypes, RetNestingLevel} = + fixup_race_forward_helper(NewCurrFun, + NewCurrFunLabel, Fun, Int, NewCalls, NewCalls, + [#curr_fun{status = out, mfa = NewCurrFun, + label = NewCurrFunLabel, + var_map = NewRaceVarMap, + def_vars = NewFunDefVars, + call_vars = NewFunCallVars, + arg_types = NewFunArgTypes}| + Tail], + NewRaceList, InitFun, FunArgs, FunTypes, RaceWarnTag, + NewRaceVarMap, NewFunDefVars, NewFunCallVars, + NewFunArgTypes, NewNestingLevel, Args, CodeB, + Races#races.race_list), + case RetCode of + [#curr_fun{}|_CodeTail] -> + {NewCurrFun, NewCurrFunLabel, RetCalls, RetCode, + RetRaceList, NewRaceVarMap, NewFunDefVars, + NewFunCallVars, NewFunArgTypes, RetNestingLevel}; + _Else -> + {RetCurrFun, RetCurrFunLabel, RetCalls, RetCode, + RetRaceList, RetRaceVarMap, RetFunDefVars, + RetFunCallVars, RetFunArgTypes, RetNestingLevel} + end + end + end, + DepList ++ + fixup_race_forward_pullout(NewCurrFun1, NewCurrFunLabel1, NewCalls1, + NewCode1, NewRaceList1, InitFun, WarnVarArgs, + RaceWarnTag, NewRaceVarMap1, NewFunDefVars1, + NewFunCallVars1, NewFunArgTypes1, + NewNestingLevel1, State) + end. + +fixup_race_forward(CurrFun, CurrFunLabel, Calls, Code, RaceList, + InitFun, WarnVarArgs, RaceWarnTag, RaceVarMap, + FunDefVars, FunCallVars, FunArgTypes, NestingLevel, + State) -> + case Code of + [] -> + {[], CurrFun, CurrFunLabel, Calls, Code, RaceList, RaceVarMap, + FunDefVars, FunCallVars, FunArgTypes, NestingLevel}; + [Head|Tail] -> + Callgraph = dialyzer_dataflow:state__get_callgraph(State), + {NewRL, DepList, NewNL, Return} = + case Head of + #dep_call{call_name = whereis} -> + case RaceWarnTag of + WarnWhereis when WarnWhereis =:= ?WARN_WHEREIS_REGISTER orelse + WarnWhereis =:= ?WARN_WHEREIS_UNREGISTER -> + {[Head#dep_call{var_map = RaceVarMap}|RaceList], + [], NestingLevel, false}; + _Other -> + {RaceList, [], NestingLevel, false} + end; + #dep_call{call_name = ets_lookup} -> + case RaceWarnTag of + ?WARN_ETS_LOOKUP_INSERT -> + {[Head#dep_call{var_map = RaceVarMap}|RaceList], + [], NestingLevel, false}; + _Other -> + {RaceList, [], NestingLevel, false} + end; + #dep_call{call_name = mnesia_dirty_read} -> + case RaceWarnTag of + ?WARN_MNESIA_DIRTY_READ_WRITE -> + {[Head#dep_call{var_map = RaceVarMap}|RaceList], + [], NestingLevel, false}; + _Other -> + {RaceList, [], NestingLevel, false} + end; + #warn_call{call_name = RegCall} when RegCall =:= register orelse + RegCall =:= unregister -> + case RaceWarnTag of + WarnWhereis when WarnWhereis =:= ?WARN_WHEREIS_REGISTER orelse + WarnWhereis =:= ?WARN_WHEREIS_UNREGISTER -> + {[Head#warn_call{var_map = RaceVarMap}|RaceList], + [], NestingLevel, false}; + _Other -> + {RaceList, [], NestingLevel, false} + end; + #warn_call{call_name = ets_insert} -> + case RaceWarnTag of + ?WARN_ETS_LOOKUP_INSERT -> + {[Head#warn_call{var_map = RaceVarMap}|RaceList], + [], NestingLevel, false}; + _Other -> + {RaceList, [], NestingLevel, false} + end; + #warn_call{call_name = mnesia_dirty_write} -> + case RaceWarnTag of + ?WARN_MNESIA_DIRTY_READ_WRITE -> + {[Head#warn_call{var_map = RaceVarMap}|RaceList], + [], NestingLevel, false}; + _Other -> + {RaceList, [], NestingLevel, false} + end; + #fun_call{caller = CurrFun, callee = InitFun} -> + {RaceList, [], NestingLevel, false}; + #fun_call{caller = CurrFun} -> + {RaceList, [], NestingLevel - 1, false}; + beg_case -> + {[Head|RaceList], [], NestingLevel, false}; + #beg_clause{} -> + {[#beg_clause{}|RaceList], [], NestingLevel, false}; + #end_clause{} -> + {[#end_clause{}|RaceList], [], NestingLevel, false}; + #end_case{} -> + {[Head|RaceList], [], NestingLevel, false}; + #let_tag{} -> + {RaceList, [], NestingLevel, false}; + #curr_fun{status = in, mfa = InitFun, + label = _InitFunLabel, var_map = _NewRVM, + def_vars = NewFDV, call_vars = NewFCV, + arg_types = _NewFAT} -> + {[#curr_fun{status = out, var_map = RaceVarMap, + def_vars = NewFDV, call_vars = NewFCV}| + RaceList], [], NestingLevel - 1, false}; + #curr_fun{status = in, def_vars = NewFDV, + call_vars = NewFCV} -> + {[#curr_fun{status = out, var_map = RaceVarMap, + def_vars = NewFDV, call_vars = NewFCV}| + RaceList], + [], NestingLevel - 1, false}; + #curr_fun{status = out} -> + {[#curr_fun{status = in, var_map = RaceVarMap}|RaceList], [], + NestingLevel + 1, false}; + RaceTag -> + PublicTables = dialyzer_callgraph:get_public_tables(Callgraph), + NamedTables = dialyzer_callgraph:get_named_tables(Callgraph), + WarnVarArgs1 = + var_type_analysis(FunDefVars, FunArgTypes, WarnVarArgs, + RaceWarnTag, RaceVarMap, + dialyzer_dataflow:state__records_only(State)), + {NewDepList, IsPublic, _Return} = + get_deplist_paths(RaceList, WarnVarArgs1, RaceWarnTag, + RaceVarMap, 0, PublicTables, NamedTables), + {NewHead, NewDepList1} = + case RaceTag of + whereis_register -> + {[#warn_call{call_name = register, args = WarnVarArgs, + var_map = RaceVarMap}], + NewDepList}; + whereis_unregister -> + {[#warn_call{call_name = unregister, args = WarnVarArgs, + var_map = RaceVarMap}], + NewDepList}; + ets_lookup_insert -> + NewWarnCall = + [#warn_call{call_name = ets_insert, args = WarnVarArgs, + var_map = RaceVarMap}], + [Tab, Names, _, _] = WarnVarArgs, + case IsPublic orelse + compare_var_list(Tab, PublicTables, RaceVarMap) + orelse + length(Names -- NamedTables) < length(Names) of + true -> + {NewWarnCall, NewDepList}; + false -> {NewWarnCall, []} + end; + mnesia_dirty_read_write -> + {[#warn_call{call_name = mnesia_dirty_write, + args = WarnVarArgs, var_map = RaceVarMap}], + NewDepList} + end, + {NewHead ++ RaceList, NewDepList1, NestingLevel, + is_last_race(RaceTag, InitFun, Tail, Callgraph)} + end, + {NewCurrFun, NewCurrFunLabel, NewCode, NewRaceList, NewRaceVarMap, + NewFunDefVars, NewFunCallVars, NewFunArgTypes, NewNestingLevel, + PullOut} = + case Head of + #fun_call{caller = CurrFun} -> + case NewNL =:= 0 of + true -> + {CurrFun, CurrFunLabel, Tail, NewRL, RaceVarMap, + FunDefVars, FunCallVars, FunArgTypes, NewNL, false}; + false -> + {CurrFun, CurrFunLabel, Code, NewRL, RaceVarMap, + FunDefVars, FunCallVars, FunArgTypes, NewNL, true} + end; + #beg_clause{arg = Arg, pats = Pats, guard = Guard} -> + {RaceVarMap1, RemoveClause} = + race_var_map_guard(Arg, Pats, Guard, RaceVarMap, bind), + case RemoveClause of + true -> + {RaceList2, + #curr_fun{mfa = CurrFun2, label = CurrFunLabel2, + var_map = RaceVarMap2, def_vars = FunDefVars2, + call_vars = FunCallVars2, arg_types = FunArgTypes2}, + Code2, NestingLevel2} = + remove_clause(NewRL, + #curr_fun{mfa = CurrFun, label = CurrFunLabel, + var_map = RaceVarMap1, + def_vars = FunDefVars, + call_vars = FunCallVars, + arg_types = FunArgTypes}, + Tail, NewNL), + {CurrFun2, CurrFunLabel2, Code2, RaceList2, + RaceVarMap2, FunDefVars2, FunCallVars2, FunArgTypes2, + NestingLevel2, false}; + false -> + {CurrFun, CurrFunLabel, Tail, NewRL, RaceVarMap1, + FunDefVars, FunCallVars, FunArgTypes, NewNL, false} + end; + #end_clause{arg = Arg, pats = Pats, guard = Guard} -> + {RaceVarMap1, _RemoveClause} = + race_var_map_guard(Arg, Pats, Guard, RaceVarMap, unbind), + {CurrFun, CurrFunLabel, Tail, NewRL, RaceVarMap1, + FunDefVars, FunCallVars, FunArgTypes, NewNL, + false}; + #end_case{clauses = Clauses} -> + RaceVarMap1 = + race_var_map_clauses(Clauses, RaceVarMap), + {CurrFun, CurrFunLabel, Tail, NewRL, RaceVarMap1, + FunDefVars, FunCallVars, FunArgTypes, NewNL, + false}; + #let_tag{var = Var, arg = Arg} -> + {CurrFun, CurrFunLabel, Tail, NewRL, + race_var_map(Var, Arg, RaceVarMap, bind), FunDefVars, + FunCallVars, FunArgTypes, NewNL, false}; + #curr_fun{mfa = CurrFun1, label = CurrFunLabel1, + var_map = RaceVarMap1, def_vars = FunDefVars1, + call_vars = FunCallVars1, arg_types = FunArgTypes1} -> + case NewNL =:= 0 of + true -> + {CurrFun, CurrFunLabel, + remove_nonlocal_functions(Tail, 1), NewRL, RaceVarMap, + FunDefVars, FunCallVars, FunArgTypes, NewNL, false}; + false -> + {CurrFun1, CurrFunLabel1, Tail, NewRL, RaceVarMap1, + FunDefVars1, FunCallVars1, FunArgTypes1, NewNL, false} + end; + _Thing -> + {CurrFun, CurrFunLabel, Tail, NewRL, RaceVarMap, + FunDefVars, FunCallVars, FunArgTypes, NewNL, false} + end, + case Return of + true -> + {DepList, NewCurrFun, NewCurrFunLabel, Calls, + [], NewRaceList, NewRaceVarMap, NewFunDefVars, + NewFunCallVars, NewFunArgTypes, NewNestingLevel}; + false -> + NewNestingLevel1 = + case NewNestingLevel =:= 0 of + true -> NewNestingLevel + 1; + false -> NewNestingLevel + end, + case PullOut of + true -> + {DepList, NewCurrFun, NewCurrFunLabel, Calls, + NewCode, NewRaceList, NewRaceVarMap, NewFunDefVars, + NewFunCallVars, NewFunArgTypes, NewNestingLevel1}; + false -> + {RetDepList, NewCurrFun1, NewCurrFunLabel1, NewCalls1, + NewCode1, NewRaceList1, NewRaceVarMap1, NewFunDefVars1, + NewFunCallVars1, NewFunArgTypes1, NewNestingLevel2} = + fixup_race_forward(NewCurrFun, NewCurrFunLabel, Calls, + NewCode, NewRaceList, InitFun, WarnVarArgs, + RaceWarnTag, NewRaceVarMap, NewFunDefVars, + NewFunCallVars, NewFunArgTypes, + NewNestingLevel1, State), + {DepList ++ RetDepList, NewCurrFun1, NewCurrFunLabel1, + NewCalls1, NewCode1, NewRaceList1, NewRaceVarMap1, + NewFunDefVars1, NewFunCallVars1, NewFunArgTypes1, + NewNestingLevel2} + end + end + end. + +get_deplist_paths(RaceList, WarnVarArgs, RaceWarnTag, RaceVarMap, CurrLevel, + PublicTables, NamedTables) -> + case RaceList of + [] -> {[], false, true}; + [Head|Tail] -> + case Head of + #end_case{} -> + {RaceList1, DepList1, IsPublic1, Continue1} = + handle_case(Tail, WarnVarArgs, RaceWarnTag, RaceVarMap, CurrLevel, + PublicTables, NamedTables), + case Continue1 of + true -> + {DepList2, IsPublic2, Continue2} = + get_deplist_paths(RaceList1, WarnVarArgs, RaceWarnTag, + RaceVarMap, CurrLevel, PublicTables, + NamedTables), + {DepList1 ++ DepList2, IsPublic1 orelse IsPublic2, Continue2}; + false -> {DepList1, IsPublic1, false} + end; + #beg_clause{} -> + get_deplist_paths(fixup_before_case_path(Tail), WarnVarArgs, + RaceWarnTag, RaceVarMap, CurrLevel, PublicTables, + NamedTables); + #curr_fun{status = in, var_map = RaceVarMap1} -> + {DepList, IsPublic, Continue} = + get_deplist_paths(Tail, WarnVarArgs, RaceWarnTag, RaceVarMap, + CurrLevel + 1, PublicTables, NamedTables), + IsPublic1 = + case RaceWarnTag of + ?WARN_ETS_LOOKUP_INSERT -> + [Tabs, Names, _, _] = WarnVarArgs, + IsPublic orelse + lists:any( + fun (T) -> + compare_var_list(T, PublicTables, RaceVarMap1) + end, Tabs) + orelse + length(Names -- NamedTables) < length(Names); + _ -> true + end, + {DepList, IsPublic1, Continue}; + #curr_fun{status = out, var_map = RaceVarMap1, def_vars = FunDefVars, + call_vars = FunCallVars} -> + WarnVarArgs1 = + var_analysis([format_arg(DefVar) || DefVar <- FunDefVars], + [format_arg(CallVar) || CallVar <- FunCallVars], + WarnVarArgs, RaceWarnTag), + {WarnVarArgs2, Stop} = + case RaceWarnTag of + ?WARN_WHEREIS_REGISTER -> + [WVA1, WVA2, WVA3, WVA4] = WarnVarArgs1, + Vars = + lists:flatten( + [find_all_bound_vars(V, RaceVarMap1) || V <- WVA1]), + case {Vars, CurrLevel} of + {[], 0} -> + {WarnVarArgs, true}; + {[], _} -> + {WarnVarArgs, false}; + _ -> + {[Vars, WVA2, WVA3, WVA4], false} + end; + ?WARN_WHEREIS_UNREGISTER -> + [WVA1, WVA2] = WarnVarArgs1, + Vars = + lists:flatten( + [find_all_bound_vars(V, RaceVarMap1) || V <- WVA1]), + case {Vars, CurrLevel} of + {[], 0} -> + {WarnVarArgs, true}; + {[], _} -> + {WarnVarArgs, false}; + _ -> + {[Vars, WVA2], false} + end; + ?WARN_ETS_LOOKUP_INSERT -> + [WVA1, WVA2, WVA3, WVA4] = WarnVarArgs1, + Vars1 = + lists:flatten( + [find_all_bound_vars(V1, RaceVarMap1) || V1 <- WVA1]), + Vars2 = + lists:flatten( + [find_all_bound_vars(V2, RaceVarMap1) || V2 <- WVA3]), + case {Vars1, Vars2, CurrLevel} of + {[], _, 0} -> + {WarnVarArgs, true}; + {[], _, _} -> + {WarnVarArgs, false}; + {_, [], 0} -> + {WarnVarArgs, true}; + {_, [], _} -> + {WarnVarArgs, false}; + _ -> + {[Vars1, WVA2, Vars2, WVA4], false} + end; + ?WARN_MNESIA_DIRTY_READ_WRITE -> + [WVA1, WVA2|T] = WarnVarArgs1, + Vars = + lists:flatten( + [find_all_bound_vars(V, RaceVarMap1) || V <- WVA1]), + case {Vars, CurrLevel} of + {[], 0} -> + {WarnVarArgs, true}; + {[], _} -> + {WarnVarArgs, false}; + _ -> + {[Vars, WVA2|T], false} + end + end, + case Stop of + true -> {[], false, false}; + false -> + CurrLevel1 = + case CurrLevel of + 0 -> CurrLevel; + _ -> CurrLevel - 1 + end, + get_deplist_paths(Tail, WarnVarArgs2, RaceWarnTag, RaceVarMap1, + CurrLevel1, PublicTables, NamedTables) + end; + #warn_call{call_name = RegCall, args = WarnVarArgs1, + var_map = RaceVarMap1} when RegCall =:= register orelse + RegCall =:= unregister -> + case compare_first_arg(WarnVarArgs, WarnVarArgs1, RaceVarMap1) of + true -> {[], false, false}; + NewWarnVarArgs -> + get_deplist_paths(Tail, NewWarnVarArgs, RaceWarnTag, RaceVarMap, + CurrLevel, PublicTables, NamedTables) + end; + #warn_call{call_name = ets_insert, args = WarnVarArgs1, + var_map = RaceVarMap1} -> + case compare_ets_insert(WarnVarArgs, WarnVarArgs1, RaceVarMap1) of + true -> {[], false, false}; + NewWarnVarArgs -> + get_deplist_paths(Tail, NewWarnVarArgs, RaceWarnTag, RaceVarMap, + CurrLevel, PublicTables, NamedTables) + end; + #warn_call{call_name = mnesia_dirty_write, args = WarnVarArgs1, + var_map = RaceVarMap1} -> + case compare_first_arg(WarnVarArgs, WarnVarArgs1, RaceVarMap1) of + true -> {[], false, false}; + NewWarnVarArgs -> + get_deplist_paths(Tail, NewWarnVarArgs, RaceWarnTag, RaceVarMap, + CurrLevel, PublicTables, NamedTables) + end; + #dep_call{var_map = RaceVarMap1} -> + {DepList, IsPublic, Continue} = + get_deplist_paths(Tail, WarnVarArgs, RaceWarnTag, RaceVarMap, + CurrLevel, PublicTables, NamedTables), + {refine_race(Head, WarnVarArgs, RaceWarnTag, DepList, RaceVarMap1), + IsPublic, Continue} + end + end. + +handle_case(RaceList, WarnVarArgs, RaceWarnTag, RaceVarMap, CurrLevel, + PublicTables, NamedTables) -> + case RaceList of + [] -> {[], [], false, true}; + [Head|Tail] -> + case Head of + #end_clause{} -> + {RestRaceList, DepList1, IsPublic1, Continue1} = + do_clause(Tail, WarnVarArgs, RaceWarnTag, RaceVarMap, CurrLevel, + PublicTables, NamedTables), + {RetRaceList, DepList2, IsPublic2, Continue2} = + handle_case(RestRaceList, WarnVarArgs, RaceWarnTag, RaceVarMap, + CurrLevel, PublicTables, NamedTables), + {RetRaceList, DepList1 ++ DepList2, IsPublic1 orelse IsPublic2, + Continue1 orelse Continue2}; + beg_case -> {Tail, [], false, false} + end + end. + +do_clause(RaceList, WarnVarArgs, RaceWarnTag, RaceVarMap, CurrLevel, + PublicTables, NamedTables) -> + {DepList, IsPublic, Continue} = + get_deplist_paths(fixup_case_path(RaceList, 0), WarnVarArgs, + RaceWarnTag, RaceVarMap, CurrLevel, + PublicTables, NamedTables), + {fixup_case_rest_paths(RaceList, 0), DepList, IsPublic, Continue}. + +fixup_case_path(RaceList, NestingLevel) -> + case RaceList of + [] -> []; + [Head|Tail] -> + {NewNestingLevel, Return} = + case Head of + beg_case -> {NestingLevel - 1, false}; + #end_case{} -> {NestingLevel + 1, false}; + #beg_clause{} -> + case NestingLevel =:= 0 of + true -> {NestingLevel, true}; + false -> {NestingLevel, false} + end; + _Other -> {NestingLevel, false} + end, + case Return of + true -> []; + false -> [Head|fixup_case_path(Tail, NewNestingLevel)] + end + end. + +%% Gets the race list before a case clause. +fixup_before_case_path(RaceList) -> + case RaceList of + [] -> []; + [Head|Tail] -> + case Head of + #end_clause{} -> + fixup_before_case_path(fixup_case_rest_paths(Tail, 0)); + beg_case -> Tail + end + end. + +fixup_case_rest_paths(RaceList, NestingLevel) -> + case RaceList of + [] -> []; + [Head|Tail] -> + {NewNestingLevel, Return} = + case Head of + beg_case -> {NestingLevel - 1, false}; + #end_case{} -> {NestingLevel + 1, false}; + #beg_clause{} -> + case NestingLevel =:= 0 of + true -> {NestingLevel, true}; + false -> {NestingLevel, false} + end; + _Other -> {NestingLevel, false} + end, + case Return of + true -> Tail; + false -> fixup_case_rest_paths(Tail, NewNestingLevel) + end + end. + +fixup_race_forward_helper(CurrFun, CurrFunLabel, Fun, FunLabel, + Calls, CallsToAnalyze, Code, RaceList, + InitFun, NewFunArgs, NewFunTypes, + RaceWarnTag, RaceVarMap, FunDefVars, + FunCallVars, FunArgTypes, NestingLevel, + Args, CodeB, StateRaceList) -> + case Calls of + [] -> + {NewRaceList, + #curr_fun{mfa = NewCurrFun, label = NewCurrFunLabel, + var_map = NewRaceVarMap, def_vars = NewFunDefVars, + call_vars = NewFunCallVars, arg_types = NewFunArgTypes}, + NewCode, NewNestingLevel} = + remove_clause(RaceList, + #curr_fun{mfa = CurrFun, label = CurrFunLabel, var_map = RaceVarMap, + def_vars = FunDefVars, call_vars = FunCallVars, + arg_types = FunArgTypes}, + Code, NestingLevel), + {NewCurrFun, NewCurrFunLabel, CallsToAnalyze, NewCode, NewRaceList, + NewRaceVarMap, NewFunDefVars, NewFunCallVars, NewFunArgTypes, + NewNestingLevel}; + [Head|Tail] -> + case Head of + {InitFun, InitFun} when CurrFun =:= InitFun, Fun =:= InitFun -> + NewCallsToAnalyze = lists:delete(Head, CallsToAnalyze), + NewRaceVarMap = + race_var_map(Args, NewFunArgs, RaceVarMap, bind), + RetC = + fixup_all_calls(InitFun, InitFun, FunLabel, Args, + CodeB ++ + [#curr_fun{status = out, mfa = InitFun, + label = CurrFunLabel, var_map = RaceVarMap, + def_vars = FunDefVars, call_vars = FunCallVars, + arg_types = FunArgTypes}], + Code, RaceVarMap), + NewCode = + fixup_all_calls(InitFun, InitFun, FunLabel, Args, + CodeB ++ + [#curr_fun{status = out, mfa = InitFun, + label = CurrFunLabel, var_map = NewRaceVarMap, + def_vars = Args, call_vars = NewFunArgs, + arg_types = NewFunTypes}], + [#curr_fun{status = in, mfa = Fun, + label = FunLabel, var_map = NewRaceVarMap, + def_vars = Args, call_vars = NewFunArgs, + arg_types = NewFunTypes}| + lists:reverse(StateRaceList)] ++ + RetC, NewRaceVarMap), + {InitFun, FunLabel, NewCallsToAnalyze, NewCode, RaceList, + NewRaceVarMap, Args, NewFunArgs, NewFunTypes, NestingLevel}; + {CurrFun, Fun} -> + NewCallsToAnalyze = lists:delete(Head, CallsToAnalyze), + NewRaceVarMap = race_var_map(Args, NewFunArgs, RaceVarMap, bind), + RetC = + case Fun of + InitFun -> + fixup_all_calls(CurrFun, Fun, FunLabel, Args, + lists:reverse(StateRaceList) ++ + [#curr_fun{status = out, mfa = CurrFun, + label = CurrFunLabel, var_map = RaceVarMap, + def_vars = FunDefVars, call_vars = FunCallVars, + arg_types = FunArgTypes}], + Code, RaceVarMap); + _Other1 -> + fixup_all_calls(CurrFun, Fun, FunLabel, Args, + CodeB ++ + [#curr_fun{status = out, mfa = CurrFun, + label = CurrFunLabel, var_map = RaceVarMap, + def_vars = FunDefVars, call_vars = FunCallVars, + arg_types = FunArgTypes}], + Code, RaceVarMap) + end, + NewCode = + case Fun of + InitFun -> + [#curr_fun{status = in, mfa = Fun, + label = FunLabel, var_map = NewRaceVarMap, + def_vars = Args, call_vars = NewFunArgs, + arg_types = NewFunTypes}| + lists:reverse(StateRaceList)] ++ RetC; + _ -> + [#curr_fun{status = in, mfa = Fun, + label = FunLabel, var_map = NewRaceVarMap, + def_vars = Args, call_vars = NewFunArgs, + arg_types = NewFunTypes}|CodeB] ++ + RetC + end, + {Fun, FunLabel, NewCallsToAnalyze, NewCode, RaceList, NewRaceVarMap, + Args, NewFunArgs, NewFunTypes, NestingLevel}; + {_TupleA, _TupleB} -> + fixup_race_forward_helper(CurrFun, CurrFunLabel, Fun, FunLabel, + Tail, CallsToAnalyze, Code, RaceList, InitFun, NewFunArgs, + NewFunTypes, RaceWarnTag, RaceVarMap, FunDefVars, FunCallVars, + FunArgTypes, NestingLevel, Args, CodeB, StateRaceList) + end + end. + +%%% =========================================================================== +%%% +%%% Backward Analysis +%%% +%%% =========================================================================== + +fixup_race_backward(CurrFun, Calls, CallsToAnalyze, Parents, Height) -> + case Height =:= 0 of + true -> Parents; + false -> + case Calls of + [] -> + case is_integer(CurrFun) orelse lists:member(CurrFun, Parents) of + true -> Parents; + false -> [CurrFun|Parents] + end; + [Head|Tail] -> + {Parent, TupleB} = Head, + case TupleB =:= CurrFun of + true -> % more paths are needed + NewCallsToAnalyze = lists:delete(Head, CallsToAnalyze), + NewParents = + fixup_race_backward(Parent, NewCallsToAnalyze, + NewCallsToAnalyze, Parents, Height - 1), + fixup_race_backward(CurrFun, Tail, NewCallsToAnalyze, NewParents, + Height); + false -> + fixup_race_backward(CurrFun, Tail, CallsToAnalyze, Parents, + Height) + end + end + end. + +%%% =========================================================================== +%%% +%%% Utilities +%%% +%%% =========================================================================== + +are_bound_labels(Label1, Label2, RaceVarMap) -> + case dict:find(Label1, RaceVarMap) of + error -> false; + {ok, Labels} -> + lists:member(Label2, Labels) orelse + are_bound_labels_helper(Labels, Label1, Label2, RaceVarMap) + end. + +are_bound_labels_helper(Labels, OldLabel, CompLabel, RaceVarMap) -> + case dict:size(RaceVarMap) of + 0 -> false; + _ -> + case Labels of + [] -> false; + [Head|Tail] -> + NewRaceVarMap = dict:erase(OldLabel, RaceVarMap), + are_bound_labels(Head, CompLabel, NewRaceVarMap) orelse + are_bound_labels_helper(Tail, Head, CompLabel, NewRaceVarMap) + end + end. + +are_bound_vars(Vars1, Vars2, RaceVarMap) -> + case is_list(Vars1) andalso is_list(Vars2) of + true -> + case Vars1 of + [] -> false; + [AHead|ATail] -> + case Vars2 of + [] -> false; + [PHead|PTail] -> + are_bound_vars(AHead, PHead, RaceVarMap) andalso + are_bound_vars(ATail, PTail, RaceVarMap) + end + end; + false -> + {NewVars1, NewVars2, IsList} = + case is_list(Vars1) of + true -> + case Vars1 of + [Var1] -> {Var1, Vars2, true}; + _Thing -> {Vars1, Vars2, false} + end; + false -> + case is_list(Vars2) of + true -> + case Vars2 of + [Var2] -> {Vars1, Var2, true}; + _Thing -> {Vars1, Vars2, false} + end; + false -> {Vars1, Vars2, true} + end + end, + case IsList of + true -> + case cerl:type(NewVars1) of + var -> + case cerl:type(NewVars2) of + var -> + ALabel = cerl_trees:get_label(NewVars1), + PLabel = cerl_trees:get_label(NewVars2), + are_bound_labels(ALabel, PLabel, RaceVarMap) orelse + are_bound_labels(PLabel, ALabel, RaceVarMap); + alias -> + are_bound_vars(NewVars1, cerl:alias_var(NewVars2), + RaceVarMap); + values -> + are_bound_vars(NewVars1, cerl:values_es(NewVars2), + RaceVarMap); + _Other -> false + end; + tuple -> + case cerl:type(NewVars2) of + tuple -> + are_bound_vars(cerl:tuple_es(NewVars1), + cerl:tuple_es(NewVars2), RaceVarMap); + alias -> + are_bound_vars(NewVars1, cerl:alias_var(NewVars2), + RaceVarMap); + values -> + are_bound_vars(NewVars1, cerl:values_es(NewVars2), + RaceVarMap); + _Other -> false + end; + cons -> + case cerl:type(NewVars2) of + cons -> + are_bound_vars(cerl:cons_hd(NewVars1), + cerl:cons_hd(NewVars2), RaceVarMap) + andalso + are_bound_vars(cerl:cons_tl(NewVars1), + cerl:cons_tl(NewVars2), RaceVarMap); + alias -> + are_bound_vars(NewVars1, cerl:alias_var(NewVars2), + RaceVarMap); + values -> + are_bound_vars(NewVars1, cerl:values_es(NewVars2), + RaceVarMap); + _Other -> false + end; + alias -> + case cerl:type(NewVars2) of + alias -> + are_bound_vars(cerl:alias_var(NewVars1), + cerl:alias_var(NewVars2), RaceVarMap); + _Other -> + are_bound_vars(cerl:alias_var(NewVars1), + NewVars2, RaceVarMap) + end; + values -> + case cerl:type(NewVars2) of + values -> + are_bound_vars(cerl:values_es(NewVars1), + cerl:values_es(NewVars2), RaceVarMap); + _Other -> + are_bound_vars(cerl:values_es(NewVars1), + NewVars2, RaceVarMap) + end; + _Other -> false + end; + false -> false + end + end. + +callgraph__renew_tables(Table, Callgraph) -> + case Table of + {named, NameLabel, Names} -> + PTablesToAdd = + case NameLabel of + ?no_label -> []; + _Other -> [NameLabel] + end, + NamesToAdd = filter_named_tables(Names), + PTables = dialyzer_callgraph:get_public_tables(Callgraph), + NTables = dialyzer_callgraph:get_named_tables(Callgraph), + dialyzer_callgraph:put_public_tables( + lists:usort(PTablesToAdd ++ PTables), + dialyzer_callgraph:put_named_tables( + NamesToAdd ++ NTables, Callgraph)); + _Other -> + Callgraph + end. + +cleanup_clause_code(#curr_fun{mfa = CurrFun} = CurrTuple, Code, + NestingLevel, LocalNestingLevel) -> + case Code of + [] -> {CurrTuple, []}; + [Head|Tail] -> + {NewLocalNestingLevel, NewNestingLevel, NewCurrTuple, Return} = + case Head of + beg_case -> + {LocalNestingLevel, NestingLevel + 1, CurrTuple, false}; + #end_case{} -> + {LocalNestingLevel, NestingLevel - 1, CurrTuple, false}; + #end_clause{} -> + case NestingLevel =:= 0 of + true -> + {LocalNestingLevel, NestingLevel, CurrTuple, true}; + false -> + {LocalNestingLevel, NestingLevel, CurrTuple, false} + end; + #fun_call{caller = CurrFun} -> + {LocalNestingLevel - 1, NestingLevel, CurrTuple, false}; + #curr_fun{status = in} -> + {LocalNestingLevel - 1, NestingLevel, Head, false}; + #curr_fun{status = out} -> + {LocalNestingLevel + 1, NestingLevel, Head, false}; + Other when Other =/= #fun_call{} -> + {LocalNestingLevel, NestingLevel, CurrTuple, false} + end, + case Return of + true -> {NewCurrTuple, Tail}; + false -> + cleanup_clause_code(NewCurrTuple, Tail, NewNestingLevel, + NewLocalNestingLevel) + end + end. + +cleanup_dep_calls(DepList) -> + case DepList of + [] -> []; + [#dep_call{call_name = CallName, arg_types = ArgTypes, + vars = Vars, state = State, file_line = FileLine}|T] -> + [#dep_call{call_name = CallName, arg_types = ArgTypes, + vars = Vars, state = State, file_line = FileLine}| + cleanup_dep_calls(T)] + end. + +cleanup_race_code(State) -> + Callgraph = dialyzer_dataflow:state__get_callgraph(State), + dialyzer_dataflow:state__put_callgraph( + dialyzer_callgraph:race_code_new(Callgraph), State). + +filter_named_tables(NamesList) -> + case NamesList of + [] -> []; + [Head|Tail] -> + NewHead = + case string:rstr(Head, "()") of + 0 -> [Head]; + _Other -> [] + end, + NewHead ++ filter_named_tables(Tail) + end. + +filter_parents(Parents, NewParents, Digraph) -> + case Parents of + [] -> NewParents; + [Head|Tail] -> + NewParents1 = filter_parents_helper1(Head, Tail, NewParents, Digraph), + filter_parents(Tail, NewParents1, Digraph) + end. + +filter_parents_helper1(First, Rest, NewParents, Digraph) -> + case Rest of + [] -> NewParents; + [Head|Tail] -> + NewParents1 = filter_parents_helper2(First, Head, NewParents, Digraph), + filter_parents_helper1(First, Tail, NewParents1, Digraph) + end. + +filter_parents_helper2(Parent1, Parent2, NewParents, Digraph) -> + case digraph:get_path(Digraph, Parent1, Parent2) of + false -> + case digraph:get_path(Digraph, Parent2, Parent1) of + false -> NewParents; + _Vertices -> NewParents -- [Parent1] + end; + _Vertices -> NewParents -- [Parent2] + end. + +find_all_bound_vars(Label, RaceVarMap) -> + case dict:find(Label, RaceVarMap) of + error -> [Label]; + {ok, Labels} -> + lists:usort(Labels ++ + find_all_bound_vars_helper(Labels, Label, RaceVarMap)) + end. + +find_all_bound_vars_helper(Labels, Label, RaceVarMap) -> + case dict:size(RaceVarMap) of + 0 -> []; + _ -> + case Labels of + [] -> []; + [Head|Tail] -> + NewRaceVarMap = dict:erase(Label, RaceVarMap), + find_all_bound_vars(Head, NewRaceVarMap) ++ + find_all_bound_vars_helper(Tail, Head, NewRaceVarMap) + end + end. + +fixup_all_calls(CurrFun, NextFun, NextFunLabel, Args, CodeToReplace, + Code, RaceVarMap) -> + case Code of + [] -> []; + [Head|Tail] -> + NewCode = + case Head of + #fun_call{caller = CurrFun, callee = Callee, + arg_types = FunArgTypes, vars = FunArgs} + when Callee =:= NextFun orelse Callee =:= NextFunLabel -> + RaceVarMap1 = race_var_map(Args, FunArgs, RaceVarMap, bind), + [#curr_fun{status = in, mfa = NextFun, label = NextFunLabel, + var_map = RaceVarMap1, def_vars = Args, + call_vars = FunArgs, arg_types = FunArgTypes}| + CodeToReplace]; + _Other -> [Head] + end, + RetCode = + fixup_all_calls(CurrFun, NextFun, NextFunLabel, Args, CodeToReplace, + Tail, RaceVarMap), + NewCode ++ RetCode + end. + +is_last_race(RaceTag, InitFun, Code, Callgraph) -> + case Code of + [] -> true; + [Head|Tail] -> + case Head of + RaceTag -> false; + #fun_call{callee = Fun} -> + FunName = + case is_integer(Fun) of + true -> + case dialyzer_callgraph:lookup_name(Fun, Callgraph) of + error -> Fun; + {ok, Name} -> Name + end; + false -> Fun + end, + Digraph = dialyzer_callgraph:get_digraph(Callgraph), + case FunName =:= InitFun orelse + digraph:get_path(Digraph, FunName, InitFun) of + false -> is_last_race(RaceTag, InitFun, Tail, Callgraph); + _Vertices -> false + end; + _Other -> is_last_race(RaceTag, InitFun, Tail, Callgraph) + end + end. + +lists_key_member(Member, List, N) when is_integer(Member) -> + case List of + [] -> 0; + [Head|Tail] -> + NewN = N + 1, + case Head of + Member -> NewN; + _Other -> lists_key_member(Member, Tail, NewN) + end + end; +lists_key_member(_M, _L, _N) -> + 0. + +lists_key_member_lists(MemberList, List) -> + case MemberList of + [] -> 0; + [Head|Tail] -> + case lists_key_member(Head, List, 0) of + 0 -> lists_key_member_lists(Tail, List); + Other -> Other + end + end. + +lists_key_members_lists(MemberList, List) -> + case MemberList of + [] -> []; + [Head|Tail] -> + lists:usort( + lists_key_members_lists_helper(Head, List, 1) ++ + lists_key_members_lists(Tail, List)) + end. + +lists_key_members_lists_helper(Elem, List, N) when is_integer(Elem) -> + case List of + [] -> []; + [Head|Tail] -> + NewHead = + case Head =:= Elem of + true -> [N]; + false -> [] + end, + NewHead ++ lists_key_members_lists_helper(Elem, Tail, N + 1) + end; +lists_key_members_lists_helper(_Elem, _List, _N) -> + [0]. + +lists_key_replace(N, List, NewMember) -> + {Before, [_|After]} = lists:split(N - 1, List), + Before ++ [NewMember|After]. + +lists_get(0, _List) -> ?no_label; +lists_get(N, List) -> lists:nth(N, List). + +refine_race(RaceCall, WarnVarArgs, RaceWarnTag, DependencyList, RaceVarMap) -> + case RaceWarnTag of + WarnWhereis when WarnWhereis =:= ?WARN_WHEREIS_REGISTER orelse + WarnWhereis =:= ?WARN_WHEREIS_UNREGISTER -> + case RaceCall of + #dep_call{call_name = ets_lookup} -> + DependencyList; + #dep_call{call_name = mnesia_dirty_read} -> + DependencyList; + #dep_call{call_name = whereis, args = VarArgs} -> + refine_race_helper(RaceCall, VarArgs, WarnVarArgs, RaceWarnTag, + DependencyList, RaceVarMap) + end; + ?WARN_ETS_LOOKUP_INSERT -> + case RaceCall of + #dep_call{call_name = whereis} -> + DependencyList; + #dep_call{call_name = mnesia_dirty_read} -> + DependencyList; + #dep_call{call_name = ets_lookup, args = VarArgs} -> + refine_race_helper(RaceCall, VarArgs, WarnVarArgs, RaceWarnTag, + DependencyList, RaceVarMap) + end; + ?WARN_MNESIA_DIRTY_READ_WRITE -> + case RaceCall of + #dep_call{call_name = whereis} -> + DependencyList; + #dep_call{call_name = ets_lookup} -> + DependencyList; + #dep_call{call_name = mnesia_dirty_read, args = VarArgs} -> + refine_race_helper(RaceCall, VarArgs, WarnVarArgs, RaceWarnTag, + DependencyList, RaceVarMap) + end + end. + +refine_race_helper(RaceCall, VarArgs, WarnVarArgs, RaceWarnTag, DependencyList, + RaceVarMap) -> + case compare_types(VarArgs, WarnVarArgs, RaceWarnTag, RaceVarMap) of + true -> [RaceCall|DependencyList]; + false -> DependencyList + end. + +remove_clause(RaceList, CurrTuple, Code, NestingLevel) -> + NewRaceList = fixup_case_rest_paths(RaceList, 0), + {NewCurrTuple, NewCode} = + cleanup_clause_code(CurrTuple, Code, 0, NestingLevel), + ReturnTuple = {NewRaceList, NewCurrTuple, NewCode, NestingLevel}, + case NewRaceList of + [beg_case|RTail] -> + case NewCode of + [#end_case{}|CTail] -> + remove_clause(RTail, NewCurrTuple, CTail, NestingLevel); + _Other -> ReturnTuple + end; + _Else -> ReturnTuple + end. + +remove_nonlocal_functions(Code, NestingLevel) -> + case Code of + [] -> []; + [H|T] -> + NewNL = + case H of + #curr_fun{status = in} -> + NestingLevel + 1; + #curr_fun{status = out} -> + NestingLevel - 1; + _Other -> + NestingLevel + end, + case NewNL =:= 0 of + true -> T; + false -> remove_nonlocal_functions(T, NewNL) + end + end. + +renew_curr_fun(CurrFun, Races) -> + Races#races{curr_fun = CurrFun}. + +renew_curr_fun_label(CurrFunLabel, Races) -> + Races#races{curr_fun_label = CurrFunLabel}. + +renew_race_list(RaceList, Races) -> + Races#races{race_list = RaceList}. + +renew_race_list_size(RaceListSize, Races) -> + Races#races{race_list_size = RaceListSize}. + +renew_race_tags(RaceTags, Races) -> + Races#races{race_tags = RaceTags}. + +renew_table(Table, Races) -> + Races#races{new_table = Table}. + +state__renew_curr_fun(CurrFun, State) -> + Races = dialyzer_dataflow:state__get_races(State), + dialyzer_dataflow:state__put_races(renew_curr_fun(CurrFun, Races), State). + +state__renew_curr_fun_label(CurrFunLabel, State) -> + Races = dialyzer_dataflow:state__get_races(State), + dialyzer_dataflow:state__put_races( + renew_curr_fun_label(CurrFunLabel, Races), State). + +state__renew_race_list(RaceList, State) -> + Races = dialyzer_dataflow:state__get_races(State), + dialyzer_dataflow:state__put_races(renew_race_list(RaceList, Races), State). + +state__renew_race_tags(RaceTags, State) -> + Races = dialyzer_dataflow:state__get_races(State), + dialyzer_dataflow:state__put_races(renew_race_tags(RaceTags, Races), State). + +state__renew_info(RaceList, RaceListSize, RaceTags, Table, State) -> + Callgraph = dialyzer_dataflow:state__get_callgraph(State), + Races = dialyzer_dataflow:state__get_races(State), + dialyzer_dataflow:state__put_callgraph( + callgraph__renew_tables(Table, Callgraph), + dialyzer_dataflow:state__put_races( + renew_table(Table, + renew_race_list(RaceList, + renew_race_list_size(RaceListSize, + renew_race_tags(RaceTags, Races)))), State)). + +%%% =========================================================================== +%%% +%%% Variable and Type Utilities +%%% +%%% =========================================================================== + +any_args(StrList) -> + case StrList of + [] -> false; + [Head|Tail] -> + case string:rstr(Head, "()") of + 0 -> any_args(Tail); + _Other -> true + end + end. + +-spec bind_dict_vars(label(), label(), dict:dict()) -> dict:dict(). + +bind_dict_vars(Key, Label, RaceVarMap) -> + case Key =:= Label of + true -> RaceVarMap; + false -> + case dict:find(Key, RaceVarMap) of + error -> dict:store(Key, [Label], RaceVarMap); + {ok, Labels} -> + case lists:member(Label, Labels) of + true -> RaceVarMap; + false -> dict:store(Key, [Label|Labels], RaceVarMap) + end + end + end. + +bind_dict_vars_list(Key, Labels, RaceVarMap) -> + case Labels of + [] -> RaceVarMap; + [Head|Tail] -> + bind_dict_vars_list(Key, Tail, bind_dict_vars(Key, Head, RaceVarMap)) + end. + +compare_ets_insert(OldWarnVarArgs, NewWarnVarArgs, RaceVarMap) -> + [Old1, Old2, Old3, Old4] = OldWarnVarArgs, + [New1, New2, New3, New4] = NewWarnVarArgs, + Bool = + case any_args(Old2) of + true -> compare_var_list(New1, Old1, RaceVarMap); + false -> + case any_args(New2) of + true -> compare_var_list(New1, Old1, RaceVarMap); + false -> compare_var_list(New1, Old1, RaceVarMap) + orelse (Old2 =:= New2) + end + end, + case Bool of + true -> + case any_args(Old4) of + true -> + case compare_list_vars(Old3, ets_list_args(New3), [], RaceVarMap) of + true -> true; + Args3 -> lists_key_replace(3, OldWarnVarArgs, Args3) + end; + false -> + case any_args(New4) of + true -> + case compare_list_vars(Old3, ets_list_args(New3), [], + RaceVarMap) of + true -> true; + Args3 -> lists_key_replace(3, OldWarnVarArgs, Args3) + end; + false -> + case compare_list_vars(Old3, ets_list_args(New3), [], + RaceVarMap) of + true -> true; + Args3 -> + lists_key_replace(4, + lists_key_replace(3, OldWarnVarArgs, Args3), Old4 -- New4) + end + end + end; + false -> OldWarnVarArgs + end. + +compare_first_arg(OldWarnVarArgs, NewWarnVarArgs, RaceVarMap) -> + [Old1, Old2|_OldT] = OldWarnVarArgs, + [New1, New2|_NewT] = NewWarnVarArgs, + case any_args(Old2) of + true -> + case compare_var_list(New1, Old1, RaceVarMap) of + true -> true; + false -> OldWarnVarArgs + end; + false -> + case any_args(New2) of + true -> + case compare_var_list(New1, Old1, RaceVarMap) of + true -> true; + false -> OldWarnVarArgs + end; + false -> + case compare_var_list(New1, Old1, RaceVarMap) of + true -> true; + false -> lists_key_replace(2, OldWarnVarArgs, Old2 -- New2) + end + end + end. + +compare_argtypes(ArgTypes, WarnArgTypes) -> + lists:any(fun (X) -> lists:member(X, WarnArgTypes) end, ArgTypes). + +%% Compares the argument types of the two suspicious calls. +compare_types(VarArgs, WarnVarArgs, RaceWarnTag, RaceVarMap) -> + case RaceWarnTag of + ?WARN_WHEREIS_REGISTER -> + [VA1, VA2] = VarArgs, + [WVA1, WVA2, _, _] = WarnVarArgs, + case any_args(VA2) of + true -> compare_var_list(VA1, WVA1, RaceVarMap); + false -> + case any_args(WVA2) of + true -> compare_var_list(VA1, WVA1, RaceVarMap); + false -> + compare_var_list(VA1, WVA1, RaceVarMap) orelse + compare_argtypes(VA2, WVA2) + end + end; + ?WARN_WHEREIS_UNREGISTER -> + [VA1, VA2] = VarArgs, + [WVA1, WVA2] = WarnVarArgs, + case any_args(VA2) of + true -> compare_var_list(VA1, WVA1, RaceVarMap); + false -> + case any_args(WVA2) of + true -> compare_var_list(VA1, WVA1, RaceVarMap); + false -> + compare_var_list(VA1, WVA1, RaceVarMap) orelse + compare_argtypes(VA2, WVA2) + end + end; + ?WARN_ETS_LOOKUP_INSERT -> + [VA1, VA2, VA3, VA4] = VarArgs, + [WVA1, WVA2, WVA3, WVA4] = WarnVarArgs, + Bool = + case any_args(VA2) of + true -> compare_var_list(VA1, WVA1, RaceVarMap); + false -> + case any_args(WVA2) of + true -> compare_var_list(VA1, WVA1, RaceVarMap); + false -> + compare_var_list(VA1, WVA1, RaceVarMap) orelse + compare_argtypes(VA2, WVA2) + end + end, + Bool andalso + (case any_args(VA4) of + true -> + compare_var_list(VA3, WVA3, RaceVarMap); + false -> + case any_args(WVA4) of + true -> + compare_var_list(VA3, WVA3, RaceVarMap); + false -> + compare_var_list(VA3, WVA3, RaceVarMap) orelse + compare_argtypes(VA4, WVA4) + end + end); + ?WARN_MNESIA_DIRTY_READ_WRITE -> + [VA1, VA2|_] = VarArgs, %% Two or four elements + [WVA1, WVA2|_] = WarnVarArgs, + case any_args(VA2) of + true -> compare_var_list(VA1, WVA1, RaceVarMap); + false -> + case any_args(WVA2) of + true -> compare_var_list(VA1, WVA1, RaceVarMap); + false -> + compare_var_list(VA1, WVA1, RaceVarMap) orelse + compare_argtypes(VA2, WVA2) + end + end + end. + +compare_list_vars(VarList1, VarList2, NewVarList1, RaceVarMap) -> + case VarList1 of + [] -> + case NewVarList1 of + [] -> true; + _Other -> NewVarList1 + end; + [Head|Tail] -> + NewHead = + case compare_var_list(Head, VarList2, RaceVarMap) of + true -> []; + false -> [Head] + end, + compare_list_vars(Tail, VarList2, NewHead ++ NewVarList1, RaceVarMap) + end. + +compare_vars(Var1, Var2, RaceVarMap) when is_integer(Var1), is_integer(Var2) -> + Var1 =:= Var2 orelse + are_bound_labels(Var1, Var2, RaceVarMap) orelse + are_bound_labels(Var2, Var1, RaceVarMap); +compare_vars(_Var1, _Var2, _RaceVarMap) -> + false. + +-spec compare_var_list(label_type(), [label_type()], dict:dict()) -> boolean(). + +compare_var_list(Var, VarList, RaceVarMap) -> + lists:any(fun (V) -> compare_vars(Var, V, RaceVarMap) end, VarList). + +ets_list_args(MaybeList) -> + case is_list(MaybeList) of + true -> + try [ets_tuple_args(T) || T <- MaybeList] + catch _:_ -> [?no_label] + end; + false -> [ets_tuple_args(MaybeList)] + end. + +ets_list_argtypes(ListStr) -> + ListStr1 = string:strip(ListStr, left, $[), + ListStr2 = string:strip(ListStr1, right, $]), + ListStr3 = string:strip(ListStr2, right, $.), + string:strip(ListStr3, right, $,). + +ets_tuple_args(MaybeTuple) -> + case is_tuple(MaybeTuple) of + true -> element(1, MaybeTuple); + false -> ?no_label + end. + +ets_tuple_argtypes2(TupleList, ElemList) -> + case TupleList of + [] -> ElemList; + [H|T] -> + ets_tuple_argtypes2(T, + ets_tuple_argtypes2_helper(H, [], 0) ++ ElemList) + end. + +ets_tuple_argtypes2_helper(TupleStr, ElemStr, NestingLevel) -> + case TupleStr of + [] -> []; + [H|T] -> + {NewElemStr, NewNestingLevel, Return} = + case H of + ${ when NestingLevel =:= 0 -> + {ElemStr, NestingLevel + 1, false}; + ${ -> + {[H|ElemStr], NestingLevel + 1, false}; + $[ -> + {[H|ElemStr], NestingLevel + 1, false}; + $( -> + {[H|ElemStr], NestingLevel + 1, false}; + $} -> + {[H|ElemStr], NestingLevel - 1, false}; + $] -> + {[H|ElemStr], NestingLevel - 1, false}; + $) -> + {[H|ElemStr], NestingLevel - 1, false}; + $, when NestingLevel =:= 1 -> + {lists:reverse(ElemStr), NestingLevel, true}; + _Other -> + {[H|ElemStr], NestingLevel, false} + end, + case Return of + true -> string:tokens(NewElemStr, " |"); + false -> + ets_tuple_argtypes2_helper(T, NewElemStr, NewNestingLevel) + end + end. + +ets_tuple_argtypes1(Str, Tuple, TupleList, NestingLevel) -> + case Str of + [] -> TupleList; + [H|T] -> + {NewTuple, NewNestingLevel, Add} = + case H of + ${ -> + {[H|Tuple], NestingLevel + 1, false}; + $} -> + case NestingLevel of + 1 -> + {[H|Tuple], NestingLevel - 1, true}; + _Else -> + {[H|Tuple], NestingLevel - 1, false} + end; + _Other1 when NestingLevel =:= 0 -> + {Tuple, NestingLevel, false}; + _Other2 -> + {[H|Tuple], NestingLevel, false} + end, + case Add of + true -> + ets_tuple_argtypes1(T, [], + [lists:reverse(NewTuple)|TupleList], + NewNestingLevel); + false -> + ets_tuple_argtypes1(T, NewTuple, TupleList, NewNestingLevel) + end + end. + +format_arg(?bypassed) -> ?no_label; +format_arg(Arg0) -> + Arg = cerl:fold_literal(Arg0), + case cerl:type(Arg) of + var -> cerl_trees:get_label(Arg); + tuple -> list_to_tuple([format_arg(A) || A <- cerl:tuple_es(Arg)]); + cons -> [format_arg(cerl:cons_hd(Arg))|format_arg(cerl:cons_tl(Arg))]; + alias -> format_arg(cerl:alias_var(Arg)); + literal -> + case cerl:is_c_nil(Arg) of + true -> []; + false -> ?no_label + end; + _Other -> ?no_label + end. + +-spec format_args([core_vars()], [erl_types:erl_type()], + dialyzer_dataflow:state(), call()) -> + args(). + +format_args([], [], _State, _Call) -> + []; +format_args(ArgList, TypeList, CleanState, Call) -> + format_args_2(format_args_1(ArgList, TypeList, CleanState), Call). + +format_args_1([Arg], [Type], CleanState) -> + [format_arg(Arg), format_type(Type, CleanState)]; +format_args_1([Arg|Args], [Type|Types], CleanState) -> + List = + case Arg =:= ?bypassed of + true -> [?no_label, format_type(Type, CleanState)]; + false -> + case cerl:is_literal(cerl:fold_literal(Arg)) of + true -> [?no_label, format_cerl(Arg)]; + false -> [format_arg(Arg), format_type(Type, CleanState)] + end + end, + List ++ format_args_1(Args, Types, CleanState). + +format_args_2(StrArgList, Call) -> + case Call of + whereis -> + lists_key_replace(2, StrArgList, + string:tokens(lists:nth(2, StrArgList), " |")); + register -> + lists_key_replace(2, StrArgList, + string:tokens(lists:nth(2, StrArgList), " |")); + unregister -> + lists_key_replace(2, StrArgList, + string:tokens(lists:nth(2, StrArgList), " |")); + ets_new -> + StrArgList1 = lists_key_replace(2, StrArgList, + string:tokens(lists:nth(2, StrArgList), " |")), + lists_key_replace(4, StrArgList1, + string:tokens(ets_list_argtypes(lists:nth(4, StrArgList1)), " |")); + ets_lookup -> + StrArgList1 = lists_key_replace(2, StrArgList, + string:tokens(lists:nth(2, StrArgList), " |")), + lists_key_replace(4, StrArgList1, + string:tokens(lists:nth(4, StrArgList1), " |")); + ets_insert -> + StrArgList1 = lists_key_replace(2, StrArgList, + string:tokens(lists:nth(2, StrArgList), " |")), + lists_key_replace(4, StrArgList1, + ets_tuple_argtypes2( + ets_tuple_argtypes1(lists:nth(4, StrArgList1), [], [], 0), + [])); + mnesia_dirty_read1 -> + lists_key_replace(2, StrArgList, + [mnesia_tuple_argtypes(T) || T <- string:tokens( + lists:nth(2, StrArgList), " |")]); + mnesia_dirty_read2 -> + lists_key_replace(2, StrArgList, + string:tokens(lists:nth(2, StrArgList), " |")); + mnesia_dirty_write1 -> + lists_key_replace(2, StrArgList, + [mnesia_record_tab(R) || R <- string:tokens( + lists:nth(2, StrArgList), " |")]); + mnesia_dirty_write2 -> + lists_key_replace(2, StrArgList, + string:tokens(lists:nth(2, StrArgList), " |")); + function_call -> StrArgList + end. + +format_cerl(Tree) -> + cerl_prettypr:format(cerl:set_ann(Tree, []), + [{hook, dialyzer_utils:pp_hook()}, + {noann, true}, + {paper, 100000}, + {ribbon, 100000} + ]). + +format_type(Type, State) -> + R = dialyzer_dataflow:state__get_records(State), + erl_types:t_to_string(Type, R). + +mnesia_record_tab(RecordStr) -> + case string:str(RecordStr, "#") =:= 1 of + true -> + "'" ++ + string:sub_string(RecordStr, 2, string:str(RecordStr, "{") - 1) ++ + "'"; + false -> RecordStr + end. + +mnesia_tuple_argtypes(TupleStr) -> + TupleStr1 = string:strip(TupleStr, left, ${), + [TupleStr2|_T] = string:tokens(TupleStr1, " ,"), + lists:flatten(string:tokens(TupleStr2, " |")). + +-spec race_var_map(var_to_map1(), var_to_map2(), dict:dict(), op()) -> + dict:dict(). + +race_var_map(Vars1, Vars2, RaceVarMap, Op) -> + case Vars1 =:= ?no_arg orelse Vars1 =:= ?bypassed + orelse Vars2 =:= ?bypassed of + true -> RaceVarMap; + false -> + case is_list(Vars1) andalso is_list(Vars2) of + true -> + case Vars1 of + [] -> RaceVarMap; + [AHead|ATail] -> + case Vars2 of + [] -> RaceVarMap; + [PHead|PTail] -> + NewRaceVarMap = race_var_map(AHead, PHead, RaceVarMap, Op), + race_var_map(ATail, PTail, NewRaceVarMap, Op) + end + end; + false -> + {NewVars1, NewVars2, Bool} = + case is_list(Vars1) of + true -> + case Vars1 of + [Var1] -> {Var1, Vars2, true}; + _Thing -> {Vars1, Vars2, false} + end; + false -> + case is_list(Vars2) of + true -> + case Vars2 of + [Var2] -> {Vars1, Var2, true}; + _Thing -> {Vars1, Vars2, false} + end; + false -> {Vars1, Vars2, true} + end + end, + case Bool of + true -> + case cerl:type(NewVars1) of + var -> + case cerl:type(NewVars2) of + var -> + ALabel = cerl_trees:get_label(NewVars1), + PLabel = cerl_trees:get_label(NewVars2), + case Op of + bind -> + TempRaceVarMap = + bind_dict_vars(ALabel, PLabel, RaceVarMap), + bind_dict_vars(PLabel, ALabel, TempRaceVarMap); + unbind -> + TempRaceVarMap = + unbind_dict_vars(ALabel, PLabel, RaceVarMap), + unbind_dict_vars(PLabel, ALabel, TempRaceVarMap) + end; + alias -> + race_var_map(NewVars1, cerl:alias_var(NewVars2), + RaceVarMap, Op); + values -> + race_var_map(NewVars1, cerl:values_es(NewVars2), + RaceVarMap, Op); + _Other -> RaceVarMap + end; + tuple -> + case cerl:type(NewVars2) of + tuple -> + race_var_map(cerl:tuple_es(NewVars1), + cerl:tuple_es(NewVars2), RaceVarMap, Op); + alias -> + race_var_map(NewVars1, cerl:alias_var(NewVars2), + RaceVarMap, Op); + values -> + race_var_map(NewVars1, cerl:values_es(NewVars2), + RaceVarMap, Op); + _Other -> RaceVarMap + end; + cons -> + case cerl:type(NewVars2) of + cons -> + NewRaceVarMap = race_var_map(cerl:cons_hd(NewVars1), + cerl:cons_hd(NewVars2), RaceVarMap, Op), + race_var_map(cerl:cons_tl(NewVars1), + cerl:cons_tl(NewVars2), NewRaceVarMap, Op); + alias -> + race_var_map(NewVars1, cerl:alias_var(NewVars2), + RaceVarMap, Op); + values -> + race_var_map(NewVars1, cerl:values_es(NewVars2), + RaceVarMap, Op); + _Other -> RaceVarMap + end; + alias -> + case cerl:type(NewVars2) of + alias -> + race_var_map(cerl:alias_var(NewVars1), + cerl:alias_var(NewVars2), RaceVarMap, Op); + _Other -> + race_var_map(cerl:alias_var(NewVars1), + NewVars2, RaceVarMap, Op) + end; + values -> + case cerl:type(NewVars2) of + values -> + race_var_map(cerl:values_es(NewVars1), + cerl:values_es(NewVars2), RaceVarMap, Op); + _Other -> + race_var_map(cerl:values_es(NewVars1), + NewVars2, RaceVarMap, Op) + end; + _Other -> RaceVarMap + end; + false -> RaceVarMap + end + end + end. + +race_var_map_clauses(Clauses, RaceVarMap) -> + case Clauses of + [] -> RaceVarMap; + [#end_clause{arg = Arg, pats = Pats, guard = Guard}|T] -> + {RaceVarMap1, _RemoveClause} = + race_var_map_guard(Arg, Pats, Guard, RaceVarMap, bind), + race_var_map_clauses(T, RaceVarMap1) + end. + +race_var_map_guard(Arg, Pats, Guard, RaceVarMap, Op) -> + {NewRaceVarMap, RemoveClause} = + case cerl:type(Guard) of + call -> + CallName = cerl:call_name(Guard), + case cerl:is_literal(CallName) of + true -> + case cerl:concrete(CallName) of + '=:=' -> + [Arg1, Arg2] = cerl:call_args(Guard), + {race_var_map(Arg1, Arg2, RaceVarMap, Op), false}; + '==' -> + [Arg1, Arg2] = cerl:call_args(Guard), + {race_var_map(Arg1, Arg2, RaceVarMap, Op), false}; + '=/=' -> + case Op of + bind -> + [Arg1, Arg2] = cerl:call_args(Guard), + {RaceVarMap, are_bound_vars(Arg1, Arg2, RaceVarMap)}; + unbind -> {RaceVarMap, false} + end; + _Other -> {RaceVarMap, false} + end; + false -> {RaceVarMap, false} + end; + _Other -> {RaceVarMap, false} + end, + {RaceVarMap1, RemoveClause1} = + race_var_map_guard_helper1(Arg, Pats, + race_var_map(Arg, Pats, NewRaceVarMap, Op), Op), + {RaceVarMap1, RemoveClause orelse RemoveClause1}. + +race_var_map_guard_helper1(Arg, Pats, RaceVarMap, Op) -> + case Arg =:= ?no_arg orelse Arg =:= ?bypassed of + true -> {RaceVarMap, false}; + false -> + case cerl:type(Arg) of + call -> + case Pats of + [NewPat] -> + ModName = cerl:call_module(Arg), + CallName = cerl:call_name(Arg), + case cerl:is_literal(ModName) andalso + cerl:is_literal(CallName) of + true -> + case {cerl:concrete(ModName), + cerl:concrete(CallName)} of + {erlang, '=:='} -> + race_var_map_guard_helper2(Arg, NewPat, true, + RaceVarMap, Op); + {erlang, '=='} -> + race_var_map_guard_helper2(Arg, NewPat, true, + RaceVarMap, Op); + {erlang, '=/='} -> + race_var_map_guard_helper2(Arg, NewPat, false, + RaceVarMap, Op); + _Else -> {RaceVarMap, false} + end; + false -> {RaceVarMap, false} + end; + _Other -> {RaceVarMap, false} + end; + _Other -> {RaceVarMap, false} + end + end. + +race_var_map_guard_helper2(Arg, Pat0, Bool, RaceVarMap, Op) -> + Pat = cerl:fold_literal(Pat0), + case cerl:type(Pat) of + literal -> + [Arg1, Arg2] = cerl:call_args(Arg), + case cerl:concrete(Pat) of + Bool -> + {race_var_map(Arg1, Arg2, RaceVarMap, Op), false}; + _Else -> + case Op of + bind -> + {RaceVarMap, are_bound_vars(Arg1, Arg2, RaceVarMap)}; + unbind -> {RaceVarMap, false} + end + end; + _Else -> {RaceVarMap, false} + end. + +unbind_dict_vars(Var, Var, RaceVarMap) -> + RaceVarMap; +unbind_dict_vars(Var1, Var2, RaceVarMap) -> + case dict:find(Var1, RaceVarMap) of + error -> RaceVarMap; + {ok, Labels} -> + case Labels of + [] -> dict:erase(Var1, RaceVarMap); + _Else -> + case lists:member(Var2, Labels) of + true -> + unbind_dict_vars(Var1, Var2, + bind_dict_vars_list(Var1, Labels -- [Var2], + dict:erase(Var1, RaceVarMap))); + false -> + unbind_dict_vars_helper(Labels, Var1, Var2, RaceVarMap) + end + end + end. + +unbind_dict_vars_helper(Labels, Key, CompLabel, RaceVarMap) -> + case dict:size(RaceVarMap) of + 0 -> RaceVarMap; + _ -> + case Labels of + [] -> RaceVarMap; + [Head|Tail] -> + NewRaceVarMap = + case are_bound_labels(Head, CompLabel, RaceVarMap) orelse + are_bound_labels(CompLabel, Head, RaceVarMap) of + true -> + bind_dict_vars_list(Key, Labels -- [Head], + dict:erase(Key, RaceVarMap)); + false -> RaceVarMap + end, + unbind_dict_vars_helper(Tail, Key, CompLabel, NewRaceVarMap) + end + end. + +var_analysis(FunDefArgs, FunCallArgs, WarnVarArgs, RaceWarnTag) -> + case RaceWarnTag of + ?WARN_WHEREIS_REGISTER -> + [WVA1, WVA2, WVA3, WVA4] = WarnVarArgs, + ArgNos = lists_key_members_lists(WVA1, FunDefArgs), + [[lists_get(N, FunCallArgs) || N <- ArgNos], WVA2, WVA3, WVA4]; + ?WARN_WHEREIS_UNREGISTER -> + [WVA1, WVA2] = WarnVarArgs, + ArgNos = lists_key_members_lists(WVA1, FunDefArgs), + [[lists_get(N, FunCallArgs) || N <- ArgNos], WVA2]; + ?WARN_ETS_LOOKUP_INSERT -> + [WVA1, WVA2, WVA3, WVA4] = WarnVarArgs, + ArgNos1 = lists_key_members_lists(WVA1, FunDefArgs), + ArgNos2 = lists_key_members_lists(WVA3, FunDefArgs), + [[lists_get(N1, FunCallArgs) || N1 <- ArgNos1], WVA2, + [lists_get(N2, FunCallArgs) || N2 <- ArgNos2], WVA4]; + ?WARN_MNESIA_DIRTY_READ_WRITE -> + [WVA1, WVA2|T] = WarnVarArgs, + ArgNos = lists_key_members_lists(WVA1, FunDefArgs), + [[lists_get(N, FunCallArgs) || N <- ArgNos], WVA2|T] + end. + +var_type_analysis(FunDefArgs, FunCallTypes, WarnVarArgs, RaceWarnTag, + RaceVarMap, CleanState) -> + FunVarArgs = format_args(FunDefArgs, FunCallTypes, CleanState, function_call), + case RaceWarnTag of + ?WARN_WHEREIS_REGISTER -> + [WVA1, WVA2, WVA3, WVA4] = WarnVarArgs, + Vars = find_all_bound_vars(WVA1, RaceVarMap), + case lists_key_member_lists(Vars, FunVarArgs) of + 0 -> [Vars, WVA2, WVA3, WVA4]; + N when is_integer(N) -> + NewWVA2 = string:tokens(lists:nth(N + 1, FunVarArgs), " |"), + [Vars, NewWVA2, WVA3, WVA4] + end; + ?WARN_WHEREIS_UNREGISTER -> + [WVA1, WVA2] = WarnVarArgs, + Vars = find_all_bound_vars(WVA1, RaceVarMap), + case lists_key_member_lists(Vars, FunVarArgs) of + 0 -> [Vars, WVA2]; + N when is_integer(N) -> + NewWVA2 = string:tokens(lists:nth(N + 1, FunVarArgs), " |"), + [Vars, NewWVA2] + end; + ?WARN_ETS_LOOKUP_INSERT -> + [WVA1, WVA2, WVA3, WVA4] = WarnVarArgs, + Vars1 = find_all_bound_vars(WVA1, RaceVarMap), + FirstVarArg = + case lists_key_member_lists(Vars1, FunVarArgs) of + 0 -> [Vars1, WVA2]; + N1 when is_integer(N1) -> + NewWVA2 = string:tokens(lists:nth(N1 + 1, FunVarArgs), " |"), + [Vars1, NewWVA2] + end, + Vars2 = + lists:flatten( + [find_all_bound_vars(A, RaceVarMap) || A <- ets_list_args(WVA3)]), + case lists_key_member_lists(Vars2, FunVarArgs) of + 0 -> FirstVarArg ++ [Vars2, WVA4]; + N2 when is_integer(N2) -> + NewWVA4 = + ets_tuple_argtypes2( + ets_tuple_argtypes1(lists:nth(N2 + 1, FunVarArgs), [], [], 0), + []), + FirstVarArg ++ [Vars2, NewWVA4] + + end; + ?WARN_MNESIA_DIRTY_READ_WRITE -> + [WVA1, WVA2|T] = WarnVarArgs, + Arity = + case T of + [] -> 1; + _Else -> 2 + end, + Vars = find_all_bound_vars(WVA1, RaceVarMap), + case lists_key_member_lists(Vars, FunVarArgs) of + 0 -> [Vars, WVA2|T]; + N when is_integer(N) -> + NewWVA2 = + case Arity of + 1 -> + [mnesia_record_tab(R) || R <- string:tokens( + lists:nth(2, FunVarArgs), " |")]; + 2 -> + string:tokens(lists:nth(N + 1, FunVarArgs), " |") + end, + [Vars, NewWVA2|T] + end + end. + +%%% =========================================================================== +%%% +%%% Warning Format Utilities +%%% +%%% =========================================================================== + +add_race_warning(Warn, #races{race_warnings = Warns} = Races) -> + Races#races{race_warnings = [Warn|Warns]}. + +get_race_warn(Fun, Args, ArgTypes, DepList, State) -> + {M, F, _A} = Fun, + case DepList of + [] -> {State, no_race}; + _Other -> + {State, {race_condition, [M, F, Args, ArgTypes, State, DepList]}} + end. + +-spec get_race_warnings(races(), dialyzer_dataflow:state()) -> + {races(), dialyzer_dataflow:state()}. + +get_race_warnings(#races{race_warnings = RaceWarnings}, State) -> + get_race_warnings_helper(RaceWarnings, State). + +get_race_warnings_helper(Warnings, State) -> + case Warnings of + [] -> + {dialyzer_dataflow:state__get_races(State), State}; + [H|T] -> + {RaceWarnTag, WarningInfo, {race_condition, [M, F, A, AT, S, DepList]}} = H, + Reason = + case RaceWarnTag of + ?WARN_WHEREIS_REGISTER -> + get_reason(lists:keysort(7, DepList), + "might fail due to a possible race condition " + "caused by its combination with "); + ?WARN_WHEREIS_UNREGISTER -> + get_reason(lists:keysort(7, DepList), + "might fail due to a possible race condition " + "caused by its combination with "); + ?WARN_ETS_LOOKUP_INSERT -> + get_reason(lists:keysort(7, DepList), + "might have an unintended effect due to " ++ + "a possible race condition " ++ + "caused by its combination with "); + ?WARN_MNESIA_DIRTY_READ_WRITE -> + get_reason(lists:keysort(7, DepList), + "might have an unintended effect due to " ++ + "a possible race condition " ++ + "caused by its combination with ") + end, + W = + {?WARN_RACE_CONDITION, WarningInfo, + {race_condition, + [M, F, dialyzer_dataflow:format_args(A, AT, S), Reason]}}, + get_race_warnings_helper(T, + dialyzer_dataflow:state__add_warning(W, State)) + end. + +get_reason(DependencyList, Reason) -> + case DependencyList of + [] -> ""; + [#dep_call{call_name = Call, arg_types = ArgTypes, vars = Args, + state = State, file_line = {File, Line}}|T] -> + R = + Reason ++ + case Call of + whereis -> "the erlang:whereis"; + ets_lookup -> "the ets:lookup"; + mnesia_dirty_read -> "the mnesia:dirty_read" + end ++ + dialyzer_dataflow:format_args(Args, ArgTypes, State) ++ + " call in " ++ + filename:basename(File) ++ + " on line " ++ + lists:flatten(io_lib:write(Line)), + case T of + [] -> R; + _ -> get_reason(T, R ++ ", ") + end + end. + +state__add_race_warning(State, RaceWarn, RaceWarnTag, WarningInfo) -> + case RaceWarn of + no_race -> State; + _Else -> + Races = dialyzer_dataflow:state__get_races(State), + Warn = {RaceWarnTag, WarningInfo, RaceWarn}, + dialyzer_dataflow:state__put_races(add_race_warning(Warn, Races), State) + end. + +%%% =========================================================================== +%%% +%%% Record Interfaces +%%% +%%% =========================================================================== + +-spec beg_clause_new(var_to_map1(), var_to_map1(), cerl:cerl()) -> + #beg_clause{}. + +beg_clause_new(Arg, Pats, Guard) -> + #beg_clause{arg = Arg, pats = Pats, guard = Guard}. + +-spec cleanup(races()) -> races(). + +cleanup(#races{race_list = RaceList}) -> + #races{race_list = RaceList}. + +-spec end_case_new([#end_clause{}]) -> #end_case{}. + +end_case_new(Clauses) -> + #end_case{clauses = Clauses}. + +-spec end_clause_new(var_to_map1(), var_to_map1(), cerl:cerl()) -> + #end_clause{}. + +end_clause_new(Arg, Pats, Guard) -> + #end_clause{arg = Arg, pats = Pats, guard = Guard}. + +-spec get_curr_fun(races()) -> dialyzer_callgraph:mfa_or_funlbl(). + +get_curr_fun(#races{curr_fun = CurrFun}) -> + CurrFun. + +-spec get_curr_fun_args(races()) -> core_args(). + +get_curr_fun_args(#races{curr_fun_args = CurrFunArgs}) -> + CurrFunArgs. + +-spec get_new_table(races()) -> table(). + +get_new_table(#races{new_table = Table}) -> + Table. + +-spec get_race_analysis(races()) -> boolean(). + +get_race_analysis(#races{race_analysis = RaceAnalysis}) -> + RaceAnalysis. + +-spec get_race_list(races()) -> code(). + +get_race_list(#races{race_list = RaceList}) -> + RaceList. + +-spec get_race_list_size(races()) -> non_neg_integer(). + +get_race_list_size(#races{race_list_size = RaceListSize}) -> + RaceListSize. + +-spec get_race_list_and_size(races()) -> {code(), non_neg_integer()}. + +get_race_list_and_size(#races{race_list = RaceList, + race_list_size = RaceListSize}) -> + {RaceList, RaceListSize}. + +-spec let_tag_new(var_to_map1(), var_to_map1()) -> #let_tag{}. + +let_tag_new(Var, Arg) -> + #let_tag{var = Var, arg = Arg}. + +-spec new() -> races(). + +new() -> #races{}. + +-spec put_curr_fun(dialyzer_callgraph:mfa_or_funlbl(), label(), races()) -> + races(). + +put_curr_fun(CurrFun, CurrFunLabel, Races) -> + Races#races{curr_fun = CurrFun, + curr_fun_label = CurrFunLabel, + curr_fun_args = empty}. + +-spec put_fun_args(core_args(), races()) -> races(). + +put_fun_args(Args, #races{curr_fun_args = CurrFunArgs} = Races) -> + case CurrFunArgs of + empty -> Races#races{curr_fun_args = Args}; + _Other -> Races + end. + +-spec put_race_analysis(boolean(), races()) -> + races(). + +put_race_analysis(Analysis, Races) -> + Races#races{race_analysis = Analysis}. + +-spec put_race_list(code(), non_neg_integer(), races()) -> + races(). + +put_race_list(RaceList, RaceListSize, Races) -> + Races#races{race_list = RaceList, race_list_size = RaceListSize}. diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/recrec/erl_types.erl b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/erl_types.erl new file mode 100644 index 0000000000..7826dada9d --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/recrec/erl_types.erl @@ -0,0 +1,5741 @@ +%% -*- erlang-indent-level: 2 -*- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2003-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +%% ====================================================================== +%% Copyright (C) 2000-2003 Richard Carlsson +%% +%% ====================================================================== +%% Provides a representation of Erlang types. +%% +%% The initial author of this file is Richard Carlsson (2000-2004). +%% In July 2006, the type representation was totally re-designed by +%% Tobias Lindahl. This is the representation which is used currently. +%% In late 2008, Manouk Manoukian and Kostis Sagonas added support for +%% opaque types to the structure-based representation of types. +%% During February and March 2009, Kostis Sagonas significantly +%% cleaned up the type representation and added spec declarations. +%% +%% ====================================================================== + +-module(erl_types). + +-export([any_none/1, + any_none_or_unit/1, + lookup_record/3, + max/2, + min/2, + number_max/1, number_max/2, + number_min/1, number_min/2, + t_abstract_records/2, + t_any/0, + t_arity/0, + t_atom/0, + t_atom/1, + t_atoms/1, + t_atom_vals/1, t_atom_vals/2, + t_binary/0, + t_bitstr/0, + t_bitstr/2, + t_bitstr_base/1, + t_bitstr_concat/1, + t_bitstr_concat/2, + t_bitstr_match/2, + t_bitstr_unit/1, + t_bitstrlist/0, + t_boolean/0, + t_byte/0, + t_char/0, + t_collect_vars/1, + t_cons/0, + t_cons/2, + t_cons_hd/1, t_cons_hd/2, + t_cons_tl/1, t_cons_tl/2, + t_contains_opaque/1, t_contains_opaque/2, + t_decorate_with_opaque/3, + t_elements/1, + t_find_opaque_mismatch/3, + t_find_unknown_opaque/3, + t_fixnum/0, + t_map/2, + t_non_neg_fixnum/0, + t_pos_fixnum/0, + t_float/0, + t_var_names/1, + t_form_to_string/1, + t_from_form/6, + t_from_form_without_remote/3, + t_check_record_fields/6, + t_from_range/2, + t_from_range_unsafe/2, + t_from_term/1, + t_fun/0, + t_fun/1, + t_fun/2, + t_fun_args/1, t_fun_args/2, + t_fun_arity/1, t_fun_arity/2, + t_fun_range/1, t_fun_range/2, + t_has_opaque_subtype/2, + t_has_var/1, + t_identifier/0, + %% t_improper_list/2, + t_inf/1, + t_inf/2, + t_inf/3, + t_inf_lists/2, + t_inf_lists/3, + t_integer/0, + t_integer/1, + t_non_neg_integer/0, + t_pos_integer/0, + t_integers/1, + t_iodata/0, + t_iolist/0, + t_is_any/1, + t_is_atom/1, t_is_atom/2, + t_is_any_atom/2, t_is_any_atom/3, + t_is_binary/1, t_is_binary/2, + t_is_bitstr/1, t_is_bitstr/2, + t_is_bitwidth/1, + t_is_boolean/1, t_is_boolean/2, + %% t_is_byte/1, + %% t_is_char/1, + t_is_cons/1, t_is_cons/2, + t_is_equal/2, + t_is_fixnum/1, + t_is_float/1, t_is_float/2, + t_is_fun/1, t_is_fun/2, + t_is_instance/2, + t_is_integer/1, t_is_integer/2, + t_is_list/1, + t_is_map/1, + t_is_map/2, + t_is_matchstate/1, + t_is_nil/1, t_is_nil/2, + t_is_non_neg_integer/1, + t_is_none/1, + t_is_none_or_unit/1, + t_is_number/1, t_is_number/2, + t_is_opaque/1, t_is_opaque/2, + t_is_pid/1, t_is_pid/2, + t_is_port/1, t_is_port/2, + t_is_maybe_improper_list/1, t_is_maybe_improper_list/2, + t_is_reference/1, t_is_reference/2, + t_is_singleton/1, + t_is_singleton/2, + t_is_string/1, + t_is_subtype/2, + t_is_tuple/1, t_is_tuple/2, + t_is_unit/1, + t_is_var/1, + t_limit/2, + t_list/0, + t_list/1, + t_list_elements/1, t_list_elements/2, + t_list_termination/1, t_list_termination/2, + t_map/0, + t_map/1, + t_map/3, + t_map_entries/2, t_map_entries/1, + t_map_def_key/2, t_map_def_key/1, + t_map_def_val/2, t_map_def_val/1, + t_map_get/2, t_map_get/3, + t_map_is_key/2, t_map_is_key/3, + t_map_update/2, t_map_update/3, + t_map_put/2, t_map_put/3, + t_matchstate/0, + t_matchstate/2, + t_matchstate_present/1, + t_matchstate_slot/2, + t_matchstate_slots/1, + t_matchstate_update_present/2, + t_matchstate_update_slot/3, + t_mfa/0, + t_module/0, + t_nil/0, + t_node/0, + t_none/0, + t_nonempty_list/0, + t_nonempty_list/1, + t_nonempty_string/0, + t_number/0, + t_number/1, + t_number_vals/1, t_number_vals/2, + t_opaque_from_records/1, + t_opaque_structure/1, + t_pid/0, + t_port/0, + t_maybe_improper_list/0, + %% t_maybe_improper_list/2, + t_product/1, + t_reference/0, + t_singleton_to_term/2, + t_string/0, + t_struct_from_opaque/2, + t_subst/2, + t_subtract/2, + t_subtract_list/2, + t_sup/1, + t_sup/2, + t_timeout/0, + t_to_string/1, + t_to_string/2, + t_to_tlist/1, + t_tuple/0, + t_tuple/1, + t_tuple_args/1, t_tuple_args/2, + t_tuple_size/1, t_tuple_size/2, + t_tuple_sizes/1, + t_tuple_subtypes/1, + t_tuple_subtypes/2, + t_unify/2, + t_unit/0, + t_unopaque/1, t_unopaque/2, + t_var/1, + t_var_name/1, + %% t_assign_variables_to_subtype/2, + type_is_defined/4, + record_field_diffs_to_string/2, + subst_all_vars_to_any/1, + lift_list_to_pos_empty/1, lift_list_to_pos_empty/2, + is_opaque_type/2, + is_erl_type/1, + atom_to_string/1, + var_table__new/0, + cache__new/0, + map_pairwise_merge/3 + ]). + +%%-define(DO_ERL_TYPES_TEST, true). +-compile({no_auto_import,[min/2,max/2]}). + +-ifdef(DO_ERL_TYPES_TEST). +-export([test/0]). +-else. +-define(NO_UNUSED, true). +-endif. + +-ifndef(NO_UNUSED). +-export([t_is_identifier/1]). +-endif. + +-export_type([erl_type/0, opaques/0, type_table/0, var_table/0, cache/0]). + +%%-define(DEBUG, true). + +-ifdef(DEBUG). +-define(debug(__A), __A). +-else. +-define(debug(__A), ok). +-endif. + +%%============================================================================= +%% +%% Definition of the type structure +%% +%%============================================================================= + +%%----------------------------------------------------------------------------- +%% Limits +%% + +-define(REC_TYPE_LIMIT, 2). +-define(EXPAND_DEPTH, 16). +-define(EXPAND_LIMIT, 10000). + +-define(TUPLE_TAG_LIMIT, 5). +-define(TUPLE_ARITY_LIMIT, 8). +-define(SET_LIMIT, 13). +-define(MAX_BYTE, 255). +-define(MAX_CHAR, 16#10ffff). + +-define(UNIT_MULTIPLIER, 8). + +-define(TAG_IMMED1_SIZE, 4). +-define(BITS, (erlang:system_info(wordsize) * 8) - ?TAG_IMMED1_SIZE). + +-define(MAX_TUPLE_SIZE, (1 bsl 10)). + +%%----------------------------------------------------------------------------- +%% Type tags and qualifiers +%% + +-define(atom_tag, atom). +-define(binary_tag, binary). +-define(function_tag, function). +-define(identifier_tag, identifier). +-define(list_tag, list). +-define(map_tag, map). +-define(matchstate_tag, matchstate). +-define(nil_tag, nil). +-define(number_tag, number). +-define(opaque_tag, opaque). +-define(product_tag, product). +-define(tuple_set_tag, tuple_set). +-define(tuple_tag, tuple). +-define(union_tag, union). +-define(var_tag, var). + +-type tag() :: ?atom_tag | ?binary_tag | ?function_tag | ?identifier_tag + | ?list_tag | ?map_tag | ?matchstate_tag | ?nil_tag | ?number_tag + | ?opaque_tag | ?product_tag + | ?tuple_tag | ?tuple_set_tag | ?union_tag | ?var_tag. + +-define(float_qual, float). +-define(integer_qual, integer). +-define(nonempty_qual, nonempty). +-define(pid_qual, pid). +-define(port_qual, port). +-define(reference_qual, reference). +-define(unknown_qual, unknown). + +-type qual() :: ?float_qual | ?integer_qual | ?nonempty_qual | ?pid_qual + | ?port_qual | ?reference_qual | ?unknown_qual | {_, _}. + +%%----------------------------------------------------------------------------- +%% The type representation +%% + +-define(any, any). +-define(none, none). +-define(unit, unit). +%% Generic constructor - elements can be many things depending on the tag. +-record(c, {tag :: tag(), + elements = [] :: term(), + qualifier = ?unknown_qual :: qual()}). + +-opaque erl_type() :: ?any | ?none | ?unit | #c{}. + +%%----------------------------------------------------------------------------- +%% Auxiliary types and convenient macros +%% + +-type parse_form() :: erl_parse:abstract_type(). +-type rng_elem() :: 'pos_inf' | 'neg_inf' | integer(). + +-record(int_set, {set :: [integer()]}). +-record(int_rng, {from :: rng_elem(), to :: rng_elem()}). +%% Note: the definition of #opaque{} was changed to 'mod' and 'name'; +%% it used to be an ordsets of {Mod, Name} pairs. The Dialyzer version +%% was updated to 2.7 due to this change. +-record(opaque, {mod :: module(), name :: atom(), + args = [] :: [erl_type()], struct :: erl_type()}). + +-define(atom(Set), #c{tag=?atom_tag, elements=Set}). +-define(bitstr(Unit, Base), #c{tag=?binary_tag, elements=[Unit,Base]}). +-define(float, ?number(?any, ?float_qual)). +-define(function(Domain, Range), #c{tag=?function_tag, + elements=[Domain, Range]}). +-define(identifier(Types), #c{tag=?identifier_tag, elements=Types}). +-define(integer(Types), ?number(Types, ?integer_qual)). +-define(int_range(From, To), ?integer(#int_rng{from=From, to=To})). +-define(int_set(Set), ?integer(#int_set{set=Set})). +-define(list(Types, Term, Size), #c{tag=?list_tag, elements=[Types,Term], + qualifier=Size}). +-define(nil, #c{tag=?nil_tag}). +-define(nonempty_list(Types, Term),?list(Types, Term, ?nonempty_qual)). +-define(number(Set, Qualifier), #c{tag=?number_tag, elements=Set, + qualifier=Qualifier}). +-define(map(Pairs,DefKey,DefVal), + #c{tag=?map_tag, elements={Pairs,DefKey,DefVal}}). +-define(opaque(Optypes), #c{tag=?opaque_tag, elements=Optypes}). +-define(product(Types), #c{tag=?product_tag, elements=Types}). +-define(tuple(Types, Arity, Qual), #c{tag=?tuple_tag, elements=Types, + qualifier={Arity, Qual}}). +-define(tuple_set(Tuples), #c{tag=?tuple_set_tag, elements=Tuples}). +-define(var(Id), #c{tag=?var_tag, elements=Id}). + +-define(matchstate(P, Slots), #c{tag=?matchstate_tag, elements=[P,Slots]}). +-define(any_matchstate, ?matchstate(t_bitstr(), ?any)). + +-define(byte, ?int_range(0, ?MAX_BYTE)). +-define(char, ?int_range(0, ?MAX_CHAR)). +-define(integer_pos, ?int_range(1, pos_inf)). +-define(integer_non_neg, ?int_range(0, pos_inf)). +-define(integer_neg, ?int_range(neg_inf, -1)). + +-type opaques() :: [erl_type()] | 'universe'. + +-type record_key() :: {'record', atom()}. +-type type_key() :: {'type' | 'opaque', mfa()}. +-type record_value() :: [{atom(), erl_parse:abstract_expr(), erl_type()}]. +-type type_value() :: {{module(), {file:name(), erl_anno:line()}, + erl_parse:abstract_type(), ArgNames :: [atom()]}, + erl_type()}. +-type type_table() :: dict:dict(record_key() | type_key(), + record_value() | type_value()). + +-opaque var_table() :: #{atom() => erl_type()}. + +%%----------------------------------------------------------------------------- +%% Unions +%% + +-define(union(List), #c{tag=?union_tag, elements=[_,_,_,_,_,_,_,_,_,_]=List}). + +-define(atom_union(T), ?union([T,?none,?none,?none,?none,?none,?none,?none,?none,?none])). +-define(bitstr_union(T), ?union([?none,T,?none,?none,?none,?none,?none,?none,?none,?none])). +-define(function_union(T), ?union([?none,?none,T,?none,?none,?none,?none,?none,?none,?none])). +-define(identifier_union(T), ?union([?none,?none,?none,T,?none,?none,?none,?none,?none,?none])). +-define(list_union(T), ?union([?none,?none,?none,?none,T,?none,?none,?none,?none,?none])). +-define(number_union(T), ?union([?none,?none,?none,?none,?none,T,?none,?none,?none,?none])). +-define(tuple_union(T), ?union([?none,?none,?none,?none,?none,?none,T,?none,?none,?none])). +-define(matchstate_union(T), ?union([?none,?none,?none,?none,?none,?none,?none,T,?none,?none])). +-define(opaque_union(T), ?union([?none,?none,?none,?none,?none,?none,?none,?none,T,?none])). +-define(map_union(T), ?union([?none,?none,?none,?none,?none,?none,?none,?none,?none,T])). +-define(integer_union(T), ?number_union(T)). +-define(float_union(T), ?number_union(T)). +-define(nil_union(T), ?list_union(T)). + + +%%============================================================================= +%% +%% Primitive operations such as type construction and type tests +%% +%%============================================================================= + +%%----------------------------------------------------------------------------- +%% Top and bottom +%% + +-spec t_any() -> erl_type(). + +t_any() -> + ?any. + +-spec t_is_any(erl_type()) -> boolean(). + +t_is_any(Type) -> + do_opaque(Type, 'universe', fun is_any/1). + +is_any(?any) -> true; +is_any(_) -> false. + +-spec t_none() -> erl_type(). + +t_none() -> + ?none. + +-spec t_is_none(erl_type()) -> boolean(). + +t_is_none(?none) -> true; +t_is_none(_) -> false. + +%%----------------------------------------------------------------------------- +%% Opaque types +%% + +-spec t_opaque(module(), atom(), [_], erl_type()) -> erl_type(). + +t_opaque(Mod, Name, Args, Struct) -> + O = #opaque{mod = Mod, name = Name, args = Args, struct = Struct}, + ?opaque(set_singleton(O)). + +-spec t_is_opaque(erl_type(), [erl_type()]) -> boolean(). + +t_is_opaque(?opaque(_) = Type, Opaques) -> + not is_opaque_type(Type, Opaques); +t_is_opaque(_Type, _Opaques) -> false. + +-spec t_is_opaque(erl_type()) -> boolean(). + +t_is_opaque(?opaque(_)) -> true; +t_is_opaque(_) -> false. + +-spec t_has_opaque_subtype(erl_type(), opaques()) -> boolean(). + +t_has_opaque_subtype(Type, Opaques) -> + do_opaque(Type, Opaques, fun has_opaque_subtype/1). + +has_opaque_subtype(?union(Ts)) -> + lists:any(fun t_is_opaque/1, Ts); +has_opaque_subtype(T) -> + t_is_opaque(T). + +-spec t_opaque_structure(erl_type()) -> erl_type(). + +t_opaque_structure(?opaque(Elements)) -> + t_sup([Struct || #opaque{struct = Struct} <- ordsets:to_list(Elements)]). + +-spec t_contains_opaque(erl_type()) -> boolean(). + +t_contains_opaque(Type) -> + t_contains_opaque(Type, []). + +%% Returns 'true' iff there is an opaque type that is *not* one of +%% the types of the second argument. + +-spec t_contains_opaque(erl_type(), [erl_type()]) -> boolean(). + +t_contains_opaque(?any, _Opaques) -> false; +t_contains_opaque(?none, _Opaques) -> false; +t_contains_opaque(?unit, _Opaques) -> false; +t_contains_opaque(?atom(_Set), _Opaques) -> false; +t_contains_opaque(?bitstr(_Unit, _Base), _Opaques) -> false; +t_contains_opaque(?float, _Opaques) -> false; +t_contains_opaque(?function(Domain, Range), Opaques) -> + t_contains_opaque(Domain, Opaques) + orelse t_contains_opaque(Range, Opaques); +t_contains_opaque(?identifier(_Types), _Opaques) -> false; +t_contains_opaque(?integer(_Types), _Opaques) -> false; +t_contains_opaque(?int_range(_From, _To), _Opaques) -> false; +t_contains_opaque(?int_set(_Set), _Opaques) -> false; +t_contains_opaque(?list(Type, Tail, _), Opaques) -> + t_contains_opaque(Type, Opaques) orelse t_contains_opaque(Tail, Opaques); +t_contains_opaque(?map(_, _, _) = Map, Opaques) -> + list_contains_opaque(map_all_types(Map), Opaques); +t_contains_opaque(?matchstate(_P, _Slots), _Opaques) -> false; +t_contains_opaque(?nil, _Opaques) -> false; +t_contains_opaque(?number(_Set, _Tag), _Opaques) -> false; +t_contains_opaque(?opaque(_)=T, Opaques) -> + not is_opaque_type(T, Opaques) + orelse t_contains_opaque(t_opaque_structure(T)); +t_contains_opaque(?product(Types), Opaques) -> + list_contains_opaque(Types, Opaques); +t_contains_opaque(?tuple(?any, _, _), _Opaques) -> false; +t_contains_opaque(?tuple(Types, _, _), Opaques) -> + list_contains_opaque(Types, Opaques); +t_contains_opaque(?tuple_set(_Set) = T, Opaques) -> + list_contains_opaque(t_tuple_subtypes(T), Opaques); +t_contains_opaque(?union(List), Opaques) -> + list_contains_opaque(List, Opaques); +t_contains_opaque(?var(_Id), _Opaques) -> false. + +-spec list_contains_opaque([erl_type()], [erl_type()]) -> boolean(). + +list_contains_opaque(List, Opaques) -> + lists:any(fun(E) -> t_contains_opaque(E, Opaques) end, List). + +%% t_find_opaque_mismatch/2 of two types should only be used if their +%% t_inf is t_none() due to some opaque type violation. +%% +%% The first argument of the function is the pattern and its second +%% argument the type we are matching against the pattern. + +-spec t_find_opaque_mismatch(erl_type(), erl_type(), [erl_type()]) -> + 'error' | {'ok', erl_type(), erl_type()}. + +t_find_opaque_mismatch(T1, T2, Opaques) -> + t_find_opaque_mismatch(T1, T2, T2, Opaques). + +t_find_opaque_mismatch(?any, _Type, _TopType, _Opaques) -> error; +t_find_opaque_mismatch(?none, _Type, _TopType, _Opaques) -> error; +t_find_opaque_mismatch(?list(T1, Tl1, _), ?list(T2, Tl2, _), TopType, Opaques) -> + t_find_opaque_mismatch_ordlists([T1, Tl1], [T2, Tl2], TopType, Opaques); +t_find_opaque_mismatch(T1, ?opaque(_) = T2, TopType, Opaques) -> + case is_opaque_type(T2, Opaques) of + false -> {ok, TopType, T2}; + true -> + t_find_opaque_mismatch(T1, t_opaque_structure(T2), TopType, Opaques) + end; +t_find_opaque_mismatch(?opaque(_) = T1, T2, TopType, Opaques) -> + %% The generated message is somewhat misleading: + case is_opaque_type(T1, Opaques) of + false -> {ok, TopType, T1}; + true -> + t_find_opaque_mismatch(t_opaque_structure(T1), T2, TopType, Opaques) + end; +t_find_opaque_mismatch(?product(T1), ?product(T2), TopType, Opaques) -> + t_find_opaque_mismatch_ordlists(T1, T2, TopType, Opaques); +t_find_opaque_mismatch(?tuple(T1, Arity, _), ?tuple(T2, Arity, _), + TopType, Opaques) -> + t_find_opaque_mismatch_ordlists(T1, T2, TopType, Opaques); +t_find_opaque_mismatch(?tuple(_, _, _) = T1, ?tuple_set(_) = T2, + TopType, Opaques) -> + Tuples1 = t_tuple_subtypes(T1), + Tuples2 = t_tuple_subtypes(T2), + t_find_opaque_mismatch_lists(Tuples1, Tuples2, TopType, Opaques); +t_find_opaque_mismatch(T1, ?union(U2), TopType, Opaques) -> + t_find_opaque_mismatch_lists([T1], U2, TopType, Opaques); +t_find_opaque_mismatch(_T1, _T2, _TopType, _Opaques) -> error. + +t_find_opaque_mismatch_ordlists(L1, L2, TopType, Opaques) -> + List = lists:zipwith(fun(T1, T2) -> + t_find_opaque_mismatch(T1, T2, TopType, Opaques) + end, L1, L2), + t_find_opaque_mismatch_list(List). + +t_find_opaque_mismatch_lists(L1, L2, _TopType, Opaques) -> + List = [t_find_opaque_mismatch(T1, T2, T2, Opaques) || T1 <- L1, T2 <- L2], + t_find_opaque_mismatch_list(List). + +t_find_opaque_mismatch_list([]) -> error; +t_find_opaque_mismatch_list([H|T]) -> + case H of + {ok, _T1, _T2} -> H; + error -> t_find_opaque_mismatch_list(T) + end. + +-spec t_find_unknown_opaque(erl_type(), erl_type(), opaques()) -> + [pos_integer()]. + +%% The nice thing about using two types and t_inf() as compared to +%% calling t_contains_opaque/2 is that the traversal stops when +%% there is a mismatch which means that unknown opaque types "below" +%% the mismatch are not found. +t_find_unknown_opaque(_T1, _T2, 'universe') -> []; +t_find_unknown_opaque(T1, T2, Opaques) -> + try t_inf(T1, T2, {match, Opaques}) of + _ -> [] + catch throw:{pos, Ns} -> Ns + end. + +-spec t_decorate_with_opaque(erl_type(), erl_type(), [erl_type()]) -> erl_type(). + +%% The first argument can contain opaque types. The second argument +%% is assumed to be taken from the contract. + +t_decorate_with_opaque(T1, T2, Opaques) -> + case t_is_equal(T1, T2) orelse not t_contains_opaque(T2) of + true -> T1; + false -> + T = t_inf(T1, T2), + case t_contains_opaque(T) of + false -> T1; + true -> + R = decorate(T1, T, Opaques), + ?debug(case catch t_is_equal(t_unopaque(R), t_unopaque(T1)) of + true -> ok; + false -> + io:format("T1 = ~p,\n", [T1]), + io:format("T2 = ~p,\n", [T2]), + io:format("O = ~p,\n", [Opaques]), + io:format("erl_types:t_decorate_with_opaque(T1,T2,O).\n"), + throw({error, "Failed to handle opaque types"}) + end), + R + end + end. + +decorate(Type, ?none, _Opaques) -> Type; +decorate(?function(Domain, Range), ?function(D, R), Opaques) -> + ?function(decorate(Domain, D, Opaques), decorate(Range, R, Opaques)); +decorate(?list(Types, Tail, Size), ?list(Ts, Tl, _Sz), Opaques) -> + ?list(decorate(Types, Ts, Opaques), decorate(Tail, Tl, Opaques), Size); +decorate(?product(Types), ?product(Ts), Opaques) -> + ?product(list_decorate(Types, Ts, Opaques)); +decorate(?tuple(_, _, _)=T, ?tuple(?any, _, _), _Opaques) -> T; +decorate(?tuple(?any, _, _)=T, ?tuple(_, _, _), _Opaques) -> T; +decorate(?tuple(Types, Arity, Tag), ?tuple(Ts, Arity, _), Opaques) -> + ?tuple(list_decorate(Types, Ts, Opaques), Arity, Tag); +decorate(?tuple_set(List), ?tuple(_, Arity, _) = T, Opaques) -> + decorate_tuple_sets(List, [{Arity, [T]}], Opaques); +decorate(?tuple_set(List), ?tuple_set(L), Opaques) -> + decorate_tuple_sets(List, L, Opaques); +decorate(?union(List), T, Opaques) when T =/= ?any -> + ?union(L) = force_union(T), + union_decorate(List, L, Opaques); +decorate(?opaque(_)=T, _, _Opaques) -> T; +decorate(T, ?union(L), Opaques) when T =/= ?any -> + ?union(List) = force_union(T), + union_decorate(List, L, Opaques); +decorate(Type, ?opaque(_)=T, Opaques) -> + decorate_with_opaque(Type, T, Opaques); +decorate(Type, _T, _Opaques) -> Type. + +%% Note: it is important that #opaque.struct is a subtype of the +%% opaque type. +decorate_with_opaque(Type, ?opaque(Set2), Opaques) -> + case decoration(set_to_list(Set2), Type, Opaques, [], false) of + {[], false} -> Type; + {List, All} when List =/= [] -> + NewType = ?opaque(ordsets:from_list(List)), + case All of + true -> NewType; + false -> t_sup(NewType, Type) + end + end. + +decoration([#opaque{struct = S} = Opaque|OpaqueTypes], Type, Opaques, + NewOpaqueTypes0, All) -> + IsOpaque = is_opaque_type2(Opaque, Opaques), + I = t_inf(Type, S), + case not IsOpaque orelse t_is_none(I) of + true -> decoration(OpaqueTypes, Type, Opaques, NewOpaqueTypes0, All); + false -> + NewOpaque = Opaque#opaque{struct = decorate(I, S, Opaques)}, + NewAll = All orelse t_is_equal(I, Type), + NewOpaqueTypes = [NewOpaque|NewOpaqueTypes0], + decoration(OpaqueTypes, Type, Opaques, NewOpaqueTypes, NewAll) + end; +decoration([], _Type, _Opaques, NewOpaqueTypes, All) -> + {NewOpaqueTypes, All}. + +-spec list_decorate([erl_type()], [erl_type()], opaques()) -> [erl_type()]. + +list_decorate(List, L, Opaques) -> + [decorate(Elem, E, Opaques) || {Elem, E} <- lists:zip(List, L)]. + +union_decorate(U1, U2, Opaques) -> + Union = union_decorate(U1, U2, Opaques, 0, []), + [A,B,F,I,L,N,T,M,_,Map] = U1, + [_,_,_,_,_,_,_,_,Opaque,_] = U2, + List = [A,B,F,I,L,N,T,M,Map], + DecList = [Dec || + E <- List, + not t_is_none(E), + not t_is_none(Dec = decorate(E, Opaque, Opaques))], + t_sup([Union|DecList]). + +union_decorate([?none|Left1], [_|Left2], Opaques, N, Acc) -> + union_decorate(Left1, Left2, Opaques, N, [?none|Acc]); +union_decorate([T1|Left1], [?none|Left2], Opaques, N, Acc) -> + union_decorate(Left1, Left2, Opaques, N+1, [T1|Acc]); +union_decorate([T1|Left1], [T2|Left2], Opaques, N, Acc) -> + union_decorate(Left1, Left2, Opaques, N+1, [decorate(T1, T2, Opaques)|Acc]); +union_decorate([], [], _Opaques, N, Acc) -> + if N =:= 0 -> ?none; + N =:= 1 -> + [Type] = [T || T <- Acc, T =/= ?none], + Type; + N >= 2 -> ?union(lists:reverse(Acc)) + end. + +decorate_tuple_sets(List, L, Opaques) -> + decorate_tuple_sets(List, L, Opaques, []). + +decorate_tuple_sets([{Arity, Tuples}|List], [{Arity, Ts}|L], Opaques, Acc) -> + DecTs = decorate_tuples_in_sets(Tuples, Ts, Opaques), + decorate_tuple_sets(List, L, Opaques, [{Arity, DecTs}|Acc]); +decorate_tuple_sets([ArTup|List], L, Opaques, Acc) -> + decorate_tuple_sets(List, L, Opaques, [ArTup|Acc]); +decorate_tuple_sets([], _L, _Opaques, Acc) -> + ?tuple_set(lists:reverse(Acc)). + +decorate_tuples_in_sets([?tuple(Elements, _, ?any)], Ts, Opaques) -> + NewList = [list_decorate(Elements, Es, Opaques) || ?tuple(Es, _, _) <- Ts], + case t_sup([t_tuple(Es) || Es <- NewList]) of + ?tuple_set([{_Arity, Tuples}]) -> Tuples; + ?tuple(_, _, _)=Tuple -> [Tuple] + end; +decorate_tuples_in_sets(Tuples, Ts, Opaques) -> + decorate_tuples_in_sets(Tuples, Ts, Opaques, []). + +decorate_tuples_in_sets([?tuple(Elements, Arity, Tag1) = T1|Tuples] = L1, + [?tuple(Es, Arity, Tag2)|Ts] = L2, Opaques, Acc) -> + if + Tag1 < Tag2 -> decorate_tuples_in_sets(Tuples, L2, Opaques, [T1|Acc]); + Tag1 > Tag2 -> decorate_tuples_in_sets(L1, Ts, Opaques, Acc); + Tag1 =:= Tag2 -> + NewElements = list_decorate(Elements, Es, Opaques), + NewAcc = [?tuple(NewElements, Arity, Tag1)|Acc], + decorate_tuples_in_sets(Tuples, Ts, Opaques, NewAcc) + end; +decorate_tuples_in_sets([T1|Tuples], L2, Opaques, Acc) -> + decorate_tuples_in_sets(Tuples, L2, Opaques, [T1|Acc]); +decorate_tuples_in_sets([], _L, _Opaques, Acc) -> + lists:reverse(Acc). + +-spec t_opaque_from_records(type_table()) -> [erl_type()]. + +t_opaque_from_records(RecDict) -> + OpaqueRecDict = + dict:filter(fun(Key, _Value) -> + case Key of + {opaque, _Name, _Arity} -> true; + _ -> false + end + end, RecDict), + OpaqueTypeDict = + dict:map(fun({opaque, Name, _Arity}, + {{Module, _FileLine, _Form, ArgNames}, _Type}) -> + %% Args = args_to_types(ArgNames), + %% List = lists:zip(ArgNames, Args), + %% TmpVarTab = maps:to_list(List), + %% Rep = t_from_form(Type, RecDict, TmpVarTab), + Rep = t_any(), % not used for anything right now + Args = [t_any() || _ <- ArgNames], + t_opaque(Module, Name, Args, Rep) + end, OpaqueRecDict), + [OpaqueType || {_Key, OpaqueType} <- dict:to_list(OpaqueTypeDict)]. + +%% Decompose opaque instances of type arg2 to structured types, in arg1 +%% XXX: Same as t_unopaque +-spec t_struct_from_opaque(erl_type(), [erl_type()]) -> erl_type(). + +t_struct_from_opaque(?function(Domain, Range), Opaques) -> + ?function(t_struct_from_opaque(Domain, Opaques), + t_struct_from_opaque(Range, Opaques)); +t_struct_from_opaque(?list(Types, Term, Size), Opaques) -> + ?list(t_struct_from_opaque(Types, Opaques), + t_struct_from_opaque(Term, Opaques), Size); +t_struct_from_opaque(?opaque(_) = T, Opaques) -> + case is_opaque_type(T, Opaques) of + true -> t_opaque_structure(T); + false -> T + end; +t_struct_from_opaque(?product(Types), Opaques) -> + ?product(list_struct_from_opaque(Types, Opaques)); +t_struct_from_opaque(?tuple(?any, _, _) = T, _Opaques) -> T; +t_struct_from_opaque(?tuple(Types, Arity, Tag), Opaques) -> + ?tuple(list_struct_from_opaque(Types, Opaques), Arity, Tag); +t_struct_from_opaque(?tuple_set(Set), Opaques) -> + NewSet = [{Sz, [t_struct_from_opaque(T, Opaques) || T <- Tuples]} + || {Sz, Tuples} <- Set], + ?tuple_set(NewSet); +t_struct_from_opaque(?union(List), Opaques) -> + t_sup(list_struct_from_opaque(List, Opaques)); +t_struct_from_opaque(Type, _Opaques) -> Type. + +list_struct_from_opaque(Types, Opaques) -> + [t_struct_from_opaque(Type, Opaques) || Type <- Types]. + +%%----------------------------------------------------------------------------- + +-type mod_records() :: dict:dict(module(), type_table()). + +%%----------------------------------------------------------------------------- +%% Unit type. Signals non termination. +%% + +-spec t_unit() -> erl_type(). + +t_unit() -> + ?unit. + +-spec t_is_unit(erl_type()) -> boolean(). + +t_is_unit(?unit) -> true; +t_is_unit(_) -> false. + +-spec t_is_none_or_unit(erl_type()) -> boolean(). + +t_is_none_or_unit(?none) -> true; +t_is_none_or_unit(?unit) -> true; +t_is_none_or_unit(_) -> false. + +%%----------------------------------------------------------------------------- +%% Atoms and the derived type boolean +%% + +-spec t_atom() -> erl_type(). + +t_atom() -> + ?atom(?any). + +-spec t_atom(atom()) -> erl_type(). + +t_atom(A) when is_atom(A) -> + ?atom(set_singleton(A)). + +-spec t_atoms([atom()]) -> erl_type(). + +t_atoms(List) when is_list(List) -> + t_sup([t_atom(A) || A <- List]). + +-spec t_atom_vals(erl_type()) -> 'unknown' | [atom(),...]. + +t_atom_vals(Type) -> + t_atom_vals(Type, 'universe'). + +-spec t_atom_vals(erl_type(), opaques()) -> 'unknown' | [atom(),...]. + +t_atom_vals(Type, Opaques) -> + do_opaque(Type, Opaques, fun atom_vals/1). + +atom_vals(?atom(?any)) -> unknown; +atom_vals(?atom(Set)) -> set_to_list(Set); +atom_vals(?opaque(_)) -> unknown; +atom_vals(Other) -> + ?atom(_) = Atm = t_inf(t_atom(), Other), + atom_vals(Atm). + +-spec t_is_atom(erl_type()) -> boolean(). + +t_is_atom(Type) -> + t_is_atom(Type, 'universe'). + +-spec t_is_atom(erl_type(), opaques()) -> boolean(). + +t_is_atom(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_atom1/1). + +is_atom1(?atom(_)) -> true; +is_atom1(_) -> false. + +-spec t_is_any_atom(atom(), erl_type()) -> boolean(). + +t_is_any_atom(Atom, SomeAtomsType) -> + t_is_any_atom(Atom, SomeAtomsType, 'universe'). + +-spec t_is_any_atom(atom(), erl_type(), opaques()) -> boolean(). + +t_is_any_atom(Atom, SomeAtomsType, Opaques) -> + do_opaque(SomeAtomsType, Opaques, + fun(AtomsType) -> is_any_atom(Atom, AtomsType) end). + +is_any_atom(Atom, ?atom(?any)) when is_atom(Atom) -> false; +is_any_atom(Atom, ?atom(Set)) when is_atom(Atom) -> + set_is_singleton(Atom, Set); +is_any_atom(Atom, _) when is_atom(Atom) -> false. + +%%------------------------------------ + +-spec t_is_boolean(erl_type()) -> boolean(). + +t_is_boolean(Type) -> + t_is_boolean(Type, 'universe'). + +-spec t_is_boolean(erl_type(), opaques()) -> boolean(). + +t_is_boolean(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_boolean/1). + +-spec t_boolean() -> erl_type(). + +t_boolean() -> + ?atom(set_from_list([false, true])). + +is_boolean(?atom(?any)) -> false; +is_boolean(?atom(Set)) -> + case set_size(Set) of + 1 -> set_is_element(true, Set) orelse set_is_element(false, Set); + 2 -> set_is_element(true, Set) andalso set_is_element(false, Set); + N when is_integer(N), N > 2 -> false + end; +is_boolean(_) -> false. + +%%----------------------------------------------------------------------------- +%% Binaries +%% + +-spec t_binary() -> erl_type(). + +t_binary() -> + ?bitstr(8, 0). + +-spec t_is_binary(erl_type()) -> boolean(). + +t_is_binary(Type) -> + t_is_binary(Type, 'universe'). + +-spec t_is_binary(erl_type(), opaques()) -> boolean(). + +t_is_binary(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_binary/1). + +is_binary(?bitstr(U, B)) -> + ((U rem 8) =:= 0) andalso ((B rem 8) =:= 0); +is_binary(_) -> false. + +%%----------------------------------------------------------------------------- +%% Bitstrings +%% + +-spec t_bitstr() -> erl_type(). + +t_bitstr() -> + ?bitstr(1, 0). + +-spec t_bitstr(non_neg_integer(), non_neg_integer()) -> erl_type(). + +t_bitstr(U, B) -> + NewB = + if + U =:= 0 -> B; + B >= (U * (?UNIT_MULTIPLIER + 1)) -> + (B rem U) + U * ?UNIT_MULTIPLIER; + true -> + B + end, + ?bitstr(U, NewB). + +-spec t_bitstr_unit(erl_type()) -> non_neg_integer(). + +t_bitstr_unit(?bitstr(U, _)) -> U. + +-spec t_bitstr_base(erl_type()) -> non_neg_integer(). + +t_bitstr_base(?bitstr(_, B)) -> B. + +-spec t_bitstr_concat([erl_type()]) -> erl_type(). + +t_bitstr_concat(List) -> + t_bitstr_concat_1(List, t_bitstr(0, 0)). + +t_bitstr_concat_1([T|Left], Acc) -> + t_bitstr_concat_1(Left, t_bitstr_concat(Acc, T)); +t_bitstr_concat_1([], Acc) -> + Acc. + +-spec t_bitstr_concat(erl_type(), erl_type()) -> erl_type(). + +t_bitstr_concat(T1, T2) -> + T1p = t_inf(t_bitstr(), T1), + T2p = t_inf(t_bitstr(), T2), + bitstr_concat(t_unopaque(T1p), t_unopaque(T2p)). + +-spec t_bitstr_match(erl_type(), erl_type()) -> erl_type(). + +t_bitstr_match(T1, T2) -> + T1p = t_inf(t_bitstr(), T1), + T2p = t_inf(t_bitstr(), T2), + bitstr_match(t_unopaque(T1p), t_unopaque(T2p)). + +-spec t_is_bitstr(erl_type()) -> boolean(). + +t_is_bitstr(Type) -> + t_is_bitstr(Type, 'universe'). + +-spec t_is_bitstr(erl_type(), opaques()) -> boolean(). + +t_is_bitstr(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_bitstr/1). + +is_bitstr(?bitstr(_, _)) -> true; +is_bitstr(_) -> false. + +%%----------------------------------------------------------------------------- +%% Matchstates +%% + +-spec t_matchstate() -> erl_type(). + +t_matchstate() -> + ?any_matchstate. + +-spec t_matchstate(erl_type(), non_neg_integer()) -> erl_type(). + +t_matchstate(Init, 0) -> + ?matchstate(Init, Init); +t_matchstate(Init, Max) when is_integer(Max) -> + Slots = [Init|[?none || _ <- lists:seq(1, Max)]], + ?matchstate(Init, t_product(Slots)). + +-spec t_is_matchstate(erl_type()) -> boolean(). + +t_is_matchstate(?matchstate(_, _)) -> true; +t_is_matchstate(_) -> false. + +-spec t_matchstate_present(erl_type()) -> erl_type(). + +t_matchstate_present(Type) -> + case t_inf(t_matchstate(), Type) of + ?matchstate(P, _) -> P; + _ -> ?none + end. + +-spec t_matchstate_slot(erl_type(), non_neg_integer()) -> erl_type(). + +t_matchstate_slot(Type, Slot) -> + RealSlot = Slot + 1, + case t_inf(t_matchstate(), Type) of + ?matchstate(_, ?any) -> ?any; + ?matchstate(_, ?product(Vals)) when length(Vals) >= RealSlot -> + lists:nth(RealSlot, Vals); + ?matchstate(_, ?product(_)) -> + ?none; + ?matchstate(_, SlotType) when RealSlot =:= 1 -> + SlotType; + _ -> + ?none + end. + +-spec t_matchstate_slots(erl_type()) -> erl_type(). + +t_matchstate_slots(?matchstate(_, Slots)) -> + Slots. + +-spec t_matchstate_update_present(erl_type(), erl_type()) -> erl_type(). + +t_matchstate_update_present(New, Type) -> + case t_inf(t_matchstate(), Type) of + ?matchstate(_, Slots) -> + ?matchstate(New, Slots); + _ -> ?none + end. + +-spec t_matchstate_update_slot(erl_type(), erl_type(), non_neg_integer()) -> erl_type(). + +t_matchstate_update_slot(New, Type, Slot) -> + RealSlot = Slot + 1, + case t_inf(t_matchstate(), Type) of + ?matchstate(Pres, Slots) -> + NewSlots = + case Slots of + ?any -> + ?any; + ?product(Vals) when length(Vals) >= RealSlot -> + NewTuple = setelement(RealSlot, list_to_tuple(Vals), New), + NewVals = tuple_to_list(NewTuple), + ?product(NewVals); + ?product(_) -> + ?none; + _ when RealSlot =:= 1 -> + New; + _ -> + ?none + end, + ?matchstate(Pres, NewSlots); + _ -> + ?none + end. + +%%----------------------------------------------------------------------------- +%% Functions +%% + +-spec t_fun() -> erl_type(). + +t_fun() -> + ?function(?any, ?any). + +-spec t_fun(erl_type()) -> erl_type(). + +t_fun(Range) -> + ?function(?any, Range). + +-spec t_fun([erl_type()] | arity(), erl_type()) -> erl_type(). + +t_fun(Domain, Range) when is_list(Domain) -> + ?function(?product(Domain), Range); +t_fun(Arity, Range) when is_integer(Arity), 0 =< Arity, Arity =< 255 -> + ?function(?product(lists:duplicate(Arity, ?any)), Range). + +-spec t_fun_args(erl_type()) -> 'unknown' | [erl_type()]. + +t_fun_args(Type) -> + t_fun_args(Type, 'universe'). + +-spec t_fun_args(erl_type(), opaques()) -> 'unknown' | [erl_type()]. + +t_fun_args(Type, Opaques) -> + do_opaque(Type, Opaques, fun fun_args/1). + +fun_args(?function(?any, _)) -> + unknown; +fun_args(?function(?product(Domain), _)) when is_list(Domain) -> + Domain. + +-spec t_fun_arity(erl_type()) -> 'unknown' | non_neg_integer(). + +t_fun_arity(Type) -> + t_fun_arity(Type, 'universe'). + +-spec t_fun_arity(erl_type(), opaques()) -> 'unknown' | non_neg_integer(). + +t_fun_arity(Type, Opaques) -> + do_opaque(Type, Opaques, fun fun_arity/1). + +fun_arity(?function(?any, _)) -> + unknown; +fun_arity(?function(?product(Domain), _)) -> + length(Domain). + +-spec t_fun_range(erl_type()) -> erl_type(). + +t_fun_range(Type) -> + t_fun_range(Type, 'universe'). + +-spec t_fun_range(erl_type(), opaques()) -> erl_type(). + +t_fun_range(Type, Opaques) -> + do_opaque(Type, Opaques, fun fun_range/1). + +fun_range(?function(_, Range)) -> + Range. + +-spec t_is_fun(erl_type()) -> boolean(). + +t_is_fun(Type) -> + t_is_fun(Type, 'universe'). + +-spec t_is_fun(erl_type(), opaques()) -> boolean(). + +t_is_fun(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_fun/1). + +is_fun(?function(_, _)) -> true; +is_fun(_) -> false. + +%%----------------------------------------------------------------------------- +%% Identifiers. Includes ports, pids and refs. +%% + +-spec t_identifier() -> erl_type(). + +t_identifier() -> + ?identifier(?any). + +-ifdef(DO_ERL_TYPES_TEST). +-spec t_is_identifier(erl_type()) -> erl_type(). + +t_is_identifier(?identifier(_)) -> true; +t_is_identifier(_) -> false. +-endif. + +%%------------------------------------ + +-spec t_port() -> erl_type(). + +t_port() -> + ?identifier(set_singleton(?port_qual)). + +-spec t_is_port(erl_type()) -> boolean(). + +t_is_port(Type) -> + t_is_port(Type, 'universe'). + +-spec t_is_port(erl_type(), opaques()) -> boolean(). + +t_is_port(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_port1/1). + +is_port1(?identifier(?any)) -> false; +is_port1(?identifier(Set)) -> set_is_singleton(?port_qual, Set); +is_port1(_) -> false. + +%%------------------------------------ + +-spec t_pid() -> erl_type(). + +t_pid() -> + ?identifier(set_singleton(?pid_qual)). + +-spec t_is_pid(erl_type()) -> boolean(). + +t_is_pid(Type) -> + t_is_pid(Type, 'universe'). + +-spec t_is_pid(erl_type(), opaques()) -> boolean(). + +t_is_pid(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_pid1/1). + +is_pid1(?identifier(?any)) -> false; +is_pid1(?identifier(Set)) -> set_is_singleton(?pid_qual, Set); +is_pid1(_) -> false. + +%%------------------------------------ + +-spec t_reference() -> erl_type(). + +t_reference() -> + ?identifier(set_singleton(?reference_qual)). + +-spec t_is_reference(erl_type()) -> boolean(). + +t_is_reference(Type) -> + t_is_reference(Type, 'universe'). + +-spec t_is_reference(erl_type(), opaques()) -> boolean(). + +t_is_reference(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_reference1/1). + +is_reference1(?identifier(?any)) -> false; +is_reference1(?identifier(Set)) -> set_is_singleton(?reference_qual, Set); +is_reference1(_) -> false. + +%%----------------------------------------------------------------------------- +%% Numbers are divided into floats, integers, chars and bytes. +%% + +-spec t_number() -> erl_type(). + +t_number() -> + ?number(?any, ?unknown_qual). + +-spec t_number(integer()) -> erl_type(). + +t_number(X) when is_integer(X) -> + t_integer(X). + +-spec t_is_number(erl_type()) -> boolean(). + +t_is_number(Type) -> + t_is_number(Type, 'universe'). + +-spec t_is_number(erl_type(), opaques()) -> boolean(). + +t_is_number(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_number/1). + +is_number(?number(_, _)) -> true; +is_number(_) -> false. + +%% Currently, the type system collapses all floats to ?float and does +%% not keep any information about their values. As a result, the list +%% that this function returns contains only integers. + +-spec t_number_vals(erl_type()) -> 'unknown' | [integer(),...]. + +t_number_vals(Type) -> + t_number_vals(Type, 'universe'). + +-spec t_number_vals(erl_type(), opaques()) -> 'unknown' | [integer(),...]. + +t_number_vals(Type, Opaques) -> + do_opaque(Type, Opaques, fun number_vals/1). + +number_vals(?int_set(Set)) -> set_to_list(Set); +number_vals(?number(_, _)) -> unknown; +number_vals(?opaque(_)) -> unknown; +number_vals(Other) -> + Inf = t_inf(Other, t_number()), + false = t_is_none(Inf), % sanity check + number_vals(Inf). + +%%------------------------------------ + +-spec t_float() -> erl_type(). + +t_float() -> + ?float. + +-spec t_is_float(erl_type()) -> boolean(). + +t_is_float(Type) -> + t_is_float(Type, 'universe'). + +-spec t_is_float(erl_type(), opaques()) -> boolean(). + +t_is_float(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_float1/1). + +is_float1(?float) -> true; +is_float1(_) -> false. + +%%------------------------------------ + +-spec t_integer() -> erl_type(). + +t_integer() -> + ?integer(?any). + +-spec t_integer(integer()) -> erl_type(). + +t_integer(I) when is_integer(I) -> + ?int_set(set_singleton(I)). + +-spec t_integers([integer()]) -> erl_type(). + +t_integers(List) when is_list(List) -> + t_sup([t_integer(I) || I <- List]). + +-spec t_is_integer(erl_type()) -> boolean(). + +t_is_integer(Type) -> + t_is_integer(Type, 'universe'). + +-spec t_is_integer(erl_type(), opaques()) -> boolean(). + +t_is_integer(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_integer1/1). + +is_integer1(?integer(_)) -> true; +is_integer1(_) -> false. + +%%------------------------------------ + +-spec t_byte() -> erl_type(). + +t_byte() -> + ?byte. + +-ifdef(DO_ERL_TYPES_TEST). +-spec t_is_byte(erl_type()) -> boolean(). + +t_is_byte(?int_range(neg_inf, _)) -> false; +t_is_byte(?int_range(_, pos_inf)) -> false; +t_is_byte(?int_range(From, To)) + when is_integer(From), From >= 0, is_integer(To), To =< ?MAX_BYTE -> true; +t_is_byte(?int_set(Set)) -> + (set_min(Set) >= 0) andalso (set_max(Set) =< ?MAX_BYTE); +t_is_byte(_) -> false. +-endif. + +%%------------------------------------ + +-spec t_char() -> erl_type(). + +t_char() -> + ?char. + +-spec t_is_char(erl_type()) -> boolean(). + +t_is_char(?int_range(neg_inf, _)) -> false; +t_is_char(?int_range(_, pos_inf)) -> false; +t_is_char(?int_range(From, To)) + when is_integer(From), From >= 0, is_integer(To), To =< ?MAX_CHAR -> true; +t_is_char(?int_set(Set)) -> + (set_min(Set) >= 0) andalso (set_max(Set) =< ?MAX_CHAR); +t_is_char(_) -> false. + +%%----------------------------------------------------------------------------- +%% Lists +%% + +-spec t_cons() -> erl_type(). + +t_cons() -> + ?nonempty_list(?any, ?any). + +%% Note that if the tail argument can be a list, we must collapse the +%% content of the list to include both the content of the tail list +%% and the head of the cons. If for example the tail argument is any() +%% then there can be any list in the tail and the content of the +%% returned list must be any(). + +-spec t_cons(erl_type(), erl_type()) -> erl_type(). + +t_cons(?none, _) -> ?none; +t_cons(_, ?none) -> ?none; +t_cons(?unit, _) -> ?none; +t_cons(_, ?unit) -> ?none; +t_cons(Hd, ?nil) -> + ?nonempty_list(Hd, ?nil); +t_cons(Hd, ?list(Contents, Termination, _)) -> + ?nonempty_list(t_sup(Contents, Hd), Termination); +t_cons(Hd, Tail) -> + case cons_tail(t_inf(Tail, t_maybe_improper_list())) of + ?list(Contents, Termination, _Size) -> + %% Collapse the list part of the termination but keep the + %% non-list part intact. + NewTermination = t_sup(t_subtract(Tail, t_maybe_improper_list()), + Termination), + ?nonempty_list(t_sup(Hd, Contents), NewTermination); + ?nil -> ?nonempty_list(Hd, Tail); + ?none -> ?nonempty_list(Hd, Tail); + ?unit -> ?none + end. + +cons_tail(Type) -> + do_opaque(Type, 'universe', fun(T) -> T end). + +-spec t_is_cons(erl_type()) -> boolean(). + +t_is_cons(Type) -> + t_is_cons(Type, 'universe'). + +-spec t_is_cons(erl_type(), opaques()) -> boolean(). + +t_is_cons(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_cons/1). + +is_cons(?nonempty_list(_, _)) -> true; +is_cons(_) -> false. + +-spec t_cons_hd(erl_type()) -> erl_type(). + +t_cons_hd(Type) -> + t_cons_hd(Type, 'universe'). + +-spec t_cons_hd(erl_type(), opaques()) -> erl_type(). + +t_cons_hd(Type, Opaques) -> + do_opaque(Type, Opaques, fun cons_hd/1). + +cons_hd(?nonempty_list(Contents, _Termination)) -> Contents. + +-spec t_cons_tl(erl_type()) -> erl_type(). + +t_cons_tl(Type) -> + t_cons_tl(Type, 'universe'). + +-spec t_cons_tl(erl_type(), opaques()) -> erl_type(). + +t_cons_tl(Type, Opaques) -> + do_opaque(Type, Opaques, fun cons_tl/1). + +cons_tl(?nonempty_list(_Contents, Termination) = T) -> + t_sup(Termination, T). + +-spec t_nil() -> erl_type(). + +t_nil() -> + ?nil. + +-spec t_is_nil(erl_type()) -> boolean(). + +t_is_nil(Type) -> + t_is_nil(Type, 'universe'). + +-spec t_is_nil(erl_type(), opaques()) -> boolean(). + +t_is_nil(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_nil/1). + +is_nil(?nil) -> true; +is_nil(_) -> false. + +-spec t_list() -> erl_type(). + +t_list() -> + ?list(?any, ?nil, ?unknown_qual). + +-spec t_list(erl_type()) -> erl_type(). + +t_list(?none) -> ?none; +t_list(?unit) -> ?none; +t_list(Contents) -> + ?list(Contents, ?nil, ?unknown_qual). + +-spec t_list_elements(erl_type()) -> erl_type(). + +t_list_elements(Type) -> + t_list_elements(Type, 'universe'). + +-spec t_list_elements(erl_type(), opaques()) -> erl_type(). + +t_list_elements(Type, Opaques) -> + do_opaque(Type, Opaques, fun list_elements/1). + +list_elements(?list(Contents, _, _)) -> Contents; +list_elements(?nil) -> ?none. + +-spec t_list_termination(erl_type(), opaques()) -> erl_type(). + +t_list_termination(Type, Opaques) -> + do_opaque(Type, Opaques, fun t_list_termination/1). + +-spec t_list_termination(erl_type()) -> erl_type(). + +t_list_termination(?nil) -> ?nil; +t_list_termination(?list(_, Term, _)) -> Term. + +-spec t_is_list(erl_type()) -> boolean(). + +t_is_list(?list(_Contents, ?nil, _)) -> true; +t_is_list(?nil) -> true; +t_is_list(_) -> false. + +-spec t_nonempty_list() -> erl_type(). + +t_nonempty_list() -> + t_cons(?any, ?nil). + +-spec t_nonempty_list(erl_type()) -> erl_type(). + +t_nonempty_list(Type) -> + t_cons(Type, ?nil). + +-spec t_nonempty_string() -> erl_type(). + +t_nonempty_string() -> + t_nonempty_list(t_char()). + +-spec t_string() -> erl_type(). + +t_string() -> + t_list(t_char()). + +-spec t_is_string(erl_type()) -> boolean(). + +t_is_string(X) -> + t_is_list(X) andalso t_is_char(t_list_elements(X)). + +-spec t_maybe_improper_list() -> erl_type(). + +t_maybe_improper_list() -> + ?list(?any, ?any, ?unknown_qual). + +%% Should only be used if you know what you are doing. See t_cons/2 +-spec t_maybe_improper_list(erl_type(), erl_type()) -> erl_type(). + +t_maybe_improper_list(_Content, ?unit) -> ?none; +t_maybe_improper_list(?unit, _Termination) -> ?none; +t_maybe_improper_list(Content, Termination) -> + %% Safety check: would be nice to have but does not work with remote types + %% true = t_is_subtype(t_nil(), Termination), + ?list(Content, Termination, ?unknown_qual). + +-spec t_is_maybe_improper_list(erl_type()) -> boolean(). + +t_is_maybe_improper_list(Type) -> + t_is_maybe_improper_list(Type, 'universe'). + +-spec t_is_maybe_improper_list(erl_type(), opaques()) -> boolean(). + +t_is_maybe_improper_list(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_maybe_improper_list/1). + +is_maybe_improper_list(?list(_, _, _)) -> true; +is_maybe_improper_list(?nil) -> true; +is_maybe_improper_list(_) -> false. + +%% %% Should only be used if you know what you are doing. See t_cons/2 +%% -spec t_improper_list(erl_type(), erl_type()) -> erl_type(). +%% +%% t_improper_list(?unit, _Termination) -> ?none; +%% t_improper_list(_Content, ?unit) -> ?none; +%% t_improper_list(Content, Termination) -> +%% %% Safety check: would be nice to have but does not work with remote types +%% %% false = t_is_subtype(t_nil(), Termination), +%% ?list(Content, Termination, ?any). + +-spec lift_list_to_pos_empty(erl_type(), opaques()) -> erl_type(). + +lift_list_to_pos_empty(Type, Opaques) -> + do_opaque(Type, Opaques, fun lift_list_to_pos_empty/1). + +-spec lift_list_to_pos_empty(erl_type()) -> erl_type(). + +lift_list_to_pos_empty(?nil) -> ?nil; +lift_list_to_pos_empty(?list(Content, Termination, _)) -> + ?list(Content, Termination, ?unknown_qual). + +%%----------------------------------------------------------------------------- +%% Maps +%% +%% Representation: +%% ?map(Pairs, DefaultKey, DefaultValue) +%% +%% Pairs is a sorted dictionary of types with a mandatoriness tag on each pair +%% (t_map_dict()). DefaultKey and DefaultValue are plain types. +%% +%% A map M belongs to this type iff +%% For each pair {KT, mandatory, VT} in Pairs, there exists a pair {K, V} in M +%% such that K \in KT and V \in VT. +%% For each pair {KT, optional, VT} in Pairs, either there exists no key K in +%% M s.t. K in KT, or there exists a pair {K, V} in M such that K \in KT and +%% V \in VT. +%% For each remaining pair {K, V} in M (where remaining means that there is no +%% key KT in Pairs s.t. K \in KT), K \in DefaultKey and V \in DefaultValue. +%% +%% Invariants: +%% * The keys in Pairs are singleton types. +%% * The values of Pairs must not be unit, and may only be none if the +%% mandatoriness tag is 'optional'. +%% * Optional must contain no pair {K,V} s.t. K is a subtype of DefaultKey and +%% V is equal to DefaultKey. +%% * DefaultKey must be the empty type iff DefaultValue is the empty type. +%% * DefaultKey must not be a singleton type. +%% * For every key K in Pairs, DefaultKey - K must not be representable; i.e. +%% t_subtract(DefaultKey, K) must return DefaultKey. +%% * For every pair {K, 'optional', ?none} in Pairs, K must be a subtype of +%% DefaultKey. +%% * Pairs must be sorted and not contain any duplicate keys. +%% +%% These invariants ensure that equal map types are represented by equal terms. + +-define(mand, mandatory). +-define(opt, optional). + +-type t_map_mandatoriness() :: ?mand | ?opt. +-type t_map_pair() :: {erl_type(), t_map_mandatoriness(), erl_type()}. +-type t_map_dict() :: [t_map_pair()]. + +-spec t_map() -> erl_type(). + +t_map() -> + t_map([], t_any(), t_any()). + +-spec t_map([{erl_type(), erl_type()}]) -> erl_type(). + +t_map(L) -> + lists:foldl(fun t_map_put/2, t_map(), L). + +-spec t_map(t_map_dict(), erl_type(), erl_type()) -> erl_type(). + +t_map(Pairs0, DefK0, DefV0) -> + DefK1 = lists:foldl(fun({K,_,_},Acc)->t_subtract(Acc,K)end, DefK0, Pairs0), + {DefK2, DefV1} = + case t_is_none_or_unit(DefK1) orelse t_is_none_or_unit(DefV0) of + true -> {?none, ?none}; + false -> {DefK1, DefV0} + end, + {Pairs1, DefK, DefV} + = case is_singleton_type(DefK2) of + true -> {mapdict_insert({DefK2, ?opt, DefV1}, Pairs0), ?none, ?none}; + false -> {Pairs0, DefK2, DefV1} + end, + Pairs = normalise_map_optionals(Pairs1, DefK, DefV), + %% Validate invariants of the map representation. + %% Since we needed to iterate over the arguments in order to normalise anyway, + %% we might as well save us some future pain and do this even without + %% define(DEBUG, true). + try + validate_map_elements(Pairs) + catch error:badarg -> error(badarg, [Pairs0,DefK0,DefV0]); + error:{badarg, E} -> error({badarg, E}, [Pairs0,DefK0,DefV0]) + end, + ?map(Pairs, DefK, DefV). + +normalise_map_optionals([], _, _) -> []; +normalise_map_optionals([E={K,?opt,?none}|T], DefK, DefV) -> + Diff = t_subtract(DefK, K), + case t_is_subtype(K, DefK) andalso DefK =:= Diff of + true -> [E|normalise_map_optionals(T, DefK, DefV)]; + false -> normalise_map_optionals(T, Diff, DefV) + end; +normalise_map_optionals([E={K,?opt,V}|T], DefK, DefV) -> + case t_is_equal(V, DefV) andalso t_is_subtype(K, DefK) of + true -> normalise_map_optionals(T, DefK, DefV); + false -> [E|normalise_map_optionals(T, DefK, DefV)] + end; +normalise_map_optionals([E|T], DefK, DefV) -> + [E|normalise_map_optionals(T, DefK, DefV)]. + +validate_map_elements([{_,?mand,?none}|_]) -> error({badarg, none_in_mand}); +validate_map_elements([{K1,_,_}|Rest=[{K2,_,_}|_]]) -> + case is_singleton_type(K1) andalso K1 < K2 of + false -> error(badarg); + true -> validate_map_elements(Rest) + end; +validate_map_elements([{K,_,_}]) -> + case is_singleton_type(K) of + false -> error(badarg); + true -> true + end; +validate_map_elements([]) -> true. + +-spec t_is_map(erl_type()) -> boolean(). + +t_is_map(Type) -> + t_is_map(Type, 'universe'). + +-spec t_is_map(erl_type(), opaques()) -> boolean(). + +t_is_map(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_map1/1). + +is_map1(?map(_, _, _)) -> true; +is_map1(_) -> false. + +-spec t_map_entries(erl_type()) -> t_map_dict(). + +t_map_entries(M) -> + t_map_entries(M, 'universe'). + +-spec t_map_entries(erl_type(), opaques()) -> t_map_dict(). + +t_map_entries(M, Opaques) -> + do_opaque(M, Opaques, fun map_entries/1). + +map_entries(?map(Pairs,_,_)) -> + Pairs. + +-spec t_map_def_key(erl_type()) -> erl_type(). + +t_map_def_key(M) -> + t_map_def_key(M, 'universe'). + +-spec t_map_def_key(erl_type(), opaques()) -> erl_type(). + +t_map_def_key(M, Opaques) -> + do_opaque(M, Opaques, fun map_def_key/1). + +map_def_key(?map(_,DefK,_)) -> + DefK. + +-spec t_map_def_val(erl_type()) -> erl_type(). + +t_map_def_val(M) -> + t_map_def_val(M, 'universe'). + +-spec t_map_def_val(erl_type(), opaques()) -> erl_type(). + +t_map_def_val(M, Opaques) -> + do_opaque(M, Opaques, fun map_def_val/1). + +map_def_val(?map(_,_,DefV)) -> + DefV. + +-spec mapdict_store(t_map_pair(), t_map_dict()) -> t_map_dict(). + +mapdict_store(E={K,_,_}, [{K,_,_}|T]) -> [E|T]; +mapdict_store(E1={K1,_,_}, [E2={K2,_,_}|T]) when K1 > K2 -> + [E2|mapdict_store(E1, T)]; +mapdict_store(E={_,_,_}, T) -> [E|T]. + +-spec mapdict_insert(t_map_pair(), t_map_dict()) -> t_map_dict(). + +mapdict_insert(E={K,_,_}, D=[{K,_,_}|_]) -> error(badarg, [E, D]); +mapdict_insert(E1={K1,_,_}, [E2={K2,_,_}|T]) when K1 > K2 -> + [E2|mapdict_insert(E1, T)]; +mapdict_insert(E={_,_,_}, T) -> [E|T]. + +%% Merges the pairs of two maps together. Missing pairs become (?opt, DefV) or +%% (?opt, ?none), depending on whether K \in DefK. +-spec map_pairwise_merge(fun((erl_type(), + t_map_mandatoriness(), erl_type(), + t_map_mandatoriness(), erl_type()) + -> t_map_pair() | false), + erl_type(), erl_type()) -> t_map_dict(). +map_pairwise_merge(F, ?map(APairs, ADefK, ADefV), + ?map(BPairs, BDefK, BDefV)) -> + map_pairwise_merge(F, APairs, ADefK, ADefV, BPairs, BDefK, BDefV). + +map_pairwise_merge(_, [], _, _, [], _, _) -> []; +map_pairwise_merge(F, As0, ADefK, ADefV, Bs0, BDefK, BDefV) -> + {K1, AMNess1, AV1, As1, BMNess1, BV1, Bs1} = + case {As0, Bs0} of + {[{K,AMNess,AV}|As], [{K, BMNess,BV}|Bs]} -> + {K, AMNess, AV, As, BMNess, BV, Bs}; + {[{K,AMNess,AV}|As], [{BK,_, _ }|_]=Bs} when K < BK -> + {K, AMNess, AV, As, ?opt, mapmerge_otherv(K, BDefK, BDefV), Bs}; + {As, [{K, BMNess,BV}|Bs]} -> + {K, ?opt, mapmerge_otherv(K, ADefK, ADefV), As, BMNess, BV, Bs}; + {[{K,AMNess,AV}|As], []=Bs} -> + {K, AMNess, AV, As, ?opt, mapmerge_otherv(K, BDefK, BDefV), Bs} + end, + MK = K1, %% Rename to make clear that we are matching below + case F(K1, AMNess1, AV1, BMNess1, BV1) of + false -> map_pairwise_merge(F,As1,ADefK,ADefV,Bs1,BDefK,BDefV); + {MK,_,_}=M -> [M|map_pairwise_merge(F,As1,ADefK,ADefV,Bs1,BDefK,BDefV)] + end. + +%% Folds over the pairs in two maps simultaneously in reverse key order. Missing +%% pairs become (?opt, DefV) or (?opt, ?none), depending on whether K \in DefK. +-spec map_pairwise_merge_foldr(fun((erl_type(), + t_map_mandatoriness(), erl_type(), + t_map_mandatoriness(), erl_type(), + Acc) -> Acc), + Acc, erl_type(), erl_type()) -> Acc. + +map_pairwise_merge_foldr(F, AccIn, ?map(APairs, ADefK, ADefV), + ?map(BPairs, BDefK, BDefV)) -> + map_pairwise_merge_foldr(F, AccIn, APairs, ADefK, ADefV, BPairs, BDefK, BDefV). + +map_pairwise_merge_foldr(_, Acc, [], _, _, [], _, _) -> Acc; +map_pairwise_merge_foldr(F, AccIn, As0, ADefK, ADefV, Bs0, BDefK, BDefV) -> + {K1, AMNess1, AV1, As1, BMNess1, BV1, Bs1} = + case {As0, Bs0} of + {[{K,AMNess,AV}|As], [{K,BMNess,BV}|Bs]} -> + {K, AMNess, AV, As, BMNess, BV, Bs}; + {[{K,AMNess,AV}|As], [{BK,_, _ }|_]=Bs} when K < BK -> + {K, AMNess, AV, As, ?opt, mapmerge_otherv(K, BDefK, BDefV), Bs}; + {As, [{K,BMNess,BV}|Bs]} -> + {K, ?opt, mapmerge_otherv(K, ADefK, ADefV), As, BMNess, BV, Bs}; + {[{K,AMNess,AV}|As], []=Bs} -> + {K, AMNess, AV, As, ?opt, mapmerge_otherv(K, BDefK, BDefV), Bs} + end, + F(K1, AMNess1, AV1, BMNess1, BV1, + map_pairwise_merge_foldr(F,AccIn,As1,ADefK,ADefV,Bs1,BDefK,BDefV)). + +%% By observing that a missing pair in a map is equivalent to an optional pair, +%% with ?none or DefV value, depending on whether K \in DefK, we can simplify +%% merging by denormalising the map pairs temporarily, removing all 'false' +%% cases, at the cost of the creation of more tuples: +mapmerge_otherv(K, ODefK, ODefV) -> + case t_inf(K, ODefK) of + ?none -> ?none; + _KOrOpaque -> ODefV + end. + +-spec t_map_put({erl_type(), erl_type()}, erl_type()) -> erl_type(). + +t_map_put(KV, Map) -> + t_map_put(KV, Map, 'universe'). + +-spec t_map_put({erl_type(), erl_type()}, erl_type(), opaques()) -> erl_type(). + +t_map_put(KV, Map, Opaques) -> + do_opaque(Map, Opaques, fun(UM) -> map_put(KV, UM, Opaques) end). + +%% Key and Value are *not* unopaqued, but the map is +map_put(_, ?none, _) -> ?none; +map_put({Key, Value}, ?map(Pairs,DefK,DefV), Opaques) -> + case t_is_none_or_unit(Key) orelse t_is_none_or_unit(Value) of + true -> ?none; + false -> + case is_singleton_type(Key) of + true -> + t_map(mapdict_store({Key, ?mand, Value}, Pairs), DefK, DefV); + false -> + t_map([{K, MNess, case t_is_none(t_inf(K, Key, Opaques)) of + true -> V; + false -> t_sup(V, Value) + end} || {K, MNess, V} <- Pairs], + t_sup(DefK, Key), + t_sup(DefV, Value)) + end + end. + +-spec t_map_update({erl_type(), erl_type()}, erl_type()) -> erl_type(). + +t_map_update(KV, Map) -> + t_map_update(KV, Map, 'universe'). + +-spec t_map_update({erl_type(), erl_type()}, erl_type(), opaques()) -> erl_type(). + +t_map_update(_, ?none, _) -> ?none; +t_map_update(KV={Key, _}, M, Opaques) -> + case t_is_subtype(t_atom('true'), t_map_is_key(Key, M, Opaques)) of + false -> ?none; + true -> t_map_put(KV, M, Opaques) + end. + +-spec t_map_get(erl_type(), erl_type()) -> erl_type(). + +t_map_get(Key, Map) -> + t_map_get(Key, Map, 'universe'). + +-spec t_map_get(erl_type(), erl_type(), opaques()) -> erl_type(). + +t_map_get(Key, Map, Opaques) -> + do_opaque(Map, Opaques, + fun(UM) -> + do_opaque(Key, Opaques, fun(UK) -> map_get(UK, UM) end) + end). + +map_get(_, ?none) -> ?none; +map_get(Key, ?map(Pairs, DefK, DefV)) -> + DefRes = + case t_do_overlap(DefK, Key) of + false -> t_none(); + true -> DefV + end, + case is_singleton_type(Key) of + false -> + lists:foldl(fun({K, _, V}, Res) -> + case t_do_overlap(K, Key) of + false -> Res; + true -> t_sup(Res, V) + end + end, DefRes, Pairs); + true -> + case lists:keyfind(Key, 1, Pairs) of + false -> DefRes; + {_, _, ValType} -> ValType + end + end. + +-spec t_map_is_key(erl_type(), erl_type()) -> erl_type(). + +t_map_is_key(Key, Map) -> + t_map_is_key(Key, Map, 'universe'). + +-spec t_map_is_key(erl_type(), erl_type(), opaques()) -> erl_type(). + +t_map_is_key(Key, Map, Opaques) -> + do_opaque(Map, Opaques, + fun(UM) -> + do_opaque(Key, Opaques, fun(UK) -> map_is_key(UK, UM) end) + end). + +map_is_key(_, ?none) -> ?none; +map_is_key(Key, ?map(Pairs, DefK, _DefV)) -> + case is_singleton_type(Key) of + true -> + case lists:keyfind(Key, 1, Pairs) of + {Key, ?mand, _} -> t_atom(true); + {Key, ?opt, ?none} -> t_atom(false); + {Key, ?opt, _} -> t_boolean(); + false -> + case t_do_overlap(DefK, Key) of + false -> t_atom(false); + true -> t_boolean() + end + end; + false -> + case t_do_overlap(DefK, Key) + orelse lists:any(fun({_,_,?none}) -> false; + ({K,_,_}) -> t_do_overlap(K, Key) + end, Pairs) + of + true -> t_boolean(); + false -> t_atom(false) + end + end. + +%%----------------------------------------------------------------------------- +%% Tuples +%% + +-spec t_tuple() -> erl_type(). + +t_tuple() -> + ?tuple(?any, ?any, ?any). + +-spec t_tuple(non_neg_integer() | [erl_type()]) -> erl_type(). + +t_tuple(N) when is_integer(N), N > ?MAX_TUPLE_SIZE -> + t_tuple(); +t_tuple(N) when is_integer(N) -> + ?tuple(lists:duplicate(N, ?any), N, ?any); +t_tuple(List) -> + case any_none_or_unit(List) of + true -> t_none(); + false -> + Arity = length(List), + case get_tuple_tags(List) of + [Tag] -> ?tuple(List, Arity, Tag); %% Tag can also be ?any here + TagList -> + SortedTagList = lists:sort(TagList), + Tuples = [?tuple([T|tl(List)], Arity, T) || T <- SortedTagList], + ?tuple_set([{Arity, Tuples}]) + end + end. + +-spec get_tuple_tags([erl_type()]) -> [erl_type(),...]. + +get_tuple_tags([Tag|_]) -> + do_opaque(Tag, 'universe', fun tuple_tags/1); +get_tuple_tags(_) -> [?any]. + +tuple_tags(?atom(?any)) -> [?any]; +tuple_tags(?atom(Set)) -> + case set_size(Set) > ?TUPLE_TAG_LIMIT of + true -> [?any]; + false -> [t_atom(A) || A <- set_to_list(Set)] + end; +tuple_tags(_) -> [?any]. + +%% to be used for a tuple with known types for its arguments (not ?any) +-spec t_tuple_args(erl_type()) -> [erl_type()]. + +t_tuple_args(Type) -> + t_tuple_args(Type, 'universe'). + +%% to be used for a tuple with known types for its arguments (not ?any) +-spec t_tuple_args(erl_type(), opaques()) -> [erl_type()]. + +t_tuple_args(Type, Opaques) -> + do_opaque(Type, Opaques, fun tuple_args/1). + +tuple_args(?tuple(Args, _, _)) when is_list(Args) -> Args. + +%% to be used for a tuple with a known size (not ?any) +-spec t_tuple_size(erl_type()) -> non_neg_integer(). + +t_tuple_size(Type) -> + t_tuple_size(Type, 'universe'). + +%% to be used for a tuple with a known size (not ?any) +-spec t_tuple_size(erl_type(), opaques()) -> non_neg_integer(). + +t_tuple_size(Type, Opaques) -> + do_opaque(Type, Opaques, fun tuple_size1/1). + +tuple_size1(?tuple(_, Size, _)) when is_integer(Size) -> Size. + +-spec t_tuple_sizes(erl_type()) -> 'unknown' | [non_neg_integer(),...]. + +t_tuple_sizes(Type) -> + do_opaque(Type, 'universe', fun tuple_sizes/1). + +tuple_sizes(?tuple(?any, ?any, ?any)) -> unknown; +tuple_sizes(?tuple(_, Size, _)) when is_integer(Size) -> [Size]; +tuple_sizes(?tuple_set(List)) -> [Size || {Size, _} <- List]. + +-spec t_tuple_subtypes(erl_type(), opaques()) -> + 'unknown' | [erl_type(),...]. + +t_tuple_subtypes(Type, Opaques) -> + Fun = fun(?tuple_set(List)) -> + t_tuple_subtypes_tuple_list(List, Opaques); + (?opaque(_)) -> unknown; + (T) -> t_tuple_subtypes(T) + end, + do_opaque(Type, Opaques, Fun). + +t_tuple_subtypes_tuple_list(List, Opaques) -> + lists:append([t_tuple_subtypes_list(Tuples, Opaques) || + {_Size, Tuples} <- List]). + +t_tuple_subtypes_list(List, Opaques) -> + ListOfLists = [t_tuple_subtypes(E, Opaques) || E <- List, E =/= ?none], + lists:append([L || L <- ListOfLists, L =/= 'unknown']). + +-spec t_tuple_subtypes(erl_type()) -> 'unknown' | [erl_type(),...]. + +%% XXX. Not the same as t_tuple_subtypes(T, 'universe')... +t_tuple_subtypes(?tuple(?any, ?any, ?any)) -> unknown; +t_tuple_subtypes(?tuple(_, _, _) = T) -> [T]; +t_tuple_subtypes(?tuple_set(List)) -> + lists:append([Tuples || {_Size, Tuples} <- List]). + +-spec t_is_tuple(erl_type()) -> boolean(). + +t_is_tuple(Type) -> + t_is_tuple(Type, 'universe'). + +-spec t_is_tuple(erl_type(), opaques()) -> boolean(). + +t_is_tuple(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_tuple1/1). + +is_tuple1(?tuple(_, _, _)) -> true; +is_tuple1(?tuple_set(_)) -> true; +is_tuple1(_) -> false. + +%%----------------------------------------------------------------------------- +%% Non-primitive types, including some handy syntactic sugar types +%% + +-spec t_bitstrlist() -> erl_type(). + +t_bitstrlist() -> + t_iolist(1, t_bitstr()). + +-spec t_arity() -> erl_type(). + +t_arity() -> + t_from_range(0, 255). % was t_byte(). + +-spec t_pos_integer() -> erl_type(). + +t_pos_integer() -> + t_from_range(1, pos_inf). + +-spec t_non_neg_integer() -> erl_type(). + +t_non_neg_integer() -> + t_from_range(0, pos_inf). + +-spec t_is_non_neg_integer(erl_type()) -> boolean(). + +t_is_non_neg_integer(?integer(_) = T) -> + t_is_subtype(T, t_non_neg_integer()); +t_is_non_neg_integer(_) -> false. + +-spec t_neg_integer() -> erl_type(). + +t_neg_integer() -> + t_from_range(neg_inf, -1). + +-spec t_fixnum() -> erl_type(). + +t_fixnum() -> + t_integer(). % Gross over-approximation + +-spec t_pos_fixnum() -> erl_type(). + +t_pos_fixnum() -> + t_pos_integer(). % Gross over-approximation + +-spec t_non_neg_fixnum() -> erl_type(). + +t_non_neg_fixnum() -> + t_non_neg_integer(). % Gross over-approximation + +-spec t_mfa() -> erl_type(). + +t_mfa() -> + t_tuple([t_atom(), t_atom(), t_arity()]). + +-spec t_module() -> erl_type(). + +t_module() -> + t_atom(). + +-spec t_node() -> erl_type(). + +t_node() -> + t_atom(). + +-spec t_iodata() -> erl_type(). + +t_iodata() -> + t_sup(t_iolist(), t_binary()). + +-spec t_iolist() -> erl_type(). + +t_iolist() -> + t_iolist(1, t_binary()). + +%% Added a second argument which currently is t_binary() | t_bitstr() +-spec t_iolist(non_neg_integer(), erl_type()) -> erl_type(). + +t_iolist(N, T) when N > 0 -> + t_maybe_improper_list(t_sup([t_iolist(N-1, T), T, t_byte()]), + t_sup(T, t_nil())); +t_iolist(0, T) -> + t_maybe_improper_list(t_any(), t_sup(T, t_nil())). + +-spec t_timeout() -> erl_type(). + +t_timeout() -> + t_sup(t_non_neg_integer(), t_atom('infinity')). + +%%------------------------------------ + +%% ?none is allowed in products. A product of size 1 is not a product. + +-spec t_product([erl_type()]) -> erl_type(). + +t_product([T]) -> T; +t_product(Types) when is_list(Types) -> + ?product(Types). + +%% This function is intended to be the inverse of the one above. +%% It should NOT be used with ?any, ?none or ?unit as input argument. + +-spec t_to_tlist(erl_type()) -> [erl_type()]. + +t_to_tlist(?product(Types)) -> Types; +t_to_tlist(T) when T =/= ?any orelse T =/= ?none orelse T =/= ?unit -> [T]. + +%%------------------------------------ + +-spec t_var(atom() | integer()) -> erl_type(). + +t_var(Atom) when is_atom(Atom) -> ?var(Atom); +t_var(Int) when is_integer(Int) -> ?var(Int). + +-spec t_is_var(erl_type()) -> boolean(). + +t_is_var(?var(_)) -> true; +t_is_var(_) -> false. + +-spec t_var_name(erl_type()) -> atom() | integer(). + +t_var_name(?var(Id)) -> Id. + +-spec t_has_var(erl_type()) -> boolean(). + +t_has_var(?var(_)) -> true; +t_has_var(?function(Domain, Range)) -> + t_has_var(Domain) orelse t_has_var(Range); +t_has_var(?list(Contents, Termination, _)) -> + t_has_var(Contents) orelse t_has_var(Termination); +t_has_var(?product(Types)) -> t_has_var_list(Types); +t_has_var(?tuple(?any, ?any, ?any)) -> false; +t_has_var(?tuple(Elements, _, _)) -> + t_has_var_list(Elements); +t_has_var(?tuple_set(_) = T) -> + t_has_var_list(t_tuple_subtypes(T)); +t_has_var(?map(_, DefK, _)= Map) -> + t_has_var_list(map_all_values(Map)) orelse + t_has_var(DefK); +t_has_var(?opaque(Set)) -> + %% Assume variables in 'args' are also present i 'struct' + t_has_var_list([O#opaque.struct || O <- set_to_list(Set)]); +t_has_var(?union(List)) -> + t_has_var_list(List); +t_has_var(_) -> false. + +-spec t_has_var_list([erl_type()]) -> boolean(). + +t_has_var_list([T|Ts]) -> + t_has_var(T) orelse t_has_var_list(Ts); +t_has_var_list([]) -> false. + +-spec t_collect_vars(erl_type()) -> [erl_type()]. + +t_collect_vars(T) -> + t_collect_vars(T, []). + +-spec t_collect_vars(erl_type(), [erl_type()]) -> [erl_type()]. + +t_collect_vars(?var(_) = Var, Acc) -> + ordsets:add_element(Var, Acc); +t_collect_vars(?function(Domain, Range), Acc) -> + ordsets:union(t_collect_vars(Domain, Acc), t_collect_vars(Range, [])); +t_collect_vars(?list(Contents, Termination, _), Acc) -> + ordsets:union(t_collect_vars(Contents, Acc), t_collect_vars(Termination, [])); +t_collect_vars(?product(Types), Acc) -> + t_collect_vars_list(Types, Acc); +t_collect_vars(?tuple(?any, ?any, ?any), Acc) -> + Acc; +t_collect_vars(?tuple(Types, _, _), Acc) -> + t_collect_vars_list(Types, Acc); +t_collect_vars(?tuple_set(_) = TS, Acc) -> + t_collect_vars_list(t_tuple_subtypes(TS), Acc); +t_collect_vars(?map(_, DefK, _) = Map, Acc0) -> + Acc = t_collect_vars_list(map_all_values(Map), Acc0), + t_collect_vars(DefK, Acc); +t_collect_vars(?opaque(Set), Acc) -> + %% Assume variables in 'args' are also present i 'struct' + t_collect_vars_list([O#opaque.struct || O <- set_to_list(Set)], Acc); +t_collect_vars(?union(List), Acc) -> + t_collect_vars_list(List, Acc); +t_collect_vars(_, Acc) -> + Acc. + +t_collect_vars_list([T|Ts], Acc0) -> + Acc = t_collect_vars(T, Acc0), + t_collect_vars_list(Ts, Acc); +t_collect_vars_list([], Acc) -> Acc. + +%%============================================================================= +%% +%% Type construction from Erlang terms. +%% +%%============================================================================= + +%%----------------------------------------------------------------------------- +%% Make a type from a term. No type depth is enforced. +%% + +-spec t_from_term(term()) -> erl_type(). + +t_from_term([H|T]) -> t_cons(t_from_term(H), t_from_term(T)); +t_from_term([]) -> t_nil(); +t_from_term(T) when is_atom(T) -> t_atom(T); +t_from_term(T) when is_bitstring(T) -> t_bitstr(0, erlang:bit_size(T)); +t_from_term(T) when is_float(T) -> t_float(); +t_from_term(T) when is_function(T) -> + {arity, Arity} = erlang:fun_info(T, arity), + t_fun(Arity, t_any()); +t_from_term(T) when is_integer(T) -> t_integer(T); +t_from_term(T) when is_map(T) -> + Pairs = [{t_from_term(K), ?mand, t_from_term(V)} + || {K, V} <- maps:to_list(T)], + {Stons, Rest} = lists:partition(fun({K,_,_}) -> is_singleton_type(K) end, + Pairs), + {DefK, DefV} + = lists:foldl(fun({K,_,V},{AK,AV}) -> {t_sup(K,AK), t_sup(V,AV)} end, + {t_none(), t_none()}, Rest), + t_map(lists:keysort(1, Stons), DefK, DefV); +t_from_term(T) when is_pid(T) -> t_pid(); +t_from_term(T) when is_port(T) -> t_port(); +t_from_term(T) when is_reference(T) -> t_reference(); +t_from_term(T) when is_tuple(T) -> + t_tuple([t_from_term(E) || E <- tuple_to_list(T)]). + +%%----------------------------------------------------------------------------- +%% Integer types from a range. +%%----------------------------------------------------------------------------- + +%%-define(USE_UNSAFE_RANGES, true). + +-spec t_from_range(rng_elem(), rng_elem()) -> erl_type(). + +-ifdef(USE_UNSAFE_RANGES). + +t_from_range(X, Y) -> + t_from_range_unsafe(X, Y). + +-else. + +t_from_range(neg_inf, pos_inf) -> t_integer(); +t_from_range(neg_inf, Y) when is_integer(Y), Y < 0 -> ?integer_neg; +t_from_range(neg_inf, Y) when is_integer(Y), Y >= 0 -> t_integer(); +t_from_range(X, pos_inf) when is_integer(X), X >= 1 -> ?integer_pos; +t_from_range(X, pos_inf) when is_integer(X), X >= 0 -> ?integer_non_neg; +t_from_range(X, pos_inf) when is_integer(X), X < 0 -> t_integer(); +t_from_range(X, Y) when is_integer(X), is_integer(Y), X > Y -> t_none(); +t_from_range(X, Y) when is_integer(X), is_integer(Y) -> + case ((Y - X) < ?SET_LIMIT) of + true -> t_integers(lists:seq(X, Y)); + false -> + case X >= 0 of + false -> + if Y < 0 -> ?integer_neg; + true -> t_integer() + end; + true -> + if Y =< ?MAX_BYTE, X >= 1 -> ?int_range(1, ?MAX_BYTE); + Y =< ?MAX_BYTE -> t_byte(); + Y =< ?MAX_CHAR, X >= 1 -> ?int_range(1, ?MAX_CHAR); + Y =< ?MAX_CHAR -> t_char(); + X >= 1 -> ?integer_pos; + X >= 0 -> ?integer_non_neg + end + end + end; +t_from_range(pos_inf, neg_inf) -> t_none(). + +-endif. + +-spec t_from_range_unsafe(rng_elem(), rng_elem()) -> erl_type(). + +t_from_range_unsafe(neg_inf, pos_inf) -> t_integer(); +t_from_range_unsafe(neg_inf, Y) -> ?int_range(neg_inf, Y); +t_from_range_unsafe(X, pos_inf) -> ?int_range(X, pos_inf); +t_from_range_unsafe(X, Y) when is_integer(X), is_integer(Y), X =< Y -> + if (Y - X) < ?SET_LIMIT -> t_integers(lists:seq(X, Y)); + true -> ?int_range(X, Y) + end; +t_from_range_unsafe(X, Y) when is_integer(X), is_integer(Y) -> t_none(); +t_from_range_unsafe(pos_inf, neg_inf) -> t_none(). + +-spec t_is_fixnum(erl_type()) -> boolean(). + +t_is_fixnum(?int_range(neg_inf, _)) -> false; +t_is_fixnum(?int_range(_, pos_inf)) -> false; +t_is_fixnum(?int_range(From, To)) -> + is_fixnum(From) andalso is_fixnum(To); +t_is_fixnum(?int_set(Set)) -> + is_fixnum(set_min(Set)) andalso is_fixnum(set_max(Set)); +t_is_fixnum(_) -> false. + +-spec is_fixnum(integer()) -> boolean(). + +is_fixnum(N) when is_integer(N) -> + Bits = ?BITS, + (N =< ((1 bsl (Bits - 1)) - 1)) andalso (N >= -(1 bsl (Bits - 1))). + +infinity_geq(pos_inf, _) -> true; +infinity_geq(_, pos_inf) -> false; +infinity_geq(_, neg_inf) -> true; +infinity_geq(neg_inf, _) -> false; +infinity_geq(A, B) -> A >= B. + +-spec t_is_bitwidth(erl_type()) -> boolean(). + +t_is_bitwidth(?int_range(neg_inf, _)) -> false; +t_is_bitwidth(?int_range(_, pos_inf)) -> false; +t_is_bitwidth(?int_range(From, To)) -> + infinity_geq(From, 0) andalso infinity_geq(?BITS, To); +t_is_bitwidth(?int_set(Set)) -> + infinity_geq(set_min(Set), 0) andalso infinity_geq(?BITS, set_max(Set)); +t_is_bitwidth(_) -> false. + +-spec number_min(erl_type()) -> rng_elem(). + +number_min(Type) -> + number_min(Type, 'universe'). + +-spec number_min(erl_type(), opaques()) -> rng_elem(). + +number_min(Type, Opaques) -> + do_opaque(Type, Opaques, fun number_min2/1). + +number_min2(?int_range(From, _)) -> From; +number_min2(?int_set(Set)) -> set_min(Set); +number_min2(?number(?any, _Tag)) -> neg_inf. + +-spec number_max(erl_type()) -> rng_elem(). + +number_max(Type) -> + number_max(Type, 'universe'). + +-spec number_max(erl_type(), opaques()) -> rng_elem(). + +number_max(Type, Opaques) -> + do_opaque(Type, Opaques, fun number_max2/1). + +number_max2(?int_range(_, To)) -> To; +number_max2(?int_set(Set)) -> set_max(Set); +number_max2(?number(?any, _Tag)) -> pos_inf. + +%% -spec int_range(rgn_elem(), rng_elem()) -> erl_type(). +%% +%% int_range(neg_inf, pos_inf) -> t_integer(); +%% int_range(neg_inf, To) -> ?int_range(neg_inf, To); +%% int_range(From, pos_inf) -> ?int_range(From, pos_inf); +%% int_range(From, To) when From =< To -> t_from_range(From, To); +%% int_range(From, To) when To < From -> ?none. + +in_range(_, ?int_range(neg_inf, pos_inf)) -> true; +in_range(X, ?int_range(From, pos_inf)) -> X >= From; +in_range(X, ?int_range(neg_inf, To)) -> X =< To; +in_range(X, ?int_range(From, To)) -> (X >= From) andalso (X =< To). + +-spec min(rng_elem(), rng_elem()) -> rng_elem(). + +min(neg_inf, _) -> neg_inf; +min(_, neg_inf) -> neg_inf; +min(pos_inf, Y) -> Y; +min(X, pos_inf) -> X; +min(X, Y) when X =< Y -> X; +min(_, Y) -> Y. + +-spec max(rng_elem(), rng_elem()) -> rng_elem(). + +max(neg_inf, Y) -> Y; +max(X, neg_inf) -> X; +max(pos_inf, _) -> pos_inf; +max(_, pos_inf) -> pos_inf; +max(X, Y) when X =< Y -> Y; +max(X, _) -> X. + +expand_range_from_set(Range = ?int_range(From, To), Set) -> + Min = min(set_min(Set), From), + Max = max(set_max(Set), To), + if From =:= Min, To =:= Max -> Range; + true -> t_from_range(Min, Max) + end. + +%%============================================================================= +%% +%% Lattice operations +%% +%%============================================================================= + +%%----------------------------------------------------------------------------- +%% Supremum +%% + +-spec t_sup([erl_type()]) -> erl_type(). + +t_sup([]) -> ?none; +t_sup(Ts) -> + case lists:any(fun is_any/1, Ts) of + true -> ?any; + false -> + t_sup1(Ts, []) + end. + +t_sup1([H1, H2|T], L) -> + t_sup1(T, [t_sup(H1, H2)|L]); +t_sup1([T], []) -> subst_all_vars_to_any(T); +t_sup1(Ts, L) -> + t_sup1(Ts++L, []). + +-spec t_sup(erl_type(), erl_type()) -> erl_type(). + +t_sup(?any, _) -> ?any; +t_sup(_, ?any) -> ?any; +t_sup(?none, T) -> T; +t_sup(T, ?none) -> T; +t_sup(?unit, T) -> T; +t_sup(T, ?unit) -> T; +t_sup(T, T) -> subst_all_vars_to_any(T); +t_sup(?var(_), _) -> ?any; +t_sup(_, ?var(_)) -> ?any; +t_sup(?atom(Set1), ?atom(Set2)) -> + ?atom(set_union(Set1, Set2)); +t_sup(?bitstr(U1, B1), ?bitstr(U2, B2)) -> + t_bitstr(gcd(gcd(U1, U2), abs(B1-B2)), lists:min([B1, B2])); +t_sup(?function(Domain1, Range1), ?function(Domain2, Range2)) -> + %% The domain is either a product or any. + ?function(t_sup(Domain1, Domain2), t_sup(Range1, Range2)); +t_sup(?identifier(Set1), ?identifier(Set2)) -> + ?identifier(set_union(Set1, Set2)); +t_sup(?opaque(Set1), ?opaque(Set2)) -> + sup_opaque(set_to_list(ordsets:union(Set1, Set2))); +%%Disallow unions with opaque types +%%t_sup(T1=?opaque(_,_,_), T2) -> +%% io:format("Debug: t_sup executed with args ~w and ~w~n",[T1, T2]), ?none; +%%t_sup(T1, T2=?opaque(_,_,_)) -> +%% io:format("Debug: t_sup executed with args ~w and ~w~n",[T1, T2]), ?none; +t_sup(?matchstate(Pres1, Slots1), ?matchstate(Pres2, Slots2)) -> + ?matchstate(t_sup(Pres1, Pres2), t_sup(Slots1, Slots2)); +t_sup(?nil, ?nil) -> ?nil; +t_sup(?nil, ?list(Contents, Termination, _)) -> + ?list(Contents, t_sup(?nil, Termination), ?unknown_qual); +t_sup(?list(Contents, Termination, _), ?nil) -> + ?list(Contents, t_sup(?nil, Termination), ?unknown_qual); +t_sup(?list(Contents1, Termination1, Size1), + ?list(Contents2, Termination2, Size2)) -> + NewSize = + case {Size1, Size2} of + {?unknown_qual, ?unknown_qual} -> ?unknown_qual; + {?unknown_qual, ?nonempty_qual} -> ?unknown_qual; + {?nonempty_qual, ?unknown_qual} -> ?unknown_qual; + {?nonempty_qual, ?nonempty_qual} -> ?nonempty_qual + end, + NewContents = t_sup(Contents1, Contents2), + NewTermination = t_sup(Termination1, Termination2), + TmpList = t_cons(NewContents, NewTermination), + case NewSize of + ?nonempty_qual -> TmpList; + ?unknown_qual -> + ?list(FinalContents, FinalTermination, _) = TmpList, + ?list(FinalContents, FinalTermination, ?unknown_qual) + end; +t_sup(?number(_, _), ?number(?any, ?unknown_qual) = T) -> T; +t_sup(?number(?any, ?unknown_qual) = T, ?number(_, _)) -> T; +t_sup(?float, ?float) -> ?float; +t_sup(?float, ?integer(_)) -> t_number(); +t_sup(?integer(_), ?float) -> t_number(); +t_sup(?integer(?any) = T, ?integer(_)) -> T; +t_sup(?integer(_), ?integer(?any) = T) -> T; +t_sup(?int_set(Set1), ?int_set(Set2)) -> + case set_union(Set1, Set2) of + ?any -> + t_from_range(min(set_min(Set1), set_min(Set2)), + max(set_max(Set1), set_max(Set2))); + Set -> ?int_set(Set) + end; +t_sup(?int_range(From1, To1), ?int_range(From2, To2)) -> + t_from_range(min(From1, From2), max(To1, To2)); +t_sup(Range = ?int_range(_, _), ?int_set(Set)) -> + expand_range_from_set(Range, Set); +t_sup(?int_set(Set), Range = ?int_range(_, _)) -> + expand_range_from_set(Range, Set); +t_sup(?product(Types1), ?product(Types2)) -> + L1 = length(Types1), + L2 = length(Types2), + if L1 =:= L2 -> ?product(t_sup_lists(Types1, Types2)); + true -> ?any + end; +t_sup(?product(_), _) -> + ?any; +t_sup(_, ?product(_)) -> + ?any; +t_sup(?tuple(?any, ?any, ?any) = T, ?tuple(_, _, _)) -> T; +t_sup(?tuple(_, _, _), ?tuple(?any, ?any, ?any) = T) -> T; +t_sup(?tuple(?any, ?any, ?any) = T, ?tuple_set(_)) -> T; +t_sup(?tuple_set(_), ?tuple(?any, ?any, ?any) = T) -> T; +t_sup(?tuple(Elements1, Arity, Tag1) = T1, + ?tuple(Elements2, Arity, Tag2) = T2) -> + if Tag1 =:= Tag2 -> t_tuple(t_sup_lists(Elements1, Elements2)); + Tag1 =:= ?any -> t_tuple(t_sup_lists(Elements1, Elements2)); + Tag2 =:= ?any -> t_tuple(t_sup_lists(Elements1, Elements2)); + Tag1 < Tag2 -> ?tuple_set([{Arity, [T1, T2]}]); + Tag1 > Tag2 -> ?tuple_set([{Arity, [T2, T1]}]) + end; +t_sup(?tuple(_, Arity1, _) = T1, ?tuple(_, Arity2, _) = T2) -> + sup_tuple_sets([{Arity1, [T1]}], [{Arity2, [T2]}]); +t_sup(?tuple_set(List1), ?tuple_set(List2)) -> + sup_tuple_sets(List1, List2); +t_sup(?tuple_set(List1), T2 = ?tuple(_, Arity, _)) -> + sup_tuple_sets(List1, [{Arity, [T2]}]); +t_sup(?tuple(_, Arity, _) = T1, ?tuple_set(List2)) -> + sup_tuple_sets([{Arity, [T1]}], List2); +t_sup(?map(_, ADefK, ADefV) = A, ?map(_, BDefK, BDefV) = B) -> + Pairs = + map_pairwise_merge( + fun(K, MNess, V1, MNess, V2) -> {K, MNess, t_sup(V1, V2)}; + (K, _, V1, _, V2) -> {K, ?opt, t_sup(V1, V2)} + end, A, B), + t_map(Pairs, t_sup(ADefK, BDefK), t_sup(ADefV, BDefV)); +t_sup(T1, T2) -> + ?union(U1) = force_union(T1), + ?union(U2) = force_union(T2), + sup_union(U1, U2). + +sup_opaque([]) -> ?none; +sup_opaque(List) -> + L = sup_opaq(List), + ?opaque(ordsets:from_list(L)). + +sup_opaq(L0) -> + L1 = [{{Mod,Name,Args}, T} || + #opaque{mod = Mod, name = Name, args = Args}=T <- L0], + F = family(L1), + [supl(Ts) || {_, Ts} <- F]. + +supl([O]) -> O; +supl(Ts) -> supl(Ts, t_none()). + +supl([#opaque{struct = S}=O|L], S0) -> + S1 = t_sup(S, S0), + case L =:= [] of + true -> O#opaque{struct = S1}; + false -> supl(L, S1) + end. + +-spec t_sup_lists([erl_type()], [erl_type()]) -> [erl_type()]. + +t_sup_lists([T1|Left1], [T2|Left2]) -> + [t_sup(T1, T2)|t_sup_lists(Left1, Left2)]; +t_sup_lists([], []) -> + []. + +sup_tuple_sets(L1, L2) -> + TotalArities = ordsets:union([Arity || {Arity, _} <- L1], + [Arity || {Arity, _} <- L2]), + if length(TotalArities) > ?TUPLE_ARITY_LIMIT -> t_tuple(); + true -> + case sup_tuple_sets(L1, L2, []) of + [{_Arity, [OneTuple = ?tuple(_, _, _)]}] -> OneTuple; + List -> ?tuple_set(List) + end + end. + +sup_tuple_sets([{Arity, Tuples1}|Left1], [{Arity, Tuples2}|Left2], Acc) -> + NewAcc = [{Arity, sup_tuples_in_set(Tuples1, Tuples2)}|Acc], + sup_tuple_sets(Left1, Left2, NewAcc); +sup_tuple_sets([{Arity1, _} = T1|Left1] = L1, + [{Arity2, _} = T2|Left2] = L2, Acc) -> + if Arity1 < Arity2 -> sup_tuple_sets(Left1, L2, [T1|Acc]); + Arity1 > Arity2 -> sup_tuple_sets(L1, Left2, [T2|Acc]) + end; +sup_tuple_sets([], L2, Acc) -> lists:reverse(Acc, L2); +sup_tuple_sets(L1, [], Acc) -> lists:reverse(Acc, L1). + +sup_tuples_in_set([?tuple(_, _, ?any) = T], L) -> + [t_tuple(sup_tuple_elements([T|L]))]; +sup_tuples_in_set(L, [?tuple(_, _, ?any) = T]) -> + [t_tuple(sup_tuple_elements([T|L]))]; +sup_tuples_in_set(L1, L2) -> + FoldFun = fun(?tuple(_, _, Tag), AccTag) -> t_sup(Tag, AccTag) end, + TotalTag0 = lists:foldl(FoldFun, ?none, L1), + TotalTag = lists:foldl(FoldFun, TotalTag0, L2), + case TotalTag of + ?atom(?any) -> + %% We will reach the set limit. Widen now. + [t_tuple(sup_tuple_elements(L1 ++ L2))]; + ?atom(Set) -> + case set_size(Set) > ?TUPLE_TAG_LIMIT of + true -> + %% We will reach the set limit. Widen now. + [t_tuple(sup_tuple_elements(L1 ++ L2))]; + false -> + %% We can go on and build the tuple set. + sup_tuples_in_set(L1, L2, []) + end + end. + +sup_tuple_elements([?tuple(Elements, _, _)|L]) -> + lists:foldl(fun (?tuple(Es, _, _), Acc) -> t_sup_lists(Es, Acc) end, + Elements, L). + +sup_tuples_in_set([?tuple(Elements1, Arity, Tag1) = T1|Left1] = L1, + [?tuple(Elements2, Arity, Tag2) = T2|Left2] = L2, Acc) -> + if + Tag1 < Tag2 -> sup_tuples_in_set(Left1, L2, [T1|Acc]); + Tag1 > Tag2 -> sup_tuples_in_set(L1, Left2, [T2|Acc]); + Tag2 =:= Tag2 -> NewElements = t_sup_lists(Elements1, Elements2), + NewAcc = [?tuple(NewElements, Arity, Tag1)|Acc], + sup_tuples_in_set(Left1, Left2, NewAcc) + end; +sup_tuples_in_set([], L2, Acc) -> lists:reverse(Acc, L2); +sup_tuples_in_set(L1, [], Acc) -> lists:reverse(Acc, L1). + +sup_union(U1, U2) -> + sup_union(U1, U2, 0, []). + +sup_union([?none|Left1], [?none|Left2], N, Acc) -> + sup_union(Left1, Left2, N, [?none|Acc]); +sup_union([T1|Left1], [T2|Left2], N, Acc) -> + sup_union(Left1, Left2, N+1, [t_sup(T1, T2)|Acc]); +sup_union([], [], N, Acc) -> + if N =:= 0 -> ?none; + N =:= 1 -> + [Type] = [T || T <- Acc, T =/= ?none], + Type; + N =:= length(Acc) -> ?any; + true -> ?union(lists:reverse(Acc)) + end. + +force_union(T = ?atom(_)) -> ?atom_union(T); +force_union(T = ?bitstr(_, _)) -> ?bitstr_union(T); +force_union(T = ?function(_, _)) -> ?function_union(T); +force_union(T = ?identifier(_)) -> ?identifier_union(T); +force_union(T = ?list(_, _, _)) -> ?list_union(T); +force_union(T = ?nil) -> ?list_union(T); +force_union(T = ?number(_, _)) -> ?number_union(T); +force_union(T = ?opaque(_)) -> ?opaque_union(T); +force_union(T = ?map(_,_,_)) -> ?map_union(T); +force_union(T = ?tuple(_, _, _)) -> ?tuple_union(T); +force_union(T = ?tuple_set(_)) -> ?tuple_union(T); +force_union(T = ?matchstate(_, _)) -> ?matchstate_union(T); +force_union(T = ?union(_)) -> T. + +%%----------------------------------------------------------------------------- +%% An attempt to write the inverse operation of t_sup/1 -- XXX: INCOMPLETE !! +%% + +-spec t_elements(erl_type()) -> [erl_type()]. + +t_elements(?none) -> []; +t_elements(?unit) -> []; +t_elements(?any = T) -> [T]; +t_elements(?nil = T) -> [T]; +t_elements(?atom(?any) = T) -> [T]; +t_elements(?atom(Atoms)) -> + [t_atom(A) || A <- Atoms]; +t_elements(?bitstr(_, _) = T) -> [T]; +t_elements(?function(_, _) = T) -> [T]; +t_elements(?identifier(?any) = T) -> [T]; +t_elements(?identifier(IDs)) -> + [?identifier([T]) || T <- IDs]; +t_elements(?list(_, _, _) = T) -> [T]; +t_elements(?number(_, _) = T) -> + case T of + ?number(?any, ?unknown_qual) -> + [?float, ?integer(?any)]; + ?float -> [T]; + ?integer(?any) -> [T]; + ?int_range(_, _) -> [T]; + ?int_set(Set) -> + [t_integer(I) || I <- Set] + end; +t_elements(?opaque(_) = T) -> + do_elements(T); +t_elements(?map(_,_,_) = T) -> [T]; +t_elements(?tuple(_, _, _) = T) -> [T]; +t_elements(?tuple_set(_) = TS) -> + case t_tuple_subtypes(TS) of + unknown -> []; + Elems -> Elems + end; +t_elements(?union(_) = T) -> + do_elements(T); +t_elements(?var(_)) -> [?any]. %% yes, vars exist -- what else to do here? +%% t_elements(T) -> +%% io:format("T_ELEMENTS => ~p\n", [T]). + +do_elements(Type0) -> + case do_opaque(Type0, 'universe', fun(T) -> T end) of + ?union(List) -> lists:append([t_elements(T) || T <- List]); + Type -> t_elements(Type) + end. + +%%----------------------------------------------------------------------------- +%% Infimum +%% + +-spec t_inf([erl_type()]) -> erl_type(). + +t_inf([H1, H2|T]) -> + case t_inf(H1, H2) of + ?none -> ?none; + NewH -> t_inf([NewH|T]) + end; +t_inf([H]) -> H; +t_inf([]) -> ?none. + +-spec t_inf(erl_type(), erl_type()) -> erl_type(). + +t_inf(T1, T2) -> + t_inf(T1, T2, 'universe'). + +%% 'match' should be used from t_find_unknown_opaque() only +-type t_inf_opaques() :: opaques() | {'match', [erl_type() | 'universe']}. + +-spec t_inf(erl_type(), erl_type(), t_inf_opaques()) -> erl_type(). + +t_inf(?var(_), ?var(_), _Opaques) -> ?any; +t_inf(?var(_), T, _Opaques) -> subst_all_vars_to_any(T); +t_inf(T, ?var(_), _Opaques) -> subst_all_vars_to_any(T); +t_inf(?any, T, _Opaques) -> subst_all_vars_to_any(T); +t_inf(T, ?any, _Opaques) -> subst_all_vars_to_any(T); +t_inf(?none, _, _Opaques) -> ?none; +t_inf(_, ?none, _Opaques) -> ?none; +t_inf(?unit, _, _Opaques) -> ?unit; % ?unit cases should appear below ?none +t_inf(_, ?unit, _Opaques) -> ?unit; +t_inf(T, T, _Opaques) -> subst_all_vars_to_any(T); +t_inf(?atom(Set1), ?atom(Set2), _) -> + case set_intersection(Set1, Set2) of + ?none -> ?none; + NewSet -> ?atom(NewSet) + end; +t_inf(?bitstr(U1, B1), ?bitstr(0, B2), _Opaques) -> + if B2 >= B1 andalso (B2-B1) rem U1 =:= 0 -> t_bitstr(0, B2); + true -> ?none + end; +t_inf(?bitstr(0, B1), ?bitstr(U2, B2), _Opaques) -> + if B1 >= B2 andalso (B1-B2) rem U2 =:= 0 -> t_bitstr(0, B1); + true -> ?none + end; +t_inf(?bitstr(U1, B1), ?bitstr(U1, B1), _Opaques) -> + t_bitstr(U1, B1); +t_inf(?bitstr(U1, B1), ?bitstr(U2, B2), _Opaques) when U2 > U1 -> + inf_bitstr(U2, B2, U1, B1); +t_inf(?bitstr(U1, B1), ?bitstr(U2, B2), _Opaques) -> + inf_bitstr(U1, B1, U2, B2); +t_inf(?function(Domain1, Range1), ?function(Domain2, Range2), Opaques) -> + case t_inf(Domain1, Domain2, Opaques) of + ?none -> ?none; + Domain -> ?function(Domain, t_inf(Range1, Range2, Opaques)) + end; +t_inf(?identifier(Set1), ?identifier(Set2), _Opaques) -> + case set_intersection(Set1, Set2) of + ?none -> ?none; + Set -> ?identifier(Set) + end; +t_inf(?map(_, ADefK, ADefV) = A, ?map(_, BDefK, BDefV) = B, _Opaques) -> + %% Because it simplifies the anonymous function, we allow Pairs to temporarily + %% contain mandatory pairs with none values, since all such cases should + %% result in a none result. + Pairs = + map_pairwise_merge( + %% For optional keys in both maps, when the infinimum is none, we have + %% essentially concluded that K must not be a key in the map. + fun(K, ?opt, V1, ?opt, V2) -> {K, ?opt, t_inf(V1, V2)}; + %% When a key is optional in one map, but mandatory in another, it + %% becomes mandatory in the infinumum + (K, _, V1, _, V2) -> {K, ?mand, t_inf(V1, V2)} + end, A, B), + %% If the infinimum of any mandatory values is ?none, the entire map infinimum + %% is ?none. + case lists:any(fun({_,?mand,?none})->true; ({_,_,_}) -> false end, Pairs) of + true -> t_none(); + false -> t_map(Pairs, t_inf(ADefK, BDefK), t_inf(ADefV, BDefV)) + end; +t_inf(?matchstate(Pres1, Slots1), ?matchstate(Pres2, Slots2), _Opaques) -> + ?matchstate(t_inf(Pres1, Pres2), t_inf(Slots1, Slots2)); +t_inf(?nil, ?nil, _Opaques) -> ?nil; +t_inf(?nil, ?nonempty_list(_, _), _Opaques) -> + ?none; +t_inf(?nonempty_list(_, _), ?nil, _Opaques) -> + ?none; +t_inf(?nil, ?list(_Contents, Termination, _), Opaques) -> + t_inf(?nil, t_unopaque(Termination), Opaques); +t_inf(?list(_Contents, Termination, _), ?nil, Opaques) -> + t_inf(?nil, t_unopaque(Termination), Opaques); +t_inf(?list(Contents1, Termination1, Size1), + ?list(Contents2, Termination2, Size2), Opaques) -> + case t_inf(Termination1, Termination2, Opaques) of + ?none -> ?none; + Termination -> + case t_inf(Contents1, Contents2, Opaques) of + ?none -> + %% If none of the lists are nonempty, then the infimum is nil. + case (Size1 =:= ?unknown_qual) andalso (Size2 =:= ?unknown_qual) of + true -> t_nil(); + false -> ?none + end; + Contents -> + Size = + case {Size1, Size2} of + {?unknown_qual, ?unknown_qual} -> ?unknown_qual; + {?unknown_qual, ?nonempty_qual} -> ?nonempty_qual; + {?nonempty_qual, ?unknown_qual} -> ?nonempty_qual; + {?nonempty_qual, ?nonempty_qual} -> ?nonempty_qual + end, + ?list(Contents, Termination, Size) + end + end; +t_inf(?number(_, _) = T1, ?number(_, _) = T2, _Opaques) -> + case {T1, T2} of + {T, T} -> T; + {_, ?number(?any, ?unknown_qual)} -> T1; + {?number(?any, ?unknown_qual), _} -> T2; + {?float, ?integer(_)} -> ?none; + {?integer(_), ?float} -> ?none; + {?integer(?any), ?integer(_)} -> T2; + {?integer(_), ?integer(?any)} -> T1; + {?int_set(Set1), ?int_set(Set2)} -> + case set_intersection(Set1, Set2) of + ?none -> ?none; + Set -> ?int_set(Set) + end; + {?int_range(From1, To1), ?int_range(From2, To2)} -> + t_from_range(max(From1, From2), min(To1, To2)); + {Range = ?int_range(_, _), ?int_set(Set)} -> + %% io:format("t_inf range, set args ~p ~p ~n", [T1, T2]), + Ans2 = + case set_filter(fun(X) -> in_range(X, Range) end, Set) of + ?none -> ?none; + NewSet -> ?int_set(NewSet) + end, + %% io:format("Ans2 ~p ~n", [Ans2]), + Ans2; + {?int_set(Set), ?int_range(_, _) = Range} -> + case set_filter(fun(X) -> in_range(X, Range) end, Set) of + ?none -> ?none; + NewSet -> ?int_set(NewSet) + end + end; +t_inf(?product(Types1), ?product(Types2), Opaques) -> + L1 = length(Types1), + L2 = length(Types2), + if L1 =:= L2 -> ?product(t_inf_lists(Types1, Types2, Opaques)); + true -> ?none + end; +t_inf(?product(_), _, _Opaques) -> + ?none; +t_inf(_, ?product(_), _Opaques) -> + ?none; +t_inf(?tuple(?any, ?any, ?any), ?tuple(_, _, _) = T, _Opaques) -> + subst_all_vars_to_any(T); +t_inf(?tuple(_, _, _) = T, ?tuple(?any, ?any, ?any), _Opaques) -> + subst_all_vars_to_any(T); +t_inf(?tuple(?any, ?any, ?any), ?tuple_set(_) = T, _Opaques) -> + subst_all_vars_to_any(T); +t_inf(?tuple_set(_) = T, ?tuple(?any, ?any, ?any), _Opaques) -> + subst_all_vars_to_any(T); +t_inf(?tuple(Elements1, Arity, _Tag1), ?tuple(Elements2, Arity, _Tag2), Opaques) -> + case t_inf_lists_strict(Elements1, Elements2, Opaques) of + bottom -> ?none; + NewElements -> t_tuple(NewElements) + end; +t_inf(?tuple_set(List1), ?tuple_set(List2), Opaques) -> + inf_tuple_sets(List1, List2, Opaques); +t_inf(?tuple_set(List), ?tuple(_, Arity, _) = T, Opaques) -> + inf_tuple_sets(List, [{Arity, [T]}], Opaques); +t_inf(?tuple(_, Arity, _) = T, ?tuple_set(List), Opaques) -> + inf_tuple_sets(List, [{Arity, [T]}], Opaques); +%% be careful: here and in the next clause T can be ?opaque +t_inf(?union(U1), T, Opaques) -> + ?union(U2) = force_union(T), + inf_union(U1, U2, Opaques); +t_inf(T, ?union(U2), Opaques) -> + ?union(U1) = force_union(T), + inf_union(U1, U2, Opaques); +t_inf(?opaque(Set1), ?opaque(Set2), Opaques) -> + inf_opaque(Set1, Set2, Opaques); +t_inf(?opaque(_) = T1, T2, Opaques) -> + inf_opaque1(T2, T1, 1, Opaques); +t_inf(T1, ?opaque(_) = T2, Opaques) -> + inf_opaque1(T1, T2, 2, Opaques); +%% and as a result, the cases for ?opaque should appear *after* ?union +t_inf(#c{}, #c{}, _) -> + ?none. + +inf_opaque1(T1, ?opaque(Set2)=T2, Pos, Opaques) -> + case Opaques =:= 'universe' orelse inf_is_opaque_type(T2, Pos, Opaques) of + false -> ?none; + true -> + List2 = set_to_list(Set2), + case inf_collect(T1, List2, Opaques, []) of + [] -> ?none; + OpL -> ?opaque(ordsets:from_list(OpL)) + end + end. + +inf_is_opaque_type(T, Pos, {match, Opaques}) -> + is_opaque_type(T, Opaques) orelse throw({pos, [Pos]}); +inf_is_opaque_type(T, _Pos, Opaques) -> + is_opaque_type(T, Opaques). + +inf_collect(T1, [T2|List2], Opaques, OpL) -> + #opaque{struct = S2} = T2, + case t_inf(T1, S2, Opaques) of + ?none -> inf_collect(T1, List2, Opaques, OpL); + Inf -> + Op = T2#opaque{struct = Inf}, + inf_collect(T1, List2, Opaques, [Op|OpL]) + end; +inf_collect(_T1, [], _Opaques, OpL) -> + OpL. + +combine(S, T1, T2) -> + #opaque{mod = Mod1, name = Name1, args = Args1} = T1, + #opaque{mod = Mod2, name = Name2, args = Args2} = T2, + Comb1 = comb(Mod1, Name1, Args1, S, T1), + case is_compat_opaque_names({Mod1, Name1, Args1}, {Mod2, Name2, Args2}) of + true -> Comb1; + false -> Comb1 ++ comb(Mod2, Name2, Args2, S, T2) + end. + +comb(Mod, Name, Args, S, T) -> + case can_combine_opaque_names(Mod, Name, Args, S) of + true -> + ?opaque(Set) = S, + Set; + false -> + [T#opaque{struct = S}] + end. + +can_combine_opaque_names(Mod1, Name1, Args1, + ?opaque([#opaque{mod = Mod2, name = Name2, args = Args2}])) -> + is_compat_opaque_names({Mod1, Name1, Args1}, {Mod2, Name2, Args2}); +can_combine_opaque_names(_, _, _, _) -> false. + +%% Combining two lists this way can be very time consuming... +%% Note: two parameterized opaque types are not the same if their +%% actual parameters differ +inf_opaque(Set1, Set2, Opaques) -> + List1 = inf_look_up(Set1, Opaques), + List2 = inf_look_up(Set2, Opaques), + List0 = [combine(Inf, T1, T2) || + {Is1, ModNameArgs1, T1} <- List1, + {Is2, ModNameArgs2, T2} <- List2, + not t_is_none(Inf = inf_opaque_types(Is1, ModNameArgs1, T1, + Is2, ModNameArgs2, T2, + Opaques))], + List = lists:sort(lists:append(List0)), + sup_opaque(List). + +%% Optimization: do just one lookup. +inf_look_up(Set, Opaques) -> + [{Opaques =:= 'universe' orelse inf_is_opaque_type2(T, Opaques), + {M, N, Args}, T} || + #opaque{mod = M, name = N, args = Args} = T <- set_to_list(Set)]. + +inf_is_opaque_type2(T, {match, Opaques}) -> + is_opaque_type2(T, Opaques); +inf_is_opaque_type2(T, Opaques) -> + is_opaque_type2(T, Opaques). + +inf_opaque_types(IsOpaque1, ModNameArgs1, T1, + IsOpaque2, ModNameArgs2, T2, Opaques) -> + #opaque{struct = S1}=T1, + #opaque{struct = S2}=T2, + case + Opaques =:= 'universe' orelse + is_compat_opaque_names(ModNameArgs1, ModNameArgs2) + of + true -> t_inf(S1, S2, Opaques); + false -> + case {IsOpaque1, IsOpaque2} of + {true, true} -> t_inf(S1, S2, Opaques); + {true, false} -> t_inf(S1, ?opaque(set_singleton(T2)), Opaques); + {false, true} -> t_inf(?opaque(set_singleton(T1)), S2, Opaques); + {false, false} when element(1, Opaques) =:= match -> + throw({pos, [1, 2]}); + {false, false} -> t_none() + end + end. + +is_compat_opaque_names(ModNameArgs, ModNameArgs) -> true; +is_compat_opaque_names({Mod,Name,Args1}, {Mod,Name,Args2}) -> + is_compat_args(Args1, Args2); +is_compat_opaque_names(_, _) -> false. + +is_compat_args([A1|Args1], [A2|Args2]) -> + is_compat_arg(A1, A2) andalso is_compat_args(Args1, Args2); +is_compat_args([], []) -> true; +is_compat_args(_, _) -> false. + +is_compat_arg(A1, A2) -> + is_specialization(A1, A2) orelse is_specialization(A2, A1). + +-spec is_specialization(erl_type(), erl_type()) -> boolean(). + +%% Returns true if the first argument is a specialization of the +%% second argument in the sense that every type is a specialization of +%% any(). For example, {_,_} is a specialization of any(), but not of +%% tuple(). Does not handle variables, but any() and unions (sort of). + +is_specialization(T, T) -> true; +is_specialization(_, ?any) -> true; +is_specialization(?any, _) -> false; +is_specialization(?function(Domain1, Range1), ?function(Domain2, Range2)) -> + (is_specialization(Domain1, Domain2) andalso + is_specialization(Range1, Range2)); +is_specialization(?list(Contents1, Termination1, Size1), + ?list(Contents2, Termination2, Size2)) -> + (Size1 =:= Size2 andalso + is_specialization(Contents1, Contents2) andalso + is_specialization(Termination1, Termination2)); +is_specialization(?product(Types1), ?product(Types2)) -> + specialization_list(Types1, Types2); +is_specialization(?tuple(?any, ?any, ?any), ?tuple(_, _, _)) -> false; +is_specialization(?tuple(_, _, _), ?tuple(?any, ?any, ?any)) -> false; +is_specialization(?tuple(Elements1, Arity, _), + ?tuple(Elements2, Arity, _)) when Arity =/= ?any -> + specialization_list(Elements1, Elements2); +is_specialization(?tuple_set([{Arity, List}]), + ?tuple(Elements2, Arity, _)) when Arity =/= ?any -> + specialization_list(sup_tuple_elements(List), Elements2); +is_specialization(?tuple(Elements1, Arity, _), + ?tuple_set([{Arity, List}])) when Arity =/= ?any -> + specialization_list(Elements1, sup_tuple_elements(List)); +is_specialization(?tuple_set(List1), ?tuple_set(List2)) -> + try + specialization_list_list([sup_tuple_elements(T) || {_Arity, T} <- List1], + [sup_tuple_elements(T) || {_Arity, T} <- List2]) + catch _:_ -> false + end; +is_specialization(?union(List1)=T1, ?union(List2)=T2) -> + case specialization_union2(T1, T2) of + {yes, Type1, Type2} -> is_specialization(Type1, Type2); + no -> specialization_list(List1, List2) + end; +is_specialization(?union(List), T2) -> + case unify_union(List) of + {yes, Type} -> is_specialization(Type, T2); + no -> false + end; +is_specialization(T1, ?union(List)) -> + case unify_union(List) of + {yes, Type} -> is_specialization(T1, Type); + no -> false + end; +is_specialization(?opaque(_) = T1, T2) -> + is_specialization(t_opaque_structure(T1), T2); +is_specialization(T1, ?opaque(_) = T2) -> + is_specialization(T1, t_opaque_structure(T2)); +is_specialization(?var(_), _) -> exit(error); +is_specialization(_, ?var(_)) -> exit(error); +is_specialization(?none, _) -> false; +is_specialization(_, ?none) -> false; +is_specialization(?unit, _) -> false; +is_specialization(_, ?unit) -> false; +is_specialization(#c{}, #c{}) -> false. + +specialization_list_list(LL1, LL2) -> + length(LL1) =:= length(LL2) andalso specialization_list_list1(LL1, LL2). + +specialization_list_list1([], []) -> true; +specialization_list_list1([L1|LL1], [L2|LL2]) -> + specialization_list(L1, L2) andalso specialization_list_list1(LL1, LL2). + +specialization_list(L1, L2) -> + length(L1) =:= length(L2) andalso specialization_list1(L1, L2). + +specialization_list1([], []) -> true; +specialization_list1([T1|L1], [T2|L2]) -> + is_specialization(T1, T2) andalso specialization_list1(L1, L2). + +specialization_union2(?union(List1)=T1, ?union(List2)=T2) -> + case {unify_union(List1), unify_union(List2)} of + {{yes, Type1}, {yes, Type2}} -> {yes, Type1, Type2}; + {{yes, Type1}, no} -> {yes, Type1, T2}; + {no, {yes, Type2}} -> {yes, T1, Type2}; + {no, no} -> no + end. + +-spec t_inf_lists([erl_type()], [erl_type()]) -> [erl_type()]. + +t_inf_lists(L1, L2) -> + t_inf_lists(L1, L2, 'universe'). + +-spec t_inf_lists([erl_type()], [erl_type()], t_inf_opaques()) -> [erl_type()]. + +t_inf_lists(L1, L2, Opaques) -> + t_inf_lists(L1, L2, [], Opaques). + +-spec t_inf_lists([erl_type()], [erl_type()], [erl_type()], [erl_type()]) -> [erl_type()]. + +t_inf_lists([T1|Left1], [T2|Left2], Acc, Opaques) -> + t_inf_lists(Left1, Left2, [t_inf(T1, T2, Opaques)|Acc], Opaques); +t_inf_lists([], [], Acc, _Opaques) -> + lists:reverse(Acc). + +%% Infimum of lists with strictness. +%% If any element is the ?none type, the value 'bottom' is returned. + +-spec t_inf_lists_strict([erl_type()], [erl_type()], [erl_type()]) -> 'bottom' | [erl_type()]. + +t_inf_lists_strict(L1, L2, Opaques) -> + t_inf_lists_strict(L1, L2, [], Opaques). + +-spec t_inf_lists_strict([erl_type()], [erl_type()], [erl_type()], [erl_type()]) -> 'bottom' | [erl_type()]. + +t_inf_lists_strict([T1|Left1], [T2|Left2], Acc, Opaques) -> + case t_inf(T1, T2, Opaques) of + ?none -> bottom; + T -> t_inf_lists_strict(Left1, Left2, [T|Acc], Opaques) + end; +t_inf_lists_strict([], [], Acc, _Opaques) -> + lists:reverse(Acc). + +inf_tuple_sets(L1, L2, Opaques) -> + case inf_tuple_sets(L1, L2, [], Opaques) of + [] -> ?none; + [{_Arity, [?tuple(_, _, _) = OneTuple]}] -> OneTuple; + List -> ?tuple_set(List) + end. + +inf_tuple_sets([{Arity, Tuples1}|Ts1], [{Arity, Tuples2}|Ts2], Acc, Opaques) -> + case inf_tuples_in_sets(Tuples1, Tuples2, Opaques) of + [] -> inf_tuple_sets(Ts1, Ts2, Acc, Opaques); + [?tuple_set([{Arity, NewTuples}])] -> + inf_tuple_sets(Ts1, Ts2, [{Arity, NewTuples}|Acc], Opaques); + NewTuples -> inf_tuple_sets(Ts1, Ts2, [{Arity, NewTuples}|Acc], Opaques) + end; +inf_tuple_sets([{Arity1, _}|Ts1] = L1, [{Arity2, _}|Ts2] = L2, Acc, Opaques) -> + if Arity1 < Arity2 -> inf_tuple_sets(Ts1, L2, Acc, Opaques); + Arity1 > Arity2 -> inf_tuple_sets(L1, Ts2, Acc, Opaques) + end; +inf_tuple_sets([], _, Acc, _Opaques) -> lists:reverse(Acc); +inf_tuple_sets(_, [], Acc, _Opaques) -> lists:reverse(Acc). + +inf_tuples_in_sets([?tuple(Elements1, _, ?any)], L2, Opaques) -> + NewList = [t_inf_lists_strict(Elements1, Elements2, Opaques) + || ?tuple(Elements2, _, _) <- L2], + [t_tuple(Es) || Es <- NewList, Es =/= bottom]; +inf_tuples_in_sets(L1, [?tuple(Elements2, _, ?any)], Opaques) -> + NewList = [t_inf_lists_strict(Elements1, Elements2, Opaques) + || ?tuple(Elements1, _, _) <- L1], + [t_tuple(Es) || Es <- NewList, Es =/= bottom]; +inf_tuples_in_sets(L1, L2, Opaques) -> + inf_tuples_in_sets2(L1, L2, [], Opaques). + +inf_tuples_in_sets2([?tuple(Elements1, Arity, Tag)|Ts1], + [?tuple(Elements2, Arity, Tag)|Ts2], Acc, Opaques) -> + case t_inf_lists_strict(Elements1, Elements2, Opaques) of + bottom -> inf_tuples_in_sets2(Ts1, Ts2, Acc, Opaques); + NewElements -> + inf_tuples_in_sets2(Ts1, Ts2, [?tuple(NewElements, Arity, Tag)|Acc], + Opaques) + end; +inf_tuples_in_sets2([?tuple(_, _, Tag1)|Ts1] = L1, + [?tuple(_, _, Tag2)|Ts2] = L2, Acc, Opaques) -> + if Tag1 < Tag2 -> inf_tuples_in_sets2(Ts1, L2, Acc, Opaques); + Tag1 > Tag2 -> inf_tuples_in_sets2(L1, Ts2, Acc, Opaques) + end; +inf_tuples_in_sets2([], _, Acc, _Opaques) -> lists:reverse(Acc); +inf_tuples_in_sets2(_, [], Acc, _Opaques) -> lists:reverse(Acc). + +inf_union(U1, U2, Opaques) -> + OpaqueFun = + fun(Union1, Union2, InfFun) -> + [_,_,_,_,_,_,_,_,Opaque,_] = Union1, + [A,B,F,I,L,N,T,M,_,Map] = Union2, + List = [A,B,F,I,L,N,T,M,Map], + inf_union_collect(List, Opaque, InfFun, [], []) + end, + {O1, ThrowList1} = + OpaqueFun(U1, U2, fun(E, Opaque) -> t_inf(Opaque, E, Opaques) end), + {O2, ThrowList2} + = OpaqueFun(U2, U1, fun(E, Opaque) -> t_inf(E, Opaque, Opaques) end), + {Union, ThrowList3} = inf_union(U1, U2, 0, [], [], Opaques), + ThrowList = lists:merge3(ThrowList1, ThrowList2, ThrowList3), + case t_sup([O1, O2, Union]) of + ?none when ThrowList =/= [] -> throw({pos, lists:usort(ThrowList)}); + Sup -> Sup + end. + +inf_union_collect([], _Opaque, _InfFun, InfList, ThrowList) -> + {t_sup(InfList), lists:usort(ThrowList)}; +inf_union_collect([?none|L], Opaque, InfFun, InfList, ThrowList) -> + inf_union_collect(L, Opaque, InfFun, [?none|InfList], ThrowList); +inf_union_collect([E|L], Opaque, InfFun, InfList, ThrowList) -> + try InfFun(E, Opaque)of + Inf -> + inf_union_collect(L, Opaque, InfFun, [Inf|InfList], ThrowList) + catch throw:{pos, Ns} -> + inf_union_collect(L, Opaque, InfFun, InfList, Ns ++ ThrowList) + end. + +inf_union([?none|Left1], [?none|Left2], N, Acc, ThrowList, Opaques) -> + inf_union(Left1, Left2, N, [?none|Acc], ThrowList, Opaques); +inf_union([T1|Left1], [T2|Left2], N, Acc, ThrowList, Opaques) -> + try t_inf(T1, T2, Opaques) of + ?none -> inf_union(Left1, Left2, N, [?none|Acc], ThrowList, Opaques); + T -> inf_union(Left1, Left2, N+1, [T|Acc], ThrowList, Opaques) + catch throw:{pos, Ns} -> + inf_union(Left1, Left2, N, [?none|Acc], Ns ++ ThrowList, Opaques) + end; +inf_union([], [], N, Acc, ThrowList, _Opaques) -> + if N =:= 0 -> {?none, ThrowList}; + N =:= 1 -> + [Type] = [T || T <- Acc, T =/= ?none], + {Type, ThrowList}; + N >= 2 -> {?union(lists:reverse(Acc)), ThrowList} + end. + +inf_bitstr(U1, B1, U2, B2) -> + GCD = gcd(U1, U2), + case (B2-B1) rem GCD of + 0 -> + U = (U1*U2) div GCD, + B = findfirst(0, 0, U1, B1, U2, B2), + t_bitstr(U, B); + _ -> + ?none + end. + +findfirst(N1, N2, U1, B1, U2, B2) -> + Val1 = U1*N1+B1, + Val2 = U2*N2+B2, + if Val1 =:= Val2 -> + Val1; + Val1 > Val2 -> + findfirst(N1, N2+1, U1, B1, U2, B2); + Val1 < Val2 -> + findfirst(N1+1, N2, U1, B1, U2, B2) + end. + +%%----------------------------------------------------------------------------- +%% Substitution of variables +%% + +-type subst_table() :: #{any() => erl_type()}. + +-spec t_subst(erl_type(), subst_table()) -> erl_type(). + +t_subst(T, Map) -> + case t_has_var(T) of + true -> t_subst_aux(T, Map); + false -> T + end. + +-spec subst_all_vars_to_any(erl_type()) -> erl_type(). + +subst_all_vars_to_any(T) -> + t_subst(T, #{}). + +t_subst_aux(?var(Id), Map) -> + case maps:find(Id, Map) of + error -> ?any; + {ok, Type} -> Type + end; +t_subst_aux(?list(Contents, Termination, Size), Map) -> + case t_subst_aux(Contents, Map) of + ?none -> ?none; + NewContents -> + %% Be careful here to make the termination collapse if necessary. + case t_subst_aux(Termination, Map) of + ?nil -> ?list(NewContents, ?nil, Size); + ?any -> ?list(NewContents, ?any, Size); + Other -> + ?list(NewContents2, NewTermination, _) = t_cons(NewContents, Other), + ?list(NewContents2, NewTermination, Size) + end + end; +t_subst_aux(?function(Domain, Range), Map) -> + ?function(t_subst_aux(Domain, Map), t_subst_aux(Range, Map)); +t_subst_aux(?product(Types), Map) -> + ?product([t_subst_aux(T, Map) || T <- Types]); +t_subst_aux(?tuple(?any, ?any, ?any) = T, _Map) -> + T; +t_subst_aux(?tuple(Elements, _Arity, _Tag), Map) -> + t_tuple([t_subst_aux(E, Map) || E <- Elements]); +t_subst_aux(?tuple_set(_) = TS, Map) -> + t_sup([t_subst_aux(T, Map) || T <- t_tuple_subtypes(TS)]); +t_subst_aux(?map(Pairs, DefK, DefV), Map) -> + t_map([{K, MNess, t_subst_aux(V, Map)} || {K, MNess, V} <- Pairs], + t_subst_aux(DefK, Map), t_subst_aux(DefV, Map)); +t_subst_aux(?opaque(Es), Map) -> + List = [Opaque#opaque{args = [t_subst_aux(Arg, Map) || Arg <- Args], + struct = t_subst_aux(S, Map)} || + Opaque = #opaque{args = Args, struct = S} <- set_to_list(Es)], + ?opaque(ordsets:from_list(List)); +t_subst_aux(?union(List), Map) -> + ?union([t_subst_aux(E, Map) || E <- List]); +t_subst_aux(T, _Map) -> + T. + +%%----------------------------------------------------------------------------- +%% Unification +%% + +-type t_unify_ret() :: {erl_type(), [{_, erl_type()}]}. + +-spec t_unify(erl_type(), erl_type()) -> t_unify_ret(). + +t_unify(T1, T2) -> + {T, VarMap} = t_unify(T1, T2, #{}), + {t_subst(T, VarMap), lists:keysort(1, maps:to_list(VarMap))}. + +t_unify(?var(Id) = T, ?var(Id), VarMap) -> + {T, VarMap}; +t_unify(?var(Id1) = T, ?var(Id2), VarMap) -> + case maps:find(Id1, VarMap) of + error -> + case maps:find(Id2, VarMap) of + error -> {T, VarMap#{Id2 => T}}; + {ok, Type} -> t_unify(T, Type, VarMap) + end; + {ok, Type1} -> + case maps:find(Id2, VarMap) of + error -> {Type1, VarMap#{Id2 => T}}; + {ok, Type2} -> t_unify(Type1, Type2, VarMap) + end + end; +t_unify(?var(Id), Type, VarMap) -> + case maps:find(Id, VarMap) of + error -> {Type, VarMap#{Id => Type}}; + {ok, VarType} -> t_unify(VarType, Type, VarMap) + end; +t_unify(Type, ?var(Id), VarMap) -> + case maps:find(Id, VarMap) of + error -> {Type, VarMap#{Id => Type}}; + {ok, VarType} -> t_unify(VarType, Type, VarMap) + end; +t_unify(?function(Domain1, Range1), ?function(Domain2, Range2), VarMap) -> + {Domain, VarMap1} = t_unify(Domain1, Domain2, VarMap), + {Range, VarMap2} = t_unify(Range1, Range2, VarMap1), + {?function(Domain, Range), VarMap2}; +t_unify(?list(Contents1, Termination1, Size), + ?list(Contents2, Termination2, Size), VarMap) -> + {Contents, VarMap1} = t_unify(Contents1, Contents2, VarMap), + {Termination, VarMap2} = t_unify(Termination1, Termination2, VarMap1), + {?list(Contents, Termination, Size), VarMap2}; +t_unify(?product(Types1), ?product(Types2), VarMap) -> + {Types, VarMap1} = unify_lists(Types1, Types2, VarMap), + {?product(Types), VarMap1}; +t_unify(?tuple(?any, ?any, ?any) = T, ?tuple(?any, ?any, ?any), VarMap) -> + {T, VarMap}; +t_unify(?tuple(Elements1, Arity, _), + ?tuple(Elements2, Arity, _), VarMap) when Arity =/= ?any -> + {NewElements, VarMap1} = unify_lists(Elements1, Elements2, VarMap), + {t_tuple(NewElements), VarMap1}; +t_unify(?tuple_set([{Arity, _}]) = T1, + ?tuple(_, Arity, _) = T2, VarMap) when Arity =/= ?any -> + unify_tuple_set_and_tuple1(T1, T2, VarMap); +t_unify(?tuple(_, Arity, _) = T1, + ?tuple_set([{Arity, _}]) = T2, VarMap) when Arity =/= ?any -> + unify_tuple_set_and_tuple2(T1, T2, VarMap); +t_unify(?tuple_set(List1) = T1, ?tuple_set(List2) = T2, VarMap) -> + try + unify_lists(lists:append([T || {_Arity, T} <- List1]), + lists:append([T || {_Arity, T} <- List2]), VarMap) + of + {Tuples, NewVarMap} -> {t_sup(Tuples), NewVarMap} + catch _:_ -> throw({mismatch, T1, T2}) + end; +t_unify(?map(_, ADefK, ADefV) = A, ?map(_, BDefK, BDefV) = B, VarMap0) -> + {DefK, VarMap1} = t_unify(ADefK, BDefK, VarMap0), + {DefV, VarMap2} = t_unify(ADefV, BDefV, VarMap1), + {Pairs, VarMap} = + map_pairwise_merge_foldr( + fun(K, MNess, V1, MNess, V2, {Pairs0, VarMap3}) -> + %% We know that the keys unify and do not contain variables, or they + %% would not be singletons + %% TODO: Should V=?none (known missing keys) be handled special? + {V, VarMap4} = t_unify(V1, V2, VarMap3), + {[{K,MNess,V}|Pairs0], VarMap4}; + (K, _, V1, _, V2, {Pairs0, VarMap3}) -> + %% One mandatory and one optional; what should be done in this case? + {V, VarMap4} = t_unify(V1, V2, VarMap3), + {[{K,?mand,V}|Pairs0], VarMap4} + end, {[], VarMap2}, A, B), + {t_map(Pairs, DefK, DefV), VarMap}; +t_unify(?opaque(_) = T1, ?opaque(_) = T2, VarMap) -> + t_unify(t_opaque_structure(T1), t_opaque_structure(T2), VarMap); +t_unify(T1, ?opaque(_) = T2, VarMap) -> + t_unify(T1, t_opaque_structure(T2), VarMap); +t_unify(?opaque(_) = T1, T2, VarMap) -> + t_unify(t_opaque_structure(T1), T2, VarMap); +t_unify(T, T, VarMap) -> + {T, VarMap}; +t_unify(?union(_)=T1, ?union(_)=T2, VarMap) -> + {Type1, Type2} = unify_union2(T1, T2), + t_unify(Type1, Type2, VarMap); +t_unify(?union(_)=T1, T2, VarMap) -> + t_unify(unify_union1(T1, T1, T2), T2, VarMap); +t_unify(T1, ?union(_)=T2, VarMap) -> + t_unify(T1, unify_union1(T2, T1, T2), VarMap); +t_unify(T1, T2, _) -> + throw({mismatch, T1, T2}). + +unify_union2(?union(List1)=T1, ?union(List2)=T2) -> + case {unify_union(List1), unify_union(List2)} of + {{yes, Type1}, {yes, Type2}} -> {Type1, Type2}; + {{yes, Type1}, no} -> {Type1, T2}; + {no, {yes, Type2}} -> {T1, Type2}; + {no, no} -> throw({mismatch, T1, T2}) + end. + +unify_union1(?union(List), T1, T2) -> + case unify_union(List) of + {yes, Type} -> Type; + no -> throw({mismatch, T1, T2}) + end. + +unify_union(List) -> + [A,B,F,I,L,N,T,M,O,Map] = List, + if O =:= ?none -> no; + true -> + S = t_opaque_structure(O), + {yes, t_sup([A,B,F,I,L,N,T,M,S,Map])} + end. + +-spec is_opaque_type(erl_type(), [erl_type()]) -> boolean(). + +%% An opaque type is a union of types. Returns true iff any of the type +%% names (Module and Name) of the first argument (the opaque type to +%% check) occurs in any of the opaque types of the second argument. +is_opaque_type(?opaque(Elements), Opaques) -> + lists:any(fun(Opaque) -> is_opaque_type2(Opaque, Opaques) end, Elements). + +is_opaque_type2(#opaque{mod = Mod1, name = Name1, args = Args1}, Opaques) -> + F1 = fun(?opaque(Es)) -> + F2 = fun(#opaque{mod = Mod, name = Name, args = Args}) -> + is_type_name(Mod1, Name1, Args1, Mod, Name, Args) + end, + lists:any(F2, Es) + end, + lists:any(F1, Opaques). + +is_type_name(Mod, Name, Args1, Mod, Name, Args2) -> + length(Args1) =:= length(Args2); +is_type_name(_Mod1, _Name1, _Args1, _Mod2, _Name2, _Args2) -> + false. + +%% Two functions since t_unify is not symmetric. +unify_tuple_set_and_tuple1(?tuple_set([{Arity, List}]), + ?tuple(Elements2, Arity, _), VarMap) -> + %% Can only work if the single tuple has variables at correct places. + %% Collapse the tuple set. + {NewElements, VarMap1} = + unify_lists(sup_tuple_elements(List), Elements2, VarMap), + {t_tuple(NewElements), VarMap1}. + +unify_tuple_set_and_tuple2(?tuple(Elements2, Arity, _), + ?tuple_set([{Arity, List}]), VarMap) -> + %% Can only work if the single tuple has variables at correct places. + %% Collapse the tuple set. + {NewElements, VarMap1} = + unify_lists(Elements2, sup_tuple_elements(List), VarMap), + {t_tuple(NewElements), VarMap1}. + +unify_lists(L1, L2, VarMap) -> + unify_lists(L1, L2, VarMap, []). + +unify_lists([T1|Left1], [T2|Left2], VarMap, Acc) -> + {NewT, NewVarMap} = t_unify(T1, T2, VarMap), + unify_lists(Left1, Left2, NewVarMap, [NewT|Acc]); +unify_lists([], [], VarMap, Acc) -> + {lists:reverse(Acc), VarMap}. + +%%t_assign_variables_to_subtype(T1, T2) -> +%% try +%% Dict = assign_vars(T1, T2, dict:new()), +%% {ok, dict:map(fun(_Param, List) -> t_sup(List) end, Dict)} +%% catch +%% throw:error -> error +%% end. + +%%assign_vars(_, ?var(_), _Dict) -> +%% erlang:error("Variable in right hand side of assignment"); +%%assign_vars(?any, _, Dict) -> +%% Dict; +%%assign_vars(?var(_) = Var, Type, Dict) -> +%% store_var(Var, Type, Dict); +%%assign_vars(?function(Domain1, Range1), ?function(Domain2, Range2), Dict) -> +%% DomainList = +%% case Domain2 of +%% ?any -> []; +%% ?product(List) -> List +%% end, +%% case any_none([Range2|DomainList]) of +%% true -> throw(error); +%% false -> +%% Dict1 = assign_vars(Domain1, Domain2, Dict), +%% assign_vars(Range1, Range2, Dict1) +%% end; +%%assign_vars(?list(_Contents, _Termination, ?any), ?nil, Dict) -> +%% Dict; +%%assign_vars(?list(Contents1, Termination1, Size1), +%% ?list(Contents2, Termination2, Size2), Dict) -> +%% Dict1 = assign_vars(Contents1, Contents2, Dict), +%% Dict2 = assign_vars(Termination1, Termination2, Dict1), +%% case {Size1, Size2} of +%% {S, S} -> Dict2; +%% {?any, ?nonempty_qual} -> Dict2; +%% {_, _} -> throw(error) +%% end; +%%assign_vars(?product(Types1), ?product(Types2), Dict) -> +%% case length(Types1) =:= length(Types2) of +%% true -> assign_vars_lists(Types1, Types2, Dict); +%% false -> throw(error) +%% end; +%%assign_vars(?tuple(?any, ?any, ?any), ?tuple(?any, ?any, ?any), Dict) -> +%% Dict; +%%assign_vars(?tuple(?any, ?any, ?any), ?tuple(_, _, _), Dict) -> +%% Dict; +%%assign_vars(?tuple(Elements1, Arity, _), +%% ?tuple(Elements2, Arity, _), Dict) when Arity =/= ?any -> +%% assign_vars_lists(Elements1, Elements2, Dict); +%%assign_vars(?tuple_set(_) = T, ?tuple_set(List2), Dict) -> +%% %% All Rhs tuples must already be subtypes of Lhs, so we can take +%% %% each one separatly. +%% assign_vars_lists([T || _ <- List2], List2, Dict); +%%assign_vars(?tuple(?any, ?any, ?any), ?tuple_set(_), Dict) -> +%% Dict; +%%assign_vars(?tuple(_, Arity, _) = T1, ?tuple_set(List), Dict) -> +%% case reduce_tuple_tags(List) of +%% [Tuple = ?tuple(_, Arity, _)] -> assign_vars(T1, Tuple, Dict); +%% _ -> throw(error) +%% end; +%%assign_vars(?tuple_set(List), ?tuple(_, Arity, Tag) = T2, Dict) -> +%% case [T || ?tuple(_, Arity1, Tag1) = T <- List, +%% Arity1 =:= Arity, Tag1 =:= Tag] of +%% [] -> throw(error); +%% [T1] -> assign_vars(T1, T2, Dict) +%% end; +%%assign_vars(?union(U1), T2, Dict) -> +%% ?union(U2) = force_union(T2), +%% assign_vars_lists(U1, U2, Dict); +%%assign_vars(T, T, Dict) -> +%% Dict; +%%assign_vars(T1, T2, Dict) -> +%% case t_is_subtype(T2, T1) of +%% false -> throw(error); +%% true -> Dict +%% end. + +%%assign_vars_lists([T1|Left1], [T2|Left2], Dict) -> +%% assign_vars_lists(Left1, Left2, assign_vars(T1, T2, Dict)); +%%assign_vars_lists([], [], Dict) -> +%% Dict. + +%%store_var(?var(Id), Type, Dict) -> +%% case dict:find(Id, Dict) of +%% error -> dict:store(Id, [Type], Dict); +%% {ok, _VarType0} -> dict:update(Id, fun(X) -> [Type|X] end, Dict) +%% end. + +%%----------------------------------------------------------------------------- +%% Subtraction. +%% +%% Note that the subtraction is an approximation since we do not have +%% negative types. Also, tuples and products should be handled using +%% the cartesian product of the elements, but this is not feasible to +%% do. +%% +%% Example: {a|b,c|d}\{a,d} = {a,c}|{a,d}|{b,c}|{b,d} \ {a,d} = +%% = {a,c}|{b,c}|{b,d} = {a|b,c|d} +%% +%% Instead, we can subtract if all elements but one becomes none after +%% subtracting element-wise. +%% +%% Example: {a|b,c|d}\{a|b,d} = {a,c}|{a,d}|{b,c}|{b,d} \ {a,d}|{b,d} = +%% = {a,c}|{b,c} = {a|b,c} + +-spec t_subtract_list(erl_type(), [erl_type()]) -> erl_type(). + +t_subtract_list(T1, [T2|Left]) -> + t_subtract_list(t_subtract(T1, T2), Left); +t_subtract_list(T, []) -> + T. + +-spec t_subtract(erl_type(), erl_type()) -> erl_type(). + +t_subtract(_, ?any) -> ?none; +t_subtract(T, ?var(_)) -> T; +t_subtract(?any, _) -> ?any; +t_subtract(?var(_) = T, _) -> T; +t_subtract(T, ?unit) -> T; +t_subtract(?unit, _) -> ?unit; +t_subtract(?none, _) -> ?none; +t_subtract(T, ?none) -> T; +t_subtract(?atom(Set1), ?atom(Set2)) -> + case set_subtract(Set1, Set2) of + ?none -> ?none; + Set -> ?atom(Set) + end; +t_subtract(?bitstr(U1, B1), ?bitstr(U2, B2)) -> + subtract_bin(t_bitstr(U1, B1), t_inf(t_bitstr(U1, B1), t_bitstr(U2, B2))); +t_subtract(?function(_, _) = T1, ?function(_, _) = T2) -> + case t_is_subtype(T1, T2) of + true -> ?none; + false -> T1 + end; +t_subtract(?identifier(Set1), ?identifier(Set2)) -> + case set_subtract(Set1, Set2) of + ?none -> ?none; + Set -> ?identifier(Set) + end; +t_subtract(?opaque(_)=T1, ?opaque(_)=T2) -> + opaque_subtract(T1, t_opaque_structure(T2)); +t_subtract(?opaque(_)=T1, T2) -> + opaque_subtract(T1, T2); +t_subtract(T1, ?opaque(_)=T2) -> + t_subtract(T1, t_opaque_structure(T2)); +t_subtract(?matchstate(Pres1, Slots1), ?matchstate(Pres2, _Slots2)) -> + Pres = t_subtract(Pres1, Pres2), + case t_is_none(Pres) of + true -> ?none; + false -> ?matchstate(Pres, Slots1) + end; +t_subtract(?matchstate(Present, Slots), _) -> + ?matchstate(Present, Slots); +t_subtract(?nil, ?nil) -> + ?none; +t_subtract(?nil, ?nonempty_list(_, _)) -> + ?nil; +t_subtract(?nil, ?list(_, _, _)) -> + ?none; +t_subtract(?list(Contents, Termination, _Size) = T, ?nil) -> + case Termination =:= ?nil of + true -> ?nonempty_list(Contents, Termination); + false -> T + end; +t_subtract(?list(Contents1, Termination1, Size1) = T, + ?list(Contents2, Termination2, Size2)) -> + case t_is_subtype(Contents1, Contents2) of + true -> + case t_is_subtype(Termination1, Termination2) of + true -> + case {Size1, Size2} of + {?nonempty_qual, ?unknown_qual} -> ?none; + {?unknown_qual, ?nonempty_qual} -> ?nil; + {S, S} -> ?none + end; + false -> + %% If the termination is not covered by the subtracted type + %% we cannot really say anything about the result. + T + end; + false -> + %% All contents must be covered if there is going to be any + %% change to the list. + T + end; +t_subtract(?float, ?float) -> ?none; +t_subtract(?number(_, _) = T1, ?float) -> t_inf(T1, t_integer()); +t_subtract(?float, ?number(_Set, Tag)) -> + case Tag of + ?unknown_qual -> ?none; + _ -> ?float + end; +t_subtract(?number(_, _), ?number(?any, ?unknown_qual)) -> ?none; +t_subtract(?number(_, _) = T1, ?integer(?any)) -> t_inf(?float, T1); +t_subtract(?int_set(Set1), ?int_set(Set2)) -> + case set_subtract(Set1, Set2) of + ?none -> ?none; + Set -> ?int_set(Set) + end; +t_subtract(?int_range(From1, To1) = T1, ?int_range(_, _) = T2) -> + case t_inf(T1, T2) of + ?none -> T1; + ?int_range(From1, To1) -> ?none; + ?int_range(neg_inf, To) -> t_from_range(To + 1, To1); + ?int_range(From, pos_inf) -> t_from_range(From1, From - 1); + ?int_range(From, To) -> t_sup(t_from_range(From1, From - 1), + t_from_range(To + 1, To)) + end; +t_subtract(?int_range(From, To) = T1, ?int_set(Set)) -> + NewFrom = case set_is_element(From, Set) of + true -> From + 1; + false -> From + end, + NewTo = case set_is_element(To, Set) of + true -> To - 1; + false -> To + end, + if (NewFrom =:= From) and (NewTo =:= To) -> T1; + true -> t_from_range(NewFrom, NewTo) + end; +t_subtract(?int_set(Set), ?int_range(From, To)) -> + case set_filter(fun(X) -> not ((X =< From) orelse (X >= To)) end, Set) of + ?none -> ?none; + NewSet -> ?int_set(NewSet) + end; +t_subtract(?integer(?any) = T1, ?integer(_)) -> T1; +t_subtract(?number(_, _) = T1, ?number(_, _)) -> T1; +t_subtract(?tuple(_, _, _), ?tuple(?any, ?any, ?any)) -> ?none; +t_subtract(?tuple_set(_), ?tuple(?any, ?any, ?any)) -> ?none; +t_subtract(?tuple(?any, ?any, ?any) = T1, ?tuple_set(_)) -> T1; +t_subtract(?tuple(Elements1, Arity1, _Tag1) = T1, + ?tuple(Elements2, Arity2, _Tag2)) -> + if Arity1 =/= Arity2 -> T1; + Arity1 =:= Arity2 -> + NewElements = t_subtract_lists(Elements1, Elements2), + case [E || E <- NewElements, E =/= ?none] of + [] -> ?none; + [_] -> t_tuple(replace_nontrivial_element(Elements1, NewElements)); + _ -> T1 + end + end; +t_subtract(?tuple_set(List1) = T1, ?tuple(_, Arity, _) = T2) -> + case orddict:find(Arity, List1) of + error -> T1; + {ok, List2} -> + TuplesLeft0 = [Tuple || {_Arity, Tuple} <- orddict:erase(Arity, List1)], + TuplesLeft1 = lists:append(TuplesLeft0), + t_sup([t_subtract(L, T2) || L <- List2] ++ TuplesLeft1) + end; +t_subtract(?tuple(_, Arity, _) = T1, ?tuple_set(List1)) -> + case orddict:find(Arity, List1) of + error -> T1; + {ok, List2} -> t_inf([t_subtract(T1, L) || L <- List2]) + end; +t_subtract(?tuple_set(_) = T1, ?tuple_set(_) = T2) -> + t_sup([t_subtract(T, T2) || T <- t_tuple_subtypes(T1)]); +t_subtract(?product(Elements1) = T1, ?product(Elements2)) -> + Arity1 = length(Elements1), + Arity2 = length(Elements2), + if Arity1 =/= Arity2 -> T1; + Arity1 =:= Arity2 -> + NewElements = t_subtract_lists(Elements1, Elements2), + case [E || E <- NewElements, E =/= ?none] of + [] -> ?none; + [_] -> t_product(replace_nontrivial_element(Elements1, NewElements)); + _ -> T1 + end + end; +t_subtract(?map(APairs, ADefK, ADefV) = A, ?map(_, BDefK, BDefV) = B) -> + case t_is_subtype(ADefK, BDefK) andalso t_is_subtype(ADefV, BDefV) of + false -> A; + true -> + %% We fold over the maps to produce a list of constraints, where + %% constraints are additional key-value pairs to put in Pairs. Only one + %% constraint need to be applied to produce a type that excludes the + %% right-hand-side type, so if more than one constraint is produced, we + %% just return the left-hand-side argument. + %% + %% Each case of the fold may either conclude that + %% * The arguments constrain A at least as much as B, i.e. that A so far + %% is a subtype of B. In that case they return false + %% * That for the particular arguments, A being a subtype of B does not + %% hold, but the infinimum of A and B is nonempty, and by narrowing a + %% pair in A, we can create a type that excludes some elements in the + %% infinumum. In that case, they will return that pair. + %% * That for the particular arguments, A being a subtype of B does not + %% hold, and either the infinumum of A and B is empty, or it is not + %% possible with the current representation to create a type that + %% excludes elements from B without also excluding elements that are + %% only in A. In that case, it will return the pair from A unchanged. + case + map_pairwise_merge( + %% If V1 is a subtype of V2, the case that K does not exist in A + %% remain. + fun(K, ?opt, V1, ?mand, V2) -> {K, ?opt, t_subtract(V1, V2)}; + (K, _, V1, _, V2) -> + %% If we subtract an optional key, that leaves a mandatory key + case t_subtract(V1, V2) of + ?none -> false; + Partial -> {K, ?mand, Partial} + end + end, A, B) + of + %% We produce a list of keys that are constrained. As only one of + %% these should apply at a time, we can't represent the difference if + %% more than one constraint is produced. If we applied all of them, + %% that would make an underapproximation, which we must not do. + [] -> ?none; %% A is a subtype of B + [E] -> t_map(mapdict_store(E, APairs), ADefK, ADefV); + _ -> A + end + end; +t_subtract(?product(P1), _) -> + ?product(P1); +t_subtract(T, ?product(_)) -> + T; +t_subtract(?union(U1), ?union(U2)) -> + subtract_union(U1, U2); +t_subtract(T1, T2) -> + ?union(U1) = force_union(T1), + ?union(U2) = force_union(T2), + subtract_union(U1, U2). + +-spec opaque_subtract(erl_type(), erl_type()) -> erl_type(). + +opaque_subtract(?opaque(Set1), T2) -> + List = [T1#opaque{struct = Sub} || + #opaque{struct = S1}=T1 <- set_to_list(Set1), + not t_is_none(Sub = t_subtract(S1, T2))], + case List of + [] -> ?none; + _ -> ?opaque(ordsets:from_list(List)) + end. + +-spec t_subtract_lists([erl_type()], [erl_type()]) -> [erl_type()]. + +t_subtract_lists(L1, L2) -> + t_subtract_lists(L1, L2, []). + +-spec t_subtract_lists([erl_type()], [erl_type()], [erl_type()]) -> [erl_type()]. + +t_subtract_lists([T1|Left1], [T2|Left2], Acc) -> + t_subtract_lists(Left1, Left2, [t_subtract(T1, T2)|Acc]); +t_subtract_lists([], [], Acc) -> + lists:reverse(Acc). + +-spec subtract_union([erl_type(),...], [erl_type(),...]) -> erl_type(). + +subtract_union(U1, U2) -> + [A1,B1,F1,I1,L1,N1,T1,M1,O1,Map1] = U1, + [A2,B2,F2,I2,L2,N2,T2,M2,O2,Map2] = U2, + List1 = [A1,B1,F1,I1,L1,N1,T1,M1,?none,Map1], + List2 = [A2,B2,F2,I2,L2,N2,T2,M2,?none,Map2], + Sub1 = subtract_union(List1, List2, 0, []), + O = if O1 =:= ?none -> O1; + true -> t_subtract(O1, ?union(U2)) + end, + Sub2 = if O2 =:= ?none -> Sub1; + true -> t_subtract(Sub1, t_opaque_structure(O2)) + end, + t_sup(O, Sub2). + +-spec subtract_union([erl_type()], [erl_type()], non_neg_integer(), [erl_type()]) -> erl_type(). + +subtract_union([T1|Left1], [T2|Left2], N, Acc) -> + case t_subtract(T1, T2) of + ?none -> subtract_union(Left1, Left2, N, [?none|Acc]); + T -> subtract_union(Left1, Left2, N+1, [T|Acc]) + end; +subtract_union([], [], 0, _Acc) -> + ?none; +subtract_union([], [], 1, Acc) -> + [T] = [X || X <- Acc, X =/= ?none], + T; +subtract_union([], [], N, Acc) when is_integer(N), N > 1 -> + ?union(lists:reverse(Acc)). + +replace_nontrivial_element(El1, El2) -> + replace_nontrivial_element(El1, El2, []). + +replace_nontrivial_element([T1|Left1], [?none|Left2], Acc) -> + replace_nontrivial_element(Left1, Left2, [T1|Acc]); +replace_nontrivial_element([_|Left1], [T2|_], Acc) -> + lists:reverse(Acc) ++ [T2|Left1]. + +subtract_bin(?bitstr(U1, B1), ?bitstr(U1, B1)) -> + ?none; +subtract_bin(?bitstr(U1, B1), ?none) -> + t_bitstr(U1, B1); +subtract_bin(?bitstr(U1, B1), ?bitstr(0, B1)) -> + t_bitstr(U1, B1+U1); +subtract_bin(?bitstr(U1, B1), ?bitstr(U1, B2)) -> + if (B1+U1) =/= B2 -> t_bitstr(0, B1); + true -> t_bitstr(U1, B1) + end; +subtract_bin(?bitstr(U1, B1), ?bitstr(U2, B2)) -> + if (2 * U1) =:= U2 -> + if B1 =:= B2 -> + t_bitstr(U2, B1+U1); + (B1 + U1) =:= B2 -> + t_bitstr(U2, B1); + true -> + t_bitstr(U1, B1) + end; + true -> + t_bitstr(U1, B1) + end. + +%%----------------------------------------------------------------------------- +%% Relations +%% + +-spec t_is_equal(erl_type(), erl_type()) -> boolean(). + +t_is_equal(T, T) -> true; +t_is_equal(_, _) -> false. + +-spec t_is_subtype(erl_type(), erl_type()) -> boolean(). + +t_is_subtype(T1, T2) -> + Inf = t_inf(T1, T2), + subtype_is_equal(T1, Inf). + +%% The subtype relation has to behave correctly irrespective of opaque +%% types. +subtype_is_equal(T, T) -> true; +subtype_is_equal(T1, T2) -> + t_is_equal(case t_contains_opaque(T1) of + true -> t_unopaque(T1); + false -> T1 + end, + case t_contains_opaque(T2) of + true -> t_unopaque(T2); + false -> T2 + end). + +-spec t_is_instance(erl_type(), erl_type()) -> boolean(). + +%% XXX. To be removed. +t_is_instance(ConcreteType, Type) -> + t_is_subtype(ConcreteType, t_unopaque(Type)). + +-spec t_do_overlap(erl_type(), erl_type()) -> boolean(). + +t_do_overlap(TypeA, TypeB) -> + not (t_is_none_or_unit(t_inf(TypeA, TypeB))). + +-spec t_unopaque(erl_type()) -> erl_type(). + +t_unopaque(T) -> + t_unopaque(T, 'universe'). + +-spec t_unopaque(erl_type(), opaques()) -> erl_type(). + +t_unopaque(?opaque(_) = T, Opaques) -> + case Opaques =:= 'universe' orelse is_opaque_type(T, Opaques) of + true -> t_unopaque(t_opaque_structure(T), Opaques); + false -> T + end; +t_unopaque(?list(ElemT, Termination, Sz), Opaques) -> + ?list(t_unopaque(ElemT, Opaques), t_unopaque(Termination, Opaques), Sz); +t_unopaque(?tuple(?any, _, _) = T, _) -> T; +t_unopaque(?tuple(ArgTs, Sz, Tag), Opaques) when is_list(ArgTs) -> + NewArgTs = [t_unopaque(A, Opaques) || A <- ArgTs], + ?tuple(NewArgTs, Sz, Tag); +t_unopaque(?tuple_set(Set), Opaques) -> + NewSet = [{Sz, [t_unopaque(T, Opaques) || T <- Tuples]} + || {Sz, Tuples} <- Set], + ?tuple_set(NewSet); +t_unopaque(?product(Types), Opaques) -> + ?product([t_unopaque(T, Opaques) || T <- Types]); +t_unopaque(?function(Domain, Range), Opaques) -> + ?function(t_unopaque(Domain, Opaques), t_unopaque(Range, Opaques)); +t_unopaque(?union([A,B,F,I,L,N,T,M,O,Map]), Opaques) -> + UL = t_unopaque(L, Opaques), + UT = t_unopaque(T, Opaques), + UF = t_unopaque(F, Opaques), + UM = t_unopaque(M, Opaques), + UMap = t_unopaque(Map, Opaques), + {OF,UO} = case t_unopaque(O, Opaques) of + ?opaque(_) = O1 -> {O1, []}; + Type -> {?none, [Type]} + end, + t_sup([?union([A,B,UF,I,UL,N,UT,UM,OF,UMap])|UO]); +t_unopaque(?map(Pairs,DefK,DefV), Opaques) -> + t_map([{K, MNess, t_unopaque(V, Opaques)} || {K, MNess, V} <- Pairs], + t_unopaque(DefK, Opaques), + t_unopaque(DefV, Opaques)); +t_unopaque(T, _) -> + T. + +%%----------------------------------------------------------------------------- +%% K-depth abstraction. +%% +%% t_limit/2 is the exported function, which checks the type of the +%% second argument and calls the module local t_limit_k/2 function. +%% + +-spec t_limit(erl_type(), integer()) -> erl_type(). + +t_limit(Term, K) when is_integer(K) -> + t_limit_k(Term, K). + +t_limit_k(_, K) when K =< 0 -> ?any; +t_limit_k(?tuple(?any, ?any, ?any) = T, _K) -> T; +t_limit_k(?tuple(Elements, Arity, _), K) -> + if K =:= 1 -> t_tuple(Arity); + true -> t_tuple([t_limit_k(E, K-1) || E <- Elements]) + end; +t_limit_k(?tuple_set(_) = T, K) -> + t_sup([t_limit_k(Tuple, K) || Tuple <- t_tuple_subtypes(T)]); +t_limit_k(?list(Elements, Termination, Size), K) -> + NewTermination = + if K =:= 1 -> + %% We do not want to lose the termination information. + t_limit_k(Termination, K); + true -> t_limit_k(Termination, K - 1) + end, + NewElements = t_limit_k(Elements, K - 1), + TmpList = t_cons(NewElements, NewTermination), + case Size of + ?nonempty_qual -> TmpList; + ?unknown_qual -> + ?list(NewElements1, NewTermination1, _) = TmpList, + ?list(NewElements1, NewTermination1, ?unknown_qual) + end; +t_limit_k(?function(Domain, Range), K) -> + %% The domain is either a product or any() so we do not decrease the K. + ?function(t_limit_k(Domain, K), t_limit_k(Range, K-1)); +t_limit_k(?product(Elements), K) -> + ?product([t_limit_k(X, K - 1) || X <- Elements]); +t_limit_k(?union(Elements), K) -> + ?union([t_limit_k(X, K) || X <- Elements]); +t_limit_k(?opaque(Es), K) -> + List = [begin + NewS = t_limit_k(S, K), + Opaque#opaque{struct = NewS} + end || #opaque{struct = S} = Opaque <- set_to_list(Es)], + ?opaque(ordsets:from_list(List)); +t_limit_k(?map(Pairs0, DefK0, DefV0), K) -> + Fun = fun({EK, MNess, EV}, {Exact, DefK1, DefV1}) -> + LV = t_limit_k(EV, K - 1), + case t_limit_k(EK, K - 1) of + EK -> {[{EK,MNess,LV}|Exact], DefK1, DefV1}; + LK -> {Exact, t_sup(LK, DefK1), t_sup(LV, DefV1)} + end + end, + {Pairs, DefK2, DefV2} = lists:foldr(Fun, {[], DefK0, DefV0}, Pairs0), + t_map(Pairs, t_limit_k(DefK2, K - 1), t_limit_k(DefV2, K - 1)); +t_limit_k(T, _K) -> T. + +%%============================================================================ +%% +%% Abstract records. Used for comparing contracts. +%% +%%============================================================================ + +-spec t_abstract_records(erl_type(), type_table()) -> erl_type(). + +t_abstract_records(?list(Contents, Termination, Size), RecDict) -> + case t_abstract_records(Contents, RecDict) of + ?none -> ?none; + NewContents -> + %% Be careful here to make the termination collapse if necessary. + case t_abstract_records(Termination, RecDict) of + ?nil -> ?list(NewContents, ?nil, Size); + ?any -> ?list(NewContents, ?any, Size); + Other -> + ?list(NewContents2, NewTermination, _) = t_cons(NewContents, Other), + ?list(NewContents2, NewTermination, Size) + end + end; +t_abstract_records(?function(Domain, Range), RecDict) -> + ?function(t_abstract_records(Domain, RecDict), + t_abstract_records(Range, RecDict)); +t_abstract_records(?product(Types), RecDict) -> + ?product([t_abstract_records(T, RecDict) || T <- Types]); +t_abstract_records(?union(Types), RecDict) -> + t_sup([t_abstract_records(T, RecDict) || T <- Types]); +t_abstract_records(?tuple(?any, ?any, ?any) = T, _RecDict) -> + T; +t_abstract_records(?tuple(Elements, Arity, ?atom(_) = Tag), RecDict) -> + [TagAtom] = atom_vals(Tag), + case lookup_record(TagAtom, Arity - 1, RecDict) of + error -> t_tuple([t_abstract_records(E, RecDict) || E <- Elements]); + {ok, Fields} -> t_tuple([Tag|[T || {_Name, _Abstr, T} <- Fields]]) + end; +t_abstract_records(?tuple(Elements, _Arity, _Tag), RecDict) -> + t_tuple([t_abstract_records(E, RecDict) || E <- Elements]); +t_abstract_records(?tuple_set(_) = Tuples, RecDict) -> + t_sup([t_abstract_records(T, RecDict) || T <- t_tuple_subtypes(Tuples)]); +t_abstract_records(?opaque(_)=Type, RecDict) -> + t_abstract_records(t_opaque_structure(Type), RecDict); +t_abstract_records(T, _RecDict) -> + T. + +%% Map over types. Depth first. Used by the contract checker. ?list is +%% not fully implemented so take care when changing the type in Termination. + +-spec t_map(fun((erl_type()) -> erl_type()), erl_type()) -> erl_type(). + +t_map(Fun, ?list(Contents, Termination, Size)) -> + Fun(?list(t_map(Fun, Contents), t_map(Fun, Termination), Size)); +t_map(Fun, ?function(Domain, Range)) -> + Fun(?function(t_map(Fun, Domain), t_map(Fun, Range))); +t_map(Fun, ?product(Types)) -> + Fun(?product([t_map(Fun, T) || T <- Types])); +t_map(Fun, ?union(Types)) -> + Fun(t_sup([t_map(Fun, T) || T <- Types])); +t_map(Fun, ?tuple(?any, ?any, ?any) = T) -> + Fun(T); +t_map(Fun, ?tuple(Elements, _Arity, _Tag)) -> + Fun(t_tuple([t_map(Fun, E) || E <- Elements])); +t_map(Fun, ?tuple_set(_) = Tuples) -> + Fun(t_sup([t_map(Fun, T) || T <- t_tuple_subtypes(Tuples)])); +t_map(Fun, ?opaque(Set)) -> + L = [Opaque#opaque{struct = NewS} || + #opaque{struct = S} = Opaque <- set_to_list(Set), + not t_is_none(NewS = t_map(Fun, S))], + Fun(case L of + [] -> ?none; + _ -> ?opaque(ordsets:from_list(L)) + end); +t_map(Fun, ?map(Pairs,DefK,DefV)) -> + %% TODO: + Fun(t_map(Pairs, Fun(DefK), Fun(DefV))); +t_map(Fun, T) -> + Fun(T). + +%%============================================================================= +%% +%% Prettyprinter +%% +%%============================================================================= + +-spec t_to_string(erl_type()) -> string(). + +t_to_string(T) -> + t_to_string(T, dict:new()). + +-spec t_to_string(erl_type(), type_table()) -> string(). + +t_to_string(?any, _RecDict) -> + "any()"; +t_to_string(?none, _RecDict) -> + "none()"; +t_to_string(?unit, _RecDict) -> + "no_return()"; +t_to_string(?atom(?any), _RecDict) -> + "atom()"; +t_to_string(?atom(Set), _RecDict) -> + case set_size(Set) of + 2 -> + case set_is_element(true, Set) andalso set_is_element(false, Set) of + true -> "boolean()"; + false -> set_to_string(Set) + end; + _ -> + set_to_string(Set) + end; +t_to_string(?bitstr(0, 0), _RecDict) -> + "<<>>"; +t_to_string(?bitstr(8, 0), _RecDict) -> + "binary()"; +t_to_string(?bitstr(1, 0), _RecDict) -> + "bitstring()"; +t_to_string(?bitstr(0, B), _RecDict) -> + flat_format("<<_:~w>>", [B]); +t_to_string(?bitstr(U, 0), _RecDict) -> + flat_format("<<_:_*~w>>", [U]); +t_to_string(?bitstr(U, B), _RecDict) -> + flat_format("<<_:~w,_:_*~w>>", [B, U]); +t_to_string(?function(?any, ?any), _RecDict) -> + "fun()"; +t_to_string(?function(?any, Range), RecDict) -> + "fun((...) -> " ++ t_to_string(Range, RecDict) ++ ")"; +t_to_string(?function(?product(ArgList), Range), RecDict) -> + "fun((" ++ comma_sequence(ArgList, RecDict) ++ ") -> " + ++ t_to_string(Range, RecDict) ++ ")"; +t_to_string(?identifier(Set), _RecDict) -> + case Set of + ?any -> "identifier()"; + _ -> + string:join([flat_format("~w()", [T]) || T <- set_to_list(Set)], " | ") + end; +t_to_string(?opaque(Set), RecDict) -> + string:join([opaque_type(Mod, Name, Args, S, RecDict) || + #opaque{mod = Mod, name = Name, struct = S, args = Args} + <- set_to_list(Set)], + " | "); +t_to_string(?matchstate(Pres, Slots), RecDict) -> + flat_format("ms(~s,~s)", [t_to_string(Pres, RecDict), + t_to_string(Slots,RecDict)]); +t_to_string(?nil, _RecDict) -> + "[]"; +t_to_string(?nonempty_list(Contents, Termination), RecDict) -> + ContentString = t_to_string(Contents, RecDict), + case Termination of + ?nil -> + case Contents of + ?char -> "nonempty_string()"; + _ -> "["++ContentString++",...]" + end; + ?any -> + %% Just a safety check. + case Contents =:= ?any of + true -> ok; + false -> + %% XXX. See comment below. + %% erlang:error({illegal_list, ?nonempty_list(Contents, Termination)}) + ok + end, + "nonempty_maybe_improper_list()"; + _ -> + case t_is_subtype(t_nil(), Termination) of + true -> + "nonempty_maybe_improper_list("++ContentString++"," + ++t_to_string(Termination, RecDict)++")"; + false -> + "nonempty_improper_list("++ContentString++"," + ++t_to_string(Termination, RecDict)++")" + end + end; +t_to_string(?list(Contents, Termination, ?unknown_qual), RecDict) -> + ContentString = t_to_string(Contents, RecDict), + case Termination of + ?nil -> + case Contents of + ?char -> "string()"; + _ -> "["++ContentString++"]" + end; + ?any -> + %% Just a safety check. + %% XXX. Types such as "maybe_improper_list(integer(), any())" + %% are OK, but cannot be printed!? + case Contents =:= ?any of + true -> ok; + false -> + ok + %% L = ?list(Contents, Termination, ?unknown_qual), + %% erlang:error({illegal_list, L}) + end, + "maybe_improper_list()"; + _ -> + case t_is_subtype(t_nil(), Termination) of + true -> + "maybe_improper_list("++ContentString++"," + ++t_to_string(Termination, RecDict)++")"; + false -> + "improper_list("++ContentString++"," + ++t_to_string(Termination, RecDict)++")" + end + end; +t_to_string(?int_set(Set), _RecDict) -> + set_to_string(Set); +t_to_string(?byte, _RecDict) -> "byte()"; +t_to_string(?char, _RecDict) -> "char()"; +t_to_string(?integer_pos, _RecDict) -> "pos_integer()"; +t_to_string(?integer_non_neg, _RecDict) -> "non_neg_integer()"; +t_to_string(?integer_neg, _RecDict) -> "neg_integer()"; +t_to_string(?int_range(From, To), _RecDict) -> + flat_format("~w..~w", [From, To]); +t_to_string(?integer(?any), _RecDict) -> "integer()"; +t_to_string(?float, _RecDict) -> "float()"; +t_to_string(?number(?any, ?unknown_qual), _RecDict) -> "number()"; +t_to_string(?product(List), RecDict) -> + "<" ++ comma_sequence(List, RecDict) ++ ">"; +t_to_string(?map([],?any,?any), _RecDict) -> "map()"; +t_to_string(?map(Pairs0,DefK,DefV), RecDict) -> + {Pairs, ExtraEl} = + case {DefK, DefV} of + {?none, ?none} -> {Pairs0, []}; + _ -> {Pairs0 ++ [{DefK,?opt,DefV}], []} + end, + Tos = fun(T) -> case T of + ?any -> "_"; + _ -> t_to_string(T, RecDict) + end end, + StrMand = [{Tos(K),Tos(V)}||{K,?mand,V}<-Pairs], + StrOpt = [{Tos(K),Tos(V)}||{K,?opt,V}<-Pairs], + "#{" ++ string:join([K ++ ":=" ++ V||{K,V}<-StrMand] + ++ [K ++ "=>" ++ V||{K,V}<-StrOpt] + ++ ExtraEl, ", ") ++ "}"; +t_to_string(?tuple(?any, ?any, ?any), _RecDict) -> "tuple()"; +t_to_string(?tuple(Elements, _Arity, ?any), RecDict) -> + "{" ++ comma_sequence(Elements, RecDict) ++ "}"; +t_to_string(?tuple(Elements, Arity, Tag), RecDict) -> + [TagAtom] = atom_vals(Tag), + case lookup_record(TagAtom, Arity-1, RecDict) of + error -> "{" ++ comma_sequence(Elements, RecDict) ++ "}"; + {ok, FieldNames} -> + record_to_string(TagAtom, Elements, FieldNames, RecDict) + end; +t_to_string(?tuple_set(_) = T, RecDict) -> + union_sequence(t_tuple_subtypes(T), RecDict); +t_to_string(?union(Types), RecDict) -> + union_sequence([T || T <- Types, T =/= ?none], RecDict); +t_to_string(?var(Id), _RecDict) when is_atom(Id) -> + flat_format("~s", [atom_to_list(Id)]); +t_to_string(?var(Id), _RecDict) when is_integer(Id) -> + flat_format("var(~w)", [Id]). + + +record_to_string(Tag, [_|Fields], FieldNames, RecDict) -> + FieldStrings = record_fields_to_string(Fields, FieldNames, RecDict, []), + "#" ++ atom_to_string(Tag) ++ "{" ++ string:join(FieldStrings, ",") ++ "}". + +record_fields_to_string([F|Fs], [{FName, _Abstr, DefType}|FDefs], + RecDict, Acc) -> + NewAcc = + case + t_is_equal(F, t_any()) orelse + (t_is_any_atom('undefined', F) andalso + not t_is_none(t_inf(F, DefType))) + of + true -> Acc; + false -> + StrFV = atom_to_string(FName) ++ "::" ++ t_to_string(F, RecDict), + [StrFV|Acc] + end, + record_fields_to_string(Fs, FDefs, RecDict, NewAcc); +record_fields_to_string([], [], _RecDict, Acc) -> + lists:reverse(Acc). + +-spec record_field_diffs_to_string(erl_type(), type_table()) -> string(). + +record_field_diffs_to_string(?tuple([_|Fs], Arity, Tag), RecDict) -> + [TagAtom] = atom_vals(Tag), + {ok, FieldNames} = lookup_record(TagAtom, Arity-1, RecDict), + %% io:format("RecCElems = ~p\nRecTypes = ~p\n", [Fs, FieldNames]), + FieldDiffs = field_diffs(Fs, FieldNames, RecDict, []), + string:join(FieldDiffs, " and "). + +field_diffs([F|Fs], [{FName, _Abstr, DefType}|FDefs], RecDict, Acc) -> + %% Don't care about opaqueness for now. + NewAcc = + case not t_is_none(t_inf(F, DefType)) of + true -> Acc; + false -> + Str = atom_to_string(FName) ++ "::" ++ t_to_string(DefType, RecDict), + [Str|Acc] + end, + field_diffs(Fs, FDefs, RecDict, NewAcc); +field_diffs([], [], _, Acc) -> + lists:reverse(Acc). + +comma_sequence(Types, RecDict) -> + List = [case T =:= ?any of + true -> "_"; + false -> t_to_string(T, RecDict) + end || T <- Types], + string:join(List, ","). + +union_sequence(Types, RecDict) -> + List = [t_to_string(T, RecDict) || T <- Types], + string:join(List, " | "). + +-ifdef(DEBUG). +opaque_type(Mod, Name, _Args, S, RecDict) -> + ArgsString = comma_sequence(_Args, RecDict), + String = t_to_string(S, RecDict), + opaque_name(Mod, Name, ArgsString) ++ "[" ++ String ++ "]". +-else. +opaque_type(Mod, Name, Args, _S, RecDict) -> + ArgsString = comma_sequence(Args, RecDict), + opaque_name(Mod, Name, ArgsString). +-endif. + +opaque_name(Mod, Name, Extra) -> + S = mod_name(Mod, Name), + flat_format("~s(~s)", [S, Extra]). + +mod_name(Mod, Name) -> + flat_format("~w:~w", [Mod, Name]). + +%%============================================================================= +%% +%% Build a type from parse forms. +%% +%%============================================================================= + +-type type_names() :: [type_key() | record_key()]. + +-type mta() :: {module(), atom(), arity()}. +-type mra() :: {module(), atom(), arity()}. +-type site() :: {'type', mta()} | {'spec', mfa()} | {'record', mra()}. +-type cache_key() :: {module(), atom(), expand_depth(), + [erl_type()], type_names()}. +-opaque cache() :: #{cache_key() => {erl_type(), expand_limit()}}. + +-spec t_from_form(parse_form(), sets:set(mfa()), site(), mod_records(), + var_table(), cache()) -> {erl_type(), cache()}. + +t_from_form(Form, ExpTypes, Site, RecDict, VarTab, Cache) -> + t_from_form1(Form, ExpTypes, Site, RecDict, VarTab, Cache). + +%% Replace external types with with none(). +-spec t_from_form_without_remote(parse_form(), site(), type_table()) -> + {erl_type(), cache()}. + +t_from_form_without_remote(Form, Site, TypeTable) -> + Module = site_module(Site), + RecDict = dict:from_list([{Module, TypeTable}]), + ExpTypes = replace_by_none, + VarTab = var_table__new(), + Cache = cache__new(), + t_from_form1(Form, ExpTypes, Site, RecDict, VarTab, Cache). + +%% REC_TYPE_LIMIT is used for limiting the depth of recursive types. +%% EXPAND_LIMIT is used for limiting the size of types by +%% limiting the number of elements of lists within one type form. +%% EXPAND_DEPTH is used in conjunction with EXPAND_LIMIT to make the +%% types balanced (unions will otherwise collapse to any()) by limiting +%% the depth the same way as t_limit/2 does. + +-type expand_limit() :: integer(). + +-type expand_depth() :: integer(). + +-record(from_form, {site :: site(), + xtypes :: sets:set(mfa()) | 'replace_by_none', + mrecs :: mod_records(), + vtab :: var_table(), + tnames :: type_names()}). + +-spec t_from_form1(parse_form(), sets:set(mfa()) | 'replace_by_none', + site(), mod_records(), var_table(), cache()) -> + {erl_type(), cache()}. + +t_from_form1(Form, ET, Site, MR, V, C) -> + TypeNames = initial_typenames(Site), + State = #from_form{site = Site, + xtypes = ET, + mrecs = MR, + vtab = V, + tnames = TypeNames}, + L = ?EXPAND_LIMIT, + {T1, L1, C1} = from_form(Form, State, ?EXPAND_DEPTH, L, C), + if + L1 =< 0 -> + from_form_loop(Form, State, 1, L, C1); + true -> + {T1, C1} + end. + +initial_typenames({type, _MTA}=Site) -> [Site]; +initial_typenames({spec, _MFA}) -> []; +initial_typenames({record, _MRA}) -> []. + +from_form_loop(Form, State, D, Limit, C) -> + {T1, L1, C1} = from_form(Form, State, D, Limit, C), + Delta = Limit - L1, + if + %% Save some time by assuming next depth will exceed the limit. + Delta * 8 > Limit -> + {T1, C1}; + true -> + D1 = D + 1, + from_form_loop(Form, State, D1, Limit, C1) + end. + +-spec from_form(parse_form(), + #from_form{}, + expand_depth(), + expand_limit(), + cache()) -> {erl_type(), expand_limit(), cache()}. + +%% If there is something wrong with parse_form() +%% throw({error, io_lib:chars()} is called; +%% for unknown remote types +%% self() ! {self(), ext_types, {RemMod, Name, ArgsLen}} +%% is called, unless 'replace_by_none' is given. +%% +%% It is assumed that site_module(S) can be found in MR. + +from_form(_, _S, D, L, C) when D =< 0 ; L =< 0 -> + {t_any(), L, C}; +from_form({var, _L, '_'}, _S, _D, L, C) -> + {t_any(), L, C}; +from_form({var, _L, Name}, S, _D, L, C) -> + V = S#from_form.vtab, + case maps:find(Name, V) of + error -> {t_var(Name), L, C}; + {ok, Val} -> {Val, L, C} + end; +from_form({ann_type, _L, [_Var, Type]}, S, D, L, C) -> + from_form(Type, S, D, L, C); +from_form({paren_type, _L, [Type]}, S, D, L, C) -> + from_form(Type, S, D, L, C); +from_form({remote_type, _L, [{atom, _, Module}, {atom, _, Type}, Args]}, + S, D, L, C) -> + remote_from_form(Module, Type, Args, S, D, L, C); +from_form({atom, _L, Atom}, _S, _D, L, C) -> + {t_atom(Atom), L, C}; +from_form({integer, _L, Int}, _S, _D, L, C) -> + {t_integer(Int), L, C}; +from_form({op, _L, _Op, _Arg} = Op, _S, _D, L, C) -> + case erl_eval:partial_eval(Op) of + {integer, _, Val} -> + {t_integer(Val), L, C}; + _ -> throw({error, io_lib:format("Unable to evaluate type ~w\n", [Op])}) + end; +from_form({op, _L, _Op, _Arg1, _Arg2} = Op, _S, _D, L, C) -> + case erl_eval:partial_eval(Op) of + {integer, _, Val} -> + {t_integer(Val), L, C}; + _ -> throw({error, io_lib:format("Unable to evaluate type ~w\n", [Op])}) + end; +from_form({type, _L, any, []}, _S, _D, L, C) -> + {t_any(), L, C}; +from_form({type, _L, arity, []}, _S, _D, L, C) -> + {t_arity(), L, C}; +from_form({type, _L, atom, []}, _S, _D, L, C) -> + {t_atom(), L, C}; +from_form({type, _L, binary, []}, _S, _D, L, C) -> + {t_binary(), L, C}; +from_form({type, _L, binary, [Base, Unit]} = Type, _S, _D, L, C) -> + case {erl_eval:partial_eval(Base), erl_eval:partial_eval(Unit)} of + {{integer, _, B}, {integer, _, U}} when B >= 0, U >= 0 -> + {t_bitstr(U, B), L, C}; + _ -> throw({error, io_lib:format("Unable to evaluate type ~w\n", [Type])}) + end; +from_form({type, _L, bitstring, []}, _S, _D, L, C) -> + {t_bitstr(), L, C}; +from_form({type, _L, bool, []}, _S, _D, L, C) -> + {t_boolean(), L, C}; % XXX: Temporarily +from_form({type, _L, boolean, []}, _S, _D, L, C) -> + {t_boolean(), L, C}; +from_form({type, _L, byte, []}, _S, _D, L, C) -> + {t_byte(), L, C}; +from_form({type, _L, char, []}, _S, _D, L, C) -> + {t_char(), L, C}; +from_form({type, _L, float, []}, _S, _D, L, C) -> + {t_float(), L, C}; +from_form({type, _L, function, []}, _S, _D, L, C) -> + {t_fun(), L, C}; +from_form({type, _L, 'fun', []}, _S, _D, L, C) -> + {t_fun(), L, C}; +from_form({type, _L, 'fun', [{type, _, any}, Range]}, S, D, L, C) -> + {T, L1, C1} = from_form(Range, S, D - 1, L - 1, C), + {t_fun(T), L1, C1}; +from_form({type, _L, 'fun', [{type, _, product, Domain}, Range]}, + S, D, L, C) -> + {Dom1, L1, C1} = list_from_form(Domain, S, D, L, C), + {Ran1, L2, C2} = from_form(Range, S, D, L1, C1), + {t_fun(Dom1, Ran1), L2, C2}; +from_form({type, _L, identifier, []}, _S, _D, L, C) -> + {t_identifier(), L, C}; +from_form({type, _L, integer, []}, _S, _D, L, C) -> + {t_integer(), L, C}; +from_form({type, _L, iodata, []}, _S, _D, L, C) -> + {t_iodata(), L, C}; +from_form({type, _L, iolist, []}, _S, _D, L, C) -> + {t_iolist(), L, C}; +from_form({type, _L, list, []}, _S, _D, L, C) -> + {t_list(), L, C}; +from_form({type, _L, list, [Type]}, S, D, L, C) -> + {T, L1, C1} = from_form(Type, S, D - 1, L - 1, C), + {t_list(T), L1, C1}; +from_form({type, _L, map, any}, S, D, L, C) -> + builtin_type(map, t_map(), S, D, L, C); +from_form({type, _L, map, List}, S, D0, L, C) -> + {Pairs1, L5, C5} = + fun PairsFromForm(_, L1, C1) when L1 =< 0 -> {[{?any,?opt,?any}], L1, C1}; + PairsFromForm([], L1, C1) -> {[], L1, C1}; + PairsFromForm([{type, _, Oper, [KF, VF]}|T], L1, C1) -> + D = D0 - 1, + {Key, L2, C2} = from_form(KF, S, D, L1, C1), + {Val, L3, C3} = from_form(VF, S, D, L2, C2), + {Pairs0, L4, C4} = PairsFromForm(T, L3 - 1, C3), + case Oper of + map_field_assoc -> {[{Key,?opt, Val}|Pairs0], L4, C4}; + map_field_exact -> {[{Key,?mand,Val}|Pairs0], L4, C4} + end + end(List, L, C), + try + {Pairs, DefK, DefV} = map_from_form(Pairs1, [], [], [], ?none, ?none), + {t_map(Pairs, DefK, DefV), L5, C5} + catch none -> {t_none(), L5, C5} + end; +from_form({type, _L, mfa, []}, _S, _D, L, C) -> + {t_mfa(), L, C}; +from_form({type, _L, module, []}, _S, _D, L, C) -> + {t_module(), L, C}; +from_form({type, _L, nil, []}, _S, _D, L, C) -> + {t_nil(), L, C}; +from_form({type, _L, neg_integer, []}, _S, _D, L, C) -> + {t_neg_integer(), L, C}; +from_form({type, _L, non_neg_integer, []}, _S, _D, L, C) -> + {t_non_neg_integer(), L, C}; +from_form({type, _L, no_return, []}, _S, _D, L, C) -> + {t_unit(), L, C}; +from_form({type, _L, node, []}, _S, _D, L, C) -> + {t_node(), L, C}; +from_form({type, _L, none, []}, _S, _D, L, C) -> + {t_none(), L, C}; +from_form({type, _L, nonempty_list, []}, _S, _D, L, C) -> + {t_nonempty_list(), L, C}; +from_form({type, _L, nonempty_list, [Type]}, S, D, L, C) -> + {T, L1, C1} = from_form(Type, S, D, L - 1, C), + {t_nonempty_list(T), L1, C1}; +from_form({type, _L, nonempty_improper_list, [Cont, Term]}, S, D, L, C) -> + {T1, L1, C1} = from_form(Cont, S, D, L - 1, C), + {T2, L2, C2} = from_form(Term, S, D, L1, C1), + {t_cons(T1, T2), L2, C2}; +from_form({type, _L, nonempty_maybe_improper_list, []}, _S, _D, L, C) -> + {t_cons(?any, ?any), L, C}; +from_form({type, _L, nonempty_maybe_improper_list, [Cont, Term]}, + S, D, L, C) -> + {T1, L1, C1} = from_form(Cont, S, D, L - 1, C), + {T2, L2, C2} = from_form(Term, S, D, L1, C1), + {t_cons(T1, T2), L2, C2}; +from_form({type, _L, nonempty_string, []}, _S, _D, L, C) -> + {t_nonempty_string(), L, C}; +from_form({type, _L, number, []}, _S, _D, L, C) -> + {t_number(), L, C}; +from_form({type, _L, pid, []}, _S, _D, L, C) -> + {t_pid(), L, C}; +from_form({type, _L, port, []}, _S, _D, L, C) -> + {t_port(), L, C}; +from_form({type, _L, pos_integer, []}, _S, _D, L, C) -> + {t_pos_integer(), L, C}; +from_form({type, _L, maybe_improper_list, []}, _S, _D, L, C) -> + {t_maybe_improper_list(), L, C}; +from_form({type, _L, maybe_improper_list, [Content, Termination]}, + S, D, L, C) -> + {T1, L1, C1} = from_form(Content, S, D, L - 1, C), + {T2, L2, C2} = from_form(Termination, S, D, L1, C1), + {t_maybe_improper_list(T1, T2), L2, C2}; +from_form({type, _L, product, Elements}, S, D, L, C) -> + {Lst, L1, C1} = list_from_form(Elements, S, D - 1, L, C), + {t_product(Lst), L1, C1}; +from_form({type, _L, range, [From, To]} = Type, _S, _D, L, C) -> + case {erl_eval:partial_eval(From), erl_eval:partial_eval(To)} of + {{integer, _, FromVal}, {integer, _, ToVal}} -> + {t_from_range(FromVal, ToVal), L, C}; + _ -> throw({error, io_lib:format("Unable to evaluate type ~w\n", [Type])}) + end; +from_form({type, _L, record, [Name|Fields]}, S, D, L, C) -> + record_from_form(Name, Fields, S, D, L, C); +from_form({type, _L, reference, []}, _S, _D, L, C) -> + {t_reference(), L, C}; +from_form({type, _L, string, []}, _S, _D, L, C) -> + {t_string(), L, C}; +from_form({type, _L, term, []}, _S, _D, L, C) -> + {t_any(), L, C}; +from_form({type, _L, timeout, []}, _S, _D, L, C) -> + {t_timeout(), L, C}; +from_form({type, _L, tuple, any}, _S, _D, L, C) -> + {t_tuple(), L, C}; +from_form({type, _L, tuple, Args}, S, D, L, C) -> + {Lst, L1, C1} = list_from_form(Args, S, D - 1, L, C), + {t_tuple(Lst), L1, C1}; +from_form({type, _L, union, Args}, S, D, L, C) -> + {Lst, L1, C1} = list_from_form(Args, S, D, L, C), + {t_sup(Lst), L1, C1}; +from_form({user_type, _L, Name, Args}, S, D, L, C) -> + type_from_form(Name, Args, S, D, L, C); +from_form({type, _L, Name, Args}, S, D, L, C) -> + %% Compatibility: modules compiled before Erlang/OTP 18.0. + type_from_form(Name, Args, S, D, L, C); +from_form({opaque, _L, Name, {Mod, Args, Rep}}, _S, _D, L, C) -> + %% XXX. To be removed. + {t_opaque(Mod, Name, Args, Rep), L, C}. + +builtin_type(Name, Type, S, D, L, C) -> + #from_form{site = Site, mrecs = MR} = S, + M = site_module(Site), + case dict:find(M, MR) of + {ok, R} -> + case lookup_type(Name, 0, R) of + {_, {{_M, _FL, _F, _A}, _T}} -> + type_from_form(Name, [], S, D, L, C); + error -> + {Type, L, C} + end; + error -> + {Type, L, C} + end. + +type_from_form(Name, Args, S, D, L, C) -> + #from_form{site = Site, mrecs = MR, tnames = TypeNames} = S, + ArgsLen = length(Args), + Module = site_module(Site), + TypeName = {type, {Module, Name, ArgsLen}}, + case can_unfold_more(TypeName, TypeNames) of + true -> + {ok, R} = dict:find(Module, MR), + type_from_form1(Name, Args, ArgsLen, R, TypeName, TypeNames, + S, D, L, C); + false -> + {t_any(), L, C} + end. + +type_from_form1(Name, Args, ArgsLen, R, TypeName, TypeNames, S, D, L, C) -> + case lookup_type(Name, ArgsLen, R) of + {Tag, {{Module, _FileName, Form, ArgNames}, Type}} -> + NewTypeNames = [TypeName|TypeNames], + S1 = S#from_form{tnames = NewTypeNames}, + {ArgTypes, L1, C1} = list_from_form(Args, S1, D, L, C), + CKey = cache_key(Module, Name, ArgTypes, TypeNames, D), + case cache_find(CKey, C) of + {CachedType, DeltaL} -> + {CachedType, L1 - DeltaL, C}; + error -> + List = lists:zip(ArgNames, ArgTypes), + TmpV = maps:from_list(List), + S2 = S1#from_form{site = TypeName, vtab = TmpV}, + Fun = fun(DD, LL) -> from_form(Form, S2, DD, LL, C1) end, + {NewType, L3, C3} = + case Tag of + type -> + recur_limit(Fun, D, L1, TypeName, TypeNames); + opaque -> + {Rep, L2, C2} = recur_limit(Fun, D, L1, TypeName, TypeNames), + Rep1 = choose_opaque_type(Rep, Type), + Rep2 = case cannot_have_opaque(Rep1, TypeName, TypeNames) of + true -> Rep1; + false -> + ArgTypes2 = subst_all_vars_to_any_list(ArgTypes), + t_opaque(Module, Name, ArgTypes2, Rep1) + end, + {Rep2, L2, C2} + end, + C4 = cache_put(CKey, NewType, L1 - L3, C3), + {NewType, L3, C4} + end; + error -> + Msg = io_lib:format("Unable to find type ~w/~w\n", + [Name, ArgsLen]), + throw({error, Msg}) + end. + +remote_from_form(RemMod, Name, Args, S, D, L, C) -> + #from_form{xtypes = ET, mrecs = MR, tnames = TypeNames} = S, + if + ET =:= replace_by_none -> + {t_none(), L, C}; + true -> + ArgsLen = length(Args), + MFA = {RemMod, Name, ArgsLen}, + case dict:find(RemMod, MR) of + error -> + self() ! {self(), ext_types, MFA}, + {t_any(), L, C}; + {ok, RemDict} -> + case sets:is_element(MFA, ET) of + true -> + RemType = {type, MFA}, + case can_unfold_more(RemType, TypeNames) of + true -> + remote_from_form1(RemMod, Name, Args, ArgsLen, RemDict, + RemType, TypeNames, S, D, L, C); + false -> + {t_any(), L, C} + end; + false -> + self() ! {self(), ext_types, {RemMod, Name, ArgsLen}}, + {t_any(), L, C} + end + end + end. + +remote_from_form1(RemMod, Name, Args, ArgsLen, RemDict, RemType, TypeNames, + S, D, L, C) -> + case lookup_type(Name, ArgsLen, RemDict) of + {Tag, {{Mod, _FileLine, Form, ArgNames}, Type}} -> + NewTypeNames = [RemType|TypeNames], + S1 = S#from_form{tnames = NewTypeNames}, + {ArgTypes, L1, C1} = list_from_form(Args, S1, D, L, C), + CKey = cache_key(RemMod, Name, ArgTypes, TypeNames, D), + %% case error of + case cache_find(CKey, C) of + {CachedType, DeltaL} -> + {CachedType, L - DeltaL, C}; + error -> + List = lists:zip(ArgNames, ArgTypes), + TmpVarTab = maps:from_list(List), + S2 = S1#from_form{site = RemType, vtab = TmpVarTab}, + Fun = fun(DD, LL) -> from_form(Form, S2, DD, LL, C1) end, + {NewType, L3, C3} = + case Tag of + type -> + recur_limit(Fun, D, L1, RemType, TypeNames); + opaque -> + {NewRep, L2, C2} = recur_limit(Fun, D, L1, RemType, TypeNames), + NewRep1 = choose_opaque_type(NewRep, Type), + NewRep2 = + case cannot_have_opaque(NewRep1, RemType, TypeNames) of + true -> NewRep1; + false -> + ArgTypes2 = subst_all_vars_to_any_list(ArgTypes), + t_opaque(Mod, Name, ArgTypes2, NewRep1) + end, + {NewRep2, L2, C2} + end, + C4 = cache_put(CKey, NewType, L1 - L3, C3), + {NewType, L3, C4} + end; + error -> + Msg = io_lib:format("Unable to find remote type ~w:~w()\n", + [RemMod, Name]), + throw({error, Msg}) + end. + +subst_all_vars_to_any_list(Types) -> + [subst_all_vars_to_any(Type) || Type <- Types]. + +%% Opaque types (both local and remote) are problematic when it comes +%% to the limits (TypeNames, D, and L). The reason is that if any() is +%% substituted for a more specialized subtype of an opaque type, the +%% property stated along with decorate_with_opaque() (the type has to +%% be a subtype of the declared type) no longer holds. +%% +%% The less than perfect remedy: if the opaque type created from a +%% form is not a subset of the declared type, the declared type is +%% used instead, effectively bypassing the limits, and potentially +%% resulting in huge types. +choose_opaque_type(Type, DeclType) -> + case + t_is_subtype(subst_all_vars_to_any(Type), + subst_all_vars_to_any(DeclType)) + of + true -> Type; + false -> DeclType + end. + +record_from_form({atom, _, Name}, ModFields, S, D0, L0, C) -> + #from_form{site = Site, mrecs = MR, tnames = TypeNames} = S, + RecordType = {record, Name}, + case can_unfold_more(RecordType, TypeNames) of + true -> + M = site_module(Site), + {ok, R} = dict:find(M, MR), + case lookup_record(Name, R) of + {ok, DeclFields} -> + NewTypeNames = [RecordType|TypeNames], + Site1 = {record, {M, Name, length(DeclFields)}}, + S1 = S#from_form{site = Site1, tnames = NewTypeNames}, + Fun = fun(D, L) -> + {GetModRec, L1, C1} = + get_mod_record(ModFields, DeclFields, S1, D, L, C), + case GetModRec of + {error, FieldName} -> + throw({error, + io_lib:format("Illegal declaration of #~w{~w}\n", + [Name, FieldName])}); + {ok, NewFields} -> + S2 = S1#from_form{vtab = var_table__new()}, + {NewFields1, L2, C2} = + fields_from_form(NewFields, S2, D, L1, C1), + Rec = t_tuple( + [t_atom(Name)|[Type + || {_FieldName, Type} <- NewFields1]]), + {Rec, L2, C2} + end + end, + recur_limit(Fun, D0, L0, RecordType, TypeNames); + error -> + throw({error, io_lib:format("Unknown record #~w{}\n", [Name])}) + end; + false -> + {t_any(), L0, C} + end. + +get_mod_record([], DeclFields, _S, _D, L, C) -> + {{ok, DeclFields}, L, C}; +get_mod_record(ModFields, DeclFields, S, D, L, C) -> + DeclFieldsDict = lists:keysort(1, DeclFields), + {ModFieldsDict, L1, C1} = build_field_dict(ModFields, S, D, L, C), + case get_mod_record_types(DeclFieldsDict, ModFieldsDict, []) of + {error, _FieldName} = Error -> {Error, L1, C1}; + {ok, FinalKeyDict} -> + Fields = [lists:keyfind(FieldName, 1, FinalKeyDict) + || {FieldName, _, _} <- DeclFields], + {{ok, Fields}, L1, C1} + end. + +build_field_dict(FieldTypes, S, D, L, C) -> + build_field_dict(FieldTypes, S, D, L, C, []). + +build_field_dict([{type, _, field_type, [{atom, _, Name}, Type]}|Left], + S, D, L, C, Acc) -> + {T, L1, C1} = from_form(Type, S, D, L - 1, C), + NewAcc = [{Name, Type, T}|Acc], + build_field_dict(Left, S, D, L1, C1, NewAcc); +build_field_dict([], _S, _D, L, C, Acc) -> + {lists:keysort(1, Acc), L, C}. + +get_mod_record_types([{FieldName, _Abstr, _DeclType}|Left1], + [{FieldName, TypeForm, ModType}|Left2], + Acc) -> + get_mod_record_types(Left1, Left2, [{FieldName, TypeForm, ModType}|Acc]); +get_mod_record_types([{FieldName1, _Abstr, _DeclType} = DT|Left1], + [{FieldName2, _FormType, _ModType}|_] = List2, + Acc) when FieldName1 < FieldName2 -> + get_mod_record_types(Left1, List2, [DT|Acc]); +get_mod_record_types(Left1, [], Acc) -> + {ok, lists:keysort(1, Left1++Acc)}; +get_mod_record_types(_, [{FieldName2, _FormType, _ModType}|_], _Acc) -> + {error, FieldName2}. + +%% It is important to create a limited version of the record type +%% since nested record types can otherwise easily result in huge +%% terms. +fields_from_form([], _S, _D, L, C) -> + {[], L, C}; +fields_from_form([{Name, Abstr, _Type}|Tail], S, D, L, C) -> + {T, L1, C1} = from_form(Abstr, S, D, L, C), + {F, L2, C2} = fields_from_form(Tail, S, D, L1, C1), + {[{Name, T}|F], L2, C2}. + +list_from_form([], _S, _D, L, C) -> + {[], L, C}; +list_from_form([H|Tail], S, D, L, C) -> + {H1, L1, C1} = from_form(H, S, D, L - 1, C), + {T1, L2, C2} = list_from_form(Tail, S, D, L1, C1), + {[H1|T1], L2, C2}. + +%% Sorts, combines non-singleton pairs, and applies precendence and +%% mandatoriness rules. +map_from_form([], ShdwPs, MKs, Pairs, DefK, DefV) -> + verify_possible(MKs, ShdwPs), + {promote_to_mand(MKs, Pairs), DefK, DefV}; +map_from_form([{SKey,MNess,Val}|SPairs], ShdwPs0, MKs0, Pairs0, DefK0, DefV0) -> + Key = lists:foldl(fun({K,_},S)->t_subtract(S,K)end, SKey, ShdwPs0), + ShdwPs = case Key of ?none -> ShdwPs0; _ -> [{Key,Val}|ShdwPs0] end, + MKs = case MNess of ?mand -> [SKey|MKs0]; ?opt -> MKs0 end, + if MNess =:= ?mand, SKey =:= ?none -> throw(none); + true -> ok + end, + {Pairs, DefK, DefV} = + case is_singleton_type(Key) of + true -> + MNess1 = case Val =:= ?none of true -> ?opt; false -> MNess end, + {mapdict_insert({Key,MNess1,Val}, Pairs0), DefK0, DefV0}; + false -> + case Key =:= ?none orelse Val =:= ?none of + true -> {Pairs0, DefK0, DefV0}; + false -> {Pairs0, t_sup(DefK0, Key), t_sup(DefV0, Val)} + end + end, + map_from_form(SPairs, ShdwPs, MKs, Pairs, DefK, DefV). + +%% Verifies that all mandatory keys are possible, throws 'none' otherwise +verify_possible(MKs, ShdwPs) -> + lists:foreach(fun(M) -> verify_possible_1(M, ShdwPs) end, MKs). + +verify_possible_1(M, ShdwPs) -> + case lists:any(fun({K,_}) -> t_inf(M, K) =/= ?none end, ShdwPs) of + true -> ok; + false -> throw(none) + end. + +-spec promote_to_mand([erl_type()], t_map_dict()) -> t_map_dict(). + +promote_to_mand(_, []) -> []; +promote_to_mand(MKs, [E={K,_,V}|T]) -> + [case lists:any(fun(M) -> t_is_equal(K,M) end, MKs) of + true -> {K, ?mand, V}; + false -> E + end|promote_to_mand(MKs, T)]. + +-define(RECUR_EXPAND_LIMIT, 10). +-define(RECUR_EXPAND_DEPTH, 2). + +%% If more of the limited resources is spent on the non-recursive +%% forms, more warnings are found. And the analysis is also a bit +%% faster. +%% +%% Setting REC_TYPE_LIMIT to 1 would work also work well. + +recur_limit(Fun, D, L, _, _) when L =< ?RECUR_EXPAND_DEPTH, + D =< ?RECUR_EXPAND_LIMIT -> + Fun(D, L); +recur_limit(Fun, D, L, TypeName, TypeNames) -> + case is_recursive(TypeName, TypeNames) of + true -> + {T, L1, C1} = Fun(?RECUR_EXPAND_DEPTH, ?RECUR_EXPAND_LIMIT), + {T, L - L1, C1}; + false -> + Fun(D, L) + end. + +-spec t_check_record_fields(parse_form(), sets:set(mfa()), site(), + mod_records(), var_table(), cache()) -> cache(). + +t_check_record_fields(Form, ExpTypes, Site, RecDict, VarTable, Cache) -> + State = #from_form{site = Site, + xtypes = ExpTypes, + mrecs = RecDict, + vtab = VarTable, + tnames = []}, + check_record_fields(Form, State, Cache). + +-spec check_record_fields(parse_form(), #from_form{}, cache()) -> cache(). + +%% If there is something wrong with parse_form() +%% throw({error, io_lib:chars()} is called. + +check_record_fields({var, _L, _}, _S, C) -> C; +check_record_fields({ann_type, _L, [_Var, Type]}, S, C) -> + check_record_fields(Type, S, C); +check_record_fields({paren_type, _L, [Type]}, S, C) -> + check_record_fields(Type, S, C); +check_record_fields({remote_type, _L, [{atom, _, _}, {atom, _, _}, Args]}, + S, C) -> + list_check_record_fields(Args, S, C); +check_record_fields({atom, _L, _}, _S, C) -> C; +check_record_fields({integer, _L, _}, _S, C) -> C; +check_record_fields({op, _L, _Op, _Arg}, _S, C) -> C; +check_record_fields({op, _L, _Op, _Arg1, _Arg2}, _S, C) -> C; +check_record_fields({type, _L, tuple, any}, _S, C) -> C; +check_record_fields({type, _L, map, any}, _S, C) -> C; +check_record_fields({type, _L, binary, [_Base, _Unit]}, _S, C) -> C; +check_record_fields({type, _L, 'fun', [{type, _, any}, Range]}, S, C) -> + check_record_fields(Range, S, C); +check_record_fields({type, _L, range, [_From, _To]}, _S, C) -> C; +check_record_fields({type, _L, record, [Name|Fields]}, S, C) -> + check_record(Name, Fields, S, C); +check_record_fields({type, _L, _, Args}, S, C) -> + list_check_record_fields(Args, S, C); +check_record_fields({user_type, _L, _Name, Args}, S, C) -> + list_check_record_fields(Args, S, C). + +check_record({atom, _, Name}, ModFields, S, C) -> + #from_form{site = Site, mrecs = MR} = S, + M = site_module(Site), + {ok, R} = dict:find(M, MR), + {ok, DeclFields} = lookup_record(Name, R), + case check_fields(Name, ModFields, DeclFields, S, C) of + {error, FieldName} -> + throw({error, io_lib:format("Illegal declaration of #~w{~w}\n", + [Name, FieldName])}); + C1 -> C1 + end. + +check_fields(RecName, [{type, _, field_type, [{atom, _, Name}, Abstr]}|Left], + DeclFields, S, C) -> + #from_form{site = Site0, xtypes = ET, mrecs = MR, vtab = V} = S, + M = site_module(Site0), + Site = {record, {M, RecName, length(DeclFields)}}, + {Type, C1} = t_from_form(Abstr, ET, Site, MR, V, C), + {Name, _, DeclType} = lists:keyfind(Name, 1, DeclFields), + TypeNoVars = subst_all_vars_to_any(Type), + case t_is_subtype(TypeNoVars, DeclType) of + false -> {error, Name}; + true -> check_fields(RecName, Left, DeclFields, S, C1) + end; +check_fields(_RecName, [], _Decl, _S, C) -> + C. + +list_check_record_fields([], _S, C) -> + C; +list_check_record_fields([H|Tail], S, C) -> + C1 = check_record_fields(H, S, C), + list_check_record_fields(Tail, S, C1). + +site_module({_, {Module, _, _}}) -> + Module. + +-spec cache__new() -> cache(). + +cache__new() -> + maps:new(). + +-spec cache_key(module(), atom(), [erl_type()], + type_names(), expand_depth()) -> cache_key(). + +%% If TypeNames is left out from the key, the cache is smaller, and +%% the form-to-type translation is faster. But it would be a shame if, +%% for example, any() is used, where a more complex type should be +%% used. There is also a slight risk of creating unnecessarily big +%% types. + +cache_key(Module, Name, ArgTypes, TypeNames, D) -> + {Module, Name, D, ArgTypes, TypeNames}. + +-spec cache_find(cache_key(), cache()) -> + {erl_type(), expand_limit()} | 'error'. + +cache_find(Key, Cache) -> + case maps:find(Key, Cache) of + {ok, Value} -> + Value; + error -> + error + end. + +-spec cache_put(cache_key(), erl_type(), expand_limit(), cache()) -> cache(). + +cache_put(_Key, _Type, DeltaL, Cache) when DeltaL < 0 -> + %% The type is truncated; do not reuse it. + Cache; +cache_put(Key, Type, DeltaL, Cache) -> + maps:put(Key, {Type, DeltaL}, Cache). + +-spec t_var_names([erl_type()]) -> [atom()]. + +t_var_names([{var, _, Name}|L]) when L =/= '_' -> + [Name|t_var_names(L)]; +t_var_names([]) -> + []. + +-spec t_form_to_string(parse_form()) -> string(). + +t_form_to_string({var, _L, '_'}) -> "_"; +t_form_to_string({var, _L, Name}) -> atom_to_list(Name); +t_form_to_string({atom, _L, Atom}) -> + io_lib:write_string(atom_to_list(Atom), $'); % To quote or not to quote... ' +t_form_to_string({integer, _L, Int}) -> integer_to_list(Int); +t_form_to_string({op, _L, _Op, _Arg} = Op) -> + case erl_eval:partial_eval(Op) of + {integer, _, _} = Int -> t_form_to_string(Int); + _ -> io_lib:format("Badly formed type ~w", [Op]) + end; +t_form_to_string({op, _L, _Op, _Arg1, _Arg2} = Op) -> + case erl_eval:partial_eval(Op) of + {integer, _, _} = Int -> t_form_to_string(Int); + _ -> io_lib:format("Badly formed type ~w", [Op]) + end; +t_form_to_string({ann_type, _L, [Var, Type]}) -> + t_form_to_string(Var) ++ "::" ++ t_form_to_string(Type); +t_form_to_string({paren_type, _L, [Type]}) -> + flat_format("(~s)", [t_form_to_string(Type)]); +t_form_to_string({remote_type, _L, [{atom, _, Mod}, {atom, _, Name}, Args]}) -> + ArgString = "(" ++ string:join(t_form_to_string_list(Args), ",") ++ ")", + flat_format("~w:~w", [Mod, Name]) ++ ArgString; +t_form_to_string({type, _L, arity, []}) -> "arity()"; +t_form_to_string({type, _L, binary, []}) -> "binary()"; +t_form_to_string({type, _L, binary, [Base, Unit]} = Type) -> + case {erl_eval:partial_eval(Base), erl_eval:partial_eval(Unit)} of + {{integer, _, B}, {integer, _, U}} -> + %% the following mirrors the clauses of t_to_string/2 + case {U, B} of + {0, 0} -> "<<>>"; + {8, 0} -> "binary()"; + {1, 0} -> "bitstring()"; + {0, B} -> flat_format("<<_:~w>>", [B]); + {U, 0} -> flat_format("<<_:_*~w>>", [U]); + {U, B} -> flat_format("<<_:~w,_:_*~w>>", [B, U]) + end; + _ -> io_lib:format("Badly formed bitstr type ~w", [Type]) + end; +t_form_to_string({type, _L, bitstring, []}) -> "bitstring()"; +t_form_to_string({type, _L, 'fun', []}) -> "fun()"; +t_form_to_string({type, _L, 'fun', [{type, _, any}, Range]}) -> + "fun(...) -> " ++ t_form_to_string(Range); +t_form_to_string({type, _L, 'fun', [{type, _, product, Domain}, Range]}) -> + "fun((" ++ string:join(t_form_to_string_list(Domain), ",") ++ ") -> " + ++ t_form_to_string(Range) ++ ")"; +t_form_to_string({type, _L, iodata, []}) -> "iodata()"; +t_form_to_string({type, _L, iolist, []}) -> "iolist()"; +t_form_to_string({type, _L, list, [Type]}) -> + "[" ++ t_form_to_string(Type) ++ "]"; +t_form_to_string({type, _L, map, any}) -> "map()"; +t_form_to_string({type, _L, map, Args}) -> + "#{" ++ string:join(t_form_to_string_list(Args), ",") ++ "}"; +t_form_to_string({type, _L, map_field_assoc, [Key, Val]}) -> + t_form_to_string(Key) ++ "=>" ++ t_form_to_string(Val); +t_form_to_string({type, _L, map_field_exact, [Key, Val]}) -> + t_form_to_string(Key) ++ ":=" ++ t_form_to_string(Val); +t_form_to_string({type, _L, mfa, []}) -> "mfa()"; +t_form_to_string({type, _L, module, []}) -> "module()"; +t_form_to_string({type, _L, node, []}) -> "node()"; +t_form_to_string({type, _L, nonempty_list, [Type]}) -> + "[" ++ t_form_to_string(Type) ++ ",...]"; +t_form_to_string({type, _L, nonempty_string, []}) -> "nonempty_string()"; +t_form_to_string({type, _L, product, Elements}) -> + "<" ++ string:join(t_form_to_string_list(Elements), ",") ++ ">"; +t_form_to_string({type, _L, range, [From, To]} = Type) -> + case {erl_eval:partial_eval(From), erl_eval:partial_eval(To)} of + {{integer, _, FromVal}, {integer, _, ToVal}} -> + flat_format("~w..~w", [FromVal, ToVal]); + _ -> flat_format("Badly formed type ~w",[Type]) + end; +t_form_to_string({type, _L, record, [{atom, _, Name}]}) -> + flat_format("#~w{}", [Name]); +t_form_to_string({type, _L, record, [{atom, _, Name}|Fields]}) -> + FieldString = string:join(t_form_to_string_list(Fields), ","), + flat_format("#~w{~s}", [Name, FieldString]); +t_form_to_string({type, _L, field_type, [{atom, _, Name}, Type]}) -> + flat_format("~w::~s", [Name, t_form_to_string(Type)]); +t_form_to_string({type, _L, term, []}) -> "term()"; +t_form_to_string({type, _L, timeout, []}) -> "timeout()"; +t_form_to_string({type, _L, tuple, any}) -> "tuple()"; +t_form_to_string({type, _L, tuple, Args}) -> + "{" ++ string:join(t_form_to_string_list(Args), ",") ++ "}"; +t_form_to_string({type, _L, union, Args}) -> + string:join(t_form_to_string_list(Args), " | "); +t_form_to_string({type, _L, Name, []} = T) -> + try + M = mod, + D0 = dict:new(), + MR = dict:from_list([{M, D0}]), + Site = {type, {M,Name,0}}, + V = var_table__new(), + C = cache__new(), + State = #from_form{site = Site, + xtypes = sets:new(), + mrecs = MR, + vtab = V, + tnames = []}, + {T1, _, _} = from_form(T, State, _Deep=1000, _ALot=1000000, C), + t_to_string(T1) + catch throw:{error, _} -> atom_to_string(Name) ++ "()" + end; +t_form_to_string({user_type, _L, Name, List}) -> + flat_format("~w(~s)", + [Name, string:join(t_form_to_string_list(List), ",")]); +t_form_to_string({type, L, Name, List}) -> + %% Compatibility: modules compiled before Erlang/OTP 18.0. + t_form_to_string({user_type, L, Name, List}). + +t_form_to_string_list(List) -> + t_form_to_string_list(List, []). + +t_form_to_string_list([H|T], Acc) -> + t_form_to_string_list(T, [t_form_to_string(H)|Acc]); +t_form_to_string_list([], Acc) -> + lists:reverse(Acc). + +-spec atom_to_string(atom()) -> string(). + +atom_to_string(Atom) -> + flat_format("~w", [Atom]). + +%%============================================================================= +%% +%% Utilities +%% +%%============================================================================= + +-spec any_none([erl_type()]) -> boolean(). + +any_none([?none|_Left]) -> true; +any_none([_|Left]) -> any_none(Left); +any_none([]) -> false. + +-spec any_none_or_unit([erl_type()]) -> boolean(). + +any_none_or_unit([?none|_]) -> true; +any_none_or_unit([?unit|_]) -> true; +any_none_or_unit([_|Left]) -> any_none_or_unit(Left); +any_none_or_unit([]) -> false. + +-spec is_erl_type(any()) -> boolean(). + +is_erl_type(?any) -> true; +is_erl_type(?none) -> true; +is_erl_type(?unit) -> true; +is_erl_type(#c{}) -> true; +is_erl_type(_) -> false. + +-spec lookup_record(atom(), type_table()) -> + 'error' | {'ok', [{atom(), parse_form(), erl_type()}]}. + +lookup_record(Tag, RecDict) when is_atom(Tag) -> + case dict:find({record, Tag}, RecDict) of + {ok, {_FileLine, [{_Arity, Fields}]}} -> + {ok, Fields}; + {ok, {_FileLine, List}} when is_list(List) -> + %% This will have to do, since we do not know which record we + %% are looking for. + error; + error -> + error + end. + +-spec lookup_record(atom(), arity(), type_table()) -> + 'error' | {'ok', [{atom(), parse_form(), erl_type()}]}. + +lookup_record(Tag, Arity, RecDict) when is_atom(Tag) -> + case dict:find({record, Tag}, RecDict) of + {ok, {_FileLine, [{Arity, Fields}]}} -> {ok, Fields}; + {ok, {_FileLine, OrdDict}} -> orddict:find(Arity, OrdDict); + error -> error + end. + +-spec lookup_type(_, _, _) -> {'type' | 'opaque', type_value()} | 'error'. +lookup_type(Name, Arity, RecDict) -> + case dict:find({type, Name, Arity}, RecDict) of + error -> + case dict:find({opaque, Name, Arity}, RecDict) of + error -> error; + {ok, Found} -> {opaque, Found} + end; + {ok, Found} -> {type, Found} + end. + +-spec type_is_defined('type' | 'opaque', atom(), arity(), type_table()) -> + boolean(). + +type_is_defined(TypeOrOpaque, Name, Arity, RecDict) -> + dict:is_key({TypeOrOpaque, Name, Arity}, RecDict). + +cannot_have_opaque(Type, TypeName, TypeNames) -> + t_is_none(Type) orelse is_recursive(TypeName, TypeNames). + +is_recursive(TypeName, TypeNames) -> + lists:member(TypeName, TypeNames). + +can_unfold_more(TypeName, TypeNames) -> + Fun = fun(E, Acc) -> case E of TypeName -> Acc + 1; _ -> Acc end end, + lists:foldl(Fun, 0, TypeNames) < ?REC_TYPE_LIMIT. + +-spec do_opaque(erl_type(), opaques(), fun((_) -> T)) -> T. + +%% Probably a little faster than calling t_unopaque/2. +%% Unions that are due to opaque types are unopaqued. +do_opaque(?opaque(_) = Type, Opaques, Pred) -> + case Opaques =:= 'universe' orelse is_opaque_type(Type, Opaques) of + true -> do_opaque(t_opaque_structure(Type), Opaques, Pred); + false -> Pred(Type) + end; +do_opaque(?union(List) = Type, Opaques, Pred) -> + [A,B,F,I,L,N,T,M,O,Map] = List, + if O =:= ?none -> Pred(Type); + true -> + case Opaques =:= 'universe' orelse is_opaque_type(O, Opaques) of + true -> + S = t_opaque_structure(O), + do_opaque(t_sup([A,B,F,I,L,N,T,M,S,Map]), Opaques, Pred); + false -> Pred(Type) + end + end; +do_opaque(Type, _Opaques, Pred) -> + Pred(Type). + +map_all_values(?map(Pairs,_,DefV)) -> + [DefV|[V || {V, _, _} <- Pairs]]. + +map_all_keys(?map(Pairs,DefK,_)) -> + [DefK|[K || {_, _, K} <- Pairs]]. + +map_all_types(M) -> + map_all_keys(M) ++ map_all_values(M). + +%% Tests if a type has exactly one possible value. +-spec t_is_singleton(erl_type()) -> boolean(). + +t_is_singleton(Type) -> + t_is_singleton(Type, 'universe'). + +-spec t_is_singleton(erl_type(), opaques()) -> boolean(). + +t_is_singleton(Type, Opaques) -> + do_opaque(Type, Opaques, fun is_singleton_type/1). + +%% Incomplete; not all representable singleton types are included. +is_singleton_type(?nil) -> true; +is_singleton_type(?atom(?any)) -> false; +is_singleton_type(?atom(Set)) -> + ordsets:size(Set) =:= 1; +is_singleton_type(?int_range(V, V)) -> true; +is_singleton_type(?int_set(Set)) -> + ordsets:size(Set) =:= 1; +is_singleton_type(?tuple(Types, Arity, _)) when is_integer(Arity) -> + lists:all(fun is_singleton_type/1, Types); +is_singleton_type(?tuple_set([{Arity, [OnlyTuple]}])) when is_integer(Arity) -> + is_singleton_type(OnlyTuple); +is_singleton_type(?map(Pairs, ?none, ?none)) -> + lists:all(fun({_,MNess,V}) -> MNess =:= ?mand andalso is_singleton_type(V) + end, Pairs); +is_singleton_type(_) -> + false. + +%% Returns the only possible value of a singleton type. +-spec t_singleton_to_term(erl_type(), opaques()) -> term(). + +t_singleton_to_term(Type, Opaques) -> + do_opaque(Type, Opaques, fun singleton_type_to_term/1). + +singleton_type_to_term(?nil) -> []; +singleton_type_to_term(?atom(Set)) when Set =/= ?any -> + case ordsets:size(Set) of + 1 -> hd(ordsets:to_list(Set)); + _ -> error(badarg) + end; +singleton_type_to_term(?int_range(V, V)) -> V; +singleton_type_to_term(?int_set(Set)) -> + case ordsets:size(Set) of + 1 -> hd(ordsets:to_list(Set)); + _ -> error(badarg) + end; +singleton_type_to_term(?tuple(Types, Arity, _)) when is_integer(Arity) -> + lists:map(fun singleton_type_to_term/1, Types); +singleton_type_to_term(?tuple_set([{Arity, [OnlyTuple]}])) + when is_integer(Arity) -> + singleton_type_to_term(OnlyTuple); +singleton_type_to_term(?map(Pairs, ?none, ?none)) -> + maps:from_list([{singleton_type_to_term(K), singleton_type_to_term(V)} + || {K,?mand,V} <- Pairs]). + +%% ----------------------------------- +%% Set +%% + +set_singleton(Element) -> + ordsets:from_list([Element]). + +set_is_singleton(Element, Set) -> + set_singleton(Element) =:= Set. + +set_is_element(Element, Set) -> + ordsets:is_element(Element, Set). + +set_union(?any, _) -> ?any; +set_union(_, ?any) -> ?any; +set_union(S1, S2) -> + case ordsets:union(S1, S2) of + S when length(S) =< ?SET_LIMIT -> S; + _ -> ?any + end. + +%% The intersection and subtraction can return ?none. +%% This should always be handled right away since ?none is not a valid set. +%% However, ?any is considered a valid set. + +set_intersection(?any, S) -> S; +set_intersection(S, ?any) -> S; +set_intersection(S1, S2) -> + case ordsets:intersection(S1, S2) of + [] -> ?none; + S -> S + end. + +set_subtract(_, ?any) -> ?none; +set_subtract(?any, _) -> ?any; +set_subtract(S1, S2) -> + case ordsets:subtract(S1, S2) of + [] -> ?none; + S -> S + end. + +set_from_list(List) -> + case length(List) of + L when L =< ?SET_LIMIT -> ordsets:from_list(List); + L when L > ?SET_LIMIT -> ?any + end. + +set_to_list(Set) -> + ordsets:to_list(Set). + +set_filter(Fun, Set) -> + case ordsets:filter(Fun, Set) of + [] -> ?none; + NewSet -> NewSet + end. + +set_size(Set) -> + ordsets:size(Set). + +set_to_string(Set) -> + L = [case is_atom(X) of + true -> io_lib:write_string(atom_to_list(X), $'); % stupid emacs ' + false -> flat_format("~w", [X]) + end || X <- set_to_list(Set)], + string:join(L, " | "). + +set_min([H|_]) -> H. + +set_max(Set) -> + hd(lists:reverse(Set)). + +flat_format(F, S) -> + lists:flatten(io_lib:format(F, S)). + +%%============================================================================= +%% +%% Utilities for the binary type +%% +%%============================================================================= + +-spec gcd(integer(), integer()) -> integer(). + +gcd(A, B) when B > A -> + gcd1(B, A); +gcd(A, B) -> + gcd1(A, B). + +-spec gcd1(integer(), integer()) -> integer(). + +gcd1(A, 0) -> A; +gcd1(A, B) -> + case A rem B of + 0 -> B; + X -> gcd1(B, X) + end. + +-spec bitstr_concat(erl_type(), erl_type()) -> erl_type(). + +bitstr_concat(?none, _) -> ?none; +bitstr_concat(_, ?none) -> ?none; +bitstr_concat(?bitstr(U1, B1), ?bitstr(U2, B2)) -> + t_bitstr(gcd(U1, U2), B1+B2). + +-spec bitstr_match(erl_type(), erl_type()) -> erl_type(). + +bitstr_match(?none, _) -> ?none; +bitstr_match(_, ?none) -> ?none; +bitstr_match(?bitstr(0, B1), ?bitstr(0, B2)) when B1 =< B2 -> + t_bitstr(0, B2-B1); +bitstr_match(?bitstr(0, _B1), ?bitstr(0, _B2)) -> + ?none; +bitstr_match(?bitstr(0, B1), ?bitstr(U2, B2)) when B1 =< B2 -> + t_bitstr(U2, B2-B1); +bitstr_match(?bitstr(0, B1), ?bitstr(U2, B2)) -> + t_bitstr(U2, handle_base(U2, B2-B1)); +bitstr_match(?bitstr(_, B1), ?bitstr(0, B2)) when B1 > B2 -> + ?none; +bitstr_match(?bitstr(U1, B1), ?bitstr(U2, B2)) -> + GCD = gcd(U1, U2), + t_bitstr(GCD, handle_base(GCD, B2-B1)). + +-spec handle_base(integer(), integer()) -> integer(). + +handle_base(Unit, Pos) when Pos >= 0 -> + Pos rem Unit; +handle_base(Unit, Neg) -> + (Unit+(Neg rem Unit)) rem Unit. + +family(L) -> + R = sofs:relation(L), + F = sofs:relation_to_family(R), + sofs:to_external(F). + +%%============================================================================= +%% +%% Interface functions for abstract data types defined in this module +%% +%%============================================================================= + +-spec var_table__new() -> var_table(). + +var_table__new() -> + maps:new(). + +%%============================================================================= +%% Consistency-testing function(s) below +%%============================================================================= + +-ifdef(DO_ERL_TYPES_TEST). + +test() -> + Atom1 = t_atom(), + Atom2 = t_atom(foo), + Atom3 = t_atom(bar), + true = t_is_atom(Atom2), + + True = t_atom(true), + False = t_atom(false), + Bool = t_boolean(), + true = t_is_boolean(True), + true = t_is_boolean(Bool), + false = t_is_boolean(Atom1), + + Binary = t_binary(), + true = t_is_binary(Binary), + + Bitstr = t_bitstr(), + true = t_is_bitstr(Bitstr), + + Bitstr1 = t_bitstr(7, 3), + true = t_is_bitstr(Bitstr1), + false = t_is_binary(Bitstr1), + + Bitstr2 = t_bitstr(16, 8), + true = t_is_bitstr(Bitstr2), + true = t_is_binary(Bitstr2), + + ?bitstr(8, 16) = t_subtract(t_bitstr(4, 12), t_bitstr(8, 12)), + ?bitstr(8, 16) = t_subtract(t_bitstr(4, 12), t_bitstr(8, 12)), + + Int1 = t_integer(), + Int2 = t_integer(1), + Int3 = t_integer(16#ffffffff), + true = t_is_integer(Int2), + true = t_is_byte(Int2), + false = t_is_byte(Int3), + false = t_is_byte(t_from_range(-1, 1)), + true = t_is_byte(t_from_range(1, ?MAX_BYTE)), + + Tuple1 = t_tuple(), + Tuple2 = t_tuple(3), + Tuple3 = t_tuple([Atom1, Int1]), + Tuple4 = t_tuple([Tuple1, Tuple2]), + Tuple5 = t_tuple([Tuple3, Tuple4]), + Tuple6 = t_limit(Tuple5, 2), + Tuple7 = t_limit(Tuple5, 3), + true = t_is_tuple(Tuple1), + + Port = t_port(), + Pid = t_pid(), + Ref = t_reference(), + Identifier = t_identifier(), + false = t_is_reference(Port), + true = t_is_identifier(Port), + + Function1 = t_fun(), + Function2 = t_fun(Pid), + Function3 = t_fun([], Pid), + Function4 = t_fun([Port, Pid], Pid), + Function5 = t_fun([Pid, Atom1], Int2), + true = t_is_fun(Function3), + + List1 = t_list(), + List2 = t_list(t_boolean()), + List3 = t_cons(t_boolean(), List2), + List4 = t_cons(t_boolean(), t_atom()), + List5 = t_cons(t_boolean(), t_nil()), + List6 = t_cons_tl(List5), + List7 = t_sup(List4, List5), + List8 = t_inf(List7, t_list()), + List9 = t_cons(), + List10 = t_cons_tl(List9), + true = t_is_boolean(t_cons_hd(List5)), + true = t_is_list(List5), + false = t_is_list(List4), + + Product1 = t_product([Atom1, Atom2]), + Product2 = t_product([Atom3, Atom1]), + Product3 = t_product([Atom3, Atom2]), + + Union1 = t_sup(Atom2, Atom3), + Union2 = t_sup(Tuple2, Tuple3), + Union3 = t_sup(Int2, Atom3), + Union4 = t_sup(Port, Pid), + Union5 = t_sup(Union4, Int1), + Union6 = t_sup(Function1, Function2), + Union7 = t_sup(Function4, Function5), + Union8 = t_sup(True, False), + true = t_is_boolean(Union8), + Union9 = t_sup(Int2, t_integer(2)), + true = t_is_byte(Union9), + Union10 = t_sup(t_tuple([t_atom(true), ?any]), + t_tuple([t_atom(false), ?any])), + + ?any = t_sup(Product3, Function5), + + Atom3 = t_inf(Union3, Atom1), + Union2 = t_inf(Union2, Tuple1), + Int2 = t_inf(Int1, Union3), + Union4 = t_inf(Union4, Identifier), + Port = t_inf(Union5, Port), + Function4 = t_inf(Union7, Function4), + ?none = t_inf(Product2, Atom1), + Product3 = t_inf(Product1, Product2), + Function5 = t_inf(Union7, Function5), + true = t_is_byte(t_inf(Union9, t_number())), + true = t_is_char(t_inf(Union9, t_number())), + + io:format("3? ~p ~n", [?int_set([3])]), + + RecDict = dict:store({foo, 2}, [bar, baz], dict:new()), + Record1 = t_from_term({foo, [1,2], {1,2,3}}), + + Types = [ + Atom1, + Atom2, + Atom3, + Binary, + Int1, + Int2, + Tuple1, + Tuple2, + Tuple3, + Tuple4, + Tuple5, + Tuple6, + Tuple7, + Ref, + Port, + Pid, + Identifier, + List1, + List2, + List3, + List4, + List5, + List6, + List7, + List8, + List9, + List10, + Function1, + Function2, + Function3, + Function4, + Function5, + Product1, + Product2, + Record1, + Union1, + Union2, + Union3, + Union4, + Union5, + Union6, + Union7, + Union8, + Union10, + t_inf(Union10, t_tuple([t_atom(true), t_integer()])) + ], + io:format("~p\n", [[t_to_string(X, RecDict) || X <- Types]]). + +-endif. diff --git a/lib/dialyzer/vsn.mk b/lib/dialyzer/vsn.mk index b9a28afdd9..6723876208 100644 --- a/lib/dialyzer/vsn.mk +++ b/lib/dialyzer/vsn.mk @@ -1 +1 @@ -DIALYZER_VSN = 3.0.1 +DIALYZER_VSN = 3.0.2 diff --git a/lib/diameter/doc/src/notes.xml b/lib/diameter/doc/src/notes.xml index b1be7bdcf7..c2bbed2e5a 100644 --- a/lib/diameter/doc/src/notes.xml +++ b/lib/diameter/doc/src/notes.xml @@ -43,6 +43,31 @@ first.</p> <!-- ===================================================================== --> +<section><title>diameter 1.12.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Close diameter_tcp/sctp listening sockets at + diameter:stop_service/1.</p> + <p> + Broken by OTP-13611.</p> + <p> + Own Id: OTP-13787 Aux Id: OTP-13611 </p> + </item> + <item> + <p> + Update build scripts to not make assumtions about where + env, cp and perl are located.</p> + <p> + Own Id: OTP-13800</p> + </item> + </list> + </section> + +</section> + <section><title>diameter 1.12</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/edoc/doc/overview.edoc b/lib/edoc/doc/overview.edoc index d2bba9d744..3a2118928a 100644 --- a/lib/edoc/doc/overview.edoc +++ b/lib/edoc/doc/overview.edoc @@ -377,6 +377,12 @@ The following tags can be used before a function definition: Useful for debug/test functions, etc. The content can be used as a comment; it is ignored by EDoc.</dd> + <dt><a name="ftag-param">`@param'</a></dt> + <dd>Provide more information on a single parameter of the + enclosing function. The content consists of a parameter name, + followed by one or more whitespace characters, and XHTML text. + </dd> + <dt><a name="ftag-private">`@private'</a></dt> <dd>Marks the function as private (i.e., not part of the public interface), so that it will not appear in the normal @@ -386,6 +392,10 @@ The following tags can be used before a function definition: always "private".) The content can be used as a comment; it is ignored by EDoc.</dd> + <dt><a name="ftag-returns">`@returns'</a></dt> + <dd>Specify additional information about the value returned by + the function. Content consists of XHTML text.</dd> + <dt><a name="ftag-see">`@see'</a></dt> <dd>Make a reference to a module, function, datatype, or application. (See {@section References}.) diff --git a/lib/edoc/doc/src/notes.xml b/lib/edoc/doc/src/notes.xml index ae8147c564..e6ad2c683f 100644 --- a/lib/edoc/doc/src/notes.xml +++ b/lib/edoc/doc/src/notes.xml @@ -32,6 +32,21 @@ <p>This document describes the changes made to the EDoc application.</p> +<section><title>Edoc 0.8</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Improve types and specs in OTP documentation generated + from Erlang source files. </p> + <p> + Own Id: OTP-13720 Aux Id: ERL-120 </p> + </item> + </list> + </section> + +</section> + <section><title>Edoc 0.7.19</title> <section><title>Improvements and New Features</title> diff --git a/lib/edoc/vsn.mk b/lib/edoc/vsn.mk index f38800b3e0..d3cc732e9c 100644 --- a/lib/edoc/vsn.mk +++ b/lib/edoc/vsn.mk @@ -1 +1 @@ -EDOC_VSN = 0.7.19 +EDOC_VSN = 0.8 diff --git a/lib/erl_docgen/doc/src/notes.xml b/lib/erl_docgen/doc/src/notes.xml index 21dc617d55..cf24161d43 100644 --- a/lib/erl_docgen/doc/src/notes.xml +++ b/lib/erl_docgen/doc/src/notes.xml @@ -31,7 +31,22 @@ </header> <p>This document describes the changes made to the <em>erl_docgen</em> application.</p> - <section><title>Erl_Docgen 0.5</title> + <section><title>Erl_Docgen 0.6</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Improve types and specs in OTP documentation generated + from Erlang source files. </p> + <p> + Own Id: OTP-13720 Aux Id: ERL-120 </p> + </item> + </list> + </section> + +</section> + +<section><title>Erl_Docgen 0.5</title> <section><title>Fixed Bugs and Malfunctions</title> <list> diff --git a/lib/erl_docgen/src/docgen_edoc_xml_cb.erl b/lib/erl_docgen/src/docgen_edoc_xml_cb.erl index 4f3af1f767..13ff0a139d 100644 --- a/lib/erl_docgen/src/docgen_edoc_xml_cb.erl +++ b/lib/erl_docgen/src/docgen_edoc_xml_cb.erl @@ -111,7 +111,16 @@ root_attributes(Element, Opts) -> Enc -> Enc end, - [#xmlAttribute{name=encoding, value=Encoding}]. + [#xmlAttribute{name=encoding, value=reformat_encoding(Encoding)}]. + +%% epp:default_encoding/0 returns 'utf8' +reformat_encoding(utf8) -> "UTF-8"; +reformat_encoding(List) when is_list(List) -> + case string:to_lower(List) of + "utf8" -> "UTF-8"; + _ -> List + end; +reformat_encoding(Other) -> Other. layout_chapter(#xmlElement{name=overview, content=Es}) -> Title = get_text(title, Es), diff --git a/lib/erl_docgen/vsn.mk b/lib/erl_docgen/vsn.mk index 98d1c3f7be..6489d26327 100644 --- a/lib/erl_docgen/vsn.mk +++ b/lib/erl_docgen/vsn.mk @@ -1 +1 @@ -ERL_DOCGEN_VSN = 0.5 +ERL_DOCGEN_VSN = 0.6 diff --git a/lib/erl_interface/doc/src/notes.xml b/lib/erl_interface/doc/src/notes.xml index a69c5aac11..4ef5454f44 100644 --- a/lib/erl_interface/doc/src/notes.xml +++ b/lib/erl_interface/doc/src/notes.xml @@ -31,6 +31,23 @@ </header> <p>This document describes the changes made to the Erl_interface application.</p> +<section><title>Erl_Interface 3.9.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Look for .erlang.cookie in windows system directory if + HOMEDRIVE and HOMEPATH is not set. The same behaviour as + the VM.</p> + <p> + Own Id: OTP-13849</p> + </item> + </list> + </section> + +</section> + <section><title>Erl_Interface 3.9</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/erl_interface/vsn.mk b/lib/erl_interface/vsn.mk index 33705d1e8b..82be43b7df 100644 --- a/lib/erl_interface/vsn.mk +++ b/lib/erl_interface/vsn.mk @@ -1,2 +1,2 @@ -EI_VSN = 3.9 +EI_VSN = 3.9.1 ERL_INTERFACE_VSN = $(EI_VSN) diff --git a/lib/eunit/doc/src/notes.xml b/lib/eunit/doc/src/notes.xml index 88602e8222..6ae3c04bc8 100644 --- a/lib/eunit/doc/src/notes.xml +++ b/lib/eunit/doc/src/notes.xml @@ -33,6 +33,23 @@ </header> <p>This document describes the changes made to the EUnit application.</p> +<section><title>Eunit 2.3.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + When asserts were moved out to a separate header file, + the automatic enabling of asserts when testing is enabled + stopped working.</p> + <p> + Own Id: OTP-13892</p> + </item> + </list> + </section> + +</section> + <section><title>Eunit 2.3</title> <section><title>Improvements and New Features</title> diff --git a/lib/eunit/include/eunit.hrl b/lib/eunit/include/eunit.hrl index 7fd6c206a4..8a4cad1e7e 100644 --- a/lib/eunit/include/eunit.hrl +++ b/lib/eunit/include/eunit.hrl @@ -51,7 +51,9 @@ %% note that the main switch used within this file is NOTEST; however, %% both TEST and EUNIT may be used to check whether testing is enabled -ifndef(NOTEST). --undef(NOASSERT). % testing requires that assertions are enabled +-ifndef(ASSERT). +-define(ASSERT, true). % testing requires that assertions are enabled +-endif. -ifndef(TEST). -define(TEST, true). -endif. diff --git a/lib/eunit/vsn.mk b/lib/eunit/vsn.mk index b551ee6eb6..83d826f8b6 100644 --- a/lib/eunit/vsn.mk +++ b/lib/eunit/vsn.mk @@ -1 +1 @@ -EUNIT_VSN = 2.3 +EUNIT_VSN = 2.3.1 diff --git a/lib/gs/doc/src/notes.xml b/lib/gs/doc/src/notes.xml index 20188c75e2..4f3f0645a5 100644 --- a/lib/gs/doc/src/notes.xml +++ b/lib/gs/doc/src/notes.xml @@ -31,7 +31,23 @@ </header> <p>This document describes the changes made to the GS application.</p> - <section><title>GS 1.6.1</title> + <section><title>GS 1.6.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Update build scripts to not make assumtions about where + env, cp and perl are located.</p> + <p> + Own Id: OTP-13800</p> + </item> + </list> + </section> + +</section> + +<section><title>GS 1.6.1</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/gs/vsn.mk b/lib/gs/vsn.mk index c762507bab..d2c5d15a96 100644 --- a/lib/gs/vsn.mk +++ b/lib/gs/vsn.mk @@ -1,2 +1,2 @@ -GS_VSN = 1.6.1 +GS_VSN = 1.6.2 diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl index 15f7b793a1..9ef119ba46 100644 --- a/lib/hipe/cerl/erl_types.erl +++ b/lib/hipe/cerl/erl_types.erl @@ -611,9 +611,13 @@ t_decorate_with_opaque(T1, T2, Opaques) -> false -> T1; true -> R = decorate(T1, T, Opaques), - ?debug(case catch t_is_equal(t_unopaque(R), t_unopaque(T1)) of - true -> ok; - false -> + ?debug(case catch + not t_is_equal(t_unopaque(R), t_unopaque(T1)) + orelse + t_is_equal(T1, T) andalso not t_is_equal(T1, R) + of + false -> ok; + _ -> io:format("T1 = ~p,\n", [T1]), io:format("T2 = ~p,\n", [T2]), io:format("O = ~p,\n", [Opaques]), @@ -642,7 +646,6 @@ decorate(?tuple_set(List), ?tuple_set(L), Opaques) -> decorate(?union(List), T, Opaques) when T =/= ?any -> ?union(L) = force_union(T), union_decorate(List, L, Opaques); -decorate(?opaque(_)=T, _, _Opaques) -> T; decorate(T, ?union(L), Opaques) when T =/= ?any -> ?union(List) = force_union(T), union_decorate(List, L, Opaques); @@ -656,7 +659,7 @@ decorate_with_opaque(Type, ?opaque(Set2), Opaques) -> case decoration(set_to_list(Set2), Type, Opaques, [], false) of {[], false} -> Type; {List, All} when List =/= [] -> - NewType = ?opaque(ordsets:from_list(List)), + NewType = sup_opaque(List), case All of true -> NewType; false -> t_sup(NewType, Type) @@ -670,9 +673,10 @@ decoration([#opaque{struct = S} = Opaque|OpaqueTypes], Type, Opaques, case not IsOpaque orelse t_is_none(I) of true -> decoration(OpaqueTypes, Type, Opaques, NewOpaqueTypes0, All); false -> - NewOpaque = Opaque#opaque{struct = decorate(I, S, Opaques)}, + NewI = decorate(I, S, Opaques), + NewOpaque = combine(NewI, [Opaque]), NewAll = All orelse t_is_equal(I, Type), - NewOpaqueTypes = [NewOpaque|NewOpaqueTypes0], + NewOpaqueTypes = NewOpaque ++ NewOpaqueTypes0, decoration(OpaqueTypes, Type, Opaques, NewOpaqueTypes, NewAll) end; decoration([], _Type, _Opaques, NewOpaqueTypes, All) -> @@ -2991,27 +2995,21 @@ inf_collect(_T1, [], _Opaques, OpL) -> OpL. combine(S, T1, T2) -> - #opaque{mod = Mod1, name = Name1, args = Args1} = T1, - #opaque{mod = Mod2, name = Name2, args = Args2} = T2, - Comb1 = comb(Mod1, Name1, Args1, S, T1), - case is_compat_opaque_names({Mod1, Name1, Args1}, {Mod2, Name2, Args2}) of - true -> Comb1; - false -> Comb1 ++ comb(Mod2, Name2, Args2, S, T2) + case is_compat_opaque_names(T1, T2) of + true -> combine(S, [T1]); + false -> combine(S, [T1, T2]) end. -comb(Mod, Name, Args, S, T) -> - case can_combine_opaque_names(Mod, Name, Args, S) of - true -> - ?opaque(Set) = S, - Set; - false -> - [T#opaque{struct = S}] - end. +combine(?opaque(Set), Ts) -> + [comb2(O, T) || O <- Set, T <- Ts]; +combine(S, Ts) -> + [T#opaque{struct = S} || T <- Ts]. -can_combine_opaque_names(Mod1, Name1, Args1, - ?opaque([#opaque{mod = Mod2, name = Name2, args = Args2}])) -> - is_compat_opaque_names({Mod1, Name1, Args1}, {Mod2, Name2, Args2}); -can_combine_opaque_names(_, _, _, _) -> false. +comb2(O, T) -> + case is_compat_opaque_names(O, T) of + true -> O; + false -> T#opaque{struct = ?opaque(set_singleton(O))} + end. %% Combining two lists this way can be very time consuming... %% Note: two parameterized opaque types are not the same if their @@ -3020,32 +3018,27 @@ inf_opaque(Set1, Set2, Opaques) -> List1 = inf_look_up(Set1, Opaques), List2 = inf_look_up(Set2, Opaques), List0 = [combine(Inf, T1, T2) || - {Is1, ModNameArgs1, T1} <- List1, - {Is2, ModNameArgs2, T2} <- List2, - not t_is_none(Inf = inf_opaque_types(Is1, ModNameArgs1, T1, - Is2, ModNameArgs2, T2, - Opaques))], - List = lists:sort(lists:append(List0)), + {Is1, T1} <- List1, + {Is2, T2} <- List2, + not t_is_none(Inf = inf_opaque_types(Is1, T1, Is2, T2, Opaques))], + List = lists:append(List0), sup_opaque(List). %% Optimization: do just one lookup. inf_look_up(Set, Opaques) -> - [{Opaques =:= 'universe' orelse inf_is_opaque_type2(T, Opaques), - {M, N, Args}, T} || - #opaque{mod = M, name = N, args = Args} = T <- set_to_list(Set)]. + [{Opaques =:= 'universe' orelse inf_is_opaque_type2(T, Opaques), T} || + T <- set_to_list(Set)]. inf_is_opaque_type2(T, {match, Opaques}) -> is_opaque_type2(T, Opaques); inf_is_opaque_type2(T, Opaques) -> is_opaque_type2(T, Opaques). -inf_opaque_types(IsOpaque1, ModNameArgs1, T1, - IsOpaque2, ModNameArgs2, T2, Opaques) -> +inf_opaque_types(IsOpaque1, T1, IsOpaque2, T2, Opaques) -> #opaque{struct = S1}=T1, #opaque{struct = S2}=T2, case - Opaques =:= 'universe' orelse - is_compat_opaque_names(ModNameArgs1, ModNameArgs2) + Opaques =:= 'universe' orelse is_compat_opaque_names(T1, T2) of true -> t_inf(S1, S2, Opaques); false -> @@ -3059,10 +3052,15 @@ inf_opaque_types(IsOpaque1, ModNameArgs1, T1, end end. -is_compat_opaque_names(ModNameArgs, ModNameArgs) -> true; -is_compat_opaque_names({Mod,Name,Args1}, {Mod,Name,Args2}) -> - is_compat_args(Args1, Args2); -is_compat_opaque_names(_, _) -> false. +is_compat_opaque_names(Opaque1, Opaque2) -> + #opaque{mod = Mod1, name = Name1, args = Args1} = Opaque1, + #opaque{mod = Mod2, name = Name2, args = Args2} = Opaque2, + case {{Mod1, Name1, Args1}, {Mod2, Name2, Args2}} of + {ModNameArgs, ModNameArgs} -> true; + {{Mod, Name, Args1}, {Mod, Name, Args2}} -> + is_compat_args(Args1, Args2); + _ -> false + end. is_compat_args([A1|Args1], [A2|Args2]) -> is_compat_arg(A1, A2) andalso is_compat_args(Args1, Args2); @@ -3109,6 +3107,10 @@ is_specialization(?tuple_set(List1), ?tuple_set(List2)) -> [sup_tuple_elements(T) || {_Arity, T} <- List2]) catch _:_ -> false end; +is_specialization(?opaque(_) = T1, T2) -> + is_specialization(t_opaque_structure(T1), T2); +is_specialization(T1, ?opaque(_) = T2) -> + is_specialization(T1, t_opaque_structure(T2)); is_specialization(?union(List1)=T1, ?union(List2)=T2) -> case specialization_union2(T1, T2) of {yes, Type1, Type2} -> is_specialization(Type1, Type2); @@ -3124,10 +3126,6 @@ is_specialization(T1, ?union(List)) -> {yes, Type} -> is_specialization(T1, Type); no -> false end; -is_specialization(?opaque(_) = T1, T2) -> - is_specialization(t_opaque_structure(T1), T2); -is_specialization(T1, ?opaque(_) = T2) -> - is_specialization(T1, t_opaque_structure(T2)); is_specialization(?var(_), _) -> exit(error); is_specialization(_, ?var(_)) -> exit(error); is_specialization(?none, _) -> false; @@ -4482,28 +4480,31 @@ t_from_form1(Form, ET, Site, MR, V, C) -> vtab = V, tnames = TypeNames}, L = ?EXPAND_LIMIT, - {T1, L1, C1} = from_form(Form, State, ?EXPAND_DEPTH, L, C), + {T0, L0, C0} = from_form(Form, State, ?EXPAND_DEPTH, L, C), if - L1 =< 0 -> - from_form_loop(Form, State, 1, L, C1); + L0 =< 0 -> + {T1, _, C1} = from_form(Form, State, 1, L, C0), + from_form_loop(Form, State, 2, L, C1, T1); true -> - {T1, C1} + {T0, C0} end. initial_typenames({type, _MTA}=Site) -> [Site]; initial_typenames({spec, _MFA}) -> []; initial_typenames({record, _MRA}) -> []. -from_form_loop(Form, State, D, Limit, C) -> +from_form_loop(Form, State, D, Limit, C, T0) -> {T1, L1, C1} = from_form(Form, State, D, Limit, C), Delta = Limit - L1, if - %% Save some time by assuming next depth will exceed the limit. + L1 =< 0 -> + {T0, C1}; Delta * 8 > Limit -> + %% Save some time by assuming next depth will exceed the limit. {T1, C1}; true -> D1 = D + 1, - from_form_loop(Form, State, D1, Limit, C1) + from_form_loop(Form, State, D1, Limit, C1, T1) end. -spec from_form(parse_form(), diff --git a/lib/hipe/doc/src/notes.xml b/lib/hipe/doc/src/notes.xml index e2a1524be6..fc529fba61 100644 --- a/lib/hipe/doc/src/notes.xml +++ b/lib/hipe/doc/src/notes.xml @@ -31,6 +31,46 @@ </header> <p>This document describes the changes made to HiPE.</p> +<section><title>Hipe 3.15.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed various hipe compiler backend bugs affecting mostly + ARM and SPARC.</p> + <p> + Own Id: OTP-13846 Aux Id: PR-1146 </p> + </item> + <item> + <p> + Fixed some Dialyzer warnings and code cleanup for the + Sparc compiler backend.</p> + <p> + Own Id: OTP-13861 Aux Id: PR-1148 </p> + </item> + <item> + <p> Fix erl_bif_types opaque bug. </p> + <p> + Own Id: OTP-13878 Aux Id: PR-1161, ERL-249 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Fix erl_types opaque match order</p> + <p> + Own Id: OTP-13876</p> + </item> + </list> + </section> + +</section> + <section><title>Hipe 3.15.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/hipe/vsn.mk b/lib/hipe/vsn.mk index e61c1a042c..f00ff0cf2e 100644 --- a/lib/hipe/vsn.mk +++ b/lib/hipe/vsn.mk @@ -1 +1 @@ -HIPE_VSN = 3.15.1 +HIPE_VSN = 3.15.2 diff --git a/lib/ic/doc/src/notes.xml b/lib/ic/doc/src/notes.xml index 08b02bc4a4..ea8bf758cf 100644 --- a/lib/ic/doc/src/notes.xml +++ b/lib/ic/doc/src/notes.xml @@ -31,7 +31,29 @@ <file>notes.xml</file> </header> - <section><title>IC 4.4.1</title> + <section><title>IC 4.4.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> Correct bugs when path to mib or idl spec files + contains UTF-8 characters. </p> + <p> + Own Id: OTP-13718 Aux Id: ERL-179 </p> + </item> + <item> + <p> + Update build scripts to not make assumtions about where + env, cp and perl are located.</p> + <p> + Own Id: OTP-13800</p> + </item> + </list> + </section> + +</section> + +<section><title>IC 4.4.1</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/ic/vsn.mk b/lib/ic/vsn.mk index 7d00ae0170..f0e5e7c266 100644 --- a/lib/ic/vsn.mk +++ b/lib/ic/vsn.mk @@ -1 +1 @@ -IC_VSN = 4.4.1 +IC_VSN = 4.4.2 diff --git a/lib/inets/doc/src/httpc.xml b/lib/inets/doc/src/httpc.xml index 13471aab2c..705afec022 100644 --- a/lib/inets/doc/src/httpc.xml +++ b/lib/inets/doc/src/httpc.xml @@ -68,7 +68,7 @@ this module:</p> <p><c>boolean() = true | false</c></p> <p><c>string()</c> = list of ASCII characters</p> - <p><c>request_id() = ref()</c></p> + <p><c>request_id() = reference()</c></p> <p><c>profile() = atom()</c></p> <p><c>path() = string()</c> representing a file path or directory path</p> <p><c>ip_address()</c> = See the diff --git a/lib/inets/doc/src/mod_esi.xml b/lib/inets/doc/src/mod_esi.xml index 006fca1bdf..46cc796c8a 100644 --- a/lib/inets/doc/src/mod_esi.xml +++ b/lib/inets/doc/src/mod_esi.xml @@ -67,7 +67,7 @@ <tag><c>{remote_adress, inet:ip_address()} </c></tag> <item><p>The clients ip address.</p></item> - <tag><c>{peer_cert, undefined | no_peercert | DER:binary()</c></tag> + <tag><c>{peer_cert, undefined | no_peercert | DER:binary()}</c></tag> <item> <p>For TLS connections where client certificates are used this will be an ASN.1 DER-encoded X509-certificate as an Erlang binary. diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml index caa5a083a3..0c7604ef65 100644 --- a/lib/inets/doc/src/notes.xml +++ b/lib/inets/doc/src/notes.xml @@ -33,7 +33,24 @@ <file>notes.xml</file> </header> - <section><title>Inets 6.3.2</title> + <section><title>Inets 6.3.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + The legacy option 'inet6fb4' for inets had stopped + working. This bug has now been corrected. Fix by Edwin + Fine in bugs.erlang.org ERL-200 and Github PR#1132.</p> + <p> + Own Id: OTP-13776 Aux Id: ERL-200 PR-1132 </p> + </item> + </list> + </section> + +</section> + +<section><title>Inets 6.3.2</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/inets/src/ftp/ftp.erl b/lib/inets/src/ftp/ftp.erl index 8bad91bf98..6868b75eff 100644 --- a/lib/inets/src/ftp/ftp.erl +++ b/lib/inets/src/ftp/ftp.erl @@ -108,6 +108,7 @@ -define(DBG(F,A), 'n/a'). %%-define(DBG(F,A), io:format(F,A)). +%%-define(DBG(F,A), if is_list(F) -> ct:pal(F,A); is_atom(F)->ct:pal(atom_to_list(F),A) end). %%%========================================================================= %%% API - CLIENT FUNCTIONS @@ -2361,14 +2362,17 @@ send_message({ssl, Socket}, Message) -> activate_ctrl_connection(#state{csock = Socket, ctrl_data = {<<>>, _, _}}) -> activate_connection(Socket); activate_ctrl_connection(#state{csock = Socket}) -> + activate_connection(Socket), %% We have already received at least part of the next control message, %% that has been saved in ctrl_data, process this first. - self() ! {tcp, unwrap_socket(Socket), <<>>}. + self() ! {socket_type(Socket), unwrap_socket(Socket), <<>>}. unwrap_socket({tcp,Socket}) -> Socket; unwrap_socket({ssl,Socket}) -> Socket; unwrap_socket(Socket) -> Socket. +socket_type({tcp,_Socket}) -> tcp; +socket_type({ssl,_Socket}) -> ssl. activate_data_connection(#state{dsock = Socket} = State) -> activate_connection(Socket), diff --git a/lib/inets/src/ftp/ftp_response.erl b/lib/inets/src/ftp/ftp_response.erl index 7533bc4550..d54d97dc91 100644 --- a/lib/inets/src/ftp/ftp_response.erl +++ b/lib/inets/src/ftp/ftp_response.erl @@ -90,19 +90,23 @@ parse_lines(<<C1, C2, C3, ?WHITE_SPACE, Bin/binary>>, Lines, start) -> parse_lines(Bin, [?WHITE_SPACE, C3, C2, C1 | Lines], finish); %% Last line found -parse_lines(<<C1, C2, C3, ?WHITE_SPACE, Rest/binary>>, Lines, {C1, C2, C3}) -> - parse_lines(Rest, [?WHITE_SPACE, C3, C2, C1 | Lines], finish); +parse_lines(<<?CR, ?LF, C1, C2, C3, ?WHITE_SPACE, Rest/binary>>, Lines, {C1, C2, C3}) -> + parse_lines(Rest, [?WHITE_SPACE, C3, C2, C1, ?LF, ?CR | Lines], finish); %% Potential end found wait for more data -parse_lines(<<C1, C2, C3>> = Bin, Lines, {C1, C2, C3}) -> +parse_lines(<<?CR, ?LF, C1, C2, C3>> = Bin, Lines, {C1, C2, C3}) -> {continue, {Bin, Lines, {C1, C2, C3}}}; %% Intermidate line begining with status code -parse_lines(<<C1, C2, C3, Rest/binary>>, Lines, {C1, C2, C3}) -> - parse_lines(Rest, [C3, C2, C1 | Lines], {C1, C2, C3}); +parse_lines(<<?CR, ?LF, C1, C2, C3, Rest/binary>>, Lines, {C1, C2, C3}) -> + parse_lines(Rest, [C3, C2, C1, ?LF, ?CR | Lines], {C1, C2, C3}); %% Potential last line wait for more data -parse_lines(<<C1, C2>> = Data, Lines, {C1, C2, _} = StatusCode) -> +parse_lines(<<?CR, ?LF, C1, C2>> = Data, Lines, {C1, C2, _} = StatusCode) -> {continue, {Data, Lines, StatusCode}}; -parse_lines(<<C1>> = Data, Lines, {C1, _, _} = StatusCode) -> +parse_lines(<<?CR, ?LF, C1>> = Data, Lines, {C1, _, _} = StatusCode) -> + {continue, {Data, Lines, StatusCode}}; +parse_lines(<<?CR, ?LF>> = Data, Lines, {_,_,_} = StatusCode) -> + {continue, {Data, Lines, StatusCode}}; +parse_lines(<<?LF>> = Data, Lines, {_,_,_} = StatusCode) -> {continue, {Data, Lines, StatusCode}}; parse_lines(<<>> = Data, Lines, {_,_,_} = StatusCode) -> {continue, {Data, Lines, StatusCode}}; diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl index d1c52dcc78..59cb1299e9 100644 --- a/lib/inets/src/http_client/httpc_handler.erl +++ b/lib/inets/src/http_client/httpc_handler.erl @@ -45,28 +45,30 @@ -record(timers, { - request_timers = [], % [ref()] - queue_timer % ref() + request_timers = [] :: [reference()], + queue_timer :: reference() | 'undefined' }). +-type session_failed() :: {'connect_failed',term()} | {'send_failed',term()}. + -record(state, { - request, % #request{} - session, % #session{} + request :: request() | 'undefined', + session :: session() | session_failed() | 'undefined', status_line, % {Version, StatusCode, ReasonPharse} - headers, % #http_response_h{} - body, % binary() + headers :: http_response_h() | 'undefined', + body :: binary() | 'undefined', mfa, % {Module, Function, Args} - pipeline = queue:new(), % queue:queue() - keep_alive = queue:new(), % queue:queue() + pipeline = queue:new() :: queue:queue(), + keep_alive = queue:new() :: queue:queue(), status, % undefined | new | pipeline | keep_alive | close | {ssl_tunnel, Request} canceled = [], % [RequestId] - max_header_size = nolimit, % nolimit | integer() - max_body_size = nolimit, % nolimit | integer() - options, % #options{} - timers = #timers{}, % #timers{} - profile_name, % atom() - id of httpc_manager process. - once = inactive % inactive | once + max_header_size = nolimit :: nolimit | integer(), + max_body_size = nolimit :: nolimit | integer(), + options :: options(), + timers = #timers{} :: #timers{}, + profile_name :: atom(), % id of httpc_manager process. + once = inactive :: 'inactive' | 'once' }). @@ -113,7 +115,7 @@ send(Request, Pid) -> %%-------------------------------------------------------------------- %% Function: cancel(RequestId, Pid) -> ok -%% RequestId = ref() +%% RequestId = reference() %% Pid = pid() - the pid of the http-request handler process. %% %% Description: Cancels a request. Intended to be called by the httpc @@ -789,47 +791,6 @@ deliver_answer(Request) -> %% Purpose: Convert process state when code is changed %%-------------------------------------------------------------------- -code_change(_, - #state{session = OldSession, - profile_name = ProfileName} = State, - upgrade_from_pre_5_8_1) -> - case OldSession of - {session, - Id, ClientClose, Scheme, Socket, SocketType, QueueLen, Type} -> - NewSession = #session{id = Id, - client_close = ClientClose, - scheme = Scheme, - socket = Socket, - socket_type = SocketType, - queue_length = QueueLen, - type = Type}, - insert_session(NewSession, ProfileName), - {ok, State#state{session = NewSession}}; - _ -> - {ok, State} - end; - -code_change(_, - #state{session = OldSession, - profile_name = ProfileName} = State, - downgrade_to_pre_5_8_1) -> - case OldSession of - #session{id = Id, - client_close = ClientClose, - scheme = Scheme, - socket = Socket, - socket_type = SocketType, - queue_length = QueueLen, - type = Type} -> - NewSession = {session, - Id, ClientClose, Scheme, Socket, SocketType, - QueueLen, Type}, - insert_session(NewSession, ProfileName), - {ok, State#state{session = NewSession}}; - _ -> - {ok, State} - end; - code_change(_, State, _) -> {ok, State}. @@ -934,8 +895,7 @@ connect_and_send_first_request(Address, Request, #state{options = Options} = Sta TmpState = State#state{request = Request, session = Session, mfa = init_mfa(Request, State), - status_line = - init_status_line(Request), + status_line = init_status_line(Request), headers = undefined, body = undefined, status = new}, @@ -947,8 +907,7 @@ connect_and_send_first_request(Address, Request, #state{options = Options} = Sta self() ! {init_error, error_sending, httpc_response:error(Request, Reason)}, {ok, State#state{request = Request, - session = - #session{socket = Socket}}} + session = #session{socket = Socket}}} end; {error, Reason} -> self() ! {init_error, error_connecting, @@ -1796,7 +1755,7 @@ tls_tunnel_request(#request{headers = Headers, URI = Host ++":" ++ integer_to_list(Port), #request{ - id = make_ref(), + id = make_ref(), from = self(), scheme = http, %% Use tcp-first and then upgrade! address = Adress, @@ -1887,10 +1846,13 @@ update_session(ProfileName, #session{id = SessionId} = Session, Pos, Value) -> httpc_manager:update_session(ProfileName, SessionId, Pos, Value) end catch - error:undef -> % This could happen during code upgrade + error:undef -> %% This could happen during code upgrade Session2 = erlang:setelement(Pos, Session, Value), insert_session(Session2, ProfileName); - T:E -> + error:badarg -> + exit(normal); %% Manager has been shutdown + T:E -> + %% Unexpected this must be an error! Stacktrace = erlang:get_stacktrace(), error_logger:error_msg("Failed updating session: " "~n ProfileName: ~p" @@ -1922,8 +1884,8 @@ update_session(ProfileName, #session{id = SessionId} = Session, Pos, Value) -> %% --------------------------------------------------------------------- call(Msg, Pid) -> - Timeout = infinity, - call(Msg, Pid, Timeout). + call(Msg, Pid, infinity). + call(Msg, Pid, Timeout) -> gen_server:call(Pid, Msg, Timeout). diff --git a/lib/inets/src/http_client/httpc_internal.hrl b/lib/inets/src/http_client/httpc_internal.hrl index f4e69cc1fa..5f8c70f28d 100644 --- a/lib/inets/src/http_client/httpc_internal.hrl +++ b/lib/inets/src/http_client/httpc_internal.hrl @@ -43,32 +43,32 @@ %%% HTTP Client per request settings -record(http_options, { - %% string() - "HTTP/1.1" | "HTTP/1.0" | "HTTP/0.9" - version, + %% "HTTP/1.1" | "HTTP/1.0" | "HTTP/0.9" + version :: 'undefined' | string(), - %% integer() | infinity - ms before a request times out - timeout = ?HTTP_REQUEST_TIMEOUT, + %% ms before a request times out + timeout = ?HTTP_REQUEST_TIMEOUT :: timeout(), - %% bool() - true if auto redirect on 30x response - autoredirect = true, + %% true if auto redirect on 30x response + autoredirect = true :: boolean(), %% ssl socket options - ssl = [], + ssl = [], %% {User, Password} = {string(), string()} proxy_auth, - %% bool() - true if not strictly std compliant - relaxed = false, + %% true if not strictly std compliant + relaxed = false :: boolean(), %% integer() - ms before a connect times out - connect_timeout = ?HTTP_REQUEST_CTIMEOUT, - - %% bool() - Use %-encoding rfc 2396 - url_encode + connect_timeout = ?HTTP_REQUEST_CTIMEOUT :: timeout(), + %% Use %-encoding rfc 2396 + url_encode :: 'undefined' | boolean() } ). +-type http_options() :: #http_options{}. %%% HTTP Client per profile setting. -record(options, @@ -82,18 +82,19 @@ keep_alive_timeout = ?HTTP_KEEP_ALIVE_TIMEOUT, % Used when pipeline_timeout = 0 max_sessions = ?HTTP_MAX_TCP_SESSIONS, cookies = disabled, % enabled | disabled | verify - verbose = false, + verbose = false, % boolean(), ipfamily = inet, % inet | inet6 | inet6fb4 ip = default, % specify local interface port = default, % specify local port socket_opts = [] % other socket options } ). +-type options() :: #options{}. %%% All data associated to a specific HTTP request -record(request, { - id, % ref() - Request Id + id :: 'undefined' | reference(), % Request Id from, % pid() - Caller redircount = 0,% Number of redirects made for this request scheme, % http | https @@ -103,7 +104,7 @@ method, % atom() - HTTP request Method headers, % #http_request_h{} content, % {ContentType, Body} - Current HTTP request - settings, % #http_options{} - User defined settings + settings :: http_options(), % User defined settings abs_uri, % string() ex: "http://www.erlang.org" userinfo, % string() - optinal "<userinfo>@<host>:<port>" stream, % boolean() - stream async reply? @@ -112,20 +113,19 @@ % for testing purposes. started, % integer() > 0 - When we started processing the % request - timer, % undefined | ref() + timer :: undefined | reference(), socket_opts, % undefined | [socket_option()] ipv6_host_with_brackets % boolean() } - ). - + ). +-type request() :: #request{}. -record(session, { %% {{Host, Port}, HandlerPid} id, - %% true | false - client_close, + client_close :: 'undefined' | boolean(), %% http (HTTP/TCP) | https (HTTP/SSL/TCP) scheme, @@ -140,14 +140,13 @@ queue_length = 1, %% pipeline | keep_alive (wait for response before sending new request) - type, + type :: 'undefined' | 'pipeline' | 'keep_alive', - %% true | false %% This will be true, when a response has been received for %% the first request. See type above. - available = false + available = false :: boolean() }). - +-type session() :: #session{}. -record(http_cookie, { @@ -162,7 +161,7 @@ secure = false, version = "0" }). - +-type http_cookie() :: #http_cookie{}. %% -record(parsed_uri, %% { diff --git a/lib/inets/src/http_client/httpc_manager.erl b/lib/inets/src/http_client/httpc_manager.erl index 4cb6f005ad..a63864493f 100644 --- a/lib/inets/src/http_client/httpc_manager.erl +++ b/lib/inets/src/http_client/httpc_manager.erl @@ -137,7 +137,7 @@ redirect_request(Request, ProfileName) -> %%-------------------------------------------------------------------- %% Function: cancel_request(RequestId, ProfileName) -> ok -%% RequestId - ref() +%% RequestId - reference() %% ProfileName = atom() %% %% Description: Cancels the request with <RequestId>. @@ -148,7 +148,7 @@ cancel_request(RequestId, ProfileName) -> %%-------------------------------------------------------------------- %% Function: request_done(RequestId, ProfileName) -> ok -%% RequestId - ref() +%% RequestId - reference() %% ProfileName = atom() %% %% Description: Inform tha manager that a request has been completed. diff --git a/lib/inets/src/http_client/httpc_response.erl b/lib/inets/src/http_client/httpc_response.erl index 91256fa6a2..d8bdac24e3 100644 --- a/lib/inets/src/http_client/httpc_response.erl +++ b/lib/inets/src/http_client/httpc_response.erl @@ -110,27 +110,30 @@ result(Response = {{_, 300, _}, _, _}, redirect(Response, Request); result(Response = {{_, Code, _}, _, _}, + Request = #request{settings = + #http_options{autoredirect = true}, + method = post}) when (Code =:= 301) orelse + (Code =:= 302) orelse + (Code =:= 303) -> + redirect(Response, Request#request{method = get}); +result(Response = {{_, Code, _}, _, _}, + Request = #request{settings = + #http_options{autoredirect = true}, + method = post}) when (Code =:= 307) -> + redirect(Response, Request); +result(Response = {{_, Code, _}, _, _}, Request = #request{settings = #http_options{autoredirect = true}, - method = head}) when (Code =:= 301) orelse + method = Method}) when (Code =:= 301) orelse (Code =:= 302) orelse (Code =:= 303) orelse (Code =:= 307) -> - redirect(Response, Request); -result(Response = {{_, Code, _}, _, _}, - Request = #request{settings = - #http_options{autoredirect = true}, - method = get}) when (Code =:= 301) orelse - (Code =:= 302) orelse - (Code =:= 303) orelse - (Code =:= 307) -> - redirect(Response, Request); -result(Response = {{_, 303, _}, _, _}, - Request = #request{settings = - #http_options{autoredirect = true}, - method = post}) -> - redirect(Response, Request#request{method = get}); - + case lists:member(Method, [get, head, options, trace]) of + true -> + redirect(Response, Request); + false -> + transparent(Response, Request) + end; result(Response = {{_,503,_}, _, _}, Request) -> status_service_unavailable(Response, Request); diff --git a/lib/inets/src/http_lib/http_internal.hrl b/lib/inets/src/http_lib/http_internal.hrl index ae92b5df8f..991417cb36 100644 --- a/lib/inets/src/http_lib/http_internal.hrl +++ b/lib/inets/src/http_lib/http_internal.hrl @@ -71,7 +71,7 @@ 'last-modified', other=[] % list() - Key/Value list with other headers }). - +-type http_response_h() :: #http_response_h{}. %%% Request headers -record(http_request_h,{ @@ -118,5 +118,6 @@ 'last-modified', other=[] % list() - Key/Value list with other headers }). +-type http_request_h() :: #http_request_h{}. -endif. % -ifdef(http_internal_hrl). diff --git a/lib/inets/src/http_server/httpd_request_handler.erl b/lib/inets/src/http_server/httpd_request_handler.erl index 071fa94ef6..7e20a9ba67 100644 --- a/lib/inets/src/http_server/httpd_request_handler.erl +++ b/lib/inets/src/http_server/httpd_request_handler.erl @@ -37,18 +37,19 @@ -include("httpd_internal.hrl"). -define(HANDSHAKE_TIMEOUT, 5000). + -record(state, {mod, %% #mod{} manager, %% pid() status, %% accept | busy | blocked mfa, %% {Module, Function, Args} max_keep_alive_request = infinity, %% integer() | infinity - response_sent = false, %% true | false - timeout, %% infinity | integer() > 0 - timer, %% ref() - Request timer - headers, %% #http_request_h{} + response_sent = false :: boolean(), + timeout, %% infinity | integer() > 0 + timer :: 'undefined' | reference(), % Request timer + headers, %% #http_request_h{} body, %% binary() data, %% The total data received in bits, checked after 10s - byte_limit %% Bit limit per second before kick out + byte_limit %% Bit limit per second before kick out }). %%==================================================================== diff --git a/lib/inets/test/ftp_format_SUITE.erl b/lib/inets/test/ftp_format_SUITE.erl index a33b31f46f..95d594a44b 100644 --- a/lib/inets/test/ftp_format_SUITE.erl +++ b/lib/inets/test/ftp_format_SUITE.erl @@ -38,8 +38,8 @@ all() -> groups() -> [{ftp_response, [], [ftp_150, ftp_200, ftp_220, ftp_226, ftp_257, ftp_331, - ftp_425, ftp_other_status_codes, ftp_multiple_lines, - ftp_multipel_ctrl_messages]}]. + ftp_425, ftp_other_status_codes, ftp_multiple_lines_status_in_msg, + ftp_multiple_lines, ftp_multipel_ctrl_messages]}]. init_per_suite(Config) -> Config. @@ -141,6 +141,15 @@ ftp_425(Config) when is_list(Config) -> {trans_neg_compl, _} = ftp_response:interpret(Msg), ok. +ftp_multiple_lines_status_in_msg() -> + [{doc, "check that multiple lines gets parsed correct, even if we have " + " the status code within the msg being sent"}]. +ftp_multiple_lines_status_in_msg(Config) when is_list(Config) -> + ML = "230-User usr-230 is logged in\r\n" ++ + "230 OK. Current directory is /\r\n", + {ok, ML, <<>>} = ftp_response:parse_lines(list_to_binary(ML), [], start), + ok. + ftp_multiple_lines() -> [{doc, "Especially check multiple lines devided in significant places"}]. ftp_multiple_lines(Config) when is_list(Config) -> diff --git a/lib/inets/test/httpc_SUITE.erl b/lib/inets/test/httpc_SUITE.erl index 932567ec55..57da82c6ad 100644 --- a/lib/inets/test/httpc_SUITE.erl +++ b/lib/inets/test/httpc_SUITE.erl @@ -500,10 +500,11 @@ redirect_multiple_choises(Config) when is_list(Config) -> httpc:request(get, {URL300, []}, [{autoredirect, false}], []). %%------------------------------------------------------------------------- redirect_moved_permanently() -> - [{doc, "If the 301 status code is received in response to a request other " - "than GET or HEAD, the user agent MUST NOT automatically redirect the request " - "unless it can be confirmed by the user, since this might change " - "the conditions under which the request was issued."}]. + [{doc, "The server SHOULD generate a Location header field in the response " + "containing a preferred URI reference for the new permanent URI. The user " + "agent MAY use the Location field value for automatic redirection. The server's " + "response payload usually contains a short hypertext note with a " + "hyperlink to the new URI(s)."}]. redirect_moved_permanently(Config) when is_list(Config) -> URL301 = url(group_name(Config), "/301.html", Config), @@ -514,15 +515,16 @@ redirect_moved_permanently(Config) when is_list(Config) -> {ok, {{_,200,_}, [_ | _], []}} = httpc:request(head, {URL301, []}, [], []), - {ok, {{_,301,_}, [_ | _], [_|_]}} + {ok, {{_,200,_}, [_ | _], [_|_]}} = httpc:request(post, {URL301, [],"text/plain", "foobar"}, [], []). %%------------------------------------------------------------------------- redirect_found() -> - [{doc," If the 302 status code is received in response to a request other " - "than GET or HEAD, the user agent MUST NOT automatically redirect the " - "request unless it can be confirmed by the user, since this might change " - "the conditions under which the request was issued."}]. + [{doc, "The server SHOULD generate a Location header field in the response " + "containing a URI reference for the different URI. The user agent MAY " + "use the Location field value for automatic redirection. The server's " + "response payload usually contains a short hypertext note with a " + "hyperlink to the different URI(s)."}]. redirect_found(Config) when is_list(Config) -> URL302 = url(group_name(Config), "/302.html", Config), @@ -533,14 +535,14 @@ redirect_found(Config) when is_list(Config) -> {ok, {{_,200,_}, [_ | _], []}} = httpc:request(head, {URL302, []}, [], []), - {ok, {{_,302,_}, [_ | _], [_|_]}} + {ok, {{_,200,_}, [_ | _], [_|_]}} = httpc:request(post, {URL302, [],"text/plain", "foobar"}, [], []). %%------------------------------------------------------------------------- redirect_see_other() -> [{doc, "The different URI SHOULD be given by the Location field in the response. " "Unless the request method was HEAD, the entity of the response SHOULD contain a short " - "hypertext note with a hyperlink to the new URI(s). "}]. + "hypertext note with a hyperlink to the new URI(s)."}]. redirect_see_other(Config) when is_list(Config) -> URL303 = url(group_name(Config), "/303.html", Config), @@ -556,10 +558,11 @@ redirect_see_other(Config) when is_list(Config) -> [], []). %%------------------------------------------------------------------------- redirect_temporary_redirect() -> - [{doc," If the 307 status code is received in response to a request other " - "than GET or HEAD, the user agent MUST NOT automatically redirect the request " - "unless it can be confirmed by the user, since this might change " - "the conditions under which the request was issued."}]. + [{doc, "The server SHOULD generate a Location header field in the response " + "containing a URI reference for the different URI. The user agent MAY " + "use the Location field value for automatic redirection. The server's " + "response payload usually contains a short hypertext note with a " + "hyperlink to the different URI(s)."}]. redirect_temporary_redirect(Config) when is_list(Config) -> URL307 = url(group_name(Config), "/307.html", Config), @@ -570,7 +573,7 @@ redirect_temporary_redirect(Config) when is_list(Config) -> {ok, {{_,200,_}, [_ | _], []}} = httpc:request(head, {URL307, []}, [], []), - {ok, {{_,307,_}, [_ | _], [_|_]}} + {ok, {{_,200,_}, [_ | _], [_|_]}} = httpc:request(post, {URL307, [],"text/plain", "foobar"}, [], []). diff --git a/lib/jinterface/doc/src/notes.xml b/lib/jinterface/doc/src/notes.xml index 3151fc4b5e..30f607c357 100644 --- a/lib/jinterface/doc/src/notes.xml +++ b/lib/jinterface/doc/src/notes.xml @@ -31,6 +31,22 @@ </header> <p>This document describes the changes made to the Jinterface application.</p> +<section><title>Jinterface 1.7.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Update build scripts to not make assumtions about where + env, cp and perl are located.</p> + <p> + Own Id: OTP-13800</p> + </item> + </list> + </section> + +</section> + <section><title>Jinterface 1.7</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/jinterface/vsn.mk b/lib/jinterface/vsn.mk index 752b34e78c..c29d9df3d7 100644 --- a/lib/jinterface/vsn.mk +++ b/lib/jinterface/vsn.mk @@ -1 +1 @@ -JINTERFACE_VSN = 1.7 +JINTERFACE_VSN = 1.7.1 diff --git a/lib/kernel/doc/src/code.xml b/lib/kernel/doc/src/code.xml index 4db377bcde..3143cdc825 100644 --- a/lib/kernel/doc/src/code.xml +++ b/lib/kernel/doc/src/code.xml @@ -382,9 +382,14 @@ zip:create("mnesia-4.4.7.ez", <name name="add_pathsa" arity="1"/> <fsummary>Add directories to the beginning of the code path.</fsummary> <desc> - <p>Adds the directories in <c><anno>Dirs</anno></c> to the beginning of - the code path. If a <c><anno>Dir</anno></c> exists, it is removed - from the old position in the code path.</p> + <p>Traverses <c><anno>Dirs</anno></c> and adds + each <c><anno>Dir</anno></c> to the beginning of the code + path. This means that the order of <c><anno>Dirs</anno></c> + is reversed in the resulting code path. For example, if you + add <c>[Dir1,Dir2]</c>, the resulting path will + be <c>[Dir2,Dir1|OldCodePath]</c>.</p> + <p>If a <c><anno>Dir</anno></c> already exists in the code + path, it is removed from the old position.</p> <p>Always returns <c>ok</c>, regardless of the validity of each individual <c><anno>Dir</anno></c>.</p> </desc> diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index 3f4e3684f4..d907cef7d3 100644 --- a/lib/kernel/doc/src/inet.xml +++ b/lib/kernel/doc/src/inet.xml @@ -1092,6 +1092,15 @@ setcap cap_sys_admin,cap_sys_ptrace,cap_dac_read_search+epi beam.smp</code> The option is ignored on platforms where it is not implemented. Use with caution.</p> </item> + <tag><c>{tclass, Integer}</c></tag> + <item> + <p> + Sets <c>IPV6_TCLASS IP</c> level options on platforms + where this is implemented. The behavior and allowed range + varies between different systems. + The option is ignored on platforms where it is not + implemented. Use with caution.</p> + </item> </taglist> <p>In addition to these options, <em>raw</em> option specifications can be used. The raw options are diff --git a/lib/kernel/doc/src/notes.xml b/lib/kernel/doc/src/notes.xml index 9e9be3f661..5bcc0b7c09 100644 --- a/lib/kernel/doc/src/notes.xml +++ b/lib/kernel/doc/src/notes.xml @@ -31,6 +31,74 @@ </header> <p>This document describes the changes made to the Kernel application.</p> +<section><title>Kernel 5.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix a memory leak when calling + seq_trace:get_system_tracer().</p> + <p> + Own Id: OTP-13742</p> + </item> + <item> + <p> + Fix for the problem that when adding the ebin directory + of an application to the code path, the + <c>code:priv_dir/1</c> function returns an incorrect path + to the priv directory of the same application.</p> + <p> + Own Id: OTP-13758 Aux Id: ERL-195 </p> + </item> + <item> + <p> + Fix code_server crash when adding code paths of two + levels.</p> + <p> + Own Id: OTP-13765 Aux Id: ERL-194 </p> + </item> + <item> + <p> + Respect -proto_dist switch while connection to EPMD</p> + <p> + Own Id: OTP-13770 Aux Id: PR-1129 </p> + </item> + <item> + <p> + Fixed a bug where init:stop could deadlock if a process + with infinite shutdown timeout (e.g. a supervisor) + attempted to load code while terminating.</p> + <p> + Own Id: OTP-13802</p> + </item> + <item> + <p> + Close stdin of commands run in os:cmd. This is a + backwards compatiblity fix that restores the behaviour of + pre 19.0 os:cmd.</p> + <p> + Own Id: OTP-13867 Aux Id: seq13178 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Add <c>net_kernel:setopts/2</c> and + <c>net_kernel:getopts/2</c> to control options for + distribution sockets in runtime.</p> + <p> + Own Id: OTP-13564</p> + </item> + </list> + </section> + +</section> + <section><title>Kernel 5.0.2</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/kernel/src/code_server.erl b/lib/kernel/src/code_server.erl index 48541ec500..59b26176bf 100644 --- a/lib/kernel/src/code_server.erl +++ b/lib/kernel/src/code_server.erl @@ -811,7 +811,13 @@ clear_namedb([], _) -> %% Dir must be a complete pathname (not only a name). insert_dir(Dir, Db) -> Splitted = filename:split(Dir), - Name = get_name_from_splitted(Splitted), + case get_name_from_splitted(Splitted) of + Name when Name /= "ebin", Name /= "." -> + Name; + _ -> + SplittedAbsName = filename:split(absname(Dir)), + Name = get_name_from_splitted(SplittedAbsName) + end, AppDir = filename:join(del_ebin_1(Splitted)), do_insert_name(Name, AppDir, Db). @@ -952,6 +958,10 @@ del_ebin_1([Parent,App,"ebin"]) -> [Archive] end end; +del_ebin_1(Path = [_App,"ebin"]) -> + del_ebin_1(filename:split(absname(filename:join(Path)))); +del_ebin_1(["ebin"]) -> + del_ebin_1(filename:split(absname("ebin"))); del_ebin_1([H|T]) -> [H|del_ebin_1(T)]; del_ebin_1([]) -> @@ -1382,11 +1392,10 @@ finish_on_load(PidRef, OnLoadRes, #state{on_load=OnLoad0}=St0) -> finish_on_load_1(Mod, OnLoadRes, Waiting, St) -> Keep = OnLoadRes =:= ok, - erlang:finish_after_on_load(Mod, Keep), + erts_code_purger:finish_after_on_load(Mod, Keep), Res = case Keep of false -> _ = finish_on_load_report(Mod, OnLoadRes), - _ = erts_code_purger:purge(Mod), {error,on_load_failure}; true -> {module,Mod} diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl index 75dd800c6b..f5c13ecdd7 100644 --- a/lib/kernel/src/inet.erl +++ b/lib/kernel/src/inet.erl @@ -677,7 +677,7 @@ parse_strict_address(Addr) -> %% Return a list of available options options() -> [ - tos, priority, reuseaddr, keepalive, dontroute, linger, + tos, tclass, priority, reuseaddr, keepalive, dontroute, linger, broadcast, sndbuf, recbuf, nodelay, ipv6_v6only, buffer, header, active, packet, deliver, mode, multicast_if, multicast_ttl, multicast_loop, @@ -698,7 +698,7 @@ stats() -> %% Available options for tcp:connect %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% connect_options() -> - [tos, priority, reuseaddr, keepalive, linger, sndbuf, recbuf, nodelay, + [tos, tclass, priority, reuseaddr, keepalive, linger, sndbuf, recbuf, nodelay, header, active, packet, packet_size, buffer, mode, deliver, line_delimiter, exit_on_close, high_watermark, low_watermark, high_msgq_watermark, low_msgq_watermark, send_timeout, send_timeout_close, delay_send, raw, @@ -766,7 +766,7 @@ con_add(Name, Val, #connect_opts{} = R, Opts, AllOpts) -> %% Available options for tcp:listen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% listen_options() -> - [tos, priority, reuseaddr, keepalive, linger, sndbuf, recbuf, nodelay, + [tos, tclass, priority, reuseaddr, keepalive, linger, sndbuf, recbuf, nodelay, header, active, packet, buffer, mode, deliver, backlog, ipv6_v6only, exit_on_close, high_watermark, low_watermark, high_msgq_watermark, low_msgq_watermark, send_timeout, send_timeout_close, delay_send, @@ -846,7 +846,7 @@ tcp_module_1(Opts, Address) -> %% Available options for udp:open %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% udp_options() -> - [tos, priority, reuseaddr, sndbuf, recbuf, header, active, buffer, mode, + [tos, tclass, priority, reuseaddr, sndbuf, recbuf, header, active, buffer, mode, deliver, ipv6_v6only, broadcast, dontroute, multicast_if, multicast_ttl, multicast_loop, add_membership, drop_membership, read_packets,raw, @@ -917,7 +917,7 @@ udp_module(Opts) -> % (*) passing of open FDs ("fdopen") is not supported. sctp_options() -> [ % The following are generic inet options supported for SCTP sockets: - mode, active, buffer, tos, priority, dontroute, reuseaddr, linger, sndbuf, + mode, active, buffer, tos, tclass, priority, dontroute, reuseaddr, linger, sndbuf, recbuf, ipv6_v6only, high_msgq_watermark, low_msgq_watermark, % Other options are SCTP-specific (though they may be similar to their diff --git a/lib/kernel/src/inet_int.hrl b/lib/kernel/src/inet_int.hrl index c8a8962e78..4e8f59a3b9 100644 --- a/lib/kernel/src/inet_int.hrl +++ b/lib/kernel/src/inet_int.hrl @@ -153,6 +153,7 @@ -define(INET_LOPT_NETNS, 38). -define(INET_LOPT_TCP_SHOW_ECONNRESET, 39). -define(INET_LOPT_LINE_DELIM, 40). +-define(INET_OPT_TCLASS, 41). % Specific SCTP options: separate range: -define(SCTP_OPT_RTOINFO, 100). -define(SCTP_OPT_ASSOCINFO, 101). diff --git a/lib/kernel/src/kernel.appup.src b/lib/kernel/src/kernel.appup.src index d16e200cb3..82cf73cbda 100644 --- a/lib/kernel/src/kernel.appup.src +++ b/lib/kernel/src/kernel.appup.src @@ -18,9 +18,9 @@ %% %CopyrightEnd% {"%VSN%", %% Up from - max one major revision back - [{<<"5\\.0(\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* + [{<<"5\\.[0-1](\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* {<<"4\\.[0-2](\\.[0-9]+)*">>,[restart_new_emulator]}], % OTP-18.* %% Down to - max one major revision back - [{<<"5\\.0(\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* + [{<<"5\\.[0-1](\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* {<<"4\\.[0-2](\\.[0-9]+)*">>,[restart_new_emulator]}] % OTP-18.* }. diff --git a/lib/kernel/test/code_SUITE.erl b/lib/kernel/test/code_SUITE.erl index 8da67c89f8..c5167efa56 100644 --- a/lib/kernel/test/code_SUITE.erl +++ b/lib/kernel/test/code_SUITE.erl @@ -36,6 +36,7 @@ code_archive/1, code_archive2/1, on_load/1, on_load_binary/1, on_load_embedded/1, on_load_errors/1, on_load_update/1, on_load_purge/1, on_load_self_call/1, on_load_pending/1, + on_load_deleted/1, big_boot_embedded/1, native_early_modules/1, get_mode/1, normalized_paths/1]). @@ -66,6 +67,7 @@ all() -> bad_erl_libs, code_archive, code_archive2, on_load, on_load_binary, on_load_embedded, on_load_errors, on_load_update, on_load_purge, on_load_self_call, on_load_pending, + on_load_deleted, big_boot_embedded, native_early_modules, get_mode, normalized_paths]. groups() -> @@ -1602,6 +1604,98 @@ on_load_pending(_Config) -> ok = Mod:t(), ok. +on_load_deleted(_Config) -> + Mod = ?FUNCTION_NAME, + + R0 = fun() -> + Tree = ?Q(["-module('@Mod@').\n", + "-on_load(f/0).\n", + "f() -> ok.\n"]), + merl:print(Tree), + {ok,Mod,Code} = merl:compile(Tree), + {module,Mod} = code:load_binary(Mod, "", Code) + end, + delete_before_reload(Mod, R0), + delete_before_reload(Mod, R0), + + R1 = fun() -> + Tree = ?Q(["-module('@Mod@').\n", + "-on_load(f/0).\n", + "f() -> fail.\n"]), + merl:print(Tree), + {ok,Mod,Code} = merl:compile(Tree), + {error,on_load_failure} = code:load_binary(Mod, "", Code) + end, + delete_before_reload(Mod, R1), + delete_before_reload(Mod, R1), + + OtherMod = list_to_atom(lists:concat([Mod,"_42"])), + OtherTree = ?Q(["-module('@OtherMod@').\n"]), + merl:print(OtherTree), + {ok,OtherMod,OtherCode} = merl:compile(OtherTree), + + R2 = fun() -> + RegName = 'on_load__registered_name', + Tree = ?Q(["-module('@Mod@').\n", + "-on_load(f/0).\n", + "f() ->\n", + " register('@RegName@', self()),\n", + " receive _ -> ok end.\n"]), + merl:print(Tree), + {ok,Mod,Code} = merl:compile(Tree), + spawn(fun() -> + {module,Mod} = code:load_binary(Mod, "", Code) + end), + receive after 1 -> ok end, + {module,OtherMod} = code:load_binary(OtherMod, "", + OtherCode), + RegName ! stop + end, + delete_before_reload(Mod, R2), + + ok. + +delete_before_reload(Mod, Reload) -> + false = check_old_code(Mod), + + Tree1 = ?Q(["-module('@Mod@').\n", + "-export([f/1]).\n", + "f(Parent) ->\n", + " register('@Mod@', self()),\n", + " Parent ! started,\n", + " receive _ -> ok end.\n"]), + merl:print(Tree1), + {ok,Mod,Code1} = merl:compile(Tree1), + + Self = self(), + spawn(fun() -> + {module,Mod} = code:load_binary(Mod, "", Code1), + Mod:f(Self) + end), + receive started -> ok end, + + true = code:delete(Mod), + true = check_old_code(Mod), + + Reload(), + + %% When loading the the module with the -on_load() function, + %% the reference to the old code would be lost. Make sure that + %% the old code is remembered and is still preventing the + %% purge. + false = code:soft_purge(Mod), + + %% Get rid of the old code. + Mod ! stop, + receive after 1 -> ok end, + true = code:soft_purge(Mod), + + %% Unload the version of the module with the -on_load() function. + true = code:delete(Mod), + true = code:soft_purge(Mod), + + ok. + %% Test that the native code of early loaded modules is loaded. native_early_modules(Config) when is_list(Config) -> diff --git a/lib/kernel/test/file_SUITE.erl b/lib/kernel/test/file_SUITE.erl index 5f049c6f99..c37d114a58 100644 --- a/lib/kernel/test/file_SUITE.erl +++ b/lib/kernel/test/file_SUITE.erl @@ -493,22 +493,13 @@ read_write_file(Config) when is_list(Config) -> %% Try writing and reading back some term SomeTerm = {"This term",{will,be},[written,$t,$o],1,file,[]}, - ok = ?FILE_MODULE:write_file(Name,term_to_binary(SomeTerm)), - {ok,Bin1} = ?FILE_MODULE:read_file(Name), - SomeTerm = binary_to_term(Bin1), + Bin1 = term_to_binary(SomeTerm), + ok = do_read_write_file(Name, Bin1), %% Try a "null" term NullTerm = [], - ok = ?FILE_MODULE:write_file(Name,term_to_binary(NullTerm)), - {ok,Bin2} = ?FILE_MODULE:read_file(Name), - NullTerm = binary_to_term(Bin2), - - %% Try some "complicated" types - BigNum = 123456789012345678901234567890, - ComplTerm = {self(),make_ref(),BigNum,3.14159}, - ok = ?FILE_MODULE:write_file(Name,term_to_binary(ComplTerm)), - {ok,Bin3} = ?FILE_MODULE:read_file(Name), - ComplTerm = binary_to_term(Bin3), + Bin2 = term_to_binary(NullTerm), + ok = do_read_write_file(Name, Bin2), %% Try reading a nonexistent file Name2 = filename:join(RootDir, @@ -519,25 +510,42 @@ read_write_file(Config) when is_list(Config) -> {error, enoent} = ?FILE_MODULE:read_file(''), %% Try writing to a bad filename - {error, enoent} = - ?FILE_MODULE:write_file("",term_to_binary(NullTerm)), + {error, enoent} = do_read_write_file("", Bin2), %% Try writing something else than a binary - {error, badarg} = ?FILE_MODULE:write_file(Name,{1,2,3}), - {error, badarg} = ?FILE_MODULE:write_file(Name,self()), + {error, badarg} = do_read_write_file(Name, {1,2,3}), + {error, badarg} = do_read_write_file(Name, self()), %% Some non-term binaries - ok = ?FILE_MODULE:write_file(Name,[]), - {ok,Bin4} = ?FILE_MODULE:read_file(Name), - 0 = byte_size(Bin4), + ok = do_read_write_file(Name, []), - ok = ?FILE_MODULE:write_file(Name,[Bin1,[],[[Bin2]]]), - {ok,Bin5} = ?FILE_MODULE:read_file(Name), - {Bin1,Bin2} = split_binary(Bin5,byte_size(Bin1)), + %% Write some iolists + ok = do_read_write_file(Name, [Bin1,[],[[Bin2]]]), + ok = do_read_write_file(Name, ["string",<<"binary">>]), + ok = do_read_write_file(Name, "pure string"), [] = flush(), ok. +do_read_write_file(Name, Data) -> + case ?FILE_MODULE:write_file(Name, Data) of + ok -> + BinData = iolist_to_binary(Data), + {ok,BinData} = ?FILE_MODULE:read_file(Name), + + ok = ?FILE_MODULE:write_file(Name, Data, []), + {ok,BinData} = ?FILE_MODULE:read_file(Name), + + ok = ?FILE_MODULE:write_file(Name, Data, [raw]), + {ok,BinData} = ?FILE_MODULE:read_file(Name), + + ok; + {error,_}=Res -> + Res = ?FILE_MODULE:write_file(Name, Data, []), + Res = ?FILE_MODULE:write_file(Name, Data, [raw]), + Res + end. + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/lib/kernel/test/gen_tcp_api_SUITE.erl b/lib/kernel/test/gen_tcp_api_SUITE.erl index 77ec89b4f4..92a74465b7 100644 --- a/lib/kernel/test/gen_tcp_api_SUITE.erl +++ b/lib/kernel/test/gen_tcp_api_SUITE.erl @@ -38,7 +38,7 @@ t_local_basic/1, t_local_unbound/1, t_local_fdopen/1, t_local_fdopen_listen/1, t_local_fdopen_listen_unbound/1, t_local_fdopen_connect/1, t_local_fdopen_connect_unbound/1, - t_local_abstract/1]). + t_local_abstract/1, t_accept_inet6_tclass/1]). -export([getsockfd/0,closesockfd/1]). @@ -50,6 +50,7 @@ all() -> [{group, t_accept}, {group, t_connect}, {group, t_recv}, t_shutdown_write, t_shutdown_both, t_shutdown_error, t_shutdown_async, t_fdopen, t_fdconnect, t_implicit_inet6, + t_accept_inet6_tclass, {group, t_local}]. groups() -> @@ -521,6 +522,24 @@ local_handshake(S, SAddr, C, CAddr) -> SData = ok(gen_tcp:recv(C, length(SData))), ok. +t_accept_inet6_tclass(Config) when is_list(Config) -> + TClassOpt = {tclass,8#56 bsl 2}, % Expedited forwarding + case gen_tcp:listen(0, [inet6,TClassOpt]) of + {ok,L} -> + LPort = ok(inet:port(L)), + Loopback = {0,0,0,0,0,0,0,1}, + Sa = ok(gen_tcp:connect(Loopback, LPort, [])), + Sb = ok(gen_tcp:accept(L)), + [TClassOpt] = ok(inet:getopts(Sb, [tclass])), + ok = gen_tcp:close(Sb), + ok = gen_tcp:close(Sa), + ok = gen_tcp:close(L), + ok; + {error,_} -> + {skip,"IPv6 TCLASS not supported"} + end. + + %%% Utilities %% Calls M:F/length(A), which should return a timeout error, and complete diff --git a/lib/kernel/vsn.mk b/lib/kernel/vsn.mk index cdd200a234..d3b2d18ae5 100644 --- a/lib/kernel/vsn.mk +++ b/lib/kernel/vsn.mk @@ -1 +1 @@ -KERNEL_VSN = 5.0.2 +KERNEL_VSN = 5.1 diff --git a/lib/mnesia/doc/src/notes.xml b/lib/mnesia/doc/src/notes.xml index 7d8e8d0c44..e621bd593c 100644 --- a/lib/mnesia/doc/src/notes.xml +++ b/lib/mnesia/doc/src/notes.xml @@ -39,7 +39,21 @@ thus constitutes one section in this document. The title of each section is the version number of Mnesia.</p> - <section><title>Mnesia 4.14</title> + <section><title>Mnesia 4.14.1</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Correct some minor documentation issues. </p> + <p> + Own Id: OTP-13891</p> + </item> + </list> + </section> + +</section> + +<section><title>Mnesia 4.14</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/mnesia/src/mnesia.erl b/lib/mnesia/src/mnesia.erl index 9586adbf93..5bf2fc2dc3 100644 --- a/lib/mnesia/src/mnesia.erl +++ b/lib/mnesia/src/mnesia.erl @@ -1409,8 +1409,14 @@ select_cont(Tid,_,State=#mnesia_select{tid=Tid,written=[]}) -> select_state(dirty_sel_cont(State),State); select_cont(Tid,_Ts,State=#mnesia_select{tid=Tid}) -> trans_select(dirty_sel_cont(State), State); -select_cont(_Tid2,_,#mnesia_select{tid=_Tid1}) -> % Missmatching tids +select_cont(Tid2,_,#mnesia_select{tid=_Tid1}) + when element(1,Tid2) == tid -> % Mismatching tids abort(wrong_transaction); +select_cont(Tid,Ts,State=#mnesia_select{}) -> + % Repair mismatching tids in non-transactional contexts + RepairedState = State#mnesia_select{tid = Tid, written = [], + spec = undefined, type = undefined}, + select_cont(Tid,Ts,RepairedState); select_cont(_,_,Cont) -> abort({badarg, Cont}). diff --git a/lib/mnesia/test/mnesia_trans_access_test.erl b/lib/mnesia/test/mnesia_trans_access_test.erl index aa50ee4cb1..4ed73ea859 100644 --- a/lib/mnesia/test/mnesia_trans_access_test.erl +++ b/lib/mnesia/test/mnesia_trans_access_test.erl @@ -307,6 +307,7 @@ select14(Config) when is_list(Config) -> %% Some Helpers Trans = fun(Fun) -> mnesia:transaction(Fun) end, + Dirty = fun(Fun) -> mnesia:async_dirty(Fun) end, LoopHelp = fun('$end_of_table',_) -> []; ({Recs,Cont},Fun) -> Sel = mnesia:select(Cont), @@ -334,8 +335,13 @@ select14(Config) when is_list(Config) -> ?match({atomic, [OneRec]}, Trans(fun() -> Loop(Tab, OnePat) end)), ?match({atomic, All}, Trans(fun() -> Loop(Tab, AllPat) end)), - {atomic,{_, Cont}} = Trans(fun() -> mnesia:select(Tab, OnePat, 1, read) end), - ?match({aborted, wrong_transaction}, Trans(fun() -> mnesia:select(Cont) end)), + {atomic,{_, ContOne}} = Trans(fun() -> mnesia:select(Tab, OnePat, 1, read) end), + ?match({aborted, wrong_transaction}, Trans(fun() -> mnesia:select(ContOne) end)), + ?match('$end_of_table', Dirty(fun() -> mnesia:select(ContOne) end)), + + {atomic,{_, ContAll}} = Trans(fun() -> mnesia:select(Tab, AllPat, 1, read) end), + ?match({aborted, wrong_transaction}, Trans(fun() -> mnesia:select(ContAll) end)), + ?match({[_], _}, Dirty(fun() -> mnesia:select(ContAll) end)), ?match({aborted, _}, Trans(fun() -> mnesia:select(Tab, {match, '$1', 2},1,read) end)), ?match({aborted, _}, Trans(fun() -> mnesia:select(Tab, [{'_', [], '$1'}],1,read) end)), diff --git a/lib/mnesia/vsn.mk b/lib/mnesia/vsn.mk index fb4200f62d..f08e364276 100644 --- a/lib/mnesia/vsn.mk +++ b/lib/mnesia/vsn.mk @@ -1 +1 @@ -MNESIA_VSN = 4.14 +MNESIA_VSN = 4.14.1 diff --git a/lib/observer/doc/src/notes.xml b/lib/observer/doc/src/notes.xml index f79f75fead..659eb28292 100644 --- a/lib/observer/doc/src/notes.xml +++ b/lib/observer/doc/src/notes.xml @@ -32,6 +32,22 @@ <p>This document describes the changes made to the Observer application.</p> +<section><title>Observer 2.2.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed error handling in observer when mnesia tables was + requested and not available.</p> + <p> + Own Id: OTP-13845 Aux Id: ERL-237 </p> + </item> + </list> + </section> + +</section> + <section><title>Observer 2.2.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/observer/doc/src/ttb.xml b/lib/observer/doc/src/ttb.xml index 42b0fa1d8a..7cd15e15d3 100644 --- a/lib/observer/doc/src/ttb.xml +++ b/lib/observer/doc/src/ttb.xml @@ -114,7 +114,8 @@ ttb:p(all, call).</input></pre> <v>Opt = {file,Client} | {handler, FormatHandler} | {process_info,PI} | shell | {shell, ShellSpec} | {timer, TimerSpec} | {overload_check, {MSec, Module, Function}} | - {flush, MSec} | resume | {resume, FetchTimeout}</v> + {flush, MSec} | resume | {resume, FetchTimeout} | + {queue_size, QueueSize}</v> <v>TimerSpec = MSec | {MSec, StopOpts}</v> <v>MSec = FetchTimeout = integer()</v> <v>Module = Function = atom() </v> @@ -126,6 +127,7 @@ ttb:p(all, call).</input></pre> <v>FormatHandler = See format/2</v> <v>PI = true | false </v> <v>ShellSpec = true | false | only</v> + <v>QueueSize = non_neg_integer()</v> </type> <desc> <p>Starts a file trace port on all specified nodes @@ -147,6 +149,18 @@ ttb:p(all, call).</input></pre> <c>Client</c> must be <c>{local, File}</c>. All trace information is then sent to the trace control node where it is written to file.</p></item> + <tag><c>queue_size</c></tag> + <item><p>When tracing to shell or <c>{local,File}</c>, an ip + trace driver is used internally. The ip trace driver has a + queue of maximum <c>QueueSize</c> messages waiting to be + delivered. If the driver cannot deliver messages as fast as + they are produced, the queue size might be exceeded and + messages are dropped. This parameter is optional, and is + only useful if many <c>{drop,N}</c> trace messages are + received by the trace handler. It has no meaning if shell + or <c>{local,File}</c> is not used. See + <seealso marker="runtime_tools:dbg#trace_port/2">dbg:trace_port/2</seealso> + for more information about the ip trace driver.</p></item> <tag><c>process_info</c></tag> <item><p>Indicates if process information is to be collected. If <c>PI = true</c> (which is diff --git a/lib/observer/src/ttb.erl b/lib/observer/src/ttb.erl index ac6c4572eb..87a50e046b 100644 --- a/lib/observer/src/ttb.erl +++ b/lib/observer/src/ttb.erl @@ -78,6 +78,11 @@ do_tracer(Nodes0,PI,Client,Traci) -> do_tracer(Clients,PI,Traci) -> Shell = proplists:get_value(shell, Traci, false), + IpPortSpec = + case proplists:get_value(queue_size, Traci) of + undefined -> 0; + QS -> {0,QS} + end, DefShell = fun(Trace) -> dbg:dhandler(Trace, standard_io) end, {ClientSucc,Succ} = lists:foldl( @@ -98,7 +103,7 @@ do_tracer(Clients,PI,Traci) -> [_,H] = string:tokens(atom_to_list(N),"@"), H end, - case catch dbg:tracer(N,port,dbg:trace_port(ip,0)) of + case catch dbg:tracer(N,port,dbg:trace_port(ip,IpPortSpec)) of {ok,N} -> {ok,Port} = dbg:trace_port_control(N,get_listen_port), {ok,T} = dbg:get_tracer(N), @@ -160,6 +165,8 @@ opt([{resume,MSec}|O],{PI,Client,Traci}) -> opt(O,{PI,Client,[{resume, {true, MSec}}|Traci]}); opt([{flush,MSec}|O],{PI,Client,Traci}) -> opt(O,{PI,Client,[{flush, MSec}|Traci]}); +opt([{queue_size,QueueSize}|O],{PI,Client,Traci}) -> + opt(O,{PI,Client,[{queue_size,QueueSize}|Traci]}); opt([],Opt) -> ensure_opt(Opt). diff --git a/lib/observer/vsn.mk b/lib/observer/vsn.mk index 9a7c6a546f..444089151e 100644 --- a/lib/observer/vsn.mk +++ b/lib/observer/vsn.mk @@ -1 +1 @@ -OBSERVER_VSN = 2.2.1 +OBSERVER_VSN = 2.2.2 diff --git a/lib/odbc/doc/src/notes.xml b/lib/odbc/doc/src/notes.xml index 40f9339028..7fb19a072e 100644 --- a/lib/odbc/doc/src/notes.xml +++ b/lib/odbc/doc/src/notes.xml @@ -32,7 +32,23 @@ <p>This document describes the changes made to the odbc application. </p> - <section><title>ODBC 2.11.2</title> + <section><title>ODBC 2.11.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + ODBC build configure has been updated to accept Mac OS X + El Capitan. Fixed by Lee Bannard.</p> + <p> + Own Id: OTP-13781</p> + </item> + </list> + </section> + +</section> + +<section><title>ODBC 2.11.2</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/odbc/vsn.mk b/lib/odbc/vsn.mk index 957c6b42eb..a7c8f8079b 100644 --- a/lib/odbc/vsn.mk +++ b/lib/odbc/vsn.mk @@ -1 +1 @@ -ODBC_VSN = 2.11.2 +ODBC_VSN = 2.11.3 diff --git a/lib/parsetools/doc/src/notes.xml b/lib/parsetools/doc/src/notes.xml index b826b4d03a..30a9374e81 100644 --- a/lib/parsetools/doc/src/notes.xml +++ b/lib/parsetools/doc/src/notes.xml @@ -31,6 +31,22 @@ </header> <p>This document describes the changes made to the Parsetools application.</p> +<section><title>Parsetools 2.1.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> Yecc generates Dialyzer suppressions to avoid + warnings when operator precedence declarations are used. + </p> + <p> + Own Id: OTP-13681</p> + </item> + </list> + </section> + +</section> + <section><title>Parsetools 2.1.2</title> <section><title>Improvements and New Features</title> diff --git a/lib/parsetools/include/leexinc.hrl b/lib/parsetools/include/leexinc.hrl index 2657fdcfaa..b4449607cb 100644 --- a/lib/parsetools/include/leexinc.hrl +++ b/lib/parsetools/include/leexinc.hrl @@ -36,8 +36,10 @@ string(Ics0, L0, Tcs, Ts) -> string_cont(Ics1, L1, yyaction(A, Alen, Tcs, L0), Ts); {reject,_Alen,Tlen,_Ics1,L1,_S1} -> % After a non-accepting state {error,{L0,?MODULE,{illegal,yypre(Tcs, Tlen+1)}},L1}; - {A,Alen,_Tlen,_Ics1,_L1,_S1} -> - string_cont(yysuf(Tcs, Alen), L0, yyaction(A, Alen, Tcs, L0), Ts) + {A,Alen,Tlen,_Ics1,L1,_S1} -> + Tcs1 = yysuf(Tcs, Alen), + L2 = adjust_line(Tlen, Alen, Tcs1, L1), + string_cont(Tcs1, L2, yyaction(A, Alen, Tcs, L0), Ts) end. %% string_cont(RestChars, Line, Token, Tokens) @@ -107,8 +109,10 @@ token(S0, Ics0, L0, Tcs, Tlen0, Tline, A0, Alen0) -> {reject,_Alen1,Tlen1,Ics1,L1,_S1} -> % No token match Error = {Tline,?MODULE,{illegal,yypre(Tcs, Tlen1+1)}}, {done,{error,Error,L1},Ics1}; - {A1,Alen1,_Tlen1,_Ics1,_L1,_S1} -> % Use last accept match - token_cont(yysuf(Tcs, Alen1), L0, yyaction(A1, Alen1, Tcs, Tline)) + {A1,Alen1,Tlen1,_Ics1,L1,_S1} -> % Use last accept match + Tcs1 = yysuf(Tcs, Alen1), + L2 = adjust_line(Tlen1, Alen1, Tcs1, L1), + token_cont(Tcs1, L2, yyaction(A1, Alen1, Tcs, Tline)) end. %% token_cont(RestChars, Line, Token) @@ -181,9 +185,11 @@ tokens(S0, Ics0, L0, Tcs, Tlen0, Tline, Ts, A0, Alen0) -> %% Skip rest of tokens. Error = {L1,?MODULE,{illegal,yypre(Tcs, Tlen1+1)}}, skip_tokens(yysuf(Tcs, Tlen1+1), L1, Error); - {A1,Alen1,_Tlen1,_Ics1,_L1,_S1} -> + {A1,Alen1,Tlen1,_Ics1,L1,_S1} -> Token = yyaction(A1, Alen1, Tcs, Tline), - tokens_cont(yysuf(Tcs, Alen1), L0, Token, Ts) + Tcs1 = yysuf(Tcs, Alen1), + L2 = adjust_line(Tlen1, Alen1, Tcs1, L1), + tokens_cont(Tcs1, L2, Token, Ts) end. %% tokens_cont(RestChars, Line, Token, Tokens) @@ -235,9 +241,11 @@ skip_tokens(S0, Ics0, L0, Tcs, Tlen0, Tline, Error, A0, Alen0) -> {done,{error,Error,L1},eof}; {reject,_Alen1,Tlen1,_Ics1,L1,_S1} -> skip_tokens(yysuf(Tcs, Tlen1+1), L1, Error); - {A1,Alen1,_Tlen1,_Ics1,L1,_S1} -> + {A1,Alen1,Tlen1,_Ics1,L1,_S1} -> Token = yyaction(A1, Alen1, Tcs, Tline), - skip_cont(yysuf(Tcs, Alen1), L1, Token, Error) + Tcs1 = yysuf(Tcs, Alen1), + L2 = adjust_line(Tlen1, Alen1, Tcs1, L1), + skip_cont(Tcs1, L2, Token, Error) end. %% skip_cont(RestChars, Line, Token, Error) @@ -269,6 +277,17 @@ yyrev(List, Tail) -> lists:reverse(List, Tail). yypre(List, N) -> lists:sublist(List, N). yysuf(List, N) -> lists:nthtail(N, List). +%% adjust_line(TokenLength, AcceptLength, Chars, Line) -> NewLine +%% Make sure that newlines in Chars are not counted twice. +%% Line has been updated with respect to newlines in the prefix of +%% Chars consisting of (TokenLength - AcceptLength) characters. + +adjust_line(N, N, _Cs, L) -> L; +adjust_line(T, A, [$\n|Cs], L) -> + adjust_line(T-1, A, Cs, L-1); +adjust_line(T, A, [_|Cs], L) -> + adjust_line(T-1, A, Cs, L). + %% yystate() -> InitialState. %% yystate(State, InChars, Line, CurrTokLen, AcceptAction, AcceptLen) -> %% {Action, AcceptLen, RestChars, Line} | diff --git a/lib/parsetools/src/leex.erl b/lib/parsetools/src/leex.erl index 15d42a4d9c..602e47404d 100644 --- a/lib/parsetools/src/leex.erl +++ b/lib/parsetools/src/leex.erl @@ -1586,6 +1586,8 @@ out_dfa_graph(St, DFA, DF) -> case file:open(St#leex.gfile, [write]) of {ok,Gfile} -> try + %% Set the same encoding as infile: + set_encoding(St, Gfile), io:fwrite(Gfile, "digraph DFA {~n", []), out_dfa_states(Gfile, DFA, DF), out_dfa_edges(Gfile, DFA), @@ -1621,7 +1623,7 @@ out_dfa_edges(File, DFA) -> foreach(fun (T) -> Crs = orddict:fetch(T, Tdict), Edgelab = dfa_edgelabel(Crs), - io:fwrite(File, " ~b -> ~b [label=\"~s\"];~n", + io:fwrite(File, " ~b -> ~b [label=\"~ts\"];~n", [S,T,Edgelab]) end, sort(orddict:fetch_keys(Tdict))) end, DFA). diff --git a/lib/parsetools/test/leex_SUITE.erl b/lib/parsetools/test/leex_SUITE.erl index 949ef3c36e..54602848ec 100644 --- a/lib/parsetools/test/leex_SUITE.erl +++ b/lib/parsetools/test/leex_SUITE.erl @@ -45,7 +45,7 @@ pt/1, man/1, ex/1, ex2/1, not_yet/1, line_wrap/1, - otp_10302/1, otp_11286/1, unicode/1]). + otp_10302/1, otp_11286/1, unicode/1, otp_13916/1]). % Default timetrap timeout (set in init_per_testcase). -define(default_timeout, ?t:minutes(1)). @@ -62,12 +62,12 @@ end_per_testcase(_Case, Config) -> suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> - [{group, checks}, {group, examples}, {group, bugs}]. + [{group, checks}, {group, examples}, {group, tickets}, {group, bugs}]. groups() -> [{checks, [], [file, compile, syntax]}, {examples, [], [pt, man, ex, ex2, not_yet, unicode]}, - {tickets, [], [otp_10302, otp_11286]}, + {tickets, [], [otp_10302, otp_11286, otp_13916]}, {bugs, [], [line_wrap]}]. init_per_suite(Config) -> @@ -408,12 +408,12 @@ unicode(Config) when is_list(Config) -> Ts = [{unicode_1, <<"%% -*- coding: utf-8 -*-\n" "Definitions.\n" - "RTLarrow = (←)\n" + "RTLarrow = (â)\n" "Rules.\n" - "{RTLarrow} : {token,{'<-',TokenLine}}.\n" + "{RTLarrow} : {token,{\"â\",TokenLine}}.\n" "Erlang code.\n" "-export([t/0]).\n" - "t() -> {ok, [{'<-', 1}], 1} = string(\"←\"), ok.">>, + "t() -> {ok, [{\"â\", 1}], 1} = string(\"â\"), ok.">>, default, ok}], @@ -1052,7 +1052,7 @@ otp_11286(Config) when is_list(Config) -> Dir = ?privdir, UName = [1024] ++ "u", UDir = filename:join(Dir, UName), - ok = rpc:call(Node, file, make_dir, [UDir]), + _ = rpc:call(Node, file, make_dir, [UDir]), %% Note: Cannot use UName as filename since the filename is used %% as module name. To be fixed in R18. @@ -1095,6 +1095,42 @@ otp_11286(Config) when is_list(Config) -> true = test_server:stop_node(Node), ok. +otp_13916(doc) -> + "OTP-13916. Leex rules with newlines result in bad line numbers"; +otp_13916(suite) -> []; +otp_13916(Config) when is_list(Config) -> + Ts = [{otp_13916_1, + <<"Definitions.\n" + "W = [a-zA-Z0-9]\n" + "S = [\\s\\t]\n" + "B = [\\n\\r]\n" + "Rules.\n" + "%% mark line break(s) and empty lines by token 'break'\n" + "%% in order to use as delimiters\n" + "{B}({S}*{B})+ : {token, {break, TokenLine}}.\n" + "{B} : {token, {break, TokenLine}}.\n" + "{S}+ : {token, {blank, TokenLine, TokenChars}}.\n" + "{W}+ : {token, {word, TokenLine, TokenChars}}.\n" + "Erlang code.\n" + "-export([t/0]).\n" + "t() ->\n" + " {ok,[{break,1},{blank,4,\" \"},{word,4,\"breaks\"}],4} =\n" + " string(\"\\n\\n \\n breaks\"),\n" + " {ok,[{break,1},{word,4,\"works\"}],4} =\n" + " string(\"\\n\\n \\nworks\"),\n" + " {ok,[{break,1},{word,4,\"L4\"},{break,4},\n" + " {word,5,\"L5\"},{break,5},{word,7,\"L7\"}], 7} =\n" + " string(\"\\n\\n \\nL4\\nL5\\n\\nL7\"),\n" + " {ok,[{break,1},{blank,4,\" \"},{word,4,\"L4\"},\n" + " {break,4},{blank,5,\" \"},{word,5,\"L5\"},\n" + " {break,5},{blank,7,\" \"},{word,7,\"L7\"}], 7} =\n" + " string(\"\\n\\n \\n L4\\n L5\\n\\n L7\"),\n" + " ok.\n">>, + default, + ok}], + ?line run(Config, Ts), + ok. + start_node(Name, Args) -> [_,Host] = string:tokens(atom_to_list(node()), "@"), ct:log("Trying to start ~w@~s~n", [Name,Host]), @@ -1137,7 +1173,7 @@ run_test(Config, Def, Pre) -> XrlFile = filename:join(DataDir, DefFile), ErlFile = filename:join(DataDir, Filename), Opts = [return, warn_unused_vars,{outdir,DataDir}], - ok = file:write_file(XrlFile, Def, [{encoding, unicode}]), + ok = file:write_file(XrlFile, Def), LOpts = [return, {report, false} | case Pre of default -> diff --git a/lib/parsetools/test/yecc_SUITE.erl b/lib/parsetools/test/yecc_SUITE.erl index e91ddb11d1..5bd71d5d19 100644 --- a/lib/parsetools/test/yecc_SUITE.erl +++ b/lib/parsetools/test/yecc_SUITE.erl @@ -2009,7 +2009,7 @@ otp_11286(Config) when is_list(Config) -> Dir = ?privdir, UName = [1024] ++ "u", UDir = filename:join(Dir, UName), - ok = rpc:call(Node, file, make_dir, [UDir]), + _ = rpc:call(Node, file, make_dir, [UDir]), %% Note: Cannot use UName as filename since the filename is used %% as module name. To be fixed in R18. diff --git a/lib/parsetools/vsn.mk b/lib/parsetools/vsn.mk index befdd82d6e..07cd959c98 100644 --- a/lib/parsetools/vsn.mk +++ b/lib/parsetools/vsn.mk @@ -1 +1 @@ -PARSETOOLS_VSN = 2.1.2 +PARSETOOLS_VSN = 2.1.3 diff --git a/lib/public_key/doc/src/public_key_app.xml b/lib/public_key/doc/src/public_key_app.xml index 1f87932b6c..923a9f1dfb 100644 --- a/lib/public_key/doc/src/public_key_app.xml +++ b/lib/public_key/doc/src/public_key_app.xml @@ -61,7 +61,7 @@ <section> <title>DEPENDENCIES</title> <p>The <c>public_key</c> application uses the - Crypto application to preform cryptographic operations and the + Crypto application to perform cryptographic operations and the ASN-1 application to handle PKIX-ASN-1 specifications, hence these applications must be loaded for the <c>public_key</c> application to work. In an embedded environment this means they must be started with @@ -72,7 +72,7 @@ <section> <title>ERROR LOGGER AND EVENT HANDLERS</title> <p> The <c>public_key</c> application is a library application - and does not use the error logger. The functions will either sucssed + and does not use the error logger. The functions will either succeed or fail with a runtime error. </p> </section> diff --git a/lib/public_key/test/pbe_SUITE.erl b/lib/public_key/test/pbe_SUITE.erl index 004eaefc27..44caf479e5 100644 --- a/lib/public_key/test/pbe_SUITE.erl +++ b/lib/public_key/test/pbe_SUITE.erl @@ -219,7 +219,12 @@ pbes2() -> pbes2(Config) when is_list(Config) -> decode_encode_key_file("pbes2_des_cbc_enc_key.pem", "password", "DES-CBC", Config), decode_encode_key_file("pbes2_des_ede3_cbc_enc_key.pem", "password", "DES-EDE3-CBC", Config), - decode_encode_key_file("pbes2_rc2_cbc_enc_key.pem", "password", "RC2-CBC", Config). + case lists:member(rc2_cbc, proplists:get_value(ciphers, crypto:supports())) of + true -> + decode_encode_key_file("pbes2_rc2_cbc_enc_key.pem", "password", "RC2-CBC", Config); + false -> + ok + end. check_key_info(#'PrivateKeyInfo'{privateKeyAlgorithm = #'PrivateKeyInfo_privateKeyAlgorithm'{algorithm = ?rsaEncryption}, diff --git a/lib/reltool/doc/src/notes.xml b/lib/reltool/doc/src/notes.xml index 25d983afd3..2365a68feb 100644 --- a/lib/reltool/doc/src/notes.xml +++ b/lib/reltool/doc/src/notes.xml @@ -38,7 +38,38 @@ thus constitutes one section in this document. The title of each section is the version number of Reltool.</p> - <section><title>Reltool 0.7.1</title> + <section><title>Reltool 0.7.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Dependencies specified in .app files would earlier only + be followed for applications that are included in a 'rel' + spec in the reltool config. For other applications, only + xref would decide the dependencies.</p> + <p> + Some dependency chains would even be missed for + applications that are included in a 'rel' spec in the + reltool config. E.g.</p> + <p> + <list> <item>Application x has y as included application, + and y in turn has z as included application. Then z is + not included. </item> <item>Application x has y in its + 'applications' tag in the .app file, and y in turn has z + as included application. Then z is not included.</item> + </list></p> + <p> + These bugs are now corrected.</p> + <p> + Own Id: OTP-11993</p> + </item> + </list> + </section> + +</section> + +<section><title>Reltool 0.7.1</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/reltool/vsn.mk b/lib/reltool/vsn.mk index 76f69fd294..2b23ff6f20 100644 --- a/lib/reltool/vsn.mk +++ b/lib/reltool/vsn.mk @@ -1 +1 @@ -RELTOOL_VSN = 0.7.1 +RELTOOL_VSN = 0.7.2 diff --git a/lib/runtime_tools/doc/src/dbg.xml b/lib/runtime_tools/doc/src/dbg.xml index db04bfdf7b..95f74d4607 100644 --- a/lib/runtime_tools/doc/src/dbg.xml +++ b/lib/runtime_tools/doc/src/dbg.xml @@ -954,7 +954,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard)\ as the tuple <c>{drop, N}</c> where <c>N</c> is the number of consecutive messages dropped. In case of heavy tracing, drop's are likely to occur, and they surely occur if no client is reading the trace - messages.</p> + messages. The default value of <c>QueSize</c> is 200.</p> </desc> </func> <func> diff --git a/lib/runtime_tools/doc/src/notes.xml b/lib/runtime_tools/doc/src/notes.xml index b6dfb2dd28..0b830593b4 100644 --- a/lib/runtime_tools/doc/src/notes.xml +++ b/lib/runtime_tools/doc/src/notes.xml @@ -32,6 +32,20 @@ <p>This document describes the changes made to the Runtime_Tools application.</p> +<section><title>Runtime_Tools 1.10.1</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Correct some minor documentation issues. </p> + <p> + Own Id: OTP-13891</p> + </item> + </list> + </section> + +</section> + <section><title>Runtime_Tools 1.10</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/runtime_tools/src/dbg.erl b/lib/runtime_tools/src/dbg.erl index c0d4665bda..f17aa528ed 100644 --- a/lib/runtime_tools/src/dbg.erl +++ b/lib/runtime_tools/src/dbg.erl @@ -427,7 +427,7 @@ trace_port(file, Filename) -> trace_port1(file, Filename, nowrap); trace_port(ip, Portno) when is_integer(Portno) -> - trace_port(ip,{Portno,50}); + trace_port(ip,{Portno,200}); trace_port(ip, {Portno, Qsiz}) when is_integer(Portno), is_integer(Qsiz) -> fun() -> diff --git a/lib/runtime_tools/vsn.mk b/lib/runtime_tools/vsn.mk index b33f6f4721..0fc86e42f7 100644 --- a/lib/runtime_tools/vsn.mk +++ b/lib/runtime_tools/vsn.mk @@ -1 +1 @@ -RUNTIME_TOOLS_VSN = 1.10 +RUNTIME_TOOLS_VSN = 1.10.1 diff --git a/lib/sasl/doc/src/notes.xml b/lib/sasl/doc/src/notes.xml index bd713af932..055d433524 100644 --- a/lib/sasl/doc/src/notes.xml +++ b/lib/sasl/doc/src/notes.xml @@ -31,6 +31,59 @@ </header> <p>This document describes the changes made to the SASL application.</p> +<section><title>SASL 3.0.1</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Improved dirty scheduler support. A purge of a module can + now be performed without having to wait for completion of + all ongoing dirty NIF calls.</p> + <p> + Note that when enabling support for dirty schedulers, a + new purge strategy will as of ERTS version 8.1 be + enabled. This new strategy is not fully backwards + compatible with the strategy used by default. For more + information see the documentation of <seealso + marker="erts:erlang#check_process_code/3"><c>erlang:check_process_code/3</c></seealso>.</p> + <p> + Own Id: OTP-13808 Aux Id: OTP-13833 </p> + </item> + <item> + <p> + A new purge strategy has been introduced. The new + strategy will by default be disabled during the OTP 19 + release, but will be the only strategy available as of + the OTP 20 release.</p> + <p> + The new strategy is slightly incompatible with the + strategy being used by default in OTP 19. Using the + default strategy, processes holding <c>fun</c>s that + refer to the module being purged either fail a soft + purge, or will be killed during a hard purge. The new + strategy completely ignores <c>fun</c>s. If <c>fun</c>s + referring to the code being purged exist, and are used + after a purge, an exception will be raised upon usage. + That is, the behavior will be exactly the same as the + case when a <c>fun</c> is received by a process after the + purge.</p> + <p> + The new strategy can optionally be enabled when building + OTP during OTP 19, and will automatically be enabled if + the runtime system is built with support for dirty + schedulers.</p> + <p> + For more information see the documentation of <seealso + marker="erts:erlang#check_process_code/3"><c>erlang:check_process_code/3</c></seealso>.</p> + <p> + Own Id: OTP-13833</p> + </item> + </list> + </section> + +</section> + <section><title>SASL 3.0</title> <section><title>Improvements and New Features</title> diff --git a/lib/sasl/doc/src/script.xml b/lib/sasl/doc/src/script.xml index 8ed132354d..b40ff28179 100644 --- a/lib/sasl/doc/src/script.xml +++ b/lib/sasl/doc/src/script.xml @@ -88,7 +88,7 @@ follows:</p> <list type="bulleted"> <item><c>-pa Dir1 Dir2 ... DirN</c> adds the directories - <c>Dir1, Dir2, ..., DirN</c> to the front of the initial + <c>DirN, DirN-1, ..., Dir2, Dir1</c> to the front of the initial load path.</item> <item><c>-pz Dir1 Dir2 ... DirN</c> adds the directories <c>Dir1, Dir2, ..., DirN</c> to the end of the initial diff --git a/lib/sasl/vsn.mk b/lib/sasl/vsn.mk index fd0fc9b8b5..a7d7c09cde 100644 --- a/lib/sasl/vsn.mk +++ b/lib/sasl/vsn.mk @@ -1 +1 @@ -SASL_VSN = 3.0 +SASL_VSN = 3.0.1 diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml index 0f5c35b300..3323d32878 100644 --- a/lib/snmp/doc/src/notes.xml +++ b/lib/snmp/doc/src/notes.xml @@ -34,7 +34,35 @@ </header> - <section><title>SNMP 5.2.3</title> + <section><title>SNMP 5.2.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> Correct bugs when path to mib or idl spec files + contains UTF-8 characters. </p> + <p> + Own Id: OTP-13718 Aux Id: ERL-179 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Solves snmp config string handling as reported by ERL-164 + and solved by PR-1100</p> + <p> + Own Id: OTP-13706</p> + </item> + </list> + </section> + +</section> + +<section><title>SNMP 5.2.3</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/snmp/vsn.mk b/lib/snmp/vsn.mk index f95b428290..28eba0d0d6 100644 --- a/lib/snmp/vsn.mk +++ b/lib/snmp/vsn.mk @@ -19,6 +19,6 @@ # %CopyrightEnd% APPLICATION = snmp -SNMP_VSN = 5.2.3 +SNMP_VSN = 5.2.4 PRE_VSN = APP_VSN = "$(APPLICATION)-$(SNMP_VSN)$(PRE_VSN)" diff --git a/lib/ssh/doc/src/notes.xml b/lib/ssh/doc/src/notes.xml index f9d11b2a60..f5a67bc00e 100644 --- a/lib/ssh/doc/src/notes.xml +++ b/lib/ssh/doc/src/notes.xml @@ -30,6 +30,134 @@ <file>notes.xml</file> </header> +<section><title>Ssh 4.3.6</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Re-negotiation problems with OpenSSH client solved.</p> + <p> + Own Id: OTP-13972</p> + </item> + </list> + </section> + +</section> + +<section><title>Ssh 4.3.5</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + If a client illegaly sends an info-line and then + immediatly closes the TCP-connection, a badmatch + exception was raised.</p> + <p> + Own Id: OTP-13966</p> + </item> + </list> + </section> + +</section> + +<section><title>Ssh 4.3.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Intermittent ssh ERROR REPORT mentioning + nonblocking_sender</p> + <p> + Own Id: OTP-13953 Aux Id: seq13199 </p> + </item> + </list> + </section> + +</section> + +<section><title>Ssh 4.3.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Handle all possible exit values that should be + interpreted as {error, closed}. Failing to do so could + lead to unexpected crashes for users of the ssh + application.</p> + <p> + Own Id: OTP-13932 Aux Id: seq13189 </p> + </item> + </list> + </section> + +</section> + +<section><title>Ssh 4.3.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Upgrade of an established client connection could crash + because the ssh client supervisors children had wrong + type. This is fixed now.</p> + <p> + Own Id: OTP-13782 Aux Id: seq13158 </p> + </item> + <item> + <p> + Partly checks the public key early in public key + authorization</p> + <p> + Own Id: OTP-13847 Aux Id: + defensics-ssh3.1.0-190243,205277,219318 </p> + </item> + <item> + <p> + Corrected handling of SHA for ECDSA (Elliptic curve + public keys)</p> + <p> + Own Id: OTP-13850 Aux Id: defensics-ssh3.1.0-214168 </p> + </item> + <item> + <p> + Problems found by test suites as well as by + Codenomicon/Defensics fixed: - reduce max random padding + to 15 bytes (Codenomicon/Defensics) - inclomplete pdu + handling (Codenomicon/Defensics) - badmatch in test suite + - non-blocking send fixes deadlock in + ssh_connection_SUITE:interrupted_send</p> + <p> + Own Id: OTP-13854</p> + </item> + <item> + <p> + Caller is now notified when a tcp close is received.</p> + <p> + Own Id: OTP-13859 Aux Id: seq13177 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Use application:ensure_all_started/2 instead of + hard-coding deps</p> + <p> + Own Id: OTP-13843 Aux Id: PR-1147 </p> + </item> + </list> + </section> + +</section> + <section><title>Ssh 4.3.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/ssh/src/ssh.appup.src b/lib/ssh/src/ssh.appup.src index e38cecf226..4cda8fee95 100644 --- a/lib/ssh/src/ssh.appup.src +++ b/lib/ssh/src/ssh.appup.src @@ -20,9 +20,13 @@ {"%VSN%", [ + {<<"4.3.2">>, [{load_module, ssh_channel, soft_purge, soft_purge, []} + ]}, {<<".*">>, [{restart_application, ssh}]} ], [ + {<<"4.3.2">>, [{load_module, ssh_channel, soft_purge, soft_purge, []} + ]}, {<<".*">>, [{restart_application, ssh}]} ] }. diff --git a/lib/ssh/src/ssh_channel.erl b/lib/ssh/src/ssh_channel.erl index a8e6ebde16..426e2f5125 100644 --- a/lib/ssh/src/ssh_channel.erl +++ b/lib/ssh/src/ssh_channel.erl @@ -93,11 +93,16 @@ call(ChannelPid, Msg, TimeOute) -> catch exit:{noproc, _} -> {error, closed}; + exit:{normal, _} -> + {error, closed}; + exit:{shutdown, _} -> + {error, closed}; + exit:{{shutdown, _}, _} -> + {error, closed}; exit:{timeout, _} -> {error, timeout} end. - cast(ChannelPid, Msg) -> gen_server:cast(ChannelPid, Msg). diff --git a/lib/ssh/src/ssh_cli.erl b/lib/ssh/src/ssh_cli.erl index 74cd2e081a..8af0ecc5f9 100644 --- a/lib/ssh/src/ssh_cli.erl +++ b/lib/ssh/src/ssh_cli.erl @@ -208,8 +208,15 @@ handle_msg({Group, Req}, #state{group = Group, buf = Buf, pty = Pty, write_chars(ConnectionHandler, ChannelId, Chars), {ok, State#state{buf = NewBuf}}; -handle_msg({'EXIT', Group, _Reason}, #state{group = Group, - channel = ChannelId} = State) -> +handle_msg({'EXIT', Group, Reason}, #state{group = Group, + cm = ConnectionHandler, + channel = ChannelId} = State) -> + Status = case Reason of + normal -> 0; + _ -> -1 + end, + ssh_connection:exit_status(ConnectionHandler, ChannelId, Status), + ssh_connection:send_eof(ConnectionHandler, ChannelId), {stop, ChannelId, State}; handle_msg(_, State) -> diff --git a/lib/ssh/src/ssh_connection_handler.erl b/lib/ssh/src/ssh_connection_handler.erl index facf6b561a..dd414894d4 100644 --- a/lib/ssh/src/ssh_connection_handler.erl +++ b/lib/ssh/src/ssh_connection_handler.erl @@ -339,7 +339,6 @@ renegotiate_data(ConnectionHandler) -> ssh_params :: #ssh{} | undefined, socket :: inet:socket(), - sender :: pid() | undefined, decrypted_data_buffer = <<>> :: binary(), encrypted_data_buffer = <<>> :: binary(), undecrypted_packet_length :: undefined | non_neg_integer(), @@ -368,10 +367,9 @@ init_connection_handler(Role, Socket, Opts) -> {Protocol, Callback, CloseTag} = proplists:get_value(transport, Opts, ?DefaultTransport), S0#data{ssh_params = init_ssh_record(Role, Socket, Opts), - sender = spawn_link(fun() -> nonblocking_sender(Socket, Callback) end), - transport_protocol = Protocol, - transport_cb = Callback, - transport_close_tag = CloseTag + transport_protocol = Protocol, + transport_cb = Callback, + transport_close_tag = CloseTag } of S -> @@ -547,6 +545,7 @@ handle_event(_, {info_line,_Line}, {hello,Role}, D) -> case Role of client -> %% The server may send info lines to the client before the version_exchange + %% RFC4253/4.2 inet:setopts(D#data.socket, [{active, once}]), keep_state_and_data; server -> @@ -672,8 +671,9 @@ handle_event(_, #ssh_msg_newkeys{} = Msg, {new_keys,Role,init}, D) -> {next_state, {service_request,Role}, D#data{ssh_params=Ssh}}; %% Subsequent key exchange rounds (renegotiation): -handle_event(_, #ssh_msg_newkeys{}, {new_keys,Role,renegotiate}, D) -> - {next_state, {connected,Role}, D}; +handle_event(_, #ssh_msg_newkeys{} = Msg, {new_keys,Role,renegotiate}, D) -> + {ok, Ssh} = ssh_transport:handle_new_keys(Msg, D#data.ssh_params), + {next_state, {connected,Role}, D#data{ssh_params=Ssh}}; %%% ######## {service_request, client|server} @@ -1447,15 +1447,18 @@ start_the_connection_child(UserPid, Role, Socket, Options) -> %% Stopping -type finalize_termination_result() :: ok . -finalize_termination(_StateName, D) -> - case D#data.connection_state of +finalize_termination(_StateName, #data{transport_cb = Transport, + connection_state = Connection, + socket = Socket}) -> + case Connection of #connection{system_supervisor = SysSup, sub_system_supervisor = SubSysSup} when is_pid(SubSysSup) -> ssh_system_sup:stop_subsystem(SysSup, SubSysSup); _ -> do_nothing end, - close_transport(D). + (catch Transport:close(Socket)), + ok. %%-------------------------------------------------------------------- %% "Invert" the Role @@ -1510,34 +1513,10 @@ send_msg(Msg, State=#data{ssh_params=Ssh0}) when is_tuple(Msg) -> send_bytes(Bytes, State), State#data{ssh_params=Ssh}. -send_bytes(Bytes, #data{sender = Sender}) -> - Sender ! {send,Bytes}, - ok. - -close_transport(D) -> - D#data.sender ! close, +send_bytes(Bytes, #data{socket = Socket, transport_cb = Transport}) -> + _ = Transport:send(Socket, Bytes), ok. - -nonblocking_sender(Socket, Callback) -> - receive - {send, Bytes} -> - case Callback:send(Socket, Bytes) of - ok -> - nonblocking_sender(Socket, Callback); - E = {error,_} -> - exit({shutdown,E}) - end; - - close -> - case Callback:close(Socket) of - ok -> - ok; - E = {error,_} -> - exit({shutdown,E}) - end - end. - handle_version({2, 0} = NumVsn, StrVsn, Ssh0) -> Ssh = counterpart_versions(NumVsn, StrVsn, Ssh0), {ok, Ssh}; diff --git a/lib/ssh/test/Makefile b/lib/ssh/test/Makefile index 6ce6d6f537..3fca78237c 100644 --- a/lib/ssh/test/Makefile +++ b/lib/ssh/test/Makefile @@ -52,7 +52,8 @@ MODULES= \ ssh_echo_server \ ssh_peername_sockname_server \ ssh_test_cli \ - ssh_relay + ssh_relay \ + ssh_eqc_event_handler HRL_FILES_NEEDED_IN_TEST= \ $(ERL_TOP)/lib/ssh/test/ssh_test_lib.hrl \ diff --git a/lib/ssh/test/property_test/ssh_eqc_client_info_timing.erl b/lib/ssh/test/property_test/ssh_eqc_client_info_timing.erl new file mode 100644 index 0000000000..c07140dc43 --- /dev/null +++ b/lib/ssh/test/property_test/ssh_eqc_client_info_timing.erl @@ -0,0 +1,92 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(ssh_eqc_client_info_timing). + +-compile(export_all). + +-proptest(eqc). +-proptest([triq,proper]). + +-ifndef(EQC). +-ifndef(PROPER). +-ifndef(TRIQ). +-define(EQC,true). +%%-define(PROPER,true). +%%-define(TRIQ,true). +-endif. +-endif. +-endif. + +-ifdef(EQC). +-include_lib("eqc/include/eqc.hrl"). +-define(MOD_eqc,eqc). + +-else. +-ifdef(PROPER). +-include_lib("proper/include/proper.hrl"). +-define(MOD_eqc,proper). + +-else. +-ifdef(TRIQ). +-define(MOD_eqc,triq). +-include_lib("triq/include/triq.hrl"). + +-endif. +-endif. +-endif. + + +%%% Properties: + +prop_seq(_Config) -> + {ok,Pid} = ssh_eqc_event_handler:add_report_handler(), + {_, _, Port} = init_daemon(), + numtests(1000, + ?FORALL(Delay, choose(0,100),%% Micro seconds + try + send_bad_sequence(Port, Delay, Pid), + not any_relevant_error_report(Pid) + catch + C:E -> io:format('~p:~p~n',[C,E]), + false + end + )). + +send_bad_sequence(Port, Delay, Pid) -> + {ok,S} = gen_tcp:connect("localhost",Port,[]), + gen_tcp:send(S,"Illegal info-string\r\n"), + ssh_test_lib:sleep_microsec(Delay), + gen_tcp:close(S). + +any_relevant_error_report(Pid) -> + {ok, Reports} = ssh_eqc_event_handler:get_reports(Pid), + lists:any(fun({error_report,_,{_,supervisor_report,L}}) when is_list(L) -> + lists:member({reason,{badmatch,{error,closed}}}, L); + (_) -> + false + end, Reports). + +%%%================================================================ +init_daemon() -> + ok = begin ssh:stop(), ssh:start() end, + ssh_test_lib:daemon([]). + diff --git a/lib/ssh/test/ssh_basic_SUITE.erl b/lib/ssh/test/ssh_basic_SUITE.erl index d52d453007..51e0d5196b 100644 --- a/lib/ssh/test/ssh_basic_SUITE.erl +++ b/lib/ssh/test/ssh_basic_SUITE.erl @@ -67,7 +67,8 @@ shell_unicode_string/1, ssh_info_print/1, key_callback/1, - key_callback_options/1 + key_callback_options/1, + shell_exit_status/1 ]). %%% Common test callbacks @@ -106,7 +107,8 @@ all() -> multi_daemon_opt_fd, packet_size_zero, ssh_info_print, - {group, login_bad_pwd_no_retry} + {group, login_bad_pwd_no_retry}, + shell_exit_status ]. groups() -> @@ -1167,6 +1169,33 @@ login_bad_pwd_no_retry(Config, AuthMethods) -> end end. + +%%---------------------------------------------------------------------------- +%%% Test that when shell REPL exit with reason normal client receives status 0 +shell_exit_status(Config) when is_list(Config) -> + process_flag(trap_exit, true), + SystemDir = proplists:get_value(data_dir, Config), + UserDir = proplists:get_value(priv_dir, Config), + + ShellFun = fun (_User) -> spawn(fun() -> ok end) end, + {Pid, Host, Port} = ssh_test_lib:daemon([{system_dir, SystemDir}, + {user_dir, UserDir}, + {user_passwords, [{"vego", "morot"}]}, + {shell, ShellFun}, + {failfun, fun ssh_test_lib:failfun/2}]), + ConnectionRef = + ssh_test_lib:connect(Host, Port, [{silently_accept_hosts, true}, + {user_dir, UserDir}, + {user, "vego"}, + {password, "morot"}, + {user_interaction, false}]), + + {ok, ChannelId} = ssh_connection:session_channel(ConnectionRef, infinity), + ok = ssh_connection:shell(ConnectionRef, ChannelId), + ssh_test_lib:receive_exec_end(ConnectionRef, ChannelId), + ssh:stop_daemon(Pid). + + %%-------------------------------------------------------------------- %% Internal functions ------------------------------------------------ %%-------------------------------------------------------------------- diff --git a/lib/ssh/test/ssh_eqc_event_handler.erl b/lib/ssh/test/ssh_eqc_event_handler.erl new file mode 100644 index 0000000000..233965012a --- /dev/null +++ b/lib/ssh/test/ssh_eqc_event_handler.erl @@ -0,0 +1,43 @@ +-module(ssh_eqc_event_handler). + +-compile(export_all). + +-behaviour(gen_event). + +add_report_handler() -> + error_logger:add_report_handler(?MODULE, [self(),Ref=make_ref()]), + receive + {event_handler_started,HandlerPid,Ref} -> + {ok,HandlerPid} + end. + +get_reports(Pid) -> + Pid ! {get_reports,self(),Ref=make_ref()}, + receive + {reports,Reports,Ref} -> + {ok,Reports} + end. + +%%%================================================================ + +-record(state, { + reports = [] + }). + +%% error_logger:add_report_handler(ssh_eqc_event_handler, [self()]). + +init([CallerPid,Ref]) -> + CallerPid ! {event_handler_started,self(),Ref}, + {ok, #state{}}. + +handle_event(Event, State) -> + {ok, State#state{reports = [Event|State#state.reports]}}. + +handle_info({get_reports,From,Ref}, State) -> + From ! {reports, lists:reverse(State#state.reports), Ref}, + {ok, State#state{reports=[]}}. + +handle_call(_Request, State) -> {ok,reply,State}. +terminate(_Arg, _State) -> stop. + +code_change(_OldVsn, State, _Extra) -> {ok, State}. diff --git a/lib/ssh/test/ssh_property_test_SUITE.erl b/lib/ssh/test/ssh_property_test_SUITE.erl index c8aabcedb7..7ba2732a88 100644 --- a/lib/ssh/test/ssh_property_test_SUITE.erl +++ b/lib/ssh/test/ssh_property_test_SUITE.erl @@ -38,6 +38,7 @@ -include_lib("common_test/include/ct.hrl"). all() -> [{group, messages}, + client_sends_info_timing, {group, client_server} ]. @@ -106,3 +107,9 @@ client_server_parallel_multi(Config) -> ssh_eqc_client_server:prop_parallel_multi(Config), Config ). + +client_sends_info_timing(Config) -> + ct_property_test:quickcheck( + ssh_eqc_client_info_timing:prop_seq(Config), + Config + ). diff --git a/lib/ssh/test/ssh_protocol_SUITE.erl b/lib/ssh/test/ssh_protocol_SUITE.erl index 4fac1f718a..93d0bc2eb0 100644 --- a/lib/ssh/test/ssh_protocol_SUITE.erl +++ b/lib/ssh/test/ssh_protocol_SUITE.erl @@ -48,6 +48,7 @@ suite() -> all() -> [{group,tool_tests}, + client_info_line, {group,kex}, {group,service_requests}, {group,authentication}, @@ -575,6 +576,36 @@ client_handles_keyboard_interactive_0_pwds(Config) -> ). + +%%%-------------------------------------------------------------------- +client_info_line(_Config) -> + %% A client must not send an info-line. If it does, the server should handle + %% handle this gracefully + {ok,Pid} = ssh_eqc_event_handler:add_report_handler(), + {_, _, Port} = ssh_test_lib:daemon([]), + + %% Fake client: + {ok,S} = gen_tcp:connect("localhost",Port,[]), + gen_tcp:send(S,"An illegal info-string\r\n"), + gen_tcp:close(S), + + %% wait for server to react: + timer:sleep(1000), + + %% check if a badmatch was received: + {ok, Reports} = ssh_eqc_event_handler:get_reports(Pid), + case lists:any(fun({error_report,_,{_,supervisor_report,L}}) when is_list(L) -> + lists:member({reason,{badmatch,{error,closed}}}, L); + (_) -> + false + end, Reports) of + true -> + ct:fail("Bad error report on info_line from client"); + false -> + ok + end. + + %%%================================================================ %%%==== Internal functions ======================================== %%%================================================================ diff --git a/lib/ssh/test/ssh_test_lib.erl b/lib/ssh/test/ssh_test_lib.erl index 6233680dce..6fd401d182 100644 --- a/lib/ssh/test/ssh_test_lib.erl +++ b/lib/ssh/test/ssh_test_lib.erl @@ -208,6 +208,16 @@ reply(TestCase, Result) -> rcv_expected(Expect, SshPort, Timeout) -> receive + {SshPort, Recvd} when is_function(Expect) -> + case Expect(Recvd) of + true -> + ct:log("Got expected ~p from ~p",[Recvd,SshPort]), + catch port_close(SshPort), + rcv_lingering(50); + false -> + ct:log("Got UNEXPECTED ~p~n",[Recvd]), + rcv_expected(Expect, SshPort, Timeout) + end; {SshPort, Expect} -> ct:log("Got expected ~p from ~p",[Expect,SshPort]), catch port_close(SshPort), @@ -767,3 +777,28 @@ open_port(Arg1, ExtraOpts) -> use_stdio, overlapped_io, hide %only affects windows | ExtraOpts]). + +%%%---------------------------------------------------------------- +%%% Sleeping + +%%% Milli sec +sleep_millisec(Nms) -> receive after Nms -> ok end. + +%%% Micro sec +sleep_microsec(Nus) -> + busy_wait(Nus, erlang:system_time(microsecond)). + +busy_wait(Nus, T0) -> + T = erlang:system_time(microsecond) - T0, + Tleft = Nus - T, + if + Tleft > 2000 -> + sleep_millisec((Tleft-1500) div 1000), % μs -> ms + busy_wait(Nus,T0); + Tleft > 1 -> + busy_wait(Nus, T0); + true -> + T + end. + +%%%---------------------------------------------------------------- diff --git a/lib/ssh/test/ssh_to_openssh_SUITE.erl b/lib/ssh/test/ssh_to_openssh_SUITE.erl index a914938c41..f481e9c1ce 100644 --- a/lib/ssh/test/ssh_to_openssh_SUITE.erl +++ b/lib/ssh/test/ssh_to_openssh_SUITE.erl @@ -58,7 +58,8 @@ groups() -> erlang_client_openssh_server_nonexistent_subsystem ]}, {erlang_server, [], [erlang_server_openssh_client_public_key_dsa, - erlang_server_openssh_client_public_key_rsa + erlang_server_openssh_client_public_key_rsa, + erlang_server_openssh_client_renegotiate ]} ]. @@ -386,6 +387,41 @@ erlang_server_openssh_client_public_key_X(Config, PubKeyAlg) -> ssh:stop_daemon(Pid). %%-------------------------------------------------------------------- +%% Test that the Erlang/OTP server can renegotiate with openSSH +erlang_server_openssh_client_renegotiate(Config) -> + PubKeyAlg = ssh_rsa, + SystemDir = proplists:get_value(data_dir, Config), + PrivDir = proplists:get_value(priv_dir, Config), + KnownHosts = filename:join(PrivDir, "known_hosts"), + {Pid, Host, Port} = ssh_test_lib:daemon([{system_dir, SystemDir}, + {public_key_alg, PubKeyAlg}, + {failfun, fun ssh_test_lib:failfun/2}]), + + ct:sleep(500), + + DataFile = filename:join(PrivDir, "renegotiate_openssh_client.data"), + Data = lists:duplicate(32000, $a), + ok = file:write_file(DataFile, Data), + + Cmd = "ssh -p " ++ integer_to_list(Port) ++ + " -o UserKnownHostsFile=" ++ KnownHosts ++ + " -o RekeyLimit=20K" ++ + " " ++ Host ++ " < " ++ DataFile, + OpenSsh = ssh_test_lib:open_port({spawn, Cmd}), + + Expect = fun({data,R}) -> + try lists:prefix(binary_to_list(R), Data) + catch + _:_ -> false + end; + (_) -> + false + end, + + ssh_test_lib:rcv_expected(Expect, OpenSsh, ?TIMEOUT), + ssh:stop_daemon(Pid). + +%%-------------------------------------------------------------------- erlang_client_openssh_server_password() -> [{doc, "Test client password option"}]. erlang_client_openssh_server_password(Config) when is_list(Config) -> diff --git a/lib/ssh/vsn.mk b/lib/ssh/vsn.mk index 212b99c695..c023429056 100644 --- a/lib/ssh/vsn.mk +++ b/lib/ssh/vsn.mk @@ -1,5 +1,5 @@ #-*-makefile-*- ; force emacs to enter makefile-mode -SSH_VSN = 4.3.2 +SSH_VSN = 4.3.6 APP_VSN = "ssh-$(SSH_VSN)" diff --git a/lib/ssl/doc/src/notes.xml b/lib/ssl/doc/src/notes.xml index 9d68ee0eee..c7f50777a8 100644 --- a/lib/ssl/doc/src/notes.xml +++ b/lib/ssl/doc/src/notes.xml @@ -28,6 +28,70 @@ <p>This document describes the changes made to the SSL application.</p> +<section><title>SSL 8.0.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + A timing related bug in event handling could cause + interoperability problems between an erlang TLS server + and some TLS clients, especially noticed with Firefox as + TLS client.</p> + <p> + Own Id: OTP-13917</p> + </item> + <item> + <p> + Correct ECC curve selection, the error could cause the + default to always be selected.</p> + <p> + Own Id: OTP-13918</p> + </item> + </list> + </section> + +</section> + +<section><title>SSL 8.0.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Correctly formed handshake messages received out of order + will now correctly fail the connection with unexpected + message.</p> + <p> + Own Id: OTP-13853</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + ssl application now behaves gracefully also on partially + incorrect input from peer.</p> + <p> + Own Id: OTP-13834</p> + </item> + <item> + <p> + Add application environment configuration + bypass_pem_cache. This can be used as a workaround for + the current implementation of the PEM-cache that has + proven to be a bottleneck.</p> + <p> + Own Id: OTP-13883</p> + </item> + </list> + </section> + +</section> + <section><title>SSL 8.0.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/ssl/doc/src/ssl.xml b/lib/ssl/doc/src/ssl.xml index abba5aaf59..68f2f97b6e 100644 --- a/lib/ssl/doc/src/ssl.xml +++ b/lib/ssl/doc/src/ssl.xml @@ -155,7 +155,7 @@ <tag><c>cipher() =</c></tag> <item><p><c>rc4_128 | des_cbc | '3des_ede_cbc' - | aes_128_cbc | aes_256_cbc | aes_128_gcm | aes_256_gcm</c></p></item> + | aes_128_cbc | aes_256_cbc | aes_128_gcm | aes_256_gcm | chacha20_poly1305</c></p></item> <tag><c>hash() =</c></tag> <item><p><c>md5 | sha | sha224 | sha256 | sha348 | sha512</c></p></item> diff --git a/lib/ssl/src/dtls_connection.erl b/lib/ssl/src/dtls_connection.erl index 479f68f4bb..4f1f050e4b 100644 --- a/lib/ssl/src/dtls_connection.erl +++ b/lib/ssl/src/dtls_connection.erl @@ -232,9 +232,7 @@ error(_, _, _) -> #state{}) -> gen_statem:state_function_result(). %%-------------------------------------------------------------------- -hello(internal, #client_hello{client_version = ClientVersion, - extensions = #hello_extensions{ec_point_formats = EcPointFormats, - elliptic_curves = EllipticCurves}} = Hello, +hello(internal, #client_hello{client_version = ClientVersion} = Hello, State = #state{connection_states = ConnectionStates0, port = Port, session = #session{own_certificate = Cert} = Session0, renegotiation = {Renegotiation, _}, @@ -260,7 +258,6 @@ hello(internal, #client_hello{client_version = ClientVersion, negotiated_version = Version, hashsign_algorithm = HashSign, session = Session, - client_ecc = {EllipticCurves, EcPointFormats}, negotiated_protocol = Protocol}, ?MODULE) end; hello(internal, #server_hello{} = Hello, diff --git a/lib/ssl/src/ssl_cipher.erl b/lib/ssl/src/ssl_cipher.erl index e935c033c7..605bbd859a 100644 --- a/lib/ssl/src/ssl_cipher.erl +++ b/lib/ssl/src/ssl_cipher.erl @@ -46,9 +46,9 @@ erl_cipher_suite/0, openssl_cipher_suite/0, hash/0, key_algo/0, sign_algo/0]). --type cipher() :: null |rc4_128 | idea_cbc | des40_cbc | des_cbc | '3des_ede_cbc' +-type cipher() :: null |rc4_128 | des_cbc | '3des_ede_cbc' | aes_128_cbc | aes_256_cbc | aes_128_gcm | aes_256_gcm | chacha20_poly1305. --type hash() :: null | sha | md5 | sha224 | sha256 | sha384 | sha512. +-type hash() :: null | md5 | sha | sha224 | sha256 | sha384 | sha512. -type sign_algo() :: rsa | dsa | ecdsa. -type key_algo() :: null | rsa | dhe_rsa | dhe_dss | ecdhe_ecdsa| ecdh_ecdsa | ecdh_rsa| srp_rsa| srp_dss | psk | dhe_psk | rsa_psk | dh_anon | ecdh_anon | srp_anon. @@ -333,21 +333,27 @@ anonymous_suites({3, N}) -> anonymous_suites(N) when N >= 3 -> [?TLS_DH_anon_WITH_AES_128_GCM_SHA256, - ?TLS_DH_anon_WITH_AES_256_GCM_SHA384 - ] ++ anonymous_suites(0); - -anonymous_suites(_) -> - [?TLS_DH_anon_WITH_RC4_128_MD5, - ?TLS_DH_anon_WITH_DES_CBC_SHA, - ?TLS_DH_anon_WITH_3DES_EDE_CBC_SHA, - ?TLS_DH_anon_WITH_AES_128_CBC_SHA, - ?TLS_DH_anon_WITH_AES_256_CBC_SHA, + ?TLS_DH_anon_WITH_AES_256_GCM_SHA384, ?TLS_DH_anon_WITH_AES_128_CBC_SHA256, ?TLS_DH_anon_WITH_AES_256_CBC_SHA256, - ?TLS_ECDH_anon_WITH_RC4_128_SHA, - ?TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, ?TLS_ECDH_anon_WITH_AES_128_CBC_SHA, - ?TLS_ECDH_anon_WITH_AES_256_CBC_SHA]. + ?TLS_ECDH_anon_WITH_AES_256_CBC_SHA, + ?TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, + ?TLS_DH_anon_WITH_RC4_128_MD5]; + +anonymous_suites(2) -> + [?TLS_ECDH_anon_WITH_AES_128_CBC_SHA, + ?TLS_ECDH_anon_WITH_AES_256_CBC_SHA, + ?TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, + ?TLS_DH_anon_WITH_DES_CBC_SHA, + ?TLS_DH_anon_WITH_RC4_128_MD5]; + +anonymous_suites(N) when N == 0; + N == 1 -> + [?TLS_DH_anon_WITH_RC4_128_MD5, + ?TLS_DH_anon_WITH_3DES_EDE_CBC_SHA, + ?TLS_DH_anon_WITH_DES_CBC_SHA + ]. %%-------------------------------------------------------------------- -spec psk_suites(ssl_record:ssl_version() | integer()) -> [cipher_suite()]. @@ -1441,25 +1447,60 @@ filter_suites(Suites) -> is_acceptable_prf(Prf, Hashs) end, Suites). -is_acceptable_keyexchange(KeyExchange, Algos) - when KeyExchange == ecdh_ecdsa; - KeyExchange == ecdhe_ecdsa; - KeyExchange == ecdh_rsa; - KeyExchange == ecdhe_rsa; - KeyExchange == ecdh_anon -> +is_acceptable_keyexchange(KeyExchange, _Algos) when KeyExchange == psk; + KeyExchange == null -> + true; +is_acceptable_keyexchange(KeyExchange, Algos) when KeyExchange == dh_anon; + KeyExchange == dhe_psk -> + proplists:get_bool(dh, Algos); +is_acceptable_keyexchange(dhe_dss, Algos) -> + proplists:get_bool(dh, Algos) andalso + proplists:get_bool(dss, Algos); +is_acceptable_keyexchange(dhe_rsa, Algos) -> + proplists:get_bool(dh, Algos) andalso + proplists:get_bool(rsa, Algos); +is_acceptable_keyexchange(ecdh_anon, Algos) -> proplists:get_bool(ecdh, Algos); -is_acceptable_keyexchange(_, _) -> - true. - +is_acceptable_keyexchange(KeyExchange, Algos) when KeyExchange == ecdh_ecdsa; + KeyExchange == ecdhe_ecdsa -> + proplists:get_bool(ecdh, Algos) andalso + proplists:get_bool(ecdsa, Algos); +is_acceptable_keyexchange(KeyExchange, Algos) when KeyExchange == ecdh_rsa; + KeyExchange == ecdhe_rsa -> + proplists:get_bool(ecdh, Algos) andalso + proplists:get_bool(rsa, Algos); +is_acceptable_keyexchange(KeyExchange, Algos) when KeyExchange == rsa; + KeyExchange == rsa_psk -> + proplists:get_bool(rsa, Algos); +is_acceptable_keyexchange(srp_anon, Algos) -> + proplists:get_bool(srp, Algos); +is_acceptable_keyexchange(srp_dss, Algos) -> + proplists:get_bool(srp, Algos) andalso + proplists:get_bool(dss, Algos); +is_acceptable_keyexchange(srp_rsa, Algos) -> + proplists:get_bool(srp, Algos) andalso + proplists:get_bool(rsa, Algos); +is_acceptable_keyexchange(_KeyExchange, _Algos) -> + false. + +is_acceptable_cipher(null, _Algos) -> + true; +is_acceptable_cipher(rc4_128, Algos) -> + proplists:get_bool(rc4, Algos); +is_acceptable_cipher(des_cbc, Algos) -> + proplists:get_bool(des_cbc, Algos); +is_acceptable_cipher('3des_ede_cbc', Algos) -> + proplists:get_bool(des3_cbc, Algos); +is_acceptable_cipher(aes_128_cbc, Algos) -> + proplists:get_bool(aes_cbc128, Algos); +is_acceptable_cipher(aes_256_cbc, Algos) -> + proplists:get_bool(aes_cbc256, Algos); is_acceptable_cipher(Cipher, Algos) when Cipher == aes_128_gcm; Cipher == aes_256_gcm -> proplists:get_bool(aes_gcm, Algos); -is_acceptable_cipher(Cipher, Algos) - when Cipher == chacha20_poly1305 -> - proplists:get_bool(Cipher, Algos); -is_acceptable_cipher(_, _) -> - true. +is_acceptable_cipher(Cipher, Algos) -> + proplists:get_bool(Cipher, Algos). is_acceptable_hash(null, _Algos) -> true; diff --git a/lib/ssl/src/ssl_connection.erl b/lib/ssl/src/ssl_connection.erl index 304d1706f5..08fca76123 100644 --- a/lib/ssl/src/ssl_connection.erl +++ b/lib/ssl/src/ssl_connection.erl @@ -1430,13 +1430,14 @@ key_exchange(#state{role = server, private_key = Key, key_algorithm = Algo} = St key_exchange(#state{role = server, key_algorithm = Algo, hashsign_algorithm = HashSignAlgo, private_key = PrivateKey, + session = #session{ecc = ECCCurve}, connection_states = ConnectionStates0, negotiated_version = Version } = State0, Connection) when Algo == ecdhe_ecdsa; Algo == ecdhe_rsa; Algo == ecdh_anon -> - ECDHKeys = public_key:generate_key(select_curve(State0)), + ECDHKeys = public_key:generate_key(ECCCurve), #{security_parameters := SecParams} = ssl_record:pending_connection_state(ConnectionStates0, read), #security_parameters{client_random = ClientRandom, @@ -1845,11 +1846,6 @@ cipher_role(server, Data, Session, #state{connection_states = ConnectionStates0 {Record, State} = prepare_connection(State1, Connection), Connection:next_event(connection, Record, State). -select_curve(#state{client_ecc = {[Curve|_], _}}) -> - {namedCurve, Curve}; -select_curve(_) -> - {namedCurve, ?secp256r1}. - is_anonymous(Algo) when Algo == dh_anon; Algo == ecdh_anon; Algo == psk; diff --git a/lib/ssl/src/ssl_connection.hrl b/lib/ssl/src/ssl_connection.hrl index f1e612a41b..fca3e11894 100644 --- a/lib/ssl/src/ssl_connection.hrl +++ b/lib/ssl/src/ssl_connection.hrl @@ -48,6 +48,7 @@ socket_options :: #socket_options{}, connection_states :: ssl_record:connection_states() | secret_printout(), protocol_buffers :: term() | secret_printout() , %% #protocol_buffers{} from tls_record.hrl or dtls_recor.hrl + unprocessed_handshake_events = 0 :: integer(), tls_handshake_history :: ssl_handshake:ssl_handshake_history() | secret_printout() | 'undefined', cert_db :: reference() | 'undefined', @@ -81,7 +82,6 @@ expecting_next_protocol_negotiation = false ::boolean(), expecting_finished = false ::boolean(), negotiated_protocol = undefined :: undefined | binary(), - client_ecc, % {Curves, PointFmt} tracker :: pid() | 'undefined', %% Tracker process for listen socket sni_hostname = undefined, downgrade, diff --git a/lib/ssl/src/tls_connection.erl b/lib/ssl/src/tls_connection.erl index 9b9031473a..932bb139c1 100644 --- a/lib/ssl/src/tls_connection.erl +++ b/lib/ssl/src/tls_connection.erl @@ -237,9 +237,7 @@ error(_, _, _) -> #state{}) -> gen_statem:state_function_result(). %%-------------------------------------------------------------------- -hello(internal, #client_hello{client_version = ClientVersion, - extensions = #hello_extensions{ec_point_formats = EcPointFormats, - elliptic_curves = EllipticCurves}} = Hello, +hello(internal, #client_hello{client_version = ClientVersion} = Hello, #state{connection_states = ConnectionStates0, port = Port, session = #session{own_certificate = Cert} = Session0, renegotiation = {Renegotiation, _}, @@ -265,7 +263,6 @@ hello(internal, #client_hello{client_version = ClientVersion, negotiated_version = Version, hashsign_algorithm = HashSign, session = Session, - client_ecc = {EllipticCurves, EcPointFormats}, negotiated_protocol = Protocol}) end; hello(internal, #server_hello{} = Hello, @@ -421,7 +418,7 @@ handle_common_event(internal, #ssl_tls{type = ?HANDSHAKE, fragment = Data}, connection -> ssl_connection:hibernate_after(StateName, State, Events); _ -> - {next_state, StateName, State, Events} + {next_state, StateName, State#state{unprocessed_handshake_events = unprocessed_events(Events)}, Events} end catch throw:#alert{} = Alert -> ssl_connection:handle_own_alert(Alert, Version, StateName, State0) @@ -537,7 +534,9 @@ next_tls_record(Data, #state{protocol_buffers = #protocol_buffers{tls_record_buf #alert{} = Alert -> Alert end. - +next_record(#state{unprocessed_handshake_events = N} = State) when N > 0 -> + {no_record, State#state{unprocessed_handshake_events = N-1}}; + next_record(#state{protocol_buffers = #protocol_buffers{tls_packets = [], tls_cipher_texts = [CT | Rest]} = Buffers, @@ -712,3 +711,10 @@ gen_info(Event, StateName, #state{negotiated_version = Version} = State) -> Version, StateName, State) end. +unprocessed_events(Events) -> + %% The first handshake event will be processed immediately + %% as it is entered first in the event queue and + %% when it is processed there will be length(Events)-1 + %% handshake events left to process before we should + %% process more TLS-records received on the socket. + erlang:length(Events)-1. diff --git a/lib/ssl/test/ssl_basic_SUITE.erl b/lib/ssl/test/ssl_basic_SUITE.erl index 57963fd44b..1be43c56c4 100644 --- a/lib/ssl/test/ssl_basic_SUITE.erl +++ b/lib/ssl/test/ssl_basic_SUITE.erl @@ -364,6 +364,16 @@ init_per_testcase(TestCase, Config) when TestCase == psk_cipher_suites; ct:timetrap({seconds, 60}), Config; +init_per_testcase(version_option, Config) -> + ssl_test_lib:ct_log_supported_protocol_versions(Config), + ct:timetrap({seconds, 10}), + Config; + +init_per_testcase(reuse_session, Config) -> + ssl_test_lib:ct_log_supported_protocol_versions(Config), + ct:timetrap({seconds, 10}), + Config; + init_per_testcase(rizzo, Config) -> ssl_test_lib:ct_log_supported_protocol_versions(Config), ct:timetrap({seconds, 40}), @@ -2171,7 +2181,7 @@ anonymous_cipher_suites()-> [{doc,"Test the anonymous ciphersuites"}]. anonymous_cipher_suites(Config) when is_list(Config) -> Version = ssl_test_lib:protocol_version(Config), - Ciphers = ssl_test_lib:anonymous_suites(), + Ciphers = ssl_test_lib:anonymous_suites(Version), run_suites(Ciphers, Version, Config, anonymous). %%------------------------------------------------------------------- psk_cipher_suites() -> @@ -2272,8 +2282,8 @@ default_reject_anonymous(Config) when is_list(Config) -> {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), ClientOpts = ssl_test_lib:ssl_options(client_opts, Config), ServerOpts = ssl_test_lib:ssl_options(server_opts, Config), - - [Cipher | _] = ssl_test_lib:anonymous_suites(), + Version = tls_record:highest_protocol_version(tls_record:supported_protocol_versions()), + [CipherSuite | _] = ssl_test_lib:anonymous_suites(Version), Server = ssl_test_lib:start_server_error([{node, ServerNode}, {port, 0}, {from, self()}, @@ -2283,7 +2293,7 @@ default_reject_anonymous(Config) when is_list(Config) -> {host, Hostname}, {from, self()}, {options, - [{ciphers,[Cipher]} | + [{ciphers,[CipherSuite]} | ClientOpts]}]), ssl_test_lib:check_result(Server, {error, {tls_alert, "insufficient security"}}, @@ -4437,7 +4447,7 @@ run_suites(Ciphers, Version, Config, Type) -> anonymous -> %% No certs in opts! {ssl_test_lib:ssl_options(client_verification_opts, Config), - ssl_test_lib:ssl_options(server_anon, Config)}; + [{reuseaddr, true}, {ciphers, ssl_test_lib:anonymous_suites(Version)}]}; psk -> {ssl_test_lib:ssl_options(client_psk, Config), ssl_test_lib:ssl_options(server_psk, Config)}; diff --git a/lib/ssl/test/ssl_crl_SUITE.erl b/lib/ssl/test/ssl_crl_SUITE.erl index bc2822f0c4..e293d183f7 100644 --- a/lib/ssl/test/ssl_crl_SUITE.erl +++ b/lib/ssl/test/ssl_crl_SUITE.erl @@ -99,32 +99,37 @@ init_per_group(check_peer, Config) -> init_per_group(check_best_effort, Config) -> [{crl_check, best_effort} | Config]; init_per_group(Group, Config0) -> - case is_idp(Group) of - true -> - [{idp_crl, true} | Config0]; - false -> - DataDir = proplists:get_value(data_dir, Config0), - CertDir = filename:join(proplists:get_value(priv_dir, Config0), Group), - {CertOpts, Config} = init_certs(CertDir, Group, Config0), - {ok, _} = make_certs:all(DataDir, CertDir, CertOpts), - case Group of - crl_hash_dir -> - CrlDir = filename:join(CertDir, "crls"), - %% Copy CRLs to their hashed filenames. - %% Find the hashes with 'openssl crl -noout -hash -in crl.pem'. - populate_crl_hash_dir(CertDir, CrlDir, - [{"erlangCA", "d6134ed3"}, - {"otpCA", "d4c8d7e5"}], - replace), - CrlCacheOpts = [{crl_cache, - {ssl_crl_hash_dir, - {internal, [{dir, CrlDir}]}}}]; - _ -> - CrlCacheOpts = [] - end, - [{crl_cache_opts, CrlCacheOpts}, - {cert_dir, CertDir}, - {idp_crl, false} | Config] + try + case is_idp(Group) of + true -> + [{idp_crl, true} | Config0]; + false -> + DataDir = proplists:get_value(data_dir, Config0), + CertDir = filename:join(proplists:get_value(priv_dir, Config0), Group), + {CertOpts, Config} = init_certs(CertDir, Group, Config0), + {ok, _} = make_certs:all(DataDir, CertDir, CertOpts), + CrlCacheOpts = case Group of + crl_hash_dir -> + CrlDir = filename:join(CertDir, "crls"), + %% Copy CRLs to their hashed filenames. + %% Find the hashes with 'openssl crl -noout -hash -in crl.pem'. + populate_crl_hash_dir(CertDir, CrlDir, + [{"erlangCA", "d6134ed3"}, + {"otpCA", "d4c8d7e5"}], + replace), + [{crl_cache, + {ssl_crl_hash_dir, + {internal, [{dir, CrlDir}]}}}]; + _ -> + [] + end, + [{crl_cache_opts, CrlCacheOpts}, + {cert_dir, CertDir}, + {idp_crl, false} | Config] + end + catch + _:_ -> + {skip, "Unable to create crls"} end. end_per_group(_GroupName, Config) -> @@ -187,7 +192,7 @@ crl_verify_valid(Config) when is_list(Config) -> {crl_cache, {ssl_crl_cache, {internal, [{http, 5000}]}}}, {verify, verify_peer}]; false -> - ?config(crl_cache_opts, Config) ++ + proplists:get_value(crl_cache_opts, Config) ++ [{cacertfile, filename:join([PrivDir, "server", "cacerts.pem"])}, {crl_check, Check}, {verify, verify_peer}] @@ -220,7 +225,7 @@ crl_verify_revoked(Config) when is_list(Config) -> {crl_check, Check}, {verify, verify_peer}]; false -> - ?config(crl_cache_opts, Config) ++ + proplists:get_value(crl_cache_opts, Config) ++ [{cacertfile, filename:join([PrivDir, "revoked", "cacerts.pem"])}, {crl_check, Check}, {verify, verify_peer}] @@ -279,8 +284,8 @@ crl_verify_no_crl(Config) when is_list(Config) -> crl_hash_dir_collision() -> [{doc,"Verify ssl_crl_hash_dir behaviour with hash collisions"}]. crl_hash_dir_collision(Config) when is_list(Config) -> - PrivDir = ?config(cert_dir, Config), - Check = ?config(crl_check, Config), + PrivDir = proplists:get_value(cert_dir, Config), + Check = proplists:get_value(crl_check, Config), %% Create two CAs whose names hash to the same value CA1 = "hash-collision-0000000000", @@ -307,13 +312,17 @@ crl_hash_dir_collision(Config) when is_list(Config) -> {CA2, "b68fc624"}], replace), - ClientOpts = ?config(crl_cache_opts, Config) ++ - [{cacertfile, filename:join([PrivDir, "erlangCA", "cacerts.pem"])}, + NewCA = new_ca(filename:join([PrivDir, "new_ca"]), + filename:join([PrivDir, "erlangCA", "cacerts.pem"]), + filename:join([PrivDir, "server", "cacerts.pem"])), + + ClientOpts = proplists:get_value(crl_cache_opts, Config) ++ + [{cacertfile, NewCA}, {crl_check, Check}, {verify, verify_peer}], - + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), - + %% Neither certificate revoked; both succeed. crl_verify_valid(Hostname, ServerNode, ServerOpts1, ClientNode, ClientOpts), crl_verify_valid(Hostname, ServerNode, ServerOpts2, ClientNode, ClientOpts), @@ -346,8 +355,8 @@ crl_hash_dir_collision(Config) when is_list(Config) -> crl_hash_dir_expired() -> [{doc,"Verify ssl_crl_hash_dir behaviour with expired CRLs"}]. crl_hash_dir_expired(Config) when is_list(Config) -> - PrivDir = ?config(cert_dir, Config), - Check = ?config(crl_check, Config), + PrivDir = proplists:get_value(cert_dir, Config), + Check = proplists:get_value(crl_check, Config), CA = "CRL-maybe-expired-CA", %% Add "issuing distribution point", to ensure that verification @@ -362,7 +371,7 @@ crl_hash_dir_expired(Config) when is_list(Config) -> ServerOpts = [{keyfile, filename:join([PrivDir, EndUser, "key.pem"])}, {certfile, filename:join([PrivDir, EndUser, "cert.pem"])}, {cacertfile, filename:join([PrivDir, EndUser, "cacerts.pem"])}], - ClientOpts = ?config(crl_cache_opts, Config) ++ + ClientOpts = proplists:get_value(crl_cache_opts, Config) ++ [{cacertfile, filename:join([PrivDir, CA, "cacerts.pem"])}, {crl_check, Check}, {verify, verify_peer}], @@ -492,3 +501,12 @@ find_free_name(CrlDir, Hash, N) -> false -> Name end. + +new_ca(FileName, CA1, CA2) -> + {ok, P1} = file:read_file(CA1), + E1 = public_key:pem_decode(P1), + {ok, P2} = file:read_file(CA2), + E2 = public_key:pem_decode(P2), + Pem = public_key:pem_encode(E1 ++E2), + file:write_file(FileName, Pem), + FileName. diff --git a/lib/ssl/test/ssl_packet_SUITE.erl b/lib/ssl/test/ssl_packet_SUITE.erl index 900b6de9ca..942e68967a 100644 --- a/lib/ssl/test/ssl_packet_SUITE.erl +++ b/lib/ssl/test/ssl_packet_SUITE.erl @@ -277,6 +277,7 @@ packet_raw_active_once_many_small() -> [{doc,"Test packet option {packet, raw} in active once mode."}]. packet_raw_active_once_many_small(Config) when is_list(Config) -> + ct:timetrap({seconds, ?BASE_TIMEOUT_SECONDS * ?MANY_SCALE}), Data = "Packet option is {packet, raw}", packet(Config, Data, send_raw, active_once_raw, ?MANY, raw, once). @@ -393,6 +394,7 @@ packet_0_active_some_big() -> [{doc,"Test packet option {packet, 0} in active mode."}]. packet_0_active_some_big(Config) when is_list(Config) -> + ct:timetrap({seconds, ?BASE_TIMEOUT_SECONDS * ?SOME_SCALE}), Data = lists:append(lists:duplicate(100, "1234567890")), packet(Config, Data, send, active_raw, ?SOME, 0, true). @@ -428,6 +430,7 @@ packet_2_active_some_big() -> [{doc,"Test packet option {packet, 2} in active mode"}]. packet_2_active_some_big(Config) when is_list(Config) -> + ct:timetrap({seconds, ?BASE_TIMEOUT_SECONDS * ?SOME_SCALE}), Data = lists:append(lists:duplicate(100, "1234567890")), packet(Config, Data, send, active_packet, ?SOME, 2, true). @@ -1901,6 +1904,31 @@ header_decode_two_bytes_one_sent_passive(Config) when is_list(Config) -> %%-------------------------------------------------------------------- %% Internal functions ------------------------------------------------ %%-------------------------------------------------------------------- + +packet(Config, Data, Send, Recv, Quantity, Packet, Active) when Packet == 0; + Packet == raw -> + ClientOpts = ssl_test_lib:ssl_options(client_opts, Config), + ServerOpts = ssl_test_lib:ssl_options(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, Send ,[Data, Quantity]}}, + {options, [{nodelay, true},{packet, Packet} | ServerOpts]}]), + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, Recv, [Data, Quantity]}}, + {options, [{active, Active}, {nodelay, true}, + {packet, Packet} | + ClientOpts]}]), + + ssl_test_lib:check_result(Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client); + packet(Config, Data, Send, Recv, Quantity, Packet, Active) -> ClientOpts = ssl_test_lib:ssl_options(client_opts, Config), ServerOpts = ssl_test_lib:ssl_options(server_opts, Config), @@ -1983,26 +2011,19 @@ active_once_raw(Socket, Data, N) -> active_once_raw(_, _, 0, _) -> ok; -active_once_raw(Socket, Data, N, Acc) -> - receive - {ssl, Socket, Byte} when length(Byte) == 1 -> - ssl:setopts(Socket, [{active, once}]), +active_once_raw(Socket, Data, N, Acc0) -> + case lists:prefix(Data, Acc0) of + true -> + DLen = length(Data), + Start = DLen + 1, + Len = length(Acc0) - DLen, + Acc = string:substr(Acc0, Start, Len), + active_once_raw(Socket, Data, N-1, Acc); + false -> receive - {ssl, Socket, _} -> - ssl:setopts(Socket, [{active, once}]), - active_once_raw(Socket, Data, N-1, []) - end; - {ssl, Socket, Data} -> - ssl:setopts(Socket, [{active, once}]), - active_once_raw(Socket, Data, N-1, []); - {ssl, Socket, Other} -> - case Acc ++ Other of - Data -> - ssl:setopts(Socket, [{active, once}]), - active_once_raw(Socket, Data, N-1, []); - NewAcc -> + {ssl, Socket, Info} -> ssl:setopts(Socket, [{active, once}]), - active_once_raw(Socket, Data, N, NewAcc) + active_once_raw(Socket, Data, N, Acc0 ++ Info) end end. diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl index 81f16030f7..cab22a60a8 100644 --- a/lib/ssl/test/ssl_test_lib.erl +++ b/lib/ssl/test/ssl_test_lib.erl @@ -398,7 +398,7 @@ cert_options(Config) -> {ssl_imp, new}]}, {server_opts, [{ssl_imp, new},{reuseaddr, true}, {cacertfile, ServerCaCertFile}, {certfile, ServerCertFile}, {keyfile, ServerKeyFile}]}, - {server_anon, [{ssl_imp, new},{reuseaddr, true}, {ciphers, anonymous_suites()}]}, + %%{server_anon, [{ssl_imp, new},{reuseaddr, true}, {ciphers, anonymous_suites()}]}, {client_psk, [{ssl_imp, new},{reuseaddr, true}, {psk_identity, "Test-User"}, {user_lookup_fun, {fun user_lookup/3, PskSharedSecret}}]}, @@ -908,19 +908,8 @@ string_regex_filter(Str, Search) when is_list(Str) -> string_regex_filter(_Str, _Search) -> false. -anonymous_suites() -> - Suites = - [{dh_anon, rc4_128, md5}, - {dh_anon, des_cbc, sha}, - {dh_anon, '3des_ede_cbc', sha}, - {dh_anon, aes_128_cbc, sha}, - {dh_anon, aes_256_cbc, sha}, - {dh_anon, aes_128_gcm, null, sha256}, - {dh_anon, aes_256_gcm, null, sha384}, - {ecdh_anon,rc4_128,sha}, - {ecdh_anon,'3des_ede_cbc',sha}, - {ecdh_anon,aes_128_cbc,sha}, - {ecdh_anon,aes_256_cbc,sha}], +anonymous_suites(Version) -> + Suites = ssl_cipher:anonymous_suites(Version), ssl_cipher:filter_suites(Suites). psk_suites() -> diff --git a/lib/ssl/vsn.mk b/lib/ssl/vsn.mk index 914eb43505..59732c7926 100644 --- a/lib/ssl/vsn.mk +++ b/lib/ssl/vsn.mk @@ -1 +1 @@ -SSL_VSN = 8.0.2 +SSL_VSN = 8.0.3 diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml index f0347703e7..554150380f 100644 --- a/lib/stdlib/doc/src/notes.xml +++ b/lib/stdlib/doc/src/notes.xml @@ -31,6 +31,66 @@ </header> <p>This document describes the changes made to the STDLIB application.</p> +<section><title>STDLIB 3.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + The <c>zip:unzip/1,2</c> and <c>zip:extract/1,2</c> + functions have been updated to handle directory traversal + exploits. Any element in the zip file that contains a + path that points to a directory above the top level + working directory, <c>cwd</c>, will instead be extracted + in <c>cwd</c>. An error message is printed for any such + element in the zip file during the unzip operation. The + <c>keep_old_files</c> option determines if a file will + overwrite a previous file with the same name within the + zip file.</p> + <p> + Own Id: OTP-13633</p> + </item> + <item> + <p> Correct the contracts for + <c>ets:match_object/1,3</c>. </p> + <p> + Own Id: OTP-13721 Aux Id: PR-1113 </p> + </item> + <item> + <p> + Errors in type specification and Emacs template + generation for <c>gen_statem:code_change/4</c> has been + fixed from bugs.erlang.org's Jira cases ERL-172 and + ERL-187.</p> + <p> + Own Id: OTP-13746 Aux Id: ERL-172, ERL-187 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + gen_statem has been changed to set the callback mode for + a server to what Module:callback_mode/0 returns. This + facilitates e.g code downgrade since the callback mode + now becomes a property of the currently active code, not + of the server process.</p> + <p> + Exception handling from Module:init/1 has also been + improved.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-13752</p> + </item> + </list> + </section> + +</section> + <section><title>STDLIB 3.0.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/stdlib/src/edlin_expand.erl b/lib/stdlib/src/edlin_expand.erl index ec64470461..5f821caef0 100644 --- a/lib/stdlib/src/edlin_expand.erl +++ b/lib/stdlib/src/edlin_expand.erl @@ -118,7 +118,7 @@ format_col([A|T], Width, Len, Acc0) -> {H1, _} -> H1; H2 -> H2 end, - Acc = [io_lib:format("~-*s", [Width,H]) | Acc0], + Acc = [io_lib:format("~-*ts", [Width,H]) | Acc0], format_col(T, Width, Len+Width, Acc); format_col([], _, _, Acc) -> lists:reverse(Acc, "\n"). diff --git a/lib/stdlib/src/stdlib.appup.src b/lib/stdlib/src/stdlib.appup.src index 9877662743..e917b7ea1f 100644 --- a/lib/stdlib/src/stdlib.appup.src +++ b/lib/stdlib/src/stdlib.appup.src @@ -18,9 +18,9 @@ %% %CopyrightEnd% {"%VSN%", %% Up from - max one major revision back - [{<<"3\\.0(\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* + [{<<"3\\.[0-1](\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* {<<"2\\.[5-8](\\.[0-9]+)*">>,[restart_new_emulator]}], % OTP-18.* %% Down to - max one major revision back - [{<<"3\\.0(\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* + [{<<"3\\.[0-1](\\.[0-9]+)*">>,[restart_new_emulator]}, % OTP-19.* {<<"2\\.[5-8](\\.[0-9]+)*">>,[restart_new_emulator]}] % OTP-18.* }. diff --git a/lib/stdlib/src/supervisor.erl b/lib/stdlib/src/supervisor.erl index c81e72689c..1cd65fbf18 100644 --- a/lib/stdlib/src/supervisor.erl +++ b/lib/stdlib/src/supervisor.erl @@ -1087,6 +1087,10 @@ wait_dynamic_children(#child{restart_type=RType} = Child, Pids, Sz, wait_dynamic_children(Child, ?SETS:del_element(Pid, Pids), Sz-1, TRef, EStack); + {'DOWN', _MRef, process, Pid, {shutdown, _}} -> + wait_dynamic_children(Child, ?SETS:del_element(Pid, Pids), Sz-1, + TRef, EStack); + {'DOWN', _MRef, process, Pid, normal} when RType =/= permanent -> wait_dynamic_children(Child, ?SETS:del_element(Pid, Pids), Sz-1, TRef, EStack); diff --git a/lib/stdlib/test/edlin_expand_SUITE.erl b/lib/stdlib/test/edlin_expand_SUITE.erl index ccffa2e244..718d91c6a3 100644 --- a/lib/stdlib/test/edlin_expand_SUITE.erl +++ b/lib/stdlib/test/edlin_expand_SUITE.erl @@ -21,7 +21,7 @@ -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2, init_per_group/2,end_per_group/2]). --export([normal/1, quoted_fun/1, quoted_module/1, quoted_both/1]). +-export([normal/1, quoted_fun/1, quoted_module/1, quoted_both/1, erl_1152/1]). -include_lib("common_test/include/ct.hrl"). @@ -36,7 +36,7 @@ suite() -> {timetrap,{minutes,1}}]. all() -> - [normal, quoted_fun, quoted_module, quoted_both]. + [normal, quoted_fun, quoted_module, quoted_both, erl_1152]. groups() -> []. @@ -149,5 +149,12 @@ quoted_both(Config) when is_list(Config) -> {yes,"weird-fun-name'()",[]} = do_expand("'ExpandTestCaps1':'#"), ok. +erl_1152(Config) when is_list(Config) -> + "\n"++"foo"++" "++[1089]++_ = do_format(["foo",[1089]]), + ok. + do_expand(String) -> edlin_expand:expand(lists:reverse(String)). + +do_format(StringList) -> + lists:flatten(edlin_expand:format_matches(StringList)). diff --git a/lib/syntax_tools/doc/src/notes.xml b/lib/syntax_tools/doc/src/notes.xml index ef207f7c3d..82c4484d96 100644 --- a/lib/syntax_tools/doc/src/notes.xml +++ b/lib/syntax_tools/doc/src/notes.xml @@ -32,6 +32,40 @@ <p>This document describes the changes made to the Syntax_Tools application.</p> +<section><title>Syntax_Tools 2.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> Fix a bug where <c>erl_tidy</c> crashed on the tilde + character when printing to standard output. </p> + <p> + Own Id: OTP-13725 Aux Id: ERL-151, PR-1071 </p> + </item> + <item> + <p><c>merl_transform</c> could get into an infinite loop + when syntactically incorrect text was passed to a + <c>merl:qquote/2,3</c> call.</p> + <p> + Own Id: OTP-13755</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Improve types and specs in OTP documentation generated + from Erlang source files. </p> + <p> + Own Id: OTP-13720 Aux Id: ERL-120 </p> + </item> + </list> + </section> + +</section> + <section><title>Syntax_Tools 2.0</title> <section><title>Improvements and New Features</title> diff --git a/lib/syntax_tools/vsn.mk b/lib/syntax_tools/vsn.mk index f09c2a01d0..c0ca083c38 100644 --- a/lib/syntax_tools/vsn.mk +++ b/lib/syntax_tools/vsn.mk @@ -1 +1 @@ -SYNTAX_TOOLS_VSN = 2.0 +SYNTAX_TOOLS_VSN = 2.1 diff --git a/lib/tools/doc/src/notes.xml b/lib/tools/doc/src/notes.xml index a0a817c0f2..2d9bee0dd1 100644 --- a/lib/tools/doc/src/notes.xml +++ b/lib/tools/doc/src/notes.xml @@ -31,6 +31,38 @@ </header> <p>This document describes the changes made to the Tools application.</p> +<section><title>Tools 2.8.6</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Errors in type specification and Emacs template + generation for <c>gen_statem:code_change/4</c> has been + fixed from bugs.erlang.org's Jira cases ERL-172 and + ERL-187.</p> + <p> + Own Id: OTP-13746 Aux Id: ERL-172, ERL-187 </p> + </item> + <item> + <p> + Fix gc_start/gc_end in fprof tags when parsing old trace + logs.</p> + <p> + Own Id: OTP-13778 Aux Id: PR-1136 </p> + </item> + <item> + <p><c>make</c> (tools) and <c>ct_make</c> (common_test) + would crash if an Erlang source file contained a + <c>-warning()</c> directive.</p> + <p> + Own Id: OTP-13855</p> + </item> + </list> + </section> + +</section> + <section><title>Tools 2.8.5</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/tools/emacs/Makefile b/lib/tools/emacs/Makefile index 585425e5f1..e1b195ef97 100644 --- a/lib/tools/emacs/Makefile +++ b/lib/tools/emacs/Makefile @@ -43,6 +43,7 @@ EMACS_FILES= \ erlang_appwiz \ erlang-start \ erlang-eunit \ + erlang-edoc \ erlang-flymake \ erlang diff --git a/lib/tools/emacs/erlang-edoc.el b/lib/tools/emacs/erlang-edoc.el new file mode 100644 index 0000000000..034036ad04 --- /dev/null +++ b/lib/tools/emacs/erlang-edoc.el @@ -0,0 +1,172 @@ +;;; erlang-edoc.el --- EDoc support for Erlang mode -*- lexical-binding: t; -*- + +;; %CopyrightBegin% +;; +;; Copyright Ericsson AB 1996-2016. All Rights Reserved. +;; +;; Licensed under the Apache License, Version 2.0 (the "License"); +;; you may not use this file except in compliance with the License. +;; You may obtain a copy of the License at +;; +;; http://www.apache.org/licenses/LICENSE-2.0 +;; +;; Unless required by applicable law or agreed to in writing, software +;; distributed under the License is distributed on an "AS IS" BASIS, +;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +;; See the License for the specific language governing permissions and +;; limitations under the License. +;; +;; %CopyrightEnd% + +;;; Commentary: + +;; Ref: http://www.erlang.org/doc/apps/edoc/users_guide.html +;; +;; To use: (add-hook 'erlang-mode-hook 'erlang-edoc-mode) + +;;; Code: + +(defcustom erlang-edoc-indent-level 2 + "Indentation level of xhtml in Erlang edoc." + :safe 'integerp + :group 'erlang) + +(defvar erlang-edoc-generic-tags + '("clear" "docfile" "end" "headerfile" "todo" "TODO" "type") + "Tags that can be used anywhere within a module.") + +(defvar erlang-edoc-overview-tags + '("author" "copyright" "reference" "see" "since" "title" "version") + "Tags that can be used in an overview file.") + +(defvar erlang-edoc-module-tags + '("author" "copyright" "deprecated" "doc" "hidden" "private" "reference" + "see" "since" "version") + "Tags that can be used before a module declaration.") + +(defvar erlang-edoc-function-tags + '("deprecated" "doc" "equiv" "hidden" "private" "see" "since" "spec" + "throws" "type") + "Tags that can be used before a function definition.") + +(defvar erlang-edoc-predefined-macros + '("date" "docRoot" "link" "module" "package" "section" "time" + "type" "version")) + +(defface erlang-edoc-tag '((t (:inherit font-lock-constant-face))) + "Face used to highlight edoc tags." + :group 'erlang) + +(defface erlang-edoc-macro '((t (:inherit font-lock-preprocessor-face))) + "Face used to highlight edoc macros." + :group 'erlang) + +(defface erlang-edoc-verbatim + '((t (:family "Monospace" :inherit font-lock-keyword-face))) + "Face used to highlight verbatim text." + :group 'erlang) + +(defface erlang-edoc-todo '((t (:inherit font-lock-warning-face))) + "Face used to highlight edoc macros." + :group 'erlang) + +(defface erlang-edoc-heading '((t (:inherit bold))) + "Face used to highlight edoc headings." + :group 'erlang) + +(defvar erlang-edoc-font-lock-keywords + '(("^%+\\s-*\\(@\\w+\\)\\_>" 1 'erlang-edoc-tag prepend) + ("^%+\\s-*" ("{\\(@\\w+\\)\\_>" nil nil (1 'erlang-edoc-macro prepend))) + ("^%+\\s-*" ("\\(?:@@\\)*\\(@[@{}]\\)" nil nil (1 'escape-glyph prepend))) + ("^%+\\s-*@\\(deprecated\\)\\_>" 1 font-lock-warning-face prepend) + ;; http://www.erlang.org/doc/apps/edoc/chapter.html#Wiki_notation + ("^%+\\s-*" ("[^`]`\\([^`]?\\|[^`].*?[^']\\)'" + (forward-char -1) nil (1 'erlang-edoc-verbatim prepend))) + ("^%+\\s-*" ("\\[\\(\\(?:https?\\|file\\|ftp\\)://[^][]+\\)\\]" + nil nil (1 'link prepend))) + ("^%+\\s-*\\(?:\\(?1:@todo\\|@TODO\\)\\_>\\|\\(?1:TODO\\):\\)" + 1 'erlang-edoc-todo prepend) + ("^%+\\s-*\\(\\(=\\{2,4\\}\\)[^=\n].*[^=\n]\\2\\)\\s-*$" + 1 'erlang-edoc-heading prepend))) + +(defun erlang-edoc-xml-context () + "Parse edoc x(ht)ml context at comment start of current line." + (eval-and-compile (require 'xmltok)) + (save-excursion + (beginning-of-line) + (when (looking-at "^%+\\s-*") + (let ((pt (match-end 0)) context) + (forward-comment (- (point))) + (while (< (point) pt) + (xmltok-forward) + (cond ((eq xmltok-type 'start-tag) + (push (cons xmltok-type xmltok-start) context)) + ((eq xmltok-type 'end-tag) + (pop context)))) + (goto-char pt) + (xmltok-forward) + (push (car (memq xmltok-type '(start-tag end-tag))) context) + context)))) + +(defun erlang-edoc-indent-line () + (let ((context (erlang-edoc-xml-context))) + (when context + (save-excursion + (beginning-of-line) + (re-search-forward "^%+\\s-*" (line-end-position)) + (when (or (car context) (cadr context)) + (let ((pad (when (cadr context) + (save-excursion + (goto-char (cdr (cadr context))) + (- (current-column) + (progn + (beginning-of-line) + (skip-chars-forward "%") + (current-column))))))) + (just-one-space (cond ((not pad) 1) + ((eq (car context) 'end-tag) pad) + (t (+ erlang-edoc-indent-level pad))))))) + (when (looking-back "^%*\\s-*" (line-beginning-position)) + (re-search-forward "\\=%*\\s-*"))))) + +(defun erlang-edoc-before-module-declaration-p () + (save-excursion + (beginning-of-line) + (forward-comment (point-max)) + (or (eobp) (re-search-forward "^-module\\s-*(" nil t)))) + +(defun erlang-edoc-completion-at-point () + (when (eq (syntax-ppss-context (syntax-ppss)) 'comment) + (save-excursion + (skip-syntax-backward "w_") + (when (= (preceding-char) ?@) + (let* ((is-tag (looking-back "^%+\\s-*@" (line-beginning-position))) + (beg (point)) + (end (progn (skip-syntax-forward "w_") (point))) + (table (cond + ((not is-tag) + erlang-edoc-predefined-macros) + ((erlang-edoc-before-module-declaration-p) + (append erlang-edoc-module-tags + erlang-edoc-generic-tags)) + (t (append erlang-edoc-function-tags + erlang-edoc-generic-tags))))) + (list beg end table)))))) + +;;;###autoload +(define-minor-mode erlang-edoc-mode nil + :lighter " EDoc" + (cond (erlang-edoc-mode + (add-hook 'erlang-indent-line-hook #'erlang-edoc-indent-line nil t) + (font-lock-add-keywords nil erlang-edoc-font-lock-keywords t) + (add-hook 'completion-at-point-functions + #'erlang-edoc-completion-at-point nil t)) + (t + (remove-hook 'erlang-indent-line-hook #'erlang-edoc-indent-line t) + (font-lock-remove-keywords nil erlang-edoc-font-lock-keywords) + (remove-hook 'completion-at-point-functions + #'erlang-edoc-completion-at-point t))) + (jit-lock-refontify)) + +(provide 'erlang-edoc) +;;; erlang-edoc.el ends here diff --git a/lib/tools/emacs/erlang-start.el b/lib/tools/emacs/erlang-start.el index 76e0575e68..f9a6d24b2c 100644 --- a/lib/tools/emacs/erlang-start.el +++ b/lib/tools/emacs/erlang-start.el @@ -78,6 +78,7 @@ (autoload 'erlang-find-tag-other-window "erlang" "Like `find-tag-other-window'. Capable of retreiving Erlang modules.") +(autoload 'erlang-edoc-mode "erlang-edoc" "Toggle Erlang-Edoc mode on or off." t) ;; ;; Associate files extensions ".erl" and ".hrl" with Erlang mode. diff --git a/lib/tools/emacs/erlang.el b/lib/tools/emacs/erlang.el index 73c6b8d768..67e88bac30 100644 --- a/lib/tools/emacs/erlang.el +++ b/lib/tools/emacs/erlang.el @@ -78,6 +78,10 @@ ;; Variables: +(defgroup erlang nil + "The Erlang programming language." + :group 'languages) + (defconst erlang-version "2.7" "The version number of Erlang mode.") @@ -1512,8 +1516,6 @@ Other commands: (setq paragraph-separate paragraph-start) (make-local-variable 'paragraph-ignore-fill-prefix) (setq paragraph-ignore-fill-prefix t) - (make-local-variable 'require-final-newline) - (setq require-final-newline t) (make-local-variable 'defun-prompt-regexp) (setq defun-prompt-regexp erlang-defun-prompt-regexp) (make-local-variable 'comment-start) @@ -2446,6 +2448,7 @@ Return the amount the indentation changed by." ;; after the indentation. Else stay at same point in text. (if (> (- (point-max) pos) (point)) (goto-char (- (point-max) pos))) + (run-hooks 'erlang-indent-line-hook) shift-amt)) diff --git a/lib/wx/api_gen/wx_doxygen.conf b/lib/wx/api_gen/wx_doxygen.conf index f4d3c99ec0..a96db00254 100644 --- a/lib/wx/api_gen/wx_doxygen.conf +++ b/lib/wx/api_gen/wx_doxygen.conf @@ -252,7 +252,7 @@ PREDEFINED = \ wxUSE_POPUPWIN=1 \ wxUSE_SYSTEM_OPTIONS=1 \ wxUSE_INTL=1 \ - wxABI_VERSION=20809 \ + wxABI_VERSION=20812 \ __WXGTK24__=1 \ __WXGTK20__=1 \ __WXGTK__=1 \ diff --git a/lib/wx/api_gen/wx_gen.erl b/lib/wx/api_gen/wx_gen.erl index cfae2197f8..6979a600f3 100644 --- a/lib/wx/api_gen/wx_gen.erl +++ b/lib/wx/api_gen/wx_gen.erl @@ -271,33 +271,31 @@ parse_attr1([{{attr,_}, #xmlElement{content=C, attributes=Attrs}}|R], AttrList0, #param{where=nowhere} -> parse_attr1(R,AttrList0,Opts,Res); _ -> - case keysearch(prot, #xmlAttribute.name, Attrs) of - {value, #xmlAttribute{value = "public"}} -> - {Acc,AttrList} = attr_acc(Param0, AttrList0), - parse_attr1(R,AttrList,Opts, - [Param0#param{in=false,prot=public,acc=Acc}|Res]); - {value, #xmlAttribute{value = "protected"}} -> - {Acc,AttrList} = attr_acc(Param0, AttrList0), - parse_attr1(R,AttrList,Opts, - [Param0#param{in=false,prot=protected,acc=Acc}|Res]); - {value, #xmlAttribute{value = "private"}} -> - {Acc,AttrList} = attr_acc(Param0, AttrList0), - parse_attr1(R,AttrList,Opts, - [Param0#param{in=false,prot=private,acc=Acc}|Res]) - end + {value, #xmlAttribute{value=Type}} = + keysearch(prot, #xmlAttribute.name, Attrs), + {Param,AttrList} = attr_acc(Param0, list_to_atom(Type), AttrList0), + parse_attr1(R,AttrList,Opts,[Param|Res]) end; parse_attr1([{_Id,_}|R],AttrList,Info, Res) -> parse_attr1(R,AttrList,Info, Res); parse_attr1([],Left,_, Res) -> {reverse(Res), Left}. -attr_acc(#param{name=N}, List) -> +attr_acc(#param{name=N}=P, Type, List) -> Name = list_to_atom(N), case get_value(Name, List, undefined) of - undefined -> {undefined, List}; - Val -> {Val, lists:keydelete(Name,1,List)} + undefined -> {P#param{in=false,prot=Type,acc=undefined}, List}; + Val when is_list(Val), is_integer(hd(Val)) -> + %% Function String + {P#param{in=false,prot=Type,acc=Val}, lists:keydelete(Name,1,List)}; + OptList when is_list(OptList) -> + Param = foldl(fun handle_param_opt/2,P,OptList), + {Param#param{in=false,prot=Type,acc=undefined}, + lists:keydelete(Name,1,List)}; + Val -> + {P#param{in=false,prot=Type,acc=Val}, lists:keydelete(Name,1,List)} end. - + load_members(FileName, Class, Defs, Tab, Type,Opts) -> File = filename:join(["wx_xml",FileName ++ ".xml"]), put({loaded, FileName}, true), diff --git a/lib/wx/api_gen/wx_gen_cpp.erl b/lib/wx/api_gen/wx_gen_cpp.erl index 84d3990786..0a0b1f9209 100644 --- a/lib/wx/api_gen/wx_gen_cpp.erl +++ b/lib/wx/api_gen/wx_gen_cpp.erl @@ -1079,6 +1079,13 @@ build_ret(Name,_,#type{base=string,single=true}) -> w(" rt.add(~s);~n",[Name]); build_ret(Name,_,#type{name="wxArrayString", single=array}) -> w(" rt.add(~s);~n", [Name]); +build_ret(Name,_,#type{name="wxString", single={list,Variable}}) -> + Obj = case Name of + "ev->" ++ _ -> "ev"; + _ -> "This" + end, + w(" wxArrayString tmpArrayStr(~s->~s, ~s);~n", [Obj,Variable,Name]), + w(" rt.add(tmpArrayStr);~n", []); build_ret(Name,In,T) -> ?error({nyi, Name,In, T}). diff --git a/lib/wx/api_gen/wx_gen_erl.erl b/lib/wx/api_gen/wx_gen_erl.erl index 794de25002..e272c08d90 100644 --- a/lib/wx/api_gen/wx_gen_erl.erl +++ b/lib/wx/api_gen/wx_gen_erl.erl @@ -649,7 +649,7 @@ guard_test(#param{def=Def}) when Def =/= none -> skip; guard_test(#param{where=c}) -> skip; guard_test(#param{in=In}) when In == false -> skip; guard_test(#param{name=N, type=#type{base=string}}) -> - "is_list(" ++ erl_arg_name(N) ++")"; + "?is_chardata(" ++ erl_arg_name(N) ++")"; guard_test(#param{name=N, type=#type{name="wxArtClient"}}) -> "is_list(" ++ erl_arg_name(N) ++")"; guard_test(#param{name=N, type=#type{name="wxArrayString"}}) -> @@ -801,8 +801,13 @@ doc_arg_type(_, _) -> skip. doc_arg_type2(T) -> doc_arg_type2(T, in). -doc_arg_type2(T=#type{single=Single}, Out) when Single =:= array; Single =:= list -> - "[" ++ doc_arg_type3(T, Out) ++ "]"; +doc_arg_type2(T=#type{single=Single}, Out) -> + case Single of + array -> "[" ++ doc_arg_type3(T, Out) ++ "]"; + list -> "[" ++ doc_arg_type3(T, Out) ++ "]"; + {list, _} -> "[" ++ doc_arg_type3(T, Out) ++ "]"; + true -> doc_arg_type3(T, Out) + end; doc_arg_type2(T, Out) -> doc_arg_type3(T, Out). @@ -1207,7 +1212,7 @@ gen_event_recs() -> w("-type wx() :: #wx{}. %% wx event record ~n",[]), w("%% Here comes the definitions of all event records.~n" "%% they contain the event type and possible some extra information.~n~n",[]), - Events = [build_event_rec(C) || {_,C=#class{event=Evs}} <- get(), Evs =/= false], + Events = [build_event_rec(C) || {_,C=#class{event=Evs}} <- lists:sort(get()), Evs =/= false], EventSubTypes = [Type || {_Rec, Type} <- Events], EventRecs = [Rec || {Rec, _Type} <- Events], w("-type event() :: ~s.~n", diff --git a/lib/wx/api_gen/wxapi.conf b/lib/wx/api_gen/wxapi.conf index 786e536f93..4300ffe734 100644 --- a/lib/wx/api_gen/wxapi.conf +++ b/lib/wx/api_gen/wxapi.conf @@ -104,7 +104,8 @@ 'Center','CenterOnParent','Centre','CentreOnParent','ClearBackground', {'ClientToScreen',[{"x",both},{"y",both}]}, 'Close', 'ConvertDialogToPixels','ConvertPixelsToDialog','Destroy','DestroyChildren', - 'Disable',%%'DoGetBestSize','DoUpdateWindowUI', 'DragAcceptFiles', + 'Disable',%%'DoGetBestSize','DoUpdateWindowUI', + {'DragAcceptFiles', [{test_if, "wxCHECK_VERSION(2,8,10)"}]}, 'Enable', 'FindFocus','FindWindow','FindWindowById','FindWindowByName','FindWindowByLabel', 'Fit','FitInside','Freeze', 'GetAcceleratorTable', % 'GetAccessible', @@ -1490,8 +1491,6 @@ ['ButtonDown','ButtonIsDown','ButtonUp','GetButtonChange','GetButtonState', 'GetJoystick','GetPosition','GetZPosition','IsButton','IsMove','IsZMove']}. -%% {class, wxDropFilesEvent, wxEvent, [{event,[wxEVT_DROP_FILES]}],[]}. %FIXME - {enum, wxUpdateUIMode, "wxUPDATE_UI_"}. {class, wxUpdateUIEvent, wxCommandEvent, @@ -1988,3 +1987,10 @@ {class, wxDCOverlay, root, [], ['wxDCOverlay', '~wxDCOverlay', 'Clear']}. + +{class, wxDropFilesEvent, wxEvent, + [{acc, [{m_files, [{single, {list, 'm_noFiles'}}]}]}, + {event,[wxEVT_DROP_FILES]}], + ['GetPosition', 'GetNumberOfFiles', + {'GetFiles', [{return, [{single, {list, 'm_noFiles'}}]}]} + ]}. diff --git a/lib/wx/c_src/gen/wxe_events.cpp b/lib/wx/c_src/gen/wxe_events.cpp index 4affe2ba53..b6d3c2db18 100644 --- a/lib/wx/c_src/gen/wxe_events.cpp +++ b/lib/wx/c_src/gen/wxe_events.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2015. All Rights Reserved. + * Copyright Ericsson AB 2008-2016. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -306,6 +306,7 @@ void initEventTable() {wxEVT_ACTIVATE_APP, 232, "activate_app"}, {wxEVT_HIBERNATE, 232, "hibernate"}, {wxEVT_MOUSE_CAPTURE_LOST, 235, "mouse_capture_lost"}, + {wxEVT_DROP_FILES, 238, "drop_files"}, {-1, 0, } }; for(int i=0; event_types[i].ev_type != -1; i++) { @@ -881,6 +882,18 @@ case 235: {// wxMouseCaptureLostEvent rt.addTupleCount(2); break; } +case 238: {// wxDropFilesEvent + wxDropFilesEvent * ev = (wxDropFilesEvent *) event; + evClass = (char*)"wxDropFilesEvent"; + rt.addAtom((char*)"wxDropFiles"); + rt.addAtom(Etype->eName); + rt.addInt(ev->m_noFiles); + rt.add(ev->m_pos); + wxArrayString tmpArrayStr(ev->m_noFiles, ev->m_files); + rt.add(tmpArrayStr); + rt.addTupleCount(5); + break; +} } rt.addTupleCount(5); diff --git a/lib/wx/c_src/gen/wxe_funcs.cpp b/lib/wx/c_src/gen/wxe_funcs.cpp index 4243d8a35a..927528fb32 100644 --- a/lib/wx/c_src/gen/wxe_funcs.cpp +++ b/lib/wx/c_src/gen/wxe_funcs.cpp @@ -315,6 +315,15 @@ case wxWindow_Disable: { // wxWindow::Disable rt.addBool(Result); break; } +#if wxCHECK_VERSION(2,8,10) +case wxWindow_DragAcceptFiles: { // wxWindow::DragAcceptFiles + wxWindow *This = (wxWindow *) getPtr(bp,memenv); bp += 4; + bool * accept = (bool *) bp; bp += 4; + if(!This) throw wxe_badarg(0); + This->DragAcceptFiles(*accept); + break; +} +#endif case wxWindow_Enable: { // wxWindow::Enable bool enable=true; wxWindow *This = (wxWindow *) getPtr(bp,memenv); bp += 4; @@ -32049,6 +32058,28 @@ case wxDCOverlay_Clear: { // wxDCOverlay::Clear This->Clear(); break; } +case wxDropFilesEvent_GetPosition: { // wxDropFilesEvent::GetPosition + wxDropFilesEvent *This = (wxDropFilesEvent *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + wxPoint Result = This->GetPosition(); + rt.add(Result); + break; +} +case wxDropFilesEvent_GetNumberOfFiles: { // wxDropFilesEvent::GetNumberOfFiles + wxDropFilesEvent *This = (wxDropFilesEvent *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + int Result = This->GetNumberOfFiles(); + rt.addInt(Result); + break; +} +case wxDropFilesEvent_GetFiles: { // wxDropFilesEvent::GetFiles + wxDropFilesEvent *This = (wxDropFilesEvent *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + wxString * Result = (wxString*)This->GetFiles(); + wxArrayString tmpArrayStr(This->m_noFiles, Result); + rt.add(tmpArrayStr); + break; +} default: { wxeReturn error = wxeReturn(WXE_DRV_PORT, Ecmd.caller, false); error.addAtom("_wxe_error_"); error.addInt((int) op); diff --git a/lib/wx/c_src/gen/wxe_macros.h b/lib/wx/c_src/gen/wxe_macros.h index 82b39b49cd..61bf15eb05 100644 --- a/lib/wx/c_src/gen/wxe_macros.h +++ b/lib/wx/c_src/gen/wxe_macros.h @@ -94,3332 +94,3336 @@ #define wxWindow_Destroy 123 #define wxWindow_DestroyChildren 124 #define wxWindow_Disable 125 -#define wxWindow_Enable 126 -#define wxWindow_FindFocus 127 -#define wxWindow_FindWindow_1_0 128 -#define wxWindow_FindWindow_1_1 129 -#define wxWindow_FindWindowById 130 -#define wxWindow_FindWindowByName 131 -#define wxWindow_FindWindowByLabel 132 -#define wxWindow_Fit 133 -#define wxWindow_FitInside 134 -#define wxWindow_Freeze 135 -#define wxWindow_GetAcceleratorTable 136 -#define wxWindow_GetBackgroundColour 137 -#define wxWindow_GetBackgroundStyle 138 -#define wxWindow_GetBestSize 139 -#define wxWindow_GetCaret 141 -#define wxWindow_GetCapture 142 -#define wxWindow_GetCharHeight 143 -#define wxWindow_GetCharWidth 144 -#define wxWindow_GetChildren 145 -#define wxWindow_GetClientSize 148 -#define wxWindow_GetContainingSizer 149 -#define wxWindow_GetCursor 150 -#define wxWindow_GetDropTarget 151 -#define wxWindow_GetEventHandler 152 -#define wxWindow_GetExtraStyle 153 -#define wxWindow_GetFont 154 -#define wxWindow_GetForegroundColour 155 -#define wxWindow_GetGrandParent 156 -#define wxWindow_GetHandle 157 -#define wxWindow_GetHelpText 158 -#define wxWindow_GetId 159 -#define wxWindow_GetLabel 160 -#define wxWindow_GetMaxSize 161 -#define wxWindow_GetMinSize 162 -#define wxWindow_GetName 163 -#define wxWindow_GetParent 164 -#define wxWindow_GetPosition 166 -#define wxWindow_GetRect 167 -#define wxWindow_GetScreenPosition 169 -#define wxWindow_GetScreenRect 170 -#define wxWindow_GetScrollPos 171 -#define wxWindow_GetScrollRange 172 -#define wxWindow_GetScrollThumb 173 -#define wxWindow_GetSize 175 -#define wxWindow_GetSizer 176 -#define wxWindow_GetTextExtent 177 -#define wxWindow_GetToolTip 178 -#define wxWindow_GetUpdateRegion 179 -#define wxWindow_GetVirtualSize 181 -#define wxWindow_GetWindowStyleFlag 183 -#define wxWindow_GetWindowVariant 184 -#define wxWindow_HasCapture 185 -#define wxWindow_HasScrollbar 186 -#define wxWindow_HasTransparentBackground 187 -#define wxWindow_Hide 188 -#define wxWindow_InheritAttributes 189 -#define wxWindow_InitDialog 190 -#define wxWindow_InvalidateBestSize 191 -#define wxWindow_IsEnabled 192 -#define wxWindow_IsExposed_2 193 -#define wxWindow_IsExposed_4 194 -#define wxWindow_IsExposed_1_0 195 -#define wxWindow_IsExposed_1_1 196 -#define wxWindow_IsRetained 197 -#define wxWindow_IsShown 198 -#define wxWindow_IsTopLevel 199 -#define wxWindow_Layout 200 -#define wxWindow_LineDown 201 -#define wxWindow_LineUp 202 -#define wxWindow_Lower 203 -#define wxWindow_MakeModal 204 -#define wxWindow_Move_3 205 -#define wxWindow_Move_2 206 -#define wxWindow_MoveAfterInTabOrder 207 -#define wxWindow_MoveBeforeInTabOrder 208 -#define wxWindow_Navigate 209 -#define wxWindow_PageDown 210 -#define wxWindow_PageUp 211 -#define wxWindow_PopEventHandler 212 -#define wxWindow_PopupMenu_2 213 -#define wxWindow_PopupMenu_3 214 -#define wxWindow_Raise 215 -#define wxWindow_Refresh 216 -#define wxWindow_RefreshRect 217 -#define wxWindow_ReleaseMouse 218 -#define wxWindow_RemoveChild 219 -#define wxWindow_Reparent 220 -#define wxWindow_ScreenToClient_2 221 -#define wxWindow_ScreenToClient_1 222 -#define wxWindow_ScrollLines 224 -#define wxWindow_ScrollPages 226 -#define wxWindow_ScrollWindow 227 -#define wxWindow_SetAcceleratorTable 228 -#define wxWindow_SetAutoLayout 229 -#define wxWindow_SetBackgroundColour 230 -#define wxWindow_SetBackgroundStyle 231 -#define wxWindow_SetCaret 232 -#define wxWindow_SetClientSize_2 233 -#define wxWindow_SetClientSize_1_0 234 -#define wxWindow_SetClientSize_1_1 235 -#define wxWindow_SetContainingSizer 236 -#define wxWindow_SetCursor 237 -#define wxWindow_SetMaxSize 238 -#define wxWindow_SetMinSize 239 -#define wxWindow_SetOwnBackgroundColour 240 -#define wxWindow_SetOwnFont 241 -#define wxWindow_SetOwnForegroundColour 242 -#define wxWindow_SetDropTarget 243 -#define wxWindow_SetExtraStyle 244 -#define wxWindow_SetFocus 245 -#define wxWindow_SetFocusFromKbd 246 -#define wxWindow_SetFont 247 -#define wxWindow_SetForegroundColour 248 -#define wxWindow_SetHelpText 249 -#define wxWindow_SetId 250 -#define wxWindow_SetLabel 252 -#define wxWindow_SetName 253 -#define wxWindow_SetPalette 254 -#define wxWindow_SetScrollbar 255 -#define wxWindow_SetScrollPos 256 -#define wxWindow_SetSize_5 257 -#define wxWindow_SetSize_2_0 258 -#define wxWindow_SetSize_1 259 -#define wxWindow_SetSize_2_1 260 -#define wxWindow_SetSizeHints_3 261 -#define wxWindow_SetSizeHints_2 262 -#define wxWindow_SetSizer 263 -#define wxWindow_SetSizerAndFit 264 -#define wxWindow_SetThemeEnabled 265 -#define wxWindow_SetToolTip_1_0 266 -#define wxWindow_SetToolTip_1_1 267 -#define wxWindow_SetVirtualSize_1 268 -#define wxWindow_SetVirtualSize_2 269 -#define wxWindow_SetVirtualSizeHints_3 270 -#define wxWindow_SetVirtualSizeHints_2 271 -#define wxWindow_SetWindowStyle 272 -#define wxWindow_SetWindowStyleFlag 273 -#define wxWindow_SetWindowVariant 274 -#define wxWindow_ShouldInheritColours 275 -#define wxWindow_Show 276 -#define wxWindow_Thaw 277 -#define wxWindow_TransferDataFromWindow 278 -#define wxWindow_TransferDataToWindow 279 -#define wxWindow_Update 280 -#define wxWindow_UpdateWindowUI 281 -#define wxWindow_Validate 282 -#define wxWindow_WarpPointer 283 -#define wxWindow_SetTransparent 284 -#define wxWindow_CanSetTransparent 285 -#define wxWindow_IsDoubleBuffered 286 -#define wxWindow_SetDoubleBuffered 287 -#define wxTopLevelWindow_GetIcon 288 -#define wxTopLevelWindow_GetIcons 289 -#define wxTopLevelWindow_GetTitle 290 -#define wxTopLevelWindow_IsActive 291 -#define wxTopLevelWindow_Iconize 292 -#define wxTopLevelWindow_IsFullScreen 293 -#define wxTopLevelWindow_IsIconized 294 -#define wxTopLevelWindow_IsMaximized 295 -#define wxTopLevelWindow_Maximize 296 -#define wxTopLevelWindow_RequestUserAttention 297 -#define wxTopLevelWindow_SetIcon 298 -#define wxTopLevelWindow_SetIcons 299 -#define wxTopLevelWindow_CenterOnScreen 300 -#define wxTopLevelWindow_CentreOnScreen 301 -#define wxTopLevelWindow_SetShape 303 -#define wxTopLevelWindow_SetTitle 304 -#define wxTopLevelWindow_ShowFullScreen 305 -#define wxFrame_new_4 307 -#define wxFrame_new_0 308 -#define wxFrame_destruct 310 -#define wxFrame_Create 311 -#define wxFrame_CreateStatusBar 312 -#define wxFrame_CreateToolBar 313 -#define wxFrame_GetClientAreaOrigin 314 -#define wxFrame_GetMenuBar 315 -#define wxFrame_GetStatusBar 316 -#define wxFrame_GetStatusBarPane 317 -#define wxFrame_GetToolBar 318 -#define wxFrame_ProcessCommand 319 -#define wxFrame_SendSizeEvent 320 -#define wxFrame_SetMenuBar 321 -#define wxFrame_SetStatusBar 322 -#define wxFrame_SetStatusBarPane 323 -#define wxFrame_SetStatusText 324 -#define wxFrame_SetStatusWidths 325 -#define wxFrame_SetToolBar 326 -#define wxMiniFrame_new_0 327 -#define wxMiniFrame_new_4 328 -#define wxMiniFrame_Create 329 -#define wxMiniFrame_destroy 330 -#define wxSplashScreen_new_0 331 -#define wxSplashScreen_new_6 332 -#define wxSplashScreen_destruct 333 -#define wxSplashScreen_GetSplashStyle 334 -#define wxSplashScreen_GetTimeout 335 -#define wxPanel_new_0 336 -#define wxPanel_new_6 337 -#define wxPanel_new_2 338 -#define wxPanel_destruct 339 -#define wxPanel_InitDialog 340 -#define wxPanel_SetFocusIgnoringChildren 341 -#define wxScrolledWindow_new_0 342 -#define wxScrolledWindow_new_2 343 -#define wxScrolledWindow_destruct 344 -#define wxScrolledWindow_CalcScrolledPosition_4 345 -#define wxScrolledWindow_CalcScrolledPosition_1 346 -#define wxScrolledWindow_CalcUnscrolledPosition_4 347 -#define wxScrolledWindow_CalcUnscrolledPosition_1 348 -#define wxScrolledWindow_EnableScrolling 349 -#define wxScrolledWindow_GetScrollPixelsPerUnit 350 -#define wxScrolledWindow_GetViewStart 351 -#define wxScrolledWindow_DoPrepareDC 352 -#define wxScrolledWindow_PrepareDC 353 -#define wxScrolledWindow_Scroll 354 -#define wxScrolledWindow_SetScrollbars 355 -#define wxScrolledWindow_SetScrollRate 356 -#define wxScrolledWindow_SetTargetWindow 357 -#define wxSashWindow_new_0 358 -#define wxSashWindow_new_2 359 -#define wxSashWindow_destruct 360 -#define wxSashWindow_GetSashVisible 361 -#define wxSashWindow_GetMaximumSizeX 362 -#define wxSashWindow_GetMaximumSizeY 363 -#define wxSashWindow_GetMinimumSizeX 364 -#define wxSashWindow_GetMinimumSizeY 365 -#define wxSashWindow_SetMaximumSizeX 366 -#define wxSashWindow_SetMaximumSizeY 367 -#define wxSashWindow_SetMinimumSizeX 368 -#define wxSashWindow_SetMinimumSizeY 369 -#define wxSashWindow_SetSashVisible 370 -#define wxSashLayoutWindow_new_0 371 -#define wxSashLayoutWindow_new_2 372 -#define wxSashLayoutWindow_Create 373 -#define wxSashLayoutWindow_GetAlignment 374 -#define wxSashLayoutWindow_GetOrientation 375 -#define wxSashLayoutWindow_SetAlignment 376 -#define wxSashLayoutWindow_SetDefaultSize 377 -#define wxSashLayoutWindow_SetOrientation 378 -#define wxSashLayoutWindow_destroy 379 -#define wxGrid_new_0 380 -#define wxGrid_new_3 381 -#define wxGrid_new_4 382 -#define wxGrid_destruct 383 -#define wxGrid_AppendCols 384 -#define wxGrid_AppendRows 385 -#define wxGrid_AutoSize 386 -#define wxGrid_AutoSizeColumn 387 -#define wxGrid_AutoSizeColumns 388 -#define wxGrid_AutoSizeRow 389 -#define wxGrid_AutoSizeRows 390 -#define wxGrid_BeginBatch 391 -#define wxGrid_BlockToDeviceRect 392 -#define wxGrid_CanDragColSize 393 -#define wxGrid_CanDragRowSize 394 -#define wxGrid_CanDragGridSize 395 -#define wxGrid_CanEnableCellControl 396 -#define wxGrid_CellToRect_2 397 -#define wxGrid_CellToRect_1 398 -#define wxGrid_ClearGrid 399 -#define wxGrid_ClearSelection 400 -#define wxGrid_CreateGrid 401 -#define wxGrid_DeleteCols 402 -#define wxGrid_DeleteRows 403 -#define wxGrid_DisableCellEditControl 404 -#define wxGrid_DisableDragColSize 405 -#define wxGrid_DisableDragGridSize 406 -#define wxGrid_DisableDragRowSize 407 -#define wxGrid_EnableCellEditControl 408 -#define wxGrid_EnableDragColSize 409 -#define wxGrid_EnableDragGridSize 410 -#define wxGrid_EnableDragRowSize 411 -#define wxGrid_EnableEditing 412 -#define wxGrid_EnableGridLines 413 -#define wxGrid_EndBatch 414 -#define wxGrid_Fit 415 -#define wxGrid_ForceRefresh 416 -#define wxGrid_GetBatchCount 417 -#define wxGrid_GetCellAlignment 418 -#define wxGrid_GetCellBackgroundColour 419 -#define wxGrid_GetCellEditor 420 -#define wxGrid_GetCellFont 421 -#define wxGrid_GetCellRenderer 422 -#define wxGrid_GetCellTextColour 423 -#define wxGrid_GetCellValue_2 424 -#define wxGrid_GetCellValue_1 425 -#define wxGrid_GetColLabelAlignment 426 -#define wxGrid_GetColLabelSize 427 -#define wxGrid_GetColLabelValue 428 -#define wxGrid_GetColMinimalAcceptableWidth 429 -#define wxGrid_GetDefaultCellAlignment 430 -#define wxGrid_GetDefaultCellBackgroundColour 431 -#define wxGrid_GetDefaultCellFont 432 -#define wxGrid_GetDefaultCellTextColour 433 -#define wxGrid_GetDefaultColLabelSize 434 -#define wxGrid_GetDefaultColSize 435 -#define wxGrid_GetDefaultEditor 436 -#define wxGrid_GetDefaultEditorForCell_2 437 -#define wxGrid_GetDefaultEditorForCell_1 438 -#define wxGrid_GetDefaultEditorForType 439 -#define wxGrid_GetDefaultRenderer 440 -#define wxGrid_GetDefaultRendererForCell 441 -#define wxGrid_GetDefaultRendererForType 442 -#define wxGrid_GetDefaultRowLabelSize 443 -#define wxGrid_GetDefaultRowSize 444 -#define wxGrid_GetGridCursorCol 445 -#define wxGrid_GetGridCursorRow 446 -#define wxGrid_GetGridLineColour 447 -#define wxGrid_GridLinesEnabled 448 -#define wxGrid_GetLabelBackgroundColour 449 -#define wxGrid_GetLabelFont 450 -#define wxGrid_GetLabelTextColour 451 -#define wxGrid_GetNumberCols 452 -#define wxGrid_GetNumberRows 453 -#define wxGrid_GetOrCreateCellAttr 454 -#define wxGrid_GetRowMinimalAcceptableHeight 455 -#define wxGrid_GetRowLabelAlignment 456 -#define wxGrid_GetRowLabelSize 457 -#define wxGrid_GetRowLabelValue 458 -#define wxGrid_GetRowSize 459 -#define wxGrid_GetScrollLineX 460 -#define wxGrid_GetScrollLineY 461 -#define wxGrid_GetSelectedCells 462 -#define wxGrid_GetSelectedCols 463 -#define wxGrid_GetSelectedRows 464 -#define wxGrid_GetSelectionBackground 465 -#define wxGrid_GetSelectionBlockTopLeft 466 -#define wxGrid_GetSelectionBlockBottomRight 467 -#define wxGrid_GetSelectionForeground 468 -#define wxGrid_GetViewWidth 469 -#define wxGrid_GetGridWindow 470 -#define wxGrid_GetGridRowLabelWindow 471 -#define wxGrid_GetGridColLabelWindow 472 -#define wxGrid_GetGridCornerLabelWindow 473 -#define wxGrid_HideCellEditControl 474 -#define wxGrid_InsertCols 475 -#define wxGrid_InsertRows 476 -#define wxGrid_IsCellEditControlEnabled 477 -#define wxGrid_IsCurrentCellReadOnly 478 -#define wxGrid_IsEditable 479 -#define wxGrid_IsInSelection_2 480 -#define wxGrid_IsInSelection_1 481 -#define wxGrid_IsReadOnly 482 -#define wxGrid_IsSelection 483 -#define wxGrid_IsVisible_3 484 -#define wxGrid_IsVisible_2 485 -#define wxGrid_MakeCellVisible_2 486 -#define wxGrid_MakeCellVisible_1 487 -#define wxGrid_MoveCursorDown 488 -#define wxGrid_MoveCursorLeft 489 -#define wxGrid_MoveCursorRight 490 -#define wxGrid_MoveCursorUp 491 -#define wxGrid_MoveCursorDownBlock 492 -#define wxGrid_MoveCursorLeftBlock 493 -#define wxGrid_MoveCursorRightBlock 494 -#define wxGrid_MoveCursorUpBlock 495 -#define wxGrid_MovePageDown 496 -#define wxGrid_MovePageUp 497 -#define wxGrid_RegisterDataType 498 -#define wxGrid_SaveEditControlValue 499 -#define wxGrid_SelectAll 500 -#define wxGrid_SelectBlock_5 501 -#define wxGrid_SelectBlock_3 502 -#define wxGrid_SelectCol 503 -#define wxGrid_SelectRow 504 -#define wxGrid_SetCellAlignment_4 505 -#define wxGrid_SetCellAlignment_3 506 -#define wxGrid_SetCellAlignment_1 507 -#define wxGrid_SetCellBackgroundColour_3_0 508 -#define wxGrid_SetCellBackgroundColour_1 509 -#define wxGrid_SetCellBackgroundColour_3_1 510 -#define wxGrid_SetCellEditor 511 -#define wxGrid_SetCellFont 512 -#define wxGrid_SetCellRenderer 513 -#define wxGrid_SetCellTextColour_3_0 514 -#define wxGrid_SetCellTextColour_3_1 515 -#define wxGrid_SetCellTextColour_1 516 -#define wxGrid_SetCellValue_3_0 517 -#define wxGrid_SetCellValue_2 518 -#define wxGrid_SetCellValue_3_1 519 -#define wxGrid_SetColAttr 520 -#define wxGrid_SetColFormatBool 521 -#define wxGrid_SetColFormatNumber 522 -#define wxGrid_SetColFormatFloat 523 -#define wxGrid_SetColFormatCustom 524 -#define wxGrid_SetColLabelAlignment 525 -#define wxGrid_SetColLabelSize 526 -#define wxGrid_SetColLabelValue 527 -#define wxGrid_SetColMinimalWidth 528 -#define wxGrid_SetColMinimalAcceptableWidth 529 -#define wxGrid_SetColSize 530 -#define wxGrid_SetDefaultCellAlignment 531 -#define wxGrid_SetDefaultCellBackgroundColour 532 -#define wxGrid_SetDefaultCellFont 533 -#define wxGrid_SetDefaultCellTextColour 534 -#define wxGrid_SetDefaultEditor 535 -#define wxGrid_SetDefaultRenderer 536 -#define wxGrid_SetDefaultColSize 537 -#define wxGrid_SetDefaultRowSize 538 -#define wxGrid_SetGridCursor 539 -#define wxGrid_SetGridLineColour 540 -#define wxGrid_SetLabelBackgroundColour 541 -#define wxGrid_SetLabelFont 542 -#define wxGrid_SetLabelTextColour 543 -#define wxGrid_SetMargins 544 -#define wxGrid_SetReadOnly 545 -#define wxGrid_SetRowAttr 546 -#define wxGrid_SetRowLabelAlignment 547 -#define wxGrid_SetRowLabelSize 548 -#define wxGrid_SetRowLabelValue 549 -#define wxGrid_SetRowMinimalHeight 550 -#define wxGrid_SetRowMinimalAcceptableHeight 551 -#define wxGrid_SetRowSize 552 -#define wxGrid_SetScrollLineX 553 -#define wxGrid_SetScrollLineY 554 -#define wxGrid_SetSelectionBackground 555 -#define wxGrid_SetSelectionForeground 556 -#define wxGrid_SetSelectionMode 557 -#define wxGrid_ShowCellEditControl 558 -#define wxGrid_XToCol 559 -#define wxGrid_XToEdgeOfCol 560 -#define wxGrid_YToEdgeOfRow 561 -#define wxGrid_YToRow 562 -#define wxGridCellRenderer_Draw 563 -#define wxGridCellRenderer_GetBestSize 564 -#define wxGridCellEditor_Create 565 -#define wxGridCellEditor_IsCreated 566 -#define wxGridCellEditor_SetSize 567 -#define wxGridCellEditor_Show 568 -#define wxGridCellEditor_PaintBackground 569 -#define wxGridCellEditor_BeginEdit 570 -#define wxGridCellEditor_EndEdit 571 -#define wxGridCellEditor_Reset 572 -#define wxGridCellEditor_StartingKey 573 -#define wxGridCellEditor_StartingClick 574 -#define wxGridCellEditor_HandleReturn 575 -#define wxGridCellBoolRenderer_new 576 -#define wxGridCellBoolRenderer_destroy 577 -#define wxGridCellBoolEditor_new 578 -#define wxGridCellBoolEditor_IsTrueValue 579 -#define wxGridCellBoolEditor_UseStringValues 580 -#define wxGridCellBoolEditor_destroy 581 -#define wxGridCellFloatRenderer_new 582 -#define wxGridCellFloatRenderer_GetPrecision 583 -#define wxGridCellFloatRenderer_GetWidth 584 -#define wxGridCellFloatRenderer_SetParameters 585 -#define wxGridCellFloatRenderer_SetPrecision 586 -#define wxGridCellFloatRenderer_SetWidth 587 -#define wxGridCellFloatRenderer_destroy 588 -#define wxGridCellFloatEditor_new 589 -#define wxGridCellFloatEditor_SetParameters 590 -#define wxGridCellFloatEditor_destroy 591 -#define wxGridCellStringRenderer_new 592 -#define wxGridCellStringRenderer_destroy 593 -#define wxGridCellTextEditor_new 594 -#define wxGridCellTextEditor_SetParameters 595 -#define wxGridCellTextEditor_destroy 596 -#define wxGridCellChoiceEditor_new 598 -#define wxGridCellChoiceEditor_SetParameters 599 -#define wxGridCellChoiceEditor_destroy 600 -#define wxGridCellNumberRenderer_new 601 -#define wxGridCellNumberRenderer_destroy 602 -#define wxGridCellNumberEditor_new 603 -#define wxGridCellNumberEditor_GetValue 604 -#define wxGridCellNumberEditor_SetParameters 605 -#define wxGridCellNumberEditor_destroy 606 -#define wxGridCellAttr_SetTextColour 607 -#define wxGridCellAttr_SetBackgroundColour 608 -#define wxGridCellAttr_SetFont 609 -#define wxGridCellAttr_SetAlignment 610 -#define wxGridCellAttr_SetReadOnly 611 -#define wxGridCellAttr_SetRenderer 612 -#define wxGridCellAttr_SetEditor 613 -#define wxGridCellAttr_HasTextColour 614 -#define wxGridCellAttr_HasBackgroundColour 615 -#define wxGridCellAttr_HasFont 616 -#define wxGridCellAttr_HasAlignment 617 -#define wxGridCellAttr_HasRenderer 618 -#define wxGridCellAttr_HasEditor 619 -#define wxGridCellAttr_GetTextColour 620 -#define wxGridCellAttr_GetBackgroundColour 621 -#define wxGridCellAttr_GetFont 622 -#define wxGridCellAttr_GetAlignment 623 -#define wxGridCellAttr_GetRenderer 624 -#define wxGridCellAttr_GetEditor 625 -#define wxGridCellAttr_IsReadOnly 626 -#define wxGridCellAttr_SetDefAttr 627 -#define wxDC_Blit 628 -#define wxDC_CalcBoundingBox 629 -#define wxDC_Clear 630 -#define wxDC_ComputeScaleAndOrigin 631 -#define wxDC_CrossHair 632 -#define wxDC_DestroyClippingRegion 633 -#define wxDC_DeviceToLogicalX 634 -#define wxDC_DeviceToLogicalXRel 635 -#define wxDC_DeviceToLogicalY 636 -#define wxDC_DeviceToLogicalYRel 637 -#define wxDC_DrawArc 638 -#define wxDC_DrawBitmap 639 -#define wxDC_DrawCheckMark 640 -#define wxDC_DrawCircle 641 -#define wxDC_DrawEllipse_2 643 -#define wxDC_DrawEllipse_1 644 -#define wxDC_DrawEllipticArc 645 -#define wxDC_DrawIcon 646 -#define wxDC_DrawLabel 647 -#define wxDC_DrawLine 648 -#define wxDC_DrawLines 649 -#define wxDC_DrawPolygon 651 -#define wxDC_DrawPoint 653 -#define wxDC_DrawRectangle_2 655 -#define wxDC_DrawRectangle_1 656 -#define wxDC_DrawRotatedText 657 -#define wxDC_DrawRoundedRectangle_3 659 -#define wxDC_DrawRoundedRectangle_2 660 -#define wxDC_DrawText 661 -#define wxDC_EndDoc 662 -#define wxDC_EndPage 663 -#define wxDC_FloodFill 664 -#define wxDC_GetBackground 665 -#define wxDC_GetBackgroundMode 666 -#define wxDC_GetBrush 667 -#define wxDC_GetCharHeight 668 -#define wxDC_GetCharWidth 669 -#define wxDC_GetClippingBox 670 -#define wxDC_GetFont 672 -#define wxDC_GetLayoutDirection 673 -#define wxDC_GetLogicalFunction 674 -#define wxDC_GetMapMode 675 -#define wxDC_GetMultiLineTextExtent_4 676 -#define wxDC_GetMultiLineTextExtent_1 677 -#define wxDC_GetPartialTextExtents 678 -#define wxDC_GetPen 679 -#define wxDC_GetPixel 680 -#define wxDC_GetPPI 681 -#define wxDC_GetSize 683 -#define wxDC_GetSizeMM 685 -#define wxDC_GetTextBackground 686 -#define wxDC_GetTextExtent_4 687 -#define wxDC_GetTextExtent_1 688 -#define wxDC_GetTextForeground 690 -#define wxDC_GetUserScale 691 -#define wxDC_GradientFillConcentric_3 692 -#define wxDC_GradientFillConcentric_4 693 -#define wxDC_GradientFillLinear 694 -#define wxDC_LogicalToDeviceX 695 -#define wxDC_LogicalToDeviceXRel 696 -#define wxDC_LogicalToDeviceY 697 -#define wxDC_LogicalToDeviceYRel 698 -#define wxDC_MaxX 699 -#define wxDC_MaxY 700 -#define wxDC_MinX 701 -#define wxDC_MinY 702 -#define wxDC_IsOk 703 -#define wxDC_ResetBoundingBox 704 -#define wxDC_SetAxisOrientation 705 -#define wxDC_SetBackground 706 -#define wxDC_SetBackgroundMode 707 -#define wxDC_SetBrush 708 -#define wxDC_SetClippingRegion_2 710 -#define wxDC_SetClippingRegion_1_1 711 -#define wxDC_SetClippingRegion_1_0 712 -#define wxDC_SetDeviceOrigin 713 -#define wxDC_SetFont 714 -#define wxDC_SetLayoutDirection 715 -#define wxDC_SetLogicalFunction 716 -#define wxDC_SetMapMode 717 -#define wxDC_SetPalette 718 -#define wxDC_SetPen 719 -#define wxDC_SetTextBackground 720 -#define wxDC_SetTextForeground 721 -#define wxDC_SetUserScale 722 -#define wxDC_StartDoc 723 -#define wxDC_StartPage 724 -#define wxMirrorDC_new 725 -#define wxMirrorDC_destroy 726 -#define wxScreenDC_new 727 -#define wxScreenDC_destruct 728 -#define wxPostScriptDC_new_0 729 -#define wxPostScriptDC_new_1 730 -#define wxPostScriptDC_destruct 731 -#define wxPostScriptDC_SetResolution 732 -#define wxPostScriptDC_GetResolution 733 -#define wxWindowDC_new_0 734 -#define wxWindowDC_new_1 735 -#define wxWindowDC_destruct 736 -#define wxClientDC_new_0 737 -#define wxClientDC_new_1 738 -#define wxClientDC_destroy 739 -#define wxPaintDC_new_0 740 -#define wxPaintDC_new_1 741 -#define wxPaintDC_destroy 742 -#define wxMemoryDC_new_1_0 744 -#define wxMemoryDC_new_1_1 745 -#define wxMemoryDC_new_0 746 -#define wxMemoryDC_destruct 748 -#define wxMemoryDC_SelectObject 749 -#define wxMemoryDC_SelectObjectAsSource 750 -#define wxBufferedDC_new_0 751 -#define wxBufferedDC_new_2 752 -#define wxBufferedDC_new_3 753 -#define wxBufferedDC_destruct 754 -#define wxBufferedDC_Init_2 755 -#define wxBufferedDC_Init_3 756 -#define wxBufferedPaintDC_new_3 757 -#define wxBufferedPaintDC_new_2 758 -#define wxBufferedPaintDC_destruct 759 -#define wxGraphicsObject_destruct 760 -#define wxGraphicsObject_GetRenderer 761 -#define wxGraphicsObject_IsNull 762 -#define wxGraphicsContext_destruct 763 -#define wxGraphicsContext_Create_1_1 764 -#define wxGraphicsContext_Create_1_0 765 -#define wxGraphicsContext_Create_0 766 -#define wxGraphicsContext_CreatePen 767 -#define wxGraphicsContext_CreateBrush 768 -#define wxGraphicsContext_CreateRadialGradientBrush 769 -#define wxGraphicsContext_CreateLinearGradientBrush 770 -#define wxGraphicsContext_CreateFont 771 -#define wxGraphicsContext_CreateMatrix 772 -#define wxGraphicsContext_CreatePath 773 -#define wxGraphicsContext_Clip_1 774 -#define wxGraphicsContext_Clip_4 775 -#define wxGraphicsContext_ResetClip 776 -#define wxGraphicsContext_DrawBitmap 777 -#define wxGraphicsContext_DrawEllipse 778 -#define wxGraphicsContext_DrawIcon 779 -#define wxGraphicsContext_DrawLines 780 -#define wxGraphicsContext_DrawPath 781 -#define wxGraphicsContext_DrawRectangle 782 -#define wxGraphicsContext_DrawRoundedRectangle 783 -#define wxGraphicsContext_DrawText_3 784 -#define wxGraphicsContext_DrawText_4_0 785 -#define wxGraphicsContext_DrawText_4_1 786 -#define wxGraphicsContext_DrawText_5 787 -#define wxGraphicsContext_FillPath 788 -#define wxGraphicsContext_StrokePath 789 -#define wxGraphicsContext_GetPartialTextExtents 790 -#define wxGraphicsContext_GetTextExtent 791 -#define wxGraphicsContext_Rotate 792 -#define wxGraphicsContext_Scale 793 -#define wxGraphicsContext_Translate 794 -#define wxGraphicsContext_GetTransform 795 -#define wxGraphicsContext_SetTransform 796 -#define wxGraphicsContext_ConcatTransform 797 -#define wxGraphicsContext_SetBrush_1_1 798 -#define wxGraphicsContext_SetBrush_1_0 799 -#define wxGraphicsContext_SetFont_1 800 -#define wxGraphicsContext_SetFont_2 801 -#define wxGraphicsContext_SetPen_1_0 802 -#define wxGraphicsContext_SetPen_1_1 803 -#define wxGraphicsContext_StrokeLine 804 -#define wxGraphicsContext_StrokeLines 805 -#define wxGraphicsMatrix_Concat 807 -#define wxGraphicsMatrix_Get 809 -#define wxGraphicsMatrix_Invert 810 -#define wxGraphicsMatrix_IsEqual 811 -#define wxGraphicsMatrix_IsIdentity 813 -#define wxGraphicsMatrix_Rotate 814 -#define wxGraphicsMatrix_Scale 815 -#define wxGraphicsMatrix_Translate 816 -#define wxGraphicsMatrix_Set 817 -#define wxGraphicsMatrix_TransformPoint 818 -#define wxGraphicsMatrix_TransformDistance 819 -#define wxGraphicsPath_MoveToPoint_2 820 -#define wxGraphicsPath_MoveToPoint_1 821 -#define wxGraphicsPath_AddArc_6 822 -#define wxGraphicsPath_AddArc_5 823 -#define wxGraphicsPath_AddArcToPoint 824 -#define wxGraphicsPath_AddCircle 825 -#define wxGraphicsPath_AddCurveToPoint_6 826 -#define wxGraphicsPath_AddCurveToPoint_3 827 -#define wxGraphicsPath_AddEllipse 828 -#define wxGraphicsPath_AddLineToPoint_2 829 -#define wxGraphicsPath_AddLineToPoint_1 830 -#define wxGraphicsPath_AddPath 831 -#define wxGraphicsPath_AddQuadCurveToPoint 832 -#define wxGraphicsPath_AddRectangle 833 -#define wxGraphicsPath_AddRoundedRectangle 834 -#define wxGraphicsPath_CloseSubpath 835 -#define wxGraphicsPath_Contains_3 836 -#define wxGraphicsPath_Contains_2 837 -#define wxGraphicsPath_GetBox 839 -#define wxGraphicsPath_GetCurrentPoint 841 -#define wxGraphicsPath_Transform 842 -#define wxGraphicsRenderer_GetDefaultRenderer 843 -#define wxGraphicsRenderer_CreateContext_1_1 844 -#define wxGraphicsRenderer_CreateContext_1_0 845 -#define wxGraphicsRenderer_CreatePen 846 -#define wxGraphicsRenderer_CreateBrush 847 -#define wxGraphicsRenderer_CreateLinearGradientBrush 848 -#define wxGraphicsRenderer_CreateRadialGradientBrush 849 -#define wxGraphicsRenderer_CreateFont 850 -#define wxGraphicsRenderer_CreateMatrix 851 -#define wxGraphicsRenderer_CreatePath 852 -#define wxMenuBar_new_1 854 -#define wxMenuBar_new_0 856 -#define wxMenuBar_destruct 858 -#define wxMenuBar_Append 859 -#define wxMenuBar_Check 860 -#define wxMenuBar_Enable_2 861 -#define wxMenuBar_Enable_1 862 -#define wxMenuBar_EnableTop 863 -#define wxMenuBar_FindMenu 864 -#define wxMenuBar_FindMenuItem 865 -#define wxMenuBar_FindItem 866 -#define wxMenuBar_GetHelpString 867 -#define wxMenuBar_GetLabel_1 868 -#define wxMenuBar_GetLabel_0 869 -#define wxMenuBar_GetLabelTop 870 -#define wxMenuBar_GetMenu 871 -#define wxMenuBar_GetMenuCount 872 -#define wxMenuBar_Insert 873 -#define wxMenuBar_IsChecked 874 -#define wxMenuBar_IsEnabled_1 875 -#define wxMenuBar_IsEnabled_0 876 -#define wxMenuBar_Remove 877 -#define wxMenuBar_Replace 878 -#define wxMenuBar_SetHelpString 879 -#define wxMenuBar_SetLabel_2 880 -#define wxMenuBar_SetLabel_1 881 -#define wxMenuBar_SetLabelTop 882 -#define wxControl_GetLabel 883 -#define wxControl_SetLabel 884 -#define wxControlWithItems_Append_1 885 -#define wxControlWithItems_Append_2 886 -#define wxControlWithItems_appendStrings_1 887 -#define wxControlWithItems_Clear 888 -#define wxControlWithItems_Delete 889 -#define wxControlWithItems_FindString 890 -#define wxControlWithItems_getClientData 891 -#define wxControlWithItems_setClientData 892 -#define wxControlWithItems_GetCount 893 -#define wxControlWithItems_GetSelection 894 -#define wxControlWithItems_GetString 895 -#define wxControlWithItems_GetStringSelection 896 -#define wxControlWithItems_Insert_2 897 -#define wxControlWithItems_Insert_3 898 -#define wxControlWithItems_IsEmpty 899 -#define wxControlWithItems_Select 900 -#define wxControlWithItems_SetSelection 901 -#define wxControlWithItems_SetString 902 -#define wxControlWithItems_SetStringSelection 903 -#define wxMenu_new_2 906 -#define wxMenu_new_1 907 -#define wxMenu_destruct 909 -#define wxMenu_Append_3 910 -#define wxMenu_Append_1 911 -#define wxMenu_Append_4_0 912 -#define wxMenu_Append_4_1 913 -#define wxMenu_AppendCheckItem 914 -#define wxMenu_AppendRadioItem 915 -#define wxMenu_AppendSeparator 916 -#define wxMenu_Break 917 -#define wxMenu_Check 918 -#define wxMenu_Delete_1_0 919 -#define wxMenu_Delete_1_1 920 -#define wxMenu_Destroy_1_0 921 -#define wxMenu_Destroy_1_1 922 -#define wxMenu_Enable 923 -#define wxMenu_FindItem_1 924 -#define wxMenu_FindItem_2 925 -#define wxMenu_FindItemByPosition 926 -#define wxMenu_GetHelpString 927 -#define wxMenu_GetLabel 928 -#define wxMenu_GetMenuItemCount 929 -#define wxMenu_GetMenuItems 930 -#define wxMenu_GetTitle 932 -#define wxMenu_Insert_2 933 -#define wxMenu_Insert_3 934 -#define wxMenu_Insert_5_1 935 -#define wxMenu_Insert_5_0 936 -#define wxMenu_InsertCheckItem 937 -#define wxMenu_InsertRadioItem 938 -#define wxMenu_InsertSeparator 939 -#define wxMenu_IsChecked 940 -#define wxMenu_IsEnabled 941 -#define wxMenu_Prepend_1 942 -#define wxMenu_Prepend_2 943 -#define wxMenu_Prepend_4_1 944 -#define wxMenu_Prepend_4_0 945 -#define wxMenu_PrependCheckItem 946 -#define wxMenu_PrependRadioItem 947 -#define wxMenu_PrependSeparator 948 -#define wxMenu_Remove_1_0 949 -#define wxMenu_Remove_1_1 950 -#define wxMenu_SetHelpString 951 -#define wxMenu_SetLabel 952 -#define wxMenu_SetTitle 953 -#define wxMenuItem_new 954 -#define wxMenuItem_destruct 956 -#define wxMenuItem_Check 957 -#define wxMenuItem_Enable 958 -#define wxMenuItem_GetBitmap 959 -#define wxMenuItem_GetHelp 960 -#define wxMenuItem_GetId 961 -#define wxMenuItem_GetKind 962 -#define wxMenuItem_GetLabel 963 -#define wxMenuItem_GetLabelFromText 964 -#define wxMenuItem_GetMenu 965 -#define wxMenuItem_GetText 966 -#define wxMenuItem_GetSubMenu 967 -#define wxMenuItem_IsCheckable 968 -#define wxMenuItem_IsChecked 969 -#define wxMenuItem_IsEnabled 970 -#define wxMenuItem_IsSeparator 971 -#define wxMenuItem_IsSubMenu 972 -#define wxMenuItem_SetBitmap 973 -#define wxMenuItem_SetHelp 974 -#define wxMenuItem_SetMenu 975 -#define wxMenuItem_SetSubMenu 976 -#define wxMenuItem_SetText 977 -#define wxToolBar_AddControl 978 -#define wxToolBar_AddSeparator 979 -#define wxToolBar_AddTool_5 980 -#define wxToolBar_AddTool_4_0 981 -#define wxToolBar_AddTool_1 982 -#define wxToolBar_AddTool_4_1 983 -#define wxToolBar_AddTool_3 984 -#define wxToolBar_AddTool_6 985 -#define wxToolBar_AddCheckTool 986 -#define wxToolBar_AddRadioTool 987 -#define wxToolBar_AddStretchableSpace 988 -#define wxToolBar_InsertStretchableSpace 989 -#define wxToolBar_DeleteTool 990 -#define wxToolBar_DeleteToolByPos 991 -#define wxToolBar_EnableTool 992 -#define wxToolBar_FindById 993 -#define wxToolBar_FindControl 994 -#define wxToolBar_FindToolForPosition 995 -#define wxToolBar_GetToolSize 996 -#define wxToolBar_GetToolBitmapSize 997 -#define wxToolBar_GetMargins 998 -#define wxToolBar_GetToolEnabled 999 -#define wxToolBar_GetToolLongHelp 1000 -#define wxToolBar_GetToolPacking 1001 -#define wxToolBar_GetToolPos 1002 -#define wxToolBar_GetToolSeparation 1003 -#define wxToolBar_GetToolShortHelp 1004 -#define wxToolBar_GetToolState 1005 -#define wxToolBar_InsertControl 1006 -#define wxToolBar_InsertSeparator 1007 -#define wxToolBar_InsertTool_5 1008 -#define wxToolBar_InsertTool_2 1009 -#define wxToolBar_InsertTool_4 1010 -#define wxToolBar_Realize 1011 -#define wxToolBar_RemoveTool 1012 -#define wxToolBar_SetMargins 1013 -#define wxToolBar_SetToolBitmapSize 1014 -#define wxToolBar_SetToolLongHelp 1015 -#define wxToolBar_SetToolPacking 1016 -#define wxToolBar_SetToolShortHelp 1017 -#define wxToolBar_SetToolSeparation 1018 -#define wxToolBar_ToggleTool 1019 -#define wxStatusBar_new_0 1021 -#define wxStatusBar_new_2 1022 -#define wxStatusBar_destruct 1024 -#define wxStatusBar_Create 1025 -#define wxStatusBar_GetFieldRect 1026 -#define wxStatusBar_GetFieldsCount 1027 -#define wxStatusBar_GetStatusText 1028 -#define wxStatusBar_PopStatusText 1029 -#define wxStatusBar_PushStatusText 1030 -#define wxStatusBar_SetFieldsCount 1031 -#define wxStatusBar_SetMinHeight 1032 -#define wxStatusBar_SetStatusText 1033 -#define wxStatusBar_SetStatusWidths 1034 -#define wxStatusBar_SetStatusStyles 1035 -#define wxBitmap_new_0 1036 -#define wxBitmap_new_3 1037 -#define wxBitmap_new_4 1038 -#define wxBitmap_new_2_0 1039 -#define wxBitmap_new_2_1 1040 -#define wxBitmap_destruct 1041 -#define wxBitmap_ConvertToImage 1042 -#define wxBitmap_CopyFromIcon 1043 -#define wxBitmap_Create 1044 -#define wxBitmap_GetDepth 1045 -#define wxBitmap_GetHeight 1046 -#define wxBitmap_GetPalette 1047 -#define wxBitmap_GetMask 1048 -#define wxBitmap_GetWidth 1049 -#define wxBitmap_GetSubBitmap 1050 -#define wxBitmap_LoadFile 1051 -#define wxBitmap_Ok 1052 -#define wxBitmap_SaveFile 1053 -#define wxBitmap_SetDepth 1054 -#define wxBitmap_SetHeight 1055 -#define wxBitmap_SetMask 1056 -#define wxBitmap_SetPalette 1057 -#define wxBitmap_SetWidth 1058 -#define wxIcon_new_0 1059 -#define wxIcon_new_2 1060 -#define wxIcon_new_1 1061 -#define wxIcon_CopyFromBitmap 1062 -#define wxIcon_destroy 1063 -#define wxIconBundle_new_0 1064 -#define wxIconBundle_new_2 1065 -#define wxIconBundle_new_1_0 1066 -#define wxIconBundle_new_1_1 1067 -#define wxIconBundle_destruct 1068 -#define wxIconBundle_AddIcon_2 1069 -#define wxIconBundle_AddIcon_1 1070 -#define wxIconBundle_GetIcon_1_1 1071 -#define wxIconBundle_GetIcon_1_0 1072 -#define wxCursor_new_0 1073 -#define wxCursor_new_1_0 1074 -#define wxCursor_new_1_1 1075 -#define wxCursor_new_4 1076 -#define wxCursor_destruct 1077 -#define wxCursor_Ok 1078 -#define wxMask_new_0 1079 -#define wxMask_new_2_1 1080 -#define wxMask_new_2_0 1081 -#define wxMask_new_1 1082 -#define wxMask_destruct 1083 -#define wxMask_Create_2_1 1084 -#define wxMask_Create_2_0 1085 -#define wxMask_Create_1 1086 -#define wxImage_new_0 1087 -#define wxImage_new_3_0 1088 -#define wxImage_new_4 1089 -#define wxImage_new_5 1090 -#define wxImage_new_2 1091 -#define wxImage_new_3_1 1092 -#define wxImage_Blur 1093 -#define wxImage_BlurHorizontal 1094 -#define wxImage_BlurVertical 1095 -#define wxImage_ConvertAlphaToMask 1096 -#define wxImage_ConvertToGreyscale 1097 -#define wxImage_ConvertToMono 1098 -#define wxImage_Copy 1099 -#define wxImage_Create_3 1100 -#define wxImage_Create_4 1101 -#define wxImage_Create_5 1102 -#define wxImage_Destroy 1103 -#define wxImage_FindFirstUnusedColour 1104 -#define wxImage_GetImageExtWildcard 1105 -#define wxImage_GetAlpha_2 1106 -#define wxImage_GetAlpha_0 1107 -#define wxImage_GetBlue 1108 -#define wxImage_GetData 1109 -#define wxImage_GetGreen 1110 -#define wxImage_GetImageCount 1111 -#define wxImage_GetHeight 1112 -#define wxImage_GetMaskBlue 1113 -#define wxImage_GetMaskGreen 1114 -#define wxImage_GetMaskRed 1115 -#define wxImage_GetOrFindMaskColour 1116 -#define wxImage_GetPalette 1117 -#define wxImage_GetRed 1118 -#define wxImage_GetSubImage 1119 -#define wxImage_GetWidth 1120 -#define wxImage_HasAlpha 1121 -#define wxImage_HasMask 1122 -#define wxImage_GetOption 1123 -#define wxImage_GetOptionInt 1124 -#define wxImage_HasOption 1125 -#define wxImage_InitAlpha 1126 -#define wxImage_InitStandardHandlers 1127 -#define wxImage_IsTransparent 1128 -#define wxImage_LoadFile_2 1129 -#define wxImage_LoadFile_3 1130 -#define wxImage_Ok 1131 -#define wxImage_RemoveHandler 1132 -#define wxImage_Mirror 1133 -#define wxImage_Replace 1134 -#define wxImage_Rescale 1135 -#define wxImage_Resize 1136 -#define wxImage_Rotate 1137 -#define wxImage_RotateHue 1138 -#define wxImage_Rotate90 1139 -#define wxImage_SaveFile_1 1140 -#define wxImage_SaveFile_2_0 1141 -#define wxImage_SaveFile_2_1 1142 -#define wxImage_Scale 1143 -#define wxImage_Size 1144 -#define wxImage_SetAlpha_3 1145 -#define wxImage_SetAlpha_2 1146 -#define wxImage_SetData_2 1147 -#define wxImage_SetData_4 1148 -#define wxImage_SetMask 1149 -#define wxImage_SetMaskColour 1150 -#define wxImage_SetMaskFromImage 1151 -#define wxImage_SetOption_2_1 1152 -#define wxImage_SetOption_2_0 1153 -#define wxImage_SetPalette 1154 -#define wxImage_SetRGB_5 1155 -#define wxImage_SetRGB_4 1156 -#define wxImage_destroy 1157 -#define wxBrush_new_0 1158 -#define wxBrush_new_2 1159 -#define wxBrush_new_1 1160 -#define wxBrush_destruct 1162 -#define wxBrush_GetColour 1163 -#define wxBrush_GetStipple 1164 -#define wxBrush_GetStyle 1165 -#define wxBrush_IsHatch 1166 -#define wxBrush_IsOk 1167 -#define wxBrush_SetColour_1 1168 -#define wxBrush_SetColour_3 1169 -#define wxBrush_SetStipple 1170 -#define wxBrush_SetStyle 1171 -#define wxPen_new_0 1172 -#define wxPen_new_2 1173 -#define wxPen_destruct 1174 -#define wxPen_GetCap 1175 -#define wxPen_GetColour 1176 -#define wxPen_GetJoin 1177 -#define wxPen_GetStyle 1178 -#define wxPen_GetWidth 1179 -#define wxPen_IsOk 1180 -#define wxPen_SetCap 1181 -#define wxPen_SetColour_1 1182 -#define wxPen_SetColour_3 1183 -#define wxPen_SetJoin 1184 -#define wxPen_SetStyle 1185 -#define wxPen_SetWidth 1186 -#define wxRegion_new_0 1187 -#define wxRegion_new_4 1188 -#define wxRegion_new_2 1189 -#define wxRegion_new_1_1 1190 -#define wxRegion_new_1_0 1192 -#define wxRegion_destruct 1194 -#define wxRegion_Clear 1195 -#define wxRegion_Contains_2 1196 -#define wxRegion_Contains_1_0 1197 -#define wxRegion_Contains_4 1198 -#define wxRegion_Contains_1_1 1199 -#define wxRegion_ConvertToBitmap 1200 -#define wxRegion_GetBox 1201 -#define wxRegion_Intersect_4 1202 -#define wxRegion_Intersect_1_1 1203 -#define wxRegion_Intersect_1_0 1204 -#define wxRegion_IsEmpty 1205 -#define wxRegion_Subtract_4 1206 -#define wxRegion_Subtract_1_1 1207 -#define wxRegion_Subtract_1_0 1208 -#define wxRegion_Offset_2 1209 -#define wxRegion_Offset_1 1210 -#define wxRegion_Union_4 1211 -#define wxRegion_Union_1_2 1212 -#define wxRegion_Union_1_1 1213 -#define wxRegion_Union_1_0 1214 -#define wxRegion_Union_3 1215 -#define wxRegion_Xor_4 1216 -#define wxRegion_Xor_1_1 1217 -#define wxRegion_Xor_1_0 1218 -#define wxAcceleratorTable_new_0 1219 -#define wxAcceleratorTable_new_2 1220 -#define wxAcceleratorTable_destruct 1221 -#define wxAcceleratorTable_Ok 1222 -#define wxAcceleratorEntry_new_1_0 1223 -#define wxAcceleratorEntry_new_1_1 1224 -#define wxAcceleratorEntry_GetCommand 1225 -#define wxAcceleratorEntry_GetFlags 1226 -#define wxAcceleratorEntry_GetKeyCode 1227 -#define wxAcceleratorEntry_Set 1228 -#define wxAcceleratorEntry_destroy 1229 -#define wxCaret_new_3 1234 -#define wxCaret_new_2 1235 -#define wxCaret_destruct 1237 -#define wxCaret_Create_3 1238 -#define wxCaret_Create_2 1239 -#define wxCaret_GetBlinkTime 1240 -#define wxCaret_GetPosition 1242 -#define wxCaret_GetSize 1244 -#define wxCaret_GetWindow 1245 -#define wxCaret_Hide 1246 -#define wxCaret_IsOk 1247 -#define wxCaret_IsVisible 1248 -#define wxCaret_Move_2 1249 -#define wxCaret_Move_1 1250 -#define wxCaret_SetBlinkTime 1251 -#define wxCaret_SetSize_2 1252 -#define wxCaret_SetSize_1 1253 -#define wxCaret_Show 1254 -#define wxSizer_Add_2_1 1255 -#define wxSizer_Add_2_0 1256 -#define wxSizer_Add_3 1257 -#define wxSizer_Add_2_3 1258 -#define wxSizer_Add_2_2 1259 -#define wxSizer_AddSpacer 1260 -#define wxSizer_AddStretchSpacer 1261 -#define wxSizer_CalcMin 1262 -#define wxSizer_Clear 1263 -#define wxSizer_Detach_1_2 1264 -#define wxSizer_Detach_1_1 1265 -#define wxSizer_Detach_1_0 1266 -#define wxSizer_Fit 1267 -#define wxSizer_FitInside 1268 -#define wxSizer_GetChildren 1269 -#define wxSizer_GetItem_2_1 1270 -#define wxSizer_GetItem_2_0 1271 -#define wxSizer_GetItem_1 1272 -#define wxSizer_GetSize 1273 -#define wxSizer_GetPosition 1274 -#define wxSizer_GetMinSize 1275 -#define wxSizer_Hide_2_0 1276 -#define wxSizer_Hide_2_1 1277 -#define wxSizer_Hide_1 1278 -#define wxSizer_Insert_3_1 1279 -#define wxSizer_Insert_3_0 1280 -#define wxSizer_Insert_4 1281 -#define wxSizer_Insert_3_3 1282 -#define wxSizer_Insert_3_2 1283 -#define wxSizer_Insert_2 1284 -#define wxSizer_InsertSpacer 1285 -#define wxSizer_InsertStretchSpacer 1286 -#define wxSizer_IsShown_1_2 1287 -#define wxSizer_IsShown_1_1 1288 -#define wxSizer_IsShown_1_0 1289 -#define wxSizer_Layout 1290 -#define wxSizer_Prepend_2_1 1291 -#define wxSizer_Prepend_2_0 1292 -#define wxSizer_Prepend_3 1293 -#define wxSizer_Prepend_2_3 1294 -#define wxSizer_Prepend_2_2 1295 -#define wxSizer_Prepend_1 1296 -#define wxSizer_PrependSpacer 1297 -#define wxSizer_PrependStretchSpacer 1298 -#define wxSizer_RecalcSizes 1299 -#define wxSizer_Remove_1_1 1300 -#define wxSizer_Remove_1_0 1301 -#define wxSizer_Replace_3_1 1302 -#define wxSizer_Replace_3_0 1303 -#define wxSizer_Replace_2 1304 -#define wxSizer_SetDimension 1305 -#define wxSizer_SetMinSize_2 1306 -#define wxSizer_SetMinSize_1 1307 -#define wxSizer_SetItemMinSize_3_2 1308 -#define wxSizer_SetItemMinSize_2_2 1309 -#define wxSizer_SetItemMinSize_3_1 1310 -#define wxSizer_SetItemMinSize_2_1 1311 -#define wxSizer_SetItemMinSize_3_0 1312 -#define wxSizer_SetItemMinSize_2_0 1313 -#define wxSizer_SetSizeHints 1314 -#define wxSizer_SetVirtualSizeHints 1315 -#define wxSizer_Show_2_2 1316 -#define wxSizer_Show_2_1 1317 -#define wxSizer_Show_2_0 1318 -#define wxSizer_Show_1 1319 -#define wxSizerFlags_new 1320 -#define wxSizerFlags_Align 1321 -#define wxSizerFlags_Border_2 1322 -#define wxSizerFlags_Border_1 1323 -#define wxSizerFlags_Center 1324 -#define wxSizerFlags_Centre 1325 -#define wxSizerFlags_Expand 1326 -#define wxSizerFlags_Left 1327 -#define wxSizerFlags_Proportion 1328 -#define wxSizerFlags_Right 1329 -#define wxSizerFlags_destroy 1330 -#define wxSizerItem_new_5_1 1331 -#define wxSizerItem_new_2_1 1332 -#define wxSizerItem_new_5_0 1333 -#define wxSizerItem_new_2_0 1334 -#define wxSizerItem_new_6 1335 -#define wxSizerItem_new_3 1336 -#define wxSizerItem_new_0 1337 -#define wxSizerItem_destruct 1338 -#define wxSizerItem_CalcMin 1339 -#define wxSizerItem_DeleteWindows 1340 -#define wxSizerItem_DetachSizer 1341 -#define wxSizerItem_GetBorder 1342 -#define wxSizerItem_GetFlag 1343 -#define wxSizerItem_GetMinSize 1344 -#define wxSizerItem_GetPosition 1345 -#define wxSizerItem_GetProportion 1346 -#define wxSizerItem_GetRatio 1347 -#define wxSizerItem_GetRect 1348 -#define wxSizerItem_GetSize 1349 -#define wxSizerItem_GetSizer 1350 -#define wxSizerItem_GetSpacer 1351 -#define wxSizerItem_GetUserData 1352 -#define wxSizerItem_GetWindow 1353 -#define wxSizerItem_IsSizer 1354 -#define wxSizerItem_IsShown 1355 -#define wxSizerItem_IsSpacer 1356 -#define wxSizerItem_IsWindow 1357 -#define wxSizerItem_SetBorder 1358 -#define wxSizerItem_SetDimension 1359 -#define wxSizerItem_SetFlag 1360 -#define wxSizerItem_SetInitSize 1361 -#define wxSizerItem_SetMinSize_1 1362 -#define wxSizerItem_SetMinSize_2 1363 -#define wxSizerItem_SetProportion 1364 -#define wxSizerItem_SetRatio_2 1365 -#define wxSizerItem_SetRatio_1_1 1366 -#define wxSizerItem_SetRatio_1_0 1367 -#define wxSizerItem_SetSizer 1368 -#define wxSizerItem_SetSpacer_1 1369 -#define wxSizerItem_SetSpacer_2 1370 -#define wxSizerItem_SetWindow 1371 -#define wxSizerItem_Show 1372 -#define wxBoxSizer_new 1373 -#define wxBoxSizer_GetOrientation 1374 -#define wxBoxSizer_destroy 1375 -#define wxStaticBoxSizer_new_2 1376 -#define wxStaticBoxSizer_new_3 1377 -#define wxStaticBoxSizer_GetStaticBox 1378 -#define wxStaticBoxSizer_destroy 1379 -#define wxGridSizer_new_4 1380 -#define wxGridSizer_new_2 1381 -#define wxGridSizer_GetCols 1382 -#define wxGridSizer_GetHGap 1383 -#define wxGridSizer_GetRows 1384 -#define wxGridSizer_GetVGap 1385 -#define wxGridSizer_SetCols 1386 -#define wxGridSizer_SetHGap 1387 -#define wxGridSizer_SetRows 1388 -#define wxGridSizer_SetVGap 1389 -#define wxGridSizer_destroy 1390 -#define wxFlexGridSizer_new_4 1391 -#define wxFlexGridSizer_new_2 1392 -#define wxFlexGridSizer_AddGrowableCol 1393 -#define wxFlexGridSizer_AddGrowableRow 1394 -#define wxFlexGridSizer_GetFlexibleDirection 1395 -#define wxFlexGridSizer_GetNonFlexibleGrowMode 1396 -#define wxFlexGridSizer_RemoveGrowableCol 1397 -#define wxFlexGridSizer_RemoveGrowableRow 1398 -#define wxFlexGridSizer_SetFlexibleDirection 1399 -#define wxFlexGridSizer_SetNonFlexibleGrowMode 1400 -#define wxFlexGridSizer_destroy 1401 -#define wxGridBagSizer_new 1402 -#define wxGridBagSizer_Add_3_2 1403 -#define wxGridBagSizer_Add_3_1 1404 -#define wxGridBagSizer_Add_4 1405 -#define wxGridBagSizer_Add_1_0 1406 -#define wxGridBagSizer_Add_2_1 1407 -#define wxGridBagSizer_Add_2_0 1408 -#define wxGridBagSizer_Add_3_0 1409 -#define wxGridBagSizer_Add_1_1 1410 -#define wxGridBagSizer_CalcMin 1411 -#define wxGridBagSizer_CheckForIntersection_2 1412 -#define wxGridBagSizer_CheckForIntersection_3 1413 -#define wxGridBagSizer_FindItem_1_1 1414 -#define wxGridBagSizer_FindItem_1_0 1415 -#define wxGridBagSizer_FindItemAtPoint 1416 -#define wxGridBagSizer_FindItemAtPosition 1417 -#define wxGridBagSizer_FindItemWithData 1418 -#define wxGridBagSizer_GetCellSize 1419 -#define wxGridBagSizer_GetEmptyCellSize 1420 -#define wxGridBagSizer_GetItemPosition_1_2 1421 -#define wxGridBagSizer_GetItemPosition_1_1 1422 -#define wxGridBagSizer_GetItemPosition_1_0 1423 -#define wxGridBagSizer_GetItemSpan_1_2 1424 -#define wxGridBagSizer_GetItemSpan_1_1 1425 -#define wxGridBagSizer_GetItemSpan_1_0 1426 -#define wxGridBagSizer_SetEmptyCellSize 1427 -#define wxGridBagSizer_SetItemPosition_2_2 1428 -#define wxGridBagSizer_SetItemPosition_2_1 1429 -#define wxGridBagSizer_SetItemPosition_2_0 1430 -#define wxGridBagSizer_SetItemSpan_2_2 1431 -#define wxGridBagSizer_SetItemSpan_2_1 1432 -#define wxGridBagSizer_SetItemSpan_2_0 1433 -#define wxGridBagSizer_destroy 1434 -#define wxStdDialogButtonSizer_new 1435 -#define wxStdDialogButtonSizer_AddButton 1436 -#define wxStdDialogButtonSizer_Realize 1437 -#define wxStdDialogButtonSizer_SetAffirmativeButton 1438 -#define wxStdDialogButtonSizer_SetCancelButton 1439 -#define wxStdDialogButtonSizer_SetNegativeButton 1440 -#define wxStdDialogButtonSizer_destroy 1441 -#define wxFont_new_0 1442 -#define wxFont_new_1 1443 -#define wxFont_new_5 1444 -#define wxFont_destruct 1446 -#define wxFont_IsFixedWidth 1447 -#define wxFont_GetDefaultEncoding 1448 -#define wxFont_GetFaceName 1449 -#define wxFont_GetFamily 1450 -#define wxFont_GetNativeFontInfoDesc 1451 -#define wxFont_GetNativeFontInfoUserDesc 1452 -#define wxFont_GetPointSize 1453 -#define wxFont_GetStyle 1454 -#define wxFont_GetUnderlined 1455 -#define wxFont_GetWeight 1456 -#define wxFont_Ok 1457 -#define wxFont_SetDefaultEncoding 1458 -#define wxFont_SetFaceName 1459 -#define wxFont_SetFamily 1460 -#define wxFont_SetPointSize 1461 -#define wxFont_SetStyle 1462 -#define wxFont_SetUnderlined 1463 -#define wxFont_SetWeight 1464 -#define wxToolTip_Enable 1465 -#define wxToolTip_SetDelay 1466 -#define wxToolTip_new 1467 -#define wxToolTip_SetTip 1468 -#define wxToolTip_GetTip 1469 -#define wxToolTip_GetWindow 1470 -#define wxToolTip_destroy 1471 -#define wxButton_new_3 1473 -#define wxButton_new_0 1474 -#define wxButton_destruct 1475 -#define wxButton_Create 1476 -#define wxButton_GetDefaultSize 1477 -#define wxButton_SetDefault 1478 -#define wxButton_SetLabel 1479 -#define wxBitmapButton_new_4 1481 -#define wxBitmapButton_new_0 1482 -#define wxBitmapButton_Create 1483 -#define wxBitmapButton_GetBitmapDisabled 1484 -#define wxBitmapButton_GetBitmapFocus 1486 -#define wxBitmapButton_GetBitmapLabel 1488 -#define wxBitmapButton_GetBitmapSelected 1490 -#define wxBitmapButton_SetBitmapDisabled 1492 -#define wxBitmapButton_SetBitmapFocus 1493 -#define wxBitmapButton_SetBitmapLabel 1494 -#define wxBitmapButton_SetBitmapSelected 1495 -#define wxBitmapButton_destroy 1496 -#define wxToggleButton_new_0 1497 -#define wxToggleButton_new_4 1498 -#define wxToggleButton_Create 1499 -#define wxToggleButton_GetValue 1500 -#define wxToggleButton_SetValue 1501 -#define wxToggleButton_destroy 1502 -#define wxCalendarCtrl_new_0 1503 -#define wxCalendarCtrl_new_3 1504 -#define wxCalendarCtrl_Create 1505 -#define wxCalendarCtrl_destruct 1506 -#define wxCalendarCtrl_SetDate 1507 -#define wxCalendarCtrl_GetDate 1508 -#define wxCalendarCtrl_EnableYearChange 1509 -#define wxCalendarCtrl_EnableMonthChange 1510 -#define wxCalendarCtrl_EnableHolidayDisplay 1511 -#define wxCalendarCtrl_SetHeaderColours 1512 -#define wxCalendarCtrl_GetHeaderColourFg 1513 -#define wxCalendarCtrl_GetHeaderColourBg 1514 -#define wxCalendarCtrl_SetHighlightColours 1515 -#define wxCalendarCtrl_GetHighlightColourFg 1516 -#define wxCalendarCtrl_GetHighlightColourBg 1517 -#define wxCalendarCtrl_SetHolidayColours 1518 -#define wxCalendarCtrl_GetHolidayColourFg 1519 -#define wxCalendarCtrl_GetHolidayColourBg 1520 -#define wxCalendarCtrl_GetAttr 1521 -#define wxCalendarCtrl_SetAttr 1522 -#define wxCalendarCtrl_SetHoliday 1523 -#define wxCalendarCtrl_ResetAttr 1524 -#define wxCalendarCtrl_HitTest 1525 -#define wxCalendarDateAttr_new_0 1526 -#define wxCalendarDateAttr_new_2_1 1527 -#define wxCalendarDateAttr_new_2_0 1528 -#define wxCalendarDateAttr_SetTextColour 1529 -#define wxCalendarDateAttr_SetBackgroundColour 1530 -#define wxCalendarDateAttr_SetBorderColour 1531 -#define wxCalendarDateAttr_SetFont 1532 -#define wxCalendarDateAttr_SetBorder 1533 -#define wxCalendarDateAttr_SetHoliday 1534 -#define wxCalendarDateAttr_HasTextColour 1535 -#define wxCalendarDateAttr_HasBackgroundColour 1536 -#define wxCalendarDateAttr_HasBorderColour 1537 -#define wxCalendarDateAttr_HasFont 1538 -#define wxCalendarDateAttr_HasBorder 1539 -#define wxCalendarDateAttr_IsHoliday 1540 -#define wxCalendarDateAttr_GetTextColour 1541 -#define wxCalendarDateAttr_GetBackgroundColour 1542 -#define wxCalendarDateAttr_GetBorderColour 1543 -#define wxCalendarDateAttr_GetFont 1544 -#define wxCalendarDateAttr_GetBorder 1545 -#define wxCalendarDateAttr_destroy 1546 -#define wxCheckBox_new_4 1548 -#define wxCheckBox_new_0 1549 -#define wxCheckBox_Create 1550 -#define wxCheckBox_GetValue 1551 -#define wxCheckBox_Get3StateValue 1552 -#define wxCheckBox_Is3rdStateAllowedForUser 1553 -#define wxCheckBox_Is3State 1554 -#define wxCheckBox_IsChecked 1555 -#define wxCheckBox_SetValue 1556 -#define wxCheckBox_Set3StateValue 1557 -#define wxCheckBox_destroy 1558 -#define wxCheckListBox_new_0 1559 -#define wxCheckListBox_new_3 1561 -#define wxCheckListBox_Check 1562 -#define wxCheckListBox_IsChecked 1563 -#define wxCheckListBox_destroy 1564 -#define wxChoice_new_3 1567 -#define wxChoice_new_0 1568 -#define wxChoice_destruct 1570 -#define wxChoice_Create 1572 -#define wxChoice_Delete 1573 -#define wxChoice_GetColumns 1574 -#define wxChoice_SetColumns 1575 -#define wxComboBox_new_0 1576 -#define wxComboBox_new_3 1578 -#define wxComboBox_destruct 1579 -#define wxComboBox_Create 1581 -#define wxComboBox_CanCopy 1582 -#define wxComboBox_CanCut 1583 -#define wxComboBox_CanPaste 1584 -#define wxComboBox_CanRedo 1585 -#define wxComboBox_CanUndo 1586 -#define wxComboBox_Copy 1587 -#define wxComboBox_Cut 1588 -#define wxComboBox_GetInsertionPoint 1589 -#define wxComboBox_GetLastPosition 1590 -#define wxComboBox_GetValue 1591 -#define wxComboBox_Paste 1592 -#define wxComboBox_Redo 1593 -#define wxComboBox_Replace 1594 -#define wxComboBox_Remove 1595 -#define wxComboBox_SetInsertionPoint 1596 -#define wxComboBox_SetInsertionPointEnd 1597 -#define wxComboBox_SetSelection_1 1598 -#define wxComboBox_SetSelection_2 1599 -#define wxComboBox_SetValue 1600 -#define wxComboBox_Undo 1601 -#define wxGauge_new_0 1602 -#define wxGauge_new_4 1603 -#define wxGauge_Create 1604 -#define wxGauge_GetRange 1605 -#define wxGauge_GetValue 1606 -#define wxGauge_IsVertical 1607 -#define wxGauge_SetRange 1608 -#define wxGauge_SetValue 1609 -#define wxGauge_Pulse 1610 -#define wxGauge_destroy 1611 -#define wxGenericDirCtrl_new_0 1612 -#define wxGenericDirCtrl_new_2 1613 -#define wxGenericDirCtrl_destruct 1614 -#define wxGenericDirCtrl_Create 1615 -#define wxGenericDirCtrl_Init 1616 -#define wxGenericDirCtrl_CollapseTree 1617 -#define wxGenericDirCtrl_ExpandPath 1618 -#define wxGenericDirCtrl_GetDefaultPath 1619 -#define wxGenericDirCtrl_GetPath 1620 -#define wxGenericDirCtrl_GetFilePath 1621 -#define wxGenericDirCtrl_GetFilter 1622 -#define wxGenericDirCtrl_GetFilterIndex 1623 -#define wxGenericDirCtrl_GetRootId 1624 -#define wxGenericDirCtrl_GetTreeCtrl 1625 -#define wxGenericDirCtrl_ReCreateTree 1626 -#define wxGenericDirCtrl_SetDefaultPath 1627 -#define wxGenericDirCtrl_SetFilter 1628 -#define wxGenericDirCtrl_SetFilterIndex 1629 -#define wxGenericDirCtrl_SetPath 1630 -#define wxStaticBox_new_4 1632 -#define wxStaticBox_new_0 1633 -#define wxStaticBox_Create 1634 -#define wxStaticBox_destroy 1635 -#define wxStaticLine_new_2 1637 -#define wxStaticLine_new_0 1638 -#define wxStaticLine_Create 1639 -#define wxStaticLine_IsVertical 1640 -#define wxStaticLine_GetDefaultSize 1641 -#define wxStaticLine_destroy 1642 -#define wxListBox_new_3 1645 -#define wxListBox_new_0 1646 -#define wxListBox_destruct 1648 -#define wxListBox_Create 1650 -#define wxListBox_Deselect 1651 -#define wxListBox_GetSelections 1652 -#define wxListBox_InsertItems 1653 -#define wxListBox_IsSelected 1654 -#define wxListBox_Set 1655 -#define wxListBox_HitTest 1656 -#define wxListBox_SetFirstItem_1_0 1657 -#define wxListBox_SetFirstItem_1_1 1658 -#define wxListCtrl_new_0 1659 -#define wxListCtrl_new_2 1660 -#define wxListCtrl_Arrange 1661 -#define wxListCtrl_AssignImageList 1662 -#define wxListCtrl_ClearAll 1663 -#define wxListCtrl_Create 1664 -#define wxListCtrl_DeleteAllItems 1665 -#define wxListCtrl_DeleteColumn 1666 -#define wxListCtrl_DeleteItem 1667 -#define wxListCtrl_EditLabel 1668 -#define wxListCtrl_EnsureVisible 1669 -#define wxListCtrl_FindItem_3_0 1670 -#define wxListCtrl_FindItem_3_1 1671 -#define wxListCtrl_GetColumn 1672 -#define wxListCtrl_GetColumnCount 1673 -#define wxListCtrl_GetColumnWidth 1674 -#define wxListCtrl_GetCountPerPage 1675 -#define wxListCtrl_GetEditControl 1676 -#define wxListCtrl_GetImageList 1677 -#define wxListCtrl_GetItem 1678 -#define wxListCtrl_GetItemBackgroundColour 1679 -#define wxListCtrl_GetItemCount 1680 -#define wxListCtrl_GetItemData 1681 -#define wxListCtrl_GetItemFont 1682 -#define wxListCtrl_GetItemPosition 1683 -#define wxListCtrl_GetItemRect 1684 -#define wxListCtrl_GetItemSpacing 1685 -#define wxListCtrl_GetItemState 1686 -#define wxListCtrl_GetItemText 1687 -#define wxListCtrl_GetItemTextColour 1688 -#define wxListCtrl_GetNextItem 1689 -#define wxListCtrl_GetSelectedItemCount 1690 -#define wxListCtrl_GetTextColour 1691 -#define wxListCtrl_GetTopItem 1692 -#define wxListCtrl_GetViewRect 1693 -#define wxListCtrl_HitTest 1694 -#define wxListCtrl_InsertColumn_2 1695 -#define wxListCtrl_InsertColumn_3 1696 -#define wxListCtrl_InsertItem_1 1697 -#define wxListCtrl_InsertItem_2_1 1698 -#define wxListCtrl_InsertItem_2_0 1699 -#define wxListCtrl_InsertItem_3 1700 -#define wxListCtrl_RefreshItem 1701 -#define wxListCtrl_RefreshItems 1702 -#define wxListCtrl_ScrollList 1703 -#define wxListCtrl_SetBackgroundColour 1704 -#define wxListCtrl_SetColumn 1705 -#define wxListCtrl_SetColumnWidth 1706 -#define wxListCtrl_SetImageList 1707 -#define wxListCtrl_SetItem_1 1708 -#define wxListCtrl_SetItem_4 1709 -#define wxListCtrl_SetItemBackgroundColour 1710 -#define wxListCtrl_SetItemCount 1711 -#define wxListCtrl_SetItemData 1712 -#define wxListCtrl_SetItemFont 1713 -#define wxListCtrl_SetItemImage 1714 -#define wxListCtrl_SetItemColumnImage 1715 -#define wxListCtrl_SetItemPosition 1716 -#define wxListCtrl_SetItemState 1717 -#define wxListCtrl_SetItemText 1718 -#define wxListCtrl_SetItemTextColour 1719 -#define wxListCtrl_SetSingleStyle 1720 -#define wxListCtrl_SetTextColour 1721 -#define wxListCtrl_SetWindowStyleFlag 1722 -#define wxListCtrl_SortItems 1723 -#define wxListCtrl_destroy 1724 -#define wxListView_ClearColumnImage 1725 -#define wxListView_Focus 1726 -#define wxListView_GetFirstSelected 1727 -#define wxListView_GetFocusedItem 1728 -#define wxListView_GetNextSelected 1729 -#define wxListView_IsSelected 1730 -#define wxListView_Select 1731 -#define wxListView_SetColumnImage 1732 -#define wxListItem_new_0 1733 -#define wxListItem_new_1 1734 -#define wxListItem_destruct 1735 -#define wxListItem_Clear 1736 -#define wxListItem_GetAlign 1737 -#define wxListItem_GetBackgroundColour 1738 -#define wxListItem_GetColumn 1739 -#define wxListItem_GetFont 1740 -#define wxListItem_GetId 1741 -#define wxListItem_GetImage 1742 -#define wxListItem_GetMask 1743 -#define wxListItem_GetState 1744 -#define wxListItem_GetText 1745 -#define wxListItem_GetTextColour 1746 -#define wxListItem_GetWidth 1747 -#define wxListItem_SetAlign 1748 -#define wxListItem_SetBackgroundColour 1749 -#define wxListItem_SetColumn 1750 -#define wxListItem_SetFont 1751 -#define wxListItem_SetId 1752 -#define wxListItem_SetImage 1753 -#define wxListItem_SetMask 1754 -#define wxListItem_SetState 1755 -#define wxListItem_SetStateMask 1756 -#define wxListItem_SetText 1757 -#define wxListItem_SetTextColour 1758 -#define wxListItem_SetWidth 1759 -#define wxListItemAttr_new_0 1760 -#define wxListItemAttr_new_3 1761 -#define wxListItemAttr_GetBackgroundColour 1762 -#define wxListItemAttr_GetFont 1763 -#define wxListItemAttr_GetTextColour 1764 -#define wxListItemAttr_HasBackgroundColour 1765 -#define wxListItemAttr_HasFont 1766 -#define wxListItemAttr_HasTextColour 1767 -#define wxListItemAttr_SetBackgroundColour 1768 -#define wxListItemAttr_SetFont 1769 -#define wxListItemAttr_SetTextColour 1770 -#define wxListItemAttr_destroy 1771 -#define wxImageList_new_0 1772 -#define wxImageList_new_3 1773 -#define wxImageList_Add_1 1774 -#define wxImageList_Add_2_0 1775 -#define wxImageList_Add_2_1 1776 -#define wxImageList_Create 1777 -#define wxImageList_Draw 1779 -#define wxImageList_GetBitmap 1780 -#define wxImageList_GetIcon 1781 -#define wxImageList_GetImageCount 1782 -#define wxImageList_GetSize 1783 -#define wxImageList_Remove 1784 -#define wxImageList_RemoveAll 1785 -#define wxImageList_Replace_2 1786 -#define wxImageList_Replace_3 1787 -#define wxImageList_destroy 1788 -#define wxTextAttr_new_0 1789 -#define wxTextAttr_new_2 1790 -#define wxTextAttr_GetAlignment 1791 -#define wxTextAttr_GetBackgroundColour 1792 -#define wxTextAttr_GetFont 1793 -#define wxTextAttr_GetLeftIndent 1794 -#define wxTextAttr_GetLeftSubIndent 1795 -#define wxTextAttr_GetRightIndent 1796 -#define wxTextAttr_GetTabs 1797 -#define wxTextAttr_GetTextColour 1798 -#define wxTextAttr_HasBackgroundColour 1799 -#define wxTextAttr_HasFont 1800 -#define wxTextAttr_HasTextColour 1801 -#define wxTextAttr_GetFlags 1802 -#define wxTextAttr_IsDefault 1803 -#define wxTextAttr_SetAlignment 1804 -#define wxTextAttr_SetBackgroundColour 1805 -#define wxTextAttr_SetFlags 1806 -#define wxTextAttr_SetFont 1807 -#define wxTextAttr_SetLeftIndent 1808 -#define wxTextAttr_SetRightIndent 1809 -#define wxTextAttr_SetTabs 1810 -#define wxTextAttr_SetTextColour 1811 -#define wxTextAttr_destroy 1812 -#define wxTextCtrl_new_3 1814 -#define wxTextCtrl_new_0 1815 -#define wxTextCtrl_destruct 1817 -#define wxTextCtrl_AppendText 1818 -#define wxTextCtrl_CanCopy 1819 -#define wxTextCtrl_CanCut 1820 -#define wxTextCtrl_CanPaste 1821 -#define wxTextCtrl_CanRedo 1822 -#define wxTextCtrl_CanUndo 1823 -#define wxTextCtrl_Clear 1824 -#define wxTextCtrl_Copy 1825 -#define wxTextCtrl_Create 1826 -#define wxTextCtrl_Cut 1827 -#define wxTextCtrl_DiscardEdits 1828 -#define wxTextCtrl_ChangeValue 1829 -#define wxTextCtrl_EmulateKeyPress 1830 -#define wxTextCtrl_GetDefaultStyle 1831 -#define wxTextCtrl_GetInsertionPoint 1832 -#define wxTextCtrl_GetLastPosition 1833 -#define wxTextCtrl_GetLineLength 1834 -#define wxTextCtrl_GetLineText 1835 -#define wxTextCtrl_GetNumberOfLines 1836 -#define wxTextCtrl_GetRange 1837 -#define wxTextCtrl_GetSelection 1838 -#define wxTextCtrl_GetStringSelection 1839 -#define wxTextCtrl_GetStyle 1840 -#define wxTextCtrl_GetValue 1841 -#define wxTextCtrl_IsEditable 1842 -#define wxTextCtrl_IsModified 1843 -#define wxTextCtrl_IsMultiLine 1844 -#define wxTextCtrl_IsSingleLine 1845 -#define wxTextCtrl_LoadFile 1846 -#define wxTextCtrl_MarkDirty 1847 -#define wxTextCtrl_Paste 1848 -#define wxTextCtrl_PositionToXY 1849 -#define wxTextCtrl_Redo 1850 -#define wxTextCtrl_Remove 1851 -#define wxTextCtrl_Replace 1852 -#define wxTextCtrl_SaveFile 1853 -#define wxTextCtrl_SetDefaultStyle 1854 -#define wxTextCtrl_SetEditable 1855 -#define wxTextCtrl_SetInsertionPoint 1856 -#define wxTextCtrl_SetInsertionPointEnd 1857 -#define wxTextCtrl_SetMaxLength 1859 -#define wxTextCtrl_SetSelection 1860 -#define wxTextCtrl_SetStyle 1861 -#define wxTextCtrl_SetValue 1862 -#define wxTextCtrl_ShowPosition 1863 -#define wxTextCtrl_Undo 1864 -#define wxTextCtrl_WriteText 1865 -#define wxTextCtrl_XYToPosition 1866 -#define wxNotebook_new_0 1869 -#define wxNotebook_new_3 1870 -#define wxNotebook_destruct 1871 -#define wxNotebook_AddPage 1872 -#define wxNotebook_AdvanceSelection 1873 -#define wxNotebook_AssignImageList 1874 -#define wxNotebook_Create 1875 -#define wxNotebook_DeleteAllPages 1876 -#define wxNotebook_DeletePage 1877 -#define wxNotebook_RemovePage 1878 -#define wxNotebook_GetCurrentPage 1879 -#define wxNotebook_GetImageList 1880 -#define wxNotebook_GetPage 1882 -#define wxNotebook_GetPageCount 1883 -#define wxNotebook_GetPageImage 1884 -#define wxNotebook_GetPageText 1885 -#define wxNotebook_GetRowCount 1886 -#define wxNotebook_GetSelection 1887 -#define wxNotebook_GetThemeBackgroundColour 1888 -#define wxNotebook_HitTest 1890 -#define wxNotebook_InsertPage 1892 -#define wxNotebook_SetImageList 1893 -#define wxNotebook_SetPadding 1894 -#define wxNotebook_SetPageSize 1895 -#define wxNotebook_SetPageImage 1896 -#define wxNotebook_SetPageText 1897 -#define wxNotebook_SetSelection 1898 -#define wxNotebook_ChangeSelection 1899 -#define wxChoicebook_new_0 1900 -#define wxChoicebook_new_3 1901 -#define wxChoicebook_AddPage 1902 -#define wxChoicebook_AdvanceSelection 1903 -#define wxChoicebook_AssignImageList 1904 -#define wxChoicebook_Create 1905 -#define wxChoicebook_DeleteAllPages 1906 -#define wxChoicebook_DeletePage 1907 -#define wxChoicebook_RemovePage 1908 -#define wxChoicebook_GetCurrentPage 1909 -#define wxChoicebook_GetImageList 1910 -#define wxChoicebook_GetPage 1912 -#define wxChoicebook_GetPageCount 1913 -#define wxChoicebook_GetPageImage 1914 -#define wxChoicebook_GetPageText 1915 -#define wxChoicebook_GetSelection 1916 -#define wxChoicebook_HitTest 1917 -#define wxChoicebook_InsertPage 1918 -#define wxChoicebook_SetImageList 1919 -#define wxChoicebook_SetPageSize 1920 -#define wxChoicebook_SetPageImage 1921 -#define wxChoicebook_SetPageText 1922 -#define wxChoicebook_SetSelection 1923 -#define wxChoicebook_ChangeSelection 1924 -#define wxChoicebook_destroy 1925 -#define wxToolbook_new_0 1926 -#define wxToolbook_new_3 1927 -#define wxToolbook_AddPage 1928 -#define wxToolbook_AdvanceSelection 1929 -#define wxToolbook_AssignImageList 1930 -#define wxToolbook_Create 1931 -#define wxToolbook_DeleteAllPages 1932 -#define wxToolbook_DeletePage 1933 -#define wxToolbook_RemovePage 1934 -#define wxToolbook_GetCurrentPage 1935 -#define wxToolbook_GetImageList 1936 -#define wxToolbook_GetPage 1938 -#define wxToolbook_GetPageCount 1939 -#define wxToolbook_GetPageImage 1940 -#define wxToolbook_GetPageText 1941 -#define wxToolbook_GetSelection 1942 -#define wxToolbook_HitTest 1944 -#define wxToolbook_InsertPage 1945 -#define wxToolbook_SetImageList 1946 -#define wxToolbook_SetPageSize 1947 -#define wxToolbook_SetPageImage 1948 -#define wxToolbook_SetPageText 1949 -#define wxToolbook_SetSelection 1950 -#define wxToolbook_ChangeSelection 1951 -#define wxToolbook_destroy 1952 -#define wxListbook_new_0 1953 -#define wxListbook_new_3 1954 -#define wxListbook_AddPage 1955 -#define wxListbook_AdvanceSelection 1956 -#define wxListbook_AssignImageList 1957 -#define wxListbook_Create 1958 -#define wxListbook_DeleteAllPages 1959 -#define wxListbook_DeletePage 1960 -#define wxListbook_RemovePage 1961 -#define wxListbook_GetCurrentPage 1962 -#define wxListbook_GetImageList 1963 -#define wxListbook_GetPage 1965 -#define wxListbook_GetPageCount 1966 -#define wxListbook_GetPageImage 1967 -#define wxListbook_GetPageText 1968 -#define wxListbook_GetSelection 1969 -#define wxListbook_HitTest 1971 -#define wxListbook_InsertPage 1972 -#define wxListbook_SetImageList 1973 -#define wxListbook_SetPageSize 1974 -#define wxListbook_SetPageImage 1975 -#define wxListbook_SetPageText 1976 -#define wxListbook_SetSelection 1977 -#define wxListbook_ChangeSelection 1978 -#define wxListbook_destroy 1979 -#define wxTreebook_new_0 1980 -#define wxTreebook_new_3 1981 -#define wxTreebook_AddPage 1982 -#define wxTreebook_AdvanceSelection 1983 -#define wxTreebook_AssignImageList 1984 -#define wxTreebook_Create 1985 -#define wxTreebook_DeleteAllPages 1986 -#define wxTreebook_DeletePage 1987 -#define wxTreebook_RemovePage 1988 -#define wxTreebook_GetCurrentPage 1989 -#define wxTreebook_GetImageList 1990 -#define wxTreebook_GetPage 1992 -#define wxTreebook_GetPageCount 1993 -#define wxTreebook_GetPageImage 1994 -#define wxTreebook_GetPageText 1995 -#define wxTreebook_GetSelection 1996 -#define wxTreebook_ExpandNode 1997 -#define wxTreebook_IsNodeExpanded 1998 -#define wxTreebook_HitTest 2000 -#define wxTreebook_InsertPage 2001 -#define wxTreebook_InsertSubPage 2002 -#define wxTreebook_SetImageList 2003 -#define wxTreebook_SetPageSize 2004 -#define wxTreebook_SetPageImage 2005 -#define wxTreebook_SetPageText 2006 -#define wxTreebook_SetSelection 2007 -#define wxTreebook_ChangeSelection 2008 -#define wxTreebook_destroy 2009 -#define wxTreeCtrl_new_2 2012 -#define wxTreeCtrl_new_0 2013 -#define wxTreeCtrl_destruct 2015 -#define wxTreeCtrl_AddRoot 2016 -#define wxTreeCtrl_AppendItem 2017 -#define wxTreeCtrl_AssignImageList 2018 -#define wxTreeCtrl_AssignStateImageList 2019 -#define wxTreeCtrl_Collapse 2020 -#define wxTreeCtrl_CollapseAndReset 2021 -#define wxTreeCtrl_Create 2022 -#define wxTreeCtrl_Delete 2023 -#define wxTreeCtrl_DeleteAllItems 2024 -#define wxTreeCtrl_DeleteChildren 2025 -#define wxTreeCtrl_EditLabel 2026 -#define wxTreeCtrl_EnsureVisible 2027 -#define wxTreeCtrl_Expand 2028 -#define wxTreeCtrl_GetBoundingRect 2029 -#define wxTreeCtrl_GetChildrenCount 2031 -#define wxTreeCtrl_GetCount 2032 -#define wxTreeCtrl_GetEditControl 2033 -#define wxTreeCtrl_GetFirstChild 2034 -#define wxTreeCtrl_GetNextChild 2035 -#define wxTreeCtrl_GetFirstVisibleItem 2036 -#define wxTreeCtrl_GetImageList 2037 -#define wxTreeCtrl_GetIndent 2038 -#define wxTreeCtrl_GetItemBackgroundColour 2039 -#define wxTreeCtrl_GetItemData 2040 -#define wxTreeCtrl_GetItemFont 2041 -#define wxTreeCtrl_GetItemImage_1 2042 -#define wxTreeCtrl_GetItemImage_2 2043 -#define wxTreeCtrl_GetItemText 2044 -#define wxTreeCtrl_GetItemTextColour 2045 -#define wxTreeCtrl_GetLastChild 2046 -#define wxTreeCtrl_GetNextSibling 2047 -#define wxTreeCtrl_GetNextVisible 2048 -#define wxTreeCtrl_GetItemParent 2049 -#define wxTreeCtrl_GetPrevSibling 2050 -#define wxTreeCtrl_GetPrevVisible 2051 -#define wxTreeCtrl_GetRootItem 2052 -#define wxTreeCtrl_GetSelection 2053 -#define wxTreeCtrl_GetSelections 2054 -#define wxTreeCtrl_GetStateImageList 2055 -#define wxTreeCtrl_HitTest 2056 -#define wxTreeCtrl_InsertItem 2058 -#define wxTreeCtrl_IsBold 2059 -#define wxTreeCtrl_IsExpanded 2060 -#define wxTreeCtrl_IsSelected 2061 -#define wxTreeCtrl_IsVisible 2062 -#define wxTreeCtrl_ItemHasChildren 2063 -#define wxTreeCtrl_IsTreeItemIdOk 2064 -#define wxTreeCtrl_PrependItem 2065 -#define wxTreeCtrl_ScrollTo 2066 -#define wxTreeCtrl_SelectItem_1 2067 -#define wxTreeCtrl_SelectItem_2 2068 -#define wxTreeCtrl_SetIndent 2069 -#define wxTreeCtrl_SetImageList 2070 -#define wxTreeCtrl_SetItemBackgroundColour 2071 -#define wxTreeCtrl_SetItemBold 2072 -#define wxTreeCtrl_SetItemData 2073 -#define wxTreeCtrl_SetItemDropHighlight 2074 -#define wxTreeCtrl_SetItemFont 2075 -#define wxTreeCtrl_SetItemHasChildren 2076 -#define wxTreeCtrl_SetItemImage_2 2077 -#define wxTreeCtrl_SetItemImage_3 2078 -#define wxTreeCtrl_SetItemText 2079 -#define wxTreeCtrl_SetItemTextColour 2080 -#define wxTreeCtrl_SetStateImageList 2081 -#define wxTreeCtrl_SetWindowStyle 2082 -#define wxTreeCtrl_SortChildren 2083 -#define wxTreeCtrl_Toggle 2084 -#define wxTreeCtrl_ToggleItemSelection 2085 -#define wxTreeCtrl_Unselect 2086 -#define wxTreeCtrl_UnselectAll 2087 -#define wxTreeCtrl_UnselectItem 2088 -#define wxScrollBar_new_0 2089 -#define wxScrollBar_new_3 2090 -#define wxScrollBar_destruct 2091 -#define wxScrollBar_Create 2092 -#define wxScrollBar_GetRange 2093 -#define wxScrollBar_GetPageSize 2094 -#define wxScrollBar_GetThumbPosition 2095 -#define wxScrollBar_GetThumbSize 2096 -#define wxScrollBar_SetThumbPosition 2097 -#define wxScrollBar_SetScrollbar 2098 -#define wxSpinButton_new_2 2100 -#define wxSpinButton_new_0 2101 -#define wxSpinButton_Create 2102 -#define wxSpinButton_GetMax 2103 -#define wxSpinButton_GetMin 2104 -#define wxSpinButton_GetValue 2105 -#define wxSpinButton_SetRange 2106 -#define wxSpinButton_SetValue 2107 -#define wxSpinButton_destroy 2108 -#define wxSpinCtrl_new_0 2109 -#define wxSpinCtrl_new_2 2110 -#define wxSpinCtrl_Create 2112 -#define wxSpinCtrl_SetValue_1_1 2115 -#define wxSpinCtrl_SetValue_1_0 2116 -#define wxSpinCtrl_GetValue 2118 -#define wxSpinCtrl_SetRange 2120 -#define wxSpinCtrl_SetSelection 2121 -#define wxSpinCtrl_GetMin 2123 -#define wxSpinCtrl_GetMax 2125 -#define wxSpinCtrl_destroy 2126 -#define wxStaticText_new_0 2127 -#define wxStaticText_new_4 2128 -#define wxStaticText_Create 2129 -#define wxStaticText_GetLabel 2130 -#define wxStaticText_SetLabel 2131 -#define wxStaticText_Wrap 2132 -#define wxStaticText_destroy 2133 -#define wxStaticBitmap_new_0 2134 -#define wxStaticBitmap_new_4 2135 -#define wxStaticBitmap_Create 2136 -#define wxStaticBitmap_GetBitmap 2137 -#define wxStaticBitmap_SetBitmap 2138 -#define wxStaticBitmap_destroy 2139 -#define wxRadioBox_new 2140 -#define wxRadioBox_destruct 2142 -#define wxRadioBox_Create 2143 -#define wxRadioBox_Enable_2 2144 -#define wxRadioBox_Enable_1 2145 -#define wxRadioBox_GetSelection 2146 -#define wxRadioBox_GetString 2147 -#define wxRadioBox_SetSelection 2148 -#define wxRadioBox_Show_2 2149 -#define wxRadioBox_Show_1 2150 -#define wxRadioBox_GetColumnCount 2151 -#define wxRadioBox_GetItemHelpText 2152 -#define wxRadioBox_GetItemToolTip 2153 -#define wxRadioBox_GetItemFromPoint 2155 -#define wxRadioBox_GetRowCount 2156 -#define wxRadioBox_IsItemEnabled 2157 -#define wxRadioBox_IsItemShown 2158 -#define wxRadioBox_SetItemHelpText 2159 -#define wxRadioBox_SetItemToolTip 2160 -#define wxRadioButton_new_0 2161 -#define wxRadioButton_new_4 2162 -#define wxRadioButton_Create 2163 -#define wxRadioButton_GetValue 2164 -#define wxRadioButton_SetValue 2165 -#define wxRadioButton_destroy 2166 -#define wxSlider_new_6 2168 -#define wxSlider_new_0 2169 -#define wxSlider_Create 2170 -#define wxSlider_GetLineSize 2171 -#define wxSlider_GetMax 2172 -#define wxSlider_GetMin 2173 -#define wxSlider_GetPageSize 2174 -#define wxSlider_GetThumbLength 2175 -#define wxSlider_GetValue 2176 -#define wxSlider_SetLineSize 2177 -#define wxSlider_SetPageSize 2178 -#define wxSlider_SetRange 2179 -#define wxSlider_SetThumbLength 2180 -#define wxSlider_SetValue 2181 -#define wxSlider_destroy 2182 -#define wxDialog_new_4 2184 -#define wxDialog_new_0 2185 -#define wxDialog_destruct 2187 -#define wxDialog_Create 2188 -#define wxDialog_CreateButtonSizer 2189 -#define wxDialog_CreateStdDialogButtonSizer 2190 -#define wxDialog_EndModal 2191 -#define wxDialog_GetAffirmativeId 2192 -#define wxDialog_GetReturnCode 2193 -#define wxDialog_IsModal 2194 -#define wxDialog_SetAffirmativeId 2195 -#define wxDialog_SetReturnCode 2196 -#define wxDialog_Show 2197 -#define wxDialog_ShowModal 2198 -#define wxColourDialog_new_0 2199 -#define wxColourDialog_new_2 2200 -#define wxColourDialog_destruct 2201 -#define wxColourDialog_Create 2202 -#define wxColourDialog_GetColourData 2203 -#define wxColourData_new_0 2204 -#define wxColourData_new_1 2205 -#define wxColourData_destruct 2206 -#define wxColourData_GetChooseFull 2207 -#define wxColourData_GetColour 2208 -#define wxColourData_GetCustomColour 2210 -#define wxColourData_SetChooseFull 2211 -#define wxColourData_SetColour 2212 -#define wxColourData_SetCustomColour 2213 -#define wxPalette_new_0 2214 -#define wxPalette_new_4 2215 -#define wxPalette_destruct 2217 -#define wxPalette_Create 2218 -#define wxPalette_GetColoursCount 2219 -#define wxPalette_GetPixel 2220 -#define wxPalette_GetRGB 2221 -#define wxPalette_IsOk 2222 -#define wxDirDialog_new 2226 -#define wxDirDialog_destruct 2227 -#define wxDirDialog_GetPath 2228 -#define wxDirDialog_GetMessage 2229 -#define wxDirDialog_SetMessage 2230 -#define wxDirDialog_SetPath 2231 -#define wxFileDialog_new 2235 -#define wxFileDialog_destruct 2236 -#define wxFileDialog_GetDirectory 2237 -#define wxFileDialog_GetFilename 2238 -#define wxFileDialog_GetFilenames 2239 -#define wxFileDialog_GetFilterIndex 2240 -#define wxFileDialog_GetMessage 2241 -#define wxFileDialog_GetPath 2242 -#define wxFileDialog_GetPaths 2243 -#define wxFileDialog_GetWildcard 2244 -#define wxFileDialog_SetDirectory 2245 -#define wxFileDialog_SetFilename 2246 -#define wxFileDialog_SetFilterIndex 2247 -#define wxFileDialog_SetMessage 2248 -#define wxFileDialog_SetPath 2249 -#define wxFileDialog_SetWildcard 2250 -#define wxPickerBase_SetInternalMargin 2251 -#define wxPickerBase_GetInternalMargin 2252 -#define wxPickerBase_SetTextCtrlProportion 2253 -#define wxPickerBase_SetPickerCtrlProportion 2254 -#define wxPickerBase_GetTextCtrlProportion 2255 -#define wxPickerBase_GetPickerCtrlProportion 2256 -#define wxPickerBase_HasTextCtrl 2257 -#define wxPickerBase_GetTextCtrl 2258 -#define wxPickerBase_IsTextCtrlGrowable 2259 -#define wxPickerBase_SetPickerCtrlGrowable 2260 -#define wxPickerBase_SetTextCtrlGrowable 2261 -#define wxPickerBase_IsPickerCtrlGrowable 2262 -#define wxFilePickerCtrl_new_0 2263 -#define wxFilePickerCtrl_new_3 2264 -#define wxFilePickerCtrl_Create 2265 -#define wxFilePickerCtrl_GetPath 2266 -#define wxFilePickerCtrl_SetPath 2267 -#define wxFilePickerCtrl_destroy 2268 -#define wxDirPickerCtrl_new_0 2269 -#define wxDirPickerCtrl_new_3 2270 -#define wxDirPickerCtrl_Create 2271 -#define wxDirPickerCtrl_GetPath 2272 -#define wxDirPickerCtrl_SetPath 2273 -#define wxDirPickerCtrl_destroy 2274 -#define wxColourPickerCtrl_new_0 2275 -#define wxColourPickerCtrl_new_3 2276 -#define wxColourPickerCtrl_Create 2277 -#define wxColourPickerCtrl_GetColour 2278 -#define wxColourPickerCtrl_SetColour_1_1 2279 -#define wxColourPickerCtrl_SetColour_1_0 2280 -#define wxColourPickerCtrl_destroy 2281 -#define wxDatePickerCtrl_new_0 2282 -#define wxDatePickerCtrl_new_3 2283 -#define wxDatePickerCtrl_GetRange 2284 -#define wxDatePickerCtrl_GetValue 2285 -#define wxDatePickerCtrl_SetRange 2286 -#define wxDatePickerCtrl_SetValue 2287 -#define wxDatePickerCtrl_destroy 2288 -#define wxFontPickerCtrl_new_0 2289 -#define wxFontPickerCtrl_new_3 2290 -#define wxFontPickerCtrl_Create 2291 -#define wxFontPickerCtrl_GetSelectedFont 2292 -#define wxFontPickerCtrl_SetSelectedFont 2293 -#define wxFontPickerCtrl_GetMaxPointSize 2294 -#define wxFontPickerCtrl_SetMaxPointSize 2295 -#define wxFontPickerCtrl_destroy 2296 -#define wxFindReplaceDialog_new_0 2299 -#define wxFindReplaceDialog_new_4 2300 -#define wxFindReplaceDialog_destruct 2301 -#define wxFindReplaceDialog_Create 2302 -#define wxFindReplaceDialog_GetData 2303 -#define wxFindReplaceData_new_0 2304 -#define wxFindReplaceData_new_1 2305 -#define wxFindReplaceData_GetFindString 2306 -#define wxFindReplaceData_GetReplaceString 2307 -#define wxFindReplaceData_GetFlags 2308 -#define wxFindReplaceData_SetFlags 2309 -#define wxFindReplaceData_SetFindString 2310 -#define wxFindReplaceData_SetReplaceString 2311 -#define wxFindReplaceData_destroy 2312 -#define wxMultiChoiceDialog_new_0 2313 -#define wxMultiChoiceDialog_new_5 2315 -#define wxMultiChoiceDialog_GetSelections 2316 -#define wxMultiChoiceDialog_SetSelections 2317 -#define wxMultiChoiceDialog_destroy 2318 -#define wxSingleChoiceDialog_new_0 2319 -#define wxSingleChoiceDialog_new_5 2321 -#define wxSingleChoiceDialog_GetSelection 2322 -#define wxSingleChoiceDialog_GetStringSelection 2323 -#define wxSingleChoiceDialog_SetSelection 2324 -#define wxSingleChoiceDialog_destroy 2325 -#define wxTextEntryDialog_new 2326 -#define wxTextEntryDialog_GetValue 2327 -#define wxTextEntryDialog_SetValue 2328 -#define wxTextEntryDialog_destroy 2329 -#define wxPasswordEntryDialog_new 2330 -#define wxPasswordEntryDialog_destroy 2331 -#define wxFontData_new_0 2332 -#define wxFontData_new_1 2333 -#define wxFontData_destruct 2334 -#define wxFontData_EnableEffects 2335 -#define wxFontData_GetAllowSymbols 2336 -#define wxFontData_GetColour 2337 -#define wxFontData_GetChosenFont 2338 -#define wxFontData_GetEnableEffects 2339 -#define wxFontData_GetInitialFont 2340 -#define wxFontData_GetShowHelp 2341 -#define wxFontData_SetAllowSymbols 2342 -#define wxFontData_SetChosenFont 2343 -#define wxFontData_SetColour 2344 -#define wxFontData_SetInitialFont 2345 -#define wxFontData_SetRange 2346 -#define wxFontData_SetShowHelp 2347 -#define wxFontDialog_new_0 2351 -#define wxFontDialog_new_2 2353 -#define wxFontDialog_Create 2355 -#define wxFontDialog_GetFontData 2356 -#define wxFontDialog_destroy 2358 -#define wxProgressDialog_new 2359 -#define wxProgressDialog_destruct 2360 -#define wxProgressDialog_Resume 2361 -#define wxProgressDialog_Update_2 2362 -#define wxProgressDialog_Update_0 2363 -#define wxMessageDialog_new 2364 -#define wxMessageDialog_destruct 2365 -#define wxPageSetupDialog_new 2366 -#define wxPageSetupDialog_destruct 2367 -#define wxPageSetupDialog_GetPageSetupData 2368 -#define wxPageSetupDialog_ShowModal 2369 -#define wxPageSetupDialogData_new_0 2370 -#define wxPageSetupDialogData_new_1_0 2371 -#define wxPageSetupDialogData_new_1_1 2372 -#define wxPageSetupDialogData_destruct 2373 -#define wxPageSetupDialogData_EnableHelp 2374 -#define wxPageSetupDialogData_EnableMargins 2375 -#define wxPageSetupDialogData_EnableOrientation 2376 -#define wxPageSetupDialogData_EnablePaper 2377 -#define wxPageSetupDialogData_EnablePrinter 2378 -#define wxPageSetupDialogData_GetDefaultMinMargins 2379 -#define wxPageSetupDialogData_GetEnableMargins 2380 -#define wxPageSetupDialogData_GetEnableOrientation 2381 -#define wxPageSetupDialogData_GetEnablePaper 2382 -#define wxPageSetupDialogData_GetEnablePrinter 2383 -#define wxPageSetupDialogData_GetEnableHelp 2384 -#define wxPageSetupDialogData_GetDefaultInfo 2385 -#define wxPageSetupDialogData_GetMarginTopLeft 2386 -#define wxPageSetupDialogData_GetMarginBottomRight 2387 -#define wxPageSetupDialogData_GetMinMarginTopLeft 2388 -#define wxPageSetupDialogData_GetMinMarginBottomRight 2389 -#define wxPageSetupDialogData_GetPaperId 2390 -#define wxPageSetupDialogData_GetPaperSize 2391 -#define wxPageSetupDialogData_GetPrintData 2393 -#define wxPageSetupDialogData_IsOk 2394 -#define wxPageSetupDialogData_SetDefaultInfo 2395 -#define wxPageSetupDialogData_SetDefaultMinMargins 2396 -#define wxPageSetupDialogData_SetMarginTopLeft 2397 -#define wxPageSetupDialogData_SetMarginBottomRight 2398 -#define wxPageSetupDialogData_SetMinMarginTopLeft 2399 -#define wxPageSetupDialogData_SetMinMarginBottomRight 2400 -#define wxPageSetupDialogData_SetPaperId 2401 -#define wxPageSetupDialogData_SetPaperSize_1_1 2402 -#define wxPageSetupDialogData_SetPaperSize_1_0 2403 -#define wxPageSetupDialogData_SetPrintData 2404 -#define wxPrintDialog_new_2_0 2405 -#define wxPrintDialog_new_2_1 2406 -#define wxPrintDialog_destruct 2407 -#define wxPrintDialog_GetPrintDialogData 2408 -#define wxPrintDialog_GetPrintDC 2409 -#define wxPrintDialogData_new_0 2410 -#define wxPrintDialogData_new_1_1 2411 -#define wxPrintDialogData_new_1_0 2412 -#define wxPrintDialogData_destruct 2413 -#define wxPrintDialogData_EnableHelp 2414 -#define wxPrintDialogData_EnablePageNumbers 2415 -#define wxPrintDialogData_EnablePrintToFile 2416 -#define wxPrintDialogData_EnableSelection 2417 -#define wxPrintDialogData_GetAllPages 2418 -#define wxPrintDialogData_GetCollate 2419 -#define wxPrintDialogData_GetFromPage 2420 -#define wxPrintDialogData_GetMaxPage 2421 -#define wxPrintDialogData_GetMinPage 2422 -#define wxPrintDialogData_GetNoCopies 2423 -#define wxPrintDialogData_GetPrintData 2424 -#define wxPrintDialogData_GetPrintToFile 2425 -#define wxPrintDialogData_GetSelection 2426 -#define wxPrintDialogData_GetToPage 2427 -#define wxPrintDialogData_IsOk 2428 -#define wxPrintDialogData_SetCollate 2429 -#define wxPrintDialogData_SetFromPage 2430 -#define wxPrintDialogData_SetMaxPage 2431 -#define wxPrintDialogData_SetMinPage 2432 -#define wxPrintDialogData_SetNoCopies 2433 -#define wxPrintDialogData_SetPrintData 2434 -#define wxPrintDialogData_SetPrintToFile 2435 -#define wxPrintDialogData_SetSelection 2436 -#define wxPrintDialogData_SetToPage 2437 -#define wxPrintData_new_0 2438 -#define wxPrintData_new_1 2439 -#define wxPrintData_destruct 2440 -#define wxPrintData_GetCollate 2441 -#define wxPrintData_GetBin 2442 -#define wxPrintData_GetColour 2443 -#define wxPrintData_GetDuplex 2444 -#define wxPrintData_GetNoCopies 2445 -#define wxPrintData_GetOrientation 2446 -#define wxPrintData_GetPaperId 2447 -#define wxPrintData_GetPrinterName 2448 -#define wxPrintData_GetQuality 2449 -#define wxPrintData_IsOk 2450 -#define wxPrintData_SetBin 2451 -#define wxPrintData_SetCollate 2452 -#define wxPrintData_SetColour 2453 -#define wxPrintData_SetDuplex 2454 -#define wxPrintData_SetNoCopies 2455 -#define wxPrintData_SetOrientation 2456 -#define wxPrintData_SetPaperId 2457 -#define wxPrintData_SetPrinterName 2458 -#define wxPrintData_SetQuality 2459 -#define wxPrintPreview_new_2 2462 -#define wxPrintPreview_new_3 2463 -#define wxPrintPreview_destruct 2465 -#define wxPrintPreview_GetCanvas 2466 -#define wxPrintPreview_GetCurrentPage 2467 -#define wxPrintPreview_GetFrame 2468 -#define wxPrintPreview_GetMaxPage 2469 -#define wxPrintPreview_GetMinPage 2470 -#define wxPrintPreview_GetPrintout 2471 -#define wxPrintPreview_GetPrintoutForPrinting 2472 -#define wxPrintPreview_IsOk 2473 -#define wxPrintPreview_PaintPage 2474 -#define wxPrintPreview_Print 2475 -#define wxPrintPreview_RenderPage 2476 -#define wxPrintPreview_SetCanvas 2477 -#define wxPrintPreview_SetCurrentPage 2478 -#define wxPrintPreview_SetFrame 2479 -#define wxPrintPreview_SetPrintout 2480 -#define wxPrintPreview_SetZoom 2481 -#define wxPreviewFrame_new 2482 -#define wxPreviewFrame_destruct 2483 -#define wxPreviewFrame_CreateControlBar 2484 -#define wxPreviewFrame_CreateCanvas 2485 -#define wxPreviewFrame_Initialize 2486 -#define wxPreviewFrame_OnCloseWindow 2487 -#define wxPreviewControlBar_new 2488 -#define wxPreviewControlBar_destruct 2489 -#define wxPreviewControlBar_CreateButtons 2490 -#define wxPreviewControlBar_GetPrintPreview 2491 -#define wxPreviewControlBar_GetZoomControl 2492 -#define wxPreviewControlBar_SetZoomControl 2493 -#define wxPrinter_new 2495 -#define wxPrinter_CreateAbortWindow 2496 -#define wxPrinter_GetAbort 2497 -#define wxPrinter_GetLastError 2498 -#define wxPrinter_GetPrintDialogData 2499 -#define wxPrinter_Print 2500 -#define wxPrinter_PrintDialog 2501 -#define wxPrinter_ReportError 2502 -#define wxPrinter_Setup 2503 -#define wxPrinter_destroy 2504 -#define wxXmlResource_new_1 2505 -#define wxXmlResource_new_2 2506 -#define wxXmlResource_destruct 2507 -#define wxXmlResource_AttachUnknownControl 2508 -#define wxXmlResource_ClearHandlers 2509 -#define wxXmlResource_CompareVersion 2510 -#define wxXmlResource_Get 2511 -#define wxXmlResource_GetFlags 2512 -#define wxXmlResource_GetVersion 2513 -#define wxXmlResource_GetXRCID 2514 -#define wxXmlResource_InitAllHandlers 2515 -#define wxXmlResource_Load 2516 -#define wxXmlResource_LoadBitmap 2517 -#define wxXmlResource_LoadDialog_2 2518 -#define wxXmlResource_LoadDialog_3 2519 -#define wxXmlResource_LoadFrame_2 2520 -#define wxXmlResource_LoadFrame_3 2521 -#define wxXmlResource_LoadIcon 2522 -#define wxXmlResource_LoadMenu 2523 -#define wxXmlResource_LoadMenuBar_2 2524 -#define wxXmlResource_LoadMenuBar_1 2525 -#define wxXmlResource_LoadPanel_2 2526 -#define wxXmlResource_LoadPanel_3 2527 -#define wxXmlResource_LoadToolBar 2528 -#define wxXmlResource_Set 2529 -#define wxXmlResource_SetFlags 2530 -#define wxXmlResource_Unload 2531 -#define wxXmlResource_xrcctrl 2532 -#define wxHtmlEasyPrinting_new 2533 -#define wxHtmlEasyPrinting_destruct 2534 -#define wxHtmlEasyPrinting_GetPrintData 2535 -#define wxHtmlEasyPrinting_GetPageSetupData 2536 -#define wxHtmlEasyPrinting_PreviewFile 2537 -#define wxHtmlEasyPrinting_PreviewText 2538 -#define wxHtmlEasyPrinting_PrintFile 2539 -#define wxHtmlEasyPrinting_PrintText 2540 -#define wxHtmlEasyPrinting_PageSetup 2541 -#define wxHtmlEasyPrinting_SetFonts 2542 -#define wxHtmlEasyPrinting_SetHeader 2543 -#define wxHtmlEasyPrinting_SetFooter 2544 -#define wxGLCanvas_new_2 2546 -#define wxGLCanvas_new_3_1 2547 -#define wxGLCanvas_new_3_0 2548 -#define wxGLCanvas_GetContext 2549 -#define wxGLCanvas_SetCurrent 2551 -#define wxGLCanvas_SwapBuffers 2552 -#define wxGLCanvas_destroy 2553 -#define wxAuiManager_new 2554 -#define wxAuiManager_destruct 2555 -#define wxAuiManager_AddPane_2_1 2556 -#define wxAuiManager_AddPane_3 2557 -#define wxAuiManager_AddPane_2_0 2558 -#define wxAuiManager_DetachPane 2559 -#define wxAuiManager_GetAllPanes 2560 -#define wxAuiManager_GetArtProvider 2561 -#define wxAuiManager_GetDockSizeConstraint 2562 -#define wxAuiManager_GetFlags 2563 -#define wxAuiManager_GetManagedWindow 2564 -#define wxAuiManager_GetManager 2565 -#define wxAuiManager_GetPane_1_1 2566 -#define wxAuiManager_GetPane_1_0 2567 -#define wxAuiManager_HideHint 2568 -#define wxAuiManager_InsertPane 2569 -#define wxAuiManager_LoadPaneInfo 2570 -#define wxAuiManager_LoadPerspective 2571 -#define wxAuiManager_SavePaneInfo 2572 -#define wxAuiManager_SavePerspective 2573 -#define wxAuiManager_SetArtProvider 2574 -#define wxAuiManager_SetDockSizeConstraint 2575 -#define wxAuiManager_SetFlags 2576 -#define wxAuiManager_SetManagedWindow 2577 -#define wxAuiManager_ShowHint 2578 -#define wxAuiManager_UnInit 2579 -#define wxAuiManager_Update 2580 -#define wxAuiPaneInfo_new_0 2581 -#define wxAuiPaneInfo_new_1 2582 -#define wxAuiPaneInfo_destruct 2583 -#define wxAuiPaneInfo_BestSize_1 2584 -#define wxAuiPaneInfo_BestSize_2 2585 -#define wxAuiPaneInfo_Bottom 2586 -#define wxAuiPaneInfo_BottomDockable 2587 -#define wxAuiPaneInfo_Caption 2588 -#define wxAuiPaneInfo_CaptionVisible 2589 -#define wxAuiPaneInfo_Centre 2590 -#define wxAuiPaneInfo_CentrePane 2591 -#define wxAuiPaneInfo_CloseButton 2592 -#define wxAuiPaneInfo_DefaultPane 2593 -#define wxAuiPaneInfo_DestroyOnClose 2594 -#define wxAuiPaneInfo_Direction 2595 -#define wxAuiPaneInfo_Dock 2596 -#define wxAuiPaneInfo_Dockable 2597 -#define wxAuiPaneInfo_Fixed 2598 -#define wxAuiPaneInfo_Float 2599 -#define wxAuiPaneInfo_Floatable 2600 -#define wxAuiPaneInfo_FloatingPosition_1 2601 -#define wxAuiPaneInfo_FloatingPosition_2 2602 -#define wxAuiPaneInfo_FloatingSize_1 2603 -#define wxAuiPaneInfo_FloatingSize_2 2604 -#define wxAuiPaneInfo_Gripper 2605 -#define wxAuiPaneInfo_GripperTop 2606 -#define wxAuiPaneInfo_HasBorder 2607 -#define wxAuiPaneInfo_HasCaption 2608 -#define wxAuiPaneInfo_HasCloseButton 2609 -#define wxAuiPaneInfo_HasFlag 2610 -#define wxAuiPaneInfo_HasGripper 2611 -#define wxAuiPaneInfo_HasGripperTop 2612 -#define wxAuiPaneInfo_HasMaximizeButton 2613 -#define wxAuiPaneInfo_HasMinimizeButton 2614 -#define wxAuiPaneInfo_HasPinButton 2615 -#define wxAuiPaneInfo_Hide 2616 -#define wxAuiPaneInfo_IsBottomDockable 2617 -#define wxAuiPaneInfo_IsDocked 2618 -#define wxAuiPaneInfo_IsFixed 2619 -#define wxAuiPaneInfo_IsFloatable 2620 -#define wxAuiPaneInfo_IsFloating 2621 -#define wxAuiPaneInfo_IsLeftDockable 2622 -#define wxAuiPaneInfo_IsMovable 2623 -#define wxAuiPaneInfo_IsOk 2624 -#define wxAuiPaneInfo_IsResizable 2625 -#define wxAuiPaneInfo_IsRightDockable 2626 -#define wxAuiPaneInfo_IsShown 2627 -#define wxAuiPaneInfo_IsToolbar 2628 -#define wxAuiPaneInfo_IsTopDockable 2629 -#define wxAuiPaneInfo_Layer 2630 -#define wxAuiPaneInfo_Left 2631 -#define wxAuiPaneInfo_LeftDockable 2632 -#define wxAuiPaneInfo_MaxSize_1 2633 -#define wxAuiPaneInfo_MaxSize_2 2634 -#define wxAuiPaneInfo_MaximizeButton 2635 -#define wxAuiPaneInfo_MinSize_1 2636 -#define wxAuiPaneInfo_MinSize_2 2637 -#define wxAuiPaneInfo_MinimizeButton 2638 -#define wxAuiPaneInfo_Movable 2639 -#define wxAuiPaneInfo_Name 2640 -#define wxAuiPaneInfo_PaneBorder 2641 -#define wxAuiPaneInfo_PinButton 2642 -#define wxAuiPaneInfo_Position 2643 -#define wxAuiPaneInfo_Resizable 2644 -#define wxAuiPaneInfo_Right 2645 -#define wxAuiPaneInfo_RightDockable 2646 -#define wxAuiPaneInfo_Row 2647 -#define wxAuiPaneInfo_SafeSet 2648 -#define wxAuiPaneInfo_SetFlag 2649 -#define wxAuiPaneInfo_Show 2650 -#define wxAuiPaneInfo_ToolbarPane 2651 -#define wxAuiPaneInfo_Top 2652 -#define wxAuiPaneInfo_TopDockable 2653 -#define wxAuiPaneInfo_Window 2654 -#define wxAuiPaneInfo_GetWindow 2655 -#define wxAuiPaneInfo_GetFrame 2656 -#define wxAuiPaneInfo_GetDirection 2657 -#define wxAuiPaneInfo_GetLayer 2658 -#define wxAuiPaneInfo_GetRow 2659 -#define wxAuiPaneInfo_GetPosition 2660 -#define wxAuiPaneInfo_GetFloatingPosition 2661 -#define wxAuiPaneInfo_GetFloatingSize 2662 -#define wxAuiNotebook_new_0 2663 -#define wxAuiNotebook_new_2 2664 -#define wxAuiNotebook_AddPage 2665 -#define wxAuiNotebook_Create 2666 -#define wxAuiNotebook_DeletePage 2667 -#define wxAuiNotebook_GetArtProvider 2668 -#define wxAuiNotebook_GetPage 2669 -#define wxAuiNotebook_GetPageBitmap 2670 -#define wxAuiNotebook_GetPageCount 2671 -#define wxAuiNotebook_GetPageIndex 2672 -#define wxAuiNotebook_GetPageText 2673 -#define wxAuiNotebook_GetSelection 2674 -#define wxAuiNotebook_InsertPage 2675 -#define wxAuiNotebook_RemovePage 2676 -#define wxAuiNotebook_SetArtProvider 2677 -#define wxAuiNotebook_SetFont 2678 -#define wxAuiNotebook_SetPageBitmap 2679 -#define wxAuiNotebook_SetPageText 2680 -#define wxAuiNotebook_SetSelection 2681 -#define wxAuiNotebook_SetTabCtrlHeight 2682 -#define wxAuiNotebook_SetUniformBitmapSize 2683 -#define wxAuiNotebook_destroy 2684 -#define wxAuiTabArt_SetFlags 2685 -#define wxAuiTabArt_SetMeasuringFont 2686 -#define wxAuiTabArt_SetNormalFont 2687 -#define wxAuiTabArt_SetSelectedFont 2688 -#define wxAuiTabArt_SetColour 2689 -#define wxAuiTabArt_SetActiveColour 2690 -#define wxAuiDockArt_GetColour 2691 -#define wxAuiDockArt_GetFont 2692 -#define wxAuiDockArt_GetMetric 2693 -#define wxAuiDockArt_SetColour 2694 -#define wxAuiDockArt_SetFont 2695 -#define wxAuiDockArt_SetMetric 2696 -#define wxAuiSimpleTabArt_new 2697 -#define wxAuiSimpleTabArt_destroy 2698 -#define wxMDIParentFrame_new_0 2699 -#define wxMDIParentFrame_new_4 2700 -#define wxMDIParentFrame_destruct 2701 -#define wxMDIParentFrame_ActivateNext 2702 -#define wxMDIParentFrame_ActivatePrevious 2703 -#define wxMDIParentFrame_ArrangeIcons 2704 -#define wxMDIParentFrame_Cascade 2705 -#define wxMDIParentFrame_Create 2706 -#define wxMDIParentFrame_GetActiveChild 2707 -#define wxMDIParentFrame_GetClientWindow 2708 -#define wxMDIParentFrame_Tile 2709 -#define wxMDIChildFrame_new_0 2710 -#define wxMDIChildFrame_new_4 2711 -#define wxMDIChildFrame_destruct 2712 -#define wxMDIChildFrame_Activate 2713 -#define wxMDIChildFrame_Create 2714 -#define wxMDIChildFrame_Maximize 2715 -#define wxMDIChildFrame_Restore 2716 -#define wxMDIClientWindow_new_0 2717 -#define wxMDIClientWindow_new_2 2718 -#define wxMDIClientWindow_destruct 2719 -#define wxMDIClientWindow_CreateClient 2720 -#define wxLayoutAlgorithm_new 2721 -#define wxLayoutAlgorithm_LayoutFrame 2722 -#define wxLayoutAlgorithm_LayoutMDIFrame 2723 -#define wxLayoutAlgorithm_LayoutWindow 2724 -#define wxLayoutAlgorithm_destroy 2725 -#define wxEvent_GetId 2726 -#define wxEvent_GetSkipped 2727 -#define wxEvent_GetTimestamp 2728 -#define wxEvent_IsCommandEvent 2729 -#define wxEvent_ResumePropagation 2730 -#define wxEvent_ShouldPropagate 2731 -#define wxEvent_Skip 2732 -#define wxEvent_StopPropagation 2733 -#define wxCommandEvent_getClientData 2734 -#define wxCommandEvent_GetExtraLong 2735 -#define wxCommandEvent_GetInt 2736 -#define wxCommandEvent_GetSelection 2737 -#define wxCommandEvent_GetString 2738 -#define wxCommandEvent_IsChecked 2739 -#define wxCommandEvent_IsSelection 2740 -#define wxCommandEvent_SetInt 2741 -#define wxCommandEvent_SetString 2742 -#define wxScrollEvent_GetOrientation 2743 -#define wxScrollEvent_GetPosition 2744 -#define wxScrollWinEvent_GetOrientation 2745 -#define wxScrollWinEvent_GetPosition 2746 -#define wxMouseEvent_AltDown 2747 -#define wxMouseEvent_Button 2748 -#define wxMouseEvent_ButtonDClick 2749 -#define wxMouseEvent_ButtonDown 2750 -#define wxMouseEvent_ButtonUp 2751 -#define wxMouseEvent_CmdDown 2752 -#define wxMouseEvent_ControlDown 2753 -#define wxMouseEvent_Dragging 2754 -#define wxMouseEvent_Entering 2755 -#define wxMouseEvent_GetButton 2756 -#define wxMouseEvent_GetPosition 2759 -#define wxMouseEvent_GetLogicalPosition 2760 -#define wxMouseEvent_GetLinesPerAction 2761 -#define wxMouseEvent_GetWheelRotation 2762 -#define wxMouseEvent_GetWheelDelta 2763 -#define wxMouseEvent_GetX 2764 -#define wxMouseEvent_GetY 2765 -#define wxMouseEvent_IsButton 2766 -#define wxMouseEvent_IsPageScroll 2767 -#define wxMouseEvent_Leaving 2768 -#define wxMouseEvent_LeftDClick 2769 -#define wxMouseEvent_LeftDown 2770 -#define wxMouseEvent_LeftIsDown 2771 -#define wxMouseEvent_LeftUp 2772 -#define wxMouseEvent_MetaDown 2773 -#define wxMouseEvent_MiddleDClick 2774 -#define wxMouseEvent_MiddleDown 2775 -#define wxMouseEvent_MiddleIsDown 2776 -#define wxMouseEvent_MiddleUp 2777 -#define wxMouseEvent_Moving 2778 -#define wxMouseEvent_RightDClick 2779 -#define wxMouseEvent_RightDown 2780 -#define wxMouseEvent_RightIsDown 2781 -#define wxMouseEvent_RightUp 2782 -#define wxMouseEvent_ShiftDown 2783 -#define wxSetCursorEvent_GetCursor 2784 -#define wxSetCursorEvent_GetX 2785 -#define wxSetCursorEvent_GetY 2786 -#define wxSetCursorEvent_HasCursor 2787 -#define wxSetCursorEvent_SetCursor 2788 -#define wxKeyEvent_AltDown 2789 -#define wxKeyEvent_CmdDown 2790 -#define wxKeyEvent_ControlDown 2791 -#define wxKeyEvent_GetKeyCode 2792 -#define wxKeyEvent_GetModifiers 2793 -#define wxKeyEvent_GetPosition 2796 -#define wxKeyEvent_GetRawKeyCode 2797 -#define wxKeyEvent_GetRawKeyFlags 2798 -#define wxKeyEvent_GetUnicodeKey 2799 -#define wxKeyEvent_GetX 2800 -#define wxKeyEvent_GetY 2801 -#define wxKeyEvent_HasModifiers 2802 -#define wxKeyEvent_MetaDown 2803 -#define wxKeyEvent_ShiftDown 2804 -#define wxSizeEvent_GetSize 2805 -#define wxMoveEvent_GetPosition 2806 -#define wxEraseEvent_GetDC 2807 -#define wxFocusEvent_GetWindow 2808 -#define wxChildFocusEvent_GetWindow 2809 -#define wxMenuEvent_GetMenu 2810 -#define wxMenuEvent_GetMenuId 2811 -#define wxMenuEvent_IsPopup 2812 -#define wxCloseEvent_CanVeto 2813 -#define wxCloseEvent_GetLoggingOff 2814 -#define wxCloseEvent_SetCanVeto 2815 -#define wxCloseEvent_SetLoggingOff 2816 -#define wxCloseEvent_Veto 2817 -#define wxShowEvent_SetShow 2818 -#define wxShowEvent_GetShow 2819 -#define wxIconizeEvent_Iconized 2820 -#define wxJoystickEvent_ButtonDown 2821 -#define wxJoystickEvent_ButtonIsDown 2822 -#define wxJoystickEvent_ButtonUp 2823 -#define wxJoystickEvent_GetButtonChange 2824 -#define wxJoystickEvent_GetButtonState 2825 -#define wxJoystickEvent_GetJoystick 2826 -#define wxJoystickEvent_GetPosition 2827 -#define wxJoystickEvent_GetZPosition 2828 -#define wxJoystickEvent_IsButton 2829 -#define wxJoystickEvent_IsMove 2830 -#define wxJoystickEvent_IsZMove 2831 -#define wxUpdateUIEvent_CanUpdate 2832 -#define wxUpdateUIEvent_Check 2833 -#define wxUpdateUIEvent_Enable 2834 -#define wxUpdateUIEvent_Show 2835 -#define wxUpdateUIEvent_GetChecked 2836 -#define wxUpdateUIEvent_GetEnabled 2837 -#define wxUpdateUIEvent_GetShown 2838 -#define wxUpdateUIEvent_GetSetChecked 2839 -#define wxUpdateUIEvent_GetSetEnabled 2840 -#define wxUpdateUIEvent_GetSetShown 2841 -#define wxUpdateUIEvent_GetSetText 2842 -#define wxUpdateUIEvent_GetText 2843 -#define wxUpdateUIEvent_GetMode 2844 -#define wxUpdateUIEvent_GetUpdateInterval 2845 -#define wxUpdateUIEvent_ResetUpdateTime 2846 -#define wxUpdateUIEvent_SetMode 2847 -#define wxUpdateUIEvent_SetText 2848 -#define wxUpdateUIEvent_SetUpdateInterval 2849 -#define wxMouseCaptureChangedEvent_GetCapturedWindow 2850 -#define wxPaletteChangedEvent_SetChangedWindow 2851 -#define wxPaletteChangedEvent_GetChangedWindow 2852 -#define wxQueryNewPaletteEvent_SetPaletteRealized 2853 -#define wxQueryNewPaletteEvent_GetPaletteRealized 2854 -#define wxNavigationKeyEvent_GetDirection 2855 -#define wxNavigationKeyEvent_SetDirection 2856 -#define wxNavigationKeyEvent_IsWindowChange 2857 -#define wxNavigationKeyEvent_SetWindowChange 2858 -#define wxNavigationKeyEvent_IsFromTab 2859 -#define wxNavigationKeyEvent_SetFromTab 2860 -#define wxNavigationKeyEvent_GetCurrentFocus 2861 -#define wxNavigationKeyEvent_SetCurrentFocus 2862 -#define wxHelpEvent_GetOrigin 2863 -#define wxHelpEvent_GetPosition 2864 -#define wxHelpEvent_SetOrigin 2865 -#define wxHelpEvent_SetPosition 2866 -#define wxContextMenuEvent_GetPosition 2867 -#define wxContextMenuEvent_SetPosition 2868 -#define wxIdleEvent_CanSend 2869 -#define wxIdleEvent_GetMode 2870 -#define wxIdleEvent_RequestMore 2871 -#define wxIdleEvent_MoreRequested 2872 -#define wxIdleEvent_SetMode 2873 -#define wxGridEvent_AltDown 2874 -#define wxGridEvent_ControlDown 2875 -#define wxGridEvent_GetCol 2876 -#define wxGridEvent_GetPosition 2877 -#define wxGridEvent_GetRow 2878 -#define wxGridEvent_MetaDown 2879 -#define wxGridEvent_Selecting 2880 -#define wxGridEvent_ShiftDown 2881 -#define wxNotifyEvent_Allow 2882 -#define wxNotifyEvent_IsAllowed 2883 -#define wxNotifyEvent_Veto 2884 -#define wxSashEvent_GetEdge 2885 -#define wxSashEvent_GetDragRect 2886 -#define wxSashEvent_GetDragStatus 2887 -#define wxListEvent_GetCacheFrom 2888 -#define wxListEvent_GetCacheTo 2889 -#define wxListEvent_GetKeyCode 2890 -#define wxListEvent_GetIndex 2891 -#define wxListEvent_GetColumn 2892 -#define wxListEvent_GetPoint 2893 -#define wxListEvent_GetLabel 2894 -#define wxListEvent_GetText 2895 -#define wxListEvent_GetImage 2896 -#define wxListEvent_GetData 2897 -#define wxListEvent_GetMask 2898 -#define wxListEvent_GetItem 2899 -#define wxListEvent_IsEditCancelled 2900 -#define wxDateEvent_GetDate 2901 -#define wxCalendarEvent_GetWeekDay 2902 -#define wxFileDirPickerEvent_GetPath 2903 -#define wxColourPickerEvent_GetColour 2904 -#define wxFontPickerEvent_GetFont 2905 -#define wxStyledTextEvent_GetPosition 2906 -#define wxStyledTextEvent_GetKey 2907 -#define wxStyledTextEvent_GetModifiers 2908 -#define wxStyledTextEvent_GetModificationType 2909 -#define wxStyledTextEvent_GetText 2910 -#define wxStyledTextEvent_GetLength 2911 -#define wxStyledTextEvent_GetLinesAdded 2912 -#define wxStyledTextEvent_GetLine 2913 -#define wxStyledTextEvent_GetFoldLevelNow 2914 -#define wxStyledTextEvent_GetFoldLevelPrev 2915 -#define wxStyledTextEvent_GetMargin 2916 -#define wxStyledTextEvent_GetMessage 2917 -#define wxStyledTextEvent_GetWParam 2918 -#define wxStyledTextEvent_GetLParam 2919 -#define wxStyledTextEvent_GetListType 2920 -#define wxStyledTextEvent_GetX 2921 -#define wxStyledTextEvent_GetY 2922 -#define wxStyledTextEvent_GetDragText 2923 -#define wxStyledTextEvent_GetDragAllowMove 2924 -#define wxStyledTextEvent_GetDragResult 2925 -#define wxStyledTextEvent_GetShift 2926 -#define wxStyledTextEvent_GetControl 2927 -#define wxStyledTextEvent_GetAlt 2928 -#define utils_wxGetKeyState 2929 -#define utils_wxGetMousePosition 2930 -#define utils_wxGetMouseState 2931 -#define utils_wxSetDetectableAutoRepeat 2932 -#define utils_wxBell 2933 -#define utils_wxFindMenuItemId 2934 -#define utils_wxGenericFindWindowAtPoint 2935 -#define utils_wxFindWindowAtPoint 2936 -#define utils_wxBeginBusyCursor 2937 -#define utils_wxEndBusyCursor 2938 -#define utils_wxIsBusy 2939 -#define utils_wxShutdown 2940 -#define utils_wxShell 2941 -#define utils_wxLaunchDefaultBrowser 2942 -#define utils_wxGetEmailAddress 2943 -#define utils_wxGetUserId 2944 -#define utils_wxGetHomeDir 2945 -#define utils_wxNewId 2946 -#define utils_wxRegisterId 2947 -#define utils_wxGetCurrentId 2948 -#define utils_wxGetOsDescription 2949 -#define utils_wxIsPlatformLittleEndian 2950 -#define utils_wxIsPlatform64Bit 2951 -#define gdicmn_wxDisplaySize 2952 -#define gdicmn_wxSetCursor 2953 -#define wxPrintout_new 2954 -#define wxPrintout_destruct 2955 -#define wxPrintout_GetDC 2956 -#define wxPrintout_GetPageSizeMM 2957 -#define wxPrintout_GetPageSizePixels 2958 -#define wxPrintout_GetPaperRectPixels 2959 -#define wxPrintout_GetPPIPrinter 2960 -#define wxPrintout_GetPPIScreen 2961 -#define wxPrintout_GetTitle 2962 -#define wxPrintout_IsPreview 2963 -#define wxPrintout_FitThisSizeToPaper 2964 -#define wxPrintout_FitThisSizeToPage 2965 -#define wxPrintout_FitThisSizeToPageMargins 2966 -#define wxPrintout_MapScreenSizeToPaper 2967 -#define wxPrintout_MapScreenSizeToPage 2968 -#define wxPrintout_MapScreenSizeToPageMargins 2969 -#define wxPrintout_MapScreenSizeToDevice 2970 -#define wxPrintout_GetLogicalPaperRect 2971 -#define wxPrintout_GetLogicalPageRect 2972 -#define wxPrintout_GetLogicalPageMarginsRect 2973 -#define wxPrintout_SetLogicalOrigin 2974 -#define wxPrintout_OffsetLogicalOrigin 2975 -#define wxStyledTextCtrl_new_2 2976 -#define wxStyledTextCtrl_new_0 2977 -#define wxStyledTextCtrl_destruct 2978 -#define wxStyledTextCtrl_Create 2979 -#define wxStyledTextCtrl_AddText 2980 -#define wxStyledTextCtrl_AddStyledText 2981 -#define wxStyledTextCtrl_InsertText 2982 -#define wxStyledTextCtrl_ClearAll 2983 -#define wxStyledTextCtrl_ClearDocumentStyle 2984 -#define wxStyledTextCtrl_GetLength 2985 -#define wxStyledTextCtrl_GetCharAt 2986 -#define wxStyledTextCtrl_GetCurrentPos 2987 -#define wxStyledTextCtrl_GetAnchor 2988 -#define wxStyledTextCtrl_GetStyleAt 2989 -#define wxStyledTextCtrl_Redo 2990 -#define wxStyledTextCtrl_SetUndoCollection 2991 -#define wxStyledTextCtrl_SelectAll 2992 -#define wxStyledTextCtrl_SetSavePoint 2993 -#define wxStyledTextCtrl_GetStyledText 2994 -#define wxStyledTextCtrl_CanRedo 2995 -#define wxStyledTextCtrl_MarkerLineFromHandle 2996 -#define wxStyledTextCtrl_MarkerDeleteHandle 2997 -#define wxStyledTextCtrl_GetUndoCollection 2998 -#define wxStyledTextCtrl_GetViewWhiteSpace 2999 -#define wxStyledTextCtrl_SetViewWhiteSpace 3000 -#define wxStyledTextCtrl_PositionFromPoint 3001 -#define wxStyledTextCtrl_PositionFromPointClose 3002 -#define wxStyledTextCtrl_GotoLine 3003 -#define wxStyledTextCtrl_GotoPos 3004 -#define wxStyledTextCtrl_SetAnchor 3005 -#define wxStyledTextCtrl_GetCurLine 3006 -#define wxStyledTextCtrl_GetEndStyled 3007 -#define wxStyledTextCtrl_ConvertEOLs 3008 -#define wxStyledTextCtrl_GetEOLMode 3009 -#define wxStyledTextCtrl_SetEOLMode 3010 -#define wxStyledTextCtrl_StartStyling 3011 -#define wxStyledTextCtrl_SetStyling 3012 -#define wxStyledTextCtrl_GetBufferedDraw 3013 -#define wxStyledTextCtrl_SetBufferedDraw 3014 -#define wxStyledTextCtrl_SetTabWidth 3015 -#define wxStyledTextCtrl_GetTabWidth 3016 -#define wxStyledTextCtrl_SetCodePage 3017 -#define wxStyledTextCtrl_MarkerDefine 3018 -#define wxStyledTextCtrl_MarkerSetForeground 3019 -#define wxStyledTextCtrl_MarkerSetBackground 3020 -#define wxStyledTextCtrl_MarkerAdd 3021 -#define wxStyledTextCtrl_MarkerDelete 3022 -#define wxStyledTextCtrl_MarkerDeleteAll 3023 -#define wxStyledTextCtrl_MarkerGet 3024 -#define wxStyledTextCtrl_MarkerNext 3025 -#define wxStyledTextCtrl_MarkerPrevious 3026 -#define wxStyledTextCtrl_MarkerDefineBitmap 3027 -#define wxStyledTextCtrl_MarkerAddSet 3028 -#define wxStyledTextCtrl_MarkerSetAlpha 3029 -#define wxStyledTextCtrl_SetMarginType 3030 -#define wxStyledTextCtrl_GetMarginType 3031 -#define wxStyledTextCtrl_SetMarginWidth 3032 -#define wxStyledTextCtrl_GetMarginWidth 3033 -#define wxStyledTextCtrl_SetMarginMask 3034 -#define wxStyledTextCtrl_GetMarginMask 3035 -#define wxStyledTextCtrl_SetMarginSensitive 3036 -#define wxStyledTextCtrl_GetMarginSensitive 3037 -#define wxStyledTextCtrl_StyleClearAll 3038 -#define wxStyledTextCtrl_StyleSetForeground 3039 -#define wxStyledTextCtrl_StyleSetBackground 3040 -#define wxStyledTextCtrl_StyleSetBold 3041 -#define wxStyledTextCtrl_StyleSetItalic 3042 -#define wxStyledTextCtrl_StyleSetSize 3043 -#define wxStyledTextCtrl_StyleSetFaceName 3044 -#define wxStyledTextCtrl_StyleSetEOLFilled 3045 -#define wxStyledTextCtrl_StyleResetDefault 3046 -#define wxStyledTextCtrl_StyleSetUnderline 3047 -#define wxStyledTextCtrl_StyleSetCase 3048 -#define wxStyledTextCtrl_StyleSetHotSpot 3049 -#define wxStyledTextCtrl_SetSelForeground 3050 -#define wxStyledTextCtrl_SetSelBackground 3051 -#define wxStyledTextCtrl_GetSelAlpha 3052 -#define wxStyledTextCtrl_SetSelAlpha 3053 -#define wxStyledTextCtrl_SetCaretForeground 3054 -#define wxStyledTextCtrl_CmdKeyAssign 3055 -#define wxStyledTextCtrl_CmdKeyClear 3056 -#define wxStyledTextCtrl_CmdKeyClearAll 3057 -#define wxStyledTextCtrl_SetStyleBytes 3058 -#define wxStyledTextCtrl_StyleSetVisible 3059 -#define wxStyledTextCtrl_GetCaretPeriod 3060 -#define wxStyledTextCtrl_SetCaretPeriod 3061 -#define wxStyledTextCtrl_SetWordChars 3062 -#define wxStyledTextCtrl_BeginUndoAction 3063 -#define wxStyledTextCtrl_EndUndoAction 3064 -#define wxStyledTextCtrl_IndicatorSetStyle 3065 -#define wxStyledTextCtrl_IndicatorGetStyle 3066 -#define wxStyledTextCtrl_IndicatorSetForeground 3067 -#define wxStyledTextCtrl_IndicatorGetForeground 3068 -#define wxStyledTextCtrl_SetWhitespaceForeground 3069 -#define wxStyledTextCtrl_SetWhitespaceBackground 3070 -#define wxStyledTextCtrl_GetStyleBits 3071 -#define wxStyledTextCtrl_SetLineState 3072 -#define wxStyledTextCtrl_GetLineState 3073 -#define wxStyledTextCtrl_GetMaxLineState 3074 -#define wxStyledTextCtrl_GetCaretLineVisible 3075 -#define wxStyledTextCtrl_SetCaretLineVisible 3076 -#define wxStyledTextCtrl_GetCaretLineBackground 3077 -#define wxStyledTextCtrl_SetCaretLineBackground 3078 -#define wxStyledTextCtrl_AutoCompShow 3079 -#define wxStyledTextCtrl_AutoCompCancel 3080 -#define wxStyledTextCtrl_AutoCompActive 3081 -#define wxStyledTextCtrl_AutoCompPosStart 3082 -#define wxStyledTextCtrl_AutoCompComplete 3083 -#define wxStyledTextCtrl_AutoCompStops 3084 -#define wxStyledTextCtrl_AutoCompSetSeparator 3085 -#define wxStyledTextCtrl_AutoCompGetSeparator 3086 -#define wxStyledTextCtrl_AutoCompSelect 3087 -#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3088 -#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3089 -#define wxStyledTextCtrl_AutoCompSetFillUps 3090 -#define wxStyledTextCtrl_AutoCompSetChooseSingle 3091 -#define wxStyledTextCtrl_AutoCompGetChooseSingle 3092 -#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3093 -#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3094 -#define wxStyledTextCtrl_UserListShow 3095 -#define wxStyledTextCtrl_AutoCompSetAutoHide 3096 -#define wxStyledTextCtrl_AutoCompGetAutoHide 3097 -#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3098 -#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3099 -#define wxStyledTextCtrl_RegisterImage 3100 -#define wxStyledTextCtrl_ClearRegisteredImages 3101 -#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3102 -#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3103 -#define wxStyledTextCtrl_AutoCompSetMaxWidth 3104 -#define wxStyledTextCtrl_AutoCompGetMaxWidth 3105 -#define wxStyledTextCtrl_AutoCompSetMaxHeight 3106 -#define wxStyledTextCtrl_AutoCompGetMaxHeight 3107 -#define wxStyledTextCtrl_SetIndent 3108 -#define wxStyledTextCtrl_GetIndent 3109 -#define wxStyledTextCtrl_SetUseTabs 3110 -#define wxStyledTextCtrl_GetUseTabs 3111 -#define wxStyledTextCtrl_SetLineIndentation 3112 -#define wxStyledTextCtrl_GetLineIndentation 3113 -#define wxStyledTextCtrl_GetLineIndentPosition 3114 -#define wxStyledTextCtrl_GetColumn 3115 -#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3116 -#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3117 -#define wxStyledTextCtrl_SetIndentationGuides 3118 -#define wxStyledTextCtrl_GetIndentationGuides 3119 -#define wxStyledTextCtrl_SetHighlightGuide 3120 -#define wxStyledTextCtrl_GetHighlightGuide 3121 -#define wxStyledTextCtrl_GetLineEndPosition 3122 -#define wxStyledTextCtrl_GetCodePage 3123 -#define wxStyledTextCtrl_GetCaretForeground 3124 -#define wxStyledTextCtrl_GetReadOnly 3125 -#define wxStyledTextCtrl_SetCurrentPos 3126 -#define wxStyledTextCtrl_SetSelectionStart 3127 -#define wxStyledTextCtrl_GetSelectionStart 3128 -#define wxStyledTextCtrl_SetSelectionEnd 3129 -#define wxStyledTextCtrl_GetSelectionEnd 3130 -#define wxStyledTextCtrl_SetPrintMagnification 3131 -#define wxStyledTextCtrl_GetPrintMagnification 3132 -#define wxStyledTextCtrl_SetPrintColourMode 3133 -#define wxStyledTextCtrl_GetPrintColourMode 3134 -#define wxStyledTextCtrl_FindText 3135 -#define wxStyledTextCtrl_FormatRange 3136 -#define wxStyledTextCtrl_GetFirstVisibleLine 3137 -#define wxStyledTextCtrl_GetLine 3138 -#define wxStyledTextCtrl_GetLineCount 3139 -#define wxStyledTextCtrl_SetMarginLeft 3140 -#define wxStyledTextCtrl_GetMarginLeft 3141 -#define wxStyledTextCtrl_SetMarginRight 3142 -#define wxStyledTextCtrl_GetMarginRight 3143 -#define wxStyledTextCtrl_GetModify 3144 -#define wxStyledTextCtrl_SetSelection 3145 -#define wxStyledTextCtrl_GetSelectedText 3146 -#define wxStyledTextCtrl_GetTextRange 3147 -#define wxStyledTextCtrl_HideSelection 3148 -#define wxStyledTextCtrl_LineFromPosition 3149 -#define wxStyledTextCtrl_PositionFromLine 3150 -#define wxStyledTextCtrl_LineScroll 3151 -#define wxStyledTextCtrl_EnsureCaretVisible 3152 -#define wxStyledTextCtrl_ReplaceSelection 3153 -#define wxStyledTextCtrl_SetReadOnly 3154 -#define wxStyledTextCtrl_CanPaste 3155 -#define wxStyledTextCtrl_CanUndo 3156 -#define wxStyledTextCtrl_EmptyUndoBuffer 3157 -#define wxStyledTextCtrl_Undo 3158 -#define wxStyledTextCtrl_Cut 3159 -#define wxStyledTextCtrl_Copy 3160 -#define wxStyledTextCtrl_Paste 3161 -#define wxStyledTextCtrl_Clear 3162 -#define wxStyledTextCtrl_SetText 3163 -#define wxStyledTextCtrl_GetText 3164 -#define wxStyledTextCtrl_GetTextLength 3165 -#define wxStyledTextCtrl_GetOvertype 3166 -#define wxStyledTextCtrl_SetCaretWidth 3167 -#define wxStyledTextCtrl_GetCaretWidth 3168 -#define wxStyledTextCtrl_SetTargetStart 3169 -#define wxStyledTextCtrl_GetTargetStart 3170 -#define wxStyledTextCtrl_SetTargetEnd 3171 -#define wxStyledTextCtrl_GetTargetEnd 3172 -#define wxStyledTextCtrl_ReplaceTarget 3173 -#define wxStyledTextCtrl_SearchInTarget 3174 -#define wxStyledTextCtrl_SetSearchFlags 3175 -#define wxStyledTextCtrl_GetSearchFlags 3176 -#define wxStyledTextCtrl_CallTipShow 3177 -#define wxStyledTextCtrl_CallTipCancel 3178 -#define wxStyledTextCtrl_CallTipActive 3179 -#define wxStyledTextCtrl_CallTipPosAtStart 3180 -#define wxStyledTextCtrl_CallTipSetHighlight 3181 -#define wxStyledTextCtrl_CallTipSetBackground 3182 -#define wxStyledTextCtrl_CallTipSetForeground 3183 -#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3184 -#define wxStyledTextCtrl_CallTipUseStyle 3185 -#define wxStyledTextCtrl_VisibleFromDocLine 3186 -#define wxStyledTextCtrl_DocLineFromVisible 3187 -#define wxStyledTextCtrl_WrapCount 3188 -#define wxStyledTextCtrl_SetFoldLevel 3189 -#define wxStyledTextCtrl_GetFoldLevel 3190 -#define wxStyledTextCtrl_GetLastChild 3191 -#define wxStyledTextCtrl_GetFoldParent 3192 -#define wxStyledTextCtrl_ShowLines 3193 -#define wxStyledTextCtrl_HideLines 3194 -#define wxStyledTextCtrl_GetLineVisible 3195 -#define wxStyledTextCtrl_SetFoldExpanded 3196 -#define wxStyledTextCtrl_GetFoldExpanded 3197 -#define wxStyledTextCtrl_ToggleFold 3198 -#define wxStyledTextCtrl_EnsureVisible 3199 -#define wxStyledTextCtrl_SetFoldFlags 3200 -#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3201 -#define wxStyledTextCtrl_SetTabIndents 3202 -#define wxStyledTextCtrl_GetTabIndents 3203 -#define wxStyledTextCtrl_SetBackSpaceUnIndents 3204 -#define wxStyledTextCtrl_GetBackSpaceUnIndents 3205 -#define wxStyledTextCtrl_SetMouseDwellTime 3206 -#define wxStyledTextCtrl_GetMouseDwellTime 3207 -#define wxStyledTextCtrl_WordStartPosition 3208 -#define wxStyledTextCtrl_WordEndPosition 3209 -#define wxStyledTextCtrl_SetWrapMode 3210 -#define wxStyledTextCtrl_GetWrapMode 3211 -#define wxStyledTextCtrl_SetWrapVisualFlags 3212 -#define wxStyledTextCtrl_GetWrapVisualFlags 3213 -#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3214 -#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3215 -#define wxStyledTextCtrl_SetWrapStartIndent 3216 -#define wxStyledTextCtrl_GetWrapStartIndent 3217 -#define wxStyledTextCtrl_SetLayoutCache 3218 -#define wxStyledTextCtrl_GetLayoutCache 3219 -#define wxStyledTextCtrl_SetScrollWidth 3220 -#define wxStyledTextCtrl_GetScrollWidth 3221 -#define wxStyledTextCtrl_TextWidth 3222 -#define wxStyledTextCtrl_GetEndAtLastLine 3223 -#define wxStyledTextCtrl_TextHeight 3224 -#define wxStyledTextCtrl_SetUseVerticalScrollBar 3225 -#define wxStyledTextCtrl_GetUseVerticalScrollBar 3226 -#define wxStyledTextCtrl_AppendText 3227 -#define wxStyledTextCtrl_GetTwoPhaseDraw 3228 -#define wxStyledTextCtrl_SetTwoPhaseDraw 3229 -#define wxStyledTextCtrl_TargetFromSelection 3230 -#define wxStyledTextCtrl_LinesJoin 3231 -#define wxStyledTextCtrl_LinesSplit 3232 -#define wxStyledTextCtrl_SetFoldMarginColour 3233 -#define wxStyledTextCtrl_SetFoldMarginHiColour 3234 -#define wxStyledTextCtrl_LineDown 3235 -#define wxStyledTextCtrl_LineDownExtend 3236 -#define wxStyledTextCtrl_LineUp 3237 -#define wxStyledTextCtrl_LineUpExtend 3238 -#define wxStyledTextCtrl_CharLeft 3239 -#define wxStyledTextCtrl_CharLeftExtend 3240 -#define wxStyledTextCtrl_CharRight 3241 -#define wxStyledTextCtrl_CharRightExtend 3242 -#define wxStyledTextCtrl_WordLeft 3243 -#define wxStyledTextCtrl_WordLeftExtend 3244 -#define wxStyledTextCtrl_WordRight 3245 -#define wxStyledTextCtrl_WordRightExtend 3246 -#define wxStyledTextCtrl_Home 3247 -#define wxStyledTextCtrl_HomeExtend 3248 -#define wxStyledTextCtrl_LineEnd 3249 -#define wxStyledTextCtrl_LineEndExtend 3250 -#define wxStyledTextCtrl_DocumentStart 3251 -#define wxStyledTextCtrl_DocumentStartExtend 3252 -#define wxStyledTextCtrl_DocumentEnd 3253 -#define wxStyledTextCtrl_DocumentEndExtend 3254 -#define wxStyledTextCtrl_PageUp 3255 -#define wxStyledTextCtrl_PageUpExtend 3256 -#define wxStyledTextCtrl_PageDown 3257 -#define wxStyledTextCtrl_PageDownExtend 3258 -#define wxStyledTextCtrl_EditToggleOvertype 3259 -#define wxStyledTextCtrl_Cancel 3260 -#define wxStyledTextCtrl_DeleteBack 3261 -#define wxStyledTextCtrl_Tab 3262 -#define wxStyledTextCtrl_BackTab 3263 -#define wxStyledTextCtrl_NewLine 3264 -#define wxStyledTextCtrl_FormFeed 3265 -#define wxStyledTextCtrl_VCHome 3266 -#define wxStyledTextCtrl_VCHomeExtend 3267 -#define wxStyledTextCtrl_ZoomIn 3268 -#define wxStyledTextCtrl_ZoomOut 3269 -#define wxStyledTextCtrl_DelWordLeft 3270 -#define wxStyledTextCtrl_DelWordRight 3271 -#define wxStyledTextCtrl_LineCut 3272 -#define wxStyledTextCtrl_LineDelete 3273 -#define wxStyledTextCtrl_LineTranspose 3274 -#define wxStyledTextCtrl_LineDuplicate 3275 -#define wxStyledTextCtrl_LowerCase 3276 -#define wxStyledTextCtrl_UpperCase 3277 -#define wxStyledTextCtrl_LineScrollDown 3278 -#define wxStyledTextCtrl_LineScrollUp 3279 -#define wxStyledTextCtrl_DeleteBackNotLine 3280 -#define wxStyledTextCtrl_HomeDisplay 3281 -#define wxStyledTextCtrl_HomeDisplayExtend 3282 -#define wxStyledTextCtrl_LineEndDisplay 3283 -#define wxStyledTextCtrl_LineEndDisplayExtend 3284 -#define wxStyledTextCtrl_HomeWrapExtend 3285 -#define wxStyledTextCtrl_LineEndWrap 3286 -#define wxStyledTextCtrl_LineEndWrapExtend 3287 -#define wxStyledTextCtrl_VCHomeWrap 3288 -#define wxStyledTextCtrl_VCHomeWrapExtend 3289 -#define wxStyledTextCtrl_LineCopy 3290 -#define wxStyledTextCtrl_MoveCaretInsideView 3291 -#define wxStyledTextCtrl_LineLength 3292 -#define wxStyledTextCtrl_BraceHighlight 3293 -#define wxStyledTextCtrl_BraceBadLight 3294 -#define wxStyledTextCtrl_BraceMatch 3295 -#define wxStyledTextCtrl_GetViewEOL 3296 -#define wxStyledTextCtrl_SetViewEOL 3297 -#define wxStyledTextCtrl_SetModEventMask 3298 -#define wxStyledTextCtrl_GetEdgeColumn 3299 -#define wxStyledTextCtrl_SetEdgeColumn 3300 -#define wxStyledTextCtrl_SetEdgeMode 3301 -#define wxStyledTextCtrl_GetEdgeMode 3302 -#define wxStyledTextCtrl_GetEdgeColour 3303 -#define wxStyledTextCtrl_SetEdgeColour 3304 -#define wxStyledTextCtrl_SearchAnchor 3305 -#define wxStyledTextCtrl_SearchNext 3306 -#define wxStyledTextCtrl_SearchPrev 3307 -#define wxStyledTextCtrl_LinesOnScreen 3308 -#define wxStyledTextCtrl_UsePopUp 3309 -#define wxStyledTextCtrl_SelectionIsRectangle 3310 -#define wxStyledTextCtrl_SetZoom 3311 -#define wxStyledTextCtrl_GetZoom 3312 -#define wxStyledTextCtrl_GetModEventMask 3313 -#define wxStyledTextCtrl_SetSTCFocus 3314 -#define wxStyledTextCtrl_GetSTCFocus 3315 -#define wxStyledTextCtrl_SetStatus 3316 -#define wxStyledTextCtrl_GetStatus 3317 -#define wxStyledTextCtrl_SetMouseDownCaptures 3318 -#define wxStyledTextCtrl_GetMouseDownCaptures 3319 -#define wxStyledTextCtrl_SetSTCCursor 3320 -#define wxStyledTextCtrl_GetSTCCursor 3321 -#define wxStyledTextCtrl_SetControlCharSymbol 3322 -#define wxStyledTextCtrl_GetControlCharSymbol 3323 -#define wxStyledTextCtrl_WordPartLeft 3324 -#define wxStyledTextCtrl_WordPartLeftExtend 3325 -#define wxStyledTextCtrl_WordPartRight 3326 -#define wxStyledTextCtrl_WordPartRightExtend 3327 -#define wxStyledTextCtrl_SetVisiblePolicy 3328 -#define wxStyledTextCtrl_DelLineLeft 3329 -#define wxStyledTextCtrl_DelLineRight 3330 -#define wxStyledTextCtrl_GetXOffset 3331 -#define wxStyledTextCtrl_ChooseCaretX 3332 -#define wxStyledTextCtrl_SetXCaretPolicy 3333 -#define wxStyledTextCtrl_SetYCaretPolicy 3334 -#define wxStyledTextCtrl_GetPrintWrapMode 3335 -#define wxStyledTextCtrl_SetHotspotActiveForeground 3336 -#define wxStyledTextCtrl_SetHotspotActiveBackground 3337 -#define wxStyledTextCtrl_SetHotspotActiveUnderline 3338 -#define wxStyledTextCtrl_SetHotspotSingleLine 3339 -#define wxStyledTextCtrl_ParaDownExtend 3340 -#define wxStyledTextCtrl_ParaUp 3341 -#define wxStyledTextCtrl_ParaUpExtend 3342 -#define wxStyledTextCtrl_PositionBefore 3343 -#define wxStyledTextCtrl_PositionAfter 3344 -#define wxStyledTextCtrl_CopyRange 3345 -#define wxStyledTextCtrl_CopyText 3346 -#define wxStyledTextCtrl_SetSelectionMode 3347 -#define wxStyledTextCtrl_GetSelectionMode 3348 -#define wxStyledTextCtrl_LineDownRectExtend 3349 -#define wxStyledTextCtrl_LineUpRectExtend 3350 -#define wxStyledTextCtrl_CharLeftRectExtend 3351 -#define wxStyledTextCtrl_CharRightRectExtend 3352 -#define wxStyledTextCtrl_HomeRectExtend 3353 -#define wxStyledTextCtrl_VCHomeRectExtend 3354 -#define wxStyledTextCtrl_LineEndRectExtend 3355 -#define wxStyledTextCtrl_PageUpRectExtend 3356 -#define wxStyledTextCtrl_PageDownRectExtend 3357 -#define wxStyledTextCtrl_StutteredPageUp 3358 -#define wxStyledTextCtrl_StutteredPageUpExtend 3359 -#define wxStyledTextCtrl_StutteredPageDown 3360 -#define wxStyledTextCtrl_StutteredPageDownExtend 3361 -#define wxStyledTextCtrl_WordLeftEnd 3362 -#define wxStyledTextCtrl_WordLeftEndExtend 3363 -#define wxStyledTextCtrl_WordRightEnd 3364 -#define wxStyledTextCtrl_WordRightEndExtend 3365 -#define wxStyledTextCtrl_SetWhitespaceChars 3366 -#define wxStyledTextCtrl_SetCharsDefault 3367 -#define wxStyledTextCtrl_AutoCompGetCurrent 3368 -#define wxStyledTextCtrl_Allocate 3369 -#define wxStyledTextCtrl_FindColumn 3370 -#define wxStyledTextCtrl_GetCaretSticky 3371 -#define wxStyledTextCtrl_SetCaretSticky 3372 -#define wxStyledTextCtrl_ToggleCaretSticky 3373 -#define wxStyledTextCtrl_SetPasteConvertEndings 3374 -#define wxStyledTextCtrl_GetPasteConvertEndings 3375 -#define wxStyledTextCtrl_SelectionDuplicate 3376 -#define wxStyledTextCtrl_SetCaretLineBackAlpha 3377 -#define wxStyledTextCtrl_GetCaretLineBackAlpha 3378 -#define wxStyledTextCtrl_StartRecord 3379 -#define wxStyledTextCtrl_StopRecord 3380 -#define wxStyledTextCtrl_SetLexer 3381 -#define wxStyledTextCtrl_GetLexer 3382 -#define wxStyledTextCtrl_Colourise 3383 -#define wxStyledTextCtrl_SetProperty 3384 -#define wxStyledTextCtrl_SetKeyWords 3385 -#define wxStyledTextCtrl_SetLexerLanguage 3386 -#define wxStyledTextCtrl_GetProperty 3387 -#define wxStyledTextCtrl_GetStyleBitsNeeded 3388 -#define wxStyledTextCtrl_GetCurrentLine 3389 -#define wxStyledTextCtrl_StyleSetSpec 3390 -#define wxStyledTextCtrl_StyleSetFont 3391 -#define wxStyledTextCtrl_StyleSetFontAttr 3392 -#define wxStyledTextCtrl_StyleSetCharacterSet 3393 -#define wxStyledTextCtrl_StyleSetFontEncoding 3394 -#define wxStyledTextCtrl_CmdKeyExecute 3395 -#define wxStyledTextCtrl_SetMargins 3396 -#define wxStyledTextCtrl_GetSelection 3397 -#define wxStyledTextCtrl_PointFromPosition 3398 -#define wxStyledTextCtrl_ScrollToLine 3399 -#define wxStyledTextCtrl_ScrollToColumn 3400 -#define wxStyledTextCtrl_SetVScrollBar 3401 -#define wxStyledTextCtrl_SetHScrollBar 3402 -#define wxStyledTextCtrl_GetLastKeydownProcessed 3403 -#define wxStyledTextCtrl_SetLastKeydownProcessed 3404 -#define wxStyledTextCtrl_SaveFile 3405 -#define wxStyledTextCtrl_LoadFile 3406 -#define wxStyledTextCtrl_DoDragOver 3407 -#define wxStyledTextCtrl_DoDropText 3408 -#define wxStyledTextCtrl_GetUseAntiAliasing 3409 -#define wxStyledTextCtrl_AddTextRaw 3410 -#define wxStyledTextCtrl_InsertTextRaw 3411 -#define wxStyledTextCtrl_GetCurLineRaw 3412 -#define wxStyledTextCtrl_GetLineRaw 3413 -#define wxStyledTextCtrl_GetSelectedTextRaw 3414 -#define wxStyledTextCtrl_GetTextRangeRaw 3415 -#define wxStyledTextCtrl_SetTextRaw 3416 -#define wxStyledTextCtrl_GetTextRaw 3417 -#define wxStyledTextCtrl_AppendTextRaw 3418 -#define wxArtProvider_GetBitmap 3419 -#define wxArtProvider_GetIcon 3420 -#define wxTreeEvent_GetKeyCode 3421 -#define wxTreeEvent_GetItem 3422 -#define wxTreeEvent_GetKeyEvent 3423 -#define wxTreeEvent_GetLabel 3424 -#define wxTreeEvent_GetOldItem 3425 -#define wxTreeEvent_GetPoint 3426 -#define wxTreeEvent_IsEditCancelled 3427 -#define wxTreeEvent_SetToolTip 3428 -#define wxNotebookEvent_GetOldSelection 3429 -#define wxNotebookEvent_GetSelection 3430 -#define wxNotebookEvent_SetOldSelection 3431 -#define wxNotebookEvent_SetSelection 3432 -#define wxFileDataObject_new 3433 -#define wxFileDataObject_AddFile 3434 -#define wxFileDataObject_GetFilenames 3435 -#define wxFileDataObject_destroy 3436 -#define wxTextDataObject_new 3437 -#define wxTextDataObject_GetTextLength 3438 -#define wxTextDataObject_GetText 3439 -#define wxTextDataObject_SetText 3440 -#define wxTextDataObject_destroy 3441 -#define wxBitmapDataObject_new_1_1 3442 -#define wxBitmapDataObject_new_1_0 3443 -#define wxBitmapDataObject_GetBitmap 3444 -#define wxBitmapDataObject_SetBitmap 3445 -#define wxBitmapDataObject_destroy 3446 -#define wxClipboard_new 3448 -#define wxClipboard_destruct 3449 -#define wxClipboard_AddData 3450 -#define wxClipboard_Clear 3451 -#define wxClipboard_Close 3452 -#define wxClipboard_Flush 3453 -#define wxClipboard_GetData 3454 -#define wxClipboard_IsOpened 3455 -#define wxClipboard_Open 3456 -#define wxClipboard_SetData 3457 -#define wxClipboard_UsePrimarySelection 3459 -#define wxClipboard_IsSupported 3460 -#define wxClipboard_Get 3461 -#define wxSpinEvent_GetPosition 3462 -#define wxSpinEvent_SetPosition 3463 -#define wxSplitterWindow_new_0 3464 -#define wxSplitterWindow_new_2 3465 -#define wxSplitterWindow_destruct 3466 -#define wxSplitterWindow_Create 3467 -#define wxSplitterWindow_GetMinimumPaneSize 3468 -#define wxSplitterWindow_GetSashGravity 3469 -#define wxSplitterWindow_GetSashPosition 3470 -#define wxSplitterWindow_GetSplitMode 3471 -#define wxSplitterWindow_GetWindow1 3472 -#define wxSplitterWindow_GetWindow2 3473 -#define wxSplitterWindow_Initialize 3474 -#define wxSplitterWindow_IsSplit 3475 -#define wxSplitterWindow_ReplaceWindow 3476 -#define wxSplitterWindow_SetSashGravity 3477 -#define wxSplitterWindow_SetSashPosition 3478 -#define wxSplitterWindow_SetSashSize 3479 -#define wxSplitterWindow_SetMinimumPaneSize 3480 -#define wxSplitterWindow_SetSplitMode 3481 -#define wxSplitterWindow_SplitHorizontally 3482 -#define wxSplitterWindow_SplitVertically 3483 -#define wxSplitterWindow_Unsplit 3484 -#define wxSplitterWindow_UpdateSize 3485 -#define wxSplitterEvent_GetSashPosition 3486 -#define wxSplitterEvent_GetX 3487 -#define wxSplitterEvent_GetY 3488 -#define wxSplitterEvent_GetWindowBeingRemoved 3489 -#define wxSplitterEvent_SetSashPosition 3490 -#define wxHtmlWindow_new_0 3491 -#define wxHtmlWindow_new_2 3492 -#define wxHtmlWindow_AppendToPage 3493 -#define wxHtmlWindow_GetOpenedAnchor 3494 -#define wxHtmlWindow_GetOpenedPage 3495 -#define wxHtmlWindow_GetOpenedPageTitle 3496 -#define wxHtmlWindow_GetRelatedFrame 3497 -#define wxHtmlWindow_HistoryBack 3498 -#define wxHtmlWindow_HistoryCanBack 3499 -#define wxHtmlWindow_HistoryCanForward 3500 -#define wxHtmlWindow_HistoryClear 3501 -#define wxHtmlWindow_HistoryForward 3502 -#define wxHtmlWindow_LoadFile 3503 -#define wxHtmlWindow_LoadPage 3504 -#define wxHtmlWindow_SelectAll 3505 -#define wxHtmlWindow_SelectionToText 3506 -#define wxHtmlWindow_SelectLine 3507 -#define wxHtmlWindow_SelectWord 3508 -#define wxHtmlWindow_SetBorders 3509 -#define wxHtmlWindow_SetFonts 3510 -#define wxHtmlWindow_SetPage 3511 -#define wxHtmlWindow_SetRelatedFrame 3512 -#define wxHtmlWindow_SetRelatedStatusBar 3513 -#define wxHtmlWindow_ToText 3514 -#define wxHtmlWindow_destroy 3515 -#define wxHtmlLinkEvent_GetLinkInfo 3516 -#define wxSystemSettings_GetColour 3517 -#define wxSystemSettings_GetFont 3518 -#define wxSystemSettings_GetMetric 3519 -#define wxSystemSettings_GetScreenType 3520 -#define wxSystemOptions_GetOption 3521 -#define wxSystemOptions_GetOptionInt 3522 -#define wxSystemOptions_HasOption 3523 -#define wxSystemOptions_IsFalse 3524 -#define wxSystemOptions_SetOption_2_1 3525 -#define wxSystemOptions_SetOption_2_0 3526 -#define wxAuiNotebookEvent_SetSelection 3527 -#define wxAuiNotebookEvent_GetSelection 3528 -#define wxAuiNotebookEvent_SetOldSelection 3529 -#define wxAuiNotebookEvent_GetOldSelection 3530 -#define wxAuiNotebookEvent_SetDragSource 3531 -#define wxAuiNotebookEvent_GetDragSource 3532 -#define wxAuiManagerEvent_SetManager 3533 -#define wxAuiManagerEvent_GetManager 3534 -#define wxAuiManagerEvent_SetPane 3535 -#define wxAuiManagerEvent_GetPane 3536 -#define wxAuiManagerEvent_SetButton 3537 -#define wxAuiManagerEvent_GetButton 3538 -#define wxAuiManagerEvent_SetDC 3539 -#define wxAuiManagerEvent_GetDC 3540 -#define wxAuiManagerEvent_Veto 3541 -#define wxAuiManagerEvent_GetVeto 3542 -#define wxAuiManagerEvent_SetCanVeto 3543 -#define wxAuiManagerEvent_CanVeto 3544 -#define wxLogNull_new 3545 -#define wxLogNull_destroy 3546 -#define wxTaskBarIcon_new 3547 -#define wxTaskBarIcon_destruct 3548 -#define wxTaskBarIcon_PopupMenu 3549 -#define wxTaskBarIcon_RemoveIcon 3550 -#define wxTaskBarIcon_SetIcon 3551 -#define wxLocale_new_0 3552 -#define wxLocale_new_2 3554 -#define wxLocale_destruct 3555 -#define wxLocale_Init 3557 -#define wxLocale_AddCatalog_1 3558 -#define wxLocale_AddCatalog_3 3559 -#define wxLocale_AddCatalogLookupPathPrefix 3560 -#define wxLocale_GetCanonicalName 3561 -#define wxLocale_GetLanguage 3562 -#define wxLocale_GetLanguageName 3563 -#define wxLocale_GetLocale 3564 -#define wxLocale_GetName 3565 -#define wxLocale_GetString_2 3566 -#define wxLocale_GetString_4 3567 -#define wxLocale_GetHeaderValue 3568 -#define wxLocale_GetSysName 3569 -#define wxLocale_GetSystemEncoding 3570 -#define wxLocale_GetSystemEncodingName 3571 -#define wxLocale_GetSystemLanguage 3572 -#define wxLocale_IsLoaded 3573 -#define wxLocale_IsOk 3574 -#define wxActivateEvent_GetActive 3575 -#define wxPopupWindow_new_2 3577 -#define wxPopupWindow_new_0 3578 -#define wxPopupWindow_destruct 3580 -#define wxPopupWindow_Create 3581 -#define wxPopupWindow_Position 3582 -#define wxPopupTransientWindow_new_0 3583 -#define wxPopupTransientWindow_new_2 3584 -#define wxPopupTransientWindow_destruct 3585 -#define wxPopupTransientWindow_Popup 3586 -#define wxPopupTransientWindow_Dismiss 3587 -#define wxOverlay_new 3588 -#define wxOverlay_destruct 3589 -#define wxOverlay_Reset 3590 -#define wxDCOverlay_new_6 3591 -#define wxDCOverlay_new_2 3592 -#define wxDCOverlay_destruct 3593 -#define wxDCOverlay_Clear 3594 +#define wxWindow_DragAcceptFiles 126 +#define wxWindow_Enable 127 +#define wxWindow_FindFocus 128 +#define wxWindow_FindWindow_1_0 129 +#define wxWindow_FindWindow_1_1 130 +#define wxWindow_FindWindowById 131 +#define wxWindow_FindWindowByName 132 +#define wxWindow_FindWindowByLabel 133 +#define wxWindow_Fit 134 +#define wxWindow_FitInside 135 +#define wxWindow_Freeze 136 +#define wxWindow_GetAcceleratorTable 137 +#define wxWindow_GetBackgroundColour 138 +#define wxWindow_GetBackgroundStyle 139 +#define wxWindow_GetBestSize 140 +#define wxWindow_GetCaret 142 +#define wxWindow_GetCapture 143 +#define wxWindow_GetCharHeight 144 +#define wxWindow_GetCharWidth 145 +#define wxWindow_GetChildren 146 +#define wxWindow_GetClientSize 149 +#define wxWindow_GetContainingSizer 150 +#define wxWindow_GetCursor 151 +#define wxWindow_GetDropTarget 152 +#define wxWindow_GetEventHandler 153 +#define wxWindow_GetExtraStyle 154 +#define wxWindow_GetFont 155 +#define wxWindow_GetForegroundColour 156 +#define wxWindow_GetGrandParent 157 +#define wxWindow_GetHandle 158 +#define wxWindow_GetHelpText 159 +#define wxWindow_GetId 160 +#define wxWindow_GetLabel 161 +#define wxWindow_GetMaxSize 162 +#define wxWindow_GetMinSize 163 +#define wxWindow_GetName 164 +#define wxWindow_GetParent 165 +#define wxWindow_GetPosition 167 +#define wxWindow_GetRect 168 +#define wxWindow_GetScreenPosition 170 +#define wxWindow_GetScreenRect 171 +#define wxWindow_GetScrollPos 172 +#define wxWindow_GetScrollRange 173 +#define wxWindow_GetScrollThumb 174 +#define wxWindow_GetSize 176 +#define wxWindow_GetSizer 177 +#define wxWindow_GetTextExtent 178 +#define wxWindow_GetToolTip 179 +#define wxWindow_GetUpdateRegion 180 +#define wxWindow_GetVirtualSize 182 +#define wxWindow_GetWindowStyleFlag 184 +#define wxWindow_GetWindowVariant 185 +#define wxWindow_HasCapture 186 +#define wxWindow_HasScrollbar 187 +#define wxWindow_HasTransparentBackground 188 +#define wxWindow_Hide 189 +#define wxWindow_InheritAttributes 190 +#define wxWindow_InitDialog 191 +#define wxWindow_InvalidateBestSize 192 +#define wxWindow_IsEnabled 193 +#define wxWindow_IsExposed_2 194 +#define wxWindow_IsExposed_4 195 +#define wxWindow_IsExposed_1_0 196 +#define wxWindow_IsExposed_1_1 197 +#define wxWindow_IsRetained 198 +#define wxWindow_IsShown 199 +#define wxWindow_IsTopLevel 200 +#define wxWindow_Layout 201 +#define wxWindow_LineDown 202 +#define wxWindow_LineUp 203 +#define wxWindow_Lower 204 +#define wxWindow_MakeModal 205 +#define wxWindow_Move_3 206 +#define wxWindow_Move_2 207 +#define wxWindow_MoveAfterInTabOrder 208 +#define wxWindow_MoveBeforeInTabOrder 209 +#define wxWindow_Navigate 210 +#define wxWindow_PageDown 211 +#define wxWindow_PageUp 212 +#define wxWindow_PopEventHandler 213 +#define wxWindow_PopupMenu_2 214 +#define wxWindow_PopupMenu_3 215 +#define wxWindow_Raise 216 +#define wxWindow_Refresh 217 +#define wxWindow_RefreshRect 218 +#define wxWindow_ReleaseMouse 219 +#define wxWindow_RemoveChild 220 +#define wxWindow_Reparent 221 +#define wxWindow_ScreenToClient_2 222 +#define wxWindow_ScreenToClient_1 223 +#define wxWindow_ScrollLines 225 +#define wxWindow_ScrollPages 227 +#define wxWindow_ScrollWindow 228 +#define wxWindow_SetAcceleratorTable 229 +#define wxWindow_SetAutoLayout 230 +#define wxWindow_SetBackgroundColour 231 +#define wxWindow_SetBackgroundStyle 232 +#define wxWindow_SetCaret 233 +#define wxWindow_SetClientSize_2 234 +#define wxWindow_SetClientSize_1_0 235 +#define wxWindow_SetClientSize_1_1 236 +#define wxWindow_SetContainingSizer 237 +#define wxWindow_SetCursor 238 +#define wxWindow_SetMaxSize 239 +#define wxWindow_SetMinSize 240 +#define wxWindow_SetOwnBackgroundColour 241 +#define wxWindow_SetOwnFont 242 +#define wxWindow_SetOwnForegroundColour 243 +#define wxWindow_SetDropTarget 244 +#define wxWindow_SetExtraStyle 245 +#define wxWindow_SetFocus 246 +#define wxWindow_SetFocusFromKbd 247 +#define wxWindow_SetFont 248 +#define wxWindow_SetForegroundColour 249 +#define wxWindow_SetHelpText 250 +#define wxWindow_SetId 251 +#define wxWindow_SetLabel 253 +#define wxWindow_SetName 254 +#define wxWindow_SetPalette 255 +#define wxWindow_SetScrollbar 256 +#define wxWindow_SetScrollPos 257 +#define wxWindow_SetSize_5 258 +#define wxWindow_SetSize_2_0 259 +#define wxWindow_SetSize_1 260 +#define wxWindow_SetSize_2_1 261 +#define wxWindow_SetSizeHints_3 262 +#define wxWindow_SetSizeHints_2 263 +#define wxWindow_SetSizer 264 +#define wxWindow_SetSizerAndFit 265 +#define wxWindow_SetThemeEnabled 266 +#define wxWindow_SetToolTip_1_0 267 +#define wxWindow_SetToolTip_1_1 268 +#define wxWindow_SetVirtualSize_1 269 +#define wxWindow_SetVirtualSize_2 270 +#define wxWindow_SetVirtualSizeHints_3 271 +#define wxWindow_SetVirtualSizeHints_2 272 +#define wxWindow_SetWindowStyle 273 +#define wxWindow_SetWindowStyleFlag 274 +#define wxWindow_SetWindowVariant 275 +#define wxWindow_ShouldInheritColours 276 +#define wxWindow_Show 277 +#define wxWindow_Thaw 278 +#define wxWindow_TransferDataFromWindow 279 +#define wxWindow_TransferDataToWindow 280 +#define wxWindow_Update 281 +#define wxWindow_UpdateWindowUI 282 +#define wxWindow_Validate 283 +#define wxWindow_WarpPointer 284 +#define wxWindow_SetTransparent 285 +#define wxWindow_CanSetTransparent 286 +#define wxWindow_IsDoubleBuffered 287 +#define wxWindow_SetDoubleBuffered 288 +#define wxTopLevelWindow_GetIcon 289 +#define wxTopLevelWindow_GetIcons 290 +#define wxTopLevelWindow_GetTitle 291 +#define wxTopLevelWindow_IsActive 292 +#define wxTopLevelWindow_Iconize 293 +#define wxTopLevelWindow_IsFullScreen 294 +#define wxTopLevelWindow_IsIconized 295 +#define wxTopLevelWindow_IsMaximized 296 +#define wxTopLevelWindow_Maximize 297 +#define wxTopLevelWindow_RequestUserAttention 298 +#define wxTopLevelWindow_SetIcon 299 +#define wxTopLevelWindow_SetIcons 300 +#define wxTopLevelWindow_CenterOnScreen 301 +#define wxTopLevelWindow_CentreOnScreen 302 +#define wxTopLevelWindow_SetShape 304 +#define wxTopLevelWindow_SetTitle 305 +#define wxTopLevelWindow_ShowFullScreen 306 +#define wxFrame_new_4 308 +#define wxFrame_new_0 309 +#define wxFrame_destruct 311 +#define wxFrame_Create 312 +#define wxFrame_CreateStatusBar 313 +#define wxFrame_CreateToolBar 314 +#define wxFrame_GetClientAreaOrigin 315 +#define wxFrame_GetMenuBar 316 +#define wxFrame_GetStatusBar 317 +#define wxFrame_GetStatusBarPane 318 +#define wxFrame_GetToolBar 319 +#define wxFrame_ProcessCommand 320 +#define wxFrame_SendSizeEvent 321 +#define wxFrame_SetMenuBar 322 +#define wxFrame_SetStatusBar 323 +#define wxFrame_SetStatusBarPane 324 +#define wxFrame_SetStatusText 325 +#define wxFrame_SetStatusWidths 326 +#define wxFrame_SetToolBar 327 +#define wxMiniFrame_new_0 328 +#define wxMiniFrame_new_4 329 +#define wxMiniFrame_Create 330 +#define wxMiniFrame_destroy 331 +#define wxSplashScreen_new_0 332 +#define wxSplashScreen_new_6 333 +#define wxSplashScreen_destruct 334 +#define wxSplashScreen_GetSplashStyle 335 +#define wxSplashScreen_GetTimeout 336 +#define wxPanel_new_0 337 +#define wxPanel_new_6 338 +#define wxPanel_new_2 339 +#define wxPanel_destruct 340 +#define wxPanel_InitDialog 341 +#define wxPanel_SetFocusIgnoringChildren 342 +#define wxScrolledWindow_new_0 343 +#define wxScrolledWindow_new_2 344 +#define wxScrolledWindow_destruct 345 +#define wxScrolledWindow_CalcScrolledPosition_4 346 +#define wxScrolledWindow_CalcScrolledPosition_1 347 +#define wxScrolledWindow_CalcUnscrolledPosition_4 348 +#define wxScrolledWindow_CalcUnscrolledPosition_1 349 +#define wxScrolledWindow_EnableScrolling 350 +#define wxScrolledWindow_GetScrollPixelsPerUnit 351 +#define wxScrolledWindow_GetViewStart 352 +#define wxScrolledWindow_DoPrepareDC 353 +#define wxScrolledWindow_PrepareDC 354 +#define wxScrolledWindow_Scroll 355 +#define wxScrolledWindow_SetScrollbars 356 +#define wxScrolledWindow_SetScrollRate 357 +#define wxScrolledWindow_SetTargetWindow 358 +#define wxSashWindow_new_0 359 +#define wxSashWindow_new_2 360 +#define wxSashWindow_destruct 361 +#define wxSashWindow_GetSashVisible 362 +#define wxSashWindow_GetMaximumSizeX 363 +#define wxSashWindow_GetMaximumSizeY 364 +#define wxSashWindow_GetMinimumSizeX 365 +#define wxSashWindow_GetMinimumSizeY 366 +#define wxSashWindow_SetMaximumSizeX 367 +#define wxSashWindow_SetMaximumSizeY 368 +#define wxSashWindow_SetMinimumSizeX 369 +#define wxSashWindow_SetMinimumSizeY 370 +#define wxSashWindow_SetSashVisible 371 +#define wxSashLayoutWindow_new_0 372 +#define wxSashLayoutWindow_new_2 373 +#define wxSashLayoutWindow_Create 374 +#define wxSashLayoutWindow_GetAlignment 375 +#define wxSashLayoutWindow_GetOrientation 376 +#define wxSashLayoutWindow_SetAlignment 377 +#define wxSashLayoutWindow_SetDefaultSize 378 +#define wxSashLayoutWindow_SetOrientation 379 +#define wxSashLayoutWindow_destroy 380 +#define wxGrid_new_0 381 +#define wxGrid_new_3 382 +#define wxGrid_new_4 383 +#define wxGrid_destruct 384 +#define wxGrid_AppendCols 385 +#define wxGrid_AppendRows 386 +#define wxGrid_AutoSize 387 +#define wxGrid_AutoSizeColumn 388 +#define wxGrid_AutoSizeColumns 389 +#define wxGrid_AutoSizeRow 390 +#define wxGrid_AutoSizeRows 391 +#define wxGrid_BeginBatch 392 +#define wxGrid_BlockToDeviceRect 393 +#define wxGrid_CanDragColSize 394 +#define wxGrid_CanDragRowSize 395 +#define wxGrid_CanDragGridSize 396 +#define wxGrid_CanEnableCellControl 397 +#define wxGrid_CellToRect_2 398 +#define wxGrid_CellToRect_1 399 +#define wxGrid_ClearGrid 400 +#define wxGrid_ClearSelection 401 +#define wxGrid_CreateGrid 402 +#define wxGrid_DeleteCols 403 +#define wxGrid_DeleteRows 404 +#define wxGrid_DisableCellEditControl 405 +#define wxGrid_DisableDragColSize 406 +#define wxGrid_DisableDragGridSize 407 +#define wxGrid_DisableDragRowSize 408 +#define wxGrid_EnableCellEditControl 409 +#define wxGrid_EnableDragColSize 410 +#define wxGrid_EnableDragGridSize 411 +#define wxGrid_EnableDragRowSize 412 +#define wxGrid_EnableEditing 413 +#define wxGrid_EnableGridLines 414 +#define wxGrid_EndBatch 415 +#define wxGrid_Fit 416 +#define wxGrid_ForceRefresh 417 +#define wxGrid_GetBatchCount 418 +#define wxGrid_GetCellAlignment 419 +#define wxGrid_GetCellBackgroundColour 420 +#define wxGrid_GetCellEditor 421 +#define wxGrid_GetCellFont 422 +#define wxGrid_GetCellRenderer 423 +#define wxGrid_GetCellTextColour 424 +#define wxGrid_GetCellValue_2 425 +#define wxGrid_GetCellValue_1 426 +#define wxGrid_GetColLabelAlignment 427 +#define wxGrid_GetColLabelSize 428 +#define wxGrid_GetColLabelValue 429 +#define wxGrid_GetColMinimalAcceptableWidth 430 +#define wxGrid_GetDefaultCellAlignment 431 +#define wxGrid_GetDefaultCellBackgroundColour 432 +#define wxGrid_GetDefaultCellFont 433 +#define wxGrid_GetDefaultCellTextColour 434 +#define wxGrid_GetDefaultColLabelSize 435 +#define wxGrid_GetDefaultColSize 436 +#define wxGrid_GetDefaultEditor 437 +#define wxGrid_GetDefaultEditorForCell_2 438 +#define wxGrid_GetDefaultEditorForCell_1 439 +#define wxGrid_GetDefaultEditorForType 440 +#define wxGrid_GetDefaultRenderer 441 +#define wxGrid_GetDefaultRendererForCell 442 +#define wxGrid_GetDefaultRendererForType 443 +#define wxGrid_GetDefaultRowLabelSize 444 +#define wxGrid_GetDefaultRowSize 445 +#define wxGrid_GetGridCursorCol 446 +#define wxGrid_GetGridCursorRow 447 +#define wxGrid_GetGridLineColour 448 +#define wxGrid_GridLinesEnabled 449 +#define wxGrid_GetLabelBackgroundColour 450 +#define wxGrid_GetLabelFont 451 +#define wxGrid_GetLabelTextColour 452 +#define wxGrid_GetNumberCols 453 +#define wxGrid_GetNumberRows 454 +#define wxGrid_GetOrCreateCellAttr 455 +#define wxGrid_GetRowMinimalAcceptableHeight 456 +#define wxGrid_GetRowLabelAlignment 457 +#define wxGrid_GetRowLabelSize 458 +#define wxGrid_GetRowLabelValue 459 +#define wxGrid_GetRowSize 460 +#define wxGrid_GetScrollLineX 461 +#define wxGrid_GetScrollLineY 462 +#define wxGrid_GetSelectedCells 463 +#define wxGrid_GetSelectedCols 464 +#define wxGrid_GetSelectedRows 465 +#define wxGrid_GetSelectionBackground 466 +#define wxGrid_GetSelectionBlockTopLeft 467 +#define wxGrid_GetSelectionBlockBottomRight 468 +#define wxGrid_GetSelectionForeground 469 +#define wxGrid_GetViewWidth 470 +#define wxGrid_GetGridWindow 471 +#define wxGrid_GetGridRowLabelWindow 472 +#define wxGrid_GetGridColLabelWindow 473 +#define wxGrid_GetGridCornerLabelWindow 474 +#define wxGrid_HideCellEditControl 475 +#define wxGrid_InsertCols 476 +#define wxGrid_InsertRows 477 +#define wxGrid_IsCellEditControlEnabled 478 +#define wxGrid_IsCurrentCellReadOnly 479 +#define wxGrid_IsEditable 480 +#define wxGrid_IsInSelection_2 481 +#define wxGrid_IsInSelection_1 482 +#define wxGrid_IsReadOnly 483 +#define wxGrid_IsSelection 484 +#define wxGrid_IsVisible_3 485 +#define wxGrid_IsVisible_2 486 +#define wxGrid_MakeCellVisible_2 487 +#define wxGrid_MakeCellVisible_1 488 +#define wxGrid_MoveCursorDown 489 +#define wxGrid_MoveCursorLeft 490 +#define wxGrid_MoveCursorRight 491 +#define wxGrid_MoveCursorUp 492 +#define wxGrid_MoveCursorDownBlock 493 +#define wxGrid_MoveCursorLeftBlock 494 +#define wxGrid_MoveCursorRightBlock 495 +#define wxGrid_MoveCursorUpBlock 496 +#define wxGrid_MovePageDown 497 +#define wxGrid_MovePageUp 498 +#define wxGrid_RegisterDataType 499 +#define wxGrid_SaveEditControlValue 500 +#define wxGrid_SelectAll 501 +#define wxGrid_SelectBlock_5 502 +#define wxGrid_SelectBlock_3 503 +#define wxGrid_SelectCol 504 +#define wxGrid_SelectRow 505 +#define wxGrid_SetCellAlignment_4 506 +#define wxGrid_SetCellAlignment_3 507 +#define wxGrid_SetCellAlignment_1 508 +#define wxGrid_SetCellBackgroundColour_3_0 509 +#define wxGrid_SetCellBackgroundColour_1 510 +#define wxGrid_SetCellBackgroundColour_3_1 511 +#define wxGrid_SetCellEditor 512 +#define wxGrid_SetCellFont 513 +#define wxGrid_SetCellRenderer 514 +#define wxGrid_SetCellTextColour_3_0 515 +#define wxGrid_SetCellTextColour_3_1 516 +#define wxGrid_SetCellTextColour_1 517 +#define wxGrid_SetCellValue_3_0 518 +#define wxGrid_SetCellValue_2 519 +#define wxGrid_SetCellValue_3_1 520 +#define wxGrid_SetColAttr 521 +#define wxGrid_SetColFormatBool 522 +#define wxGrid_SetColFormatNumber 523 +#define wxGrid_SetColFormatFloat 524 +#define wxGrid_SetColFormatCustom 525 +#define wxGrid_SetColLabelAlignment 526 +#define wxGrid_SetColLabelSize 527 +#define wxGrid_SetColLabelValue 528 +#define wxGrid_SetColMinimalWidth 529 +#define wxGrid_SetColMinimalAcceptableWidth 530 +#define wxGrid_SetColSize 531 +#define wxGrid_SetDefaultCellAlignment 532 +#define wxGrid_SetDefaultCellBackgroundColour 533 +#define wxGrid_SetDefaultCellFont 534 +#define wxGrid_SetDefaultCellTextColour 535 +#define wxGrid_SetDefaultEditor 536 +#define wxGrid_SetDefaultRenderer 537 +#define wxGrid_SetDefaultColSize 538 +#define wxGrid_SetDefaultRowSize 539 +#define wxGrid_SetGridCursor 540 +#define wxGrid_SetGridLineColour 541 +#define wxGrid_SetLabelBackgroundColour 542 +#define wxGrid_SetLabelFont 543 +#define wxGrid_SetLabelTextColour 544 +#define wxGrid_SetMargins 545 +#define wxGrid_SetReadOnly 546 +#define wxGrid_SetRowAttr 547 +#define wxGrid_SetRowLabelAlignment 548 +#define wxGrid_SetRowLabelSize 549 +#define wxGrid_SetRowLabelValue 550 +#define wxGrid_SetRowMinimalHeight 551 +#define wxGrid_SetRowMinimalAcceptableHeight 552 +#define wxGrid_SetRowSize 553 +#define wxGrid_SetScrollLineX 554 +#define wxGrid_SetScrollLineY 555 +#define wxGrid_SetSelectionBackground 556 +#define wxGrid_SetSelectionForeground 557 +#define wxGrid_SetSelectionMode 558 +#define wxGrid_ShowCellEditControl 559 +#define wxGrid_XToCol 560 +#define wxGrid_XToEdgeOfCol 561 +#define wxGrid_YToEdgeOfRow 562 +#define wxGrid_YToRow 563 +#define wxGridCellRenderer_Draw 564 +#define wxGridCellRenderer_GetBestSize 565 +#define wxGridCellEditor_Create 566 +#define wxGridCellEditor_IsCreated 567 +#define wxGridCellEditor_SetSize 568 +#define wxGridCellEditor_Show 569 +#define wxGridCellEditor_PaintBackground 570 +#define wxGridCellEditor_BeginEdit 571 +#define wxGridCellEditor_EndEdit 572 +#define wxGridCellEditor_Reset 573 +#define wxGridCellEditor_StartingKey 574 +#define wxGridCellEditor_StartingClick 575 +#define wxGridCellEditor_HandleReturn 576 +#define wxGridCellBoolRenderer_new 577 +#define wxGridCellBoolRenderer_destroy 578 +#define wxGridCellBoolEditor_new 579 +#define wxGridCellBoolEditor_IsTrueValue 580 +#define wxGridCellBoolEditor_UseStringValues 581 +#define wxGridCellBoolEditor_destroy 582 +#define wxGridCellFloatRenderer_new 583 +#define wxGridCellFloatRenderer_GetPrecision 584 +#define wxGridCellFloatRenderer_GetWidth 585 +#define wxGridCellFloatRenderer_SetParameters 586 +#define wxGridCellFloatRenderer_SetPrecision 587 +#define wxGridCellFloatRenderer_SetWidth 588 +#define wxGridCellFloatRenderer_destroy 589 +#define wxGridCellFloatEditor_new 590 +#define wxGridCellFloatEditor_SetParameters 591 +#define wxGridCellFloatEditor_destroy 592 +#define wxGridCellStringRenderer_new 593 +#define wxGridCellStringRenderer_destroy 594 +#define wxGridCellTextEditor_new 595 +#define wxGridCellTextEditor_SetParameters 596 +#define wxGridCellTextEditor_destroy 597 +#define wxGridCellChoiceEditor_new 599 +#define wxGridCellChoiceEditor_SetParameters 600 +#define wxGridCellChoiceEditor_destroy 601 +#define wxGridCellNumberRenderer_new 602 +#define wxGridCellNumberRenderer_destroy 603 +#define wxGridCellNumberEditor_new 604 +#define wxGridCellNumberEditor_GetValue 605 +#define wxGridCellNumberEditor_SetParameters 606 +#define wxGridCellNumberEditor_destroy 607 +#define wxGridCellAttr_SetTextColour 608 +#define wxGridCellAttr_SetBackgroundColour 609 +#define wxGridCellAttr_SetFont 610 +#define wxGridCellAttr_SetAlignment 611 +#define wxGridCellAttr_SetReadOnly 612 +#define wxGridCellAttr_SetRenderer 613 +#define wxGridCellAttr_SetEditor 614 +#define wxGridCellAttr_HasTextColour 615 +#define wxGridCellAttr_HasBackgroundColour 616 +#define wxGridCellAttr_HasFont 617 +#define wxGridCellAttr_HasAlignment 618 +#define wxGridCellAttr_HasRenderer 619 +#define wxGridCellAttr_HasEditor 620 +#define wxGridCellAttr_GetTextColour 621 +#define wxGridCellAttr_GetBackgroundColour 622 +#define wxGridCellAttr_GetFont 623 +#define wxGridCellAttr_GetAlignment 624 +#define wxGridCellAttr_GetRenderer 625 +#define wxGridCellAttr_GetEditor 626 +#define wxGridCellAttr_IsReadOnly 627 +#define wxGridCellAttr_SetDefAttr 628 +#define wxDC_Blit 629 +#define wxDC_CalcBoundingBox 630 +#define wxDC_Clear 631 +#define wxDC_ComputeScaleAndOrigin 632 +#define wxDC_CrossHair 633 +#define wxDC_DestroyClippingRegion 634 +#define wxDC_DeviceToLogicalX 635 +#define wxDC_DeviceToLogicalXRel 636 +#define wxDC_DeviceToLogicalY 637 +#define wxDC_DeviceToLogicalYRel 638 +#define wxDC_DrawArc 639 +#define wxDC_DrawBitmap 640 +#define wxDC_DrawCheckMark 641 +#define wxDC_DrawCircle 642 +#define wxDC_DrawEllipse_2 644 +#define wxDC_DrawEllipse_1 645 +#define wxDC_DrawEllipticArc 646 +#define wxDC_DrawIcon 647 +#define wxDC_DrawLabel 648 +#define wxDC_DrawLine 649 +#define wxDC_DrawLines 650 +#define wxDC_DrawPolygon 652 +#define wxDC_DrawPoint 654 +#define wxDC_DrawRectangle_2 656 +#define wxDC_DrawRectangle_1 657 +#define wxDC_DrawRotatedText 658 +#define wxDC_DrawRoundedRectangle_3 660 +#define wxDC_DrawRoundedRectangle_2 661 +#define wxDC_DrawText 662 +#define wxDC_EndDoc 663 +#define wxDC_EndPage 664 +#define wxDC_FloodFill 665 +#define wxDC_GetBackground 666 +#define wxDC_GetBackgroundMode 667 +#define wxDC_GetBrush 668 +#define wxDC_GetCharHeight 669 +#define wxDC_GetCharWidth 670 +#define wxDC_GetClippingBox 671 +#define wxDC_GetFont 673 +#define wxDC_GetLayoutDirection 674 +#define wxDC_GetLogicalFunction 675 +#define wxDC_GetMapMode 676 +#define wxDC_GetMultiLineTextExtent_4 677 +#define wxDC_GetMultiLineTextExtent_1 678 +#define wxDC_GetPartialTextExtents 679 +#define wxDC_GetPen 680 +#define wxDC_GetPixel 681 +#define wxDC_GetPPI 682 +#define wxDC_GetSize 684 +#define wxDC_GetSizeMM 686 +#define wxDC_GetTextBackground 687 +#define wxDC_GetTextExtent_4 688 +#define wxDC_GetTextExtent_1 689 +#define wxDC_GetTextForeground 691 +#define wxDC_GetUserScale 692 +#define wxDC_GradientFillConcentric_3 693 +#define wxDC_GradientFillConcentric_4 694 +#define wxDC_GradientFillLinear 695 +#define wxDC_LogicalToDeviceX 696 +#define wxDC_LogicalToDeviceXRel 697 +#define wxDC_LogicalToDeviceY 698 +#define wxDC_LogicalToDeviceYRel 699 +#define wxDC_MaxX 700 +#define wxDC_MaxY 701 +#define wxDC_MinX 702 +#define wxDC_MinY 703 +#define wxDC_IsOk 704 +#define wxDC_ResetBoundingBox 705 +#define wxDC_SetAxisOrientation 706 +#define wxDC_SetBackground 707 +#define wxDC_SetBackgroundMode 708 +#define wxDC_SetBrush 709 +#define wxDC_SetClippingRegion_2 711 +#define wxDC_SetClippingRegion_1_1 712 +#define wxDC_SetClippingRegion_1_0 713 +#define wxDC_SetDeviceOrigin 714 +#define wxDC_SetFont 715 +#define wxDC_SetLayoutDirection 716 +#define wxDC_SetLogicalFunction 717 +#define wxDC_SetMapMode 718 +#define wxDC_SetPalette 719 +#define wxDC_SetPen 720 +#define wxDC_SetTextBackground 721 +#define wxDC_SetTextForeground 722 +#define wxDC_SetUserScale 723 +#define wxDC_StartDoc 724 +#define wxDC_StartPage 725 +#define wxMirrorDC_new 726 +#define wxMirrorDC_destroy 727 +#define wxScreenDC_new 728 +#define wxScreenDC_destruct 729 +#define wxPostScriptDC_new_0 730 +#define wxPostScriptDC_new_1 731 +#define wxPostScriptDC_destruct 732 +#define wxPostScriptDC_SetResolution 733 +#define wxPostScriptDC_GetResolution 734 +#define wxWindowDC_new_0 735 +#define wxWindowDC_new_1 736 +#define wxWindowDC_destruct 737 +#define wxClientDC_new_0 738 +#define wxClientDC_new_1 739 +#define wxClientDC_destroy 740 +#define wxPaintDC_new_0 741 +#define wxPaintDC_new_1 742 +#define wxPaintDC_destroy 743 +#define wxMemoryDC_new_1_0 745 +#define wxMemoryDC_new_1_1 746 +#define wxMemoryDC_new_0 747 +#define wxMemoryDC_destruct 749 +#define wxMemoryDC_SelectObject 750 +#define wxMemoryDC_SelectObjectAsSource 751 +#define wxBufferedDC_new_0 752 +#define wxBufferedDC_new_2 753 +#define wxBufferedDC_new_3 754 +#define wxBufferedDC_destruct 755 +#define wxBufferedDC_Init_2 756 +#define wxBufferedDC_Init_3 757 +#define wxBufferedPaintDC_new_3 758 +#define wxBufferedPaintDC_new_2 759 +#define wxBufferedPaintDC_destruct 760 +#define wxGraphicsObject_destruct 761 +#define wxGraphicsObject_GetRenderer 762 +#define wxGraphicsObject_IsNull 763 +#define wxGraphicsContext_destruct 764 +#define wxGraphicsContext_Create_1_1 765 +#define wxGraphicsContext_Create_1_0 766 +#define wxGraphicsContext_Create_0 767 +#define wxGraphicsContext_CreatePen 768 +#define wxGraphicsContext_CreateBrush 769 +#define wxGraphicsContext_CreateRadialGradientBrush 770 +#define wxGraphicsContext_CreateLinearGradientBrush 771 +#define wxGraphicsContext_CreateFont 772 +#define wxGraphicsContext_CreateMatrix 773 +#define wxGraphicsContext_CreatePath 774 +#define wxGraphicsContext_Clip_1 775 +#define wxGraphicsContext_Clip_4 776 +#define wxGraphicsContext_ResetClip 777 +#define wxGraphicsContext_DrawBitmap 778 +#define wxGraphicsContext_DrawEllipse 779 +#define wxGraphicsContext_DrawIcon 780 +#define wxGraphicsContext_DrawLines 781 +#define wxGraphicsContext_DrawPath 782 +#define wxGraphicsContext_DrawRectangle 783 +#define wxGraphicsContext_DrawRoundedRectangle 784 +#define wxGraphicsContext_DrawText_3 785 +#define wxGraphicsContext_DrawText_4_0 786 +#define wxGraphicsContext_DrawText_4_1 787 +#define wxGraphicsContext_DrawText_5 788 +#define wxGraphicsContext_FillPath 789 +#define wxGraphicsContext_StrokePath 790 +#define wxGraphicsContext_GetPartialTextExtents 791 +#define wxGraphicsContext_GetTextExtent 792 +#define wxGraphicsContext_Rotate 793 +#define wxGraphicsContext_Scale 794 +#define wxGraphicsContext_Translate 795 +#define wxGraphicsContext_GetTransform 796 +#define wxGraphicsContext_SetTransform 797 +#define wxGraphicsContext_ConcatTransform 798 +#define wxGraphicsContext_SetBrush_1_1 799 +#define wxGraphicsContext_SetBrush_1_0 800 +#define wxGraphicsContext_SetFont_1 801 +#define wxGraphicsContext_SetFont_2 802 +#define wxGraphicsContext_SetPen_1_0 803 +#define wxGraphicsContext_SetPen_1_1 804 +#define wxGraphicsContext_StrokeLine 805 +#define wxGraphicsContext_StrokeLines 806 +#define wxGraphicsMatrix_Concat 808 +#define wxGraphicsMatrix_Get 810 +#define wxGraphicsMatrix_Invert 811 +#define wxGraphicsMatrix_IsEqual 812 +#define wxGraphicsMatrix_IsIdentity 814 +#define wxGraphicsMatrix_Rotate 815 +#define wxGraphicsMatrix_Scale 816 +#define wxGraphicsMatrix_Translate 817 +#define wxGraphicsMatrix_Set 818 +#define wxGraphicsMatrix_TransformPoint 819 +#define wxGraphicsMatrix_TransformDistance 820 +#define wxGraphicsPath_MoveToPoint_2 821 +#define wxGraphicsPath_MoveToPoint_1 822 +#define wxGraphicsPath_AddArc_6 823 +#define wxGraphicsPath_AddArc_5 824 +#define wxGraphicsPath_AddArcToPoint 825 +#define wxGraphicsPath_AddCircle 826 +#define wxGraphicsPath_AddCurveToPoint_6 827 +#define wxGraphicsPath_AddCurveToPoint_3 828 +#define wxGraphicsPath_AddEllipse 829 +#define wxGraphicsPath_AddLineToPoint_2 830 +#define wxGraphicsPath_AddLineToPoint_1 831 +#define wxGraphicsPath_AddPath 832 +#define wxGraphicsPath_AddQuadCurveToPoint 833 +#define wxGraphicsPath_AddRectangle 834 +#define wxGraphicsPath_AddRoundedRectangle 835 +#define wxGraphicsPath_CloseSubpath 836 +#define wxGraphicsPath_Contains_3 837 +#define wxGraphicsPath_Contains_2 838 +#define wxGraphicsPath_GetBox 840 +#define wxGraphicsPath_GetCurrentPoint 842 +#define wxGraphicsPath_Transform 843 +#define wxGraphicsRenderer_GetDefaultRenderer 844 +#define wxGraphicsRenderer_CreateContext_1_1 845 +#define wxGraphicsRenderer_CreateContext_1_0 846 +#define wxGraphicsRenderer_CreatePen 847 +#define wxGraphicsRenderer_CreateBrush 848 +#define wxGraphicsRenderer_CreateLinearGradientBrush 849 +#define wxGraphicsRenderer_CreateRadialGradientBrush 850 +#define wxGraphicsRenderer_CreateFont 851 +#define wxGraphicsRenderer_CreateMatrix 852 +#define wxGraphicsRenderer_CreatePath 853 +#define wxMenuBar_new_1 855 +#define wxMenuBar_new_0 857 +#define wxMenuBar_destruct 859 +#define wxMenuBar_Append 860 +#define wxMenuBar_Check 861 +#define wxMenuBar_Enable_2 862 +#define wxMenuBar_Enable_1 863 +#define wxMenuBar_EnableTop 864 +#define wxMenuBar_FindMenu 865 +#define wxMenuBar_FindMenuItem 866 +#define wxMenuBar_FindItem 867 +#define wxMenuBar_GetHelpString 868 +#define wxMenuBar_GetLabel_1 869 +#define wxMenuBar_GetLabel_0 870 +#define wxMenuBar_GetLabelTop 871 +#define wxMenuBar_GetMenu 872 +#define wxMenuBar_GetMenuCount 873 +#define wxMenuBar_Insert 874 +#define wxMenuBar_IsChecked 875 +#define wxMenuBar_IsEnabled_1 876 +#define wxMenuBar_IsEnabled_0 877 +#define wxMenuBar_Remove 878 +#define wxMenuBar_Replace 879 +#define wxMenuBar_SetHelpString 880 +#define wxMenuBar_SetLabel_2 881 +#define wxMenuBar_SetLabel_1 882 +#define wxMenuBar_SetLabelTop 883 +#define wxControl_GetLabel 884 +#define wxControl_SetLabel 885 +#define wxControlWithItems_Append_1 886 +#define wxControlWithItems_Append_2 887 +#define wxControlWithItems_appendStrings_1 888 +#define wxControlWithItems_Clear 889 +#define wxControlWithItems_Delete 890 +#define wxControlWithItems_FindString 891 +#define wxControlWithItems_getClientData 892 +#define wxControlWithItems_setClientData 893 +#define wxControlWithItems_GetCount 894 +#define wxControlWithItems_GetSelection 895 +#define wxControlWithItems_GetString 896 +#define wxControlWithItems_GetStringSelection 897 +#define wxControlWithItems_Insert_2 898 +#define wxControlWithItems_Insert_3 899 +#define wxControlWithItems_IsEmpty 900 +#define wxControlWithItems_Select 901 +#define wxControlWithItems_SetSelection 902 +#define wxControlWithItems_SetString 903 +#define wxControlWithItems_SetStringSelection 904 +#define wxMenu_new_2 907 +#define wxMenu_new_1 908 +#define wxMenu_destruct 910 +#define wxMenu_Append_3 911 +#define wxMenu_Append_1 912 +#define wxMenu_Append_4_0 913 +#define wxMenu_Append_4_1 914 +#define wxMenu_AppendCheckItem 915 +#define wxMenu_AppendRadioItem 916 +#define wxMenu_AppendSeparator 917 +#define wxMenu_Break 918 +#define wxMenu_Check 919 +#define wxMenu_Delete_1_0 920 +#define wxMenu_Delete_1_1 921 +#define wxMenu_Destroy_1_0 922 +#define wxMenu_Destroy_1_1 923 +#define wxMenu_Enable 924 +#define wxMenu_FindItem_1 925 +#define wxMenu_FindItem_2 926 +#define wxMenu_FindItemByPosition 927 +#define wxMenu_GetHelpString 928 +#define wxMenu_GetLabel 929 +#define wxMenu_GetMenuItemCount 930 +#define wxMenu_GetMenuItems 931 +#define wxMenu_GetTitle 933 +#define wxMenu_Insert_2 934 +#define wxMenu_Insert_3 935 +#define wxMenu_Insert_5_1 936 +#define wxMenu_Insert_5_0 937 +#define wxMenu_InsertCheckItem 938 +#define wxMenu_InsertRadioItem 939 +#define wxMenu_InsertSeparator 940 +#define wxMenu_IsChecked 941 +#define wxMenu_IsEnabled 942 +#define wxMenu_Prepend_1 943 +#define wxMenu_Prepend_2 944 +#define wxMenu_Prepend_4_1 945 +#define wxMenu_Prepend_4_0 946 +#define wxMenu_PrependCheckItem 947 +#define wxMenu_PrependRadioItem 948 +#define wxMenu_PrependSeparator 949 +#define wxMenu_Remove_1_0 950 +#define wxMenu_Remove_1_1 951 +#define wxMenu_SetHelpString 952 +#define wxMenu_SetLabel 953 +#define wxMenu_SetTitle 954 +#define wxMenuItem_new 955 +#define wxMenuItem_destruct 957 +#define wxMenuItem_Check 958 +#define wxMenuItem_Enable 959 +#define wxMenuItem_GetBitmap 960 +#define wxMenuItem_GetHelp 961 +#define wxMenuItem_GetId 962 +#define wxMenuItem_GetKind 963 +#define wxMenuItem_GetLabel 964 +#define wxMenuItem_GetLabelFromText 965 +#define wxMenuItem_GetMenu 966 +#define wxMenuItem_GetText 967 +#define wxMenuItem_GetSubMenu 968 +#define wxMenuItem_IsCheckable 969 +#define wxMenuItem_IsChecked 970 +#define wxMenuItem_IsEnabled 971 +#define wxMenuItem_IsSeparator 972 +#define wxMenuItem_IsSubMenu 973 +#define wxMenuItem_SetBitmap 974 +#define wxMenuItem_SetHelp 975 +#define wxMenuItem_SetMenu 976 +#define wxMenuItem_SetSubMenu 977 +#define wxMenuItem_SetText 978 +#define wxToolBar_AddControl 979 +#define wxToolBar_AddSeparator 980 +#define wxToolBar_AddTool_5 981 +#define wxToolBar_AddTool_4_0 982 +#define wxToolBar_AddTool_1 983 +#define wxToolBar_AddTool_4_1 984 +#define wxToolBar_AddTool_3 985 +#define wxToolBar_AddTool_6 986 +#define wxToolBar_AddCheckTool 987 +#define wxToolBar_AddRadioTool 988 +#define wxToolBar_AddStretchableSpace 989 +#define wxToolBar_InsertStretchableSpace 990 +#define wxToolBar_DeleteTool 991 +#define wxToolBar_DeleteToolByPos 992 +#define wxToolBar_EnableTool 993 +#define wxToolBar_FindById 994 +#define wxToolBar_FindControl 995 +#define wxToolBar_FindToolForPosition 996 +#define wxToolBar_GetToolSize 997 +#define wxToolBar_GetToolBitmapSize 998 +#define wxToolBar_GetMargins 999 +#define wxToolBar_GetToolEnabled 1000 +#define wxToolBar_GetToolLongHelp 1001 +#define wxToolBar_GetToolPacking 1002 +#define wxToolBar_GetToolPos 1003 +#define wxToolBar_GetToolSeparation 1004 +#define wxToolBar_GetToolShortHelp 1005 +#define wxToolBar_GetToolState 1006 +#define wxToolBar_InsertControl 1007 +#define wxToolBar_InsertSeparator 1008 +#define wxToolBar_InsertTool_5 1009 +#define wxToolBar_InsertTool_2 1010 +#define wxToolBar_InsertTool_4 1011 +#define wxToolBar_Realize 1012 +#define wxToolBar_RemoveTool 1013 +#define wxToolBar_SetMargins 1014 +#define wxToolBar_SetToolBitmapSize 1015 +#define wxToolBar_SetToolLongHelp 1016 +#define wxToolBar_SetToolPacking 1017 +#define wxToolBar_SetToolShortHelp 1018 +#define wxToolBar_SetToolSeparation 1019 +#define wxToolBar_ToggleTool 1020 +#define wxStatusBar_new_0 1022 +#define wxStatusBar_new_2 1023 +#define wxStatusBar_destruct 1025 +#define wxStatusBar_Create 1026 +#define wxStatusBar_GetFieldRect 1027 +#define wxStatusBar_GetFieldsCount 1028 +#define wxStatusBar_GetStatusText 1029 +#define wxStatusBar_PopStatusText 1030 +#define wxStatusBar_PushStatusText 1031 +#define wxStatusBar_SetFieldsCount 1032 +#define wxStatusBar_SetMinHeight 1033 +#define wxStatusBar_SetStatusText 1034 +#define wxStatusBar_SetStatusWidths 1035 +#define wxStatusBar_SetStatusStyles 1036 +#define wxBitmap_new_0 1037 +#define wxBitmap_new_3 1038 +#define wxBitmap_new_4 1039 +#define wxBitmap_new_2_0 1040 +#define wxBitmap_new_2_1 1041 +#define wxBitmap_destruct 1042 +#define wxBitmap_ConvertToImage 1043 +#define wxBitmap_CopyFromIcon 1044 +#define wxBitmap_Create 1045 +#define wxBitmap_GetDepth 1046 +#define wxBitmap_GetHeight 1047 +#define wxBitmap_GetPalette 1048 +#define wxBitmap_GetMask 1049 +#define wxBitmap_GetWidth 1050 +#define wxBitmap_GetSubBitmap 1051 +#define wxBitmap_LoadFile 1052 +#define wxBitmap_Ok 1053 +#define wxBitmap_SaveFile 1054 +#define wxBitmap_SetDepth 1055 +#define wxBitmap_SetHeight 1056 +#define wxBitmap_SetMask 1057 +#define wxBitmap_SetPalette 1058 +#define wxBitmap_SetWidth 1059 +#define wxIcon_new_0 1060 +#define wxIcon_new_2 1061 +#define wxIcon_new_1 1062 +#define wxIcon_CopyFromBitmap 1063 +#define wxIcon_destroy 1064 +#define wxIconBundle_new_0 1065 +#define wxIconBundle_new_2 1066 +#define wxIconBundle_new_1_0 1067 +#define wxIconBundle_new_1_1 1068 +#define wxIconBundle_destruct 1069 +#define wxIconBundle_AddIcon_2 1070 +#define wxIconBundle_AddIcon_1 1071 +#define wxIconBundle_GetIcon_1_1 1072 +#define wxIconBundle_GetIcon_1_0 1073 +#define wxCursor_new_0 1074 +#define wxCursor_new_1_0 1075 +#define wxCursor_new_1_1 1076 +#define wxCursor_new_4 1077 +#define wxCursor_destruct 1078 +#define wxCursor_Ok 1079 +#define wxMask_new_0 1080 +#define wxMask_new_2_1 1081 +#define wxMask_new_2_0 1082 +#define wxMask_new_1 1083 +#define wxMask_destruct 1084 +#define wxMask_Create_2_1 1085 +#define wxMask_Create_2_0 1086 +#define wxMask_Create_1 1087 +#define wxImage_new_0 1088 +#define wxImage_new_3_0 1089 +#define wxImage_new_4 1090 +#define wxImage_new_5 1091 +#define wxImage_new_2 1092 +#define wxImage_new_3_1 1093 +#define wxImage_Blur 1094 +#define wxImage_BlurHorizontal 1095 +#define wxImage_BlurVertical 1096 +#define wxImage_ConvertAlphaToMask 1097 +#define wxImage_ConvertToGreyscale 1098 +#define wxImage_ConvertToMono 1099 +#define wxImage_Copy 1100 +#define wxImage_Create_3 1101 +#define wxImage_Create_4 1102 +#define wxImage_Create_5 1103 +#define wxImage_Destroy 1104 +#define wxImage_FindFirstUnusedColour 1105 +#define wxImage_GetImageExtWildcard 1106 +#define wxImage_GetAlpha_2 1107 +#define wxImage_GetAlpha_0 1108 +#define wxImage_GetBlue 1109 +#define wxImage_GetData 1110 +#define wxImage_GetGreen 1111 +#define wxImage_GetImageCount 1112 +#define wxImage_GetHeight 1113 +#define wxImage_GetMaskBlue 1114 +#define wxImage_GetMaskGreen 1115 +#define wxImage_GetMaskRed 1116 +#define wxImage_GetOrFindMaskColour 1117 +#define wxImage_GetPalette 1118 +#define wxImage_GetRed 1119 +#define wxImage_GetSubImage 1120 +#define wxImage_GetWidth 1121 +#define wxImage_HasAlpha 1122 +#define wxImage_HasMask 1123 +#define wxImage_GetOption 1124 +#define wxImage_GetOptionInt 1125 +#define wxImage_HasOption 1126 +#define wxImage_InitAlpha 1127 +#define wxImage_InitStandardHandlers 1128 +#define wxImage_IsTransparent 1129 +#define wxImage_LoadFile_2 1130 +#define wxImage_LoadFile_3 1131 +#define wxImage_Ok 1132 +#define wxImage_RemoveHandler 1133 +#define wxImage_Mirror 1134 +#define wxImage_Replace 1135 +#define wxImage_Rescale 1136 +#define wxImage_Resize 1137 +#define wxImage_Rotate 1138 +#define wxImage_RotateHue 1139 +#define wxImage_Rotate90 1140 +#define wxImage_SaveFile_1 1141 +#define wxImage_SaveFile_2_0 1142 +#define wxImage_SaveFile_2_1 1143 +#define wxImage_Scale 1144 +#define wxImage_Size 1145 +#define wxImage_SetAlpha_3 1146 +#define wxImage_SetAlpha_2 1147 +#define wxImage_SetData_2 1148 +#define wxImage_SetData_4 1149 +#define wxImage_SetMask 1150 +#define wxImage_SetMaskColour 1151 +#define wxImage_SetMaskFromImage 1152 +#define wxImage_SetOption_2_1 1153 +#define wxImage_SetOption_2_0 1154 +#define wxImage_SetPalette 1155 +#define wxImage_SetRGB_5 1156 +#define wxImage_SetRGB_4 1157 +#define wxImage_destroy 1158 +#define wxBrush_new_0 1159 +#define wxBrush_new_2 1160 +#define wxBrush_new_1 1161 +#define wxBrush_destruct 1163 +#define wxBrush_GetColour 1164 +#define wxBrush_GetStipple 1165 +#define wxBrush_GetStyle 1166 +#define wxBrush_IsHatch 1167 +#define wxBrush_IsOk 1168 +#define wxBrush_SetColour_1 1169 +#define wxBrush_SetColour_3 1170 +#define wxBrush_SetStipple 1171 +#define wxBrush_SetStyle 1172 +#define wxPen_new_0 1173 +#define wxPen_new_2 1174 +#define wxPen_destruct 1175 +#define wxPen_GetCap 1176 +#define wxPen_GetColour 1177 +#define wxPen_GetJoin 1178 +#define wxPen_GetStyle 1179 +#define wxPen_GetWidth 1180 +#define wxPen_IsOk 1181 +#define wxPen_SetCap 1182 +#define wxPen_SetColour_1 1183 +#define wxPen_SetColour_3 1184 +#define wxPen_SetJoin 1185 +#define wxPen_SetStyle 1186 +#define wxPen_SetWidth 1187 +#define wxRegion_new_0 1188 +#define wxRegion_new_4 1189 +#define wxRegion_new_2 1190 +#define wxRegion_new_1_1 1191 +#define wxRegion_new_1_0 1193 +#define wxRegion_destruct 1195 +#define wxRegion_Clear 1196 +#define wxRegion_Contains_2 1197 +#define wxRegion_Contains_1_0 1198 +#define wxRegion_Contains_4 1199 +#define wxRegion_Contains_1_1 1200 +#define wxRegion_ConvertToBitmap 1201 +#define wxRegion_GetBox 1202 +#define wxRegion_Intersect_4 1203 +#define wxRegion_Intersect_1_1 1204 +#define wxRegion_Intersect_1_0 1205 +#define wxRegion_IsEmpty 1206 +#define wxRegion_Subtract_4 1207 +#define wxRegion_Subtract_1_1 1208 +#define wxRegion_Subtract_1_0 1209 +#define wxRegion_Offset_2 1210 +#define wxRegion_Offset_1 1211 +#define wxRegion_Union_4 1212 +#define wxRegion_Union_1_2 1213 +#define wxRegion_Union_1_1 1214 +#define wxRegion_Union_1_0 1215 +#define wxRegion_Union_3 1216 +#define wxRegion_Xor_4 1217 +#define wxRegion_Xor_1_1 1218 +#define wxRegion_Xor_1_0 1219 +#define wxAcceleratorTable_new_0 1220 +#define wxAcceleratorTable_new_2 1221 +#define wxAcceleratorTable_destruct 1222 +#define wxAcceleratorTable_Ok 1223 +#define wxAcceleratorEntry_new_1_0 1224 +#define wxAcceleratorEntry_new_1_1 1225 +#define wxAcceleratorEntry_GetCommand 1226 +#define wxAcceleratorEntry_GetFlags 1227 +#define wxAcceleratorEntry_GetKeyCode 1228 +#define wxAcceleratorEntry_Set 1229 +#define wxAcceleratorEntry_destroy 1230 +#define wxCaret_new_3 1235 +#define wxCaret_new_2 1236 +#define wxCaret_destruct 1238 +#define wxCaret_Create_3 1239 +#define wxCaret_Create_2 1240 +#define wxCaret_GetBlinkTime 1241 +#define wxCaret_GetPosition 1243 +#define wxCaret_GetSize 1245 +#define wxCaret_GetWindow 1246 +#define wxCaret_Hide 1247 +#define wxCaret_IsOk 1248 +#define wxCaret_IsVisible 1249 +#define wxCaret_Move_2 1250 +#define wxCaret_Move_1 1251 +#define wxCaret_SetBlinkTime 1252 +#define wxCaret_SetSize_2 1253 +#define wxCaret_SetSize_1 1254 +#define wxCaret_Show 1255 +#define wxSizer_Add_2_1 1256 +#define wxSizer_Add_2_0 1257 +#define wxSizer_Add_3 1258 +#define wxSizer_Add_2_3 1259 +#define wxSizer_Add_2_2 1260 +#define wxSizer_AddSpacer 1261 +#define wxSizer_AddStretchSpacer 1262 +#define wxSizer_CalcMin 1263 +#define wxSizer_Clear 1264 +#define wxSizer_Detach_1_2 1265 +#define wxSizer_Detach_1_1 1266 +#define wxSizer_Detach_1_0 1267 +#define wxSizer_Fit 1268 +#define wxSizer_FitInside 1269 +#define wxSizer_GetChildren 1270 +#define wxSizer_GetItem_2_1 1271 +#define wxSizer_GetItem_2_0 1272 +#define wxSizer_GetItem_1 1273 +#define wxSizer_GetSize 1274 +#define wxSizer_GetPosition 1275 +#define wxSizer_GetMinSize 1276 +#define wxSizer_Hide_2_0 1277 +#define wxSizer_Hide_2_1 1278 +#define wxSizer_Hide_1 1279 +#define wxSizer_Insert_3_1 1280 +#define wxSizer_Insert_3_0 1281 +#define wxSizer_Insert_4 1282 +#define wxSizer_Insert_3_3 1283 +#define wxSizer_Insert_3_2 1284 +#define wxSizer_Insert_2 1285 +#define wxSizer_InsertSpacer 1286 +#define wxSizer_InsertStretchSpacer 1287 +#define wxSizer_IsShown_1_2 1288 +#define wxSizer_IsShown_1_1 1289 +#define wxSizer_IsShown_1_0 1290 +#define wxSizer_Layout 1291 +#define wxSizer_Prepend_2_1 1292 +#define wxSizer_Prepend_2_0 1293 +#define wxSizer_Prepend_3 1294 +#define wxSizer_Prepend_2_3 1295 +#define wxSizer_Prepend_2_2 1296 +#define wxSizer_Prepend_1 1297 +#define wxSizer_PrependSpacer 1298 +#define wxSizer_PrependStretchSpacer 1299 +#define wxSizer_RecalcSizes 1300 +#define wxSizer_Remove_1_1 1301 +#define wxSizer_Remove_1_0 1302 +#define wxSizer_Replace_3_1 1303 +#define wxSizer_Replace_3_0 1304 +#define wxSizer_Replace_2 1305 +#define wxSizer_SetDimension 1306 +#define wxSizer_SetMinSize_2 1307 +#define wxSizer_SetMinSize_1 1308 +#define wxSizer_SetItemMinSize_3_2 1309 +#define wxSizer_SetItemMinSize_2_2 1310 +#define wxSizer_SetItemMinSize_3_1 1311 +#define wxSizer_SetItemMinSize_2_1 1312 +#define wxSizer_SetItemMinSize_3_0 1313 +#define wxSizer_SetItemMinSize_2_0 1314 +#define wxSizer_SetSizeHints 1315 +#define wxSizer_SetVirtualSizeHints 1316 +#define wxSizer_Show_2_2 1317 +#define wxSizer_Show_2_1 1318 +#define wxSizer_Show_2_0 1319 +#define wxSizer_Show_1 1320 +#define wxSizerFlags_new 1321 +#define wxSizerFlags_Align 1322 +#define wxSizerFlags_Border_2 1323 +#define wxSizerFlags_Border_1 1324 +#define wxSizerFlags_Center 1325 +#define wxSizerFlags_Centre 1326 +#define wxSizerFlags_Expand 1327 +#define wxSizerFlags_Left 1328 +#define wxSizerFlags_Proportion 1329 +#define wxSizerFlags_Right 1330 +#define wxSizerFlags_destroy 1331 +#define wxSizerItem_new_5_1 1332 +#define wxSizerItem_new_2_1 1333 +#define wxSizerItem_new_5_0 1334 +#define wxSizerItem_new_2_0 1335 +#define wxSizerItem_new_6 1336 +#define wxSizerItem_new_3 1337 +#define wxSizerItem_new_0 1338 +#define wxSizerItem_destruct 1339 +#define wxSizerItem_CalcMin 1340 +#define wxSizerItem_DeleteWindows 1341 +#define wxSizerItem_DetachSizer 1342 +#define wxSizerItem_GetBorder 1343 +#define wxSizerItem_GetFlag 1344 +#define wxSizerItem_GetMinSize 1345 +#define wxSizerItem_GetPosition 1346 +#define wxSizerItem_GetProportion 1347 +#define wxSizerItem_GetRatio 1348 +#define wxSizerItem_GetRect 1349 +#define wxSizerItem_GetSize 1350 +#define wxSizerItem_GetSizer 1351 +#define wxSizerItem_GetSpacer 1352 +#define wxSizerItem_GetUserData 1353 +#define wxSizerItem_GetWindow 1354 +#define wxSizerItem_IsSizer 1355 +#define wxSizerItem_IsShown 1356 +#define wxSizerItem_IsSpacer 1357 +#define wxSizerItem_IsWindow 1358 +#define wxSizerItem_SetBorder 1359 +#define wxSizerItem_SetDimension 1360 +#define wxSizerItem_SetFlag 1361 +#define wxSizerItem_SetInitSize 1362 +#define wxSizerItem_SetMinSize_1 1363 +#define wxSizerItem_SetMinSize_2 1364 +#define wxSizerItem_SetProportion 1365 +#define wxSizerItem_SetRatio_2 1366 +#define wxSizerItem_SetRatio_1_1 1367 +#define wxSizerItem_SetRatio_1_0 1368 +#define wxSizerItem_SetSizer 1369 +#define wxSizerItem_SetSpacer_1 1370 +#define wxSizerItem_SetSpacer_2 1371 +#define wxSizerItem_SetWindow 1372 +#define wxSizerItem_Show 1373 +#define wxBoxSizer_new 1374 +#define wxBoxSizer_GetOrientation 1375 +#define wxBoxSizer_destroy 1376 +#define wxStaticBoxSizer_new_2 1377 +#define wxStaticBoxSizer_new_3 1378 +#define wxStaticBoxSizer_GetStaticBox 1379 +#define wxStaticBoxSizer_destroy 1380 +#define wxGridSizer_new_4 1381 +#define wxGridSizer_new_2 1382 +#define wxGridSizer_GetCols 1383 +#define wxGridSizer_GetHGap 1384 +#define wxGridSizer_GetRows 1385 +#define wxGridSizer_GetVGap 1386 +#define wxGridSizer_SetCols 1387 +#define wxGridSizer_SetHGap 1388 +#define wxGridSizer_SetRows 1389 +#define wxGridSizer_SetVGap 1390 +#define wxGridSizer_destroy 1391 +#define wxFlexGridSizer_new_4 1392 +#define wxFlexGridSizer_new_2 1393 +#define wxFlexGridSizer_AddGrowableCol 1394 +#define wxFlexGridSizer_AddGrowableRow 1395 +#define wxFlexGridSizer_GetFlexibleDirection 1396 +#define wxFlexGridSizer_GetNonFlexibleGrowMode 1397 +#define wxFlexGridSizer_RemoveGrowableCol 1398 +#define wxFlexGridSizer_RemoveGrowableRow 1399 +#define wxFlexGridSizer_SetFlexibleDirection 1400 +#define wxFlexGridSizer_SetNonFlexibleGrowMode 1401 +#define wxFlexGridSizer_destroy 1402 +#define wxGridBagSizer_new 1403 +#define wxGridBagSizer_Add_3_2 1404 +#define wxGridBagSizer_Add_3_1 1405 +#define wxGridBagSizer_Add_4 1406 +#define wxGridBagSizer_Add_1_0 1407 +#define wxGridBagSizer_Add_2_1 1408 +#define wxGridBagSizer_Add_2_0 1409 +#define wxGridBagSizer_Add_3_0 1410 +#define wxGridBagSizer_Add_1_1 1411 +#define wxGridBagSizer_CalcMin 1412 +#define wxGridBagSizer_CheckForIntersection_2 1413 +#define wxGridBagSizer_CheckForIntersection_3 1414 +#define wxGridBagSizer_FindItem_1_1 1415 +#define wxGridBagSizer_FindItem_1_0 1416 +#define wxGridBagSizer_FindItemAtPoint 1417 +#define wxGridBagSizer_FindItemAtPosition 1418 +#define wxGridBagSizer_FindItemWithData 1419 +#define wxGridBagSizer_GetCellSize 1420 +#define wxGridBagSizer_GetEmptyCellSize 1421 +#define wxGridBagSizer_GetItemPosition_1_2 1422 +#define wxGridBagSizer_GetItemPosition_1_1 1423 +#define wxGridBagSizer_GetItemPosition_1_0 1424 +#define wxGridBagSizer_GetItemSpan_1_2 1425 +#define wxGridBagSizer_GetItemSpan_1_1 1426 +#define wxGridBagSizer_GetItemSpan_1_0 1427 +#define wxGridBagSizer_SetEmptyCellSize 1428 +#define wxGridBagSizer_SetItemPosition_2_2 1429 +#define wxGridBagSizer_SetItemPosition_2_1 1430 +#define wxGridBagSizer_SetItemPosition_2_0 1431 +#define wxGridBagSizer_SetItemSpan_2_2 1432 +#define wxGridBagSizer_SetItemSpan_2_1 1433 +#define wxGridBagSizer_SetItemSpan_2_0 1434 +#define wxGridBagSizer_destroy 1435 +#define wxStdDialogButtonSizer_new 1436 +#define wxStdDialogButtonSizer_AddButton 1437 +#define wxStdDialogButtonSizer_Realize 1438 +#define wxStdDialogButtonSizer_SetAffirmativeButton 1439 +#define wxStdDialogButtonSizer_SetCancelButton 1440 +#define wxStdDialogButtonSizer_SetNegativeButton 1441 +#define wxStdDialogButtonSizer_destroy 1442 +#define wxFont_new_0 1443 +#define wxFont_new_1 1444 +#define wxFont_new_5 1445 +#define wxFont_destruct 1447 +#define wxFont_IsFixedWidth 1448 +#define wxFont_GetDefaultEncoding 1449 +#define wxFont_GetFaceName 1450 +#define wxFont_GetFamily 1451 +#define wxFont_GetNativeFontInfoDesc 1452 +#define wxFont_GetNativeFontInfoUserDesc 1453 +#define wxFont_GetPointSize 1454 +#define wxFont_GetStyle 1455 +#define wxFont_GetUnderlined 1456 +#define wxFont_GetWeight 1457 +#define wxFont_Ok 1458 +#define wxFont_SetDefaultEncoding 1459 +#define wxFont_SetFaceName 1460 +#define wxFont_SetFamily 1461 +#define wxFont_SetPointSize 1462 +#define wxFont_SetStyle 1463 +#define wxFont_SetUnderlined 1464 +#define wxFont_SetWeight 1465 +#define wxToolTip_Enable 1466 +#define wxToolTip_SetDelay 1467 +#define wxToolTip_new 1468 +#define wxToolTip_SetTip 1469 +#define wxToolTip_GetTip 1470 +#define wxToolTip_GetWindow 1471 +#define wxToolTip_destroy 1472 +#define wxButton_new_3 1474 +#define wxButton_new_0 1475 +#define wxButton_destruct 1476 +#define wxButton_Create 1477 +#define wxButton_GetDefaultSize 1478 +#define wxButton_SetDefault 1479 +#define wxButton_SetLabel 1480 +#define wxBitmapButton_new_4 1482 +#define wxBitmapButton_new_0 1483 +#define wxBitmapButton_Create 1484 +#define wxBitmapButton_GetBitmapDisabled 1485 +#define wxBitmapButton_GetBitmapFocus 1487 +#define wxBitmapButton_GetBitmapLabel 1489 +#define wxBitmapButton_GetBitmapSelected 1491 +#define wxBitmapButton_SetBitmapDisabled 1493 +#define wxBitmapButton_SetBitmapFocus 1494 +#define wxBitmapButton_SetBitmapLabel 1495 +#define wxBitmapButton_SetBitmapSelected 1496 +#define wxBitmapButton_destroy 1497 +#define wxToggleButton_new_0 1498 +#define wxToggleButton_new_4 1499 +#define wxToggleButton_Create 1500 +#define wxToggleButton_GetValue 1501 +#define wxToggleButton_SetValue 1502 +#define wxToggleButton_destroy 1503 +#define wxCalendarCtrl_new_0 1504 +#define wxCalendarCtrl_new_3 1505 +#define wxCalendarCtrl_Create 1506 +#define wxCalendarCtrl_destruct 1507 +#define wxCalendarCtrl_SetDate 1508 +#define wxCalendarCtrl_GetDate 1509 +#define wxCalendarCtrl_EnableYearChange 1510 +#define wxCalendarCtrl_EnableMonthChange 1511 +#define wxCalendarCtrl_EnableHolidayDisplay 1512 +#define wxCalendarCtrl_SetHeaderColours 1513 +#define wxCalendarCtrl_GetHeaderColourFg 1514 +#define wxCalendarCtrl_GetHeaderColourBg 1515 +#define wxCalendarCtrl_SetHighlightColours 1516 +#define wxCalendarCtrl_GetHighlightColourFg 1517 +#define wxCalendarCtrl_GetHighlightColourBg 1518 +#define wxCalendarCtrl_SetHolidayColours 1519 +#define wxCalendarCtrl_GetHolidayColourFg 1520 +#define wxCalendarCtrl_GetHolidayColourBg 1521 +#define wxCalendarCtrl_GetAttr 1522 +#define wxCalendarCtrl_SetAttr 1523 +#define wxCalendarCtrl_SetHoliday 1524 +#define wxCalendarCtrl_ResetAttr 1525 +#define wxCalendarCtrl_HitTest 1526 +#define wxCalendarDateAttr_new_0 1527 +#define wxCalendarDateAttr_new_2_1 1528 +#define wxCalendarDateAttr_new_2_0 1529 +#define wxCalendarDateAttr_SetTextColour 1530 +#define wxCalendarDateAttr_SetBackgroundColour 1531 +#define wxCalendarDateAttr_SetBorderColour 1532 +#define wxCalendarDateAttr_SetFont 1533 +#define wxCalendarDateAttr_SetBorder 1534 +#define wxCalendarDateAttr_SetHoliday 1535 +#define wxCalendarDateAttr_HasTextColour 1536 +#define wxCalendarDateAttr_HasBackgroundColour 1537 +#define wxCalendarDateAttr_HasBorderColour 1538 +#define wxCalendarDateAttr_HasFont 1539 +#define wxCalendarDateAttr_HasBorder 1540 +#define wxCalendarDateAttr_IsHoliday 1541 +#define wxCalendarDateAttr_GetTextColour 1542 +#define wxCalendarDateAttr_GetBackgroundColour 1543 +#define wxCalendarDateAttr_GetBorderColour 1544 +#define wxCalendarDateAttr_GetFont 1545 +#define wxCalendarDateAttr_GetBorder 1546 +#define wxCalendarDateAttr_destroy 1547 +#define wxCheckBox_new_4 1549 +#define wxCheckBox_new_0 1550 +#define wxCheckBox_Create 1551 +#define wxCheckBox_GetValue 1552 +#define wxCheckBox_Get3StateValue 1553 +#define wxCheckBox_Is3rdStateAllowedForUser 1554 +#define wxCheckBox_Is3State 1555 +#define wxCheckBox_IsChecked 1556 +#define wxCheckBox_SetValue 1557 +#define wxCheckBox_Set3StateValue 1558 +#define wxCheckBox_destroy 1559 +#define wxCheckListBox_new_0 1560 +#define wxCheckListBox_new_3 1562 +#define wxCheckListBox_Check 1563 +#define wxCheckListBox_IsChecked 1564 +#define wxCheckListBox_destroy 1565 +#define wxChoice_new_3 1568 +#define wxChoice_new_0 1569 +#define wxChoice_destruct 1571 +#define wxChoice_Create 1573 +#define wxChoice_Delete 1574 +#define wxChoice_GetColumns 1575 +#define wxChoice_SetColumns 1576 +#define wxComboBox_new_0 1577 +#define wxComboBox_new_3 1579 +#define wxComboBox_destruct 1580 +#define wxComboBox_Create 1582 +#define wxComboBox_CanCopy 1583 +#define wxComboBox_CanCut 1584 +#define wxComboBox_CanPaste 1585 +#define wxComboBox_CanRedo 1586 +#define wxComboBox_CanUndo 1587 +#define wxComboBox_Copy 1588 +#define wxComboBox_Cut 1589 +#define wxComboBox_GetInsertionPoint 1590 +#define wxComboBox_GetLastPosition 1591 +#define wxComboBox_GetValue 1592 +#define wxComboBox_Paste 1593 +#define wxComboBox_Redo 1594 +#define wxComboBox_Replace 1595 +#define wxComboBox_Remove 1596 +#define wxComboBox_SetInsertionPoint 1597 +#define wxComboBox_SetInsertionPointEnd 1598 +#define wxComboBox_SetSelection_1 1599 +#define wxComboBox_SetSelection_2 1600 +#define wxComboBox_SetValue 1601 +#define wxComboBox_Undo 1602 +#define wxGauge_new_0 1603 +#define wxGauge_new_4 1604 +#define wxGauge_Create 1605 +#define wxGauge_GetRange 1606 +#define wxGauge_GetValue 1607 +#define wxGauge_IsVertical 1608 +#define wxGauge_SetRange 1609 +#define wxGauge_SetValue 1610 +#define wxGauge_Pulse 1611 +#define wxGauge_destroy 1612 +#define wxGenericDirCtrl_new_0 1613 +#define wxGenericDirCtrl_new_2 1614 +#define wxGenericDirCtrl_destruct 1615 +#define wxGenericDirCtrl_Create 1616 +#define wxGenericDirCtrl_Init 1617 +#define wxGenericDirCtrl_CollapseTree 1618 +#define wxGenericDirCtrl_ExpandPath 1619 +#define wxGenericDirCtrl_GetDefaultPath 1620 +#define wxGenericDirCtrl_GetPath 1621 +#define wxGenericDirCtrl_GetFilePath 1622 +#define wxGenericDirCtrl_GetFilter 1623 +#define wxGenericDirCtrl_GetFilterIndex 1624 +#define wxGenericDirCtrl_GetRootId 1625 +#define wxGenericDirCtrl_GetTreeCtrl 1626 +#define wxGenericDirCtrl_ReCreateTree 1627 +#define wxGenericDirCtrl_SetDefaultPath 1628 +#define wxGenericDirCtrl_SetFilter 1629 +#define wxGenericDirCtrl_SetFilterIndex 1630 +#define wxGenericDirCtrl_SetPath 1631 +#define wxStaticBox_new_4 1633 +#define wxStaticBox_new_0 1634 +#define wxStaticBox_Create 1635 +#define wxStaticBox_destroy 1636 +#define wxStaticLine_new_2 1638 +#define wxStaticLine_new_0 1639 +#define wxStaticLine_Create 1640 +#define wxStaticLine_IsVertical 1641 +#define wxStaticLine_GetDefaultSize 1642 +#define wxStaticLine_destroy 1643 +#define wxListBox_new_3 1646 +#define wxListBox_new_0 1647 +#define wxListBox_destruct 1649 +#define wxListBox_Create 1651 +#define wxListBox_Deselect 1652 +#define wxListBox_GetSelections 1653 +#define wxListBox_InsertItems 1654 +#define wxListBox_IsSelected 1655 +#define wxListBox_Set 1656 +#define wxListBox_HitTest 1657 +#define wxListBox_SetFirstItem_1_0 1658 +#define wxListBox_SetFirstItem_1_1 1659 +#define wxListCtrl_new_0 1660 +#define wxListCtrl_new_2 1661 +#define wxListCtrl_Arrange 1662 +#define wxListCtrl_AssignImageList 1663 +#define wxListCtrl_ClearAll 1664 +#define wxListCtrl_Create 1665 +#define wxListCtrl_DeleteAllItems 1666 +#define wxListCtrl_DeleteColumn 1667 +#define wxListCtrl_DeleteItem 1668 +#define wxListCtrl_EditLabel 1669 +#define wxListCtrl_EnsureVisible 1670 +#define wxListCtrl_FindItem_3_0 1671 +#define wxListCtrl_FindItem_3_1 1672 +#define wxListCtrl_GetColumn 1673 +#define wxListCtrl_GetColumnCount 1674 +#define wxListCtrl_GetColumnWidth 1675 +#define wxListCtrl_GetCountPerPage 1676 +#define wxListCtrl_GetEditControl 1677 +#define wxListCtrl_GetImageList 1678 +#define wxListCtrl_GetItem 1679 +#define wxListCtrl_GetItemBackgroundColour 1680 +#define wxListCtrl_GetItemCount 1681 +#define wxListCtrl_GetItemData 1682 +#define wxListCtrl_GetItemFont 1683 +#define wxListCtrl_GetItemPosition 1684 +#define wxListCtrl_GetItemRect 1685 +#define wxListCtrl_GetItemSpacing 1686 +#define wxListCtrl_GetItemState 1687 +#define wxListCtrl_GetItemText 1688 +#define wxListCtrl_GetItemTextColour 1689 +#define wxListCtrl_GetNextItem 1690 +#define wxListCtrl_GetSelectedItemCount 1691 +#define wxListCtrl_GetTextColour 1692 +#define wxListCtrl_GetTopItem 1693 +#define wxListCtrl_GetViewRect 1694 +#define wxListCtrl_HitTest 1695 +#define wxListCtrl_InsertColumn_2 1696 +#define wxListCtrl_InsertColumn_3 1697 +#define wxListCtrl_InsertItem_1 1698 +#define wxListCtrl_InsertItem_2_1 1699 +#define wxListCtrl_InsertItem_2_0 1700 +#define wxListCtrl_InsertItem_3 1701 +#define wxListCtrl_RefreshItem 1702 +#define wxListCtrl_RefreshItems 1703 +#define wxListCtrl_ScrollList 1704 +#define wxListCtrl_SetBackgroundColour 1705 +#define wxListCtrl_SetColumn 1706 +#define wxListCtrl_SetColumnWidth 1707 +#define wxListCtrl_SetImageList 1708 +#define wxListCtrl_SetItem_1 1709 +#define wxListCtrl_SetItem_4 1710 +#define wxListCtrl_SetItemBackgroundColour 1711 +#define wxListCtrl_SetItemCount 1712 +#define wxListCtrl_SetItemData 1713 +#define wxListCtrl_SetItemFont 1714 +#define wxListCtrl_SetItemImage 1715 +#define wxListCtrl_SetItemColumnImage 1716 +#define wxListCtrl_SetItemPosition 1717 +#define wxListCtrl_SetItemState 1718 +#define wxListCtrl_SetItemText 1719 +#define wxListCtrl_SetItemTextColour 1720 +#define wxListCtrl_SetSingleStyle 1721 +#define wxListCtrl_SetTextColour 1722 +#define wxListCtrl_SetWindowStyleFlag 1723 +#define wxListCtrl_SortItems 1724 +#define wxListCtrl_destroy 1725 +#define wxListView_ClearColumnImage 1726 +#define wxListView_Focus 1727 +#define wxListView_GetFirstSelected 1728 +#define wxListView_GetFocusedItem 1729 +#define wxListView_GetNextSelected 1730 +#define wxListView_IsSelected 1731 +#define wxListView_Select 1732 +#define wxListView_SetColumnImage 1733 +#define wxListItem_new_0 1734 +#define wxListItem_new_1 1735 +#define wxListItem_destruct 1736 +#define wxListItem_Clear 1737 +#define wxListItem_GetAlign 1738 +#define wxListItem_GetBackgroundColour 1739 +#define wxListItem_GetColumn 1740 +#define wxListItem_GetFont 1741 +#define wxListItem_GetId 1742 +#define wxListItem_GetImage 1743 +#define wxListItem_GetMask 1744 +#define wxListItem_GetState 1745 +#define wxListItem_GetText 1746 +#define wxListItem_GetTextColour 1747 +#define wxListItem_GetWidth 1748 +#define wxListItem_SetAlign 1749 +#define wxListItem_SetBackgroundColour 1750 +#define wxListItem_SetColumn 1751 +#define wxListItem_SetFont 1752 +#define wxListItem_SetId 1753 +#define wxListItem_SetImage 1754 +#define wxListItem_SetMask 1755 +#define wxListItem_SetState 1756 +#define wxListItem_SetStateMask 1757 +#define wxListItem_SetText 1758 +#define wxListItem_SetTextColour 1759 +#define wxListItem_SetWidth 1760 +#define wxListItemAttr_new_0 1761 +#define wxListItemAttr_new_3 1762 +#define wxListItemAttr_GetBackgroundColour 1763 +#define wxListItemAttr_GetFont 1764 +#define wxListItemAttr_GetTextColour 1765 +#define wxListItemAttr_HasBackgroundColour 1766 +#define wxListItemAttr_HasFont 1767 +#define wxListItemAttr_HasTextColour 1768 +#define wxListItemAttr_SetBackgroundColour 1769 +#define wxListItemAttr_SetFont 1770 +#define wxListItemAttr_SetTextColour 1771 +#define wxListItemAttr_destroy 1772 +#define wxImageList_new_0 1773 +#define wxImageList_new_3 1774 +#define wxImageList_Add_1 1775 +#define wxImageList_Add_2_0 1776 +#define wxImageList_Add_2_1 1777 +#define wxImageList_Create 1778 +#define wxImageList_Draw 1780 +#define wxImageList_GetBitmap 1781 +#define wxImageList_GetIcon 1782 +#define wxImageList_GetImageCount 1783 +#define wxImageList_GetSize 1784 +#define wxImageList_Remove 1785 +#define wxImageList_RemoveAll 1786 +#define wxImageList_Replace_2 1787 +#define wxImageList_Replace_3 1788 +#define wxImageList_destroy 1789 +#define wxTextAttr_new_0 1790 +#define wxTextAttr_new_2 1791 +#define wxTextAttr_GetAlignment 1792 +#define wxTextAttr_GetBackgroundColour 1793 +#define wxTextAttr_GetFont 1794 +#define wxTextAttr_GetLeftIndent 1795 +#define wxTextAttr_GetLeftSubIndent 1796 +#define wxTextAttr_GetRightIndent 1797 +#define wxTextAttr_GetTabs 1798 +#define wxTextAttr_GetTextColour 1799 +#define wxTextAttr_HasBackgroundColour 1800 +#define wxTextAttr_HasFont 1801 +#define wxTextAttr_HasTextColour 1802 +#define wxTextAttr_GetFlags 1803 +#define wxTextAttr_IsDefault 1804 +#define wxTextAttr_SetAlignment 1805 +#define wxTextAttr_SetBackgroundColour 1806 +#define wxTextAttr_SetFlags 1807 +#define wxTextAttr_SetFont 1808 +#define wxTextAttr_SetLeftIndent 1809 +#define wxTextAttr_SetRightIndent 1810 +#define wxTextAttr_SetTabs 1811 +#define wxTextAttr_SetTextColour 1812 +#define wxTextAttr_destroy 1813 +#define wxTextCtrl_new_3 1815 +#define wxTextCtrl_new_0 1816 +#define wxTextCtrl_destruct 1818 +#define wxTextCtrl_AppendText 1819 +#define wxTextCtrl_CanCopy 1820 +#define wxTextCtrl_CanCut 1821 +#define wxTextCtrl_CanPaste 1822 +#define wxTextCtrl_CanRedo 1823 +#define wxTextCtrl_CanUndo 1824 +#define wxTextCtrl_Clear 1825 +#define wxTextCtrl_Copy 1826 +#define wxTextCtrl_Create 1827 +#define wxTextCtrl_Cut 1828 +#define wxTextCtrl_DiscardEdits 1829 +#define wxTextCtrl_ChangeValue 1830 +#define wxTextCtrl_EmulateKeyPress 1831 +#define wxTextCtrl_GetDefaultStyle 1832 +#define wxTextCtrl_GetInsertionPoint 1833 +#define wxTextCtrl_GetLastPosition 1834 +#define wxTextCtrl_GetLineLength 1835 +#define wxTextCtrl_GetLineText 1836 +#define wxTextCtrl_GetNumberOfLines 1837 +#define wxTextCtrl_GetRange 1838 +#define wxTextCtrl_GetSelection 1839 +#define wxTextCtrl_GetStringSelection 1840 +#define wxTextCtrl_GetStyle 1841 +#define wxTextCtrl_GetValue 1842 +#define wxTextCtrl_IsEditable 1843 +#define wxTextCtrl_IsModified 1844 +#define wxTextCtrl_IsMultiLine 1845 +#define wxTextCtrl_IsSingleLine 1846 +#define wxTextCtrl_LoadFile 1847 +#define wxTextCtrl_MarkDirty 1848 +#define wxTextCtrl_Paste 1849 +#define wxTextCtrl_PositionToXY 1850 +#define wxTextCtrl_Redo 1851 +#define wxTextCtrl_Remove 1852 +#define wxTextCtrl_Replace 1853 +#define wxTextCtrl_SaveFile 1854 +#define wxTextCtrl_SetDefaultStyle 1855 +#define wxTextCtrl_SetEditable 1856 +#define wxTextCtrl_SetInsertionPoint 1857 +#define wxTextCtrl_SetInsertionPointEnd 1858 +#define wxTextCtrl_SetMaxLength 1860 +#define wxTextCtrl_SetSelection 1861 +#define wxTextCtrl_SetStyle 1862 +#define wxTextCtrl_SetValue 1863 +#define wxTextCtrl_ShowPosition 1864 +#define wxTextCtrl_Undo 1865 +#define wxTextCtrl_WriteText 1866 +#define wxTextCtrl_XYToPosition 1867 +#define wxNotebook_new_0 1870 +#define wxNotebook_new_3 1871 +#define wxNotebook_destruct 1872 +#define wxNotebook_AddPage 1873 +#define wxNotebook_AdvanceSelection 1874 +#define wxNotebook_AssignImageList 1875 +#define wxNotebook_Create 1876 +#define wxNotebook_DeleteAllPages 1877 +#define wxNotebook_DeletePage 1878 +#define wxNotebook_RemovePage 1879 +#define wxNotebook_GetCurrentPage 1880 +#define wxNotebook_GetImageList 1881 +#define wxNotebook_GetPage 1883 +#define wxNotebook_GetPageCount 1884 +#define wxNotebook_GetPageImage 1885 +#define wxNotebook_GetPageText 1886 +#define wxNotebook_GetRowCount 1887 +#define wxNotebook_GetSelection 1888 +#define wxNotebook_GetThemeBackgroundColour 1889 +#define wxNotebook_HitTest 1891 +#define wxNotebook_InsertPage 1893 +#define wxNotebook_SetImageList 1894 +#define wxNotebook_SetPadding 1895 +#define wxNotebook_SetPageSize 1896 +#define wxNotebook_SetPageImage 1897 +#define wxNotebook_SetPageText 1898 +#define wxNotebook_SetSelection 1899 +#define wxNotebook_ChangeSelection 1900 +#define wxChoicebook_new_0 1901 +#define wxChoicebook_new_3 1902 +#define wxChoicebook_AddPage 1903 +#define wxChoicebook_AdvanceSelection 1904 +#define wxChoicebook_AssignImageList 1905 +#define wxChoicebook_Create 1906 +#define wxChoicebook_DeleteAllPages 1907 +#define wxChoicebook_DeletePage 1908 +#define wxChoicebook_RemovePage 1909 +#define wxChoicebook_GetCurrentPage 1910 +#define wxChoicebook_GetImageList 1911 +#define wxChoicebook_GetPage 1913 +#define wxChoicebook_GetPageCount 1914 +#define wxChoicebook_GetPageImage 1915 +#define wxChoicebook_GetPageText 1916 +#define wxChoicebook_GetSelection 1917 +#define wxChoicebook_HitTest 1918 +#define wxChoicebook_InsertPage 1919 +#define wxChoicebook_SetImageList 1920 +#define wxChoicebook_SetPageSize 1921 +#define wxChoicebook_SetPageImage 1922 +#define wxChoicebook_SetPageText 1923 +#define wxChoicebook_SetSelection 1924 +#define wxChoicebook_ChangeSelection 1925 +#define wxChoicebook_destroy 1926 +#define wxToolbook_new_0 1927 +#define wxToolbook_new_3 1928 +#define wxToolbook_AddPage 1929 +#define wxToolbook_AdvanceSelection 1930 +#define wxToolbook_AssignImageList 1931 +#define wxToolbook_Create 1932 +#define wxToolbook_DeleteAllPages 1933 +#define wxToolbook_DeletePage 1934 +#define wxToolbook_RemovePage 1935 +#define wxToolbook_GetCurrentPage 1936 +#define wxToolbook_GetImageList 1937 +#define wxToolbook_GetPage 1939 +#define wxToolbook_GetPageCount 1940 +#define wxToolbook_GetPageImage 1941 +#define wxToolbook_GetPageText 1942 +#define wxToolbook_GetSelection 1943 +#define wxToolbook_HitTest 1945 +#define wxToolbook_InsertPage 1946 +#define wxToolbook_SetImageList 1947 +#define wxToolbook_SetPageSize 1948 +#define wxToolbook_SetPageImage 1949 +#define wxToolbook_SetPageText 1950 +#define wxToolbook_SetSelection 1951 +#define wxToolbook_ChangeSelection 1952 +#define wxToolbook_destroy 1953 +#define wxListbook_new_0 1954 +#define wxListbook_new_3 1955 +#define wxListbook_AddPage 1956 +#define wxListbook_AdvanceSelection 1957 +#define wxListbook_AssignImageList 1958 +#define wxListbook_Create 1959 +#define wxListbook_DeleteAllPages 1960 +#define wxListbook_DeletePage 1961 +#define wxListbook_RemovePage 1962 +#define wxListbook_GetCurrentPage 1963 +#define wxListbook_GetImageList 1964 +#define wxListbook_GetPage 1966 +#define wxListbook_GetPageCount 1967 +#define wxListbook_GetPageImage 1968 +#define wxListbook_GetPageText 1969 +#define wxListbook_GetSelection 1970 +#define wxListbook_HitTest 1972 +#define wxListbook_InsertPage 1973 +#define wxListbook_SetImageList 1974 +#define wxListbook_SetPageSize 1975 +#define wxListbook_SetPageImage 1976 +#define wxListbook_SetPageText 1977 +#define wxListbook_SetSelection 1978 +#define wxListbook_ChangeSelection 1979 +#define wxListbook_destroy 1980 +#define wxTreebook_new_0 1981 +#define wxTreebook_new_3 1982 +#define wxTreebook_AddPage 1983 +#define wxTreebook_AdvanceSelection 1984 +#define wxTreebook_AssignImageList 1985 +#define wxTreebook_Create 1986 +#define wxTreebook_DeleteAllPages 1987 +#define wxTreebook_DeletePage 1988 +#define wxTreebook_RemovePage 1989 +#define wxTreebook_GetCurrentPage 1990 +#define wxTreebook_GetImageList 1991 +#define wxTreebook_GetPage 1993 +#define wxTreebook_GetPageCount 1994 +#define wxTreebook_GetPageImage 1995 +#define wxTreebook_GetPageText 1996 +#define wxTreebook_GetSelection 1997 +#define wxTreebook_ExpandNode 1998 +#define wxTreebook_IsNodeExpanded 1999 +#define wxTreebook_HitTest 2001 +#define wxTreebook_InsertPage 2002 +#define wxTreebook_InsertSubPage 2003 +#define wxTreebook_SetImageList 2004 +#define wxTreebook_SetPageSize 2005 +#define wxTreebook_SetPageImage 2006 +#define wxTreebook_SetPageText 2007 +#define wxTreebook_SetSelection 2008 +#define wxTreebook_ChangeSelection 2009 +#define wxTreebook_destroy 2010 +#define wxTreeCtrl_new_2 2013 +#define wxTreeCtrl_new_0 2014 +#define wxTreeCtrl_destruct 2016 +#define wxTreeCtrl_AddRoot 2017 +#define wxTreeCtrl_AppendItem 2018 +#define wxTreeCtrl_AssignImageList 2019 +#define wxTreeCtrl_AssignStateImageList 2020 +#define wxTreeCtrl_Collapse 2021 +#define wxTreeCtrl_CollapseAndReset 2022 +#define wxTreeCtrl_Create 2023 +#define wxTreeCtrl_Delete 2024 +#define wxTreeCtrl_DeleteAllItems 2025 +#define wxTreeCtrl_DeleteChildren 2026 +#define wxTreeCtrl_EditLabel 2027 +#define wxTreeCtrl_EnsureVisible 2028 +#define wxTreeCtrl_Expand 2029 +#define wxTreeCtrl_GetBoundingRect 2030 +#define wxTreeCtrl_GetChildrenCount 2032 +#define wxTreeCtrl_GetCount 2033 +#define wxTreeCtrl_GetEditControl 2034 +#define wxTreeCtrl_GetFirstChild 2035 +#define wxTreeCtrl_GetNextChild 2036 +#define wxTreeCtrl_GetFirstVisibleItem 2037 +#define wxTreeCtrl_GetImageList 2038 +#define wxTreeCtrl_GetIndent 2039 +#define wxTreeCtrl_GetItemBackgroundColour 2040 +#define wxTreeCtrl_GetItemData 2041 +#define wxTreeCtrl_GetItemFont 2042 +#define wxTreeCtrl_GetItemImage_1 2043 +#define wxTreeCtrl_GetItemImage_2 2044 +#define wxTreeCtrl_GetItemText 2045 +#define wxTreeCtrl_GetItemTextColour 2046 +#define wxTreeCtrl_GetLastChild 2047 +#define wxTreeCtrl_GetNextSibling 2048 +#define wxTreeCtrl_GetNextVisible 2049 +#define wxTreeCtrl_GetItemParent 2050 +#define wxTreeCtrl_GetPrevSibling 2051 +#define wxTreeCtrl_GetPrevVisible 2052 +#define wxTreeCtrl_GetRootItem 2053 +#define wxTreeCtrl_GetSelection 2054 +#define wxTreeCtrl_GetSelections 2055 +#define wxTreeCtrl_GetStateImageList 2056 +#define wxTreeCtrl_HitTest 2057 +#define wxTreeCtrl_InsertItem 2059 +#define wxTreeCtrl_IsBold 2060 +#define wxTreeCtrl_IsExpanded 2061 +#define wxTreeCtrl_IsSelected 2062 +#define wxTreeCtrl_IsVisible 2063 +#define wxTreeCtrl_ItemHasChildren 2064 +#define wxTreeCtrl_IsTreeItemIdOk 2065 +#define wxTreeCtrl_PrependItem 2066 +#define wxTreeCtrl_ScrollTo 2067 +#define wxTreeCtrl_SelectItem_1 2068 +#define wxTreeCtrl_SelectItem_2 2069 +#define wxTreeCtrl_SetIndent 2070 +#define wxTreeCtrl_SetImageList 2071 +#define wxTreeCtrl_SetItemBackgroundColour 2072 +#define wxTreeCtrl_SetItemBold 2073 +#define wxTreeCtrl_SetItemData 2074 +#define wxTreeCtrl_SetItemDropHighlight 2075 +#define wxTreeCtrl_SetItemFont 2076 +#define wxTreeCtrl_SetItemHasChildren 2077 +#define wxTreeCtrl_SetItemImage_2 2078 +#define wxTreeCtrl_SetItemImage_3 2079 +#define wxTreeCtrl_SetItemText 2080 +#define wxTreeCtrl_SetItemTextColour 2081 +#define wxTreeCtrl_SetStateImageList 2082 +#define wxTreeCtrl_SetWindowStyle 2083 +#define wxTreeCtrl_SortChildren 2084 +#define wxTreeCtrl_Toggle 2085 +#define wxTreeCtrl_ToggleItemSelection 2086 +#define wxTreeCtrl_Unselect 2087 +#define wxTreeCtrl_UnselectAll 2088 +#define wxTreeCtrl_UnselectItem 2089 +#define wxScrollBar_new_0 2090 +#define wxScrollBar_new_3 2091 +#define wxScrollBar_destruct 2092 +#define wxScrollBar_Create 2093 +#define wxScrollBar_GetRange 2094 +#define wxScrollBar_GetPageSize 2095 +#define wxScrollBar_GetThumbPosition 2096 +#define wxScrollBar_GetThumbSize 2097 +#define wxScrollBar_SetThumbPosition 2098 +#define wxScrollBar_SetScrollbar 2099 +#define wxSpinButton_new_2 2101 +#define wxSpinButton_new_0 2102 +#define wxSpinButton_Create 2103 +#define wxSpinButton_GetMax 2104 +#define wxSpinButton_GetMin 2105 +#define wxSpinButton_GetValue 2106 +#define wxSpinButton_SetRange 2107 +#define wxSpinButton_SetValue 2108 +#define wxSpinButton_destroy 2109 +#define wxSpinCtrl_new_0 2110 +#define wxSpinCtrl_new_2 2111 +#define wxSpinCtrl_Create 2113 +#define wxSpinCtrl_SetValue_1_1 2116 +#define wxSpinCtrl_SetValue_1_0 2117 +#define wxSpinCtrl_GetValue 2119 +#define wxSpinCtrl_SetRange 2121 +#define wxSpinCtrl_SetSelection 2122 +#define wxSpinCtrl_GetMin 2124 +#define wxSpinCtrl_GetMax 2126 +#define wxSpinCtrl_destroy 2127 +#define wxStaticText_new_0 2128 +#define wxStaticText_new_4 2129 +#define wxStaticText_Create 2130 +#define wxStaticText_GetLabel 2131 +#define wxStaticText_SetLabel 2132 +#define wxStaticText_Wrap 2133 +#define wxStaticText_destroy 2134 +#define wxStaticBitmap_new_0 2135 +#define wxStaticBitmap_new_4 2136 +#define wxStaticBitmap_Create 2137 +#define wxStaticBitmap_GetBitmap 2138 +#define wxStaticBitmap_SetBitmap 2139 +#define wxStaticBitmap_destroy 2140 +#define wxRadioBox_new 2141 +#define wxRadioBox_destruct 2143 +#define wxRadioBox_Create 2144 +#define wxRadioBox_Enable_2 2145 +#define wxRadioBox_Enable_1 2146 +#define wxRadioBox_GetSelection 2147 +#define wxRadioBox_GetString 2148 +#define wxRadioBox_SetSelection 2149 +#define wxRadioBox_Show_2 2150 +#define wxRadioBox_Show_1 2151 +#define wxRadioBox_GetColumnCount 2152 +#define wxRadioBox_GetItemHelpText 2153 +#define wxRadioBox_GetItemToolTip 2154 +#define wxRadioBox_GetItemFromPoint 2156 +#define wxRadioBox_GetRowCount 2157 +#define wxRadioBox_IsItemEnabled 2158 +#define wxRadioBox_IsItemShown 2159 +#define wxRadioBox_SetItemHelpText 2160 +#define wxRadioBox_SetItemToolTip 2161 +#define wxRadioButton_new_0 2162 +#define wxRadioButton_new_4 2163 +#define wxRadioButton_Create 2164 +#define wxRadioButton_GetValue 2165 +#define wxRadioButton_SetValue 2166 +#define wxRadioButton_destroy 2167 +#define wxSlider_new_6 2169 +#define wxSlider_new_0 2170 +#define wxSlider_Create 2171 +#define wxSlider_GetLineSize 2172 +#define wxSlider_GetMax 2173 +#define wxSlider_GetMin 2174 +#define wxSlider_GetPageSize 2175 +#define wxSlider_GetThumbLength 2176 +#define wxSlider_GetValue 2177 +#define wxSlider_SetLineSize 2178 +#define wxSlider_SetPageSize 2179 +#define wxSlider_SetRange 2180 +#define wxSlider_SetThumbLength 2181 +#define wxSlider_SetValue 2182 +#define wxSlider_destroy 2183 +#define wxDialog_new_4 2185 +#define wxDialog_new_0 2186 +#define wxDialog_destruct 2188 +#define wxDialog_Create 2189 +#define wxDialog_CreateButtonSizer 2190 +#define wxDialog_CreateStdDialogButtonSizer 2191 +#define wxDialog_EndModal 2192 +#define wxDialog_GetAffirmativeId 2193 +#define wxDialog_GetReturnCode 2194 +#define wxDialog_IsModal 2195 +#define wxDialog_SetAffirmativeId 2196 +#define wxDialog_SetReturnCode 2197 +#define wxDialog_Show 2198 +#define wxDialog_ShowModal 2199 +#define wxColourDialog_new_0 2200 +#define wxColourDialog_new_2 2201 +#define wxColourDialog_destruct 2202 +#define wxColourDialog_Create 2203 +#define wxColourDialog_GetColourData 2204 +#define wxColourData_new_0 2205 +#define wxColourData_new_1 2206 +#define wxColourData_destruct 2207 +#define wxColourData_GetChooseFull 2208 +#define wxColourData_GetColour 2209 +#define wxColourData_GetCustomColour 2211 +#define wxColourData_SetChooseFull 2212 +#define wxColourData_SetColour 2213 +#define wxColourData_SetCustomColour 2214 +#define wxPalette_new_0 2215 +#define wxPalette_new_4 2216 +#define wxPalette_destruct 2218 +#define wxPalette_Create 2219 +#define wxPalette_GetColoursCount 2220 +#define wxPalette_GetPixel 2221 +#define wxPalette_GetRGB 2222 +#define wxPalette_IsOk 2223 +#define wxDirDialog_new 2227 +#define wxDirDialog_destruct 2228 +#define wxDirDialog_GetPath 2229 +#define wxDirDialog_GetMessage 2230 +#define wxDirDialog_SetMessage 2231 +#define wxDirDialog_SetPath 2232 +#define wxFileDialog_new 2236 +#define wxFileDialog_destruct 2237 +#define wxFileDialog_GetDirectory 2238 +#define wxFileDialog_GetFilename 2239 +#define wxFileDialog_GetFilenames 2240 +#define wxFileDialog_GetFilterIndex 2241 +#define wxFileDialog_GetMessage 2242 +#define wxFileDialog_GetPath 2243 +#define wxFileDialog_GetPaths 2244 +#define wxFileDialog_GetWildcard 2245 +#define wxFileDialog_SetDirectory 2246 +#define wxFileDialog_SetFilename 2247 +#define wxFileDialog_SetFilterIndex 2248 +#define wxFileDialog_SetMessage 2249 +#define wxFileDialog_SetPath 2250 +#define wxFileDialog_SetWildcard 2251 +#define wxPickerBase_SetInternalMargin 2252 +#define wxPickerBase_GetInternalMargin 2253 +#define wxPickerBase_SetTextCtrlProportion 2254 +#define wxPickerBase_SetPickerCtrlProportion 2255 +#define wxPickerBase_GetTextCtrlProportion 2256 +#define wxPickerBase_GetPickerCtrlProportion 2257 +#define wxPickerBase_HasTextCtrl 2258 +#define wxPickerBase_GetTextCtrl 2259 +#define wxPickerBase_IsTextCtrlGrowable 2260 +#define wxPickerBase_SetPickerCtrlGrowable 2261 +#define wxPickerBase_SetTextCtrlGrowable 2262 +#define wxPickerBase_IsPickerCtrlGrowable 2263 +#define wxFilePickerCtrl_new_0 2264 +#define wxFilePickerCtrl_new_3 2265 +#define wxFilePickerCtrl_Create 2266 +#define wxFilePickerCtrl_GetPath 2267 +#define wxFilePickerCtrl_SetPath 2268 +#define wxFilePickerCtrl_destroy 2269 +#define wxDirPickerCtrl_new_0 2270 +#define wxDirPickerCtrl_new_3 2271 +#define wxDirPickerCtrl_Create 2272 +#define wxDirPickerCtrl_GetPath 2273 +#define wxDirPickerCtrl_SetPath 2274 +#define wxDirPickerCtrl_destroy 2275 +#define wxColourPickerCtrl_new_0 2276 +#define wxColourPickerCtrl_new_3 2277 +#define wxColourPickerCtrl_Create 2278 +#define wxColourPickerCtrl_GetColour 2279 +#define wxColourPickerCtrl_SetColour_1_1 2280 +#define wxColourPickerCtrl_SetColour_1_0 2281 +#define wxColourPickerCtrl_destroy 2282 +#define wxDatePickerCtrl_new_0 2283 +#define wxDatePickerCtrl_new_3 2284 +#define wxDatePickerCtrl_GetRange 2285 +#define wxDatePickerCtrl_GetValue 2286 +#define wxDatePickerCtrl_SetRange 2287 +#define wxDatePickerCtrl_SetValue 2288 +#define wxDatePickerCtrl_destroy 2289 +#define wxFontPickerCtrl_new_0 2290 +#define wxFontPickerCtrl_new_3 2291 +#define wxFontPickerCtrl_Create 2292 +#define wxFontPickerCtrl_GetSelectedFont 2293 +#define wxFontPickerCtrl_SetSelectedFont 2294 +#define wxFontPickerCtrl_GetMaxPointSize 2295 +#define wxFontPickerCtrl_SetMaxPointSize 2296 +#define wxFontPickerCtrl_destroy 2297 +#define wxFindReplaceDialog_new_0 2300 +#define wxFindReplaceDialog_new_4 2301 +#define wxFindReplaceDialog_destruct 2302 +#define wxFindReplaceDialog_Create 2303 +#define wxFindReplaceDialog_GetData 2304 +#define wxFindReplaceData_new_0 2305 +#define wxFindReplaceData_new_1 2306 +#define wxFindReplaceData_GetFindString 2307 +#define wxFindReplaceData_GetReplaceString 2308 +#define wxFindReplaceData_GetFlags 2309 +#define wxFindReplaceData_SetFlags 2310 +#define wxFindReplaceData_SetFindString 2311 +#define wxFindReplaceData_SetReplaceString 2312 +#define wxFindReplaceData_destroy 2313 +#define wxMultiChoiceDialog_new_0 2314 +#define wxMultiChoiceDialog_new_5 2316 +#define wxMultiChoiceDialog_GetSelections 2317 +#define wxMultiChoiceDialog_SetSelections 2318 +#define wxMultiChoiceDialog_destroy 2319 +#define wxSingleChoiceDialog_new_0 2320 +#define wxSingleChoiceDialog_new_5 2322 +#define wxSingleChoiceDialog_GetSelection 2323 +#define wxSingleChoiceDialog_GetStringSelection 2324 +#define wxSingleChoiceDialog_SetSelection 2325 +#define wxSingleChoiceDialog_destroy 2326 +#define wxTextEntryDialog_new 2327 +#define wxTextEntryDialog_GetValue 2328 +#define wxTextEntryDialog_SetValue 2329 +#define wxTextEntryDialog_destroy 2330 +#define wxPasswordEntryDialog_new 2331 +#define wxPasswordEntryDialog_destroy 2332 +#define wxFontData_new_0 2333 +#define wxFontData_new_1 2334 +#define wxFontData_destruct 2335 +#define wxFontData_EnableEffects 2336 +#define wxFontData_GetAllowSymbols 2337 +#define wxFontData_GetColour 2338 +#define wxFontData_GetChosenFont 2339 +#define wxFontData_GetEnableEffects 2340 +#define wxFontData_GetInitialFont 2341 +#define wxFontData_GetShowHelp 2342 +#define wxFontData_SetAllowSymbols 2343 +#define wxFontData_SetChosenFont 2344 +#define wxFontData_SetColour 2345 +#define wxFontData_SetInitialFont 2346 +#define wxFontData_SetRange 2347 +#define wxFontData_SetShowHelp 2348 +#define wxFontDialog_new_0 2352 +#define wxFontDialog_new_2 2354 +#define wxFontDialog_Create 2356 +#define wxFontDialog_GetFontData 2357 +#define wxFontDialog_destroy 2359 +#define wxProgressDialog_new 2360 +#define wxProgressDialog_destruct 2361 +#define wxProgressDialog_Resume 2362 +#define wxProgressDialog_Update_2 2363 +#define wxProgressDialog_Update_0 2364 +#define wxMessageDialog_new 2365 +#define wxMessageDialog_destruct 2366 +#define wxPageSetupDialog_new 2367 +#define wxPageSetupDialog_destruct 2368 +#define wxPageSetupDialog_GetPageSetupData 2369 +#define wxPageSetupDialog_ShowModal 2370 +#define wxPageSetupDialogData_new_0 2371 +#define wxPageSetupDialogData_new_1_0 2372 +#define wxPageSetupDialogData_new_1_1 2373 +#define wxPageSetupDialogData_destruct 2374 +#define wxPageSetupDialogData_EnableHelp 2375 +#define wxPageSetupDialogData_EnableMargins 2376 +#define wxPageSetupDialogData_EnableOrientation 2377 +#define wxPageSetupDialogData_EnablePaper 2378 +#define wxPageSetupDialogData_EnablePrinter 2379 +#define wxPageSetupDialogData_GetDefaultMinMargins 2380 +#define wxPageSetupDialogData_GetEnableMargins 2381 +#define wxPageSetupDialogData_GetEnableOrientation 2382 +#define wxPageSetupDialogData_GetEnablePaper 2383 +#define wxPageSetupDialogData_GetEnablePrinter 2384 +#define wxPageSetupDialogData_GetEnableHelp 2385 +#define wxPageSetupDialogData_GetDefaultInfo 2386 +#define wxPageSetupDialogData_GetMarginTopLeft 2387 +#define wxPageSetupDialogData_GetMarginBottomRight 2388 +#define wxPageSetupDialogData_GetMinMarginTopLeft 2389 +#define wxPageSetupDialogData_GetMinMarginBottomRight 2390 +#define wxPageSetupDialogData_GetPaperId 2391 +#define wxPageSetupDialogData_GetPaperSize 2392 +#define wxPageSetupDialogData_GetPrintData 2394 +#define wxPageSetupDialogData_IsOk 2395 +#define wxPageSetupDialogData_SetDefaultInfo 2396 +#define wxPageSetupDialogData_SetDefaultMinMargins 2397 +#define wxPageSetupDialogData_SetMarginTopLeft 2398 +#define wxPageSetupDialogData_SetMarginBottomRight 2399 +#define wxPageSetupDialogData_SetMinMarginTopLeft 2400 +#define wxPageSetupDialogData_SetMinMarginBottomRight 2401 +#define wxPageSetupDialogData_SetPaperId 2402 +#define wxPageSetupDialogData_SetPaperSize_1_1 2403 +#define wxPageSetupDialogData_SetPaperSize_1_0 2404 +#define wxPageSetupDialogData_SetPrintData 2405 +#define wxPrintDialog_new_2_0 2406 +#define wxPrintDialog_new_2_1 2407 +#define wxPrintDialog_destruct 2408 +#define wxPrintDialog_GetPrintDialogData 2409 +#define wxPrintDialog_GetPrintDC 2410 +#define wxPrintDialogData_new_0 2411 +#define wxPrintDialogData_new_1_1 2412 +#define wxPrintDialogData_new_1_0 2413 +#define wxPrintDialogData_destruct 2414 +#define wxPrintDialogData_EnableHelp 2415 +#define wxPrintDialogData_EnablePageNumbers 2416 +#define wxPrintDialogData_EnablePrintToFile 2417 +#define wxPrintDialogData_EnableSelection 2418 +#define wxPrintDialogData_GetAllPages 2419 +#define wxPrintDialogData_GetCollate 2420 +#define wxPrintDialogData_GetFromPage 2421 +#define wxPrintDialogData_GetMaxPage 2422 +#define wxPrintDialogData_GetMinPage 2423 +#define wxPrintDialogData_GetNoCopies 2424 +#define wxPrintDialogData_GetPrintData 2425 +#define wxPrintDialogData_GetPrintToFile 2426 +#define wxPrintDialogData_GetSelection 2427 +#define wxPrintDialogData_GetToPage 2428 +#define wxPrintDialogData_IsOk 2429 +#define wxPrintDialogData_SetCollate 2430 +#define wxPrintDialogData_SetFromPage 2431 +#define wxPrintDialogData_SetMaxPage 2432 +#define wxPrintDialogData_SetMinPage 2433 +#define wxPrintDialogData_SetNoCopies 2434 +#define wxPrintDialogData_SetPrintData 2435 +#define wxPrintDialogData_SetPrintToFile 2436 +#define wxPrintDialogData_SetSelection 2437 +#define wxPrintDialogData_SetToPage 2438 +#define wxPrintData_new_0 2439 +#define wxPrintData_new_1 2440 +#define wxPrintData_destruct 2441 +#define wxPrintData_GetCollate 2442 +#define wxPrintData_GetBin 2443 +#define wxPrintData_GetColour 2444 +#define wxPrintData_GetDuplex 2445 +#define wxPrintData_GetNoCopies 2446 +#define wxPrintData_GetOrientation 2447 +#define wxPrintData_GetPaperId 2448 +#define wxPrintData_GetPrinterName 2449 +#define wxPrintData_GetQuality 2450 +#define wxPrintData_IsOk 2451 +#define wxPrintData_SetBin 2452 +#define wxPrintData_SetCollate 2453 +#define wxPrintData_SetColour 2454 +#define wxPrintData_SetDuplex 2455 +#define wxPrintData_SetNoCopies 2456 +#define wxPrintData_SetOrientation 2457 +#define wxPrintData_SetPaperId 2458 +#define wxPrintData_SetPrinterName 2459 +#define wxPrintData_SetQuality 2460 +#define wxPrintPreview_new_2 2463 +#define wxPrintPreview_new_3 2464 +#define wxPrintPreview_destruct 2466 +#define wxPrintPreview_GetCanvas 2467 +#define wxPrintPreview_GetCurrentPage 2468 +#define wxPrintPreview_GetFrame 2469 +#define wxPrintPreview_GetMaxPage 2470 +#define wxPrintPreview_GetMinPage 2471 +#define wxPrintPreview_GetPrintout 2472 +#define wxPrintPreview_GetPrintoutForPrinting 2473 +#define wxPrintPreview_IsOk 2474 +#define wxPrintPreview_PaintPage 2475 +#define wxPrintPreview_Print 2476 +#define wxPrintPreview_RenderPage 2477 +#define wxPrintPreview_SetCanvas 2478 +#define wxPrintPreview_SetCurrentPage 2479 +#define wxPrintPreview_SetFrame 2480 +#define wxPrintPreview_SetPrintout 2481 +#define wxPrintPreview_SetZoom 2482 +#define wxPreviewFrame_new 2483 +#define wxPreviewFrame_destruct 2484 +#define wxPreviewFrame_CreateControlBar 2485 +#define wxPreviewFrame_CreateCanvas 2486 +#define wxPreviewFrame_Initialize 2487 +#define wxPreviewFrame_OnCloseWindow 2488 +#define wxPreviewControlBar_new 2489 +#define wxPreviewControlBar_destruct 2490 +#define wxPreviewControlBar_CreateButtons 2491 +#define wxPreviewControlBar_GetPrintPreview 2492 +#define wxPreviewControlBar_GetZoomControl 2493 +#define wxPreviewControlBar_SetZoomControl 2494 +#define wxPrinter_new 2496 +#define wxPrinter_CreateAbortWindow 2497 +#define wxPrinter_GetAbort 2498 +#define wxPrinter_GetLastError 2499 +#define wxPrinter_GetPrintDialogData 2500 +#define wxPrinter_Print 2501 +#define wxPrinter_PrintDialog 2502 +#define wxPrinter_ReportError 2503 +#define wxPrinter_Setup 2504 +#define wxPrinter_destroy 2505 +#define wxXmlResource_new_1 2506 +#define wxXmlResource_new_2 2507 +#define wxXmlResource_destruct 2508 +#define wxXmlResource_AttachUnknownControl 2509 +#define wxXmlResource_ClearHandlers 2510 +#define wxXmlResource_CompareVersion 2511 +#define wxXmlResource_Get 2512 +#define wxXmlResource_GetFlags 2513 +#define wxXmlResource_GetVersion 2514 +#define wxXmlResource_GetXRCID 2515 +#define wxXmlResource_InitAllHandlers 2516 +#define wxXmlResource_Load 2517 +#define wxXmlResource_LoadBitmap 2518 +#define wxXmlResource_LoadDialog_2 2519 +#define wxXmlResource_LoadDialog_3 2520 +#define wxXmlResource_LoadFrame_2 2521 +#define wxXmlResource_LoadFrame_3 2522 +#define wxXmlResource_LoadIcon 2523 +#define wxXmlResource_LoadMenu 2524 +#define wxXmlResource_LoadMenuBar_2 2525 +#define wxXmlResource_LoadMenuBar_1 2526 +#define wxXmlResource_LoadPanel_2 2527 +#define wxXmlResource_LoadPanel_3 2528 +#define wxXmlResource_LoadToolBar 2529 +#define wxXmlResource_Set 2530 +#define wxXmlResource_SetFlags 2531 +#define wxXmlResource_Unload 2532 +#define wxXmlResource_xrcctrl 2533 +#define wxHtmlEasyPrinting_new 2534 +#define wxHtmlEasyPrinting_destruct 2535 +#define wxHtmlEasyPrinting_GetPrintData 2536 +#define wxHtmlEasyPrinting_GetPageSetupData 2537 +#define wxHtmlEasyPrinting_PreviewFile 2538 +#define wxHtmlEasyPrinting_PreviewText 2539 +#define wxHtmlEasyPrinting_PrintFile 2540 +#define wxHtmlEasyPrinting_PrintText 2541 +#define wxHtmlEasyPrinting_PageSetup 2542 +#define wxHtmlEasyPrinting_SetFonts 2543 +#define wxHtmlEasyPrinting_SetHeader 2544 +#define wxHtmlEasyPrinting_SetFooter 2545 +#define wxGLCanvas_new_2 2547 +#define wxGLCanvas_new_3_1 2548 +#define wxGLCanvas_new_3_0 2549 +#define wxGLCanvas_GetContext 2550 +#define wxGLCanvas_SetCurrent 2552 +#define wxGLCanvas_SwapBuffers 2553 +#define wxGLCanvas_destroy 2554 +#define wxAuiManager_new 2555 +#define wxAuiManager_destruct 2556 +#define wxAuiManager_AddPane_2_1 2557 +#define wxAuiManager_AddPane_3 2558 +#define wxAuiManager_AddPane_2_0 2559 +#define wxAuiManager_DetachPane 2560 +#define wxAuiManager_GetAllPanes 2561 +#define wxAuiManager_GetArtProvider 2562 +#define wxAuiManager_GetDockSizeConstraint 2563 +#define wxAuiManager_GetFlags 2564 +#define wxAuiManager_GetManagedWindow 2565 +#define wxAuiManager_GetManager 2566 +#define wxAuiManager_GetPane_1_1 2567 +#define wxAuiManager_GetPane_1_0 2568 +#define wxAuiManager_HideHint 2569 +#define wxAuiManager_InsertPane 2570 +#define wxAuiManager_LoadPaneInfo 2571 +#define wxAuiManager_LoadPerspective 2572 +#define wxAuiManager_SavePaneInfo 2573 +#define wxAuiManager_SavePerspective 2574 +#define wxAuiManager_SetArtProvider 2575 +#define wxAuiManager_SetDockSizeConstraint 2576 +#define wxAuiManager_SetFlags 2577 +#define wxAuiManager_SetManagedWindow 2578 +#define wxAuiManager_ShowHint 2579 +#define wxAuiManager_UnInit 2580 +#define wxAuiManager_Update 2581 +#define wxAuiPaneInfo_new_0 2582 +#define wxAuiPaneInfo_new_1 2583 +#define wxAuiPaneInfo_destruct 2584 +#define wxAuiPaneInfo_BestSize_1 2585 +#define wxAuiPaneInfo_BestSize_2 2586 +#define wxAuiPaneInfo_Bottom 2587 +#define wxAuiPaneInfo_BottomDockable 2588 +#define wxAuiPaneInfo_Caption 2589 +#define wxAuiPaneInfo_CaptionVisible 2590 +#define wxAuiPaneInfo_Centre 2591 +#define wxAuiPaneInfo_CentrePane 2592 +#define wxAuiPaneInfo_CloseButton 2593 +#define wxAuiPaneInfo_DefaultPane 2594 +#define wxAuiPaneInfo_DestroyOnClose 2595 +#define wxAuiPaneInfo_Direction 2596 +#define wxAuiPaneInfo_Dock 2597 +#define wxAuiPaneInfo_Dockable 2598 +#define wxAuiPaneInfo_Fixed 2599 +#define wxAuiPaneInfo_Float 2600 +#define wxAuiPaneInfo_Floatable 2601 +#define wxAuiPaneInfo_FloatingPosition_1 2602 +#define wxAuiPaneInfo_FloatingPosition_2 2603 +#define wxAuiPaneInfo_FloatingSize_1 2604 +#define wxAuiPaneInfo_FloatingSize_2 2605 +#define wxAuiPaneInfo_Gripper 2606 +#define wxAuiPaneInfo_GripperTop 2607 +#define wxAuiPaneInfo_HasBorder 2608 +#define wxAuiPaneInfo_HasCaption 2609 +#define wxAuiPaneInfo_HasCloseButton 2610 +#define wxAuiPaneInfo_HasFlag 2611 +#define wxAuiPaneInfo_HasGripper 2612 +#define wxAuiPaneInfo_HasGripperTop 2613 +#define wxAuiPaneInfo_HasMaximizeButton 2614 +#define wxAuiPaneInfo_HasMinimizeButton 2615 +#define wxAuiPaneInfo_HasPinButton 2616 +#define wxAuiPaneInfo_Hide 2617 +#define wxAuiPaneInfo_IsBottomDockable 2618 +#define wxAuiPaneInfo_IsDocked 2619 +#define wxAuiPaneInfo_IsFixed 2620 +#define wxAuiPaneInfo_IsFloatable 2621 +#define wxAuiPaneInfo_IsFloating 2622 +#define wxAuiPaneInfo_IsLeftDockable 2623 +#define wxAuiPaneInfo_IsMovable 2624 +#define wxAuiPaneInfo_IsOk 2625 +#define wxAuiPaneInfo_IsResizable 2626 +#define wxAuiPaneInfo_IsRightDockable 2627 +#define wxAuiPaneInfo_IsShown 2628 +#define wxAuiPaneInfo_IsToolbar 2629 +#define wxAuiPaneInfo_IsTopDockable 2630 +#define wxAuiPaneInfo_Layer 2631 +#define wxAuiPaneInfo_Left 2632 +#define wxAuiPaneInfo_LeftDockable 2633 +#define wxAuiPaneInfo_MaxSize_1 2634 +#define wxAuiPaneInfo_MaxSize_2 2635 +#define wxAuiPaneInfo_MaximizeButton 2636 +#define wxAuiPaneInfo_MinSize_1 2637 +#define wxAuiPaneInfo_MinSize_2 2638 +#define wxAuiPaneInfo_MinimizeButton 2639 +#define wxAuiPaneInfo_Movable 2640 +#define wxAuiPaneInfo_Name 2641 +#define wxAuiPaneInfo_PaneBorder 2642 +#define wxAuiPaneInfo_PinButton 2643 +#define wxAuiPaneInfo_Position 2644 +#define wxAuiPaneInfo_Resizable 2645 +#define wxAuiPaneInfo_Right 2646 +#define wxAuiPaneInfo_RightDockable 2647 +#define wxAuiPaneInfo_Row 2648 +#define wxAuiPaneInfo_SafeSet 2649 +#define wxAuiPaneInfo_SetFlag 2650 +#define wxAuiPaneInfo_Show 2651 +#define wxAuiPaneInfo_ToolbarPane 2652 +#define wxAuiPaneInfo_Top 2653 +#define wxAuiPaneInfo_TopDockable 2654 +#define wxAuiPaneInfo_Window 2655 +#define wxAuiPaneInfo_GetWindow 2656 +#define wxAuiPaneInfo_GetFrame 2657 +#define wxAuiPaneInfo_GetDirection 2658 +#define wxAuiPaneInfo_GetLayer 2659 +#define wxAuiPaneInfo_GetRow 2660 +#define wxAuiPaneInfo_GetPosition 2661 +#define wxAuiPaneInfo_GetFloatingPosition 2662 +#define wxAuiPaneInfo_GetFloatingSize 2663 +#define wxAuiNotebook_new_0 2664 +#define wxAuiNotebook_new_2 2665 +#define wxAuiNotebook_AddPage 2666 +#define wxAuiNotebook_Create 2667 +#define wxAuiNotebook_DeletePage 2668 +#define wxAuiNotebook_GetArtProvider 2669 +#define wxAuiNotebook_GetPage 2670 +#define wxAuiNotebook_GetPageBitmap 2671 +#define wxAuiNotebook_GetPageCount 2672 +#define wxAuiNotebook_GetPageIndex 2673 +#define wxAuiNotebook_GetPageText 2674 +#define wxAuiNotebook_GetSelection 2675 +#define wxAuiNotebook_InsertPage 2676 +#define wxAuiNotebook_RemovePage 2677 +#define wxAuiNotebook_SetArtProvider 2678 +#define wxAuiNotebook_SetFont 2679 +#define wxAuiNotebook_SetPageBitmap 2680 +#define wxAuiNotebook_SetPageText 2681 +#define wxAuiNotebook_SetSelection 2682 +#define wxAuiNotebook_SetTabCtrlHeight 2683 +#define wxAuiNotebook_SetUniformBitmapSize 2684 +#define wxAuiNotebook_destroy 2685 +#define wxAuiTabArt_SetFlags 2686 +#define wxAuiTabArt_SetMeasuringFont 2687 +#define wxAuiTabArt_SetNormalFont 2688 +#define wxAuiTabArt_SetSelectedFont 2689 +#define wxAuiTabArt_SetColour 2690 +#define wxAuiTabArt_SetActiveColour 2691 +#define wxAuiDockArt_GetColour 2692 +#define wxAuiDockArt_GetFont 2693 +#define wxAuiDockArt_GetMetric 2694 +#define wxAuiDockArt_SetColour 2695 +#define wxAuiDockArt_SetFont 2696 +#define wxAuiDockArt_SetMetric 2697 +#define wxAuiSimpleTabArt_new 2698 +#define wxAuiSimpleTabArt_destroy 2699 +#define wxMDIParentFrame_new_0 2700 +#define wxMDIParentFrame_new_4 2701 +#define wxMDIParentFrame_destruct 2702 +#define wxMDIParentFrame_ActivateNext 2703 +#define wxMDIParentFrame_ActivatePrevious 2704 +#define wxMDIParentFrame_ArrangeIcons 2705 +#define wxMDIParentFrame_Cascade 2706 +#define wxMDIParentFrame_Create 2707 +#define wxMDIParentFrame_GetActiveChild 2708 +#define wxMDIParentFrame_GetClientWindow 2709 +#define wxMDIParentFrame_Tile 2710 +#define wxMDIChildFrame_new_0 2711 +#define wxMDIChildFrame_new_4 2712 +#define wxMDIChildFrame_destruct 2713 +#define wxMDIChildFrame_Activate 2714 +#define wxMDIChildFrame_Create 2715 +#define wxMDIChildFrame_Maximize 2716 +#define wxMDIChildFrame_Restore 2717 +#define wxMDIClientWindow_new_0 2718 +#define wxMDIClientWindow_new_2 2719 +#define wxMDIClientWindow_destruct 2720 +#define wxMDIClientWindow_CreateClient 2721 +#define wxLayoutAlgorithm_new 2722 +#define wxLayoutAlgorithm_LayoutFrame 2723 +#define wxLayoutAlgorithm_LayoutMDIFrame 2724 +#define wxLayoutAlgorithm_LayoutWindow 2725 +#define wxLayoutAlgorithm_destroy 2726 +#define wxEvent_GetId 2727 +#define wxEvent_GetSkipped 2728 +#define wxEvent_GetTimestamp 2729 +#define wxEvent_IsCommandEvent 2730 +#define wxEvent_ResumePropagation 2731 +#define wxEvent_ShouldPropagate 2732 +#define wxEvent_Skip 2733 +#define wxEvent_StopPropagation 2734 +#define wxCommandEvent_getClientData 2735 +#define wxCommandEvent_GetExtraLong 2736 +#define wxCommandEvent_GetInt 2737 +#define wxCommandEvent_GetSelection 2738 +#define wxCommandEvent_GetString 2739 +#define wxCommandEvent_IsChecked 2740 +#define wxCommandEvent_IsSelection 2741 +#define wxCommandEvent_SetInt 2742 +#define wxCommandEvent_SetString 2743 +#define wxScrollEvent_GetOrientation 2744 +#define wxScrollEvent_GetPosition 2745 +#define wxScrollWinEvent_GetOrientation 2746 +#define wxScrollWinEvent_GetPosition 2747 +#define wxMouseEvent_AltDown 2748 +#define wxMouseEvent_Button 2749 +#define wxMouseEvent_ButtonDClick 2750 +#define wxMouseEvent_ButtonDown 2751 +#define wxMouseEvent_ButtonUp 2752 +#define wxMouseEvent_CmdDown 2753 +#define wxMouseEvent_ControlDown 2754 +#define wxMouseEvent_Dragging 2755 +#define wxMouseEvent_Entering 2756 +#define wxMouseEvent_GetButton 2757 +#define wxMouseEvent_GetPosition 2760 +#define wxMouseEvent_GetLogicalPosition 2761 +#define wxMouseEvent_GetLinesPerAction 2762 +#define wxMouseEvent_GetWheelRotation 2763 +#define wxMouseEvent_GetWheelDelta 2764 +#define wxMouseEvent_GetX 2765 +#define wxMouseEvent_GetY 2766 +#define wxMouseEvent_IsButton 2767 +#define wxMouseEvent_IsPageScroll 2768 +#define wxMouseEvent_Leaving 2769 +#define wxMouseEvent_LeftDClick 2770 +#define wxMouseEvent_LeftDown 2771 +#define wxMouseEvent_LeftIsDown 2772 +#define wxMouseEvent_LeftUp 2773 +#define wxMouseEvent_MetaDown 2774 +#define wxMouseEvent_MiddleDClick 2775 +#define wxMouseEvent_MiddleDown 2776 +#define wxMouseEvent_MiddleIsDown 2777 +#define wxMouseEvent_MiddleUp 2778 +#define wxMouseEvent_Moving 2779 +#define wxMouseEvent_RightDClick 2780 +#define wxMouseEvent_RightDown 2781 +#define wxMouseEvent_RightIsDown 2782 +#define wxMouseEvent_RightUp 2783 +#define wxMouseEvent_ShiftDown 2784 +#define wxSetCursorEvent_GetCursor 2785 +#define wxSetCursorEvent_GetX 2786 +#define wxSetCursorEvent_GetY 2787 +#define wxSetCursorEvent_HasCursor 2788 +#define wxSetCursorEvent_SetCursor 2789 +#define wxKeyEvent_AltDown 2790 +#define wxKeyEvent_CmdDown 2791 +#define wxKeyEvent_ControlDown 2792 +#define wxKeyEvent_GetKeyCode 2793 +#define wxKeyEvent_GetModifiers 2794 +#define wxKeyEvent_GetPosition 2797 +#define wxKeyEvent_GetRawKeyCode 2798 +#define wxKeyEvent_GetRawKeyFlags 2799 +#define wxKeyEvent_GetUnicodeKey 2800 +#define wxKeyEvent_GetX 2801 +#define wxKeyEvent_GetY 2802 +#define wxKeyEvent_HasModifiers 2803 +#define wxKeyEvent_MetaDown 2804 +#define wxKeyEvent_ShiftDown 2805 +#define wxSizeEvent_GetSize 2806 +#define wxMoveEvent_GetPosition 2807 +#define wxEraseEvent_GetDC 2808 +#define wxFocusEvent_GetWindow 2809 +#define wxChildFocusEvent_GetWindow 2810 +#define wxMenuEvent_GetMenu 2811 +#define wxMenuEvent_GetMenuId 2812 +#define wxMenuEvent_IsPopup 2813 +#define wxCloseEvent_CanVeto 2814 +#define wxCloseEvent_GetLoggingOff 2815 +#define wxCloseEvent_SetCanVeto 2816 +#define wxCloseEvent_SetLoggingOff 2817 +#define wxCloseEvent_Veto 2818 +#define wxShowEvent_SetShow 2819 +#define wxShowEvent_GetShow 2820 +#define wxIconizeEvent_Iconized 2821 +#define wxJoystickEvent_ButtonDown 2822 +#define wxJoystickEvent_ButtonIsDown 2823 +#define wxJoystickEvent_ButtonUp 2824 +#define wxJoystickEvent_GetButtonChange 2825 +#define wxJoystickEvent_GetButtonState 2826 +#define wxJoystickEvent_GetJoystick 2827 +#define wxJoystickEvent_GetPosition 2828 +#define wxJoystickEvent_GetZPosition 2829 +#define wxJoystickEvent_IsButton 2830 +#define wxJoystickEvent_IsMove 2831 +#define wxJoystickEvent_IsZMove 2832 +#define wxUpdateUIEvent_CanUpdate 2833 +#define wxUpdateUIEvent_Check 2834 +#define wxUpdateUIEvent_Enable 2835 +#define wxUpdateUIEvent_Show 2836 +#define wxUpdateUIEvent_GetChecked 2837 +#define wxUpdateUIEvent_GetEnabled 2838 +#define wxUpdateUIEvent_GetShown 2839 +#define wxUpdateUIEvent_GetSetChecked 2840 +#define wxUpdateUIEvent_GetSetEnabled 2841 +#define wxUpdateUIEvent_GetSetShown 2842 +#define wxUpdateUIEvent_GetSetText 2843 +#define wxUpdateUIEvent_GetText 2844 +#define wxUpdateUIEvent_GetMode 2845 +#define wxUpdateUIEvent_GetUpdateInterval 2846 +#define wxUpdateUIEvent_ResetUpdateTime 2847 +#define wxUpdateUIEvent_SetMode 2848 +#define wxUpdateUIEvent_SetText 2849 +#define wxUpdateUIEvent_SetUpdateInterval 2850 +#define wxMouseCaptureChangedEvent_GetCapturedWindow 2851 +#define wxPaletteChangedEvent_SetChangedWindow 2852 +#define wxPaletteChangedEvent_GetChangedWindow 2853 +#define wxQueryNewPaletteEvent_SetPaletteRealized 2854 +#define wxQueryNewPaletteEvent_GetPaletteRealized 2855 +#define wxNavigationKeyEvent_GetDirection 2856 +#define wxNavigationKeyEvent_SetDirection 2857 +#define wxNavigationKeyEvent_IsWindowChange 2858 +#define wxNavigationKeyEvent_SetWindowChange 2859 +#define wxNavigationKeyEvent_IsFromTab 2860 +#define wxNavigationKeyEvent_SetFromTab 2861 +#define wxNavigationKeyEvent_GetCurrentFocus 2862 +#define wxNavigationKeyEvent_SetCurrentFocus 2863 +#define wxHelpEvent_GetOrigin 2864 +#define wxHelpEvent_GetPosition 2865 +#define wxHelpEvent_SetOrigin 2866 +#define wxHelpEvent_SetPosition 2867 +#define wxContextMenuEvent_GetPosition 2868 +#define wxContextMenuEvent_SetPosition 2869 +#define wxIdleEvent_CanSend 2870 +#define wxIdleEvent_GetMode 2871 +#define wxIdleEvent_RequestMore 2872 +#define wxIdleEvent_MoreRequested 2873 +#define wxIdleEvent_SetMode 2874 +#define wxGridEvent_AltDown 2875 +#define wxGridEvent_ControlDown 2876 +#define wxGridEvent_GetCol 2877 +#define wxGridEvent_GetPosition 2878 +#define wxGridEvent_GetRow 2879 +#define wxGridEvent_MetaDown 2880 +#define wxGridEvent_Selecting 2881 +#define wxGridEvent_ShiftDown 2882 +#define wxNotifyEvent_Allow 2883 +#define wxNotifyEvent_IsAllowed 2884 +#define wxNotifyEvent_Veto 2885 +#define wxSashEvent_GetEdge 2886 +#define wxSashEvent_GetDragRect 2887 +#define wxSashEvent_GetDragStatus 2888 +#define wxListEvent_GetCacheFrom 2889 +#define wxListEvent_GetCacheTo 2890 +#define wxListEvent_GetKeyCode 2891 +#define wxListEvent_GetIndex 2892 +#define wxListEvent_GetColumn 2893 +#define wxListEvent_GetPoint 2894 +#define wxListEvent_GetLabel 2895 +#define wxListEvent_GetText 2896 +#define wxListEvent_GetImage 2897 +#define wxListEvent_GetData 2898 +#define wxListEvent_GetMask 2899 +#define wxListEvent_GetItem 2900 +#define wxListEvent_IsEditCancelled 2901 +#define wxDateEvent_GetDate 2902 +#define wxCalendarEvent_GetWeekDay 2903 +#define wxFileDirPickerEvent_GetPath 2904 +#define wxColourPickerEvent_GetColour 2905 +#define wxFontPickerEvent_GetFont 2906 +#define wxStyledTextEvent_GetPosition 2907 +#define wxStyledTextEvent_GetKey 2908 +#define wxStyledTextEvent_GetModifiers 2909 +#define wxStyledTextEvent_GetModificationType 2910 +#define wxStyledTextEvent_GetText 2911 +#define wxStyledTextEvent_GetLength 2912 +#define wxStyledTextEvent_GetLinesAdded 2913 +#define wxStyledTextEvent_GetLine 2914 +#define wxStyledTextEvent_GetFoldLevelNow 2915 +#define wxStyledTextEvent_GetFoldLevelPrev 2916 +#define wxStyledTextEvent_GetMargin 2917 +#define wxStyledTextEvent_GetMessage 2918 +#define wxStyledTextEvent_GetWParam 2919 +#define wxStyledTextEvent_GetLParam 2920 +#define wxStyledTextEvent_GetListType 2921 +#define wxStyledTextEvent_GetX 2922 +#define wxStyledTextEvent_GetY 2923 +#define wxStyledTextEvent_GetDragText 2924 +#define wxStyledTextEvent_GetDragAllowMove 2925 +#define wxStyledTextEvent_GetDragResult 2926 +#define wxStyledTextEvent_GetShift 2927 +#define wxStyledTextEvent_GetControl 2928 +#define wxStyledTextEvent_GetAlt 2929 +#define utils_wxGetKeyState 2930 +#define utils_wxGetMousePosition 2931 +#define utils_wxGetMouseState 2932 +#define utils_wxSetDetectableAutoRepeat 2933 +#define utils_wxBell 2934 +#define utils_wxFindMenuItemId 2935 +#define utils_wxGenericFindWindowAtPoint 2936 +#define utils_wxFindWindowAtPoint 2937 +#define utils_wxBeginBusyCursor 2938 +#define utils_wxEndBusyCursor 2939 +#define utils_wxIsBusy 2940 +#define utils_wxShutdown 2941 +#define utils_wxShell 2942 +#define utils_wxLaunchDefaultBrowser 2943 +#define utils_wxGetEmailAddress 2944 +#define utils_wxGetUserId 2945 +#define utils_wxGetHomeDir 2946 +#define utils_wxNewId 2947 +#define utils_wxRegisterId 2948 +#define utils_wxGetCurrentId 2949 +#define utils_wxGetOsDescription 2950 +#define utils_wxIsPlatformLittleEndian 2951 +#define utils_wxIsPlatform64Bit 2952 +#define gdicmn_wxDisplaySize 2953 +#define gdicmn_wxSetCursor 2954 +#define wxPrintout_new 2955 +#define wxPrintout_destruct 2956 +#define wxPrintout_GetDC 2957 +#define wxPrintout_GetPageSizeMM 2958 +#define wxPrintout_GetPageSizePixels 2959 +#define wxPrintout_GetPaperRectPixels 2960 +#define wxPrintout_GetPPIPrinter 2961 +#define wxPrintout_GetPPIScreen 2962 +#define wxPrintout_GetTitle 2963 +#define wxPrintout_IsPreview 2964 +#define wxPrintout_FitThisSizeToPaper 2965 +#define wxPrintout_FitThisSizeToPage 2966 +#define wxPrintout_FitThisSizeToPageMargins 2967 +#define wxPrintout_MapScreenSizeToPaper 2968 +#define wxPrintout_MapScreenSizeToPage 2969 +#define wxPrintout_MapScreenSizeToPageMargins 2970 +#define wxPrintout_MapScreenSizeToDevice 2971 +#define wxPrintout_GetLogicalPaperRect 2972 +#define wxPrintout_GetLogicalPageRect 2973 +#define wxPrintout_GetLogicalPageMarginsRect 2974 +#define wxPrintout_SetLogicalOrigin 2975 +#define wxPrintout_OffsetLogicalOrigin 2976 +#define wxStyledTextCtrl_new_2 2977 +#define wxStyledTextCtrl_new_0 2978 +#define wxStyledTextCtrl_destruct 2979 +#define wxStyledTextCtrl_Create 2980 +#define wxStyledTextCtrl_AddText 2981 +#define wxStyledTextCtrl_AddStyledText 2982 +#define wxStyledTextCtrl_InsertText 2983 +#define wxStyledTextCtrl_ClearAll 2984 +#define wxStyledTextCtrl_ClearDocumentStyle 2985 +#define wxStyledTextCtrl_GetLength 2986 +#define wxStyledTextCtrl_GetCharAt 2987 +#define wxStyledTextCtrl_GetCurrentPos 2988 +#define wxStyledTextCtrl_GetAnchor 2989 +#define wxStyledTextCtrl_GetStyleAt 2990 +#define wxStyledTextCtrl_Redo 2991 +#define wxStyledTextCtrl_SetUndoCollection 2992 +#define wxStyledTextCtrl_SelectAll 2993 +#define wxStyledTextCtrl_SetSavePoint 2994 +#define wxStyledTextCtrl_GetStyledText 2995 +#define wxStyledTextCtrl_CanRedo 2996 +#define wxStyledTextCtrl_MarkerLineFromHandle 2997 +#define wxStyledTextCtrl_MarkerDeleteHandle 2998 +#define wxStyledTextCtrl_GetUndoCollection 2999 +#define wxStyledTextCtrl_GetViewWhiteSpace 3000 +#define wxStyledTextCtrl_SetViewWhiteSpace 3001 +#define wxStyledTextCtrl_PositionFromPoint 3002 +#define wxStyledTextCtrl_PositionFromPointClose 3003 +#define wxStyledTextCtrl_GotoLine 3004 +#define wxStyledTextCtrl_GotoPos 3005 +#define wxStyledTextCtrl_SetAnchor 3006 +#define wxStyledTextCtrl_GetCurLine 3007 +#define wxStyledTextCtrl_GetEndStyled 3008 +#define wxStyledTextCtrl_ConvertEOLs 3009 +#define wxStyledTextCtrl_GetEOLMode 3010 +#define wxStyledTextCtrl_SetEOLMode 3011 +#define wxStyledTextCtrl_StartStyling 3012 +#define wxStyledTextCtrl_SetStyling 3013 +#define wxStyledTextCtrl_GetBufferedDraw 3014 +#define wxStyledTextCtrl_SetBufferedDraw 3015 +#define wxStyledTextCtrl_SetTabWidth 3016 +#define wxStyledTextCtrl_GetTabWidth 3017 +#define wxStyledTextCtrl_SetCodePage 3018 +#define wxStyledTextCtrl_MarkerDefine 3019 +#define wxStyledTextCtrl_MarkerSetForeground 3020 +#define wxStyledTextCtrl_MarkerSetBackground 3021 +#define wxStyledTextCtrl_MarkerAdd 3022 +#define wxStyledTextCtrl_MarkerDelete 3023 +#define wxStyledTextCtrl_MarkerDeleteAll 3024 +#define wxStyledTextCtrl_MarkerGet 3025 +#define wxStyledTextCtrl_MarkerNext 3026 +#define wxStyledTextCtrl_MarkerPrevious 3027 +#define wxStyledTextCtrl_MarkerDefineBitmap 3028 +#define wxStyledTextCtrl_MarkerAddSet 3029 +#define wxStyledTextCtrl_MarkerSetAlpha 3030 +#define wxStyledTextCtrl_SetMarginType 3031 +#define wxStyledTextCtrl_GetMarginType 3032 +#define wxStyledTextCtrl_SetMarginWidth 3033 +#define wxStyledTextCtrl_GetMarginWidth 3034 +#define wxStyledTextCtrl_SetMarginMask 3035 +#define wxStyledTextCtrl_GetMarginMask 3036 +#define wxStyledTextCtrl_SetMarginSensitive 3037 +#define wxStyledTextCtrl_GetMarginSensitive 3038 +#define wxStyledTextCtrl_StyleClearAll 3039 +#define wxStyledTextCtrl_StyleSetForeground 3040 +#define wxStyledTextCtrl_StyleSetBackground 3041 +#define wxStyledTextCtrl_StyleSetBold 3042 +#define wxStyledTextCtrl_StyleSetItalic 3043 +#define wxStyledTextCtrl_StyleSetSize 3044 +#define wxStyledTextCtrl_StyleSetFaceName 3045 +#define wxStyledTextCtrl_StyleSetEOLFilled 3046 +#define wxStyledTextCtrl_StyleResetDefault 3047 +#define wxStyledTextCtrl_StyleSetUnderline 3048 +#define wxStyledTextCtrl_StyleSetCase 3049 +#define wxStyledTextCtrl_StyleSetHotSpot 3050 +#define wxStyledTextCtrl_SetSelForeground 3051 +#define wxStyledTextCtrl_SetSelBackground 3052 +#define wxStyledTextCtrl_GetSelAlpha 3053 +#define wxStyledTextCtrl_SetSelAlpha 3054 +#define wxStyledTextCtrl_SetCaretForeground 3055 +#define wxStyledTextCtrl_CmdKeyAssign 3056 +#define wxStyledTextCtrl_CmdKeyClear 3057 +#define wxStyledTextCtrl_CmdKeyClearAll 3058 +#define wxStyledTextCtrl_SetStyleBytes 3059 +#define wxStyledTextCtrl_StyleSetVisible 3060 +#define wxStyledTextCtrl_GetCaretPeriod 3061 +#define wxStyledTextCtrl_SetCaretPeriod 3062 +#define wxStyledTextCtrl_SetWordChars 3063 +#define wxStyledTextCtrl_BeginUndoAction 3064 +#define wxStyledTextCtrl_EndUndoAction 3065 +#define wxStyledTextCtrl_IndicatorSetStyle 3066 +#define wxStyledTextCtrl_IndicatorGetStyle 3067 +#define wxStyledTextCtrl_IndicatorSetForeground 3068 +#define wxStyledTextCtrl_IndicatorGetForeground 3069 +#define wxStyledTextCtrl_SetWhitespaceForeground 3070 +#define wxStyledTextCtrl_SetWhitespaceBackground 3071 +#define wxStyledTextCtrl_GetStyleBits 3072 +#define wxStyledTextCtrl_SetLineState 3073 +#define wxStyledTextCtrl_GetLineState 3074 +#define wxStyledTextCtrl_GetMaxLineState 3075 +#define wxStyledTextCtrl_GetCaretLineVisible 3076 +#define wxStyledTextCtrl_SetCaretLineVisible 3077 +#define wxStyledTextCtrl_GetCaretLineBackground 3078 +#define wxStyledTextCtrl_SetCaretLineBackground 3079 +#define wxStyledTextCtrl_AutoCompShow 3080 +#define wxStyledTextCtrl_AutoCompCancel 3081 +#define wxStyledTextCtrl_AutoCompActive 3082 +#define wxStyledTextCtrl_AutoCompPosStart 3083 +#define wxStyledTextCtrl_AutoCompComplete 3084 +#define wxStyledTextCtrl_AutoCompStops 3085 +#define wxStyledTextCtrl_AutoCompSetSeparator 3086 +#define wxStyledTextCtrl_AutoCompGetSeparator 3087 +#define wxStyledTextCtrl_AutoCompSelect 3088 +#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3089 +#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3090 +#define wxStyledTextCtrl_AutoCompSetFillUps 3091 +#define wxStyledTextCtrl_AutoCompSetChooseSingle 3092 +#define wxStyledTextCtrl_AutoCompGetChooseSingle 3093 +#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3094 +#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3095 +#define wxStyledTextCtrl_UserListShow 3096 +#define wxStyledTextCtrl_AutoCompSetAutoHide 3097 +#define wxStyledTextCtrl_AutoCompGetAutoHide 3098 +#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3099 +#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3100 +#define wxStyledTextCtrl_RegisterImage 3101 +#define wxStyledTextCtrl_ClearRegisteredImages 3102 +#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3103 +#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3104 +#define wxStyledTextCtrl_AutoCompSetMaxWidth 3105 +#define wxStyledTextCtrl_AutoCompGetMaxWidth 3106 +#define wxStyledTextCtrl_AutoCompSetMaxHeight 3107 +#define wxStyledTextCtrl_AutoCompGetMaxHeight 3108 +#define wxStyledTextCtrl_SetIndent 3109 +#define wxStyledTextCtrl_GetIndent 3110 +#define wxStyledTextCtrl_SetUseTabs 3111 +#define wxStyledTextCtrl_GetUseTabs 3112 +#define wxStyledTextCtrl_SetLineIndentation 3113 +#define wxStyledTextCtrl_GetLineIndentation 3114 +#define wxStyledTextCtrl_GetLineIndentPosition 3115 +#define wxStyledTextCtrl_GetColumn 3116 +#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3117 +#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3118 +#define wxStyledTextCtrl_SetIndentationGuides 3119 +#define wxStyledTextCtrl_GetIndentationGuides 3120 +#define wxStyledTextCtrl_SetHighlightGuide 3121 +#define wxStyledTextCtrl_GetHighlightGuide 3122 +#define wxStyledTextCtrl_GetLineEndPosition 3123 +#define wxStyledTextCtrl_GetCodePage 3124 +#define wxStyledTextCtrl_GetCaretForeground 3125 +#define wxStyledTextCtrl_GetReadOnly 3126 +#define wxStyledTextCtrl_SetCurrentPos 3127 +#define wxStyledTextCtrl_SetSelectionStart 3128 +#define wxStyledTextCtrl_GetSelectionStart 3129 +#define wxStyledTextCtrl_SetSelectionEnd 3130 +#define wxStyledTextCtrl_GetSelectionEnd 3131 +#define wxStyledTextCtrl_SetPrintMagnification 3132 +#define wxStyledTextCtrl_GetPrintMagnification 3133 +#define wxStyledTextCtrl_SetPrintColourMode 3134 +#define wxStyledTextCtrl_GetPrintColourMode 3135 +#define wxStyledTextCtrl_FindText 3136 +#define wxStyledTextCtrl_FormatRange 3137 +#define wxStyledTextCtrl_GetFirstVisibleLine 3138 +#define wxStyledTextCtrl_GetLine 3139 +#define wxStyledTextCtrl_GetLineCount 3140 +#define wxStyledTextCtrl_SetMarginLeft 3141 +#define wxStyledTextCtrl_GetMarginLeft 3142 +#define wxStyledTextCtrl_SetMarginRight 3143 +#define wxStyledTextCtrl_GetMarginRight 3144 +#define wxStyledTextCtrl_GetModify 3145 +#define wxStyledTextCtrl_SetSelection 3146 +#define wxStyledTextCtrl_GetSelectedText 3147 +#define wxStyledTextCtrl_GetTextRange 3148 +#define wxStyledTextCtrl_HideSelection 3149 +#define wxStyledTextCtrl_LineFromPosition 3150 +#define wxStyledTextCtrl_PositionFromLine 3151 +#define wxStyledTextCtrl_LineScroll 3152 +#define wxStyledTextCtrl_EnsureCaretVisible 3153 +#define wxStyledTextCtrl_ReplaceSelection 3154 +#define wxStyledTextCtrl_SetReadOnly 3155 +#define wxStyledTextCtrl_CanPaste 3156 +#define wxStyledTextCtrl_CanUndo 3157 +#define wxStyledTextCtrl_EmptyUndoBuffer 3158 +#define wxStyledTextCtrl_Undo 3159 +#define wxStyledTextCtrl_Cut 3160 +#define wxStyledTextCtrl_Copy 3161 +#define wxStyledTextCtrl_Paste 3162 +#define wxStyledTextCtrl_Clear 3163 +#define wxStyledTextCtrl_SetText 3164 +#define wxStyledTextCtrl_GetText 3165 +#define wxStyledTextCtrl_GetTextLength 3166 +#define wxStyledTextCtrl_GetOvertype 3167 +#define wxStyledTextCtrl_SetCaretWidth 3168 +#define wxStyledTextCtrl_GetCaretWidth 3169 +#define wxStyledTextCtrl_SetTargetStart 3170 +#define wxStyledTextCtrl_GetTargetStart 3171 +#define wxStyledTextCtrl_SetTargetEnd 3172 +#define wxStyledTextCtrl_GetTargetEnd 3173 +#define wxStyledTextCtrl_ReplaceTarget 3174 +#define wxStyledTextCtrl_SearchInTarget 3175 +#define wxStyledTextCtrl_SetSearchFlags 3176 +#define wxStyledTextCtrl_GetSearchFlags 3177 +#define wxStyledTextCtrl_CallTipShow 3178 +#define wxStyledTextCtrl_CallTipCancel 3179 +#define wxStyledTextCtrl_CallTipActive 3180 +#define wxStyledTextCtrl_CallTipPosAtStart 3181 +#define wxStyledTextCtrl_CallTipSetHighlight 3182 +#define wxStyledTextCtrl_CallTipSetBackground 3183 +#define wxStyledTextCtrl_CallTipSetForeground 3184 +#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3185 +#define wxStyledTextCtrl_CallTipUseStyle 3186 +#define wxStyledTextCtrl_VisibleFromDocLine 3187 +#define wxStyledTextCtrl_DocLineFromVisible 3188 +#define wxStyledTextCtrl_WrapCount 3189 +#define wxStyledTextCtrl_SetFoldLevel 3190 +#define wxStyledTextCtrl_GetFoldLevel 3191 +#define wxStyledTextCtrl_GetLastChild 3192 +#define wxStyledTextCtrl_GetFoldParent 3193 +#define wxStyledTextCtrl_ShowLines 3194 +#define wxStyledTextCtrl_HideLines 3195 +#define wxStyledTextCtrl_GetLineVisible 3196 +#define wxStyledTextCtrl_SetFoldExpanded 3197 +#define wxStyledTextCtrl_GetFoldExpanded 3198 +#define wxStyledTextCtrl_ToggleFold 3199 +#define wxStyledTextCtrl_EnsureVisible 3200 +#define wxStyledTextCtrl_SetFoldFlags 3201 +#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3202 +#define wxStyledTextCtrl_SetTabIndents 3203 +#define wxStyledTextCtrl_GetTabIndents 3204 +#define wxStyledTextCtrl_SetBackSpaceUnIndents 3205 +#define wxStyledTextCtrl_GetBackSpaceUnIndents 3206 +#define wxStyledTextCtrl_SetMouseDwellTime 3207 +#define wxStyledTextCtrl_GetMouseDwellTime 3208 +#define wxStyledTextCtrl_WordStartPosition 3209 +#define wxStyledTextCtrl_WordEndPosition 3210 +#define wxStyledTextCtrl_SetWrapMode 3211 +#define wxStyledTextCtrl_GetWrapMode 3212 +#define wxStyledTextCtrl_SetWrapVisualFlags 3213 +#define wxStyledTextCtrl_GetWrapVisualFlags 3214 +#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3215 +#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3216 +#define wxStyledTextCtrl_SetWrapStartIndent 3217 +#define wxStyledTextCtrl_GetWrapStartIndent 3218 +#define wxStyledTextCtrl_SetLayoutCache 3219 +#define wxStyledTextCtrl_GetLayoutCache 3220 +#define wxStyledTextCtrl_SetScrollWidth 3221 +#define wxStyledTextCtrl_GetScrollWidth 3222 +#define wxStyledTextCtrl_TextWidth 3223 +#define wxStyledTextCtrl_GetEndAtLastLine 3224 +#define wxStyledTextCtrl_TextHeight 3225 +#define wxStyledTextCtrl_SetUseVerticalScrollBar 3226 +#define wxStyledTextCtrl_GetUseVerticalScrollBar 3227 +#define wxStyledTextCtrl_AppendText 3228 +#define wxStyledTextCtrl_GetTwoPhaseDraw 3229 +#define wxStyledTextCtrl_SetTwoPhaseDraw 3230 +#define wxStyledTextCtrl_TargetFromSelection 3231 +#define wxStyledTextCtrl_LinesJoin 3232 +#define wxStyledTextCtrl_LinesSplit 3233 +#define wxStyledTextCtrl_SetFoldMarginColour 3234 +#define wxStyledTextCtrl_SetFoldMarginHiColour 3235 +#define wxStyledTextCtrl_LineDown 3236 +#define wxStyledTextCtrl_LineDownExtend 3237 +#define wxStyledTextCtrl_LineUp 3238 +#define wxStyledTextCtrl_LineUpExtend 3239 +#define wxStyledTextCtrl_CharLeft 3240 +#define wxStyledTextCtrl_CharLeftExtend 3241 +#define wxStyledTextCtrl_CharRight 3242 +#define wxStyledTextCtrl_CharRightExtend 3243 +#define wxStyledTextCtrl_WordLeft 3244 +#define wxStyledTextCtrl_WordLeftExtend 3245 +#define wxStyledTextCtrl_WordRight 3246 +#define wxStyledTextCtrl_WordRightExtend 3247 +#define wxStyledTextCtrl_Home 3248 +#define wxStyledTextCtrl_HomeExtend 3249 +#define wxStyledTextCtrl_LineEnd 3250 +#define wxStyledTextCtrl_LineEndExtend 3251 +#define wxStyledTextCtrl_DocumentStart 3252 +#define wxStyledTextCtrl_DocumentStartExtend 3253 +#define wxStyledTextCtrl_DocumentEnd 3254 +#define wxStyledTextCtrl_DocumentEndExtend 3255 +#define wxStyledTextCtrl_PageUp 3256 +#define wxStyledTextCtrl_PageUpExtend 3257 +#define wxStyledTextCtrl_PageDown 3258 +#define wxStyledTextCtrl_PageDownExtend 3259 +#define wxStyledTextCtrl_EditToggleOvertype 3260 +#define wxStyledTextCtrl_Cancel 3261 +#define wxStyledTextCtrl_DeleteBack 3262 +#define wxStyledTextCtrl_Tab 3263 +#define wxStyledTextCtrl_BackTab 3264 +#define wxStyledTextCtrl_NewLine 3265 +#define wxStyledTextCtrl_FormFeed 3266 +#define wxStyledTextCtrl_VCHome 3267 +#define wxStyledTextCtrl_VCHomeExtend 3268 +#define wxStyledTextCtrl_ZoomIn 3269 +#define wxStyledTextCtrl_ZoomOut 3270 +#define wxStyledTextCtrl_DelWordLeft 3271 +#define wxStyledTextCtrl_DelWordRight 3272 +#define wxStyledTextCtrl_LineCut 3273 +#define wxStyledTextCtrl_LineDelete 3274 +#define wxStyledTextCtrl_LineTranspose 3275 +#define wxStyledTextCtrl_LineDuplicate 3276 +#define wxStyledTextCtrl_LowerCase 3277 +#define wxStyledTextCtrl_UpperCase 3278 +#define wxStyledTextCtrl_LineScrollDown 3279 +#define wxStyledTextCtrl_LineScrollUp 3280 +#define wxStyledTextCtrl_DeleteBackNotLine 3281 +#define wxStyledTextCtrl_HomeDisplay 3282 +#define wxStyledTextCtrl_HomeDisplayExtend 3283 +#define wxStyledTextCtrl_LineEndDisplay 3284 +#define wxStyledTextCtrl_LineEndDisplayExtend 3285 +#define wxStyledTextCtrl_HomeWrapExtend 3286 +#define wxStyledTextCtrl_LineEndWrap 3287 +#define wxStyledTextCtrl_LineEndWrapExtend 3288 +#define wxStyledTextCtrl_VCHomeWrap 3289 +#define wxStyledTextCtrl_VCHomeWrapExtend 3290 +#define wxStyledTextCtrl_LineCopy 3291 +#define wxStyledTextCtrl_MoveCaretInsideView 3292 +#define wxStyledTextCtrl_LineLength 3293 +#define wxStyledTextCtrl_BraceHighlight 3294 +#define wxStyledTextCtrl_BraceBadLight 3295 +#define wxStyledTextCtrl_BraceMatch 3296 +#define wxStyledTextCtrl_GetViewEOL 3297 +#define wxStyledTextCtrl_SetViewEOL 3298 +#define wxStyledTextCtrl_SetModEventMask 3299 +#define wxStyledTextCtrl_GetEdgeColumn 3300 +#define wxStyledTextCtrl_SetEdgeColumn 3301 +#define wxStyledTextCtrl_SetEdgeMode 3302 +#define wxStyledTextCtrl_GetEdgeMode 3303 +#define wxStyledTextCtrl_GetEdgeColour 3304 +#define wxStyledTextCtrl_SetEdgeColour 3305 +#define wxStyledTextCtrl_SearchAnchor 3306 +#define wxStyledTextCtrl_SearchNext 3307 +#define wxStyledTextCtrl_SearchPrev 3308 +#define wxStyledTextCtrl_LinesOnScreen 3309 +#define wxStyledTextCtrl_UsePopUp 3310 +#define wxStyledTextCtrl_SelectionIsRectangle 3311 +#define wxStyledTextCtrl_SetZoom 3312 +#define wxStyledTextCtrl_GetZoom 3313 +#define wxStyledTextCtrl_GetModEventMask 3314 +#define wxStyledTextCtrl_SetSTCFocus 3315 +#define wxStyledTextCtrl_GetSTCFocus 3316 +#define wxStyledTextCtrl_SetStatus 3317 +#define wxStyledTextCtrl_GetStatus 3318 +#define wxStyledTextCtrl_SetMouseDownCaptures 3319 +#define wxStyledTextCtrl_GetMouseDownCaptures 3320 +#define wxStyledTextCtrl_SetSTCCursor 3321 +#define wxStyledTextCtrl_GetSTCCursor 3322 +#define wxStyledTextCtrl_SetControlCharSymbol 3323 +#define wxStyledTextCtrl_GetControlCharSymbol 3324 +#define wxStyledTextCtrl_WordPartLeft 3325 +#define wxStyledTextCtrl_WordPartLeftExtend 3326 +#define wxStyledTextCtrl_WordPartRight 3327 +#define wxStyledTextCtrl_WordPartRightExtend 3328 +#define wxStyledTextCtrl_SetVisiblePolicy 3329 +#define wxStyledTextCtrl_DelLineLeft 3330 +#define wxStyledTextCtrl_DelLineRight 3331 +#define wxStyledTextCtrl_GetXOffset 3332 +#define wxStyledTextCtrl_ChooseCaretX 3333 +#define wxStyledTextCtrl_SetXCaretPolicy 3334 +#define wxStyledTextCtrl_SetYCaretPolicy 3335 +#define wxStyledTextCtrl_GetPrintWrapMode 3336 +#define wxStyledTextCtrl_SetHotspotActiveForeground 3337 +#define wxStyledTextCtrl_SetHotspotActiveBackground 3338 +#define wxStyledTextCtrl_SetHotspotActiveUnderline 3339 +#define wxStyledTextCtrl_SetHotspotSingleLine 3340 +#define wxStyledTextCtrl_ParaDownExtend 3341 +#define wxStyledTextCtrl_ParaUp 3342 +#define wxStyledTextCtrl_ParaUpExtend 3343 +#define wxStyledTextCtrl_PositionBefore 3344 +#define wxStyledTextCtrl_PositionAfter 3345 +#define wxStyledTextCtrl_CopyRange 3346 +#define wxStyledTextCtrl_CopyText 3347 +#define wxStyledTextCtrl_SetSelectionMode 3348 +#define wxStyledTextCtrl_GetSelectionMode 3349 +#define wxStyledTextCtrl_LineDownRectExtend 3350 +#define wxStyledTextCtrl_LineUpRectExtend 3351 +#define wxStyledTextCtrl_CharLeftRectExtend 3352 +#define wxStyledTextCtrl_CharRightRectExtend 3353 +#define wxStyledTextCtrl_HomeRectExtend 3354 +#define wxStyledTextCtrl_VCHomeRectExtend 3355 +#define wxStyledTextCtrl_LineEndRectExtend 3356 +#define wxStyledTextCtrl_PageUpRectExtend 3357 +#define wxStyledTextCtrl_PageDownRectExtend 3358 +#define wxStyledTextCtrl_StutteredPageUp 3359 +#define wxStyledTextCtrl_StutteredPageUpExtend 3360 +#define wxStyledTextCtrl_StutteredPageDown 3361 +#define wxStyledTextCtrl_StutteredPageDownExtend 3362 +#define wxStyledTextCtrl_WordLeftEnd 3363 +#define wxStyledTextCtrl_WordLeftEndExtend 3364 +#define wxStyledTextCtrl_WordRightEnd 3365 +#define wxStyledTextCtrl_WordRightEndExtend 3366 +#define wxStyledTextCtrl_SetWhitespaceChars 3367 +#define wxStyledTextCtrl_SetCharsDefault 3368 +#define wxStyledTextCtrl_AutoCompGetCurrent 3369 +#define wxStyledTextCtrl_Allocate 3370 +#define wxStyledTextCtrl_FindColumn 3371 +#define wxStyledTextCtrl_GetCaretSticky 3372 +#define wxStyledTextCtrl_SetCaretSticky 3373 +#define wxStyledTextCtrl_ToggleCaretSticky 3374 +#define wxStyledTextCtrl_SetPasteConvertEndings 3375 +#define wxStyledTextCtrl_GetPasteConvertEndings 3376 +#define wxStyledTextCtrl_SelectionDuplicate 3377 +#define wxStyledTextCtrl_SetCaretLineBackAlpha 3378 +#define wxStyledTextCtrl_GetCaretLineBackAlpha 3379 +#define wxStyledTextCtrl_StartRecord 3380 +#define wxStyledTextCtrl_StopRecord 3381 +#define wxStyledTextCtrl_SetLexer 3382 +#define wxStyledTextCtrl_GetLexer 3383 +#define wxStyledTextCtrl_Colourise 3384 +#define wxStyledTextCtrl_SetProperty 3385 +#define wxStyledTextCtrl_SetKeyWords 3386 +#define wxStyledTextCtrl_SetLexerLanguage 3387 +#define wxStyledTextCtrl_GetProperty 3388 +#define wxStyledTextCtrl_GetStyleBitsNeeded 3389 +#define wxStyledTextCtrl_GetCurrentLine 3390 +#define wxStyledTextCtrl_StyleSetSpec 3391 +#define wxStyledTextCtrl_StyleSetFont 3392 +#define wxStyledTextCtrl_StyleSetFontAttr 3393 +#define wxStyledTextCtrl_StyleSetCharacterSet 3394 +#define wxStyledTextCtrl_StyleSetFontEncoding 3395 +#define wxStyledTextCtrl_CmdKeyExecute 3396 +#define wxStyledTextCtrl_SetMargins 3397 +#define wxStyledTextCtrl_GetSelection 3398 +#define wxStyledTextCtrl_PointFromPosition 3399 +#define wxStyledTextCtrl_ScrollToLine 3400 +#define wxStyledTextCtrl_ScrollToColumn 3401 +#define wxStyledTextCtrl_SetVScrollBar 3402 +#define wxStyledTextCtrl_SetHScrollBar 3403 +#define wxStyledTextCtrl_GetLastKeydownProcessed 3404 +#define wxStyledTextCtrl_SetLastKeydownProcessed 3405 +#define wxStyledTextCtrl_SaveFile 3406 +#define wxStyledTextCtrl_LoadFile 3407 +#define wxStyledTextCtrl_DoDragOver 3408 +#define wxStyledTextCtrl_DoDropText 3409 +#define wxStyledTextCtrl_GetUseAntiAliasing 3410 +#define wxStyledTextCtrl_AddTextRaw 3411 +#define wxStyledTextCtrl_InsertTextRaw 3412 +#define wxStyledTextCtrl_GetCurLineRaw 3413 +#define wxStyledTextCtrl_GetLineRaw 3414 +#define wxStyledTextCtrl_GetSelectedTextRaw 3415 +#define wxStyledTextCtrl_GetTextRangeRaw 3416 +#define wxStyledTextCtrl_SetTextRaw 3417 +#define wxStyledTextCtrl_GetTextRaw 3418 +#define wxStyledTextCtrl_AppendTextRaw 3419 +#define wxArtProvider_GetBitmap 3420 +#define wxArtProvider_GetIcon 3421 +#define wxTreeEvent_GetKeyCode 3422 +#define wxTreeEvent_GetItem 3423 +#define wxTreeEvent_GetKeyEvent 3424 +#define wxTreeEvent_GetLabel 3425 +#define wxTreeEvent_GetOldItem 3426 +#define wxTreeEvent_GetPoint 3427 +#define wxTreeEvent_IsEditCancelled 3428 +#define wxTreeEvent_SetToolTip 3429 +#define wxNotebookEvent_GetOldSelection 3430 +#define wxNotebookEvent_GetSelection 3431 +#define wxNotebookEvent_SetOldSelection 3432 +#define wxNotebookEvent_SetSelection 3433 +#define wxFileDataObject_new 3434 +#define wxFileDataObject_AddFile 3435 +#define wxFileDataObject_GetFilenames 3436 +#define wxFileDataObject_destroy 3437 +#define wxTextDataObject_new 3438 +#define wxTextDataObject_GetTextLength 3439 +#define wxTextDataObject_GetText 3440 +#define wxTextDataObject_SetText 3441 +#define wxTextDataObject_destroy 3442 +#define wxBitmapDataObject_new_1_1 3443 +#define wxBitmapDataObject_new_1_0 3444 +#define wxBitmapDataObject_GetBitmap 3445 +#define wxBitmapDataObject_SetBitmap 3446 +#define wxBitmapDataObject_destroy 3447 +#define wxClipboard_new 3449 +#define wxClipboard_destruct 3450 +#define wxClipboard_AddData 3451 +#define wxClipboard_Clear 3452 +#define wxClipboard_Close 3453 +#define wxClipboard_Flush 3454 +#define wxClipboard_GetData 3455 +#define wxClipboard_IsOpened 3456 +#define wxClipboard_Open 3457 +#define wxClipboard_SetData 3458 +#define wxClipboard_UsePrimarySelection 3460 +#define wxClipboard_IsSupported 3461 +#define wxClipboard_Get 3462 +#define wxSpinEvent_GetPosition 3463 +#define wxSpinEvent_SetPosition 3464 +#define wxSplitterWindow_new_0 3465 +#define wxSplitterWindow_new_2 3466 +#define wxSplitterWindow_destruct 3467 +#define wxSplitterWindow_Create 3468 +#define wxSplitterWindow_GetMinimumPaneSize 3469 +#define wxSplitterWindow_GetSashGravity 3470 +#define wxSplitterWindow_GetSashPosition 3471 +#define wxSplitterWindow_GetSplitMode 3472 +#define wxSplitterWindow_GetWindow1 3473 +#define wxSplitterWindow_GetWindow2 3474 +#define wxSplitterWindow_Initialize 3475 +#define wxSplitterWindow_IsSplit 3476 +#define wxSplitterWindow_ReplaceWindow 3477 +#define wxSplitterWindow_SetSashGravity 3478 +#define wxSplitterWindow_SetSashPosition 3479 +#define wxSplitterWindow_SetSashSize 3480 +#define wxSplitterWindow_SetMinimumPaneSize 3481 +#define wxSplitterWindow_SetSplitMode 3482 +#define wxSplitterWindow_SplitHorizontally 3483 +#define wxSplitterWindow_SplitVertically 3484 +#define wxSplitterWindow_Unsplit 3485 +#define wxSplitterWindow_UpdateSize 3486 +#define wxSplitterEvent_GetSashPosition 3487 +#define wxSplitterEvent_GetX 3488 +#define wxSplitterEvent_GetY 3489 +#define wxSplitterEvent_GetWindowBeingRemoved 3490 +#define wxSplitterEvent_SetSashPosition 3491 +#define wxHtmlWindow_new_0 3492 +#define wxHtmlWindow_new_2 3493 +#define wxHtmlWindow_AppendToPage 3494 +#define wxHtmlWindow_GetOpenedAnchor 3495 +#define wxHtmlWindow_GetOpenedPage 3496 +#define wxHtmlWindow_GetOpenedPageTitle 3497 +#define wxHtmlWindow_GetRelatedFrame 3498 +#define wxHtmlWindow_HistoryBack 3499 +#define wxHtmlWindow_HistoryCanBack 3500 +#define wxHtmlWindow_HistoryCanForward 3501 +#define wxHtmlWindow_HistoryClear 3502 +#define wxHtmlWindow_HistoryForward 3503 +#define wxHtmlWindow_LoadFile 3504 +#define wxHtmlWindow_LoadPage 3505 +#define wxHtmlWindow_SelectAll 3506 +#define wxHtmlWindow_SelectionToText 3507 +#define wxHtmlWindow_SelectLine 3508 +#define wxHtmlWindow_SelectWord 3509 +#define wxHtmlWindow_SetBorders 3510 +#define wxHtmlWindow_SetFonts 3511 +#define wxHtmlWindow_SetPage 3512 +#define wxHtmlWindow_SetRelatedFrame 3513 +#define wxHtmlWindow_SetRelatedStatusBar 3514 +#define wxHtmlWindow_ToText 3515 +#define wxHtmlWindow_destroy 3516 +#define wxHtmlLinkEvent_GetLinkInfo 3517 +#define wxSystemSettings_GetColour 3518 +#define wxSystemSettings_GetFont 3519 +#define wxSystemSettings_GetMetric 3520 +#define wxSystemSettings_GetScreenType 3521 +#define wxSystemOptions_GetOption 3522 +#define wxSystemOptions_GetOptionInt 3523 +#define wxSystemOptions_HasOption 3524 +#define wxSystemOptions_IsFalse 3525 +#define wxSystemOptions_SetOption_2_1 3526 +#define wxSystemOptions_SetOption_2_0 3527 +#define wxAuiNotebookEvent_SetSelection 3528 +#define wxAuiNotebookEvent_GetSelection 3529 +#define wxAuiNotebookEvent_SetOldSelection 3530 +#define wxAuiNotebookEvent_GetOldSelection 3531 +#define wxAuiNotebookEvent_SetDragSource 3532 +#define wxAuiNotebookEvent_GetDragSource 3533 +#define wxAuiManagerEvent_SetManager 3534 +#define wxAuiManagerEvent_GetManager 3535 +#define wxAuiManagerEvent_SetPane 3536 +#define wxAuiManagerEvent_GetPane 3537 +#define wxAuiManagerEvent_SetButton 3538 +#define wxAuiManagerEvent_GetButton 3539 +#define wxAuiManagerEvent_SetDC 3540 +#define wxAuiManagerEvent_GetDC 3541 +#define wxAuiManagerEvent_Veto 3542 +#define wxAuiManagerEvent_GetVeto 3543 +#define wxAuiManagerEvent_SetCanVeto 3544 +#define wxAuiManagerEvent_CanVeto 3545 +#define wxLogNull_new 3546 +#define wxLogNull_destroy 3547 +#define wxTaskBarIcon_new 3548 +#define wxTaskBarIcon_destruct 3549 +#define wxTaskBarIcon_PopupMenu 3550 +#define wxTaskBarIcon_RemoveIcon 3551 +#define wxTaskBarIcon_SetIcon 3552 +#define wxLocale_new_0 3553 +#define wxLocale_new_2 3555 +#define wxLocale_destruct 3556 +#define wxLocale_Init 3558 +#define wxLocale_AddCatalog_1 3559 +#define wxLocale_AddCatalog_3 3560 +#define wxLocale_AddCatalogLookupPathPrefix 3561 +#define wxLocale_GetCanonicalName 3562 +#define wxLocale_GetLanguage 3563 +#define wxLocale_GetLanguageName 3564 +#define wxLocale_GetLocale 3565 +#define wxLocale_GetName 3566 +#define wxLocale_GetString_2 3567 +#define wxLocale_GetString_4 3568 +#define wxLocale_GetHeaderValue 3569 +#define wxLocale_GetSysName 3570 +#define wxLocale_GetSystemEncoding 3571 +#define wxLocale_GetSystemEncodingName 3572 +#define wxLocale_GetSystemLanguage 3573 +#define wxLocale_IsLoaded 3574 +#define wxLocale_IsOk 3575 +#define wxActivateEvent_GetActive 3576 +#define wxPopupWindow_new_2 3578 +#define wxPopupWindow_new_0 3579 +#define wxPopupWindow_destruct 3581 +#define wxPopupWindow_Create 3582 +#define wxPopupWindow_Position 3583 +#define wxPopupTransientWindow_new_0 3584 +#define wxPopupTransientWindow_new_2 3585 +#define wxPopupTransientWindow_destruct 3586 +#define wxPopupTransientWindow_Popup 3587 +#define wxPopupTransientWindow_Dismiss 3588 +#define wxOverlay_new 3589 +#define wxOverlay_destruct 3590 +#define wxOverlay_Reset 3591 +#define wxDCOverlay_new_6 3592 +#define wxDCOverlay_new_2 3593 +#define wxDCOverlay_destruct 3594 +#define wxDCOverlay_Clear 3595 +#define wxDropFilesEvent_GetPosition 3596 +#define wxDropFilesEvent_GetNumberOfFiles 3597 +#define wxDropFilesEvent_GetFiles 3598 diff --git a/lib/wx/doc/src/notes.xml b/lib/wx/doc/src/notes.xml index 4f0e166924..70ff0a92b7 100644 --- a/lib/wx/doc/src/notes.xml +++ b/lib/wx/doc/src/notes.xml @@ -32,6 +32,23 @@ <p>This document describes the changes made to the wxErlang application.</p> +<section><title>Wx 1.7.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Increased the stacksize for the wx thread. The default + stacksize on Windows is 1MB which is not enough if the + user created many nested dialogs.</p> + <p> + Own Id: OTP-13816</p> + </item> + </list> + </section> + +</section> + <section><title>Wx 1.7</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/wx/examples/demo/demo.erl b/lib/wx/examples/demo/demo.erl index 99c28b3177..8b7412017a 100644 --- a/lib/wx/examples/demo/demo.erl +++ b/lib/wx/examples/demo/demo.erl @@ -60,11 +60,15 @@ start_link() -> start_link(Debug) -> wx_object:start_link(?MODULE, Debug, []). +format(#state{log=Log}, Str, Args) -> + wxTextCtrl:appendText(Log, io_lib:format(Str, Args)), + ok; format(Config,Str,Args) -> Log = proplists:get_value(log, Config), wxTextCtrl:appendText(Log, io_lib:format(Str, Args)), ok. + -define(DEBUG_NONE, 101). -define(DEBUG_VERBOSE, 102). -define(DEBUG_TRACE, 103). @@ -97,7 +101,11 @@ init(Options) -> wxFrame:connect(Frame, close_window), _SB = wxFrame:createStatusBar(Frame,[]), - + + %% Setup on toplevel because stc seems to steal this on linux + wxFrame:dragAcceptFiles(Frame, true), + wxFrame:connect(Frame, drop_files), + %% T Uppersplitter %% O Left | Right %% P Widgets|Code | Demo @@ -201,15 +209,15 @@ handle_info({'EXIT',_, shutdown}, State) -> handle_info({'EXIT',_, normal}, State) -> {noreply,State}; handle_info(Msg, State) -> - io:format("Got Info ~p~n",[Msg]), + format(State, "Got Info ~p~n",[Msg]), {noreply,State}. handle_call(Msg, _From, State) -> - io:format("Got Call ~p~n",[Msg]), + format(State, "Got Call ~p~n",[Msg]), {reply,ok,State}. handle_cast(Msg, State) -> - io:format("Got cast ~p~n",[Msg]), + format(State, "Got cast ~p~n",[Msg]), {noreply,State}. %% Async Events are handled in handle_event as in handle_info @@ -286,7 +294,7 @@ handle_event(#wx{event=#wxClose{}}, State = #state{win=Frame}) -> ok = wxFrame:setStatusText(Frame, "Closing...",[]), {stop, normal, State}; handle_event(Ev,State) -> - io:format("~p Got event ~p ~n",[?MODULE, Ev]), + format(State, "~p Got event ~p ~n",[?MODULE, Ev]), {noreply, State}. code_change(_, _, State) -> @@ -364,6 +372,7 @@ code_area(Parent) -> ?stc:setVisiblePolicy(Ed, Policy, 3), %% ?stc:connect(Ed, stc_doubleclick), + %% ?stc:connect(Ed, std_do_drop, fun(Ev, Obj) -> io:format("Ev ~p ~p~n",[Ev,Obj]) end), ?stc:setReadOnly(Ed, true), Ed. diff --git a/lib/wx/include/wx.hrl b/lib/wx/include/wx.hrl index 30baeebb18..8dbfe0c30f 100644 --- a/lib/wx/include/wx.hrl +++ b/lib/wx/include/wx.hrl @@ -33,31 +33,10 @@ %% Here comes the definitions of all event records. %% they contain the event type and possible some extra information. --record(wxFocus,{type :: wxFocusEventType(), %% Callback event: {@link wxFocusEvent} - win :: wxWindow:wxWindow()}). --type wxFocusEventType() :: 'set_focus' | 'kill_focus'. --type wxFocus() :: #wxFocus{}. %% Callback event: {@link wxFocusEvent} - --record(wxCommand,{type :: wxCommandEventType(), %% Callback event: {@link wxCommandEvent} - cmdString :: unicode:chardata(), - commandInt :: integer(), - extraLong :: integer()}). --type wxCommandEventType() :: 'command_button_clicked' | 'command_checkbox_clicked' | 'command_choice_selected' | 'command_listbox_selected' | 'command_listbox_doubleclicked' | 'command_text_updated' | 'command_text_enter' | 'command_menu_selected' | 'command_slider_updated' | 'command_radiobox_selected' | 'command_radiobutton_selected' | 'command_scrollbar_updated' | 'command_vlbox_selected' | 'command_combobox_selected' | 'command_tool_rclicked' | 'command_tool_enter' | 'command_checklistbox_toggled' | 'command_togglebutton_clicked' | 'command_left_click' | 'command_left_dclick' | 'command_right_click' | 'command_set_focus' | 'command_kill_focus' | 'command_enter'. --type wxCommand() :: #wxCommand{}. %% Callback event: {@link wxCommandEvent} - --record(wxColourPicker,{type :: wxColourPickerEventType(), %% Callback event: {@link wxColourPickerEvent} - colour :: wx:wx_colour()}). --type wxColourPickerEventType() :: 'command_colourpicker_changed'. --type wxColourPicker() :: #wxColourPicker{}. %% Callback event: {@link wxColourPickerEvent} - --record(wxHelp, {type :: wxHelpEventType()}). %% Callback event: {@link wxHelpEvent} --type wxHelpEventType() :: 'help' | 'detailed_help'. --type wxHelp() :: #wxHelp{}. %% Callback event: {@link wxHelpEvent} - --record(wxSpin,{type :: wxSpinEventType(), %% Callback event: {@link wxSpinEvent} - commandInt :: integer()}). --type wxSpinEventType() :: 'command_spinctrl_updated' | 'spin_up' | 'spin_down' | 'spin'. --type wxSpin() :: #wxSpin{}. %% Callback event: {@link wxSpinEvent} +-record(wxActivate,{type :: wxActivateEventType(), %% Callback event: {@link wxActivateEvent} + active :: boolean()}). +-type wxActivateEventType() :: 'activate' | 'activate_app' | 'hibernate'. +-type wxActivate() :: #wxActivate{}. %% Callback event: {@link wxActivateEvent} -record(wxAuiManager,{type :: wxAuiManagerEventType(), %% Callback event: {@link wxAuiManagerEvent} manager :: wxAuiManager:wxAuiManager(), @@ -69,68 +48,83 @@ -type wxAuiManagerEventType() :: 'aui_pane_button' | 'aui_pane_close' | 'aui_pane_maximize' | 'aui_pane_restore' | 'aui_pane_activated' | 'aui_render' | 'aui_find_manager'. -type wxAuiManager() :: #wxAuiManager{}. %% Callback event: {@link wxAuiManagerEvent} --record(wxDate,{type :: wxDateEventType(), %% Callback event: {@link wxDateEvent} +-record(wxAuiNotebook,{type :: wxAuiNotebookEventType(), %% Callback event: {@link wxAuiNotebookEvent} + old_selection :: integer(), + selection :: integer(), + drag_source :: wxAuiNotebook:wxAuiNotebook()}). +-type wxAuiNotebookEventType() :: 'command_auinotebook_page_close' | 'command_auinotebook_page_changed' | 'command_auinotebook_page_changing' | 'command_auinotebook_button' | 'command_auinotebook_begin_drag' | 'command_auinotebook_end_drag' | 'command_auinotebook_drag_motion' | 'command_auinotebook_allow_dnd' | 'command_auinotebook_tab_middle_down' | 'command_auinotebook_tab_middle_up' | 'command_auinotebook_tab_right_down' | 'command_auinotebook_tab_right_up' | 'command_auinotebook_page_closed' | 'command_auinotebook_drag_done' | 'command_auinotebook_bg_dclick'. +-type wxAuiNotebook() :: #wxAuiNotebook{}. %% Callback event: {@link wxAuiNotebookEvent} + +-record(wxCalendar,{type :: wxCalendarEventType(), %% Callback event: {@link wxCalendarEvent} + wday :: wx:wx_enum(), date :: wx:wx_datetime()}). --type wxDateEventType() :: 'date_changed'. --type wxDate() :: #wxDate{}. %% Callback event: {@link wxDateEvent} +-type wxCalendarEventType() :: 'calendar_sel_changed' | 'calendar_day_changed' | 'calendar_month_changed' | 'calendar_year_changed' | 'calendar_doubleclicked' | 'calendar_weekday_clicked'. +-type wxCalendar() :: #wxCalendar{}. %% Callback event: {@link wxCalendarEvent} --record(wxIconize,{type :: wxIconizeEventType(), %% Callback event: {@link wxIconizeEvent} - iconized :: boolean()}). --type wxIconizeEventType() :: 'iconize'. --type wxIconize() :: #wxIconize{}. %% Callback event: {@link wxIconizeEvent} +-record(wxChildFocus, {type :: wxChildFocusEventType()}). %% Callback event: {@link wxChildFocusEvent} +-type wxChildFocusEventType() :: 'child_focus'. +-type wxChildFocus() :: #wxChildFocus{}. %% Callback event: {@link wxChildFocusEvent} --record(wxScroll,{type :: wxScrollEventType(), %% Callback event: {@link wxScrollEvent} - commandInt :: integer(), - extraLong :: integer()}). --type wxScrollEventType() :: 'scroll_top' | 'scroll_bottom' | 'scroll_lineup' | 'scroll_linedown' | 'scroll_pageup' | 'scroll_pagedown' | 'scroll_thumbtrack' | 'scroll_thumbrelease' | 'scroll_changed'. --type wxScroll() :: #wxScroll{}. %% Callback event: {@link wxScrollEvent} +-record(wxClipboardText, {type :: wxClipboardTextEventType()}). %% Callback event: {@link wxClipboardTextEvent} +-type wxClipboardTextEventType() :: 'command_text_copy' | 'command_text_cut' | 'command_text_paste'. +-type wxClipboardText() :: #wxClipboardText{}. %% Callback event: {@link wxClipboardTextEvent} --record(wxSplitter, {type :: wxSplitterEventType()}). %% Callback event: {@link wxSplitterEvent} --type wxSplitterEventType() :: 'command_splitter_sash_pos_changed' | 'command_splitter_sash_pos_changing' | 'command_splitter_doubleclicked' | 'command_splitter_unsplit'. --type wxSplitter() :: #wxSplitter{}. %% Callback event: {@link wxSplitterEvent} +-record(wxClose, {type :: wxCloseEventType()}). %% Callback event: {@link wxCloseEvent} +-type wxCloseEventType() :: 'close_window' | 'end_session' | 'query_end_session'. +-type wxClose() :: #wxClose{}. %% Callback event: {@link wxCloseEvent} --record(wxPaletteChanged, {type :: wxPaletteChangedEventType()}). %% Callback event: {@link wxPaletteChangedEvent} --type wxPaletteChangedEventType() :: 'palette_changed'. --type wxPaletteChanged() :: #wxPaletteChanged{}. %% Callback event: {@link wxPaletteChangedEvent} +-record(wxColourPicker,{type :: wxColourPickerEventType(), %% Callback event: {@link wxColourPickerEvent} + colour :: wx:wx_colour()}). +-type wxColourPickerEventType() :: 'command_colourpicker_changed'. +-type wxColourPicker() :: #wxColourPicker{}. %% Callback event: {@link wxColourPickerEvent} --record(wxNotebook,{type :: wxNotebookEventType(), %% Callback event: {@link wxNotebookEvent} - nSel :: integer(), - nOldSel :: integer()}). --type wxNotebookEventType() :: 'command_notebook_page_changed' | 'command_notebook_page_changing'. --type wxNotebook() :: #wxNotebook{}. %% Callback event: {@link wxNotebookEvent} +-record(wxCommand,{type :: wxCommandEventType(), %% Callback event: {@link wxCommandEvent} + cmdString :: unicode:chardata(), + commandInt :: integer(), + extraLong :: integer()}). +-type wxCommandEventType() :: 'command_button_clicked' | 'command_checkbox_clicked' | 'command_choice_selected' | 'command_listbox_selected' | 'command_listbox_doubleclicked' | 'command_text_updated' | 'command_text_enter' | 'command_menu_selected' | 'command_slider_updated' | 'command_radiobox_selected' | 'command_radiobutton_selected' | 'command_scrollbar_updated' | 'command_vlbox_selected' | 'command_combobox_selected' | 'command_tool_rclicked' | 'command_tool_enter' | 'command_checklistbox_toggled' | 'command_togglebutton_clicked' | 'command_left_click' | 'command_left_dclick' | 'command_right_click' | 'command_set_focus' | 'command_kill_focus' | 'command_enter'. +-type wxCommand() :: #wxCommand{}. %% Callback event: {@link wxCommandEvent} -record(wxContextMenu,{type :: wxContextMenuEventType(), %% Callback event: {@link wxContextMenuEvent} pos :: {X::integer(), Y::integer()}}). -type wxContextMenuEventType() :: 'context_menu'. -type wxContextMenu() :: #wxContextMenu{}. %% Callback event: {@link wxContextMenuEvent} --record(wxFontPicker,{type :: wxFontPickerEventType(), %% Callback event: {@link wxFontPickerEvent} - font :: wxFont:wxFont()}). --type wxFontPickerEventType() :: 'command_fontpicker_changed'. --type wxFontPicker() :: #wxFontPicker{}. %% Callback event: {@link wxFontPickerEvent} +-record(wxDate,{type :: wxDateEventType(), %% Callback event: {@link wxDateEvent} + date :: wx:wx_datetime()}). +-type wxDateEventType() :: 'date_changed'. +-type wxDate() :: #wxDate{}. %% Callback event: {@link wxDateEvent} --record(wxChildFocus, {type :: wxChildFocusEventType()}). %% Callback event: {@link wxChildFocusEvent} --type wxChildFocusEventType() :: 'child_focus'. --type wxChildFocus() :: #wxChildFocus{}. %% Callback event: {@link wxChildFocusEvent} +-record(wxDisplayChanged, {type :: wxDisplayChangedEventType()}). %% Callback event: {@link wxDisplayChangedEvent} +-type wxDisplayChangedEventType() :: 'display_changed'. +-type wxDisplayChanged() :: #wxDisplayChanged{}. %% Callback event: {@link wxDisplayChangedEvent} --record(wxTaskBarIcon, {type :: wxTaskBarIconEventType()}). %% Callback event: {@link wxTaskBarIconEvent} --type wxTaskBarIconEventType() :: 'taskbar_move' | 'taskbar_left_down' | 'taskbar_left_up' | 'taskbar_right_down' | 'taskbar_right_up' | 'taskbar_left_dclick' | 'taskbar_right_dclick'. --type wxTaskBarIcon() :: #wxTaskBarIcon{}. %% Callback event: {@link wxTaskBarIconEvent} +-record(wxDropFiles,{type :: wxDropFilesEventType(), %% Callback event: {@link wxDropFilesEvent} + noFiles :: integer(), + pos :: {X::integer(), Y::integer()}, + files :: [unicode:chardata()]}). +-type wxDropFilesEventType() :: 'drop_files'. +-type wxDropFiles() :: #wxDropFiles{}. %% Callback event: {@link wxDropFilesEvent} --record(wxWindowDestroy, {type :: wxWindowDestroyEventType()}). %% Callback event: {@link wxWindowDestroyEvent} --type wxWindowDestroyEventType() :: 'destroy'. --type wxWindowDestroy() :: #wxWindowDestroy{}. %% Callback event: {@link wxWindowDestroyEvent} +-record(wxErase,{type :: wxEraseEventType(), %% Callback event: {@link wxEraseEvent} + dc :: wxDC:wxDC()}). +-type wxEraseEventType() :: 'erase_background'. +-type wxErase() :: #wxErase{}. %% Callback event: {@link wxEraseEvent} --record(wxMenu,{type :: wxMenuEventType(), %% Callback event: {@link wxMenuEvent} - menuId :: integer(), - menu :: wxMenu:wxMenu()}). --type wxMenuEventType() :: 'menu_open' | 'menu_close' | 'menu_highlight'. --type wxMenu() :: #wxMenu{}. %% Callback event: {@link wxMenuEvent} +-record(wxFileDirPicker,{type :: wxFileDirPickerEventType(), %% Callback event: {@link wxFileDirPickerEvent} + path :: unicode:chardata()}). +-type wxFileDirPickerEventType() :: 'command_filepicker_changed' | 'command_dirpicker_changed'. +-type wxFileDirPicker() :: #wxFileDirPicker{}. %% Callback event: {@link wxFileDirPickerEvent} --record(wxActivate,{type :: wxActivateEventType(), %% Callback event: {@link wxActivateEvent} - active :: boolean()}). --type wxActivateEventType() :: 'activate' | 'activate_app' | 'hibernate'. --type wxActivate() :: #wxActivate{}. %% Callback event: {@link wxActivateEvent} +-record(wxFocus,{type :: wxFocusEventType(), %% Callback event: {@link wxFocusEvent} + win :: wxWindow:wxWindow()}). +-type wxFocusEventType() :: 'set_focus' | 'kill_focus'. +-type wxFocus() :: #wxFocus{}. %% Callback event: {@link wxFocusEvent} + +-record(wxFontPicker,{type :: wxFontPickerEventType(), %% Callback event: {@link wxFontPickerEvent} + font :: wxFont:wxFont()}). +-type wxFontPickerEventType() :: 'command_fontpicker_changed'. +-type wxFontPicker() :: #wxFontPicker{}. %% Callback event: {@link wxFontPickerEvent} -record(wxGrid,{type :: wxGridEventType(), %% Callback event: {@link wxGridEvent} row :: integer(), @@ -145,64 +139,27 @@ -type wxGridEventType() :: 'grid_cell_left_click' | 'grid_cell_right_click' | 'grid_cell_left_dclick' | 'grid_cell_right_dclick' | 'grid_label_left_click' | 'grid_label_right_click' | 'grid_label_left_dclick' | 'grid_label_right_dclick' | 'grid_row_size' | 'grid_col_size' | 'grid_range_select' | 'grid_cell_change' | 'grid_select_cell' | 'grid_editor_shown' | 'grid_editor_hidden' | 'grid_editor_created' | 'grid_cell_begin_drag'. -type wxGrid() :: #wxGrid{}. %% Callback event: {@link wxGridEvent} --record(wxPaint, {type :: wxPaintEventType()}). %% Callback event: {@link wxPaintEvent} --type wxPaintEventType() :: 'paint'. --type wxPaint() :: #wxPaint{}. %% Callback event: {@link wxPaintEvent} - --record(wxShow,{type :: wxShowEventType(), %% Callback event: {@link wxShowEvent} - show :: boolean()}). --type wxShowEventType() :: 'show'. --type wxShow() :: #wxShow{}. %% Callback event: {@link wxShowEvent} - --record(wxStyledText,{type :: wxStyledTextEventType(), %% Callback event: {@link wxStyledTextEvent} - position :: integer(), - key :: integer(), - modifiers :: integer(), - modificationType :: integer(), - text :: unicode:chardata(), - length :: integer(), - linesAdded :: integer(), - line :: integer(), - foldLevelNow :: integer(), - foldLevelPrev :: integer(), - margin :: integer(), - message :: integer(), - wParam :: integer(), - lParam :: integer(), - listType :: integer(), - x :: integer(), - y :: integer(), - dragText :: unicode:chardata(), - dragAllowMove :: boolean(), - dragResult :: wx:wx_enum()}). --type wxStyledTextEventType() :: 'stc_change' | 'stc_styleneeded' | 'stc_charadded' | 'stc_savepointreached' | 'stc_savepointleft' | 'stc_romodifyattempt' | 'stc_key' | 'stc_doubleclick' | 'stc_updateui' | 'stc_modified' | 'stc_macrorecord' | 'stc_marginclick' | 'stc_needshown' | 'stc_painted' | 'stc_userlistselection' | 'stc_uridropped' | 'stc_dwellstart' | 'stc_dwellend' | 'stc_start_drag' | 'stc_drag_over' | 'stc_do_drop' | 'stc_zoom' | 'stc_hotspot_click' | 'stc_hotspot_dclick' | 'stc_calltip_click' | 'stc_autocomp_selection'. --type wxStyledText() :: #wxStyledText{}. %% Callback event: {@link wxStyledTextEvent} +-record(wxHelp, {type :: wxHelpEventType()}). %% Callback event: {@link wxHelpEvent} +-type wxHelpEventType() :: 'help' | 'detailed_help'. +-type wxHelp() :: #wxHelp{}. %% Callback event: {@link wxHelpEvent} --record(wxAuiNotebook,{type :: wxAuiNotebookEventType(), %% Callback event: {@link wxAuiNotebookEvent} - old_selection :: integer(), - selection :: integer(), - drag_source :: wxAuiNotebook:wxAuiNotebook()}). --type wxAuiNotebookEventType() :: 'command_auinotebook_page_close' | 'command_auinotebook_page_changed' | 'command_auinotebook_page_changing' | 'command_auinotebook_button' | 'command_auinotebook_begin_drag' | 'command_auinotebook_end_drag' | 'command_auinotebook_drag_motion' | 'command_auinotebook_allow_dnd' | 'command_auinotebook_tab_middle_down' | 'command_auinotebook_tab_middle_up' | 'command_auinotebook_tab_right_down' | 'command_auinotebook_tab_right_up' | 'command_auinotebook_page_closed' | 'command_auinotebook_drag_done' | 'command_auinotebook_bg_dclick'. --type wxAuiNotebook() :: #wxAuiNotebook{}. %% Callback event: {@link wxAuiNotebookEvent} +-record(wxHtmlLink,{type :: wxHtmlLinkEventType(), %% Callback event: {@link wxHtmlLinkEvent} + linkInfo :: wx:wx_wxHtmlLinkInfo()}). +-type wxHtmlLinkEventType() :: 'command_html_link_clicked'. +-type wxHtmlLink() :: #wxHtmlLink{}. %% Callback event: {@link wxHtmlLinkEvent} --record(wxList,{type :: wxListEventType(), %% Callback event: {@link wxListEvent} - code :: integer(), - oldItemIndex :: integer(), - itemIndex :: integer(), - col :: integer(), - pointDrag :: {X::integer(), Y::integer()}}). --type wxListEventType() :: 'command_list_begin_drag' | 'command_list_begin_rdrag' | 'command_list_begin_label_edit' | 'command_list_end_label_edit' | 'command_list_delete_item' | 'command_list_delete_all_items' | 'command_list_key_down' | 'command_list_insert_item' | 'command_list_col_click' | 'command_list_col_right_click' | 'command_list_col_begin_drag' | 'command_list_col_dragging' | 'command_list_col_end_drag' | 'command_list_item_selected' | 'command_list_item_deselected' | 'command_list_item_right_click' | 'command_list_item_middle_click' | 'command_list_item_activated' | 'command_list_item_focused' | 'command_list_cache_hint'. --type wxList() :: #wxList{}. %% Callback event: {@link wxListEvent} +-record(wxIconize,{type :: wxIconizeEventType(), %% Callback event: {@link wxIconizeEvent} + iconized :: boolean()}). +-type wxIconizeEventType() :: 'iconize'. +-type wxIconize() :: #wxIconize{}. %% Callback event: {@link wxIconizeEvent} --record(wxUpdateUI, {type :: wxUpdateUIEventType()}). %% Callback event: {@link wxUpdateUIEvent} --type wxUpdateUIEventType() :: 'update_ui'. --type wxUpdateUI() :: #wxUpdateUI{}. %% Callback event: {@link wxUpdateUIEvent} +-record(wxIdle, {type :: wxIdleEventType()}). %% Callback event: {@link wxIdleEvent} +-type wxIdleEventType() :: 'idle'. +-type wxIdle() :: #wxIdle{}. %% Callback event: {@link wxIdleEvent} --record(wxScrollWin,{type :: wxScrollWinEventType(), %% Callback event: {@link wxScrollWinEvent} - commandInt :: integer(), - extraLong :: integer()}). --type wxScrollWinEventType() :: 'scrollwin_top' | 'scrollwin_bottom' | 'scrollwin_lineup' | 'scrollwin_linedown' | 'scrollwin_pageup' | 'scrollwin_pagedown' | 'scrollwin_thumbtrack' | 'scrollwin_thumbrelease'. --type wxScrollWin() :: #wxScrollWin{}. %% Callback event: {@link wxScrollWinEvent} +-record(wxInitDialog, {type :: wxInitDialogEventType()}). %% Callback event: {@link wxInitDialogEvent} +-type wxInitDialogEventType() :: 'init_dialog'. +-type wxInitDialog() :: #wxInitDialog{}. %% Callback event: {@link wxInitDialogEvent} -record(wxJoystick,{type :: wxJoystickEventType(), %% Callback event: {@link wxJoystickEvent} pos :: {X::integer(), Y::integer()}, @@ -213,14 +170,6 @@ -type wxJoystickEventType() :: 'joy_button_down' | 'joy_button_up' | 'joy_move' | 'joy_zmove'. -type wxJoystick() :: #wxJoystick{}. %% Callback event: {@link wxJoystickEvent} --record(wxWindowCreate, {type :: wxWindowCreateEventType()}). %% Callback event: {@link wxWindowCreateEvent} --type wxWindowCreateEventType() :: 'create'. --type wxWindowCreate() :: #wxWindowCreate{}. %% Callback event: {@link wxWindowCreateEvent} - --record(wxClose, {type :: wxCloseEventType()}). %% Callback event: {@link wxCloseEvent} --type wxCloseEventType() :: 'close_window' | 'end_session' | 'query_end_session'. --type wxClose() :: #wxClose{}. %% Callback event: {@link wxCloseEvent} - -record(wxKey,{type :: wxKeyEventType(), %% Callback event: {@link wxKeyEvent} x :: integer(), y :: integer(), @@ -236,55 +185,32 @@ -type wxKeyEventType() :: 'char' | 'char_hook' | 'key_down' | 'key_up'. -type wxKey() :: #wxKey{}. %% Callback event: {@link wxKeyEvent} --record(wxIdle, {type :: wxIdleEventType()}). %% Callback event: {@link wxIdleEvent} --type wxIdleEventType() :: 'idle'. --type wxIdle() :: #wxIdle{}. %% Callback event: {@link wxIdleEvent} - --record(wxQueryNewPalette, {type :: wxQueryNewPaletteEventType()}). %% Callback event: {@link wxQueryNewPaletteEvent} --type wxQueryNewPaletteEventType() :: 'query_new_palette'. --type wxQueryNewPalette() :: #wxQueryNewPalette{}. %% Callback event: {@link wxQueryNewPaletteEvent} - --record(wxHtmlLink,{type :: wxHtmlLinkEventType(), %% Callback event: {@link wxHtmlLinkEvent} - linkInfo :: wx:wx_wxHtmlLinkInfo()}). --type wxHtmlLinkEventType() :: 'command_html_link_clicked'. --type wxHtmlLink() :: #wxHtmlLink{}. %% Callback event: {@link wxHtmlLinkEvent} - --record(wxInitDialog, {type :: wxInitDialogEventType()}). %% Callback event: {@link wxInitDialogEvent} --type wxInitDialogEventType() :: 'init_dialog'. --type wxInitDialog() :: #wxInitDialog{}. %% Callback event: {@link wxInitDialogEvent} +-record(wxList,{type :: wxListEventType(), %% Callback event: {@link wxListEvent} + code :: integer(), + oldItemIndex :: integer(), + itemIndex :: integer(), + col :: integer(), + pointDrag :: {X::integer(), Y::integer()}}). +-type wxListEventType() :: 'command_list_begin_drag' | 'command_list_begin_rdrag' | 'command_list_begin_label_edit' | 'command_list_end_label_edit' | 'command_list_delete_item' | 'command_list_delete_all_items' | 'command_list_key_down' | 'command_list_insert_item' | 'command_list_col_click' | 'command_list_col_right_click' | 'command_list_col_begin_drag' | 'command_list_col_dragging' | 'command_list_col_end_drag' | 'command_list_item_selected' | 'command_list_item_deselected' | 'command_list_item_right_click' | 'command_list_item_middle_click' | 'command_list_item_activated' | 'command_list_item_focused' | 'command_list_cache_hint'. +-type wxList() :: #wxList{}. %% Callback event: {@link wxListEvent} -record(wxMaximize, {type :: wxMaximizeEventType()}). %% Callback event: {@link wxMaximizeEvent} -type wxMaximizeEventType() :: 'maximize'. -type wxMaximize() :: #wxMaximize{}. %% Callback event: {@link wxMaximizeEvent} --record(wxClipboardText, {type :: wxClipboardTextEventType()}). %% Callback event: {@link wxClipboardTextEvent} --type wxClipboardTextEventType() :: 'command_text_copy' | 'command_text_cut' | 'command_text_paste'. --type wxClipboardText() :: #wxClipboardText{}. %% Callback event: {@link wxClipboardTextEvent} - --record(wxTree,{type :: wxTreeEventType(), %% Callback event: {@link wxTreeEvent} - item :: integer(), - itemOld :: integer(), - pointDrag :: {X::integer(), Y::integer()}}). --type wxTreeEventType() :: 'command_tree_begin_drag' | 'command_tree_begin_rdrag' | 'command_tree_begin_label_edit' | 'command_tree_end_label_edit' | 'command_tree_delete_item' | 'command_tree_get_info' | 'command_tree_set_info' | 'command_tree_item_expanded' | 'command_tree_item_expanding' | 'command_tree_item_collapsed' | 'command_tree_item_collapsing' | 'command_tree_sel_changed' | 'command_tree_sel_changing' | 'command_tree_key_down' | 'command_tree_item_activated' | 'command_tree_item_right_click' | 'command_tree_item_middle_click' | 'command_tree_end_drag' | 'command_tree_state_image_click' | 'command_tree_item_gettooltip' | 'command_tree_item_menu'. --type wxTree() :: #wxTree{}. %% Callback event: {@link wxTreeEvent} - --record(wxErase,{type :: wxEraseEventType(), %% Callback event: {@link wxEraseEvent} - dc :: wxDC:wxDC()}). --type wxEraseEventType() :: 'erase_background'. --type wxErase() :: #wxErase{}. %% Callback event: {@link wxEraseEvent} +-record(wxMenu,{type :: wxMenuEventType(), %% Callback event: {@link wxMenuEvent} + menuId :: integer(), + menu :: wxMenu:wxMenu()}). +-type wxMenuEventType() :: 'menu_open' | 'menu_close' | 'menu_highlight'. +-type wxMenu() :: #wxMenu{}. %% Callback event: {@link wxMenuEvent} --record(wxSash,{type :: wxSashEventType(), %% Callback event: {@link wxSashEvent} - edge :: wx:wx_enum(), - dragRect :: {X::integer(), Y::integer(), W::integer(), H::integer()}, - dragStatus :: wx:wx_enum()}). --type wxSashEventType() :: 'sash_dragged'. --type wxSash() :: #wxSash{}. %% Callback event: {@link wxSashEvent} +-record(wxMouseCaptureChanged, {type :: wxMouseCaptureChangedEventType()}). %% Callback event: {@link wxMouseCaptureChangedEvent} +-type wxMouseCaptureChangedEventType() :: 'mouse_capture_changed'. +-type wxMouseCaptureChanged() :: #wxMouseCaptureChanged{}. %% Callback event: {@link wxMouseCaptureChangedEvent} --record(wxCalendar,{type :: wxCalendarEventType(), %% Callback event: {@link wxCalendarEvent} - wday :: wx:wx_enum(), - date :: wx:wx_datetime()}). --type wxCalendarEventType() :: 'calendar_sel_changed' | 'calendar_day_changed' | 'calendar_month_changed' | 'calendar_year_changed' | 'calendar_doubleclicked' | 'calendar_weekday_clicked'. --type wxCalendar() :: #wxCalendar{}. %% Callback event: {@link wxCalendarEvent} +-record(wxMouseCaptureLost, {type :: wxMouseCaptureLostEventType()}). %% Callback event: {@link wxMouseCaptureLostEvent} +-type wxMouseCaptureLostEventType() :: 'mouse_capture_lost'. +-type wxMouseCaptureLost() :: #wxMouseCaptureLost{}. %% Callback event: {@link wxMouseCaptureLostEvent} -record(wxMouse,{type :: wxMouseEventType(), %% Callback event: {@link wxMouseEvent} x :: integer(), @@ -302,20 +228,6 @@ -type wxMouseEventType() :: 'left_down' | 'left_up' | 'middle_down' | 'middle_up' | 'right_down' | 'right_up' | 'motion' | 'enter_window' | 'leave_window' | 'left_dclick' | 'middle_dclick' | 'right_dclick' | 'mousewheel'. -type wxMouse() :: #wxMouse{}. %% Callback event: {@link wxMouseEvent} --record(wxSize,{type :: wxSizeEventType(), %% Callback event: {@link wxSizeEvent} - size :: {W::integer(), H::integer()}, - rect :: {X::integer(), Y::integer(), W::integer(), H::integer()}}). --type wxSizeEventType() :: 'size'. --type wxSize() :: #wxSize{}. %% Callback event: {@link wxSizeEvent} - --record(wxSysColourChanged, {type :: wxSysColourChangedEventType()}). %% Callback event: {@link wxSysColourChangedEvent} --type wxSysColourChangedEventType() :: 'sys_colour_changed'. --type wxSysColourChanged() :: #wxSysColourChanged{}. %% Callback event: {@link wxSysColourChangedEvent} - --record(wxDisplayChanged, {type :: wxDisplayChangedEventType()}). %% Callback event: {@link wxDisplayChangedEvent} --type wxDisplayChangedEventType() :: 'display_changed'. --type wxDisplayChanged() :: #wxDisplayChanged{}. %% Callback event: {@link wxDisplayChangedEvent} - -record(wxMove,{type :: wxMoveEventType(), %% Callback event: {@link wxMoveEvent} pos :: {X::integer(), Y::integer()}, rect :: {X::integer(), Y::integer(), W::integer(), H::integer()}}). @@ -328,10 +240,42 @@ -type wxNavigationKeyEventType() :: 'navigation_key'. -type wxNavigationKey() :: #wxNavigationKey{}. %% Callback event: {@link wxNavigationKeyEvent} --record(wxFileDirPicker,{type :: wxFileDirPickerEventType(), %% Callback event: {@link wxFileDirPickerEvent} - path :: unicode:chardata()}). --type wxFileDirPickerEventType() :: 'command_filepicker_changed' | 'command_dirpicker_changed'. --type wxFileDirPicker() :: #wxFileDirPicker{}. %% Callback event: {@link wxFileDirPickerEvent} +-record(wxNotebook,{type :: wxNotebookEventType(), %% Callback event: {@link wxNotebookEvent} + nSel :: integer(), + nOldSel :: integer()}). +-type wxNotebookEventType() :: 'command_notebook_page_changed' | 'command_notebook_page_changing'. +-type wxNotebook() :: #wxNotebook{}. %% Callback event: {@link wxNotebookEvent} + +-record(wxPaint, {type :: wxPaintEventType()}). %% Callback event: {@link wxPaintEvent} +-type wxPaintEventType() :: 'paint'. +-type wxPaint() :: #wxPaint{}. %% Callback event: {@link wxPaintEvent} + +-record(wxPaletteChanged, {type :: wxPaletteChangedEventType()}). %% Callback event: {@link wxPaletteChangedEvent} +-type wxPaletteChangedEventType() :: 'palette_changed'. +-type wxPaletteChanged() :: #wxPaletteChanged{}. %% Callback event: {@link wxPaletteChangedEvent} + +-record(wxQueryNewPalette, {type :: wxQueryNewPaletteEventType()}). %% Callback event: {@link wxQueryNewPaletteEvent} +-type wxQueryNewPaletteEventType() :: 'query_new_palette'. +-type wxQueryNewPalette() :: #wxQueryNewPalette{}. %% Callback event: {@link wxQueryNewPaletteEvent} + +-record(wxSash,{type :: wxSashEventType(), %% Callback event: {@link wxSashEvent} + edge :: wx:wx_enum(), + dragRect :: {X::integer(), Y::integer(), W::integer(), H::integer()}, + dragStatus :: wx:wx_enum()}). +-type wxSashEventType() :: 'sash_dragged'. +-type wxSash() :: #wxSash{}. %% Callback event: {@link wxSashEvent} + +-record(wxScroll,{type :: wxScrollEventType(), %% Callback event: {@link wxScrollEvent} + commandInt :: integer(), + extraLong :: integer()}). +-type wxScrollEventType() :: 'scroll_top' | 'scroll_bottom' | 'scroll_lineup' | 'scroll_linedown' | 'scroll_pageup' | 'scroll_pagedown' | 'scroll_thumbtrack' | 'scroll_thumbrelease' | 'scroll_changed'. +-type wxScroll() :: #wxScroll{}. %% Callback event: {@link wxScrollEvent} + +-record(wxScrollWin,{type :: wxScrollWinEventType(), %% Callback event: {@link wxScrollWinEvent} + commandInt :: integer(), + extraLong :: integer()}). +-type wxScrollWinEventType() :: 'scrollwin_top' | 'scrollwin_bottom' | 'scrollwin_lineup' | 'scrollwin_linedown' | 'scrollwin_pageup' | 'scrollwin_pagedown' | 'scrollwin_thumbtrack' | 'scrollwin_thumbrelease'. +-type wxScrollWin() :: #wxScrollWin{}. %% Callback event: {@link wxScrollWinEvent} -record(wxSetCursor,{type :: wxSetCursorEventType(), %% Callback event: {@link wxSetCursorEvent} x :: integer(), @@ -340,16 +284,79 @@ -type wxSetCursorEventType() :: 'set_cursor'. -type wxSetCursor() :: #wxSetCursor{}. %% Callback event: {@link wxSetCursorEvent} --record(wxMouseCaptureChanged, {type :: wxMouseCaptureChangedEventType()}). %% Callback event: {@link wxMouseCaptureChangedEvent} --type wxMouseCaptureChangedEventType() :: 'mouse_capture_changed'. --type wxMouseCaptureChanged() :: #wxMouseCaptureChanged{}. %% Callback event: {@link wxMouseCaptureChangedEvent} +-record(wxShow,{type :: wxShowEventType(), %% Callback event: {@link wxShowEvent} + show :: boolean()}). +-type wxShowEventType() :: 'show'. +-type wxShow() :: #wxShow{}. %% Callback event: {@link wxShowEvent} --record(wxMouseCaptureLost, {type :: wxMouseCaptureLostEventType()}). %% Callback event: {@link wxMouseCaptureLostEvent} --type wxMouseCaptureLostEventType() :: 'mouse_capture_lost'. --type wxMouseCaptureLost() :: #wxMouseCaptureLost{}. %% Callback event: {@link wxMouseCaptureLostEvent} +-record(wxSize,{type :: wxSizeEventType(), %% Callback event: {@link wxSizeEvent} + size :: {W::integer(), H::integer()}, + rect :: {X::integer(), Y::integer(), W::integer(), H::integer()}}). +-type wxSizeEventType() :: 'size'. +-type wxSize() :: #wxSize{}. %% Callback event: {@link wxSizeEvent} + +-record(wxSpin,{type :: wxSpinEventType(), %% Callback event: {@link wxSpinEvent} + commandInt :: integer()}). +-type wxSpinEventType() :: 'command_spinctrl_updated' | 'spin_up' | 'spin_down' | 'spin'. +-type wxSpin() :: #wxSpin{}. %% Callback event: {@link wxSpinEvent} + +-record(wxSplitter, {type :: wxSplitterEventType()}). %% Callback event: {@link wxSplitterEvent} +-type wxSplitterEventType() :: 'command_splitter_sash_pos_changed' | 'command_splitter_sash_pos_changing' | 'command_splitter_doubleclicked' | 'command_splitter_unsplit'. +-type wxSplitter() :: #wxSplitter{}. %% Callback event: {@link wxSplitterEvent} + +-record(wxStyledText,{type :: wxStyledTextEventType(), %% Callback event: {@link wxStyledTextEvent} + position :: integer(), + key :: integer(), + modifiers :: integer(), + modificationType :: integer(), + text :: unicode:chardata(), + length :: integer(), + linesAdded :: integer(), + line :: integer(), + foldLevelNow :: integer(), + foldLevelPrev :: integer(), + margin :: integer(), + message :: integer(), + wParam :: integer(), + lParam :: integer(), + listType :: integer(), + x :: integer(), + y :: integer(), + dragText :: unicode:chardata(), + dragAllowMove :: boolean(), + dragResult :: wx:wx_enum()}). +-type wxStyledTextEventType() :: 'stc_change' | 'stc_styleneeded' | 'stc_charadded' | 'stc_savepointreached' | 'stc_savepointleft' | 'stc_romodifyattempt' | 'stc_key' | 'stc_doubleclick' | 'stc_updateui' | 'stc_modified' | 'stc_macrorecord' | 'stc_marginclick' | 'stc_needshown' | 'stc_painted' | 'stc_userlistselection' | 'stc_uridropped' | 'stc_dwellstart' | 'stc_dwellend' | 'stc_start_drag' | 'stc_drag_over' | 'stc_do_drop' | 'stc_zoom' | 'stc_hotspot_click' | 'stc_hotspot_dclick' | 'stc_calltip_click' | 'stc_autocomp_selection'. +-type wxStyledText() :: #wxStyledText{}. %% Callback event: {@link wxStyledTextEvent} + +-record(wxSysColourChanged, {type :: wxSysColourChangedEventType()}). %% Callback event: {@link wxSysColourChangedEvent} +-type wxSysColourChangedEventType() :: 'sys_colour_changed'. +-type wxSysColourChanged() :: #wxSysColourChanged{}. %% Callback event: {@link wxSysColourChangedEvent} + +-record(wxTaskBarIcon, {type :: wxTaskBarIconEventType()}). %% Callback event: {@link wxTaskBarIconEvent} +-type wxTaskBarIconEventType() :: 'taskbar_move' | 'taskbar_left_down' | 'taskbar_left_up' | 'taskbar_right_down' | 'taskbar_right_up' | 'taskbar_left_dclick' | 'taskbar_right_dclick'. +-type wxTaskBarIcon() :: #wxTaskBarIcon{}. %% Callback event: {@link wxTaskBarIconEvent} + +-record(wxTree,{type :: wxTreeEventType(), %% Callback event: {@link wxTreeEvent} + item :: integer(), + itemOld :: integer(), + pointDrag :: {X::integer(), Y::integer()}}). +-type wxTreeEventType() :: 'command_tree_begin_drag' | 'command_tree_begin_rdrag' | 'command_tree_begin_label_edit' | 'command_tree_end_label_edit' | 'command_tree_delete_item' | 'command_tree_get_info' | 'command_tree_set_info' | 'command_tree_item_expanded' | 'command_tree_item_expanding' | 'command_tree_item_collapsed' | 'command_tree_item_collapsing' | 'command_tree_sel_changed' | 'command_tree_sel_changing' | 'command_tree_key_down' | 'command_tree_item_activated' | 'command_tree_item_right_click' | 'command_tree_item_middle_click' | 'command_tree_end_drag' | 'command_tree_state_image_click' | 'command_tree_item_gettooltip' | 'command_tree_item_menu'. +-type wxTree() :: #wxTree{}. %% Callback event: {@link wxTreeEvent} + +-record(wxUpdateUI, {type :: wxUpdateUIEventType()}). %% Callback event: {@link wxUpdateUIEvent} +-type wxUpdateUIEventType() :: 'update_ui'. +-type wxUpdateUI() :: #wxUpdateUI{}. %% Callback event: {@link wxUpdateUIEvent} + +-record(wxWindowCreate, {type :: wxWindowCreateEventType()}). %% Callback event: {@link wxWindowCreateEvent} +-type wxWindowCreateEventType() :: 'create'. +-type wxWindowCreate() :: #wxWindowCreate{}. %% Callback event: {@link wxWindowCreateEvent} + +-record(wxWindowDestroy, {type :: wxWindowDestroyEventType()}). %% Callback event: {@link wxWindowDestroyEvent} +-type wxWindowDestroyEventType() :: 'destroy'. +-type wxWindowDestroy() :: #wxWindowDestroy{}. %% Callback event: {@link wxWindowDestroyEvent} --type event() :: wxActivate() | wxAuiManager() | wxAuiNotebook() | wxCalendar() | wxChildFocus() | wxClipboardText() | wxClose() | wxColourPicker() | wxCommand() | wxContextMenu() | wxDate() | wxDisplayChanged() | wxErase() | wxFileDirPicker() | wxFocus() | wxFontPicker() | wxGrid() | wxHelp() | wxHtmlLink() | wxIconize() | wxIdle() | wxInitDialog() | wxJoystick() | wxKey() | wxList() | wxMaximize() | wxMenu() | wxMouse() | wxMouseCaptureChanged() | wxMouseCaptureLost() | wxMove() | wxNavigationKey() | wxNotebook() | wxPaint() | wxPaletteChanged() | wxQueryNewPalette() | wxSash() | wxScroll() | wxScrollWin() | wxSetCursor() | wxShow() | wxSize() | wxSpin() | wxSplitter() | wxStyledText() | wxSysColourChanged() | wxTaskBarIcon() | wxTree() | wxUpdateUI() | wxWindowCreate() | wxWindowDestroy(). --type wxEventType() :: wxActivateEventType() | wxAuiManagerEventType() | wxAuiNotebookEventType() | wxCalendarEventType() | wxChildFocusEventType() | wxClipboardTextEventType() | wxCloseEventType() | wxColourPickerEventType() | wxCommandEventType() | wxContextMenuEventType() | wxDateEventType() | wxDisplayChangedEventType() | wxEraseEventType() | wxFileDirPickerEventType() | wxFocusEventType() | wxFontPickerEventType() | wxGridEventType() | wxHelpEventType() | wxHtmlLinkEventType() | wxIconizeEventType() | wxIdleEventType() | wxInitDialogEventType() | wxJoystickEventType() | wxKeyEventType() | wxListEventType() | wxMaximizeEventType() | wxMenuEventType() | wxMouseCaptureChangedEventType() | wxMouseCaptureLostEventType() | wxMouseEventType() | wxMoveEventType() | wxNavigationKeyEventType() | wxNotebookEventType() | wxPaintEventType() | wxPaletteChangedEventType() | wxQueryNewPaletteEventType() | wxSashEventType() | wxScrollEventType() | wxScrollWinEventType() | wxSetCursorEventType() | wxShowEventType() | wxSizeEventType() | wxSpinEventType() | wxSplitterEventType() | wxStyledTextEventType() | wxSysColourChangedEventType() | wxTaskBarIconEventType() | wxTreeEventType() | wxUpdateUIEventType() | wxWindowCreateEventType() | wxWindowDestroyEventType(). +-type event() :: wxActivate() | wxAuiManager() | wxAuiNotebook() | wxCalendar() | wxChildFocus() | wxClipboardText() | wxClose() | wxColourPicker() | wxCommand() | wxContextMenu() | wxDate() | wxDisplayChanged() | wxDropFiles() | wxErase() | wxFileDirPicker() | wxFocus() | wxFontPicker() | wxGrid() | wxHelp() | wxHtmlLink() | wxIconize() | wxIdle() | wxInitDialog() | wxJoystick() | wxKey() | wxList() | wxMaximize() | wxMenu() | wxMouse() | wxMouseCaptureChanged() | wxMouseCaptureLost() | wxMove() | wxNavigationKey() | wxNotebook() | wxPaint() | wxPaletteChanged() | wxQueryNewPalette() | wxSash() | wxScroll() | wxScrollWin() | wxSetCursor() | wxShow() | wxSize() | wxSpin() | wxSplitter() | wxStyledText() | wxSysColourChanged() | wxTaskBarIcon() | wxTree() | wxUpdateUI() | wxWindowCreate() | wxWindowDestroy(). +-type wxEventType() :: wxActivateEventType() | wxAuiManagerEventType() | wxAuiNotebookEventType() | wxCalendarEventType() | wxChildFocusEventType() | wxClipboardTextEventType() | wxCloseEventType() | wxColourPickerEventType() | wxCommandEventType() | wxContextMenuEventType() | wxDateEventType() | wxDisplayChangedEventType() | wxDropFilesEventType() | wxEraseEventType() | wxFileDirPickerEventType() | wxFocusEventType() | wxFontPickerEventType() | wxGridEventType() | wxHelpEventType() | wxHtmlLinkEventType() | wxIconizeEventType() | wxIdleEventType() | wxInitDialogEventType() | wxJoystickEventType() | wxKeyEventType() | wxListEventType() | wxMaximizeEventType() | wxMenuEventType() | wxMouseCaptureChangedEventType() | wxMouseCaptureLostEventType() | wxMouseEventType() | wxMoveEventType() | wxNavigationKeyEventType() | wxNotebookEventType() | wxPaintEventType() | wxPaletteChangedEventType() | wxQueryNewPaletteEventType() | wxSashEventType() | wxScrollEventType() | wxScrollWinEventType() | wxSetCursorEventType() | wxShowEventType() | wxSizeEventType() | wxSpinEventType() | wxSplitterEventType() | wxStyledTextEventType() | wxSysColourChangedEventType() | wxTaskBarIconEventType() | wxTreeEventType() | wxUpdateUIEventType() | wxWindowCreateEventType() | wxWindowDestroyEventType(). %% Hardcoded Records -record(wxMouseState, {x :: integer(), y :: integer(), diff --git a/lib/wx/src/gen/wxArtProvider.erl b/lib/wx/src/gen/wxArtProvider.erl index da220a90c8..b52c141b1f 100644 --- a/lib/wx/src/gen/wxArtProvider.erl +++ b/lib/wx/src/gen/wxArtProvider.erl @@ -40,7 +40,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). Id::unicode:chardata(). getBitmap(Id) - when is_list(Id) -> + when ?is_chardata(Id) -> getBitmap(Id, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxartprovider.html#wxartprovidergetbitmap">external documentation</a>. @@ -49,7 +49,7 @@ getBitmap(Id) Option :: {'client', unicode:chardata()} | {'size', {W::integer(), H::integer()}}. getBitmap(Id, Options) - when is_list(Id),is_list(Options) -> + when ?is_chardata(Id),is_list(Options) -> Id_UC = unicode:characters_to_binary([Id,0]), MOpts = fun({client, Client}, Acc) -> Client_UC = unicode:characters_to_binary([Client, $_, $C,0]),[<<1:32/?UI,(byte_size(Client_UC)):32/?UI,(Client_UC)/binary, 0:(((8- ((0+byte_size(Client_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; ({size, {SizeW,SizeH}}, Acc) -> [<<2:32/?UI,SizeW:32/?UI,SizeH:32/?UI,0:32>>|Acc]; @@ -63,7 +63,7 @@ getBitmap(Id, Options) Id::unicode:chardata(). getIcon(Id) - when is_list(Id) -> + when ?is_chardata(Id) -> getIcon(Id, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxartprovider.html#wxartprovidergeticon">external documentation</a>. @@ -72,7 +72,7 @@ getIcon(Id) Option :: {'client', unicode:chardata()} | {'size', {W::integer(), H::integer()}}. getIcon(Id, Options) - when is_list(Id),is_list(Options) -> + when ?is_chardata(Id),is_list(Options) -> Id_UC = unicode:characters_to_binary([Id,0]), MOpts = fun({client, Client}, Acc) -> Client_UC = unicode:characters_to_binary([Client, $_, $C,0]),[<<1:32/?UI,(byte_size(Client_UC)):32/?UI,(Client_UC)/binary, 0:(((8- ((0+byte_size(Client_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; ({size, {SizeW,SizeH}}, Acc) -> [<<2:32/?UI,SizeW:32/?UI,SizeH:32/?UI,0:32>>|Acc]; diff --git a/lib/wx/src/gen/wxAuiManager.erl b/lib/wx/src/gen/wxAuiManager.erl index 37693060e1..a33e5e9a65 100644 --- a/lib/wx/src/gen/wxAuiManager.erl +++ b/lib/wx/src/gen/wxAuiManager.erl @@ -177,7 +177,7 @@ getManager(#wx_ref{type=WindowT,ref=WindowRef}) -> (This, Window) -> wxAuiPaneInfo:wxAuiPaneInfo() when This::wxAuiManager(), Window::wxWindow:wxWindow(). getPane(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxAuiManager), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxAuiManager_GetPane_1_0, @@ -223,7 +223,7 @@ insertPane(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=WindowT,ref=WindowRef},# -spec loadPaneInfo(This, Pane_part, Pane) -> 'ok' when This::wxAuiManager(), Pane_part::unicode:chardata(), Pane::wxAuiPaneInfo:wxAuiPaneInfo(). loadPaneInfo(#wx_ref{type=ThisT,ref=ThisRef},Pane_part,#wx_ref{type=PaneT,ref=PaneRef}) - when is_list(Pane_part) -> + when ?is_chardata(Pane_part) -> ?CLASS(ThisT,wxAuiManager), Pane_part_UC = unicode:characters_to_binary([Pane_part,0]), ?CLASS(PaneT,wxAuiPaneInfo), @@ -235,7 +235,7 @@ loadPaneInfo(#wx_ref{type=ThisT,ref=ThisRef},Pane_part,#wx_ref{type=PaneT,ref=Pa This::wxAuiManager(), Perspective::unicode:chardata(). loadPerspective(This,Perspective) - when is_record(This, wx_ref),is_list(Perspective) -> + when is_record(This, wx_ref),?is_chardata(Perspective) -> loadPerspective(This,Perspective, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxauimanager.html#wxauimanagerloadperspective">external documentation</a>. @@ -243,7 +243,7 @@ loadPerspective(This,Perspective) This::wxAuiManager(), Perspective::unicode:chardata(), Option :: {'update', boolean()}. loadPerspective(#wx_ref{type=ThisT,ref=ThisRef},Perspective, Options) - when is_list(Perspective),is_list(Options) -> + when ?is_chardata(Perspective),is_list(Options) -> ?CLASS(ThisT,wxAuiManager), Perspective_UC = unicode:characters_to_binary([Perspective,0]), MOpts = fun({update, Update}, Acc) -> [<<1:32/?UI,(wxe_util:from_bool(Update)):32/?UI>>|Acc]; diff --git a/lib/wx/src/gen/wxAuiNotebook.erl b/lib/wx/src/gen/wxAuiNotebook.erl index 42da35e16a..5d47bc8d6c 100644 --- a/lib/wx/src/gen/wxAuiNotebook.erl +++ b/lib/wx/src/gen/wxAuiNotebook.erl @@ -42,38 +42,38 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setForegroundColour/2, - setHelpText/2,setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2, - setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2,setPalette/2, - setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3,setVirtualSizeHints/2, - setVirtualSizeHints/3,setVirtualSizeHints/4,setWindowStyle/2,setWindowStyleFlag/2, - setWindowVariant/2,shouldInheritColours/1,show/1,show/2,thaw/1,transferDataFromWindow/1, - transferDataToWindow/1,update/1,updateWindowUI/1,updateWindowUI/2, - validate/1,warpPointer/3]). + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, + setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, + show/1,show/2,thaw/1,transferDataFromWindow/1,transferDataToWindow/1, + update/1,updateWindowUI/1,updateWindowUI/2,validate/1,warpPointer/3]). -export_type([wxAuiNotebook/0]). %% @hidden @@ -121,7 +121,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef}, Options) This::wxAuiNotebook(), Page::wxWindow:wxWindow(), Caption::unicode:chardata(). addPage(This,Page,Caption) - when is_record(This, wx_ref),is_record(Page, wx_ref),is_list(Caption) -> + when is_record(This, wx_ref),is_record(Page, wx_ref),?is_chardata(Caption) -> addPage(This,Page,Caption, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxauinotebook.html#wxauinotebookaddpage">external documentation</a>. @@ -130,7 +130,7 @@ addPage(This,Page,Caption) Option :: {'select', boolean()} | {'bitmap', wxBitmap:wxBitmap()}. addPage(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PageT,ref=PageRef},Caption, Options) - when is_list(Caption),is_list(Options) -> + when ?is_chardata(Caption),is_list(Options) -> ?CLASS(ThisT,wxAuiNotebook), ?CLASS(PageT,wxWindow), Caption_UC = unicode:characters_to_binary([Caption,0]), @@ -243,7 +243,7 @@ getSelection(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxAuiNotebook(), Page_idx::integer(), Page::wxWindow:wxWindow(), Caption::unicode:chardata(). insertPage(This,Page_idx,Page,Caption) - when is_record(This, wx_ref),is_integer(Page_idx),is_record(Page, wx_ref),is_list(Caption) -> + when is_record(This, wx_ref),is_integer(Page_idx),is_record(Page, wx_ref),?is_chardata(Caption) -> insertPage(This,Page_idx,Page,Caption, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxauinotebook.html#wxauinotebookinsertpage">external documentation</a>. @@ -252,7 +252,7 @@ insertPage(This,Page_idx,Page,Caption) Option :: {'select', boolean()} | {'bitmap', wxBitmap:wxBitmap()}. insertPage(#wx_ref{type=ThisT,ref=ThisRef},Page_idx,#wx_ref{type=PageT,ref=PageRef},Caption, Options) - when is_integer(Page_idx),is_list(Caption),is_list(Options) -> + when is_integer(Page_idx),?is_chardata(Caption),is_list(Options) -> ?CLASS(ThisT,wxAuiNotebook), ?CLASS(PageT,wxWindow), Caption_UC = unicode:characters_to_binary([Caption,0]), @@ -304,7 +304,7 @@ setPageBitmap(#wx_ref{type=ThisT,ref=ThisRef},Page,#wx_ref{type=BitmapT,ref=Bitm -spec setPageText(This, Page, Text) -> boolean() when This::wxAuiNotebook(), Page::integer(), Text::unicode:chardata(). setPageText(#wx_ref{type=ThisT,ref=ThisRef},Page,Text) - when is_integer(Page),is_list(Text) -> + when is_integer(Page),?is_chardata(Text) -> ?CLASS(ThisT,wxAuiNotebook), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxAuiNotebook_SetPageText, @@ -664,6 +664,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxAuiPaneInfo.erl b/lib/wx/src/gen/wxAuiPaneInfo.erl index 858da200be..c8273269ac 100644 --- a/lib/wx/src/gen/wxAuiPaneInfo.erl +++ b/lib/wx/src/gen/wxAuiPaneInfo.erl @@ -117,7 +117,7 @@ bottomDockable(#wx_ref{type=ThisT,ref=ThisRef}, Options) -spec caption(This, C) -> wxAuiPaneInfo() when This::wxAuiPaneInfo(), C::unicode:chardata(). caption(#wx_ref{type=ThisT,ref=ThisRef},C) - when is_list(C) -> + when ?is_chardata(C) -> ?CLASS(ThisT,wxAuiPaneInfo), C_UC = unicode:characters_to_binary([C,0]), wxe_util:call(?wxAuiPaneInfo_Caption, @@ -689,7 +689,7 @@ movable(#wx_ref{type=ThisT,ref=ThisRef}, Options) -spec name(This, N) -> wxAuiPaneInfo() when This::wxAuiPaneInfo(), N::unicode:chardata(). name(#wx_ref{type=ThisT,ref=ThisRef},N) - when is_list(N) -> + when ?is_chardata(N) -> ?CLASS(ThisT,wxAuiPaneInfo), N_UC = unicode:characters_to_binary([N,0]), wxe_util:call(?wxAuiPaneInfo_Name, diff --git a/lib/wx/src/gen/wxBitmap.erl b/lib/wx/src/gen/wxBitmap.erl index e7830dae9b..4a6e308d8d 100644 --- a/lib/wx/src/gen/wxBitmap.erl +++ b/lib/wx/src/gen/wxBitmap.erl @@ -56,7 +56,7 @@ new() -> Image::wxImage:wxImage(). new(Filename) - when is_list(Filename) -> + when ?is_chardata(Filename) -> new(Filename, []); new(Image) @@ -86,7 +86,7 @@ new(Width,Height) when is_integer(Width),is_integer(Height) -> new(Width,Height, []); new(Filename, Options) - when is_list(Filename),is_list(Options) -> + when ?is_chardata(Filename),is_list(Options) -> Filename_UC = unicode:characters_to_binary([Filename,0]), MOpts = fun({type, Type}, Acc) -> [<<1:32/?UI,Type:32/?UI>>|Acc]; (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, @@ -230,7 +230,7 @@ getSubBitmap(#wx_ref{type=ThisT,ref=ThisRef},{RectX,RectY,RectW,RectH}) This::wxBitmap(), Name::unicode:chardata(). loadFile(This,Name) - when is_record(This, wx_ref),is_list(Name) -> + when is_record(This, wx_ref),?is_chardata(Name) -> loadFile(This,Name, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxbitmap.html#wxbitmaploadfile">external documentation</a>. @@ -239,7 +239,7 @@ loadFile(This,Name) This::wxBitmap(), Name::unicode:chardata(), Option :: {'type', wx:wx_enum()}. loadFile(#wx_ref{type=ThisT,ref=ThisRef},Name, Options) - when is_list(Name),is_list(Options) -> + when ?is_chardata(Name),is_list(Options) -> ?CLASS(ThisT,wxBitmap), Name_UC = unicode:characters_to_binary([Name,0]), MOpts = fun({type, Type}, Acc) -> [<<1:32/?UI,Type:32/?UI>>|Acc]; @@ -261,7 +261,7 @@ ok(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxBitmap(), Name::unicode:chardata(), Type::wx:wx_enum(). saveFile(This,Name,Type) - when is_record(This, wx_ref),is_list(Name),is_integer(Type) -> + when is_record(This, wx_ref),?is_chardata(Name),is_integer(Type) -> saveFile(This,Name,Type, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxbitmap.html#wxbitmapsavefile">external documentation</a>. @@ -270,7 +270,7 @@ saveFile(This,Name,Type) This::wxBitmap(), Name::unicode:chardata(), Type::wx:wx_enum(), Option :: {'palette', wxPalette:wxPalette()}. saveFile(#wx_ref{type=ThisT,ref=ThisRef},Name,Type, Options) - when is_list(Name),is_integer(Type),is_list(Options) -> + when ?is_chardata(Name),is_integer(Type),is_list(Options) -> ?CLASS(ThisT,wxBitmap), Name_UC = unicode:characters_to_binary([Name,0]), MOpts = fun({palette, #wx_ref{type=PaletteT,ref=PaletteRef}}, Acc) -> ?CLASS(PaletteT,wxPalette),[<<1:32/?UI,PaletteRef:32/?UI>>|Acc]; diff --git a/lib/wx/src/gen/wxBitmapButton.erl b/lib/wx/src/gen/wxBitmapButton.erl index d1d2d037e8..20d47eb4cd 100644 --- a/lib/wx/src/gen/wxBitmapButton.erl +++ b/lib/wx/src/gen/wxBitmapButton.erl @@ -41,38 +41,39 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDefault/1,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, - setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, - setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, - setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, - setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, - setThemeEnabled/2,setToolTip/2,setTransparent/2,setVirtualSize/2, - setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, - setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, - show/1,show/2,thaw/1,transferDataFromWindow/1,transferDataToWindow/1, - update/1,updateWindowUI/1,updateWindowUI/2,validate/1,warpPointer/3]). + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDefault/1,setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2, + setFocus/1,setFocusFromKbd/1,setFont/2,setForegroundColour/2,setHelpText/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setScrollPos/3, + setScrollPos/4,setScrollbar/5,setScrollbar/6,setSize/2,setSize/3,setSize/5, + setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4,setSizer/2, + setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2,setToolTip/2, + setTransparent/2,setVirtualSize/2,setVirtualSize/3,setVirtualSizeHints/2, + setVirtualSizeHints/3,setVirtualSizeHints/4,setWindowStyle/2,setWindowStyleFlag/2, + setWindowVariant/2,shouldInheritColours/1,show/1,show/2,thaw/1,transferDataFromWindow/1, + transferDataToWindow/1,update/1,updateWindowUI/1,updateWindowUI/2, + validate/1,warpPointer/3]). -export_type([wxBitmapButton/0]). %% @hidden @@ -546,6 +547,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxButton.erl b/lib/wx/src/gen/wxButton.erl index 65d45caa13..f16e1a376e 100644 --- a/lib/wx/src/gen/wxButton.erl +++ b/lib/wx/src/gen/wxButton.erl @@ -39,30 +39,30 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setMaxSize/2,setMinSize/2, - setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setMaxSize/2, + setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, @@ -163,7 +163,7 @@ setDefault(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setLabel(This, Label) -> 'ok' when This::wxButton(), Label::unicode:chardata(). setLabel(#wx_ref{type=ThisT,ref=ThisRef},Label) - when is_list(Label) -> + when ?is_chardata(Label) -> ?CLASS(ThisT,wxButton), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:cast(?wxButton_SetLabel, @@ -496,6 +496,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxCalendarCtrl.erl b/lib/wx/src/gen/wxCalendarCtrl.erl index 93fcb61464..3d3f3ae242 100644 --- a/lib/wx/src/gen/wxCalendarCtrl.erl +++ b/lib/wx/src/gen/wxCalendarCtrl.erl @@ -43,29 +43,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -680,6 +680,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxCheckBox.erl b/lib/wx/src/gen/wxCheckBox.erl index 3276add802..294831c3a6 100644 --- a/lib/wx/src/gen/wxCheckBox.erl +++ b/lib/wx/src/gen/wxCheckBox.erl @@ -40,29 +40,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -92,7 +92,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). new(Parent,Id,Label) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> new(Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxcheckbox.html#wxcheckboxwxcheckbox">external documentation</a>. @@ -103,7 +103,7 @@ new(Parent,Id,Label) | {'style', integer()} | {'validator', wx:wx_object()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -120,7 +120,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) This::wxCheckBox(), Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). create(This,Parent,Id,Label) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> create(This,Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxcheckbox.html#wxcheckboxcreate">external documentation</a>. @@ -131,7 +131,7 @@ create(This,Parent,Id,Label) | {'style', integer()} | {'validator', wx:wx_object()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxCheckBox), ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), @@ -533,6 +533,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxCheckListBox.erl b/lib/wx/src/gen/wxCheckListBox.erl index 888f29518c..758e929696 100644 --- a/lib/wx/src/gen/wxCheckListBox.erl +++ b/lib/wx/src/gen/wxCheckListBox.erl @@ -41,27 +41,28 @@ clientToScreen/2,clientToScreen/3,close/1,close/2,connect/2,connect/3, convertDialogToPixels/2,convertPixelsToDialog/2,delete/2,deselect/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findString/2,findString/3,findWindow/2,fit/1,fitInside/1, - freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, - getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, - getClientData/2,getClientSize/1,getContainingSizer/1,getCount/1,getCursor/1, - getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, - getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, - getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, - getSelection/1,getSelections/1,getSize/1,getSizer/1,getString/2,getStringSelection/1, - getTextExtent/2,getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, - getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, - hasTransparentBackground/1,hide/1,hitTest/2,inheritAttributes/1,initDialog/1, - insert/3,insert/4,insertItems/3,invalidateBestSize/1,isDoubleBuffered/1, - isEmpty/1,isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1, - isSelected/2,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1, - makeModal/1,makeModal/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,screenToClient/1,screenToClient/2,scrollLines/2, - scrollPages/2,scrollWindow/3,scrollWindow/4,select/2,set/2,setAcceleratorTable/2, + dragAcceptFiles/2,enable/1,enable/2,findString/2,findString/3,findWindow/2, + fit/1,fitInside/1,freeze/1,getAcceleratorTable/1,getBackgroundColour/1, + getBackgroundStyle/1,getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1, + getChildren/1,getClientData/2,getClientSize/1,getContainingSizer/1, + getCount/1,getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1, + getFont/1,getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, + getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, + getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSelection/1,getSelections/1, + getSize/1,getSizer/1,getString/2,getStringSelection/1,getTextExtent/2, + getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, + getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, + hide/1,hitTest/2,inheritAttributes/1,initDialog/1,insert/3,insert/4, + insertItems/3,invalidateBestSize/1,isDoubleBuffered/1,isEmpty/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isSelected/2,isShown/1, + isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, + move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, + navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, + popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, + refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, + reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, + scrollWindow/3,scrollWindow/4,select/2,set/2,setAcceleratorTable/2, setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2,setCaret/2, setClientData/3,setClientSize/2,setClientSize/3,setContainingSizer/2, setCursor/2,setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFirstItem/2, @@ -538,6 +539,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxChoice.erl b/lib/wx/src/gen/wxChoice.erl index 1a90b275d1..2ce8935895 100644 --- a/lib/wx/src/gen/wxChoice.erl +++ b/lib/wx/src/gen/wxChoice.erl @@ -40,14 +40,14 @@ centre/1,centre/2,centreOnParent/1,centreOnParent/2,clear/1,clearBackground/1, clientToScreen/2,clientToScreen/3,close/1,close/2,connect/2,connect/3, convertDialogToPixels/2,convertPixelsToDialog/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - findString/2,findString/3,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientData/2,getClientSize/1, - getContainingSizer/1,getCount/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1,getMinSize/1, - getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,findString/2,findString/3,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientData/2,getClientSize/1,getContainingSizer/1,getCount/1,getCursor/1, + getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, getSelection/1,getSize/1,getSizer/1,getString/2,getStringSelection/1, getTextExtent/2,getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, @@ -553,6 +553,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxChoicebook.erl b/lib/wx/src/gen/wxChoicebook.erl index 34b62ff75b..61ba0fe47f 100644 --- a/lib/wx/src/gen/wxChoicebook.erl +++ b/lib/wx/src/gen/wxChoicebook.erl @@ -43,29 +43,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -120,7 +120,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) This::wxChoicebook(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). addPage(This,Page,Text) - when is_record(This, wx_ref),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_record(Page, wx_ref),?is_chardata(Text) -> addPage(This,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxchoicebook.html#wxchoicebookaddpage">external documentation</a>. @@ -129,7 +129,7 @@ addPage(This,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. addPage(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxChoicebook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -296,7 +296,7 @@ hitTest(#wx_ref{type=ThisT,ref=ThisRef},{PtX,PtY}) This::wxChoicebook(), N::integer(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). insertPage(This,N,Page,Text) - when is_record(This, wx_ref),is_integer(N),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_integer(N),is_record(Page, wx_ref),?is_chardata(Text) -> insertPage(This,N,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxchoicebook.html#wxchoicebookinsertpage">external documentation</a>. @@ -305,7 +305,7 @@ insertPage(This,N,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. insertPage(#wx_ref{type=ThisT,ref=ThisRef},N,#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_integer(N),is_list(Text),is_list(Options) -> + when is_integer(N),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxChoicebook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -347,7 +347,7 @@ setPageImage(#wx_ref{type=ThisT,ref=ThisRef},N,ImageId) -spec setPageText(This, N, StrText) -> boolean() when This::wxChoicebook(), N::integer(), StrText::unicode:chardata(). setPageText(#wx_ref{type=ThisT,ref=ThisRef},N,StrText) - when is_integer(N),is_list(StrText) -> + when is_integer(N),?is_chardata(StrText) -> ?CLASS(ThisT,wxChoicebook), StrText_UC = unicode:characters_to_binary([StrText,0]), wxe_util:call(?wxChoicebook_SetPageText, @@ -700,6 +700,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxColourDialog.erl b/lib/wx/src/gen/wxColourDialog.erl index 9c97434d9a..5b8d9f08d5 100644 --- a/lib/wx/src/gen/wxColourDialog.erl +++ b/lib/wx/src/gen/wxColourDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -539,6 +539,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxColourPickerCtrl.erl b/lib/wx/src/gen/wxColourPickerCtrl.erl index 9c987b4dde..2fe55018dc 100644 --- a/lib/wx/src/gen/wxColourPickerCtrl.erl +++ b/lib/wx/src/gen/wxColourPickerCtrl.erl @@ -39,17 +39,18 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getInternalMargin/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1, - getParent/1,getPickerCtrlProportion/1,getPosition/1,getRect/1,getScreenPosition/1, - getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, - getSize/1,getSizer/1,getTextCtrl/1,getTextCtrlProportion/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getInternalMargin/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPickerCtrlProportion/1, + getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextCtrl/1, + getTextCtrlProportion/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isPickerCtrlGrowable/1, isRetained/1,isShown/1,isTextCtrlGrowable/1,isTopLevel/1,layout/1, @@ -168,7 +169,7 @@ getColour(#wx_ref{type=ThisT,ref=ThisRef}) -> (This, Col) -> 'ok' when This::wxColourPickerCtrl(), Col::wx:wx_colour(). setColour(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxColourPickerCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxColourPickerCtrl_SetColour_1_0, @@ -537,6 +538,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxComboBox.erl b/lib/wx/src/gen/wxComboBox.erl index bbdf768eba..3de2721f38 100644 --- a/lib/wx/src/gen/wxComboBox.erl +++ b/lib/wx/src/gen/wxComboBox.erl @@ -42,14 +42,14 @@ centre/1,centre/2,centreOnParent/1,centreOnParent/2,clear/1,clearBackground/1, clientToScreen/2,clientToScreen/3,close/1,close/2,connect/2,connect/3, convertDialogToPixels/2,convertPixelsToDialog/2,delete/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - findString/2,findString/3,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientData/2,getClientSize/1, - getContainingSizer/1,getCount/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1,getMinSize/1, - getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,findString/2,findString/3,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientData/2,getClientSize/1,getContainingSizer/1,getCount/1,getCursor/1, + getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, getSelection/1,getSize/1,getSizer/1,getString/2,getStringSelection/1, getTextExtent/2,getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, @@ -130,7 +130,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) This::wxComboBox(), Parent::wxWindow:wxWindow(), Id::integer(), Value::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()]. create(This,Parent,Id,Value,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Value),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Value),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> create(This,Parent,Id,Value,Pos,Size,Choices, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxcombobox.html#wxcomboboxcreate">external documentation</a>. @@ -139,7 +139,7 @@ create(This,Parent,Id,Value,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) Option :: {'style', integer()} | {'validator', wx:wx_object()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Value,{PosX,PosY},{SizeW,SizeH},Choices, Options) - when is_integer(Id),is_list(Value),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices),is_list(Options) -> + when is_integer(Id),?is_chardata(Value),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices),is_list(Options) -> ?CLASS(ThisT,wxComboBox), ?CLASS(ParentT,wxWindow), Value_UC = unicode:characters_to_binary([Value,0]), @@ -252,7 +252,7 @@ redo(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec replace(This, From, To, Value) -> 'ok' when This::wxComboBox(), From::integer(), To::integer(), Value::unicode:chardata(). replace(#wx_ref{type=ThisT,ref=ThisRef},From,To,Value) - when is_integer(From),is_integer(To),is_list(Value) -> + when is_integer(From),is_integer(To),?is_chardata(Value) -> ?CLASS(ThisT,wxComboBox), Value_UC = unicode:characters_to_binary([Value,0]), wxe_util:cast(?wxComboBox_Replace, @@ -306,7 +306,7 @@ setSelection(#wx_ref{type=ThisT,ref=ThisRef},From,To) -spec setValue(This, Value) -> 'ok' when This::wxComboBox(), Value::unicode:chardata(). setValue(#wx_ref{type=ThisT,ref=ThisRef},Value) - when is_list(Value) -> + when ?is_chardata(Value) -> ?CLASS(ThisT,wxComboBox), Value_UC = unicode:characters_to_binary([Value,0]), wxe_util:cast(?wxComboBox_SetValue, @@ -688,6 +688,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxCommandEvent.erl b/lib/wx/src/gen/wxCommandEvent.erl index 781482aebb..18ccbc65f0 100644 --- a/lib/wx/src/gen/wxCommandEvent.erl +++ b/lib/wx/src/gen/wxCommandEvent.erl @@ -114,7 +114,7 @@ setInt(#wx_ref{type=ThisT,ref=ThisRef},I) -spec setString(This, S) -> 'ok' when This::wxCommandEvent(), S::unicode:chardata(). setString(#wx_ref{type=ThisT,ref=ThisRef},S) - when is_list(S) -> + when ?is_chardata(S) -> ?CLASS(ThisT,wxCommandEvent), S_UC = unicode:characters_to_binary([S,0]), wxe_util:cast(?wxCommandEvent_SetString, diff --git a/lib/wx/src/gen/wxControl.erl b/lib/wx/src/gen/wxControl.erl index a84f88639b..df911b0758 100644 --- a/lib/wx/src/gen/wxControl.erl +++ b/lib/wx/src/gen/wxControl.erl @@ -37,30 +37,30 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, - getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setMaxSize/2,setMinSize/2, - setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getMaxSize/1,getMinSize/1, + getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setMaxSize/2, + setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, @@ -89,7 +89,7 @@ getLabel(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setLabel(This, Label) -> 'ok' when This::wxControl(), Label::unicode:chardata(). setLabel(#wx_ref{type=ThisT,ref=ThisRef},Label) - when is_list(Label) -> + when ?is_chardata(Label) -> ?CLASS(ThisT,wxControl), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:cast(?wxControl_SetLabel, @@ -413,6 +413,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxControlWithItems.erl b/lib/wx/src/gen/wxControlWithItems.erl index c4d116d9e7..9c9769b5e3 100644 --- a/lib/wx/src/gen/wxControlWithItems.erl +++ b/lib/wx/src/gen/wxControlWithItems.erl @@ -41,29 +41,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -86,7 +86,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). -spec append(This, Item) -> integer() when This::wxControlWithItems(), Item::unicode:chardata(). append(#wx_ref{type=ThisT,ref=ThisRef},Item) - when is_list(Item) -> + when ?is_chardata(Item) -> ?CLASS(ThisT,wxControlWithItems), Item_UC = unicode:characters_to_binary([Item,0]), wxe_util:call(?wxControlWithItems_Append_1, @@ -96,7 +96,7 @@ append(#wx_ref{type=ThisT,ref=ThisRef},Item) -spec append(This, Item, ClientData) -> integer() when This::wxControlWithItems(), Item::unicode:chardata(), ClientData::term(). append(#wx_ref{type=ThisT,ref=ThisRef},Item,ClientData) - when is_list(Item) -> + when ?is_chardata(Item) -> ?CLASS(ThisT,wxControlWithItems), Item_UC = unicode:characters_to_binary([Item,0]), wxe_util:send_bin(term_to_binary(ClientData)), @@ -136,7 +136,7 @@ delete(#wx_ref{type=ThisT,ref=ThisRef},N) This::wxControlWithItems(), S::unicode:chardata(). findString(This,S) - when is_record(This, wx_ref),is_list(S) -> + when is_record(This, wx_ref),?is_chardata(S) -> findString(This,S, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxcontrolwithitems.html#wxcontrolwithitemsfindstring">external documentation</a>. @@ -144,7 +144,7 @@ findString(This,S) This::wxControlWithItems(), S::unicode:chardata(), Option :: {'bCase', boolean()}. findString(#wx_ref{type=ThisT,ref=ThisRef},S, Options) - when is_list(S),is_list(Options) -> + when ?is_chardata(S),is_list(Options) -> ?CLASS(ThisT,wxControlWithItems), S_UC = unicode:characters_to_binary([S,0]), MOpts = fun({bCase, BCase}, Acc) -> [<<1:32/?UI,(wxe_util:from_bool(BCase)):32/?UI>>|Acc]; @@ -209,7 +209,7 @@ getStringSelection(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec insert(This, Item, Pos) -> integer() when This::wxControlWithItems(), Item::unicode:chardata(), Pos::integer(). insert(#wx_ref{type=ThisT,ref=ThisRef},Item,Pos) - when is_list(Item),is_integer(Pos) -> + when ?is_chardata(Item),is_integer(Pos) -> ?CLASS(ThisT,wxControlWithItems), Item_UC = unicode:characters_to_binary([Item,0]), wxe_util:call(?wxControlWithItems_Insert_2, @@ -219,7 +219,7 @@ insert(#wx_ref{type=ThisT,ref=ThisRef},Item,Pos) -spec insert(This, Item, Pos, ClientData) -> integer() when This::wxControlWithItems(), Item::unicode:chardata(), Pos::integer(), ClientData::term(). insert(#wx_ref{type=ThisT,ref=ThisRef},Item,Pos,ClientData) - when is_list(Item),is_integer(Pos) -> + when ?is_chardata(Item),is_integer(Pos) -> ?CLASS(ThisT,wxControlWithItems), Item_UC = unicode:characters_to_binary([Item,0]), wxe_util:send_bin(term_to_binary(ClientData)), @@ -256,7 +256,7 @@ setSelection(#wx_ref{type=ThisT,ref=ThisRef},N) -spec setString(This, N, S) -> 'ok' when This::wxControlWithItems(), N::integer(), S::unicode:chardata(). setString(#wx_ref{type=ThisT,ref=ThisRef},N,S) - when is_integer(N),is_list(S) -> + when is_integer(N),?is_chardata(S) -> ?CLASS(ThisT,wxControlWithItems), S_UC = unicode:characters_to_binary([S,0]), wxe_util:cast(?wxControlWithItems_SetString, @@ -266,7 +266,7 @@ setString(#wx_ref{type=ThisT,ref=ThisRef},N,S) -spec setStringSelection(This, S) -> boolean() when This::wxControlWithItems(), S::unicode:chardata(). setStringSelection(#wx_ref{type=ThisT,ref=ThisRef},S) - when is_list(S) -> + when ?is_chardata(S) -> ?CLASS(ThisT,wxControlWithItems), S_UC = unicode:characters_to_binary([S,0]), wxe_util:call(?wxControlWithItems_SetStringSelection, @@ -595,6 +595,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxDC.erl b/lib/wx/src/gen/wxDC.erl index ad7a4251ec..16bfcc3463 100644 --- a/lib/wx/src/gen/wxDC.erl +++ b/lib/wx/src/gen/wxDC.erl @@ -253,7 +253,7 @@ drawIcon(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=IconT,ref=IconRef},{PtX,Pt This::wxDC(), Text::unicode:chardata(), Rect::{X::integer(), Y::integer(), W::integer(), H::integer()}. drawLabel(This,Text,Rect={RectX,RectY,RectW,RectH}) - when is_record(This, wx_ref),is_list(Text),is_integer(RectX),is_integer(RectY),is_integer(RectW),is_integer(RectH) -> + when is_record(This, wx_ref),?is_chardata(Text),is_integer(RectX),is_integer(RectY),is_integer(RectW),is_integer(RectH) -> drawLabel(This,Text,Rect, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxdc.html#wxdcdrawlabel">external documentation</a>. @@ -262,7 +262,7 @@ drawLabel(This,Text,Rect={RectX,RectY,RectW,RectH}) Option :: {'alignment', integer()} | {'indexAccel', integer()}. drawLabel(#wx_ref{type=ThisT,ref=ThisRef},Text,{RectX,RectY,RectW,RectH}, Options) - when is_list(Text),is_integer(RectX),is_integer(RectY),is_integer(RectW),is_integer(RectH),is_list(Options) -> + when ?is_chardata(Text),is_integer(RectX),is_integer(RectY),is_integer(RectW),is_integer(RectH),is_list(Options) -> ?CLASS(ThisT,wxDC), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({alignment, Alignment}, Acc) -> [<<1:32/?UI,Alignment:32/?UI>>|Acc]; @@ -363,7 +363,7 @@ drawRectangle(#wx_ref{type=ThisT,ref=ThisRef},{PtX,PtY},{SzW,SzH}) -spec drawRotatedText(This, Text, Pt, Angle) -> 'ok' when This::wxDC(), Text::unicode:chardata(), Pt::{X::integer(), Y::integer()}, Angle::number(). drawRotatedText(#wx_ref{type=ThisT,ref=ThisRef},Text,{PtX,PtY},Angle) - when is_list(Text),is_integer(PtX),is_integer(PtY),is_number(Angle) -> + when ?is_chardata(Text),is_integer(PtX),is_integer(PtY),is_number(Angle) -> ?CLASS(ThisT,wxDC), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxDC_DrawRotatedText, @@ -391,7 +391,7 @@ drawRoundedRectangle(#wx_ref{type=ThisT,ref=ThisRef},{PtX,PtY},{SzW,SzH},Radius) -spec drawText(This, Text, Pt) -> 'ok' when This::wxDC(), Text::unicode:chardata(), Pt::{X::integer(), Y::integer()}. drawText(#wx_ref{type=ThisT,ref=ThisRef},Text,{PtX,PtY}) - when is_list(Text),is_integer(PtX),is_integer(PtY) -> + when ?is_chardata(Text),is_integer(PtX),is_integer(PtY) -> ?CLASS(ThisT,wxDC), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxDC_DrawText, @@ -521,7 +521,7 @@ getMapMode(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec getMultiLineTextExtent(This, String) -> {W::integer(), H::integer()} when This::wxDC(), String::unicode:chardata(). getMultiLineTextExtent(#wx_ref{type=ThisT,ref=ThisRef},String) - when is_list(String) -> + when ?is_chardata(String) -> ?CLASS(ThisT,wxDC), String_UC = unicode:characters_to_binary([String,0]), wxe_util:call(?wxDC_GetMultiLineTextExtent_1, @@ -532,7 +532,7 @@ getMultiLineTextExtent(#wx_ref{type=ThisT,ref=ThisRef},String) This::wxDC(), String::unicode:chardata(), Option :: {'font', wxFont:wxFont()}. getMultiLineTextExtent(#wx_ref{type=ThisT,ref=ThisRef},String, Options) - when is_list(String),is_list(Options) -> + when ?is_chardata(String),is_list(Options) -> ?CLASS(ThisT,wxDC), String_UC = unicode:characters_to_binary([String,0]), MOpts = fun({font, #wx_ref{type=FontT,ref=FontRef}}, Acc) -> ?CLASS(FontT,wxFont),[<<1:32/?UI,FontRef:32/?UI>>|Acc]; @@ -546,7 +546,7 @@ getMultiLineTextExtent(#wx_ref{type=ThisT,ref=ThisRef},String, Options) Result ::{Res ::boolean(), Widths::[integer()]}, This::wxDC(), Text::unicode:chardata(). getPartialTextExtents(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxDC), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxDC_GetPartialTextExtents, @@ -606,7 +606,7 @@ getTextBackground(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec getTextExtent(This, String) -> {W::integer(), H::integer()} when This::wxDC(), String::unicode:chardata(). getTextExtent(#wx_ref{type=ThisT,ref=ThisRef},String) - when is_list(String) -> + when ?is_chardata(String) -> ?CLASS(ThisT,wxDC), String_UC = unicode:characters_to_binary([String,0]), wxe_util:call(?wxDC_GetTextExtent_1, @@ -618,7 +618,7 @@ getTextExtent(#wx_ref{type=ThisT,ref=ThisRef},String) This::wxDC(), String::unicode:chardata(), Option :: {'theFont', wxFont:wxFont()}. getTextExtent(#wx_ref{type=ThisT,ref=ThisRef},String, Options) - when is_list(String),is_list(Options) -> + when ?is_chardata(String),is_list(Options) -> ?CLASS(ThisT,wxDC), String_UC = unicode:characters_to_binary([String,0]), MOpts = fun({theFont, #wx_ref{type=TheFontT,ref=TheFontRef}}, Acc) -> ?CLASS(TheFontT,wxFont),[<<1:32/?UI,TheFontRef:32/?UI>>|Acc]; @@ -929,7 +929,7 @@ setUserScale(#wx_ref{type=ThisT,ref=ThisRef},X,Y) -spec startDoc(This, Message) -> boolean() when This::wxDC(), Message::unicode:chardata(). startDoc(#wx_ref{type=ThisT,ref=ThisRef},Message) - when is_list(Message) -> + when ?is_chardata(Message) -> ?CLASS(ThisT,wxDC), Message_UC = unicode:characters_to_binary([Message,0]), wxe_util:call(?wxDC_StartDoc, diff --git a/lib/wx/src/gen/wxDatePickerCtrl.erl b/lib/wx/src/gen/wxDatePickerCtrl.erl index 1b306a498a..8f1af26cbc 100644 --- a/lib/wx/src/gen/wxDatePickerCtrl.erl +++ b/lib/wx/src/gen/wxDatePickerCtrl.erl @@ -39,17 +39,18 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getInternalMargin/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1, - getParent/1,getPickerCtrlProportion/1,getPosition/1,getRect/1,getScreenPosition/1, - getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, - getSize/1,getSizer/1,getTextCtrl/1,getTextCtrlProportion/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getInternalMargin/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPickerCtrlProportion/1, + getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextCtrl/1, + getTextCtrlProportion/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isPickerCtrlGrowable/1, isRetained/1,isShown/1,isTextCtrlGrowable/1,isTopLevel/1,layout/1, @@ -513,6 +514,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxDialog.erl b/lib/wx/src/gen/wxDialog.erl index 9f98644828..178efde5c6 100644 --- a/lib/wx/src/gen/wxDialog.erl +++ b/lib/wx/src/gen/wxDialog.erl @@ -41,32 +41,32 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1, - getParent/1,getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1, - getScrollPos/2,getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1, - getTextExtent/2,getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1, - getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1, - hasScrollbar/2,hasTransparentBackground/1,hide/1,iconize/1,iconize/2, - inheritAttributes/1,initDialog/1,invalidateBestSize/1,isActive/1, - isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3,isExposed/5, - isFullScreen/1,isIconized/1,isMaximized/1,isRetained/1,isShown/1,isTopLevel/1, - layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,maximize/1, - maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,requestUserAttention/1,requestUserAttention/2,screenToClient/1, - screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, - setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, - setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, - setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, - setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, - setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, + getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, + getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, + getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, + hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, + isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, + isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isRetained/1, + isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, + makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, + moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, + popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, + raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, + removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, + screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, + scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2, + setBackgroundStyle/2,setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2, + setCursor/2,setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1, + setFocusFromKbd/1,setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2, + setIcons/2,setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setScrollPos/3, setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, @@ -97,7 +97,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(). new(Parent,Id,Title) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> new(Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxdialog.html#wxdialogwxdialog">external documentation</a>. @@ -107,7 +107,7 @@ new(Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -123,7 +123,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) This::wxDialog(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(). create(This,Parent,Id,Title) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> create(This,Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxdialog.html#wxdialogcreate">external documentation</a>. @@ -133,7 +133,7 @@ create(This,Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ThisT,wxDialog), ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), @@ -614,6 +614,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxDirDialog.erl b/lib/wx/src/gen/wxDirDialog.erl index 1b6b9dba71..c942116fd9 100644 --- a/lib/wx/src/gen/wxDirDialog.erl +++ b/lib/wx/src/gen/wxDirDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -137,7 +137,7 @@ getMessage(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setMessage(This, Message) -> 'ok' when This::wxDirDialog(), Message::unicode:chardata(). setMessage(#wx_ref{type=ThisT,ref=ThisRef},Message) - when is_list(Message) -> + when ?is_chardata(Message) -> ?CLASS(ThisT,wxDirDialog), Message_UC = unicode:characters_to_binary([Message,0]), wxe_util:cast(?wxDirDialog_SetMessage, @@ -147,7 +147,7 @@ setMessage(#wx_ref{type=ThisT,ref=ThisRef},Message) -spec setPath(This, Path) -> 'ok' when This::wxDirDialog(), Path::unicode:chardata(). setPath(#wx_ref{type=ThisT,ref=ThisRef},Path) - when is_list(Path) -> + when ?is_chardata(Path) -> ?CLASS(ThisT,wxDirDialog), Path_UC = unicode:characters_to_binary([Path,0]), wxe_util:cast(?wxDirDialog_SetPath, @@ -547,6 +547,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxDirPickerCtrl.erl b/lib/wx/src/gen/wxDirPickerCtrl.erl index 3bedeb7f54..014e90c120 100644 --- a/lib/wx/src/gen/wxDirPickerCtrl.erl +++ b/lib/wx/src/gen/wxDirPickerCtrl.erl @@ -39,17 +39,18 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getInternalMargin/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1, - getParent/1,getPickerCtrlProportion/1,getPosition/1,getRect/1,getScreenPosition/1, - getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, - getSize/1,getSizer/1,getTextCtrl/1,getTextCtrlProportion/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getInternalMargin/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPickerCtrlProportion/1, + getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextCtrl/1, + getTextCtrlProportion/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isPickerCtrlGrowable/1, isRetained/1,isShown/1,isTextCtrlGrowable/1,isTopLevel/1,layout/1, @@ -166,7 +167,7 @@ getPath(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setPath(This, Str) -> 'ok' when This::wxDirPickerCtrl(), Str::unicode:chardata(). setPath(#wx_ref{type=ThisT,ref=ThisRef},Str) - when is_list(Str) -> + when ?is_chardata(Str) -> ?CLASS(ThisT,wxDirPickerCtrl), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxDirPickerCtrl_SetPath, @@ -530,6 +531,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxDropFilesEvent.erl b/lib/wx/src/gen/wxDropFilesEvent.erl new file mode 100644 index 0000000000..d28dcd1f7a --- /dev/null +++ b/lib/wx/src/gen/wxDropFilesEvent.erl @@ -0,0 +1,89 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% This file is generated DO NOT EDIT + +%% @doc See external documentation: <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxdropfilesevent.html">wxDropFilesEvent</a>. +%% <dl><dt>Use {@link wxEvtHandler:connect/3.} with EventType:</dt> +%% <dd><em>drop_files</em></dd></dl> +%% See also the message variant {@link wxEvtHandler:wxDropFiles(). #wxDropFiles{}} event record type. +%% +%% <p>This class is derived (and can use functions) from: +%% <br />{@link wxEvent} +%% </p> +%% @type wxDropFilesEvent(). An object reference, The representation is internal +%% and can be changed without notice. It can't be used for comparsion +%% stored on disc or distributed for use on other nodes. + +-module(wxDropFilesEvent). +-include("wxe.hrl"). +-export([getFiles/1,getNumberOfFiles/1,getPosition/1]). + +%% inherited exports +-export([getId/1,getSkipped/1,getTimestamp/1,isCommandEvent/1,parent_class/1, + resumePropagation/2,shouldPropagate/1,skip/1,skip/2,stopPropagation/1]). + +-export_type([wxDropFilesEvent/0]). +%% @hidden +parent_class(wxEvent) -> true; +parent_class(_Class) -> erlang:error({badtype, ?MODULE}). + +-type wxDropFilesEvent() :: wx:wx_object(). +%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxdropfilesevent.html#wxdropfileseventgetposition">external documentation</a>. +-spec getPosition(This) -> {X::integer(), Y::integer()} when + This::wxDropFilesEvent(). +getPosition(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxDropFilesEvent), + wxe_util:call(?wxDropFilesEvent_GetPosition, + <<ThisRef:32/?UI>>). + +%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxdropfilesevent.html#wxdropfileseventgetnumberoffiles">external documentation</a>. +-spec getNumberOfFiles(This) -> integer() when + This::wxDropFilesEvent(). +getNumberOfFiles(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxDropFilesEvent), + wxe_util:call(?wxDropFilesEvent_GetNumberOfFiles, + <<ThisRef:32/?UI>>). + +%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxdropfilesevent.html#wxdropfileseventgetfiles">external documentation</a>. +-spec getFiles(This) -> [unicode:charlist()] when + This::wxDropFilesEvent(). +getFiles(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxDropFilesEvent), + wxe_util:call(?wxDropFilesEvent_GetFiles, + <<ThisRef:32/?UI>>). + + %% From wxEvent +%% @hidden +stopPropagation(This) -> wxEvent:stopPropagation(This). +%% @hidden +skip(This, Options) -> wxEvent:skip(This, Options). +%% @hidden +skip(This) -> wxEvent:skip(This). +%% @hidden +shouldPropagate(This) -> wxEvent:shouldPropagate(This). +%% @hidden +resumePropagation(This,PropagationLevel) -> wxEvent:resumePropagation(This,PropagationLevel). +%% @hidden +isCommandEvent(This) -> wxEvent:isCommandEvent(This). +%% @hidden +getTimestamp(This) -> wxEvent:getTimestamp(This). +%% @hidden +getSkipped(This) -> wxEvent:getSkipped(This). +%% @hidden +getId(This) -> wxEvent:getId(This). diff --git a/lib/wx/src/gen/wxFileDataObject.erl b/lib/wx/src/gen/wxFileDataObject.erl index 06d8ceb9cd..d4e9198225 100644 --- a/lib/wx/src/gen/wxFileDataObject.erl +++ b/lib/wx/src/gen/wxFileDataObject.erl @@ -49,7 +49,7 @@ new() -> -spec addFile(This, Filename) -> 'ok' when This::wxFileDataObject(), Filename::unicode:chardata(). addFile(#wx_ref{type=ThisT,ref=ThisRef},Filename) - when is_list(Filename) -> + when ?is_chardata(Filename) -> ?CLASS(ThisT,wxFileDataObject), Filename_UC = unicode:characters_to_binary([Filename,0]), wxe_util:cast(?wxFileDataObject_AddFile, diff --git a/lib/wx/src/gen/wxFileDialog.erl b/lib/wx/src/gen/wxFileDialog.erl index 070fce3a39..de5d436c11 100644 --- a/lib/wx/src/gen/wxFileDialog.erl +++ b/lib/wx/src/gen/wxFileDialog.erl @@ -42,40 +42,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -191,7 +191,7 @@ getWildcard(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setDirectory(This, Dir) -> 'ok' when This::wxFileDialog(), Dir::unicode:chardata(). setDirectory(#wx_ref{type=ThisT,ref=ThisRef},Dir) - when is_list(Dir) -> + when ?is_chardata(Dir) -> ?CLASS(ThisT,wxFileDialog), Dir_UC = unicode:characters_to_binary([Dir,0]), wxe_util:cast(?wxFileDialog_SetDirectory, @@ -201,7 +201,7 @@ setDirectory(#wx_ref{type=ThisT,ref=ThisRef},Dir) -spec setFilename(This, Name) -> 'ok' when This::wxFileDialog(), Name::unicode:chardata(). setFilename(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxFileDialog), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:cast(?wxFileDialog_SetFilename, @@ -220,7 +220,7 @@ setFilterIndex(#wx_ref{type=ThisT,ref=ThisRef},FilterIndex) -spec setMessage(This, Message) -> 'ok' when This::wxFileDialog(), Message::unicode:chardata(). setMessage(#wx_ref{type=ThisT,ref=ThisRef},Message) - when is_list(Message) -> + when ?is_chardata(Message) -> ?CLASS(ThisT,wxFileDialog), Message_UC = unicode:characters_to_binary([Message,0]), wxe_util:cast(?wxFileDialog_SetMessage, @@ -230,7 +230,7 @@ setMessage(#wx_ref{type=ThisT,ref=ThisRef},Message) -spec setPath(This, Path) -> 'ok' when This::wxFileDialog(), Path::unicode:chardata(). setPath(#wx_ref{type=ThisT,ref=ThisRef},Path) - when is_list(Path) -> + when ?is_chardata(Path) -> ?CLASS(ThisT,wxFileDialog), Path_UC = unicode:characters_to_binary([Path,0]), wxe_util:cast(?wxFileDialog_SetPath, @@ -240,7 +240,7 @@ setPath(#wx_ref{type=ThisT,ref=ThisRef},Path) -spec setWildcard(This, WildCard) -> 'ok' when This::wxFileDialog(), WildCard::unicode:chardata(). setWildcard(#wx_ref{type=ThisT,ref=ThisRef},WildCard) - when is_list(WildCard) -> + when ?is_chardata(WildCard) -> ?CLASS(ThisT,wxFileDialog), WildCard_UC = unicode:characters_to_binary([WildCard,0]), wxe_util:cast(?wxFileDialog_SetWildcard, @@ -640,6 +640,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxFilePickerCtrl.erl b/lib/wx/src/gen/wxFilePickerCtrl.erl index 396403dc22..24941ad87a 100644 --- a/lib/wx/src/gen/wxFilePickerCtrl.erl +++ b/lib/wx/src/gen/wxFilePickerCtrl.erl @@ -39,17 +39,18 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getInternalMargin/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1, - getParent/1,getPickerCtrlProportion/1,getPosition/1,getRect/1,getScreenPosition/1, - getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, - getSize/1,getSizer/1,getTextCtrl/1,getTextCtrlProportion/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getInternalMargin/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPickerCtrlProportion/1, + getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextCtrl/1, + getTextCtrlProportion/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isPickerCtrlGrowable/1, isRetained/1,isShown/1,isTextCtrlGrowable/1,isTopLevel/1,layout/1, @@ -170,7 +171,7 @@ getPath(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setPath(This, Str) -> 'ok' when This::wxFilePickerCtrl(), Str::unicode:chardata(). setPath(#wx_ref{type=ThisT,ref=ThisRef},Str) - when is_list(Str) -> + when ?is_chardata(Str) -> ?CLASS(ThisT,wxFilePickerCtrl), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxFilePickerCtrl_SetPath, @@ -534,6 +535,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxFindReplaceData.erl b/lib/wx/src/gen/wxFindReplaceData.erl index 9b4b910f7e..388bf5f238 100644 --- a/lib/wx/src/gen/wxFindReplaceData.erl +++ b/lib/wx/src/gen/wxFindReplaceData.erl @@ -87,7 +87,7 @@ setFlags(#wx_ref{type=ThisT,ref=ThisRef},Flags) -spec setFindString(This, Str) -> 'ok' when This::wxFindReplaceData(), Str::unicode:chardata(). setFindString(#wx_ref{type=ThisT,ref=ThisRef},Str) - when is_list(Str) -> + when ?is_chardata(Str) -> ?CLASS(ThisT,wxFindReplaceData), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxFindReplaceData_SetFindString, @@ -97,7 +97,7 @@ setFindString(#wx_ref{type=ThisT,ref=ThisRef},Str) -spec setReplaceString(This, Str) -> 'ok' when This::wxFindReplaceData(), Str::unicode:chardata(). setReplaceString(#wx_ref{type=ThisT,ref=ThisRef},Str) - when is_list(Str) -> + when ?is_chardata(Str) -> ?CLASS(ThisT,wxFindReplaceData), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxFindReplaceData_SetReplaceString, diff --git a/lib/wx/src/gen/wxFindReplaceDialog.erl b/lib/wx/src/gen/wxFindReplaceDialog.erl index a34fc329ae..b5cd3350d2 100644 --- a/lib/wx/src/gen/wxFindReplaceDialog.erl +++ b/lib/wx/src/gen/wxFindReplaceDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -99,7 +99,7 @@ new() -> Parent::wxWindow:wxWindow(), Data::wxFindReplaceData:wxFindReplaceData(), Title::unicode:chardata(). new(Parent,Data,Title) - when is_record(Parent, wx_ref),is_record(Data, wx_ref),is_list(Title) -> + when is_record(Parent, wx_ref),is_record(Data, wx_ref),?is_chardata(Title) -> new(Parent,Data,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxfindreplacedialog.html#wxfindreplacedialogwxfindreplacedialog">external documentation</a>. @@ -107,7 +107,7 @@ new(Parent,Data,Title) Parent::wxWindow:wxWindow(), Data::wxFindReplaceData:wxFindReplaceData(), Title::unicode:chardata(), Option :: {'style', integer()}. new(#wx_ref{type=ParentT,ref=ParentRef},#wx_ref{type=DataT,ref=DataRef},Title, Options) - when is_list(Title),is_list(Options) -> + when ?is_chardata(Title),is_list(Options) -> ?CLASS(ParentT,wxWindow), ?CLASS(DataT,wxFindReplaceData), Title_UC = unicode:characters_to_binary([Title,0]), @@ -122,7 +122,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},#wx_ref{type=DataT,ref=DataRef},Title, O This::wxFindReplaceDialog(), Parent::wxWindow:wxWindow(), Data::wxFindReplaceData:wxFindReplaceData(), Title::unicode:chardata(). create(This,Parent,Data,Title) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_record(Data, wx_ref),is_list(Title) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_record(Data, wx_ref),?is_chardata(Title) -> create(This,Parent,Data,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxfindreplacedialog.html#wxfindreplacedialogcreate">external documentation</a>. @@ -130,7 +130,7 @@ create(This,Parent,Data,Title) This::wxFindReplaceDialog(), Parent::wxWindow:wxWindow(), Data::wxFindReplaceData:wxFindReplaceData(), Title::unicode:chardata(), Option :: {'style', integer()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},#wx_ref{type=DataT,ref=DataRef},Title, Options) - when is_list(Title),is_list(Options) -> + when ?is_chardata(Title),is_list(Options) -> ?CLASS(ThisT,wxFindReplaceDialog), ?CLASS(ParentT,wxWindow), ?CLASS(DataT,wxFindReplaceData), @@ -543,6 +543,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxFont.erl b/lib/wx/src/gen/wxFont.erl index 56e6e96b6d..fb0ba8b505 100644 --- a/lib/wx/src/gen/wxFont.erl +++ b/lib/wx/src/gen/wxFont.erl @@ -49,7 +49,7 @@ new() -> -spec new(Fontname) -> wxFont() when Fontname::unicode:chardata(). new(Fontname) - when is_list(Fontname) -> + when ?is_chardata(Fontname) -> Fontname_UC = unicode:characters_to_binary([Fontname,0]), wxe_util:construct(?wxFont_new_1, <<(byte_size(Fontname_UC)):32/?UI,(Fontname_UC)/binary, 0:(((8- ((4+byte_size(Fontname_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -183,7 +183,7 @@ setDefaultEncoding(Encoding) -spec setFaceName(This, FaceName) -> boolean() when This::wxFont(), FaceName::unicode:chardata(). setFaceName(#wx_ref{type=ThisT,ref=ThisRef},FaceName) - when is_list(FaceName) -> + when ?is_chardata(FaceName) -> ?CLASS(ThisT,wxFont), FaceName_UC = unicode:characters_to_binary([FaceName,0]), wxe_util:call(?wxFont_SetFaceName, diff --git a/lib/wx/src/gen/wxFontDialog.erl b/lib/wx/src/gen/wxFontDialog.erl index 3e6a913973..c0ddb9439e 100644 --- a/lib/wx/src/gen/wxFontDialog.erl +++ b/lib/wx/src/gen/wxFontDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -515,6 +515,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxFontPickerCtrl.erl b/lib/wx/src/gen/wxFontPickerCtrl.erl index 0356f795eb..f87dcd2344 100644 --- a/lib/wx/src/gen/wxFontPickerCtrl.erl +++ b/lib/wx/src/gen/wxFontPickerCtrl.erl @@ -40,17 +40,18 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getInternalMargin/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1, - getParent/1,getPickerCtrlProportion/1,getPosition/1,getRect/1,getScreenPosition/1, - getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, - getSize/1,getSizer/1,getTextCtrl/1,getTextCtrlProportion/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getInternalMargin/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPickerCtrlProportion/1, + getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextCtrl/1, + getTextCtrlProportion/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTextCtrl/1,hasTransparentBackground/1, hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isPickerCtrlGrowable/1, isRetained/1,isShown/1,isTextCtrlGrowable/1,isTopLevel/1,layout/1, @@ -543,6 +544,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxFrame.erl b/lib/wx/src/gen/wxFrame.erl index 93aad5b235..3e33f650d1 100644 --- a/lib/wx/src/gen/wxFrame.erl +++ b/lib/wx/src/gen/wxFrame.erl @@ -43,32 +43,32 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1, - getParent/1,getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1, - getScrollPos/2,getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1, - getTextExtent/2,getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1, - getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1, - hasScrollbar/2,hasTransparentBackground/1,hide/1,iconize/1,iconize/2, - inheritAttributes/1,initDialog/1,invalidateBestSize/1,isActive/1, - isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3,isExposed/5, - isFullScreen/1,isIconized/1,isMaximized/1,isRetained/1,isShown/1,isTopLevel/1, - layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,maximize/1, - maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,requestUserAttention/1,requestUserAttention/2,screenToClient/1, - screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, - setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, - setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, - setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, - setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, - setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, + getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, + getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, + getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, + hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, + isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, + isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isRetained/1, + isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, + makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, + moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, + popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, + raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, + removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, + screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, + scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2, + setBackgroundStyle/2,setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2, + setCursor/2,setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1, + setFocusFromKbd/1,setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2, + setIcons/2,setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setScrollPos/3, setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, @@ -99,7 +99,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(). new(Parent,Id,Title) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> new(Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxframe.html#wxframewxframe">external documentation</a>. @@ -109,7 +109,7 @@ new(Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -125,7 +125,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) This::wxFrame(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(). create(This,Parent,Id,Title) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> create(This,Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxframe.html#wxframecreate">external documentation</a>. @@ -135,7 +135,7 @@ create(This,Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ThisT,wxFrame), ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), @@ -284,7 +284,7 @@ setStatusBarPane(#wx_ref{type=ThisT,ref=ThisRef},N) This::wxFrame(), Text::unicode:chardata(). setStatusText(This,Text) - when is_record(This, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),?is_chardata(Text) -> setStatusText(This,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxframe.html#wxframesetstatustext">external documentation</a>. @@ -292,7 +292,7 @@ setStatusText(This,Text) This::wxFrame(), Text::unicode:chardata(), Option :: {'number', integer()}. setStatusText(#wx_ref{type=ThisT,ref=ThisRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxFrame), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({number, Number}, Acc) -> [<<1:32/?UI,Number:32/?UI>>|Acc]; @@ -695,6 +695,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxGLCanvas.erl b/lib/wx/src/gen/wxGLCanvas.erl index 2007047bd3..b31488de4c 100644 --- a/lib/wx/src/gen/wxGLCanvas.erl +++ b/lib/wx/src/gen/wxGLCanvas.erl @@ -37,29 +37,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -514,6 +514,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxGauge.erl b/lib/wx/src/gen/wxGauge.erl index fa2e7618e8..a66b98d110 100644 --- a/lib/wx/src/gen/wxGauge.erl +++ b/lib/wx/src/gen/wxGauge.erl @@ -39,29 +39,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -520,6 +520,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxGenericDirCtrl.erl b/lib/wx/src/gen/wxGenericDirCtrl.erl index 3ea99c682d..3c13e09359 100644 --- a/lib/wx/src/gen/wxGenericDirCtrl.erl +++ b/lib/wx/src/gen/wxGenericDirCtrl.erl @@ -41,29 +41,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -175,7 +175,7 @@ collapseTree(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec expandPath(This, Path) -> boolean() when This::wxGenericDirCtrl(), Path::unicode:chardata(). expandPath(#wx_ref{type=ThisT,ref=ThisRef},Path) - when is_list(Path) -> + when ?is_chardata(Path) -> ?CLASS(ThisT,wxGenericDirCtrl), Path_UC = unicode:characters_to_binary([Path,0]), wxe_util:call(?wxGenericDirCtrl_ExpandPath, @@ -249,7 +249,7 @@ reCreateTree(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setDefaultPath(This, Path) -> 'ok' when This::wxGenericDirCtrl(), Path::unicode:chardata(). setDefaultPath(#wx_ref{type=ThisT,ref=ThisRef},Path) - when is_list(Path) -> + when ?is_chardata(Path) -> ?CLASS(ThisT,wxGenericDirCtrl), Path_UC = unicode:characters_to_binary([Path,0]), wxe_util:cast(?wxGenericDirCtrl_SetDefaultPath, @@ -259,7 +259,7 @@ setDefaultPath(#wx_ref{type=ThisT,ref=ThisRef},Path) -spec setFilter(This, Filter) -> 'ok' when This::wxGenericDirCtrl(), Filter::unicode:chardata(). setFilter(#wx_ref{type=ThisT,ref=ThisRef},Filter) - when is_list(Filter) -> + when ?is_chardata(Filter) -> ?CLASS(ThisT,wxGenericDirCtrl), Filter_UC = unicode:characters_to_binary([Filter,0]), wxe_util:cast(?wxGenericDirCtrl_SetFilter, @@ -278,7 +278,7 @@ setFilterIndex(#wx_ref{type=ThisT,ref=ThisRef},N) -spec setPath(This, Path) -> 'ok' when This::wxGenericDirCtrl(), Path::unicode:chardata(). setPath(#wx_ref{type=ThisT,ref=ThisRef},Path) - when is_list(Path) -> + when ?is_chardata(Path) -> ?CLASS(ThisT,wxGenericDirCtrl), Path_UC = unicode:characters_to_binary([Path,0]), wxe_util:cast(?wxGenericDirCtrl_SetPath, @@ -613,6 +613,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxGraphicsContext.erl b/lib/wx/src/gen/wxGraphicsContext.erl index 0aa2119210..2d0271ac48 100644 --- a/lib/wx/src/gen/wxGraphicsContext.erl +++ b/lib/wx/src/gen/wxGraphicsContext.erl @@ -287,7 +287,7 @@ drawRoundedRectangle(#wx_ref{type=ThisT,ref=ThisRef},X,Y,W,H,Radius) -spec drawText(This, Str, X, Y) -> 'ok' when This::wxGraphicsContext(), Str::unicode:chardata(), X::number(), Y::number(). drawText(#wx_ref{type=ThisT,ref=ThisRef},Str,X,Y) - when is_list(Str),is_number(X),is_number(Y) -> + when ?is_chardata(Str),is_number(X),is_number(Y) -> ?CLASS(ThisT,wxGraphicsContext), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxGraphicsContext_DrawText_3, @@ -303,13 +303,13 @@ drawText(#wx_ref{type=ThisT,ref=ThisRef},Str,X,Y) (This, Str, X, Y, BackgroundBrush) -> 'ok' when This::wxGraphicsContext(), Str::unicode:chardata(), X::number(), Y::number(), BackgroundBrush::wxGraphicsBrush:wxGraphicsBrush(). drawText(#wx_ref{type=ThisT,ref=ThisRef},Str,X,Y,Angle) - when is_list(Str),is_number(X),is_number(Y),is_number(Angle) -> + when ?is_chardata(Str),is_number(X),is_number(Y),is_number(Angle) -> ?CLASS(ThisT,wxGraphicsContext), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxGraphicsContext_DrawText_4_0, <<ThisRef:32/?UI,(byte_size(Str_UC)):32/?UI,(Str_UC)/binary, 0:(((8- ((0+byte_size(Str_UC)) band 16#7)) band 16#7))/unit:8,X:64/?F,Y:64/?F,Angle:64/?F>>); drawText(#wx_ref{type=ThisT,ref=ThisRef},Str,X,Y,#wx_ref{type=BackgroundBrushT,ref=BackgroundBrushRef}) - when is_list(Str),is_number(X),is_number(Y) -> + when ?is_chardata(Str),is_number(X),is_number(Y) -> ?CLASS(ThisT,wxGraphicsContext), Str_UC = unicode:characters_to_binary([Str,0]), ?CLASS(BackgroundBrushT,wxGraphicsBrush), @@ -320,7 +320,7 @@ drawText(#wx_ref{type=ThisT,ref=ThisRef},Str,X,Y,#wx_ref{type=BackgroundBrushT,r -spec drawText(This, Str, X, Y, Angle, BackgroundBrush) -> 'ok' when This::wxGraphicsContext(), Str::unicode:chardata(), X::number(), Y::number(), Angle::number(), BackgroundBrush::wxGraphicsBrush:wxGraphicsBrush(). drawText(#wx_ref{type=ThisT,ref=ThisRef},Str,X,Y,Angle,#wx_ref{type=BackgroundBrushT,ref=BackgroundBrushRef}) - when is_list(Str),is_number(X),is_number(Y),is_number(Angle) -> + when ?is_chardata(Str),is_number(X),is_number(Y),is_number(Angle) -> ?CLASS(ThisT,wxGraphicsContext), Str_UC = unicode:characters_to_binary([Str,0]), ?CLASS(BackgroundBrushT,wxGraphicsBrush), @@ -363,7 +363,7 @@ strokePath(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PathT,ref=PathRef}) -> -spec getPartialTextExtents(This, Text) -> [number()] when This::wxGraphicsContext(), Text::unicode:chardata(). getPartialTextExtents(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxGraphicsContext), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxGraphicsContext_GetPartialTextExtents, @@ -374,7 +374,7 @@ getPartialTextExtents(#wx_ref{type=ThisT,ref=ThisRef},Text) Result ::{Width::number(), Height::number(), Descent::number(), ExternalLeading::number()}, This::wxGraphicsContext(), Text::unicode:chardata(). getTextExtent(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxGraphicsContext), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxGraphicsContext_GetTextExtent, diff --git a/lib/wx/src/gen/wxGrid.erl b/lib/wx/src/gen/wxGrid.erl index a1533cbd9f..0cdb37e9e4 100644 --- a/lib/wx/src/gen/wxGrid.erl +++ b/lib/wx/src/gen/wxGrid.erl @@ -91,10 +91,10 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - doPrepareDC/2,enable/1,enable/2,enableScrolling/3,findWindow/2,fitInside/1, - freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, - getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, - getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + doPrepareDC/2,dragAcceptFiles/2,enable/1,enable/2,enableScrolling/3, + findWindow/2,fitInside/1,freeze/1,getAcceleratorTable/1,getBackgroundColour/1, + getBackgroundStyle/1,getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1, + getChildren/1,getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, @@ -851,7 +851,7 @@ getDefaultEditorForCell(#wx_ref{type=ThisT,ref=ThisRef},Row,Col) -spec getDefaultEditorForType(This, TypeName) -> wxGridCellEditor:wxGridCellEditor() when This::wxGrid(), TypeName::unicode:chardata(). getDefaultEditorForType(#wx_ref{type=ThisT,ref=ThisRef},TypeName) - when is_list(TypeName) -> + when ?is_chardata(TypeName) -> ?CLASS(ThisT,wxGrid), TypeName_UC = unicode:characters_to_binary([TypeName,0]), wxe_util:call(?wxGrid_GetDefaultEditorForType, @@ -878,7 +878,7 @@ getDefaultRendererForCell(#wx_ref{type=ThisT,ref=ThisRef},Row,Col) -spec getDefaultRendererForType(This, TypeName) -> wxGridCellRenderer:wxGridCellRenderer() when This::wxGrid(), TypeName::unicode:chardata(). getDefaultRendererForType(#wx_ref{type=ThisT,ref=ThisRef},TypeName) - when is_list(TypeName) -> + when ?is_chardata(TypeName) -> ?CLASS(ThisT,wxGrid), TypeName_UC = unicode:characters_to_binary([TypeName,0]), wxe_util:call(?wxGrid_GetDefaultRendererForType, @@ -1407,7 +1407,7 @@ movePageUp(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec registerDataType(This, TypeName, Renderer, Editor) -> 'ok' when This::wxGrid(), TypeName::unicode:chardata(), Renderer::wxGridCellRenderer:wxGridCellRenderer(), Editor::wxGridCellEditor:wxGridCellEditor(). registerDataType(#wx_ref{type=ThisT,ref=ThisRef},TypeName,#wx_ref{type=RendererT,ref=RendererRef},#wx_ref{type=EditorT,ref=EditorRef}) - when is_list(TypeName) -> + when ?is_chardata(TypeName) -> ?CLASS(ThisT,wxGrid), TypeName_UC = unicode:characters_to_binary([TypeName,0]), ?CLASS(RendererT,wxGridCellRenderer), @@ -1634,7 +1634,7 @@ setCellTextColour(#wx_ref{type=ThisT,ref=ThisRef},Val,Row,Col) -spec setCellValue(This, Coords, S) -> 'ok' when This::wxGrid(), Coords::{R::integer(), C::integer()}, S::unicode:chardata(). setCellValue(#wx_ref{type=ThisT,ref=ThisRef},{CoordsR,CoordsC},S) - when is_integer(CoordsR),is_integer(CoordsC),is_list(S) -> + when is_integer(CoordsR),is_integer(CoordsC),?is_chardata(S) -> ?CLASS(ThisT,wxGrid), S_UC = unicode:characters_to_binary([S,0]), wxe_util:cast(?wxGrid_SetCellValue_2, @@ -1650,13 +1650,13 @@ setCellValue(#wx_ref{type=ThisT,ref=ThisRef},{CoordsR,CoordsC},S) (This, Val, Row, Col) -> 'ok' when This::wxGrid(), Val::unicode:chardata(), Row::integer(), Col::integer(). setCellValue(#wx_ref{type=ThisT,ref=ThisRef},Row,Col,S) - when is_integer(Row),is_integer(Col),is_list(S) -> + when is_integer(Row),is_integer(Col),?is_chardata(S) -> ?CLASS(ThisT,wxGrid), S_UC = unicode:characters_to_binary([S,0]), wxe_util:cast(?wxGrid_SetCellValue_3_0, <<ThisRef:32/?UI,Row:32/?UI,Col:32/?UI,(byte_size(S_UC)):32/?UI,(S_UC)/binary, 0:(((8- ((0+byte_size(S_UC)) band 16#7)) band 16#7))/unit:8>>); setCellValue(#wx_ref{type=ThisT,ref=ThisRef},Val,Row,Col) - when is_list(Val),is_integer(Row),is_integer(Col) -> + when ?is_chardata(Val),is_integer(Row),is_integer(Col) -> ?CLASS(ThisT,wxGrid), Val_UC = unicode:characters_to_binary([Val,0]), wxe_util:cast(?wxGrid_SetCellValue_3_1, @@ -1717,7 +1717,7 @@ setColFormatFloat(#wx_ref{type=ThisT,ref=ThisRef},Col, Options) -spec setColFormatCustom(This, Col, TypeName) -> 'ok' when This::wxGrid(), Col::integer(), TypeName::unicode:chardata(). setColFormatCustom(#wx_ref{type=ThisT,ref=ThisRef},Col,TypeName) - when is_integer(Col),is_list(TypeName) -> + when is_integer(Col),?is_chardata(TypeName) -> ?CLASS(ThisT,wxGrid), TypeName_UC = unicode:characters_to_binary([TypeName,0]), wxe_util:cast(?wxGrid_SetColFormatCustom, @@ -1745,7 +1745,7 @@ setColLabelSize(#wx_ref{type=ThisT,ref=ThisRef},Height) -spec setColLabelValue(This, Col, Val) -> 'ok' when This::wxGrid(), Col::integer(), Val::unicode:chardata(). setColLabelValue(#wx_ref{type=ThisT,ref=ThisRef},Col,Val) - when is_integer(Col),is_list(Val) -> + when is_integer(Col),?is_chardata(Val) -> ?CLASS(ThisT,wxGrid), Val_UC = unicode:characters_to_binary([Val,0]), wxe_util:cast(?wxGrid_SetColLabelValue, @@ -1981,7 +1981,7 @@ setRowLabelSize(#wx_ref{type=ThisT,ref=ThisRef},Width) -spec setRowLabelValue(This, Row, Val) -> 'ok' when This::wxGrid(), Row::integer(), Val::unicode:chardata(). setRowLabelValue(#wx_ref{type=ThisT,ref=ThisRef},Row,Val) - when is_integer(Row),is_list(Val) -> + when is_integer(Row),?is_chardata(Val) -> ?CLASS(ThisT,wxGrid), Val_UC = unicode:characters_to_binary([Val,0]), wxe_util:cast(?wxGrid_SetRowLabelValue, @@ -2474,6 +2474,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxGridCellBoolEditor.erl b/lib/wx/src/gen/wxGridCellBoolEditor.erl index 1d949d54ff..59348f94f8 100644 --- a/lib/wx/src/gen/wxGridCellBoolEditor.erl +++ b/lib/wx/src/gen/wxGridCellBoolEditor.erl @@ -52,7 +52,7 @@ new() -> -spec isTrueValue(Value) -> boolean() when Value::unicode:chardata(). isTrueValue(Value) - when is_list(Value) -> + when ?is_chardata(Value) -> Value_UC = unicode:characters_to_binary([Value,0]), wxe_util:call(?wxGridCellBoolEditor_IsTrueValue, <<(byte_size(Value_UC)):32/?UI,(Value_UC)/binary, 0:(((8- ((4+byte_size(Value_UC)) band 16#7)) band 16#7))/unit:8>>). diff --git a/lib/wx/src/gen/wxGridCellChoiceEditor.erl b/lib/wx/src/gen/wxGridCellChoiceEditor.erl index d5487c3618..8f4a07a0bb 100644 --- a/lib/wx/src/gen/wxGridCellChoiceEditor.erl +++ b/lib/wx/src/gen/wxGridCellChoiceEditor.erl @@ -68,7 +68,7 @@ new(Choices, Options) -spec setParameters(This, Params) -> 'ok' when This::wxGridCellChoiceEditor(), Params::unicode:chardata(). setParameters(#wx_ref{type=ThisT,ref=ThisRef},Params) - when is_list(Params) -> + when ?is_chardata(Params) -> ?CLASS(ThisT,wxGridCellChoiceEditor), Params_UC = unicode:characters_to_binary([Params,0]), wxe_util:cast(?wxGridCellChoiceEditor_SetParameters, diff --git a/lib/wx/src/gen/wxGridCellFloatEditor.erl b/lib/wx/src/gen/wxGridCellFloatEditor.erl index 6e85469ecf..90b9542afc 100644 --- a/lib/wx/src/gen/wxGridCellFloatEditor.erl +++ b/lib/wx/src/gen/wxGridCellFloatEditor.erl @@ -65,7 +65,7 @@ new(Options) -spec setParameters(This, Params) -> 'ok' when This::wxGridCellFloatEditor(), Params::unicode:chardata(). setParameters(#wx_ref{type=ThisT,ref=ThisRef},Params) - when is_list(Params) -> + when ?is_chardata(Params) -> ?CLASS(ThisT,wxGridCellFloatEditor), Params_UC = unicode:characters_to_binary([Params,0]), wxe_util:cast(?wxGridCellFloatEditor_SetParameters, diff --git a/lib/wx/src/gen/wxGridCellFloatRenderer.erl b/lib/wx/src/gen/wxGridCellFloatRenderer.erl index ccb29902b3..72bdc6fc29 100644 --- a/lib/wx/src/gen/wxGridCellFloatRenderer.erl +++ b/lib/wx/src/gen/wxGridCellFloatRenderer.erl @@ -81,7 +81,7 @@ getWidth(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setParameters(This, Params) -> 'ok' when This::wxGridCellFloatRenderer(), Params::unicode:chardata(). setParameters(#wx_ref{type=ThisT,ref=ThisRef},Params) - when is_list(Params) -> + when ?is_chardata(Params) -> ?CLASS(ThisT,wxGridCellFloatRenderer), Params_UC = unicode:characters_to_binary([Params,0]), wxe_util:cast(?wxGridCellFloatRenderer_SetParameters, diff --git a/lib/wx/src/gen/wxGridCellNumberEditor.erl b/lib/wx/src/gen/wxGridCellNumberEditor.erl index 7a47024b2f..22f9a1839c 100644 --- a/lib/wx/src/gen/wxGridCellNumberEditor.erl +++ b/lib/wx/src/gen/wxGridCellNumberEditor.erl @@ -75,7 +75,7 @@ getValue(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setParameters(This, Params) -> 'ok' when This::wxGridCellNumberEditor(), Params::unicode:chardata(). setParameters(#wx_ref{type=ThisT,ref=ThisRef},Params) - when is_list(Params) -> + when ?is_chardata(Params) -> ?CLASS(ThisT,wxGridCellNumberEditor), Params_UC = unicode:characters_to_binary([Params,0]), wxe_util:cast(?wxGridCellNumberEditor_SetParameters, diff --git a/lib/wx/src/gen/wxGridCellTextEditor.erl b/lib/wx/src/gen/wxGridCellTextEditor.erl index 4ddb4a7028..39adda5d8b 100644 --- a/lib/wx/src/gen/wxGridCellTextEditor.erl +++ b/lib/wx/src/gen/wxGridCellTextEditor.erl @@ -52,7 +52,7 @@ new() -> -spec setParameters(This, Params) -> 'ok' when This::wxGridCellTextEditor(), Params::unicode:chardata(). setParameters(#wx_ref{type=ThisT,ref=ThisRef},Params) - when is_list(Params) -> + when ?is_chardata(Params) -> ?CLASS(ThisT,wxGridCellTextEditor), Params_UC = unicode:characters_to_binary([Params,0]), wxe_util:cast(?wxGridCellTextEditor_SetParameters, diff --git a/lib/wx/src/gen/wxHtmlEasyPrinting.erl b/lib/wx/src/gen/wxHtmlEasyPrinting.erl index a2cf46ed8d..dfb9dcfa1c 100644 --- a/lib/wx/src/gen/wxHtmlEasyPrinting.erl +++ b/lib/wx/src/gen/wxHtmlEasyPrinting.erl @@ -77,7 +77,7 @@ getPageSetupData(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec previewFile(This, Htmlfile) -> boolean() when This::wxHtmlEasyPrinting(), Htmlfile::unicode:chardata(). previewFile(#wx_ref{type=ThisT,ref=ThisRef},Htmlfile) - when is_list(Htmlfile) -> + when ?is_chardata(Htmlfile) -> ?CLASS(ThisT,wxHtmlEasyPrinting), Htmlfile_UC = unicode:characters_to_binary([Htmlfile,0]), wxe_util:call(?wxHtmlEasyPrinting_PreviewFile, @@ -88,7 +88,7 @@ previewFile(#wx_ref{type=ThisT,ref=ThisRef},Htmlfile) This::wxHtmlEasyPrinting(), Htmltext::unicode:chardata(). previewText(This,Htmltext) - when is_record(This, wx_ref),is_list(Htmltext) -> + when is_record(This, wx_ref),?is_chardata(Htmltext) -> previewText(This,Htmltext, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxhtmleasyprinting.html#wxhtmleasyprintingpreviewtext">external documentation</a>. @@ -96,7 +96,7 @@ previewText(This,Htmltext) This::wxHtmlEasyPrinting(), Htmltext::unicode:chardata(), Option :: {'basepath', unicode:chardata()}. previewText(#wx_ref{type=ThisT,ref=ThisRef},Htmltext, Options) - when is_list(Htmltext),is_list(Options) -> + when ?is_chardata(Htmltext),is_list(Options) -> ?CLASS(ThisT,wxHtmlEasyPrinting), Htmltext_UC = unicode:characters_to_binary([Htmltext,0]), MOpts = fun({basepath, Basepath}, Acc) -> Basepath_UC = unicode:characters_to_binary([Basepath,0]),[<<1:32/?UI,(byte_size(Basepath_UC)):32/?UI,(Basepath_UC)/binary, 0:(((8- ((0+byte_size(Basepath_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -109,7 +109,7 @@ previewText(#wx_ref{type=ThisT,ref=ThisRef},Htmltext, Options) -spec printFile(This, Htmlfile) -> boolean() when This::wxHtmlEasyPrinting(), Htmlfile::unicode:chardata(). printFile(#wx_ref{type=ThisT,ref=ThisRef},Htmlfile) - when is_list(Htmlfile) -> + when ?is_chardata(Htmlfile) -> ?CLASS(ThisT,wxHtmlEasyPrinting), Htmlfile_UC = unicode:characters_to_binary([Htmlfile,0]), wxe_util:call(?wxHtmlEasyPrinting_PrintFile, @@ -120,7 +120,7 @@ printFile(#wx_ref{type=ThisT,ref=ThisRef},Htmlfile) This::wxHtmlEasyPrinting(), Htmltext::unicode:chardata(). printText(This,Htmltext) - when is_record(This, wx_ref),is_list(Htmltext) -> + when is_record(This, wx_ref),?is_chardata(Htmltext) -> printText(This,Htmltext, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxhtmleasyprinting.html#wxhtmleasyprintingprinttext">external documentation</a>. @@ -128,7 +128,7 @@ printText(This,Htmltext) This::wxHtmlEasyPrinting(), Htmltext::unicode:chardata(), Option :: {'basepath', unicode:chardata()}. printText(#wx_ref{type=ThisT,ref=ThisRef},Htmltext, Options) - when is_list(Htmltext),is_list(Options) -> + when ?is_chardata(Htmltext),is_list(Options) -> ?CLASS(ThisT,wxHtmlEasyPrinting), Htmltext_UC = unicode:characters_to_binary([Htmltext,0]), MOpts = fun({basepath, Basepath}, Acc) -> Basepath_UC = unicode:characters_to_binary([Basepath,0]),[<<1:32/?UI,(byte_size(Basepath_UC)):32/?UI,(Basepath_UC)/binary, 0:(((8- ((0+byte_size(Basepath_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -150,7 +150,7 @@ pageSetup(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxHtmlEasyPrinting(), Normal_face::unicode:chardata(), Fixed_face::unicode:chardata(). setFonts(This,Normal_face,Fixed_face) - when is_record(This, wx_ref),is_list(Normal_face),is_list(Fixed_face) -> + when is_record(This, wx_ref),?is_chardata(Normal_face),?is_chardata(Fixed_face) -> setFonts(This,Normal_face,Fixed_face, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxhtmleasyprinting.html#wxhtmleasyprintingsetfonts">external documentation</a>. @@ -158,7 +158,7 @@ setFonts(This,Normal_face,Fixed_face) This::wxHtmlEasyPrinting(), Normal_face::unicode:chardata(), Fixed_face::unicode:chardata(), Option :: {'sizes', [integer()]}. setFonts(#wx_ref{type=ThisT,ref=ThisRef},Normal_face,Fixed_face, Options) - when is_list(Normal_face),is_list(Fixed_face),is_list(Options) -> + when ?is_chardata(Normal_face),?is_chardata(Fixed_face),is_list(Options) -> ?CLASS(ThisT,wxHtmlEasyPrinting), Normal_face_UC = unicode:characters_to_binary([Normal_face,0]), Fixed_face_UC = unicode:characters_to_binary([Fixed_face,0]), @@ -174,7 +174,7 @@ setFonts(#wx_ref{type=ThisT,ref=ThisRef},Normal_face,Fixed_face, Options) This::wxHtmlEasyPrinting(), Header::unicode:chardata(). setHeader(This,Header) - when is_record(This, wx_ref),is_list(Header) -> + when is_record(This, wx_ref),?is_chardata(Header) -> setHeader(This,Header, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxhtmleasyprinting.html#wxhtmleasyprintingsetheader">external documentation</a>. @@ -182,7 +182,7 @@ setHeader(This,Header) This::wxHtmlEasyPrinting(), Header::unicode:chardata(), Option :: {'pg', integer()}. setHeader(#wx_ref{type=ThisT,ref=ThisRef},Header, Options) - when is_list(Header),is_list(Options) -> + when ?is_chardata(Header),is_list(Options) -> ?CLASS(ThisT,wxHtmlEasyPrinting), Header_UC = unicode:characters_to_binary([Header,0]), MOpts = fun({pg, Pg}, Acc) -> [<<1:32/?UI,Pg:32/?UI>>|Acc]; @@ -196,7 +196,7 @@ setHeader(#wx_ref{type=ThisT,ref=ThisRef},Header, Options) This::wxHtmlEasyPrinting(), Footer::unicode:chardata(). setFooter(This,Footer) - when is_record(This, wx_ref),is_list(Footer) -> + when is_record(This, wx_ref),?is_chardata(Footer) -> setFooter(This,Footer, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxhtmleasyprinting.html#wxhtmleasyprintingsetfooter">external documentation</a>. @@ -204,7 +204,7 @@ setFooter(This,Footer) This::wxHtmlEasyPrinting(), Footer::unicode:chardata(), Option :: {'pg', integer()}. setFooter(#wx_ref{type=ThisT,ref=ThisRef},Footer, Options) - when is_list(Footer),is_list(Options) -> + when ?is_chardata(Footer),is_list(Options) -> ?CLASS(ThisT,wxHtmlEasyPrinting), Footer_UC = unicode:characters_to_binary([Footer,0]), MOpts = fun({pg, Pg}, Acc) -> [<<1:32/?UI,Pg:32/?UI>>|Acc]; diff --git a/lib/wx/src/gen/wxHtmlWindow.erl b/lib/wx/src/gen/wxHtmlWindow.erl index f9bb135fcf..c8a3ed5188 100644 --- a/lib/wx/src/gen/wxHtmlWindow.erl +++ b/lib/wx/src/gen/wxHtmlWindow.erl @@ -45,8 +45,8 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - doPrepareDC/2,enable/1,enable/2,enableScrolling/3,findWindow/2,fit/1, - fitInside/1,freeze/1,getAcceleratorTable/1,getBackgroundColour/1, + doPrepareDC/2,dragAcceptFiles/2,enable/1,enable/2,enableScrolling/3, + findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1,getBackgroundColour/1, getBackgroundStyle/1,getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1, getChildren/1,getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, @@ -127,7 +127,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef}, Options) -spec appendToPage(This, Source) -> boolean() when This::wxHtmlWindow(), Source::unicode:chardata(). appendToPage(#wx_ref{type=ThisT,ref=ThisRef},Source) - when is_list(Source) -> + when ?is_chardata(Source) -> ?CLASS(ThisT,wxHtmlWindow), Source_UC = unicode:characters_to_binary([Source,0]), wxe_util:call(?wxHtmlWindow_AppendToPage, @@ -209,7 +209,7 @@ historyForward(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec loadFile(This, Filename) -> boolean() when This::wxHtmlWindow(), Filename::unicode:chardata(). loadFile(#wx_ref{type=ThisT,ref=ThisRef},Filename) - when is_list(Filename) -> + when ?is_chardata(Filename) -> ?CLASS(ThisT,wxHtmlWindow), Filename_UC = unicode:characters_to_binary([Filename,0]), wxe_util:call(?wxHtmlWindow_LoadFile, @@ -219,7 +219,7 @@ loadFile(#wx_ref{type=ThisT,ref=ThisRef},Filename) -spec loadPage(This, Location) -> boolean() when This::wxHtmlWindow(), Location::unicode:chardata(). loadPage(#wx_ref{type=ThisT,ref=ThisRef},Location) - when is_list(Location) -> + when ?is_chardata(Location) -> ?CLASS(ThisT,wxHtmlWindow), Location_UC = unicode:characters_to_binary([Location,0]), wxe_util:call(?wxHtmlWindow_LoadPage, @@ -273,7 +273,7 @@ setBorders(#wx_ref{type=ThisT,ref=ThisRef},B) This::wxHtmlWindow(), Normal_face::unicode:chardata(), Fixed_face::unicode:chardata(). setFonts(This,Normal_face,Fixed_face) - when is_record(This, wx_ref),is_list(Normal_face),is_list(Fixed_face) -> + when is_record(This, wx_ref),?is_chardata(Normal_face),?is_chardata(Fixed_face) -> setFonts(This,Normal_face,Fixed_face, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxhtmlwindow.html#wxhtmlwindowsetfonts">external documentation</a>. @@ -281,7 +281,7 @@ setFonts(This,Normal_face,Fixed_face) This::wxHtmlWindow(), Normal_face::unicode:chardata(), Fixed_face::unicode:chardata(), Option :: {'sizes', integer()}. setFonts(#wx_ref{type=ThisT,ref=ThisRef},Normal_face,Fixed_face, Options) - when is_list(Normal_face),is_list(Fixed_face),is_list(Options) -> + when ?is_chardata(Normal_face),?is_chardata(Fixed_face),is_list(Options) -> ?CLASS(ThisT,wxHtmlWindow), Normal_face_UC = unicode:characters_to_binary([Normal_face,0]), Fixed_face_UC = unicode:characters_to_binary([Fixed_face,0]), @@ -295,7 +295,7 @@ setFonts(#wx_ref{type=ThisT,ref=ThisRef},Normal_face,Fixed_face, Options) -spec setPage(This, Source) -> boolean() when This::wxHtmlWindow(), Source::unicode:chardata(). setPage(#wx_ref{type=ThisT,ref=ThisRef},Source) - when is_list(Source) -> + when ?is_chardata(Source) -> ?CLASS(ThisT,wxHtmlWindow), Source_UC = unicode:characters_to_binary([Source,0]), wxe_util:call(?wxHtmlWindow_SetPage, @@ -305,7 +305,7 @@ setPage(#wx_ref{type=ThisT,ref=ThisRef},Source) -spec setRelatedFrame(This, Frame, Format) -> 'ok' when This::wxHtmlWindow(), Frame::wxFrame:wxFrame(), Format::unicode:chardata(). setRelatedFrame(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=FrameT,ref=FrameRef},Format) - when is_list(Format) -> + when ?is_chardata(Format) -> ?CLASS(ThisT,wxHtmlWindow), ?CLASS(FrameT,wxFrame), Format_UC = unicode:characters_to_binary([Format,0]), @@ -689,6 +689,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxIcon.erl b/lib/wx/src/gen/wxIcon.erl index c9ec32dffc..9739a403ff 100644 --- a/lib/wx/src/gen/wxIcon.erl +++ b/lib/wx/src/gen/wxIcon.erl @@ -60,7 +60,7 @@ new() -> Loc::wx:wx_object(). new(Filename) - when is_list(Filename) -> + when ?is_chardata(Filename) -> new(Filename, []); new(#wx_ref{type=LocT,ref=LocRef}) -> ?CLASS(LocT,wx), @@ -75,7 +75,7 @@ new(#wx_ref{type=LocT,ref=LocRef}) -> | {'desiredWidth', integer()} | {'desiredHeight', integer()}. new(Filename, Options) - when is_list(Filename),is_list(Options) -> + when ?is_chardata(Filename),is_list(Options) -> Filename_UC = unicode:characters_to_binary([Filename,0]), MOpts = fun({type, Type}, Acc) -> [<<1:32/?UI,Type:32/?UI>>|Acc]; ({desiredWidth, DesiredWidth}, Acc) -> [<<2:32/?UI,DesiredWidth:32/?UI>>|Acc]; diff --git a/lib/wx/src/gen/wxIconBundle.erl b/lib/wx/src/gen/wxIconBundle.erl index 47785963e3..aecf382a9f 100644 --- a/lib/wx/src/gen/wxIconBundle.erl +++ b/lib/wx/src/gen/wxIconBundle.erl @@ -58,7 +58,7 @@ new(#wx_ref{type=IcT,ref=IcRef}) -> -spec new(File, Type) -> wxIconBundle() when File::unicode:chardata(), Type::integer(). new(File,Type) - when is_list(File),is_integer(Type) -> + when ?is_chardata(File),is_integer(Type) -> File_UC = unicode:characters_to_binary([File,0]), wxe_util:construct(?wxIconBundle_new_2, <<(byte_size(File_UC)):32/?UI,(File_UC)/binary, 0:(((8- ((4+byte_size(File_UC)) band 16#7)) band 16#7))/unit:8,Type:32/?UI>>). @@ -76,7 +76,7 @@ addIcon(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=IconT,ref=IconRef}) -> -spec addIcon(This, File, Type) -> 'ok' when This::wxIconBundle(), File::unicode:chardata(), Type::integer(). addIcon(#wx_ref{type=ThisT,ref=ThisRef},File,Type) - when is_list(File),is_integer(Type) -> + when ?is_chardata(File),is_integer(Type) -> ?CLASS(ThisT,wxIconBundle), File_UC = unicode:characters_to_binary([File,0]), wxe_util:cast(?wxIconBundle_AddIcon_2, diff --git a/lib/wx/src/gen/wxImage.erl b/lib/wx/src/gen/wxImage.erl index e82f3d609e..f3b3d393d1 100644 --- a/lib/wx/src/gen/wxImage.erl +++ b/lib/wx/src/gen/wxImage.erl @@ -64,7 +64,7 @@ new() -> Name::unicode:chardata(). new(Name) - when is_list(Name) -> + when ?is_chardata(Name) -> new(Name, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wximage.html#wximagewximage">external documentation</a>. @@ -85,7 +85,7 @@ new(Width,Height) when is_integer(Width),is_integer(Height) -> new(Width,Height, []); new(Name, Options) - when is_list(Name),is_list(Options) -> + when ?is_chardata(Name),is_list(Options) -> Name_UC = unicode:characters_to_binary([Name,0]), MOpts = fun({type, Type}, Acc) -> [<<1:32/?UI,Type:32/?UI>>|Acc]; ({index, Index}, Acc) -> [<<2:32/?UI,Index:32/?UI>>|Acc]; @@ -123,7 +123,7 @@ new(Width,Height, Options) wxe_util:construct(?wxImage_new_3_0, <<Width:32/?UI,Height:32/?UI, BinOpt/binary>>); new(Name,Mimetype, Options) - when is_list(Name),is_list(Mimetype),is_list(Options) -> + when ?is_chardata(Name),?is_chardata(Mimetype),is_list(Options) -> Name_UC = unicode:characters_to_binary([Name,0]), Mimetype_UC = unicode:characters_to_binary([Mimetype,0]), MOpts = fun({index, Index}, Acc) -> [<<1:32/?UI,Index:32/?UI>>|Acc]; @@ -421,7 +421,7 @@ getGreen(#wx_ref{type=ThisT,ref=ThisRef},X,Y) Name::unicode:chardata(). getImageCount(Name) - when is_list(Name) -> + when ?is_chardata(Name) -> getImageCount(Name, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wximage.html#wximagegetimagecount">external documentation</a>. @@ -430,7 +430,7 @@ getImageCount(Name) Name::unicode:chardata(), Option :: {'type', wx:wx_enum()}. getImageCount(Name, Options) - when is_list(Name),is_list(Options) -> + when ?is_chardata(Name),is_list(Options) -> Name_UC = unicode:characters_to_binary([Name,0]), MOpts = fun({type, Type}, Acc) -> [<<1:32/?UI,Type:32/?UI>>|Acc]; (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, @@ -533,7 +533,7 @@ hasMask(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec getOption(This, Name) -> unicode:charlist() when This::wxImage(), Name::unicode:chardata(). getOption(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxImage_GetOption, @@ -543,7 +543,7 @@ getOption(#wx_ref{type=ThisT,ref=ThisRef},Name) -spec getOptionInt(This, Name) -> integer() when This::wxImage(), Name::unicode:chardata(). getOptionInt(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxImage_GetOptionInt, @@ -553,7 +553,7 @@ getOptionInt(#wx_ref{type=ThisT,ref=ThisRef},Name) -spec hasOption(This, Name) -> boolean() when This::wxImage(), Name::unicode:chardata(). hasOption(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxImage_HasOption, @@ -599,7 +599,7 @@ isTransparent(#wx_ref{type=ThisT,ref=ThisRef},X,Y, Options) This::wxImage(), Name::unicode:chardata(). loadFile(This,Name) - when is_record(This, wx_ref),is_list(Name) -> + when is_record(This, wx_ref),?is_chardata(Name) -> loadFile(This,Name, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wximage.html#wximageloadfile">external documentation</a>. @@ -608,7 +608,7 @@ loadFile(This,Name) Option :: {'type', integer()} | {'index', integer()}. loadFile(#wx_ref{type=ThisT,ref=ThisRef},Name, Options) - when is_list(Name),is_list(Options) -> + when ?is_chardata(Name),is_list(Options) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), MOpts = fun({type, Type}, Acc) -> [<<1:32/?UI,Type:32/?UI>>|Acc]; @@ -623,7 +623,7 @@ loadFile(#wx_ref{type=ThisT,ref=ThisRef},Name, Options) This::wxImage(), Name::unicode:chardata(), Mimetype::unicode:chardata(), Option :: {'index', integer()}. loadFile(#wx_ref{type=ThisT,ref=ThisRef},Name,Mimetype, Options) - when is_list(Name),is_list(Mimetype),is_list(Options) -> + when ?is_chardata(Name),?is_chardata(Mimetype),is_list(Options) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), Mimetype_UC = unicode:characters_to_binary([Mimetype,0]), @@ -645,7 +645,7 @@ ok(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec removeHandler(Name) -> boolean() when Name::unicode:chardata(). removeHandler(Name) - when is_list(Name) -> + when ?is_chardata(Name) -> Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxImage_RemoveHandler, <<(byte_size(Name_UC)):32/?UI,(Name_UC)/binary, 0:(((8- ((4+byte_size(Name_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -784,7 +784,7 @@ rotate90(#wx_ref{type=ThisT,ref=ThisRef}, Options) -spec saveFile(This, Name) -> boolean() when This::wxImage(), Name::unicode:chardata(). saveFile(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxImage_SaveFile_1, @@ -800,13 +800,13 @@ saveFile(#wx_ref{type=ThisT,ref=ThisRef},Name) (This, Name, Mimetype) -> boolean() when This::wxImage(), Name::unicode:chardata(), Mimetype::unicode:chardata(). saveFile(#wx_ref{type=ThisT,ref=ThisRef},Name,Type) - when is_list(Name),is_integer(Type) -> + when ?is_chardata(Name),is_integer(Type) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxImage_SaveFile_2_0, <<ThisRef:32/?UI,(byte_size(Name_UC)):32/?UI,(Name_UC)/binary, 0:(((8- ((0+byte_size(Name_UC)) band 16#7)) band 16#7))/unit:8,Type:32/?UI>>); saveFile(#wx_ref{type=ThisT,ref=ThisRef},Name,Mimetype) - when is_list(Name),is_list(Mimetype) -> + when ?is_chardata(Name),?is_chardata(Mimetype) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), Mimetype_UC = unicode:characters_to_binary([Mimetype,0]), @@ -985,13 +985,13 @@ setMaskFromImage(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=MaskT,ref=MaskRef} (This, Name, Value) -> 'ok' when This::wxImage(), Name::unicode:chardata(), Value::unicode:chardata(). setOption(#wx_ref{type=ThisT,ref=ThisRef},Name,Value) - when is_list(Name),is_integer(Value) -> + when ?is_chardata(Name),is_integer(Value) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:cast(?wxImage_SetOption_2_0, <<ThisRef:32/?UI,(byte_size(Name_UC)):32/?UI,(Name_UC)/binary, 0:(((8- ((0+byte_size(Name_UC)) band 16#7)) band 16#7))/unit:8,Value:32/?UI>>); setOption(#wx_ref{type=ThisT,ref=ThisRef},Name,Value) - when is_list(Name),is_list(Value) -> + when ?is_chardata(Name),?is_chardata(Value) -> ?CLASS(ThisT,wxImage), Name_UC = unicode:characters_to_binary([Name,0]), Value_UC = unicode:characters_to_binary([Value,0]), diff --git a/lib/wx/src/gen/wxListBox.erl b/lib/wx/src/gen/wxListBox.erl index 9ab3616e9b..e1c96f2501 100644 --- a/lib/wx/src/gen/wxListBox.erl +++ b/lib/wx/src/gen/wxListBox.erl @@ -40,14 +40,14 @@ centre/1,centre/2,centreOnParent/1,centreOnParent/2,clear/1,clearBackground/1, clientToScreen/2,clientToScreen/3,close/1,close/2,connect/2,connect/3, convertDialogToPixels/2,convertPixelsToDialog/2,delete/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - findString/2,findString/3,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientData/2,getClientSize/1, - getContainingSizer/1,getCount/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1,getMinSize/1, - getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,findString/2,findString/3,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientData/2,getClientSize/1,getContainingSizer/1,getCount/1,getCursor/1, + getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, getSelection/1,getSize/1,getSizer/1,getString/2,getStringSelection/1, getTextExtent/2,getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, @@ -220,7 +220,7 @@ setFirstItem(#wx_ref{type=ThisT,ref=ThisRef},N) wxe_util:cast(?wxListBox_SetFirstItem_1_0, <<ThisRef:32/?UI,N:32/?UI>>); setFirstItem(#wx_ref{type=ThisT,ref=ThisRef},S) - when is_list(S) -> + when ?is_chardata(S) -> ?CLASS(ThisT,wxListBox), S_UC = unicode:characters_to_binary([S,0]), wxe_util:cast(?wxListBox_SetFirstItem_1_1, @@ -596,6 +596,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxListCtrl.erl b/lib/wx/src/gen/wxListCtrl.erl index 851686062a..0c2e9d0d0a 100644 --- a/lib/wx/src/gen/wxListCtrl.erl +++ b/lib/wx/src/gen/wxListCtrl.erl @@ -52,38 +52,38 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundStyle/2,setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2, - setCursor/2,setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1, - setFocusFromKbd/1,setFont/2,setForegroundColour/2,setHelpText/2,setId/2, - setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, - setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setSize/2,setSize/3,setSize/5, - setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4,setSizer/2, - setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2,setToolTip/2, - setTransparent/2,setVirtualSize/2,setVirtualSize/3,setVirtualSizeHints/2, - setVirtualSizeHints/3,setVirtualSizeHints/4,setWindowStyle/2,setWindowVariant/2, - shouldInheritColours/1,show/1,show/2,thaw/1,transferDataFromWindow/1, - transferDataToWindow/1,update/1,updateWindowUI/1,updateWindowUI/2, - validate/1,warpPointer/3]). + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundStyle/2,setCaret/2, + setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, + setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + setWindowStyle/2,setWindowVariant/2,shouldInheritColours/1,show/1, + show/2,thaw/1,transferDataFromWindow/1,transferDataToWindow/1,update/1, + updateWindowUI/1,updateWindowUI/2,validate/1,warpPointer/3]). -export_type([wxListCtrl/0]). %% @hidden @@ -272,7 +272,7 @@ ensureVisible(#wx_ref{type=ThisT,ref=ThisRef},Item) This::wxListCtrl(), Start::integer(), Str::unicode:chardata(). findItem(This,Start,Str) - when is_record(This, wx_ref),is_integer(Start),is_list(Str) -> + when is_record(This, wx_ref),is_integer(Start),?is_chardata(Str) -> findItem(This,Start,Str, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxlistctrl.html#wxlistctrlfinditem">external documentation</a>. @@ -286,7 +286,7 @@ findItem(This,Start,Str) (This, Start, Pt, Direction) -> integer() when This::wxListCtrl(), Start::integer(), Pt::{X::integer(), Y::integer()}, Direction::integer(). findItem(#wx_ref{type=ThisT,ref=ThisRef},Start,Str, Options) - when is_integer(Start),is_list(Str),is_list(Options) -> + when is_integer(Start),?is_chardata(Str),is_list(Options) -> ?CLASS(ThisT,wxListCtrl), Str_UC = unicode:characters_to_binary([Str,0]), MOpts = fun({partial, Partial}, Acc) -> [<<1:32/?UI,(wxe_util:from_bool(Partial)):32/?UI>>|Acc]; @@ -540,7 +540,7 @@ hitTest(#wx_ref{type=ThisT,ref=ThisRef},{PointX,PointY}) This::wxListCtrl(), Col::integer(), Info::wxListItem:wxListItem(). insertColumn(This,Col,Heading) - when is_record(This, wx_ref),is_integer(Col),is_list(Heading) -> + when is_record(This, wx_ref),is_integer(Col),?is_chardata(Heading) -> insertColumn(This,Col,Heading, []); insertColumn(#wx_ref{type=ThisT,ref=ThisRef},Col,#wx_ref{type=InfoT,ref=InfoRef}) when is_integer(Col) -> @@ -555,7 +555,7 @@ insertColumn(#wx_ref{type=ThisT,ref=ThisRef},Col,#wx_ref{type=InfoT,ref=InfoRef} Option :: {'format', integer()} | {'width', integer()}. insertColumn(#wx_ref{type=ThisT,ref=ThisRef},Col,Heading, Options) - when is_integer(Col),is_list(Heading),is_list(Options) -> + when is_integer(Col),?is_chardata(Heading),is_list(Options) -> ?CLASS(ThisT,wxListCtrl), Heading_UC = unicode:characters_to_binary([Heading,0]), MOpts = fun({format, Format}, Acc) -> [<<1:32/?UI,Format:32/?UI>>|Acc]; @@ -589,7 +589,7 @@ insertItem(#wx_ref{type=ThisT,ref=ThisRef},Index,ImageIndex) wxe_util:call(?wxListCtrl_InsertItem_2_0, <<ThisRef:32/?UI,Index:32/?UI,ImageIndex:32/?UI>>); insertItem(#wx_ref{type=ThisT,ref=ThisRef},Index,Label) - when is_integer(Index),is_list(Label) -> + when is_integer(Index),?is_chardata(Label) -> ?CLASS(ThisT,wxListCtrl), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:call(?wxListCtrl_InsertItem_2_1, @@ -599,7 +599,7 @@ insertItem(#wx_ref{type=ThisT,ref=ThisRef},Index,Label) -spec insertItem(This, Index, Label, ImageIndex) -> integer() when This::wxListCtrl(), Index::integer(), Label::unicode:chardata(), ImageIndex::integer(). insertItem(#wx_ref{type=ThisT,ref=ThisRef},Index,Label,ImageIndex) - when is_integer(Index),is_list(Label),is_integer(ImageIndex) -> + when is_integer(Index),?is_chardata(Label),is_integer(ImageIndex) -> ?CLASS(ThisT,wxListCtrl), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:call(?wxListCtrl_InsertItem_3, @@ -684,7 +684,7 @@ setItem(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=InfoT,ref=InfoRef}) -> This::wxListCtrl(), Index::integer(), Col::integer(), Label::unicode:chardata(). setItem(This,Index,Col,Label) - when is_record(This, wx_ref),is_integer(Index),is_integer(Col),is_list(Label) -> + when is_record(This, wx_ref),is_integer(Index),is_integer(Col),?is_chardata(Label) -> setItem(This,Index,Col,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxlistctrl.html#wxlistctrlsetitem">external documentation</a>. @@ -692,7 +692,7 @@ setItem(This,Index,Col,Label) This::wxListCtrl(), Index::integer(), Col::integer(), Label::unicode:chardata(), Option :: {'imageId', integer()}. setItem(#wx_ref{type=ThisT,ref=ThisRef},Index,Col,Label, Options) - when is_integer(Index),is_integer(Col),is_list(Label),is_list(Options) -> + when is_integer(Index),is_integer(Col),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxListCtrl), Label_UC = unicode:characters_to_binary([Label,0]), MOpts = fun({imageId, ImageId}, Acc) -> [<<1:32/?UI,ImageId:32/?UI>>|Acc]; @@ -790,7 +790,7 @@ setItemState(#wx_ref{type=ThisT,ref=ThisRef},Item,State,StateMask) -spec setItemText(This, Item, Str) -> 'ok' when This::wxListCtrl(), Item::integer(), Str::unicode:chardata(). setItemText(#wx_ref{type=ThisT,ref=ThisRef},Item,Str) - when is_integer(Item),is_list(Str) -> + when is_integer(Item),?is_chardata(Str) -> ?CLASS(ThisT,wxListCtrl), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxListCtrl_SetItemText, @@ -1187,6 +1187,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxListItem.erl b/lib/wx/src/gen/wxListItem.erl index 1530a8c514..56a1719c55 100644 --- a/lib/wx/src/gen/wxListItem.erl +++ b/lib/wx/src/gen/wxListItem.erl @@ -236,7 +236,7 @@ setStateMask(#wx_ref{type=ThisT,ref=ThisRef},StateMask) -spec setText(This, Text) -> 'ok' when This::wxListItem(), Text::unicode:chardata(). setText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxListItem), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxListItem_SetText, diff --git a/lib/wx/src/gen/wxListView.erl b/lib/wx/src/gen/wxListView.erl index 908bf4c1c9..b2865ff7c6 100644 --- a/lib/wx/src/gen/wxListView.erl +++ b/lib/wx/src/gen/wxListView.erl @@ -39,29 +39,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -485,6 +485,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxListbook.erl b/lib/wx/src/gen/wxListbook.erl index a7050e1db9..d27efb2500 100644 --- a/lib/wx/src/gen/wxListbook.erl +++ b/lib/wx/src/gen/wxListbook.erl @@ -43,29 +43,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -120,7 +120,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) This::wxListbook(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). addPage(This,Page,Text) - when is_record(This, wx_ref),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_record(Page, wx_ref),?is_chardata(Text) -> addPage(This,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxlistbook.html#wxlistbookaddpage">external documentation</a>. @@ -129,7 +129,7 @@ addPage(This,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. addPage(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxListbook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -296,7 +296,7 @@ hitTest(#wx_ref{type=ThisT,ref=ThisRef},{PtX,PtY}) This::wxListbook(), N::integer(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). insertPage(This,N,Page,Text) - when is_record(This, wx_ref),is_integer(N),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_integer(N),is_record(Page, wx_ref),?is_chardata(Text) -> insertPage(This,N,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxlistbook.html#wxlistbookinsertpage">external documentation</a>. @@ -305,7 +305,7 @@ insertPage(This,N,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. insertPage(#wx_ref{type=ThisT,ref=ThisRef},N,#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_integer(N),is_list(Text),is_list(Options) -> + when is_integer(N),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxListbook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -347,7 +347,7 @@ setPageImage(#wx_ref{type=ThisT,ref=ThisRef},N,ImageId) -spec setPageText(This, N, StrText) -> boolean() when This::wxListbook(), N::integer(), StrText::unicode:chardata(). setPageText(#wx_ref{type=ThisT,ref=ThisRef},N,StrText) - when is_integer(N),is_list(StrText) -> + when is_integer(N),?is_chardata(StrText) -> ?CLASS(ThisT,wxListbook), StrText_UC = unicode:characters_to_binary([StrText,0]), wxe_util:call(?wxListbook_SetPageText, @@ -700,6 +700,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxLocale.erl b/lib/wx/src/gen/wxLocale.erl index d473731bf8..1ce7c3e3e8 100644 --- a/lib/wx/src/gen/wxLocale.erl +++ b/lib/wx/src/gen/wxLocale.erl @@ -92,7 +92,7 @@ init(#wx_ref{type=ThisT,ref=ThisRef}, Options) -spec addCatalog(This, SzDomain) -> boolean() when This::wxLocale(), SzDomain::unicode:chardata(). addCatalog(#wx_ref{type=ThisT,ref=ThisRef},SzDomain) - when is_list(SzDomain) -> + when ?is_chardata(SzDomain) -> ?CLASS(ThisT,wxLocale), SzDomain_UC = unicode:characters_to_binary([SzDomain,0]), wxe_util:call(?wxLocale_AddCatalog_1, @@ -103,7 +103,7 @@ addCatalog(#wx_ref{type=ThisT,ref=ThisRef},SzDomain) -spec addCatalog(This, SzDomain, MsgIdLanguage, MsgIdCharset) -> boolean() when This::wxLocale(), SzDomain::unicode:chardata(), MsgIdLanguage::wx:wx_enum(), MsgIdCharset::unicode:chardata(). addCatalog(#wx_ref{type=ThisT,ref=ThisRef},SzDomain,MsgIdLanguage,MsgIdCharset) - when is_list(SzDomain),is_integer(MsgIdLanguage),is_list(MsgIdCharset) -> + when ?is_chardata(SzDomain),is_integer(MsgIdLanguage),?is_chardata(MsgIdCharset) -> ?CLASS(ThisT,wxLocale), SzDomain_UC = unicode:characters_to_binary([SzDomain,0]), MsgIdCharset_UC = unicode:characters_to_binary([MsgIdCharset,0]), @@ -114,7 +114,7 @@ addCatalog(#wx_ref{type=ThisT,ref=ThisRef},SzDomain,MsgIdLanguage,MsgIdCharset) -spec addCatalogLookupPathPrefix(Prefix) -> 'ok' when Prefix::unicode:chardata(). addCatalogLookupPathPrefix(Prefix) - when is_list(Prefix) -> + when ?is_chardata(Prefix) -> Prefix_UC = unicode:characters_to_binary([Prefix,0]), wxe_util:cast(?wxLocale_AddCatalogLookupPathPrefix, <<(byte_size(Prefix_UC)):32/?UI,(Prefix_UC)/binary, 0:(((8- ((4+byte_size(Prefix_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -164,7 +164,7 @@ getName(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxLocale(), SzOrigString::unicode:chardata(). getString(This,SzOrigString) - when is_record(This, wx_ref),is_list(SzOrigString) -> + when is_record(This, wx_ref),?is_chardata(SzOrigString) -> getString(This,SzOrigString, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxlocale.html#wxlocalegetstring">external documentation</a>. @@ -172,7 +172,7 @@ getString(This,SzOrigString) This::wxLocale(), SzOrigString::unicode:chardata(), Option :: {'szDomain', unicode:chardata()}. getString(#wx_ref{type=ThisT,ref=ThisRef},SzOrigString, Options) - when is_list(SzOrigString),is_list(Options) -> + when ?is_chardata(SzOrigString),is_list(Options) -> ?CLASS(ThisT,wxLocale), SzOrigString_UC = unicode:characters_to_binary([SzOrigString,0]), MOpts = fun({szDomain, SzDomain}, Acc) -> SzDomain_UC = unicode:characters_to_binary([SzDomain,0]),[<<1:32/?UI,(byte_size(SzDomain_UC)):32/?UI,(SzDomain_UC)/binary, 0:(((8- ((0+byte_size(SzDomain_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -186,7 +186,7 @@ getString(#wx_ref{type=ThisT,ref=ThisRef},SzOrigString, Options) This::wxLocale(), SzOrigString::unicode:chardata(), SzOrigString2::unicode:chardata(), N::integer(). getString(This,SzOrigString,SzOrigString2,N) - when is_record(This, wx_ref),is_list(SzOrigString),is_list(SzOrigString2),is_integer(N) -> + when is_record(This, wx_ref),?is_chardata(SzOrigString),?is_chardata(SzOrigString2),is_integer(N) -> getString(This,SzOrigString,SzOrigString2,N, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxlocale.html#wxlocalegetstring">external documentation</a>. @@ -194,7 +194,7 @@ getString(This,SzOrigString,SzOrigString2,N) This::wxLocale(), SzOrigString::unicode:chardata(), SzOrigString2::unicode:chardata(), N::integer(), Option :: {'szDomain', unicode:chardata()}. getString(#wx_ref{type=ThisT,ref=ThisRef},SzOrigString,SzOrigString2,N, Options) - when is_list(SzOrigString),is_list(SzOrigString2),is_integer(N),is_list(Options) -> + when ?is_chardata(SzOrigString),?is_chardata(SzOrigString2),is_integer(N),is_list(Options) -> ?CLASS(ThisT,wxLocale), SzOrigString_UC = unicode:characters_to_binary([SzOrigString,0]), SzOrigString2_UC = unicode:characters_to_binary([SzOrigString2,0]), @@ -209,7 +209,7 @@ getString(#wx_ref{type=ThisT,ref=ThisRef},SzOrigString,SzOrigString2,N, Options) This::wxLocale(), SzHeader::unicode:chardata(). getHeaderValue(This,SzHeader) - when is_record(This, wx_ref),is_list(SzHeader) -> + when is_record(This, wx_ref),?is_chardata(SzHeader) -> getHeaderValue(This,SzHeader, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxlocale.html#wxlocalegetheadervalue">external documentation</a>. @@ -217,7 +217,7 @@ getHeaderValue(This,SzHeader) This::wxLocale(), SzHeader::unicode:chardata(), Option :: {'szDomain', unicode:chardata()}. getHeaderValue(#wx_ref{type=ThisT,ref=ThisRef},SzHeader, Options) - when is_list(SzHeader),is_list(Options) -> + when ?is_chardata(SzHeader),is_list(Options) -> ?CLASS(ThisT,wxLocale), SzHeader_UC = unicode:characters_to_binary([SzHeader,0]), MOpts = fun({szDomain, SzDomain}, Acc) -> SzDomain_UC = unicode:characters_to_binary([SzDomain,0]),[<<1:32/?UI,(byte_size(SzDomain_UC)):32/?UI,(SzDomain_UC)/binary, 0:(((8- ((0+byte_size(SzDomain_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -257,7 +257,7 @@ getSystemLanguage() -> -spec isLoaded(This, SzDomain) -> boolean() when This::wxLocale(), SzDomain::unicode:chardata(). isLoaded(#wx_ref{type=ThisT,ref=ThisRef},SzDomain) - when is_list(SzDomain) -> + when ?is_chardata(SzDomain) -> ?CLASS(ThisT,wxLocale), SzDomain_UC = unicode:characters_to_binary([SzDomain,0]), wxe_util:call(?wxLocale_IsLoaded, diff --git a/lib/wx/src/gen/wxMDIChildFrame.erl b/lib/wx/src/gen/wxMDIChildFrame.erl index b294e4898d..6ff47259b4 100644 --- a/lib/wx/src/gen/wxMDIChildFrame.erl +++ b/lib/wx/src/gen/wxMDIChildFrame.erl @@ -42,11 +42,11 @@ close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createStatusBar/1,createStatusBar/2,createToolBar/1,createToolBar/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientAreaOrigin/1, - getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, - getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientAreaOrigin/1,getClientSize/1,getContainingSizer/1,getCursor/1, + getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, getLabel/1,getMaxSize/1,getMenuBar/1,getMinSize/1,getName/1,getParent/1, getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, @@ -102,7 +102,7 @@ new() -> Parent::wxMDIParentFrame:wxMDIParentFrame(), Id::integer(), Title::unicode:chardata(). new(Parent,Id,Title) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> new(Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmdichildframe.html#wxmdichildframewxmdichildframe">external documentation</a>. @@ -112,7 +112,7 @@ new(Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ParentT,wxMDIParentFrame), Title_UC = unicode:characters_to_binary([Title,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -136,7 +136,7 @@ activate(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxMDIChildFrame(), Parent::wxMDIParentFrame:wxMDIParentFrame(), Id::integer(), Title::unicode:chardata(). create(This,Parent,Id,Title) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> create(This,Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmdichildframe.html#wxmdichildframecreate">external documentation</a>. @@ -146,7 +146,7 @@ create(This,Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ThisT,wxMDIChildFrame), ?CLASS(ParentT,wxMDIParentFrame), Title_UC = unicode:characters_to_binary([Title,0]), @@ -595,6 +595,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxMDIClientWindow.erl b/lib/wx/src/gen/wxMDIClientWindow.erl index ddc31760f4..a97b8ab49d 100644 --- a/lib/wx/src/gen/wxMDIClientWindow.erl +++ b/lib/wx/src/gen/wxMDIClientWindow.erl @@ -37,29 +37,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -456,6 +456,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxMDIParentFrame.erl b/lib/wx/src/gen/wxMDIParentFrame.erl index 63b4ec8e23..f4d06a2658 100644 --- a/lib/wx/src/gen/wxMDIParentFrame.erl +++ b/lib/wx/src/gen/wxMDIParentFrame.erl @@ -43,11 +43,11 @@ close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createStatusBar/1,createStatusBar/2,createToolBar/1,createToolBar/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientAreaOrigin/1, - getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, - getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientAreaOrigin/1,getClientSize/1,getContainingSizer/1,getCursor/1, + getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, getLabel/1,getMaxSize/1,getMenuBar/1,getMinSize/1,getName/1,getParent/1, getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, @@ -103,7 +103,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(). new(Parent,Id,Title) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> new(Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmdiparentframe.html#wxmdiparentframewxmdiparentframe">external documentation</a>. @@ -113,7 +113,7 @@ new(Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -161,7 +161,7 @@ cascade(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxMDIParentFrame(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(). create(This,Parent,Id,Title) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> create(This,Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmdiparentframe.html#wxmdiparentframecreate">external documentation</a>. @@ -171,7 +171,7 @@ create(This,Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ThisT,wxMDIParentFrame), ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), @@ -633,6 +633,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxMenu.erl b/lib/wx/src/gen/wxMenu.erl index 317ea38685..26fe23701d 100644 --- a/lib/wx/src/gen/wxMenu.erl +++ b/lib/wx/src/gen/wxMenu.erl @@ -69,7 +69,7 @@ new(Options) Title::unicode:chardata(), Option :: {'style', integer()}. new(Title, Options) - when is_list(Title),is_list(Options) -> + when ?is_chardata(Title),is_list(Options) -> Title_UC = unicode:characters_to_binary([Title,0]), MOpts = fun({style, Style}, Acc) -> [<<1:32/?UI,Style:32/?UI>>|Acc]; (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, @@ -91,7 +91,7 @@ append(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ItemT,ref=ItemRef}) -> This::wxMenu(), Itemid::integer(), Text::unicode:chardata(). append(This,Itemid,Text) - when is_record(This, wx_ref),is_integer(Itemid),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Itemid),?is_chardata(Text) -> append(This,Itemid,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuappend">external documentation</a>. @@ -110,10 +110,10 @@ append(This,Itemid,Text) | {'kind', wx:wx_enum()}. append(This,Itemid,Text,Submenu) - when is_record(This, wx_ref),is_integer(Itemid),is_list(Text),is_record(Submenu, wx_ref) -> + when is_record(This, wx_ref),is_integer(Itemid),?is_chardata(Text),is_record(Submenu, wx_ref) -> append(This,Itemid,Text,Submenu, []); append(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text, Options) - when is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({help, Help}, Acc) -> Help_UC = unicode:characters_to_binary([Help,0]),[<<1:32/?UI,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((0+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -135,14 +135,14 @@ append(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text, Options) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(), Submenu::wxMenu(), Option :: {'help', unicode:chardata()}. append(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text,Help,IsCheckable) - when is_integer(Itemid),is_list(Text),is_list(Help),is_boolean(IsCheckable) -> + when is_integer(Itemid),?is_chardata(Text),?is_chardata(Help),is_boolean(IsCheckable) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), Help_UC = unicode:characters_to_binary([Help,0]), wxe_util:cast(?wxMenu_Append_4_0, <<ThisRef:32/?UI,Itemid:32/?UI,(byte_size(Text_UC)):32/?UI,(Text_UC)/binary, 0:(((8- ((4+byte_size(Text_UC)) band 16#7)) band 16#7))/unit:8,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((4+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8,(wxe_util:from_bool(IsCheckable)):32/?UI>>); append(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text,#wx_ref{type=SubmenuT,ref=SubmenuRef}, Options) - when is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), ?CLASS(SubmenuT,wxMenu), @@ -157,7 +157,7 @@ append(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text,#wx_ref{type=SubmenuT,ref=Sub This::wxMenu(), Itemid::integer(), Text::unicode:chardata(). appendCheckItem(This,Itemid,Text) - when is_record(This, wx_ref),is_integer(Itemid),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Itemid),?is_chardata(Text) -> appendCheckItem(This,Itemid,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuappendcheckitem">external documentation</a>. @@ -165,7 +165,7 @@ appendCheckItem(This,Itemid,Text) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(), Option :: {'help', unicode:chardata()}. appendCheckItem(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text, Options) - when is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({help, Help}, Acc) -> Help_UC = unicode:characters_to_binary([Help,0]),[<<1:32/?UI,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((0+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -179,7 +179,7 @@ appendCheckItem(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text, Options) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(). appendRadioItem(This,Itemid,Text) - when is_record(This, wx_ref),is_integer(Itemid),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Itemid),?is_chardata(Text) -> appendRadioItem(This,Itemid,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuappendradioitem">external documentation</a>. @@ -187,7 +187,7 @@ appendRadioItem(This,Itemid,Text) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(), Option :: {'help', unicode:chardata()}. appendRadioItem(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text, Options) - when is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({help, Help}, Acc) -> Help_UC = unicode:characters_to_binary([Help,0]),[<<1:32/?UI,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((0+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -285,7 +285,7 @@ findItem(#wx_ref{type=ThisT,ref=ThisRef},Itemid) wxe_util:call(?wxMenu_FindItem_2, <<ThisRef:32/?UI,Itemid:32/?UI>>); findItem(#wx_ref{type=ThisT,ref=ThisRef},Item) - when is_list(Item) -> + when ?is_chardata(Item) -> ?CLASS(ThisT,wxMenu), Item_UC = unicode:characters_to_binary([Item,0]), wxe_util:call(?wxMenu_FindItem_1, @@ -386,7 +386,7 @@ insert(#wx_ref{type=ThisT,ref=ThisRef},Pos,Itemid, Options) This::wxMenu(), Pos::integer(), Itemid::integer(), Text::unicode:chardata(), Submenu::wxMenu(). insert(This,Pos,Itemid,Text,Submenu) - when is_record(This, wx_ref),is_integer(Pos),is_integer(Itemid),is_list(Text),is_record(Submenu, wx_ref) -> + when is_record(This, wx_ref),is_integer(Pos),is_integer(Itemid),?is_chardata(Text),is_record(Submenu, wx_ref) -> insert(This,Pos,Itemid,Text,Submenu, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuinsert">external documentation</a>. @@ -401,14 +401,14 @@ insert(This,Pos,Itemid,Text,Submenu) This::wxMenu(), Pos::integer(), Itemid::integer(), Text::unicode:chardata(), Submenu::wxMenu(), Option :: {'help', unicode:chardata()}. insert(#wx_ref{type=ThisT,ref=ThisRef},Pos,Itemid,Text,Help,IsCheckable) - when is_integer(Pos),is_integer(Itemid),is_list(Text),is_list(Help),is_boolean(IsCheckable) -> + when is_integer(Pos),is_integer(Itemid),?is_chardata(Text),?is_chardata(Help),is_boolean(IsCheckable) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), Help_UC = unicode:characters_to_binary([Help,0]), wxe_util:cast(?wxMenu_Insert_5_0, <<ThisRef:32/?UI,Pos:32/?UI,Itemid:32/?UI,(byte_size(Text_UC)):32/?UI,(Text_UC)/binary, 0:(((8- ((0+byte_size(Text_UC)) band 16#7)) band 16#7))/unit:8,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((4+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8,(wxe_util:from_bool(IsCheckable)):32/?UI>>); insert(#wx_ref{type=ThisT,ref=ThisRef},Pos,Itemid,Text,#wx_ref{type=SubmenuT,ref=SubmenuRef}, Options) - when is_integer(Pos),is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Pos),is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), ?CLASS(SubmenuT,wxMenu), @@ -423,7 +423,7 @@ insert(#wx_ref{type=ThisT,ref=ThisRef},Pos,Itemid,Text,#wx_ref{type=SubmenuT,ref This::wxMenu(), Pos::integer(), Itemid::integer(), Text::unicode:chardata(). insertCheckItem(This,Pos,Itemid,Text) - when is_record(This, wx_ref),is_integer(Pos),is_integer(Itemid),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Pos),is_integer(Itemid),?is_chardata(Text) -> insertCheckItem(This,Pos,Itemid,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuinsertcheckitem">external documentation</a>. @@ -431,7 +431,7 @@ insertCheckItem(This,Pos,Itemid,Text) This::wxMenu(), Pos::integer(), Itemid::integer(), Text::unicode:chardata(), Option :: {'help', unicode:chardata()}. insertCheckItem(#wx_ref{type=ThisT,ref=ThisRef},Pos,Itemid,Text, Options) - when is_integer(Pos),is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Pos),is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({help, Help}, Acc) -> Help_UC = unicode:characters_to_binary([Help,0]),[<<1:32/?UI,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((0+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -445,7 +445,7 @@ insertCheckItem(#wx_ref{type=ThisT,ref=ThisRef},Pos,Itemid,Text, Options) This::wxMenu(), Pos::integer(), Itemid::integer(), Text::unicode:chardata(). insertRadioItem(This,Pos,Itemid,Text) - when is_record(This, wx_ref),is_integer(Pos),is_integer(Itemid),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Pos),is_integer(Itemid),?is_chardata(Text) -> insertRadioItem(This,Pos,Itemid,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuinsertradioitem">external documentation</a>. @@ -453,7 +453,7 @@ insertRadioItem(This,Pos,Itemid,Text) This::wxMenu(), Pos::integer(), Itemid::integer(), Text::unicode:chardata(), Option :: {'help', unicode:chardata()}. insertRadioItem(#wx_ref{type=ThisT,ref=ThisRef},Pos,Itemid,Text, Options) - when is_integer(Pos),is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Pos),is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({help, Help}, Acc) -> Help_UC = unicode:characters_to_binary([Help,0]),[<<1:32/?UI,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((0+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -532,7 +532,7 @@ prepend(#wx_ref{type=ThisT,ref=ThisRef},Itemid, Options) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(), Submenu::wxMenu(). prepend(This,Itemid,Text,Submenu) - when is_record(This, wx_ref),is_integer(Itemid),is_list(Text),is_record(Submenu, wx_ref) -> + when is_record(This, wx_ref),is_integer(Itemid),?is_chardata(Text),is_record(Submenu, wx_ref) -> prepend(This,Itemid,Text,Submenu, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuprepend">external documentation</a>. @@ -547,14 +547,14 @@ prepend(This,Itemid,Text,Submenu) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(), Submenu::wxMenu(), Option :: {'help', unicode:chardata()}. prepend(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text,Help,IsCheckable) - when is_integer(Itemid),is_list(Text),is_list(Help),is_boolean(IsCheckable) -> + when is_integer(Itemid),?is_chardata(Text),?is_chardata(Help),is_boolean(IsCheckable) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), Help_UC = unicode:characters_to_binary([Help,0]), wxe_util:cast(?wxMenu_Prepend_4_0, <<ThisRef:32/?UI,Itemid:32/?UI,(byte_size(Text_UC)):32/?UI,(Text_UC)/binary, 0:(((8- ((4+byte_size(Text_UC)) band 16#7)) band 16#7))/unit:8,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((4+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8,(wxe_util:from_bool(IsCheckable)):32/?UI>>); prepend(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text,#wx_ref{type=SubmenuT,ref=SubmenuRef}, Options) - when is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), ?CLASS(SubmenuT,wxMenu), @@ -569,7 +569,7 @@ prepend(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text,#wx_ref{type=SubmenuT,ref=Su This::wxMenu(), Itemid::integer(), Text::unicode:chardata(). prependCheckItem(This,Itemid,Text) - when is_record(This, wx_ref),is_integer(Itemid),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Itemid),?is_chardata(Text) -> prependCheckItem(This,Itemid,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuprependcheckitem">external documentation</a>. @@ -577,7 +577,7 @@ prependCheckItem(This,Itemid,Text) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(), Option :: {'help', unicode:chardata()}. prependCheckItem(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text, Options) - when is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({help, Help}, Acc) -> Help_UC = unicode:characters_to_binary([Help,0]),[<<1:32/?UI,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((0+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -591,7 +591,7 @@ prependCheckItem(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text, Options) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(). prependRadioItem(This,Itemid,Text) - when is_record(This, wx_ref),is_integer(Itemid),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Itemid),?is_chardata(Text) -> prependRadioItem(This,Itemid,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmenu.html#wxmenuprependradioitem">external documentation</a>. @@ -599,7 +599,7 @@ prependRadioItem(This,Itemid,Text) This::wxMenu(), Itemid::integer(), Text::unicode:chardata(), Option :: {'help', unicode:chardata()}. prependRadioItem(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Text, Options) - when is_integer(Itemid),is_list(Text),is_list(Options) -> + when is_integer(Itemid),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxMenu), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({help, Help}, Acc) -> Help_UC = unicode:characters_to_binary([Help,0]),[<<1:32/?UI,(byte_size(Help_UC)):32/?UI,(Help_UC)/binary, 0:(((8- ((0+byte_size(Help_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -640,7 +640,7 @@ remove(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ItemT,ref=ItemRef}) -> -spec setHelpString(This, Itemid, HelpString) -> 'ok' when This::wxMenu(), Itemid::integer(), HelpString::unicode:chardata(). setHelpString(#wx_ref{type=ThisT,ref=ThisRef},Itemid,HelpString) - when is_integer(Itemid),is_list(HelpString) -> + when is_integer(Itemid),?is_chardata(HelpString) -> ?CLASS(ThisT,wxMenu), HelpString_UC = unicode:characters_to_binary([HelpString,0]), wxe_util:cast(?wxMenu_SetHelpString, @@ -650,7 +650,7 @@ setHelpString(#wx_ref{type=ThisT,ref=ThisRef},Itemid,HelpString) -spec setLabel(This, Itemid, Label) -> 'ok' when This::wxMenu(), Itemid::integer(), Label::unicode:chardata(). setLabel(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Label) - when is_integer(Itemid),is_list(Label) -> + when is_integer(Itemid),?is_chardata(Label) -> ?CLASS(ThisT,wxMenu), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:cast(?wxMenu_SetLabel, @@ -660,7 +660,7 @@ setLabel(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Label) -spec setTitle(This, Title) -> 'ok' when This::wxMenu(), Title::unicode:chardata(). setTitle(#wx_ref{type=ThisT,ref=ThisRef},Title) - when is_list(Title) -> + when ?is_chardata(Title) -> ?CLASS(ThisT,wxMenu), Title_UC = unicode:characters_to_binary([Title,0]), wxe_util:cast(?wxMenu_SetTitle, diff --git a/lib/wx/src/gen/wxMenuBar.erl b/lib/wx/src/gen/wxMenuBar.erl index 05f7a423d5..bb976fd0ba 100644 --- a/lib/wx/src/gen/wxMenuBar.erl +++ b/lib/wx/src/gen/wxMenuBar.erl @@ -41,21 +41,21 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1,getBackgroundColour/1, - getBackgroundStyle/1,getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1, - getChildren/1,getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, - getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, - getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getMaxSize/1,getMinSize/1, - getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, - getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, - getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, - getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, - hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, - initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isExposed/2, - isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1,layout/1, - lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2,move/3,move/4, - moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, - pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + dragAcceptFiles/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, + getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, + getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, + getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, + getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, + getId/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, + getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, + getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, + getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, + hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, @@ -98,7 +98,7 @@ new(Style) -spec append(This, Menu, Title) -> boolean() when This::wxMenuBar(), Menu::wxMenu:wxMenu(), Title::unicode:chardata(). append(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=MenuT,ref=MenuRef},Title) - when is_list(Title) -> + when ?is_chardata(Title) -> ?CLASS(ThisT,wxMenuBar), ?CLASS(MenuT,wxMenu), Title_UC = unicode:characters_to_binary([Title,0]), @@ -157,7 +157,7 @@ enableTop(#wx_ref{type=ThisT,ref=ThisRef},Pos,Flag) -spec findMenu(This, Title) -> integer() when This::wxMenuBar(), Title::unicode:chardata(). findMenu(#wx_ref{type=ThisT,ref=ThisRef},Title) - when is_list(Title) -> + when ?is_chardata(Title) -> ?CLASS(ThisT,wxMenuBar), Title_UC = unicode:characters_to_binary([Title,0]), wxe_util:call(?wxMenuBar_FindMenu, @@ -167,7 +167,7 @@ findMenu(#wx_ref{type=ThisT,ref=ThisRef},Title) -spec findMenuItem(This, MenuString, ItemString) -> integer() when This::wxMenuBar(), MenuString::unicode:chardata(), ItemString::unicode:chardata(). findMenuItem(#wx_ref{type=ThisT,ref=ThisRef},MenuString,ItemString) - when is_list(MenuString),is_list(ItemString) -> + when ?is_chardata(MenuString),?is_chardata(ItemString) -> ?CLASS(ThisT,wxMenuBar), MenuString_UC = unicode:characters_to_binary([MenuString,0]), ItemString_UC = unicode:characters_to_binary([ItemString,0]), @@ -239,7 +239,7 @@ getMenuCount(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec insert(This, Pos, Menu, Title) -> boolean() when This::wxMenuBar(), Pos::integer(), Menu::wxMenu:wxMenu(), Title::unicode:chardata(). insert(#wx_ref{type=ThisT,ref=ThisRef},Pos,#wx_ref{type=MenuT,ref=MenuRef},Title) - when is_integer(Pos),is_list(Title) -> + when is_integer(Pos),?is_chardata(Title) -> ?CLASS(ThisT,wxMenuBar), ?CLASS(MenuT,wxMenu), Title_UC = unicode:characters_to_binary([Title,0]), @@ -285,7 +285,7 @@ remove(#wx_ref{type=ThisT,ref=ThisRef},Pos) -spec replace(This, Pos, Menu, Title) -> wxMenu:wxMenu() when This::wxMenuBar(), Pos::integer(), Menu::wxMenu:wxMenu(), Title::unicode:chardata(). replace(#wx_ref{type=ThisT,ref=ThisRef},Pos,#wx_ref{type=MenuT,ref=MenuRef},Title) - when is_integer(Pos),is_list(Title) -> + when is_integer(Pos),?is_chardata(Title) -> ?CLASS(ThisT,wxMenuBar), ?CLASS(MenuT,wxMenu), Title_UC = unicode:characters_to_binary([Title,0]), @@ -296,7 +296,7 @@ replace(#wx_ref{type=ThisT,ref=ThisRef},Pos,#wx_ref{type=MenuT,ref=MenuRef},Titl -spec setHelpString(This, Itemid, HelpString) -> 'ok' when This::wxMenuBar(), Itemid::integer(), HelpString::unicode:chardata(). setHelpString(#wx_ref{type=ThisT,ref=ThisRef},Itemid,HelpString) - when is_integer(Itemid),is_list(HelpString) -> + when is_integer(Itemid),?is_chardata(HelpString) -> ?CLASS(ThisT,wxMenuBar), HelpString_UC = unicode:characters_to_binary([HelpString,0]), wxe_util:cast(?wxMenuBar_SetHelpString, @@ -306,7 +306,7 @@ setHelpString(#wx_ref{type=ThisT,ref=ThisRef},Itemid,HelpString) -spec setLabel(This, S) -> 'ok' when This::wxMenuBar(), S::unicode:chardata(). setLabel(#wx_ref{type=ThisT,ref=ThisRef},S) - when is_list(S) -> + when ?is_chardata(S) -> ?CLASS(ThisT,wxMenuBar), S_UC = unicode:characters_to_binary([S,0]), wxe_util:cast(?wxMenuBar_SetLabel_1, @@ -316,7 +316,7 @@ setLabel(#wx_ref{type=ThisT,ref=ThisRef},S) -spec setLabel(This, Itemid, Label) -> 'ok' when This::wxMenuBar(), Itemid::integer(), Label::unicode:chardata(). setLabel(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Label) - when is_integer(Itemid),is_list(Label) -> + when is_integer(Itemid),?is_chardata(Label) -> ?CLASS(ThisT,wxMenuBar), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:cast(?wxMenuBar_SetLabel_2, @@ -326,7 +326,7 @@ setLabel(#wx_ref{type=ThisT,ref=ThisRef},Itemid,Label) -spec setLabelTop(This, Pos, Label) -> 'ok' when This::wxMenuBar(), Pos::integer(), Label::unicode:chardata(). setLabelTop(#wx_ref{type=ThisT,ref=ThisRef},Pos,Label) - when is_integer(Pos),is_list(Label) -> + when is_integer(Pos),?is_chardata(Label) -> ?CLASS(ThisT,wxMenuBar), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:cast(?wxMenuBar_SetLabelTop, @@ -650,6 +650,8 @@ fit(This) -> wxWindow:fit(This). %% @hidden findWindow(This,Winid) -> wxWindow:findWindow(This,Winid). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxMenuItem.erl b/lib/wx/src/gen/wxMenuItem.erl index 324910d15d..2e0a1c756a 100644 --- a/lib/wx/src/gen/wxMenuItem.erl +++ b/lib/wx/src/gen/wxMenuItem.erl @@ -153,7 +153,7 @@ getLabel(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec getLabelFromText(Text) -> unicode:charlist() when Text::unicode:chardata(). getLabelFromText(Text) - when is_list(Text) -> + when ?is_chardata(Text) -> Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxMenuItem_GetLabelFromText, <<(byte_size(Text_UC)):32/?UI,(Text_UC)/binary, 0:(((8- ((4+byte_size(Text_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -235,7 +235,7 @@ setBitmap(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=BitmapT,ref=BitmapRef}) - -spec setHelp(This, Str) -> 'ok' when This::wxMenuItem(), Str::unicode:chardata(). setHelp(#wx_ref{type=ThisT,ref=ThisRef},Str) - when is_list(Str) -> + when ?is_chardata(Str) -> ?CLASS(ThisT,wxMenuItem), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxMenuItem_SetHelp, @@ -263,7 +263,7 @@ setSubMenu(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=MenuT,ref=MenuRef}) -> -spec setText(This, Str) -> 'ok' when This::wxMenuItem(), Str::unicode:chardata(). setText(#wx_ref{type=ThisT,ref=ThisRef},Str) - when is_list(Str) -> + when ?is_chardata(Str) -> ?CLASS(ThisT,wxMenuItem), Str_UC = unicode:characters_to_binary([Str,0]), wxe_util:cast(?wxMenuItem_SetText, diff --git a/lib/wx/src/gen/wxMessageDialog.erl b/lib/wx/src/gen/wxMessageDialog.erl index 30e47529cc..46a832198c 100644 --- a/lib/wx/src/gen/wxMessageDialog.erl +++ b/lib/wx/src/gen/wxMessageDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -93,7 +93,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). Parent::wxWindow:wxWindow(), Message::unicode:chardata(). new(Parent,Message) - when is_record(Parent, wx_ref),is_list(Message) -> + when is_record(Parent, wx_ref),?is_chardata(Message) -> new(Parent,Message, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmessagedialog.html#wxmessagedialogwxmessagedialog">external documentation</a>. @@ -103,7 +103,7 @@ new(Parent,Message) | {'style', integer()} | {'pos', {X::integer(), Y::integer()}}. new(#wx_ref{type=ParentT,ref=ParentRef},Message, Options) - when is_list(Message),is_list(Options) -> + when ?is_chardata(Message),is_list(Options) -> ?CLASS(ParentT,wxWindow), Message_UC = unicode:characters_to_binary([Message,0]), MOpts = fun({caption, Caption}, Acc) -> Caption_UC = unicode:characters_to_binary([Caption,0]),[<<1:32/?UI,(byte_size(Caption_UC)):32/?UI,(Caption_UC)/binary, 0:(((8- ((0+byte_size(Caption_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -508,6 +508,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxMiniFrame.erl b/lib/wx/src/gen/wxMiniFrame.erl index 4ae9764819..a13ff18d9e 100644 --- a/lib/wx/src/gen/wxMiniFrame.erl +++ b/lib/wx/src/gen/wxMiniFrame.erl @@ -41,11 +41,11 @@ close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createStatusBar/1,createStatusBar/2,createToolBar/1,createToolBar/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientAreaOrigin/1, - getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, - getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientAreaOrigin/1,getClientSize/1,getContainingSizer/1,getCursor/1, + getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, getLabel/1,getMaxSize/1,getMenuBar/1,getMinSize/1,getName/1,getParent/1, getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, @@ -101,7 +101,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(). new(Parent,Id,Title) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> new(Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxminiframe.html#wxminiframewxminiframe">external documentation</a>. @@ -111,7 +111,7 @@ new(Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -127,7 +127,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) This::wxMiniFrame(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(). create(This,Parent,Id,Title) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Title) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title) -> create(This,Parent,Id,Title, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxminiframe.html#wxminiframecreate">external documentation</a>. @@ -137,7 +137,7 @@ create(This,Parent,Id,Title) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Title, Options) - when is_integer(Id),is_list(Title),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_list(Options) -> ?CLASS(ThisT,wxMiniFrame), ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), @@ -561,6 +561,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxMultiChoiceDialog.erl b/lib/wx/src/gen/wxMultiChoiceDialog.erl index 0436515256..9b3129cf53 100644 --- a/lib/wx/src/gen/wxMultiChoiceDialog.erl +++ b/lib/wx/src/gen/wxMultiChoiceDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -99,7 +99,7 @@ new() -> Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[unicode:chardata()]. new(Parent,Message,Caption,Choices) - when is_record(Parent, wx_ref),is_list(Message),is_list(Caption),is_list(Choices) -> + when is_record(Parent, wx_ref),?is_chardata(Message),?is_chardata(Caption),is_list(Choices) -> new(Parent,Message,Caption,Choices, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxmultichoicedialog.html#wxmultichoicedialogwxmultichoicedialog">external documentation</a>. @@ -108,7 +108,7 @@ new(Parent,Message,Caption,Choices) Option :: {'style', integer()} | {'pos', {X::integer(), Y::integer()}}. new(#wx_ref{type=ParentT,ref=ParentRef},Message,Caption,Choices, Options) - when is_list(Message),is_list(Caption),is_list(Choices),is_list(Options) -> + when ?is_chardata(Message),?is_chardata(Caption),is_list(Choices),is_list(Options) -> ?CLASS(ParentT,wxWindow), Message_UC = unicode:characters_to_binary([Message,0]), Caption_UC = unicode:characters_to_binary([Caption,0]), @@ -533,6 +533,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxNotebook.erl b/lib/wx/src/gen/wxNotebook.erl index 24f96ac88c..3a65cf54cd 100644 --- a/lib/wx/src/gen/wxNotebook.erl +++ b/lib/wx/src/gen/wxNotebook.erl @@ -43,29 +43,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -120,7 +120,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Winid, Options) This::wxNotebook(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). addPage(This,Page,Text) - when is_record(This, wx_ref),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_record(Page, wx_ref),?is_chardata(Text) -> addPage(This,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxnotebook.html#wxnotebookaddpage">external documentation</a>. @@ -129,7 +129,7 @@ addPage(This,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. addPage(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxNotebook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -312,7 +312,7 @@ hitTest(#wx_ref{type=ThisT,ref=ThisRef},{PtX,PtY}) This::wxNotebook(), Position::integer(), Win::wxWindow:wxWindow(), StrText::unicode:chardata(). insertPage(This,Position,Win,StrText) - when is_record(This, wx_ref),is_integer(Position),is_record(Win, wx_ref),is_list(StrText) -> + when is_record(This, wx_ref),is_integer(Position),is_record(Win, wx_ref),?is_chardata(StrText) -> insertPage(This,Position,Win,StrText, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxnotebook.html#wxnotebookinsertpage">external documentation</a>. @@ -321,7 +321,7 @@ insertPage(This,Position,Win,StrText) Option :: {'bSelect', boolean()} | {'imageId', integer()}. insertPage(#wx_ref{type=ThisT,ref=ThisRef},Position,#wx_ref{type=WinT,ref=WinRef},StrText, Options) - when is_integer(Position),is_list(StrText),is_list(Options) -> + when is_integer(Position),?is_chardata(StrText),is_list(Options) -> ?CLASS(ThisT,wxNotebook), ?CLASS(WinT,wxWindow), StrText_UC = unicode:characters_to_binary([StrText,0]), @@ -372,7 +372,7 @@ setPageImage(#wx_ref{type=ThisT,ref=ThisRef},NPage,NImage) -spec setPageText(This, NPage, StrText) -> boolean() when This::wxNotebook(), NPage::integer(), StrText::unicode:chardata(). setPageText(#wx_ref{type=ThisT,ref=ThisRef},NPage,StrText) - when is_integer(NPage),is_list(StrText) -> + when is_integer(NPage),?is_chardata(StrText) -> ?CLASS(ThisT,wxNotebook), StrText_UC = unicode:characters_to_binary([StrText,0]), wxe_util:call(?wxNotebook_SetPageText, @@ -725,6 +725,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPanel.erl b/lib/wx/src/gen/wxPanel.erl index 07898cf19e..9dcf124575 100644 --- a/lib/wx/src/gen/wxPanel.erl +++ b/lib/wx/src/gen/wxPanel.erl @@ -37,29 +37,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, + isExposed/5,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1, + lineUp/1,lower/1,makeModal/1,makeModal/2,move/2,move/3,move/4,moveAfterInTabOrder/2, + moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, + popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, + raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, + removeChild/2,reparent/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2,setCaret/2, + setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -473,6 +473,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPasswordEntryDialog.erl b/lib/wx/src/gen/wxPasswordEntryDialog.erl index e8ee8c8f37..5913834bb8 100644 --- a/lib/wx/src/gen/wxPasswordEntryDialog.erl +++ b/lib/wx/src/gen/wxPasswordEntryDialog.erl @@ -41,34 +41,34 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getValue/1,getVirtualSize/1, - getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, - hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, - initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, - isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, - isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, - lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, - move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, - pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, - popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, - refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, - requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, - scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, - setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, - setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, - setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, - setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, - setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getValue/1, + getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1, + hasScrollbar/2,hasTransparentBackground/1,hide/1,iconize/1,iconize/2, + inheritAttributes/1,initDialog/1,invalidateBestSize/1,isActive/1, + isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3,isExposed/5, + isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1,isShown/1, + isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, + maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, + navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, + popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, + refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, + reparent/2,requestUserAttention/1,requestUserAttention/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2, + setBackgroundStyle/2,setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2, + setCursor/2,setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1, + setFocusFromKbd/1,setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2, + setIcons/2,setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -95,7 +95,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). Parent::wxWindow:wxWindow(), Message::unicode:chardata(). new(Parent,Message) - when is_record(Parent, wx_ref),is_list(Message) -> + when is_record(Parent, wx_ref),?is_chardata(Message) -> new(Parent,Message, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxpasswordentrydialog.html#wxpasswordentrydialogwxpasswordentrydialog">external documentation</a>. @@ -106,7 +106,7 @@ new(Parent,Message) | {'style', integer()} | {'pos', {X::integer(), Y::integer()}}. new(#wx_ref{type=ParentT,ref=ParentRef},Message, Options) - when is_list(Message),is_list(Options) -> + when ?is_chardata(Message),is_list(Options) -> ?CLASS(ParentT,wxWindow), Message_UC = unicode:characters_to_binary([Message,0]), MOpts = fun({caption, Caption}, Acc) -> Caption_UC = unicode:characters_to_binary([Caption,0]),[<<1:32/?UI,(byte_size(Caption_UC)):32/?UI,(Caption_UC)/binary, 0:(((8- ((0+byte_size(Caption_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -517,6 +517,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPickerBase.erl b/lib/wx/src/gen/wxPickerBase.erl index 33931f9119..50e21c72b3 100644 --- a/lib/wx/src/gen/wxPickerBase.erl +++ b/lib/wx/src/gen/wxPickerBase.erl @@ -41,29 +41,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -530,6 +530,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPopupTransientWindow.erl b/lib/wx/src/gen/wxPopupTransientWindow.erl index b1feef6dcb..00f133b952 100644 --- a/lib/wx/src/gen/wxPopupTransientWindow.erl +++ b/lib/wx/src/gen/wxPopupTransientWindow.erl @@ -38,38 +38,39 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,position/3,raise/1, - refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, - setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, - setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, - setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, - setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, - setThemeEnabled/2,setToolTip/2,setTransparent/2,setVirtualSize/2, - setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, - setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, - show/1,show/2,thaw/1,transferDataFromWindow/1,transferDataToWindow/1, - update/1,updateWindowUI/1,updateWindowUI/2,validate/1,warpPointer/3]). + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,position/3,raise/1,refresh/1,refresh/2, + refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2,reparent/2, + screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, + scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2, + setBackgroundStyle/2,setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2, + setCursor/2,setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1, + setFocusFromKbd/1,setFont/2,setForegroundColour/2,setHelpText/2,setId/2, + setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setScrollPos/3, + setScrollPos/4,setScrollbar/5,setScrollbar/6,setSize/2,setSize/3,setSize/5, + setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4,setSizer/2, + setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2,setToolTip/2, + setTransparent/2,setVirtualSize/2,setVirtualSize/3,setVirtualSizeHints/2, + setVirtualSizeHints/3,setVirtualSizeHints/4,setWindowStyle/2,setWindowStyleFlag/2, + setWindowVariant/2,shouldInheritColours/1,show/1,show/2,thaw/1,transferDataFromWindow/1, + transferDataToWindow/1,update/1,updateWindowUI/1,updateWindowUI/2, + validate/1,warpPointer/3]). -export_type([wxPopupTransientWindow/0]). %% @hidden @@ -466,6 +467,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPopupWindow.erl b/lib/wx/src/gen/wxPopupWindow.erl index 962fd9903b..e95d447d22 100644 --- a/lib/wx/src/gen/wxPopupWindow.erl +++ b/lib/wx/src/gen/wxPopupWindow.erl @@ -37,29 +37,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -463,6 +463,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPreviewCanvas.erl b/lib/wx/src/gen/wxPreviewCanvas.erl index 67357dbd65..b1c6832aa9 100644 --- a/lib/wx/src/gen/wxPreviewCanvas.erl +++ b/lib/wx/src/gen/wxPreviewCanvas.erl @@ -40,8 +40,8 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - doPrepareDC/2,enable/1,enable/2,enableScrolling/3,findWindow/2,fit/1, - fitInside/1,freeze/1,getAcceleratorTable/1,getBackgroundColour/1, + doPrepareDC/2,dragAcceptFiles/2,enable/1,enable/2,enableScrolling/3, + findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1,getBackgroundColour/1, getBackgroundStyle/1,getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1, getChildren/1,getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, @@ -439,6 +439,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPreviewControlBar.erl b/lib/wx/src/gen/wxPreviewControlBar.erl index 4dd224b26b..46055202c4 100644 --- a/lib/wx/src/gen/wxPreviewControlBar.erl +++ b/lib/wx/src/gen/wxPreviewControlBar.erl @@ -39,38 +39,39 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFocusIgnoringChildren/1, - setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, - setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, - setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, - setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, - setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, - setThemeEnabled/2,setToolTip/2,setTransparent/2,setVirtualSize/2, - setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, - setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, - show/1,show/2,thaw/1,transferDataFromWindow/1,transferDataToWindow/1, - update/1,updateWindowUI/1,updateWindowUI/2,validate/1,warpPointer/3]). + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFocusIgnoringChildren/1,setFont/2,setForegroundColour/2,setHelpText/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setScrollPos/3, + setScrollPos/4,setScrollbar/5,setScrollbar/6,setSize/2,setSize/3,setSize/5, + setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4,setSizer/2, + setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2,setToolTip/2, + setTransparent/2,setVirtualSize/2,setVirtualSize/3,setVirtualSizeHints/2, + setVirtualSizeHints/3,setVirtualSizeHints/4,setWindowStyle/2,setWindowStyleFlag/2, + setWindowVariant/2,shouldInheritColours/1,show/1,show/2,thaw/1,transferDataFromWindow/1, + transferDataToWindow/1,update/1,updateWindowUI/1,updateWindowUI/2, + validate/1,warpPointer/3]). -export_type([wxPreviewControlBar/0]). %% @hidden @@ -470,6 +471,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPreviewFrame.erl b/lib/wx/src/gen/wxPreviewFrame.erl index 2f530b49ea..f509faa503 100644 --- a/lib/wx/src/gen/wxPreviewFrame.erl +++ b/lib/wx/src/gen/wxPreviewFrame.erl @@ -42,11 +42,11 @@ close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createStatusBar/1,createStatusBar/2,createToolBar/1,createToolBar/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientAreaOrigin/1, - getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, - getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientAreaOrigin/1,getClientSize/1,getContainingSizer/1,getCursor/1, + getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, getLabel/1,getMaxSize/1,getMenuBar/1,getMinSize/1,getName/1,getParent/1, getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, @@ -564,6 +564,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPrintData.erl b/lib/wx/src/gen/wxPrintData.erl index 6b6b678adf..b6815da90b 100644 --- a/lib/wx/src/gen/wxPrintData.erl +++ b/lib/wx/src/gen/wxPrintData.erl @@ -205,7 +205,7 @@ setPaperId(#wx_ref{type=ThisT,ref=ThisRef},SizeId) -spec setPrinterName(This, Name) -> 'ok' when This::wxPrintData(), Name::unicode:chardata(). setPrinterName(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxPrintData), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:cast(?wxPrintData_SetPrinterName, diff --git a/lib/wx/src/gen/wxPrintDialog.erl b/lib/wx/src/gen/wxPrintDialog.erl index d4188e79c4..f41383c829 100644 --- a/lib/wx/src/gen/wxPrintDialog.erl +++ b/lib/wx/src/gen/wxPrintDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -530,6 +530,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxPrinter.erl b/lib/wx/src/gen/wxPrinter.erl index b9fb1c07bd..bdca37b4a8 100644 --- a/lib/wx/src/gen/wxPrinter.erl +++ b/lib/wx/src/gen/wxPrinter.erl @@ -122,7 +122,7 @@ printDialog(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef}) -spec reportError(This, Parent, Printout, Message) -> 'ok' when This::wxPrinter(), Parent::wxWindow:wxWindow(), Printout::wxPrintout:wxPrintout(), Message::unicode:chardata(). reportError(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},#wx_ref{type=PrintoutT,ref=PrintoutRef},Message) - when is_list(Message) -> + when ?is_chardata(Message) -> ?CLASS(ThisT,wxPrinter), ?CLASS(ParentT,wxWindow), ?CLASS(PrintoutT,wxPrintout), diff --git a/lib/wx/src/gen/wxProgressDialog.erl b/lib/wx/src/gen/wxProgressDialog.erl index 8e275f9dc8..cadb8497dd 100644 --- a/lib/wx/src/gen/wxProgressDialog.erl +++ b/lib/wx/src/gen/wxProgressDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,updateWindowUI/1, @@ -93,7 +93,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). Title::unicode:chardata(), Message::unicode:chardata(). new(Title,Message) - when is_list(Title),is_list(Message) -> + when ?is_chardata(Title),?is_chardata(Message) -> new(Title,Message, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxprogressdialog.html#wxprogressdialogwxprogressdialog">external documentation</a>. @@ -103,7 +103,7 @@ new(Title,Message) | {'parent', wxWindow:wxWindow()} | {'style', integer()}. new(Title,Message, Options) - when is_list(Title),is_list(Message),is_list(Options) -> + when ?is_chardata(Title),?is_chardata(Message),is_list(Options) -> Title_UC = unicode:characters_to_binary([Title,0]), Message_UC = unicode:characters_to_binary([Message,0]), MOpts = fun({maximum, Maximum}, Acc) -> [<<1:32/?UI,Maximum:32/?UI>>|Acc]; @@ -543,6 +543,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxRadioBox.erl b/lib/wx/src/gen/wxRadioBox.erl index 348d75db2a..34e7f038ec 100644 --- a/lib/wx/src/gen/wxRadioBox.erl +++ b/lib/wx/src/gen/wxRadioBox.erl @@ -41,28 +41,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1,getBackgroundColour/1, - getBackgroundStyle/1,getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1, - getChildren/1,getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, - getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, - getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, - getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, - getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, - getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, - hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, - initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, - isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, - layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, - move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, - navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, - popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, - refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, - screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, - setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, - setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, - setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, - setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, + getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, + getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, + getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, + getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, + getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, + getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, + getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, + hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, + isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, + isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, + move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, + navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, + popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, + refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, + reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, + scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, + setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, + setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, + setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, + setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -86,7 +87,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()]. new(Parent,Id,Title,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> new(Parent,Id,Title,Pos,Size,Choices, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxradiobox.html#wxradioboxwxradiobox">external documentation</a>. @@ -96,7 +97,7 @@ new(Parent,Id,Title,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) | {'style', integer()} | {'val', wx:wx_object()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title,{PosX,PosY},{SizeW,SizeH},Choices, Options) - when is_integer(Id),is_list(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices),is_list(Options) -> ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), Choices_UCA = [unicode:characters_to_binary([ChoicesTemp,0]) || @@ -114,7 +115,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Title,{PosX,PosY},{SizeW,SizeH},Choic This::wxRadioBox(), Parent::wxWindow:wxWindow(), Id::integer(), Title::unicode:chardata(), Pos::{X::integer(), Y::integer()}, Size::{W::integer(), H::integer()}, Choices::[unicode:chardata()]. create(This,Parent,Id,Title,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices) -> create(This,Parent,Id,Title,Pos,Size,Choices, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxradiobox.html#wxradioboxcreate">external documentation</a>. @@ -124,7 +125,7 @@ create(This,Parent,Id,Title,Pos={PosX,PosY},Size={SizeW,SizeH},Choices) | {'style', integer()} | {'val', wx:wx_object()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Title,{PosX,PosY},{SizeW,SizeH},Choices, Options) - when is_integer(Id),is_list(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices),is_list(Options) -> + when is_integer(Id),?is_chardata(Title),is_integer(PosX),is_integer(PosY),is_integer(SizeW),is_integer(SizeH),is_list(Choices),is_list(Options) -> ?CLASS(ThisT,wxRadioBox), ?CLASS(ParentT,wxWindow), Title_UC = unicode:characters_to_binary([Title,0]), @@ -319,7 +320,7 @@ isItemShown(#wx_ref{type=ThisT,ref=ThisRef},N) -spec setItemHelpText(This, N, HelpText) -> 'ok' when This::wxRadioBox(), N::integer(), HelpText::unicode:chardata(). setItemHelpText(#wx_ref{type=ThisT,ref=ThisRef},N,HelpText) - when is_integer(N),is_list(HelpText) -> + when is_integer(N),?is_chardata(HelpText) -> ?CLASS(ThisT,wxRadioBox), HelpText_UC = unicode:characters_to_binary([HelpText,0]), wxe_util:cast(?wxRadioBox_SetItemHelpText, @@ -329,7 +330,7 @@ setItemHelpText(#wx_ref{type=ThisT,ref=ThisRef},N,HelpText) -spec setItemToolTip(This, Item, Text) -> 'ok' when This::wxRadioBox(), Item::integer(), Text::unicode:chardata(). setItemToolTip(#wx_ref{type=ThisT,ref=ThisRef},Item,Text) - when is_integer(Item),is_list(Text) -> + when is_integer(Item),?is_chardata(Text) -> ?CLASS(ThisT,wxRadioBox), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxRadioBox_SetItemToolTip, @@ -656,6 +657,8 @@ fit(This) -> wxWindow:fit(This). %% @hidden findWindow(This,Winid) -> wxWindow:findWindow(This,Winid). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxRadioButton.erl b/lib/wx/src/gen/wxRadioButton.erl index 4487724be6..f90afc82a5 100644 --- a/lib/wx/src/gen/wxRadioButton.erl +++ b/lib/wx/src/gen/wxRadioButton.erl @@ -38,29 +38,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -90,7 +90,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). new(Parent,Id,Label) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> new(Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxradiobutton.html#wxradiobuttonwxradiobutton">external documentation</a>. @@ -101,7 +101,7 @@ new(Parent,Id,Label) | {'style', integer()} | {'validator', wx:wx_object()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -118,7 +118,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) This::wxRadioButton(), Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). create(This,Parent,Id,Label) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> create(This,Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxradiobutton.html#wxradiobuttoncreate">external documentation</a>. @@ -129,7 +129,7 @@ create(This,Parent,Id,Label) | {'style', integer()} | {'validator', wx:wx_object()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxRadioButton), ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), @@ -488,6 +488,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSashLayoutWindow.erl b/lib/wx/src/gen/wxSashLayoutWindow.erl index ae081ae800..6c0c0a389f 100644 --- a/lib/wx/src/gen/wxSashLayoutWindow.erl +++ b/lib/wx/src/gen/wxSashLayoutWindow.erl @@ -39,30 +39,31 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMaximumSizeX/1,getMaximumSizeY/1, - getMinSize/1,getMinimumSizeX/1,getMinimumSizeY/1,getName/1,getParent/1, - getPosition/1,getRect/1,getSashVisible/2,getScreenPosition/1,getScreenRect/1, - getScrollPos/2,getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1, - getTextExtent/2,getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, - getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, - hasTransparentBackground/1,hide/1,inheritAttributes/1,initDialog/1, - invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1, - lineUp/1,lower/1,makeModal/1,makeModal/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,screenToClient/1,screenToClient/2,scrollLines/2, - scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, - setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2,setCaret/2, - setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, - setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, - setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMaximumSizeX/1,getMaximumSizeY/1,getMinSize/1,getMinimumSizeX/1, + getMinimumSizeY/1,getName/1,getParent/1,getPosition/1,getRect/1,getSashVisible/2, + getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, + getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, + getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, + getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, + hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, + isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, + isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, + move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, + navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, + popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, + refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, + reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, + scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, + setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, + setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, + setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, + setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMaximumSizeX/2,setMaximumSizeY/2,setMinSize/2,setMinimumSizeX/2, setMinimumSizeY/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, setOwnForegroundColour/2,setPalette/2,setSashVisible/3,setScrollPos/3, @@ -540,6 +541,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSashWindow.erl b/lib/wx/src/gen/wxSashWindow.erl index 773e0f1ab0..b39e00fce2 100644 --- a/lib/wx/src/gen/wxSashWindow.erl +++ b/lib/wx/src/gen/wxSashWindow.erl @@ -39,29 +39,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -528,6 +528,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxScrollBar.erl b/lib/wx/src/gen/wxScrollBar.erl index 7f70d9d97b..392c7af7a4 100644 --- a/lib/wx/src/gen/wxScrollBar.erl +++ b/lib/wx/src/gen/wxScrollBar.erl @@ -39,29 +39,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setSize/2,setSize/3,setSize/5, setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4,setSizer/2, @@ -528,6 +528,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxScrolledWindow.erl b/lib/wx/src/gen/wxScrolledWindow.erl index 70bc5adbd9..271c7f5c5a 100644 --- a/lib/wx/src/gen/wxScrolledWindow.erl +++ b/lib/wx/src/gen/wxScrolledWindow.erl @@ -41,38 +41,39 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFocusIgnoringChildren/1, - setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, - setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, - setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, - setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, - setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, - setThemeEnabled/2,setToolTip/2,setTransparent/2,setVirtualSize/2, - setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, - setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, - show/1,show/2,thaw/1,transferDataFromWindow/1,transferDataToWindow/1, - update/1,updateWindowUI/1,updateWindowUI/2,validate/1,warpPointer/3]). + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFocusIgnoringChildren/1,setFont/2,setForegroundColour/2,setHelpText/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setScrollPos/3, + setScrollPos/4,setScrollbar/5,setScrollbar/6,setSize/2,setSize/3,setSize/5, + setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4,setSizer/2, + setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2,setToolTip/2, + setTransparent/2,setVirtualSize/2,setVirtualSize/3,setVirtualSizeHints/2, + setVirtualSizeHints/3,setVirtualSizeHints/4,setWindowStyle/2,setWindowStyleFlag/2, + setWindowVariant/2,shouldInheritColours/1,show/1,show/2,thaw/1,transferDataFromWindow/1, + transferDataToWindow/1,update/1,updateWindowUI/1,updateWindowUI/2, + validate/1,warpPointer/3]). -export_type([wxScrolledWindow/0]). %% @hidden @@ -577,6 +578,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSingleChoiceDialog.erl b/lib/wx/src/gen/wxSingleChoiceDialog.erl index baff296d11..d5e4977abc 100644 --- a/lib/wx/src/gen/wxSingleChoiceDialog.erl +++ b/lib/wx/src/gen/wxSingleChoiceDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -99,7 +99,7 @@ new() -> Parent::wxWindow:wxWindow(), Message::unicode:chardata(), Caption::unicode:chardata(), Choices::[unicode:chardata()]. new(Parent,Message,Caption,Choices) - when is_record(Parent, wx_ref),is_list(Message),is_list(Caption),is_list(Choices) -> + when is_record(Parent, wx_ref),?is_chardata(Message),?is_chardata(Caption),is_list(Choices) -> new(Parent,Message,Caption,Choices, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxsinglechoicedialog.html#wxsinglechoicedialogwxsinglechoicedialog">external documentation</a>. @@ -108,7 +108,7 @@ new(Parent,Message,Caption,Choices) Option :: {'style', integer()} | {'pos', {X::integer(), Y::integer()}}. new(#wx_ref{type=ParentT,ref=ParentRef},Message,Caption,Choices, Options) - when is_list(Message),is_list(Caption),is_list(Choices),is_list(Options) -> + when ?is_chardata(Message),?is_chardata(Caption),is_list(Choices),is_list(Options) -> ?CLASS(ParentT,wxWindow), Message_UC = unicode:characters_to_binary([Message,0]), Caption_UC = unicode:characters_to_binary([Caption,0]), @@ -540,6 +540,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSlider.erl b/lib/wx/src/gen/wxSlider.erl index a215b3c1d5..81a49d3506 100644 --- a/lib/wx/src/gen/wxSlider.erl +++ b/lib/wx/src/gen/wxSlider.erl @@ -40,29 +40,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -564,6 +564,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSpinButton.erl b/lib/wx/src/gen/wxSpinButton.erl index 1c8d674d05..e555875eb4 100644 --- a/lib/wx/src/gen/wxSpinButton.erl +++ b/lib/wx/src/gen/wxSpinButton.erl @@ -39,29 +39,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -512,6 +512,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSpinCtrl.erl b/lib/wx/src/gen/wxSpinCtrl.erl index f8a46dd146..a1d359b117 100644 --- a/lib/wx/src/gen/wxSpinCtrl.erl +++ b/lib/wx/src/gen/wxSpinCtrl.erl @@ -39,29 +39,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -172,7 +172,7 @@ setValue(#wx_ref{type=ThisT,ref=ThisRef},Value) wxe_util:cast(?wxSpinCtrl_SetValue_1_0, <<ThisRef:32/?UI,Value:32/?UI>>); setValue(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxSpinCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxSpinCtrl_SetValue_1_1, @@ -549,6 +549,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSplashScreen.erl b/lib/wx/src/gen/wxSplashScreen.erl index 3b53e670c1..68eeb40f73 100644 --- a/lib/wx/src/gen/wxSplashScreen.erl +++ b/lib/wx/src/gen/wxSplashScreen.erl @@ -41,11 +41,11 @@ close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createStatusBar/1,createStatusBar/2,createToolBar/1,createToolBar/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientAreaOrigin/1, - getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, - getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientAreaOrigin/1,getClientSize/1,getContainingSizer/1,getCursor/1, + getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, getLabel/1,getMaxSize/1,getMenuBar/1,getMinSize/1,getName/1,getParent/1, getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, @@ -550,6 +550,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSplitterWindow.erl b/lib/wx/src/gen/wxSplitterWindow.erl index f311d5011f..aeda0daa6e 100644 --- a/lib/wx/src/gen/wxSplitterWindow.erl +++ b/lib/wx/src/gen/wxSplitterWindow.erl @@ -42,29 +42,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -679,6 +679,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxStaticBitmap.erl b/lib/wx/src/gen/wxStaticBitmap.erl index 3ef1499a28..9a46e3125e 100644 --- a/lib/wx/src/gen/wxStaticBitmap.erl +++ b/lib/wx/src/gen/wxStaticBitmap.erl @@ -38,29 +38,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -484,6 +484,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxStaticBox.erl b/lib/wx/src/gen/wxStaticBox.erl index 46cca3b6f3..8a789d2d62 100644 --- a/lib/wx/src/gen/wxStaticBox.erl +++ b/lib/wx/src/gen/wxStaticBox.erl @@ -38,29 +38,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -90,7 +90,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). new(Parent,Id,Label) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> new(Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxstaticbox.html#wxstaticboxwxstaticbox">external documentation</a>. @@ -100,7 +100,7 @@ new(Parent,Id,Label) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -116,7 +116,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) This::wxStaticBox(), Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). create(This,Parent,Id,Label) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> create(This,Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxstaticbox.html#wxstaticboxcreate">external documentation</a>. @@ -126,7 +126,7 @@ create(This,Parent,Id,Label) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxStaticBox), ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), @@ -467,6 +467,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxStaticLine.erl b/lib/wx/src/gen/wxStaticLine.erl index 94dd339cfc..b31743eb03 100644 --- a/lib/wx/src/gen/wxStaticLine.erl +++ b/lib/wx/src/gen/wxStaticLine.erl @@ -39,29 +39,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -484,6 +484,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxStaticText.erl b/lib/wx/src/gen/wxStaticText.erl index 37d0219bc6..83e83305fb 100644 --- a/lib/wx/src/gen/wxStaticText.erl +++ b/lib/wx/src/gen/wxStaticText.erl @@ -38,30 +38,30 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, - getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setMaxSize/2,setMinSize/2, - setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getMaxSize/1,getMinSize/1, + getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setMaxSize/2, + setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, @@ -90,7 +90,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). new(Parent,Id,Label) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> new(Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxstatictext.html#wxstatictextwxstatictext">external documentation</a>. @@ -100,7 +100,7 @@ new(Parent,Id,Label) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -116,7 +116,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) This::wxStaticText(), Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). create(This,Parent,Id,Label) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> create(This,Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxstatictext.html#wxstatictextcreate">external documentation</a>. @@ -126,7 +126,7 @@ create(This,Parent,Id,Label) | {'size', {W::integer(), H::integer()}} | {'style', integer()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxStaticText), ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), @@ -150,7 +150,7 @@ getLabel(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setLabel(This, Label) -> 'ok' when This::wxStaticText(), Label::unicode:chardata(). setLabel(#wx_ref{type=ThisT,ref=ThisRef},Label) - when is_list(Label) -> + when ?is_chardata(Label) -> ?CLASS(ThisT,wxStaticText), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:cast(?wxStaticText_SetLabel, @@ -490,6 +490,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxStatusBar.erl b/lib/wx/src/gen/wxStatusBar.erl index d0ce65273b..db86136f5a 100644 --- a/lib/wx/src/gen/wxStatusBar.erl +++ b/lib/wx/src/gen/wxStatusBar.erl @@ -40,29 +40,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -198,7 +198,7 @@ popStatusText(#wx_ref{type=ThisT,ref=ThisRef}, Options) This::wxStatusBar(), Text::unicode:chardata(). pushStatusText(This,Text) - when is_record(This, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),?is_chardata(Text) -> pushStatusText(This,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxstatusbar.html#wxstatusbarpushstatustext">external documentation</a>. @@ -206,7 +206,7 @@ pushStatusText(This,Text) This::wxStatusBar(), Text::unicode:chardata(), Option :: {'number', integer()}. pushStatusText(#wx_ref{type=ThisT,ref=ThisRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxStatusBar), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({number, Number}, Acc) -> [<<1:32/?UI,Number:32/?UI>>|Acc]; @@ -251,7 +251,7 @@ setMinHeight(#wx_ref{type=ThisT,ref=ThisRef},Height) This::wxStatusBar(), Text::unicode:chardata(). setStatusText(This,Text) - when is_record(This, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),?is_chardata(Text) -> setStatusText(This,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxstatusbar.html#wxstatusbarsetstatustext">external documentation</a>. @@ -259,7 +259,7 @@ setStatusText(This,Text) This::wxStatusBar(), Text::unicode:chardata(), Option :: {'number', integer()}. setStatusText(#wx_ref{type=ThisT,ref=ThisRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxStatusBar), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({number, Number}, Acc) -> [<<1:32/?UI,Number:32/?UI>>|Acc]; @@ -616,6 +616,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxStyledTextCtrl.erl b/lib/wx/src/gen/wxStyledTextCtrl.erl index 15ef728659..c684141224 100644 --- a/lib/wx/src/gen/wxStyledTextCtrl.erl +++ b/lib/wx/src/gen/wxStyledTextCtrl.erl @@ -140,28 +140,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lower/1,makeModal/1,makeModal/2,move/2,move/3, - move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, - parent_class/1,popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3, - popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3, - releaseMouse/1,removeChild/2,reparent/2,screenToClient/1,screenToClient/2, - scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, - setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2,setCaret/2, - setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, - setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, - setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lower/1,makeModal/1,makeModal/2,move/2,move/3,move/4,moveAfterInTabOrder/2, + moveBeforeInTabOrder/2,navigate/1,navigate/2,parent_class/1,popEventHandler/1, + popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, + refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, + reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, + scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, + setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, + setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, + setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, + setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -245,7 +246,7 @@ create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef}, Opti -spec addText(This, Text) -> 'ok' when This::wxStyledTextCtrl(), Text::unicode:chardata(). addText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxStyledTextCtrl_AddText, @@ -264,7 +265,7 @@ addStyledText(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=DataT,ref=DataRef}) - -spec insertText(This, Pos, Text) -> 'ok' when This::wxStyledTextCtrl(), Pos::integer(), Text::unicode:chardata(). insertText(#wx_ref{type=ThisT,ref=ThisRef},Pos,Text) - when is_integer(Pos),is_list(Text) -> + when is_integer(Pos),?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxStyledTextCtrl_InsertText, @@ -822,7 +823,7 @@ styleSetSize(#wx_ref{type=ThisT,ref=ThisRef},Style,SizePoints) -spec styleSetFaceName(This, Style, FontName) -> 'ok' when This::wxStyledTextCtrl(), Style::integer(), FontName::unicode:chardata(). styleSetFaceName(#wx_ref{type=ThisT,ref=ThisRef},Style,FontName) - when is_integer(Style),is_list(FontName) -> + when is_integer(Style),?is_chardata(FontName) -> ?CLASS(ThisT,wxStyledTextCtrl), FontName_UC = unicode:characters_to_binary([FontName,0]), wxe_util:cast(?wxStyledTextCtrl_StyleSetFaceName, @@ -981,7 +982,7 @@ setCaretPeriod(#wx_ref{type=ThisT,ref=ThisRef},PeriodMilliseconds) -spec setWordChars(This, Characters) -> 'ok' when This::wxStyledTextCtrl(), Characters::unicode:chardata(). setWordChars(#wx_ref{type=ThisT,ref=ThisRef},Characters) - when is_list(Characters) -> + when ?is_chardata(Characters) -> ?CLASS(ThisT,wxStyledTextCtrl), Characters_UC = unicode:characters_to_binary([Characters,0]), wxe_util:cast(?wxStyledTextCtrl_SetWordChars, @@ -1129,7 +1130,7 @@ setCaretLineBackground(#wx_ref{type=ThisT,ref=ThisRef},Back) -spec autoCompShow(This, LenEntered, ItemList) -> 'ok' when This::wxStyledTextCtrl(), LenEntered::integer(), ItemList::unicode:chardata(). autoCompShow(#wx_ref{type=ThisT,ref=ThisRef},LenEntered,ItemList) - when is_integer(LenEntered),is_list(ItemList) -> + when is_integer(LenEntered),?is_chardata(ItemList) -> ?CLASS(ThisT,wxStyledTextCtrl), ItemList_UC = unicode:characters_to_binary([ItemList,0]), wxe_util:cast(?wxStyledTextCtrl_AutoCompShow, @@ -1171,7 +1172,7 @@ autoCompComplete(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec autoCompStops(This, CharacterSet) -> 'ok' when This::wxStyledTextCtrl(), CharacterSet::unicode:chardata(). autoCompStops(#wx_ref{type=ThisT,ref=ThisRef},CharacterSet) - when is_list(CharacterSet) -> + when ?is_chardata(CharacterSet) -> ?CLASS(ThisT,wxStyledTextCtrl), CharacterSet_UC = unicode:characters_to_binary([CharacterSet,0]), wxe_util:cast(?wxStyledTextCtrl_AutoCompStops, @@ -1198,7 +1199,7 @@ autoCompGetSeparator(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec autoCompSelect(This, Text) -> 'ok' when This::wxStyledTextCtrl(), Text::unicode:chardata(). autoCompSelect(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxStyledTextCtrl_AutoCompSelect, @@ -1225,7 +1226,7 @@ autoCompGetCancelAtStart(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec autoCompSetFillUps(This, CharacterSet) -> 'ok' when This::wxStyledTextCtrl(), CharacterSet::unicode:chardata(). autoCompSetFillUps(#wx_ref{type=ThisT,ref=ThisRef},CharacterSet) - when is_list(CharacterSet) -> + when ?is_chardata(CharacterSet) -> ?CLASS(ThisT,wxStyledTextCtrl), CharacterSet_UC = unicode:characters_to_binary([CharacterSet,0]), wxe_util:cast(?wxStyledTextCtrl_AutoCompSetFillUps, @@ -1269,7 +1270,7 @@ autoCompGetIgnoreCase(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec userListShow(This, ListType, ItemList) -> 'ok' when This::wxStyledTextCtrl(), ListType::integer(), ItemList::unicode:chardata(). userListShow(#wx_ref{type=ThisT,ref=ThisRef},ListType,ItemList) - when is_integer(ListType),is_list(ItemList) -> + when is_integer(ListType),?is_chardata(ItemList) -> ?CLASS(ThisT,wxStyledTextCtrl), ItemList_UC = unicode:characters_to_binary([ItemList,0]), wxe_util:cast(?wxStyledTextCtrl_UserListShow, @@ -1614,7 +1615,7 @@ getPrintColourMode(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxStyledTextCtrl(), MinPos::integer(), MaxPos::integer(), Text::unicode:chardata(). findText(This,MinPos,MaxPos,Text) - when is_record(This, wx_ref),is_integer(MinPos),is_integer(MaxPos),is_list(Text) -> + when is_record(This, wx_ref),is_integer(MinPos),is_integer(MaxPos),?is_chardata(Text) -> findText(This,MinPos,MaxPos,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxstyledtextctrl.html#wxstyledtextctrlfindtext">external documentation</a>. @@ -1622,7 +1623,7 @@ findText(This,MinPos,MaxPos,Text) This::wxStyledTextCtrl(), MinPos::integer(), MaxPos::integer(), Text::unicode:chardata(), Option :: {'flags', integer()}. findText(#wx_ref{type=ThisT,ref=ThisRef},MinPos,MaxPos,Text, Options) - when is_integer(MinPos),is_integer(MaxPos),is_list(Text),is_list(Options) -> + when is_integer(MinPos),is_integer(MaxPos),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({flags, Flags}, Acc) -> [<<1:32/?UI,Flags:32/?UI>>|Acc]; @@ -1783,7 +1784,7 @@ ensureCaretVisible(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec replaceSelection(This, Text) -> 'ok' when This::wxStyledTextCtrl(), Text::unicode:chardata(). replaceSelection(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxStyledTextCtrl_ReplaceSelection, @@ -1866,7 +1867,7 @@ clear(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setText(This, Text) -> 'ok' when This::wxStyledTextCtrl(), Text::unicode:chardata(). setText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxStyledTextCtrl_SetText, @@ -1951,7 +1952,7 @@ getTargetEnd(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec replaceTarget(This, Text) -> integer() when This::wxStyledTextCtrl(), Text::unicode:chardata(). replaceTarget(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxStyledTextCtrl_ReplaceTarget, @@ -1961,7 +1962,7 @@ replaceTarget(#wx_ref{type=ThisT,ref=ThisRef},Text) -spec searchInTarget(This, Text) -> integer() when This::wxStyledTextCtrl(), Text::unicode:chardata(). searchInTarget(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxStyledTextCtrl_SearchInTarget, @@ -1988,7 +1989,7 @@ getSearchFlags(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec callTipShow(This, Pos, Definition) -> 'ok' when This::wxStyledTextCtrl(), Pos::integer(), Definition::unicode:chardata(). callTipShow(#wx_ref{type=ThisT,ref=ThisRef},Pos,Definition) - when is_integer(Pos),is_list(Definition) -> + when is_integer(Pos),?is_chardata(Definition) -> ?CLASS(ThisT,wxStyledTextCtrl), Definition_UC = unicode:characters_to_binary([Definition,0]), wxe_util:cast(?wxStyledTextCtrl_CallTipShow, @@ -2382,7 +2383,7 @@ getScrollWidth(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec textWidth(This, Style, Text) -> integer() when This::wxStyledTextCtrl(), Style::integer(), Text::unicode:chardata(). textWidth(#wx_ref{type=ThisT,ref=ThisRef},Style,Text) - when is_integer(Style),is_list(Text) -> + when is_integer(Style),?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxStyledTextCtrl_TextWidth, @@ -2426,7 +2427,7 @@ getUseVerticalScrollBar(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec appendText(This, Text) -> 'ok' when This::wxStyledTextCtrl(), Text::unicode:chardata(). appendText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxStyledTextCtrl_AppendText, @@ -3073,7 +3074,7 @@ searchAnchor(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec searchNext(This, Flags, Text) -> integer() when This::wxStyledTextCtrl(), Flags::integer(), Text::unicode:chardata(). searchNext(#wx_ref{type=ThisT,ref=ThisRef},Flags,Text) - when is_integer(Flags),is_list(Text) -> + when is_integer(Flags),?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxStyledTextCtrl_SearchNext, @@ -3083,7 +3084,7 @@ searchNext(#wx_ref{type=ThisT,ref=ThisRef},Flags,Text) -spec searchPrev(This, Flags, Text) -> integer() when This::wxStyledTextCtrl(), Flags::integer(), Text::unicode:chardata(). searchPrev(#wx_ref{type=ThisT,ref=ThisRef},Flags,Text) - when is_integer(Flags),is_list(Text) -> + when is_integer(Flags),?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:call(?wxStyledTextCtrl_SearchPrev, @@ -3414,7 +3415,7 @@ copyRange(#wx_ref{type=ThisT,ref=ThisRef},Start,End) -spec copyText(This, Length, Text) -> 'ok' when This::wxStyledTextCtrl(), Length::integer(), Text::unicode:chardata(). copyText(#wx_ref{type=ThisT,ref=ThisRef},Length,Text) - when is_integer(Length),is_list(Text) -> + when is_integer(Length),?is_chardata(Text) -> ?CLASS(ThisT,wxStyledTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxStyledTextCtrl_CopyText, @@ -3577,7 +3578,7 @@ wordRightEndExtend(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setWhitespaceChars(This, Characters) -> 'ok' when This::wxStyledTextCtrl(), Characters::unicode:chardata(). setWhitespaceChars(#wx_ref{type=ThisT,ref=ThisRef},Characters) - when is_list(Characters) -> + when ?is_chardata(Characters) -> ?CLASS(ThisT,wxStyledTextCtrl), Characters_UC = unicode:characters_to_binary([Characters,0]), wxe_util:cast(?wxStyledTextCtrl_SetWhitespaceChars, @@ -3730,7 +3731,7 @@ colourise(#wx_ref{type=ThisT,ref=ThisRef},Start,End) -spec setProperty(This, Key, Value) -> 'ok' when This::wxStyledTextCtrl(), Key::unicode:chardata(), Value::unicode:chardata(). setProperty(#wx_ref{type=ThisT,ref=ThisRef},Key,Value) - when is_list(Key),is_list(Value) -> + when ?is_chardata(Key),?is_chardata(Value) -> ?CLASS(ThisT,wxStyledTextCtrl), Key_UC = unicode:characters_to_binary([Key,0]), Value_UC = unicode:characters_to_binary([Value,0]), @@ -3741,7 +3742,7 @@ setProperty(#wx_ref{type=ThisT,ref=ThisRef},Key,Value) -spec setKeyWords(This, KeywordSet, KeyWords) -> 'ok' when This::wxStyledTextCtrl(), KeywordSet::integer(), KeyWords::unicode:chardata(). setKeyWords(#wx_ref{type=ThisT,ref=ThisRef},KeywordSet,KeyWords) - when is_integer(KeywordSet),is_list(KeyWords) -> + when is_integer(KeywordSet),?is_chardata(KeyWords) -> ?CLASS(ThisT,wxStyledTextCtrl), KeyWords_UC = unicode:characters_to_binary([KeyWords,0]), wxe_util:cast(?wxStyledTextCtrl_SetKeyWords, @@ -3751,7 +3752,7 @@ setKeyWords(#wx_ref{type=ThisT,ref=ThisRef},KeywordSet,KeyWords) -spec setLexerLanguage(This, Language) -> 'ok' when This::wxStyledTextCtrl(), Language::unicode:chardata(). setLexerLanguage(#wx_ref{type=ThisT,ref=ThisRef},Language) - when is_list(Language) -> + when ?is_chardata(Language) -> ?CLASS(ThisT,wxStyledTextCtrl), Language_UC = unicode:characters_to_binary([Language,0]), wxe_util:cast(?wxStyledTextCtrl_SetLexerLanguage, @@ -3761,7 +3762,7 @@ setLexerLanguage(#wx_ref{type=ThisT,ref=ThisRef},Language) -spec getProperty(This, Key) -> unicode:charlist() when This::wxStyledTextCtrl(), Key::unicode:chardata(). getProperty(#wx_ref{type=ThisT,ref=ThisRef},Key) - when is_list(Key) -> + when ?is_chardata(Key) -> ?CLASS(ThisT,wxStyledTextCtrl), Key_UC = unicode:characters_to_binary([Key,0]), wxe_util:call(?wxStyledTextCtrl_GetProperty, @@ -3787,7 +3788,7 @@ getCurrentLine(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec styleSetSpec(This, StyleNum, Spec) -> 'ok' when This::wxStyledTextCtrl(), StyleNum::integer(), Spec::unicode:chardata(). styleSetSpec(#wx_ref{type=ThisT,ref=ThisRef},StyleNum,Spec) - when is_integer(StyleNum),is_list(Spec) -> + when is_integer(StyleNum),?is_chardata(Spec) -> ?CLASS(ThisT,wxStyledTextCtrl), Spec_UC = unicode:characters_to_binary([Spec,0]), wxe_util:cast(?wxStyledTextCtrl_StyleSetSpec, @@ -3808,7 +3809,7 @@ styleSetFont(#wx_ref{type=ThisT,ref=ThisRef},StyleNum,#wx_ref{type=FontT,ref=Fon This::wxStyledTextCtrl(), StyleNum::integer(), Size::integer(), FaceName::unicode:chardata(), Bold::boolean(), Italic::boolean(), Underline::boolean(). styleSetFontAttr(This,StyleNum,Size,FaceName,Bold,Italic,Underline) - when is_record(This, wx_ref),is_integer(StyleNum),is_integer(Size),is_list(FaceName),is_boolean(Bold),is_boolean(Italic),is_boolean(Underline) -> + when is_record(This, wx_ref),is_integer(StyleNum),is_integer(Size),?is_chardata(FaceName),is_boolean(Bold),is_boolean(Italic),is_boolean(Underline) -> styleSetFontAttr(This,StyleNum,Size,FaceName,Bold,Italic,Underline, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxstyledtextctrl.html#wxstyledtextctrlstylesetfontattr">external documentation</a>. @@ -3817,7 +3818,7 @@ styleSetFontAttr(This,StyleNum,Size,FaceName,Bold,Italic,Underline) This::wxStyledTextCtrl(), StyleNum::integer(), Size::integer(), FaceName::unicode:chardata(), Bold::boolean(), Italic::boolean(), Underline::boolean(), Option :: {'encoding', wx:wx_enum()}. styleSetFontAttr(#wx_ref{type=ThisT,ref=ThisRef},StyleNum,Size,FaceName,Bold,Italic,Underline, Options) - when is_integer(StyleNum),is_integer(Size),is_list(FaceName),is_boolean(Bold),is_boolean(Italic),is_boolean(Underline),is_list(Options) -> + when is_integer(StyleNum),is_integer(Size),?is_chardata(FaceName),is_boolean(Bold),is_boolean(Italic),is_boolean(Underline),is_list(Options) -> ?CLASS(ThisT,wxStyledTextCtrl), FaceName_UC = unicode:characters_to_binary([FaceName,0]), MOpts = fun({encoding, Encoding}, Acc) -> [<<1:32/?UI,Encoding:32/?UI>>|Acc]; @@ -3937,7 +3938,7 @@ setLastKeydownProcessed(#wx_ref{type=ThisT,ref=ThisRef},Val) -spec saveFile(This, Filename) -> boolean() when This::wxStyledTextCtrl(), Filename::unicode:chardata(). saveFile(#wx_ref{type=ThisT,ref=ThisRef},Filename) - when is_list(Filename) -> + when ?is_chardata(Filename) -> ?CLASS(ThisT,wxStyledTextCtrl), Filename_UC = unicode:characters_to_binary([Filename,0]), wxe_util:call(?wxStyledTextCtrl_SaveFile, @@ -3947,7 +3948,7 @@ saveFile(#wx_ref{type=ThisT,ref=ThisRef},Filename) -spec loadFile(This, Filename) -> boolean() when This::wxStyledTextCtrl(), Filename::unicode:chardata(). loadFile(#wx_ref{type=ThisT,ref=ThisRef},Filename) - when is_list(Filename) -> + when ?is_chardata(Filename) -> ?CLASS(ThisT,wxStyledTextCtrl), Filename_UC = unicode:characters_to_binary([Filename,0]), wxe_util:call(?wxStyledTextCtrl_LoadFile, @@ -3968,7 +3969,7 @@ doDragOver(#wx_ref{type=ThisT,ref=ThisRef},X,Y,Def) -spec doDropText(This, X, Y, Data) -> boolean() when This::wxStyledTextCtrl(), X::integer(), Y::integer(), Data::unicode:chardata(). doDropText(#wx_ref{type=ThisT,ref=ThisRef},X,Y,Data) - when is_integer(X),is_integer(Y),is_list(Data) -> + when is_integer(X),is_integer(Y),?is_chardata(Data) -> ?CLASS(ThisT,wxStyledTextCtrl), Data_UC = unicode:characters_to_binary([Data,0]), wxe_util:call(?wxStyledTextCtrl_DoDropText, @@ -4386,6 +4387,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxSystemOptions.erl b/lib/wx/src/gen/wxSystemOptions.erl index 28d77b1e26..c613d66c73 100644 --- a/lib/wx/src/gen/wxSystemOptions.erl +++ b/lib/wx/src/gen/wxSystemOptions.erl @@ -39,7 +39,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). -spec getOption(Name) -> unicode:charlist() when Name::unicode:chardata(). getOption(Name) - when is_list(Name) -> + when ?is_chardata(Name) -> Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxSystemOptions_GetOption, <<(byte_size(Name_UC)):32/?UI,(Name_UC)/binary, 0:(((8- ((4+byte_size(Name_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -48,7 +48,7 @@ getOption(Name) -spec getOptionInt(Name) -> integer() when Name::unicode:chardata(). getOptionInt(Name) - when is_list(Name) -> + when ?is_chardata(Name) -> Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxSystemOptions_GetOptionInt, <<(byte_size(Name_UC)):32/?UI,(Name_UC)/binary, 0:(((8- ((4+byte_size(Name_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -57,7 +57,7 @@ getOptionInt(Name) -spec hasOption(Name) -> boolean() when Name::unicode:chardata(). hasOption(Name) - when is_list(Name) -> + when ?is_chardata(Name) -> Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxSystemOptions_HasOption, <<(byte_size(Name_UC)):32/?UI,(Name_UC)/binary, 0:(((8- ((4+byte_size(Name_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -66,7 +66,7 @@ hasOption(Name) -spec isFalse(Name) -> boolean() when Name::unicode:chardata(). isFalse(Name) - when is_list(Name) -> + when ?is_chardata(Name) -> Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxSystemOptions_IsFalse, <<(byte_size(Name_UC)):32/?UI,(Name_UC)/binary, 0:(((8- ((4+byte_size(Name_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -81,12 +81,12 @@ isFalse(Name) (Name, Value) -> 'ok' when Name::unicode:chardata(), Value::unicode:chardata(). setOption(Name,Value) - when is_list(Name),is_integer(Value) -> + when ?is_chardata(Name),is_integer(Value) -> Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:cast(?wxSystemOptions_SetOption_2_0, <<(byte_size(Name_UC)):32/?UI,(Name_UC)/binary, 0:(((8- ((4+byte_size(Name_UC)) band 16#7)) band 16#7))/unit:8,Value:32/?UI>>); setOption(Name,Value) - when is_list(Name),is_list(Value) -> + when ?is_chardata(Name),?is_chardata(Value) -> Name_UC = unicode:characters_to_binary([Name,0]), Value_UC = unicode:characters_to_binary([Value,0]), wxe_util:cast(?wxSystemOptions_SetOption_2_1, diff --git a/lib/wx/src/gen/wxTextCtrl.erl b/lib/wx/src/gen/wxTextCtrl.erl index 5f03398959..7ffb161cf5 100644 --- a/lib/wx/src/gen/wxTextCtrl.erl +++ b/lib/wx/src/gen/wxTextCtrl.erl @@ -46,29 +46,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -126,7 +126,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) -spec appendText(This, Text) -> 'ok' when This::wxTextCtrl(), Text::unicode:chardata(). appendText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxTextCtrl_AppendText, @@ -238,7 +238,7 @@ discardEdits(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec changeValue(This, Value) -> 'ok' when This::wxTextCtrl(), Value::unicode:chardata(). changeValue(#wx_ref{type=ThisT,ref=ThisRef},Value) - when is_list(Value) -> + when ?is_chardata(Value) -> ?CLASS(ThisT,wxTextCtrl), Value_UC = unicode:characters_to_binary([Value,0]), wxe_util:cast(?wxTextCtrl_ChangeValue, @@ -383,7 +383,7 @@ isSingleLine(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxTextCtrl(), File::unicode:chardata(). loadFile(This,File) - when is_record(This, wx_ref),is_list(File) -> + when is_record(This, wx_ref),?is_chardata(File) -> loadFile(This,File, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtextctrl.html#wxtextctrlloadfile">external documentation</a>. @@ -391,7 +391,7 @@ loadFile(This,File) This::wxTextCtrl(), File::unicode:chardata(), Option :: {'fileType', integer()}. loadFile(#wx_ref{type=ThisT,ref=ThisRef},File, Options) - when is_list(File),is_list(Options) -> + when ?is_chardata(File),is_list(Options) -> ?CLASS(ThisT,wxTextCtrl), File_UC = unicode:characters_to_binary([File,0]), MOpts = fun({fileType, FileType}, Acc) -> [<<1:32/?UI,FileType:32/?UI>>|Acc]; @@ -447,7 +447,7 @@ remove(#wx_ref{type=ThisT,ref=ThisRef},From,To) -spec replace(This, From, To, Value) -> 'ok' when This::wxTextCtrl(), From::integer(), To::integer(), Value::unicode:chardata(). replace(#wx_ref{type=ThisT,ref=ThisRef},From,To,Value) - when is_integer(From),is_integer(To),is_list(Value) -> + when is_integer(From),is_integer(To),?is_chardata(Value) -> ?CLASS(ThisT,wxTextCtrl), Value_UC = unicode:characters_to_binary([Value,0]), wxe_util:cast(?wxTextCtrl_Replace, @@ -543,7 +543,7 @@ setStyle(#wx_ref{type=ThisT,ref=ThisRef},Start,End,#wx_ref{type=StyleT,ref=Style -spec setValue(This, Value) -> 'ok' when This::wxTextCtrl(), Value::unicode:chardata(). setValue(#wx_ref{type=ThisT,ref=ThisRef},Value) - when is_list(Value) -> + when ?is_chardata(Value) -> ?CLASS(ThisT,wxTextCtrl), Value_UC = unicode:characters_to_binary([Value,0]), wxe_util:cast(?wxTextCtrl_SetValue, @@ -570,7 +570,7 @@ undo(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec writeText(This, Text) -> 'ok' when This::wxTextCtrl(), Text::unicode:chardata(). writeText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxTextCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxTextCtrl_WriteText, @@ -914,6 +914,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxTextDataObject.erl b/lib/wx/src/gen/wxTextDataObject.erl index eb3e1f4bff..5c8a44a879 100644 --- a/lib/wx/src/gen/wxTextDataObject.erl +++ b/lib/wx/src/gen/wxTextDataObject.erl @@ -76,7 +76,7 @@ getText(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setText(This, Text) -> 'ok' when This::wxTextDataObject(), Text::unicode:chardata(). setText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxTextDataObject), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxTextDataObject_SetText, diff --git a/lib/wx/src/gen/wxTextEntryDialog.erl b/lib/wx/src/gen/wxTextEntryDialog.erl index eaf6dc3926..d0b55fd769 100644 --- a/lib/wx/src/gen/wxTextEntryDialog.erl +++ b/lib/wx/src/gen/wxTextEntryDialog.erl @@ -40,40 +40,40 @@ centreOnScreen/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, createButtonSizer/2,createStdDialogButtonSizer/2,destroyChildren/1, - disable/1,disconnect/1,disconnect/2,disconnect/3,enable/1,enable/2, - endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1,getLabel/1,getMaxSize/1, - getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getReturnCode/1, - getScreenPosition/1,getScreenRect/1,getScrollPos/2,getScrollRange/2, - getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3, - getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,iconize/1,iconize/2,inheritAttributes/1,initDialog/1,invalidateBestSize/1, - isActive/1,isDoubleBuffered/1,isEnabled/1,isExposed/2,isExposed/3, - isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1,isModal/1,isRetained/1, - isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1, - makeModal/2,maximize/1,maximize/2,move/2,move/3,move/4,moveAfterInTabOrder/2, - moveBeforeInTabOrder/2,navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1, - popEventHandler/1,popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4, - raise/1,refresh/1,refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1, - removeChild/2,reparent/2,requestUserAttention/1,requestUserAttention/2, - screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3, - scrollWindow/4,setAcceleratorTable/2,setAffirmativeId/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2,setId/2,setLabel/2, - setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2, - setOwnForegroundColour/2,setPalette/2,setReturnCode/2,setScrollPos/3, - setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2,setSize/2, - setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3,setSizeHints/4, - setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3,setThemeEnabled/2, - setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2,setVirtualSize/3, - setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, + disable/1,disconnect/1,disconnect/2,disconnect/3,dragAcceptFiles/2, + enable/1,enable/2,endModal/2,findWindow/2,fit/1,fitInside/1,freeze/1, + getAcceleratorTable/1,getAffirmativeId/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getIcon/1,getIcons/1,getId/1, + getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1,getPosition/1, + getRect/1,getReturnCode/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, + getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, + getTextExtent/3,getTitle/1,getToolTip/1,getUpdateRegion/1,getVirtualSize/1, + getWindowStyleFlag/1,getWindowVariant/1,hasCapture/1,hasScrollbar/2, + hasTransparentBackground/1,hide/1,iconize/1,iconize/2,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isActive/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isFullScreen/1,isIconized/1,isMaximized/1, + isModal/1,isRetained/1,isShown/1,isTopLevel/1,layout/1,lineDown/1,lineUp/1, + lower/1,makeModal/1,makeModal/2,maximize/1,maximize/2,move/2,move/3, + move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1,navigate/2, + pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,requestUserAttention/1, + requestUserAttention/2,screenToClient/1,screenToClient/2,scrollLines/2, + scrollPages/2,scrollWindow/3,scrollWindow/4,setAcceleratorTable/2, + setAffirmativeId/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setIcon/2,setIcons/2, + setId/2,setLabel/2,setMaxSize/2,setMinSize/2,setName/2,setOwnBackgroundColour/2, + setOwnFont/2,setOwnForegroundColour/2,setPalette/2,setReturnCode/2, + setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6,setShape/2, + setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, + setSizeHints/4,setSizer/2,setSizer/3,setSizerAndFit/2,setSizerAndFit/3, + setThemeEnabled/2,setTitle/2,setToolTip/2,setTransparent/2,setVirtualSize/2, + setVirtualSize/3,setVirtualSizeHints/2,setVirtualSizeHints/3,setVirtualSizeHints/4, setWindowStyle/2,setWindowStyleFlag/2,setWindowVariant/2,shouldInheritColours/1, show/1,show/2,showFullScreen/2,showFullScreen/3,showModal/1,thaw/1, transferDataFromWindow/1,transferDataToWindow/1,update/1,updateWindowUI/1, @@ -93,7 +93,7 @@ parent_class(_Class) -> erlang:error({badtype, ?MODULE}). Parent::wxWindow:wxWindow(), Message::unicode:chardata(). new(Parent,Message) - when is_record(Parent, wx_ref),is_list(Message) -> + when is_record(Parent, wx_ref),?is_chardata(Message) -> new(Parent,Message, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtextentrydialog.html#wxtextentrydialogwxtextentrydialog">external documentation</a>. @@ -104,7 +104,7 @@ new(Parent,Message) | {'style', integer()} | {'pos', {X::integer(), Y::integer()}}. new(#wx_ref{type=ParentT,ref=ParentRef},Message, Options) - when is_list(Message),is_list(Options) -> + when ?is_chardata(Message),is_list(Options) -> ?CLASS(ParentT,wxWindow), Message_UC = unicode:characters_to_binary([Message,0]), MOpts = fun({caption, Caption}, Acc) -> Caption_UC = unicode:characters_to_binary([Caption,0]),[<<1:32/?UI,(byte_size(Caption_UC)):32/?UI,(Caption_UC)/binary, 0:(((8- ((0+byte_size(Caption_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -128,7 +128,7 @@ getValue(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setValue(This, Val) -> 'ok' when This::wxTextEntryDialog(), Val::unicode:chardata(). setValue(#wx_ref{type=ThisT,ref=ThisRef},Val) - when is_list(Val) -> + when ?is_chardata(Val) -> ?CLASS(ThisT,wxTextEntryDialog), Val_UC = unicode:characters_to_binary([Val,0]), wxe_util:cast(?wxTextEntryDialog_SetValue, @@ -528,6 +528,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxToggleButton.erl b/lib/wx/src/gen/wxToggleButton.erl index 9e8dab1c32..6a41cef9ae 100644 --- a/lib/wx/src/gen/wxToggleButton.erl +++ b/lib/wx/src/gen/wxToggleButton.erl @@ -38,29 +38,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -90,7 +90,7 @@ new() -> Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). new(Parent,Id,Label) - when is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> new(Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtogglebutton.html#wxtogglebuttonwxtogglebutton">external documentation</a>. @@ -101,7 +101,7 @@ new(Parent,Id,Label) | {'style', integer()} | {'validator', wx:wx_object()}. new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), MOpts = fun({pos, {PosX,PosY}}, Acc) -> [<<1:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; @@ -118,7 +118,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) This::wxToggleButton(), Parent::wxWindow:wxWindow(), Id::integer(), Label::unicode:chardata(). create(This,Parent,Id,Label) - when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),is_list(Label) -> + when is_record(This, wx_ref),is_record(Parent, wx_ref),is_integer(Id),?is_chardata(Label) -> create(This,Parent,Id,Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtogglebutton.html#wxtogglebuttoncreate">external documentation</a>. @@ -129,7 +129,7 @@ create(This,Parent,Id,Label) | {'style', integer()} | {'validator', wx:wx_object()}. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Id,Label, Options) - when is_integer(Id),is_list(Label),is_list(Options) -> + when is_integer(Id),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxToggleButton), ?CLASS(ParentT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), @@ -488,6 +488,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxToolBar.erl b/lib/wx/src/gen/wxToolBar.erl index 9be37f943c..a3d337ef59 100644 --- a/lib/wx/src/gen/wxToolBar.erl +++ b/lib/wx/src/gen/wxToolBar.erl @@ -47,29 +47,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -142,7 +142,7 @@ addTool(This,Toolid,Bitmap) | {'longHelpString', unicode:chardata()}. addTool(This,Toolid,Label,Bitmap) - when is_record(This, wx_ref),is_integer(Toolid),is_list(Label),is_record(Bitmap, wx_ref) -> + when is_record(This, wx_ref),is_integer(Toolid),?is_chardata(Label),is_record(Bitmap, wx_ref) -> addTool(This,Toolid,Label,Bitmap, []); addTool(This,Toolid,Bitmap,BmpDisabled) @@ -187,10 +187,10 @@ addTool(#wx_ref{type=ThisT,ref=ThisRef},Toolid,#wx_ref{type=BitmapT,ref=BitmapRe | {'longHelpString', unicode:chardata()}. addTool(This,Toolid,Label,Bitmap,BmpDisabled) - when is_record(This, wx_ref),is_integer(Toolid),is_list(Label),is_record(Bitmap, wx_ref),is_record(BmpDisabled, wx_ref) -> + when is_record(This, wx_ref),is_integer(Toolid),?is_chardata(Label),is_record(Bitmap, wx_ref),is_record(BmpDisabled, wx_ref) -> addTool(This,Toolid,Label,Bitmap,BmpDisabled, []); addTool(#wx_ref{type=ThisT,ref=ThisRef},Toolid,Label,#wx_ref{type=BitmapT,ref=BitmapRef}, Options) - when is_integer(Toolid),is_list(Label),is_list(Options) -> + when is_integer(Toolid),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxToolBar), Label_UC = unicode:characters_to_binary([Label,0]), ?CLASS(BitmapT,wxBitmap), @@ -237,7 +237,7 @@ addTool(This,Toolid,Bitmap,BmpDisabled,Toggle,XPos) when is_record(This, wx_ref),is_integer(Toolid),is_record(Bitmap, wx_ref),is_record(BmpDisabled, wx_ref),is_boolean(Toggle),is_integer(XPos) -> addTool(This,Toolid,Bitmap,BmpDisabled,Toggle,XPos, []); addTool(#wx_ref{type=ThisT,ref=ThisRef},Toolid,Label,#wx_ref{type=BitmapT,ref=BitmapRef},#wx_ref{type=BmpDisabledT,ref=BmpDisabledRef}, Options) - when is_integer(Toolid),is_list(Label),is_list(Options) -> + when is_integer(Toolid),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxToolBar), Label_UC = unicode:characters_to_binary([Label,0]), ?CLASS(BitmapT,wxBitmap), @@ -277,7 +277,7 @@ addTool(#wx_ref{type=ThisT,ref=ThisRef},Toolid,#wx_ref{type=BitmapT,ref=BitmapRe This::wxToolBar(), Toolid::integer(), Label::unicode:chardata(), Bitmap::wxBitmap:wxBitmap(). addCheckTool(This,Toolid,Label,Bitmap) - when is_record(This, wx_ref),is_integer(Toolid),is_list(Label),is_record(Bitmap, wx_ref) -> + when is_record(This, wx_ref),is_integer(Toolid),?is_chardata(Label),is_record(Bitmap, wx_ref) -> addCheckTool(This,Toolid,Label,Bitmap, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtoolbar.html#wxtoolbaraddchecktool">external documentation</a>. @@ -288,7 +288,7 @@ addCheckTool(This,Toolid,Label,Bitmap) | {'longHelp', unicode:chardata()} | {'data', wx:wx_object()}. addCheckTool(#wx_ref{type=ThisT,ref=ThisRef},Toolid,Label,#wx_ref{type=BitmapT,ref=BitmapRef}, Options) - when is_integer(Toolid),is_list(Label),is_list(Options) -> + when is_integer(Toolid),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxToolBar), Label_UC = unicode:characters_to_binary([Label,0]), ?CLASS(BitmapT,wxBitmap), @@ -306,7 +306,7 @@ addCheckTool(#wx_ref{type=ThisT,ref=ThisRef},Toolid,Label,#wx_ref{type=BitmapT,r This::wxToolBar(), Toolid::integer(), Label::unicode:chardata(), Bitmap::wxBitmap:wxBitmap(). addRadioTool(This,Toolid,Label,Bitmap) - when is_record(This, wx_ref),is_integer(Toolid),is_list(Label),is_record(Bitmap, wx_ref) -> + when is_record(This, wx_ref),is_integer(Toolid),?is_chardata(Label),is_record(Bitmap, wx_ref) -> addRadioTool(This,Toolid,Label,Bitmap, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtoolbar.html#wxtoolbaraddradiotool">external documentation</a>. @@ -317,7 +317,7 @@ addRadioTool(This,Toolid,Label,Bitmap) | {'longHelp', unicode:chardata()} | {'data', wx:wx_object()}. addRadioTool(#wx_ref{type=ThisT,ref=ThisRef},Toolid,Label,#wx_ref{type=BitmapT,ref=BitmapRef}, Options) - when is_integer(Toolid),is_list(Label),is_list(Options) -> + when is_integer(Toolid),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxToolBar), Label_UC = unicode:characters_to_binary([Label,0]), ?CLASS(BitmapT,wxBitmap), @@ -545,7 +545,7 @@ insertTool(This,Pos,Toolid,Bitmap) | {'longHelp', unicode:chardata()}. insertTool(This,Pos,Toolid,Label,Bitmap) - when is_record(This, wx_ref),is_integer(Pos),is_integer(Toolid),is_list(Label),is_record(Bitmap, wx_ref) -> + when is_record(This, wx_ref),is_integer(Pos),is_integer(Toolid),?is_chardata(Label),is_record(Bitmap, wx_ref) -> insertTool(This,Pos,Toolid,Label,Bitmap, []); insertTool(#wx_ref{type=ThisT,ref=ThisRef},Pos,Toolid,#wx_ref{type=BitmapT,ref=BitmapRef}, Options) when is_integer(Pos),is_integer(Toolid),is_list(Options) -> @@ -571,7 +571,7 @@ insertTool(#wx_ref{type=ThisT,ref=ThisRef},Pos,Toolid,#wx_ref{type=BitmapT,ref=B | {'longHelp', unicode:chardata()} | {'clientData', wx:wx_object()}. insertTool(#wx_ref{type=ThisT,ref=ThisRef},Pos,Toolid,Label,#wx_ref{type=BitmapT,ref=BitmapRef}, Options) - when is_integer(Pos),is_integer(Toolid),is_list(Label),is_list(Options) -> + when is_integer(Pos),is_integer(Toolid),?is_chardata(Label),is_list(Options) -> ?CLASS(ThisT,wxToolBar), Label_UC = unicode:characters_to_binary([Label,0]), ?CLASS(BitmapT,wxBitmap), @@ -624,7 +624,7 @@ setToolBitmapSize(#wx_ref{type=ThisT,ref=ThisRef},{SizeW,SizeH}) -spec setToolLongHelp(This, Toolid, HelpString) -> 'ok' when This::wxToolBar(), Toolid::integer(), HelpString::unicode:chardata(). setToolLongHelp(#wx_ref{type=ThisT,ref=ThisRef},Toolid,HelpString) - when is_integer(Toolid),is_list(HelpString) -> + when is_integer(Toolid),?is_chardata(HelpString) -> ?CLASS(ThisT,wxToolBar), HelpString_UC = unicode:characters_to_binary([HelpString,0]), wxe_util:cast(?wxToolBar_SetToolLongHelp, @@ -643,7 +643,7 @@ setToolPacking(#wx_ref{type=ThisT,ref=ThisRef},Packing) -spec setToolShortHelp(This, Id, HelpString) -> 'ok' when This::wxToolBar(), Id::integer(), HelpString::unicode:chardata(). setToolShortHelp(#wx_ref{type=ThisT,ref=ThisRef},Id,HelpString) - when is_integer(Id),is_list(HelpString) -> + when is_integer(Id),?is_chardata(HelpString) -> ?CLASS(ThisT,wxToolBar), HelpString_UC = unicode:characters_to_binary([HelpString,0]), wxe_util:cast(?wxToolBar_SetToolShortHelp, @@ -990,6 +990,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxToolTip.erl b/lib/wx/src/gen/wxToolTip.erl index 163e764d8c..0596173ebe 100644 --- a/lib/wx/src/gen/wxToolTip.erl +++ b/lib/wx/src/gen/wxToolTip.erl @@ -55,7 +55,7 @@ setDelay(Msecs) -spec new(Tip) -> wxToolTip() when Tip::unicode:chardata(). new(Tip) - when is_list(Tip) -> + when ?is_chardata(Tip) -> Tip_UC = unicode:characters_to_binary([Tip,0]), wxe_util:construct(?wxToolTip_new, <<(byte_size(Tip_UC)):32/?UI,(Tip_UC)/binary, 0:(((8- ((4+byte_size(Tip_UC)) band 16#7)) band 16#7))/unit:8>>). @@ -64,7 +64,7 @@ new(Tip) -spec setTip(This, Tip) -> 'ok' when This::wxToolTip(), Tip::unicode:chardata(). setTip(#wx_ref{type=ThisT,ref=ThisRef},Tip) - when is_list(Tip) -> + when ?is_chardata(Tip) -> ?CLASS(ThisT,wxToolTip), Tip_UC = unicode:characters_to_binary([Tip,0]), wxe_util:cast(?wxToolTip_SetTip, diff --git a/lib/wx/src/gen/wxToolbook.erl b/lib/wx/src/gen/wxToolbook.erl index 92dcbc726b..787d4a468e 100644 --- a/lib/wx/src/gen/wxToolbook.erl +++ b/lib/wx/src/gen/wxToolbook.erl @@ -43,29 +43,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -120,7 +120,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) This::wxToolbook(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). addPage(This,Page,Text) - when is_record(This, wx_ref),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_record(Page, wx_ref),?is_chardata(Text) -> addPage(This,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtoolbook.html#wxtoolbookaddpage">external documentation</a>. @@ -129,7 +129,7 @@ addPage(This,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. addPage(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxToolbook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -296,7 +296,7 @@ hitTest(#wx_ref{type=ThisT,ref=ThisRef},{PtX,PtY}) This::wxToolbook(), N::integer(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). insertPage(This,N,Page,Text) - when is_record(This, wx_ref),is_integer(N),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_integer(N),is_record(Page, wx_ref),?is_chardata(Text) -> insertPage(This,N,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtoolbook.html#wxtoolbookinsertpage">external documentation</a>. @@ -305,7 +305,7 @@ insertPage(This,N,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. insertPage(#wx_ref{type=ThisT,ref=ThisRef},N,#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_integer(N),is_list(Text),is_list(Options) -> + when is_integer(N),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxToolbook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -347,7 +347,7 @@ setPageImage(#wx_ref{type=ThisT,ref=ThisRef},N,ImageId) -spec setPageText(This, N, StrText) -> boolean() when This::wxToolbook(), N::integer(), StrText::unicode:chardata(). setPageText(#wx_ref{type=ThisT,ref=ThisRef},N,StrText) - when is_integer(N),is_list(StrText) -> + when is_integer(N),?is_chardata(StrText) -> ?CLASS(ThisT,wxToolbook), StrText_UC = unicode:characters_to_binary([StrText,0]), wxe_util:call(?wxToolbook_SetPageText, @@ -700,6 +700,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxTopLevelWindow.erl b/lib/wx/src/gen/wxTopLevelWindow.erl index 6ba81691c7..96135052bc 100644 --- a/lib/wx/src/gen/wxTopLevelWindow.erl +++ b/lib/wx/src/gen/wxTopLevelWindow.erl @@ -41,29 +41,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -273,7 +273,7 @@ setShape(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=RegionT,ref=RegionRef}) -> -spec setTitle(This, Title) -> 'ok' when This::wxTopLevelWindow(), Title::unicode:chardata(). setTitle(#wx_ref{type=ThisT,ref=ThisRef},Title) - when is_list(Title) -> + when ?is_chardata(Title) -> ?CLASS(ThisT,wxTopLevelWindow), Title_UC = unicode:characters_to_binary([Title,0]), wxe_util:cast(?wxTopLevelWindow_SetTitle, @@ -622,6 +622,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxTreeCtrl.erl b/lib/wx/src/gen/wxTreeCtrl.erl index 97b43309ad..68ea754bef 100644 --- a/lib/wx/src/gen/wxTreeCtrl.erl +++ b/lib/wx/src/gen/wxTreeCtrl.erl @@ -59,29 +59,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -140,7 +140,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef}, Options) This::wxTreeCtrl(), Text::unicode:chardata(). addRoot(This,Text) - when is_record(This, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),?is_chardata(Text) -> addRoot(This,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtreectrl.html#wxtreectrladdroot">external documentation</a>. @@ -150,7 +150,7 @@ addRoot(This,Text) | {'selectedImage', integer()} | {'data', term()}. addRoot(#wx_ref{type=ThisT,ref=ThisRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxTreeCtrl), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({image, Image}, Acc) -> [<<1:32/?UI,Image:32/?UI>>|Acc]; @@ -166,7 +166,7 @@ addRoot(#wx_ref{type=ThisT,ref=ThisRef},Text, Options) This::wxTreeCtrl(), Parent::integer(), Text::unicode:chardata(). appendItem(This,Parent,Text) - when is_record(This, wx_ref),is_integer(Parent),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Parent),?is_chardata(Text) -> appendItem(This,Parent,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtreectrl.html#wxtreectrlappenditem">external documentation</a>. @@ -176,7 +176,7 @@ appendItem(This,Parent,Text) | {'selectedImage', integer()} | {'data', term()}. appendItem(#wx_ref{type=ThisT,ref=ThisRef},Parent,Text, Options) - when is_integer(Parent),is_list(Text),is_list(Options) -> + when is_integer(Parent),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxTreeCtrl), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({image, Image}, Acc) -> [<<1:32/?UI,Image:32/?UI>>|Acc]; @@ -580,7 +580,7 @@ hitTest(#wx_ref{type=ThisT,ref=ThisRef},{PointX,PointY}) This::wxTreeCtrl(), Parent::integer(), Pos::integer(), Text::unicode:chardata(). insertItem(This,Parent,Pos,Text) - when is_record(This, wx_ref),is_integer(Parent),is_integer(Pos),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Parent),is_integer(Pos),?is_chardata(Text) -> insertItem(This,Parent,Pos,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtreectrl.html#wxtreectrlinsertitem">external documentation</a>. @@ -590,7 +590,7 @@ insertItem(This,Parent,Pos,Text) | {'selImage', integer()} | {'data', term()}. insertItem(#wx_ref{type=ThisT,ref=ThisRef},Parent,Pos,Text, Options) - when is_integer(Parent),is_integer(Pos),is_list(Text),is_list(Options) -> + when is_integer(Parent),is_integer(Pos),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxTreeCtrl), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({image, Image}, Acc) -> [<<1:32/?UI,Image:32/?UI>>|Acc]; @@ -659,7 +659,7 @@ isTreeItemIdOk(Id) This::wxTreeCtrl(), Parent::integer(), Text::unicode:chardata(). prependItem(This,Parent,Text) - when is_record(This, wx_ref),is_integer(Parent),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Parent),?is_chardata(Text) -> prependItem(This,Parent,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtreectrl.html#wxtreectrlprependitem">external documentation</a>. @@ -669,7 +669,7 @@ prependItem(This,Parent,Text) | {'selectedImage', integer()} | {'data', term()}. prependItem(#wx_ref{type=ThisT,ref=ThisRef},Parent,Text, Options) - when is_integer(Parent),is_list(Text),is_list(Options) -> + when is_integer(Parent),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxTreeCtrl), Text_UC = unicode:characters_to_binary([Text,0]), MOpts = fun({image, Image}, Acc) -> [<<1:32/?UI,Image:32/?UI>>|Acc]; @@ -848,7 +848,7 @@ setItemImage(#wx_ref{type=ThisT,ref=ThisRef},Item,Image, Options) -spec setItemText(This, Item, Text) -> 'ok' when This::wxTreeCtrl(), Item::integer(), Text::unicode:chardata(). setItemText(#wx_ref{type=ThisT,ref=ThisRef},Item,Text) - when is_integer(Item),is_list(Text) -> + when is_integer(Item),?is_chardata(Text) -> ?CLASS(ThisT,wxTreeCtrl), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxTreeCtrl_SetItemText, @@ -1260,6 +1260,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxTreeEvent.erl b/lib/wx/src/gen/wxTreeEvent.erl index 41e86fe41f..368f32a386 100644 --- a/lib/wx/src/gen/wxTreeEvent.erl +++ b/lib/wx/src/gen/wxTreeEvent.erl @@ -111,7 +111,7 @@ isEditCancelled(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec setToolTip(This, ToolTip) -> 'ok' when This::wxTreeEvent(), ToolTip::unicode:chardata(). setToolTip(#wx_ref{type=ThisT,ref=ThisRef},ToolTip) - when is_list(ToolTip) -> + when ?is_chardata(ToolTip) -> ?CLASS(ThisT,wxTreeEvent), ToolTip_UC = unicode:characters_to_binary([ToolTip,0]), wxe_util:cast(?wxTreeEvent_SetToolTip, diff --git a/lib/wx/src/gen/wxTreebook.erl b/lib/wx/src/gen/wxTreebook.erl index 5d3c177f7e..956652f221 100644 --- a/lib/wx/src/gen/wxTreebook.erl +++ b/lib/wx/src/gen/wxTreebook.erl @@ -44,29 +44,29 @@ centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,connect/2,connect/3,convertDialogToPixels/2,convertPixelsToDialog/2, destroyChildren/1,disable/1,disconnect/1,disconnect/2,disconnect/3, - enable/1,enable/2,findWindow/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCaret/1, - getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1,getContainingSizer/1, - getCursor/1,getDropTarget/1,getEventHandler/1,getExtraStyle/1,getFont/1, - getForegroundColour/1,getGrandParent/1,getHandle/1,getHelpText/1, - getId/1,getLabel/1,getMaxSize/1,getMinSize/1,getName/1,getParent/1, - getPosition/1,getRect/1,getScreenPosition/1,getScreenRect/1,getScrollPos/2, - getScrollRange/2,getScrollThumb/2,getSize/1,getSizer/1,getTextExtent/2, - getTextExtent/3,getToolTip/1,getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1, - getWindowVariant/1,hasCapture/1,hasScrollbar/2,hasTransparentBackground/1, - hide/1,inheritAttributes/1,initDialog/1,invalidateBestSize/1,isDoubleBuffered/1, - isEnabled/1,isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1, - isTopLevel/1,layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2, - move/2,move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2, - navigate/1,navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1, - popEventHandler/2,popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1, - refresh/2,refreshRect/2,refreshRect/3,releaseMouse/1,removeChild/2, - reparent/2,screenToClient/1,screenToClient/2,scrollLines/2,scrollPages/2, - scrollWindow/3,scrollWindow/4,setAcceleratorTable/2,setAutoLayout/2, - setBackgroundColour/2,setBackgroundStyle/2,setCaret/2,setClientSize/2, - setClientSize/3,setContainingSizer/2,setCursor/2,setDoubleBuffered/2, - setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1,setFont/2, - setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, + dragAcceptFiles/2,enable/1,enable/2,findWindow/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1, + getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, + getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, + getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, + hasCapture/1,hasScrollbar/2,hasTransparentBackground/1,hide/1,inheritAttributes/1, + initDialog/1,invalidateBestSize/1,isDoubleBuffered/1,isEnabled/1, + isExposed/2,isExposed/3,isExposed/5,isRetained/1,isShown/1,isTopLevel/1, + layout/1,lineDown/1,lineUp/1,lower/1,makeModal/1,makeModal/2,move/2, + move/3,move/4,moveAfterInTabOrder/2,moveBeforeInTabOrder/2,navigate/1, + navigate/2,pageDown/1,pageUp/1,parent_class/1,popEventHandler/1,popEventHandler/2, + popupMenu/2,popupMenu/3,popupMenu/4,raise/1,refresh/1,refresh/2,refreshRect/2, + refreshRect/3,releaseMouse/1,removeChild/2,reparent/2,screenToClient/1, + screenToClient/2,scrollLines/2,scrollPages/2,scrollWindow/3,scrollWindow/4, + setAcceleratorTable/2,setAutoLayout/2,setBackgroundColour/2,setBackgroundStyle/2, + setCaret/2,setClientSize/2,setClientSize/3,setContainingSizer/2,setCursor/2, + setDoubleBuffered/2,setDropTarget/2,setExtraStyle/2,setFocus/1,setFocusFromKbd/1, + setFont/2,setForegroundColour/2,setHelpText/2,setId/2,setLabel/2,setMaxSize/2, setMinSize/2,setName/2,setOwnBackgroundColour/2,setOwnFont/2,setOwnForegroundColour/2, setPalette/2,setScrollPos/3,setScrollPos/4,setScrollbar/5,setScrollbar/6, setSize/2,setSize/3,setSize/5,setSize/6,setSizeHints/2,setSizeHints/3, @@ -121,7 +121,7 @@ new(#wx_ref{type=ParentT,ref=ParentRef},Id, Options) This::wxTreebook(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). addPage(This,Page,Text) - when is_record(This, wx_ref),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_record(Page, wx_ref),?is_chardata(Text) -> addPage(This,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtreebook.html#wxtreebookaddpage">external documentation</a>. @@ -130,7 +130,7 @@ addPage(This,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. addPage(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_list(Text),is_list(Options) -> + when ?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxTreebook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -327,7 +327,7 @@ hitTest(#wx_ref{type=ThisT,ref=ThisRef},{PtX,PtY}) This::wxTreebook(), Pos::integer(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). insertPage(This,Pos,Page,Text) - when is_record(This, wx_ref),is_integer(Pos),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Pos),is_record(Page, wx_ref),?is_chardata(Text) -> insertPage(This,Pos,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtreebook.html#wxtreebookinsertpage">external documentation</a>. @@ -336,7 +336,7 @@ insertPage(This,Pos,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. insertPage(#wx_ref{type=ThisT,ref=ThisRef},Pos,#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_integer(Pos),is_list(Text),is_list(Options) -> + when is_integer(Pos),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxTreebook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -352,7 +352,7 @@ insertPage(#wx_ref{type=ThisT,ref=ThisRef},Pos,#wx_ref{type=PageT,ref=PageRef},T This::wxTreebook(), Pos::integer(), Page::wxWindow:wxWindow(), Text::unicode:chardata(). insertSubPage(This,Pos,Page,Text) - when is_record(This, wx_ref),is_integer(Pos),is_record(Page, wx_ref),is_list(Text) -> + when is_record(This, wx_ref),is_integer(Pos),is_record(Page, wx_ref),?is_chardata(Text) -> insertSubPage(This,Pos,Page,Text, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtreebook.html#wxtreebookinsertsubpage">external documentation</a>. @@ -361,7 +361,7 @@ insertSubPage(This,Pos,Page,Text) Option :: {'bSelect', boolean()} | {'imageId', integer()}. insertSubPage(#wx_ref{type=ThisT,ref=ThisRef},Pos,#wx_ref{type=PageT,ref=PageRef},Text, Options) - when is_integer(Pos),is_list(Text),is_list(Options) -> + when is_integer(Pos),?is_chardata(Text),is_list(Options) -> ?CLASS(ThisT,wxTreebook), ?CLASS(PageT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), @@ -403,7 +403,7 @@ setPageImage(#wx_ref{type=ThisT,ref=ThisRef},N,ImageId) -spec setPageText(This, N, StrText) -> boolean() when This::wxTreebook(), N::integer(), StrText::unicode:chardata(). setPageText(#wx_ref{type=ThisT,ref=ThisRef},N,StrText) - when is_integer(N),is_list(StrText) -> + when is_integer(N),?is_chardata(StrText) -> ?CLASS(ThisT,wxTreebook), StrText_UC = unicode:characters_to_binary([StrText,0]), wxe_util:call(?wxTreebook_SetPageText, @@ -756,6 +756,8 @@ enable(This, Options) -> wxWindow:enable(This, Options). %% @hidden enable(This) -> wxWindow:enable(This). %% @hidden +dragAcceptFiles(This,Accept) -> wxWindow:dragAcceptFiles(This,Accept). +%% @hidden disable(This) -> wxWindow:disable(This). %% @hidden destroyChildren(This) -> wxWindow:destroyChildren(This). diff --git a/lib/wx/src/gen/wxUpdateUIEvent.erl b/lib/wx/src/gen/wxUpdateUIEvent.erl index fec42ed8eb..e7bda40a7a 100644 --- a/lib/wx/src/gen/wxUpdateUIEvent.erl +++ b/lib/wx/src/gen/wxUpdateUIEvent.erl @@ -181,7 +181,7 @@ setMode(Mode) -spec setText(This, Text) -> 'ok' when This::wxUpdateUIEvent(), Text::unicode:chardata(). setText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxUpdateUIEvent), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxUpdateUIEvent_SetText, diff --git a/lib/wx/src/gen/wxWindow.erl b/lib/wx/src/gen/wxWindow.erl index 4ac7cc5d75..be847861b1 100644 --- a/lib/wx/src/gen/wxWindow.erl +++ b/lib/wx/src/gen/wxWindow.erl @@ -32,15 +32,15 @@ center/2,centerOnParent/1,centerOnParent/2,centre/1,centre/2,centreOnParent/1, centreOnParent/2,clearBackground/1,clientToScreen/2,clientToScreen/3, close/1,close/2,convertDialogToPixels/2,convertPixelsToDialog/2,destroy/1, - destroyChildren/1,disable/1,enable/1,enable/2,findFocus/0,findWindow/2, - findWindowById/1,findWindowById/2,findWindowByLabel/1,findWindowByLabel/2, - findWindowByName/1,findWindowByName/2,fit/1,fitInside/1,freeze/1,getAcceleratorTable/1, - getBackgroundColour/1,getBackgroundStyle/1,getBestSize/1,getCapture/0, - getCaret/1,getCharHeight/1,getCharWidth/1,getChildren/1,getClientSize/1, - getContainingSizer/1,getCursor/1,getDropTarget/1,getEventHandler/1, - getExtraStyle/1,getFont/1,getForegroundColour/1,getGrandParent/1, - getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1,getMinSize/1, - getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, + destroyChildren/1,disable/1,dragAcceptFiles/2,enable/1,enable/2,findFocus/0, + findWindow/2,findWindowById/1,findWindowById/2,findWindowByLabel/1, + findWindowByLabel/2,findWindowByName/1,findWindowByName/2,fit/1,fitInside/1, + freeze/1,getAcceleratorTable/1,getBackgroundColour/1,getBackgroundStyle/1, + getBestSize/1,getCapture/0,getCaret/1,getCharHeight/1,getCharWidth/1, + getChildren/1,getClientSize/1,getContainingSizer/1,getCursor/1,getDropTarget/1, + getEventHandler/1,getExtraStyle/1,getFont/1,getForegroundColour/1, + getGrandParent/1,getHandle/1,getHelpText/1,getId/1,getLabel/1,getMaxSize/1, + getMinSize/1,getName/1,getParent/1,getPosition/1,getRect/1,getScreenPosition/1, getScreenRect/1,getScrollPos/2,getScrollRange/2,getScrollThumb/2, getSize/1,getSizer/1,getTextExtent/2,getTextExtent/3,getToolTip/1, getUpdateRegion/1,getVirtualSize/1,getWindowStyleFlag/1,getWindowVariant/1, @@ -297,6 +297,15 @@ disable(#wx_ref{type=ThisT,ref=ThisRef}) -> wxe_util:call(?wxWindow_Disable, <<ThisRef:32/?UI>>). +%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxwindow.html#wxwindowdragacceptfiles">external documentation</a>. +-spec dragAcceptFiles(This, Accept) -> 'ok' when + This::wxWindow(), Accept::boolean(). +dragAcceptFiles(#wx_ref{type=ThisT,ref=ThisRef},Accept) + when is_boolean(Accept) -> + ?CLASS(ThisT,wxWindow), + wxe_util:cast(?wxWindow_DragAcceptFiles, + <<ThisRef:32/?UI,(wxe_util:from_bool(Accept)):32/?UI>>). + %% @equiv enable(This, []) -spec enable(This) -> boolean() when This::wxWindow(). @@ -339,7 +348,7 @@ findWindow(#wx_ref{type=ThisT,ref=ThisRef},Winid) wxe_util:call(?wxWindow_FindWindow_1_0, <<ThisRef:32/?UI,Winid:32/?UI>>); findWindow(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxWindow), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxWindow_FindWindow_1_1, @@ -370,7 +379,7 @@ findWindowById(Winid, Options) Name::unicode:chardata(). findWindowByName(Name) - when is_list(Name) -> + when ?is_chardata(Name) -> findWindowByName(Name, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxwindow.html#wxwindowfindwindowbyname">external documentation</a>. @@ -378,7 +387,7 @@ findWindowByName(Name) Name::unicode:chardata(), Option :: {'parent', wxWindow()}. findWindowByName(Name, Options) - when is_list(Name),is_list(Options) -> + when ?is_chardata(Name),is_list(Options) -> Name_UC = unicode:characters_to_binary([Name,0]), MOpts = fun({parent, #wx_ref{type=ParentT,ref=ParentRef}}, Acc) -> ?CLASS(ParentT,wxWindow),[<<1:32/?UI,ParentRef:32/?UI>>|Acc]; (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, @@ -391,7 +400,7 @@ findWindowByName(Name, Options) Label::unicode:chardata(). findWindowByLabel(Label) - when is_list(Label) -> + when ?is_chardata(Label) -> findWindowByLabel(Label, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxwindow.html#wxwindowfindwindowbylabel">external documentation</a>. @@ -399,7 +408,7 @@ findWindowByLabel(Label) Label::unicode:chardata(), Option :: {'parent', wxWindow()}. findWindowByLabel(Label, Options) - when is_list(Label),is_list(Options) -> + when ?is_chardata(Label),is_list(Options) -> Label_UC = unicode:characters_to_binary([Label,0]), MOpts = fun({parent, #wx_ref{type=ParentT,ref=ParentRef}}, Acc) -> ?CLASS(ParentT,wxWindow),[<<1:32/?UI,ParentRef:32/?UI>>|Acc]; (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, @@ -719,7 +728,7 @@ getSizer(#wx_ref{type=ThisT,ref=ThisRef}) -> This::wxWindow(), String::unicode:chardata(). getTextExtent(This,String) - when is_record(This, wx_ref),is_list(String) -> + when is_record(This, wx_ref),?is_chardata(String) -> getTextExtent(This,String, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxwindow.html#wxwindowgettextextent">external documentation</a>. @@ -728,7 +737,7 @@ getTextExtent(This,String) This::wxWindow(), String::unicode:chardata(), Option :: {'theFont', wxFont:wxFont()}. getTextExtent(#wx_ref{type=ThisT,ref=ThisRef},String, Options) - when is_list(String),is_list(Options) -> + when ?is_chardata(String),is_list(Options) -> ?CLASS(ThisT,wxWindow), String_UC = unicode:characters_to_binary([String,0]), MOpts = fun({theFont, #wx_ref{type=TheFontT,ref=TheFontRef}}, Acc) -> ?CLASS(TheFontT,wxFont),[<<1:32/?UI,TheFontRef:32/?UI>>|Acc]; @@ -1439,7 +1448,7 @@ setForegroundColour(#wx_ref{type=ThisT,ref=ThisRef},Colour) -spec setHelpText(This, Text) -> 'ok' when This::wxWindow(), Text::unicode:chardata(). setHelpText(#wx_ref{type=ThisT,ref=ThisRef},Text) - when is_list(Text) -> + when ?is_chardata(Text) -> ?CLASS(ThisT,wxWindow), Text_UC = unicode:characters_to_binary([Text,0]), wxe_util:cast(?wxWindow_SetHelpText, @@ -1458,7 +1467,7 @@ setId(#wx_ref{type=ThisT,ref=ThisRef},Winid) -spec setLabel(This, Label) -> 'ok' when This::wxWindow(), Label::unicode:chardata(). setLabel(#wx_ref{type=ThisT,ref=ThisRef},Label) - when is_list(Label) -> + when ?is_chardata(Label) -> ?CLASS(ThisT,wxWindow), Label_UC = unicode:characters_to_binary([Label,0]), wxe_util:cast(?wxWindow_SetLabel, @@ -1468,7 +1477,7 @@ setLabel(#wx_ref{type=ThisT,ref=ThisRef},Label) -spec setName(This, Name) -> 'ok' when This::wxWindow(), Name::unicode:chardata(). setName(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxWindow), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:cast(?wxWindow_SetName, @@ -1707,7 +1716,7 @@ setThemeEnabled(#wx_ref{type=ThisT,ref=ThisRef},EnableTheme) (This, Tip) -> 'ok' when This::wxWindow(), Tip::wxToolTip:wxToolTip(). setToolTip(#wx_ref{type=ThisT,ref=ThisRef},Tip) - when is_list(Tip) -> + when ?is_chardata(Tip) -> ?CLASS(ThisT,wxWindow), Tip_UC = unicode:characters_to_binary([Tip,0]), wxe_util:cast(?wxWindow_SetToolTip_1_0, diff --git a/lib/wx/src/gen/wxXmlResource.erl b/lib/wx/src/gen/wxXmlResource.erl index aa65b8b04e..51f6231f48 100644 --- a/lib/wx/src/gen/wxXmlResource.erl +++ b/lib/wx/src/gen/wxXmlResource.erl @@ -65,7 +65,7 @@ new(Options) Option :: {'flags', integer()} | {'domain', unicode:chardata()}. new(Filemask, Options) - when is_list(Filemask),is_list(Options) -> + when ?is_chardata(Filemask),is_list(Options) -> Filemask_UC = unicode:characters_to_binary([Filemask,0]), MOpts = fun({flags, Flags}, Acc) -> [<<1:32/?UI,Flags:32/?UI>>|Acc]; ({domain, Domain}, Acc) -> Domain_UC = unicode:characters_to_binary([Domain,0]),[<<2:32/?UI,(byte_size(Domain_UC)):32/?UI,(Domain_UC)/binary, 0:(((8- ((0+byte_size(Domain_UC)) band 16#7)) band 16#7))/unit:8>>|Acc]; @@ -79,7 +79,7 @@ new(Filemask, Options) This::wxXmlResource(), Name::unicode:chardata(), Control::wxWindow:wxWindow(). attachUnknownControl(This,Name,Control) - when is_record(This, wx_ref),is_list(Name),is_record(Control, wx_ref) -> + when is_record(This, wx_ref),?is_chardata(Name),is_record(Control, wx_ref) -> attachUnknownControl(This,Name,Control, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxxmlresource.html#wxxmlresourceattachunknowncontrol">external documentation</a>. @@ -87,7 +87,7 @@ attachUnknownControl(This,Name,Control) This::wxXmlResource(), Name::unicode:chardata(), Control::wxWindow:wxWindow(), Option :: {'parent', wxWindow:wxWindow()}. attachUnknownControl(#wx_ref{type=ThisT,ref=ThisRef},Name,#wx_ref{type=ControlT,ref=ControlRef}, Options) - when is_list(Name),is_list(Options) -> + when ?is_chardata(Name),is_list(Options) -> ?CLASS(ThisT,wxXmlResource), Name_UC = unicode:characters_to_binary([Name,0]), ?CLASS(ControlT,wxWindow), @@ -169,7 +169,7 @@ initAllHandlers(#wx_ref{type=ThisT,ref=ThisRef}) -> -spec load(This, Filemask) -> boolean() when This::wxXmlResource(), Filemask::unicode:chardata(). load(#wx_ref{type=ThisT,ref=ThisRef},Filemask) - when is_list(Filemask) -> + when ?is_chardata(Filemask) -> ?CLASS(ThisT,wxXmlResource), Filemask_UC = unicode:characters_to_binary([Filemask,0]), wxe_util:call(?wxXmlResource_Load, @@ -179,7 +179,7 @@ load(#wx_ref{type=ThisT,ref=ThisRef},Filemask) -spec loadBitmap(This, Name) -> wxBitmap:wxBitmap() when This::wxXmlResource(), Name::unicode:chardata(). loadBitmap(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxXmlResource_LoadBitmap, @@ -189,7 +189,7 @@ loadBitmap(#wx_ref{type=ThisT,ref=ThisRef},Name) -spec loadDialog(This, Parent, Name) -> wxDialog:wxDialog() when This::wxXmlResource(), Parent::wxWindow:wxWindow(), Name::unicode:chardata(). loadDialog(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), ?CLASS(ParentT,wxWindow), Name_UC = unicode:characters_to_binary([Name,0]), @@ -200,7 +200,7 @@ loadDialog(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},N -spec loadDialog(This, Dlg, Parent, Name) -> boolean() when This::wxXmlResource(), Dlg::wxDialog:wxDialog(), Parent::wxWindow:wxWindow(), Name::unicode:chardata(). loadDialog(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=DlgT,ref=DlgRef},#wx_ref{type=ParentT,ref=ParentRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), ?CLASS(DlgT,wxDialog), ?CLASS(ParentT,wxWindow), @@ -212,7 +212,7 @@ loadDialog(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=DlgT,ref=DlgRef},#wx_ref -spec loadFrame(This, Parent, Name) -> wxFrame:wxFrame() when This::wxXmlResource(), Parent::wxWindow:wxWindow(), Name::unicode:chardata(). loadFrame(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), ?CLASS(ParentT,wxWindow), Name_UC = unicode:characters_to_binary([Name,0]), @@ -223,7 +223,7 @@ loadFrame(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Na -spec loadFrame(This, Frame, Parent, Name) -> boolean() when This::wxXmlResource(), Frame::wxFrame:wxFrame(), Parent::wxWindow:wxWindow(), Name::unicode:chardata(). loadFrame(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=FrameT,ref=FrameRef},#wx_ref{type=ParentT,ref=ParentRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), ?CLASS(FrameT,wxFrame), ?CLASS(ParentT,wxWindow), @@ -235,7 +235,7 @@ loadFrame(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=FrameT,ref=FrameRef},#wx_ -spec loadIcon(This, Name) -> wxIcon:wxIcon() when This::wxXmlResource(), Name::unicode:chardata(). loadIcon(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxXmlResource_LoadIcon, @@ -245,7 +245,7 @@ loadIcon(#wx_ref{type=ThisT,ref=ThisRef},Name) -spec loadMenu(This, Name) -> wxMenu:wxMenu() when This::wxXmlResource(), Name::unicode:chardata(). loadMenu(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxXmlResource_LoadMenu, @@ -255,7 +255,7 @@ loadMenu(#wx_ref{type=ThisT,ref=ThisRef},Name) -spec loadMenuBar(This, Name) -> wxMenuBar:wxMenuBar() when This::wxXmlResource(), Name::unicode:chardata(). loadMenuBar(#wx_ref{type=ThisT,ref=ThisRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), Name_UC = unicode:characters_to_binary([Name,0]), wxe_util:call(?wxXmlResource_LoadMenuBar_1, @@ -265,7 +265,7 @@ loadMenuBar(#wx_ref{type=ThisT,ref=ThisRef},Name) -spec loadMenuBar(This, Parent, Name) -> wxMenuBar:wxMenuBar() when This::wxXmlResource(), Parent::wxWindow:wxWindow(), Name::unicode:chardata(). loadMenuBar(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), ?CLASS(ParentT,wxWindow), Name_UC = unicode:characters_to_binary([Name,0]), @@ -276,7 +276,7 @@ loadMenuBar(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef}, -spec loadPanel(This, Parent, Name) -> wxPanel:wxPanel() when This::wxXmlResource(), Parent::wxWindow:wxWindow(), Name::unicode:chardata(). loadPanel(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), ?CLASS(ParentT,wxWindow), Name_UC = unicode:characters_to_binary([Name,0]), @@ -287,7 +287,7 @@ loadPanel(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Na -spec loadPanel(This, Panel, Parent, Name) -> boolean() when This::wxXmlResource(), Panel::wxPanel:wxPanel(), Parent::wxWindow:wxWindow(), Name::unicode:chardata(). loadPanel(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PanelT,ref=PanelRef},#wx_ref{type=ParentT,ref=ParentRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), ?CLASS(PanelT,wxPanel), ?CLASS(ParentT,wxWindow), @@ -299,7 +299,7 @@ loadPanel(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=PanelT,ref=PanelRef},#wx_ -spec loadToolBar(This, Parent, Name) -> wxToolBar:wxToolBar() when This::wxXmlResource(), Parent::wxWindow:wxWindow(), Name::unicode:chardata(). loadToolBar(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef},Name) - when is_list(Name) -> + when ?is_chardata(Name) -> ?CLASS(ThisT,wxXmlResource), ?CLASS(ParentT,wxWindow), Name_UC = unicode:characters_to_binary([Name,0]), @@ -327,7 +327,7 @@ setFlags(#wx_ref{type=ThisT,ref=ThisRef},Flags) -spec unload(This, Filename) -> boolean() when This::wxXmlResource(), Filename::unicode:chardata(). unload(#wx_ref{type=ThisT,ref=ThisRef},Filename) - when is_list(Filename) -> + when ?is_chardata(Filename) -> ?CLASS(ThisT,wxXmlResource), Filename_UC = unicode:characters_to_binary([Filename,0]), wxe_util:call(?wxXmlResource_Unload, diff --git a/lib/wx/src/gen/wx_misc.erl b/lib/wx/src/gen/wx_misc.erl index ce5d917136..66b1756a2f 100644 --- a/lib/wx/src/gen/wx_misc.erl +++ b/lib/wx/src/gen/wx_misc.erl @@ -72,7 +72,7 @@ bell() -> -spec findMenuItemId(Frame, MenuString, ItemString) -> integer() when Frame::wxFrame:wxFrame(), MenuString::unicode:chardata(), ItemString::unicode:chardata(). findMenuItemId(#wx_ref{type=FrameT,ref=FrameRef},MenuString,ItemString) - when is_list(MenuString),is_list(ItemString) -> + when ?is_chardata(MenuString),?is_chardata(ItemString) -> ?CLASS(FrameT,wxFrame), MenuString_UC = unicode:characters_to_binary([MenuString,0]), ItemString_UC = unicode:characters_to_binary([ItemString,0]), @@ -155,7 +155,7 @@ shell(Options) Url::unicode:chardata(). launchDefaultBrowser(Url) - when is_list(Url) -> + when ?is_chardata(Url) -> launchDefaultBrowser(Url, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_miscellany.html#wxlaunchdefaultbrowser">external documentation</a>. @@ -163,7 +163,7 @@ launchDefaultBrowser(Url) Url::unicode:chardata(), Option :: {'flags', integer()}. launchDefaultBrowser(Url, Options) - when is_list(Url),is_list(Options) -> + when ?is_chardata(Url),is_list(Options) -> Url_UC = unicode:characters_to_binary([Url,0]), MOpts = fun({flags, Flags}, Acc) -> [<<1:32/?UI,Flags:32/?UI>>|Acc]; (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, diff --git a/lib/wx/src/gen/wxe_debug.hrl b/lib/wx/src/gen/wxe_debug.hrl index 78c6577439..d3314f03a9 100644 --- a/lib/wx/src/gen/wxe_debug.hrl +++ b/lib/wx/src/gen/wxe_debug.hrl @@ -45,3333 +45,3337 @@ wxdebug_table() -> {123, {wxWindow, 'Destroy', 0}}, {124, {wxWindow, destroyChildren, 0}}, {125, {wxWindow, disable, 0}}, - {126, {wxWindow, enable, 1}}, - {127, {wxWindow, findFocus, 0}}, - {128, {wxWindow, findWindow_1_0, 1}}, - {129, {wxWindow, findWindow_1_1, 1}}, - {130, {wxWindow, findWindowById, 2}}, - {131, {wxWindow, findWindowByName, 2}}, - {132, {wxWindow, findWindowByLabel, 2}}, - {133, {wxWindow, fit, 0}}, - {134, {wxWindow, fitInside, 0}}, - {135, {wxWindow, freeze, 0}}, - {136, {wxWindow, getAcceleratorTable, 0}}, - {137, {wxWindow, getBackgroundColour, 0}}, - {138, {wxWindow, getBackgroundStyle, 0}}, - {139, {wxWindow, getBestSize, 0}}, - {141, {wxWindow, getCaret, 0}}, - {142, {wxWindow, getCapture, 0}}, - {143, {wxWindow, getCharHeight, 0}}, - {144, {wxWindow, getCharWidth, 0}}, - {145, {wxWindow, getChildren, 0}}, - {148, {wxWindow, getClientSize, 0}}, - {149, {wxWindow, getContainingSizer, 0}}, - {150, {wxWindow, getCursor, 0}}, - {151, {wxWindow, getDropTarget, 0}}, - {152, {wxWindow, getEventHandler, 0}}, - {153, {wxWindow, getExtraStyle, 0}}, - {154, {wxWindow, getFont, 0}}, - {155, {wxWindow, getForegroundColour, 0}}, - {156, {wxWindow, getGrandParent, 0}}, - {157, {wxWindow, getHandle, 0}}, - {158, {wxWindow, getHelpText, 0}}, - {159, {wxWindow, getId, 0}}, - {160, {wxWindow, getLabel, 0}}, - {161, {wxWindow, getMaxSize, 0}}, - {162, {wxWindow, getMinSize, 0}}, - {163, {wxWindow, getName, 0}}, - {164, {wxWindow, getParent, 0}}, - {166, {wxWindow, getPosition, 0}}, - {167, {wxWindow, getRect, 0}}, - {169, {wxWindow, getScreenPosition, 0}}, - {170, {wxWindow, getScreenRect, 0}}, - {171, {wxWindow, getScrollPos, 1}}, - {172, {wxWindow, getScrollRange, 1}}, - {173, {wxWindow, getScrollThumb, 1}}, - {175, {wxWindow, getSize, 0}}, - {176, {wxWindow, getSizer, 0}}, - {177, {wxWindow, getTextExtent, 4}}, - {178, {wxWindow, getToolTip, 0}}, - {179, {wxWindow, getUpdateRegion, 0}}, - {181, {wxWindow, getVirtualSize, 0}}, - {183, {wxWindow, getWindowStyleFlag, 0}}, - {184, {wxWindow, getWindowVariant, 0}}, - {185, {wxWindow, hasCapture, 0}}, - {186, {wxWindow, hasScrollbar, 1}}, - {187, {wxWindow, hasTransparentBackground, 0}}, - {188, {wxWindow, hide, 0}}, - {189, {wxWindow, inheritAttributes, 0}}, - {190, {wxWindow, initDialog, 0}}, - {191, {wxWindow, invalidateBestSize, 0}}, - {192, {wxWindow, isEnabled, 0}}, - {193, {wxWindow, isExposed_2, 2}}, - {194, {wxWindow, isExposed_4, 4}}, - {195, {wxWindow, isExposed_1_0, 1}}, - {196, {wxWindow, isExposed_1_1, 1}}, - {197, {wxWindow, isRetained, 0}}, - {198, {wxWindow, isShown, 0}}, - {199, {wxWindow, isTopLevel, 0}}, - {200, {wxWindow, layout, 0}}, - {201, {wxWindow, lineDown, 0}}, - {202, {wxWindow, lineUp, 0}}, - {203, {wxWindow, lower, 0}}, - {204, {wxWindow, makeModal, 1}}, - {205, {wxWindow, move_3, 3}}, - {206, {wxWindow, move_2, 2}}, - {207, {wxWindow, moveAfterInTabOrder, 1}}, - {208, {wxWindow, moveBeforeInTabOrder, 1}}, - {209, {wxWindow, navigate, 1}}, - {210, {wxWindow, pageDown, 0}}, - {211, {wxWindow, pageUp, 0}}, - {212, {wxWindow, popEventHandler, 1}}, - {213, {wxWindow, popupMenu_2, 2}}, - {214, {wxWindow, popupMenu_3, 3}}, - {215, {wxWindow, raise, 0}}, - {216, {wxWindow, refresh, 1}}, - {217, {wxWindow, refreshRect, 2}}, - {218, {wxWindow, releaseMouse, 0}}, - {219, {wxWindow, removeChild, 1}}, - {220, {wxWindow, reparent, 1}}, - {221, {wxWindow, screenToClient_2, 2}}, - {222, {wxWindow, screenToClient_1, 1}}, - {224, {wxWindow, scrollLines, 1}}, - {226, {wxWindow, scrollPages, 1}}, - {227, {wxWindow, scrollWindow, 3}}, - {228, {wxWindow, setAcceleratorTable, 1}}, - {229, {wxWindow, setAutoLayout, 1}}, - {230, {wxWindow, setBackgroundColour, 1}}, - {231, {wxWindow, setBackgroundStyle, 1}}, - {232, {wxWindow, setCaret, 1}}, - {233, {wxWindow, setClientSize_2, 2}}, - {234, {wxWindow, setClientSize_1_0, 1}}, - {235, {wxWindow, setClientSize_1_1, 1}}, - {236, {wxWindow, setContainingSizer, 1}}, - {237, {wxWindow, setCursor, 1}}, - {238, {wxWindow, setMaxSize, 1}}, - {239, {wxWindow, setMinSize, 1}}, - {240, {wxWindow, setOwnBackgroundColour, 1}}, - {241, {wxWindow, setOwnFont, 1}}, - {242, {wxWindow, setOwnForegroundColour, 1}}, - {243, {wxWindow, setDropTarget, 1}}, - {244, {wxWindow, setExtraStyle, 1}}, - {245, {wxWindow, setFocus, 0}}, - {246, {wxWindow, setFocusFromKbd, 0}}, - {247, {wxWindow, setFont, 1}}, - {248, {wxWindow, setForegroundColour, 1}}, - {249, {wxWindow, setHelpText, 1}}, - {250, {wxWindow, setId, 1}}, - {252, {wxWindow, setLabel, 1}}, - {253, {wxWindow, setName, 1}}, - {254, {wxWindow, setPalette, 1}}, - {255, {wxWindow, setScrollbar, 5}}, - {256, {wxWindow, setScrollPos, 3}}, - {257, {wxWindow, setSize_5, 5}}, - {258, {wxWindow, setSize_2_0, 2}}, - {259, {wxWindow, setSize_1, 1}}, - {260, {wxWindow, setSize_2_1, 2}}, - {261, {wxWindow, setSizeHints_3, 3}}, - {262, {wxWindow, setSizeHints_2, 2}}, - {263, {wxWindow, setSizer, 2}}, - {264, {wxWindow, setSizerAndFit, 2}}, - {265, {wxWindow, setThemeEnabled, 1}}, - {266, {wxWindow, setToolTip_1_0, 1}}, - {267, {wxWindow, setToolTip_1_1, 1}}, - {268, {wxWindow, setVirtualSize_1, 1}}, - {269, {wxWindow, setVirtualSize_2, 2}}, - {270, {wxWindow, setVirtualSizeHints_3, 3}}, - {271, {wxWindow, setVirtualSizeHints_2, 2}}, - {272, {wxWindow, setWindowStyle, 1}}, - {273, {wxWindow, setWindowStyleFlag, 1}}, - {274, {wxWindow, setWindowVariant, 1}}, - {275, {wxWindow, shouldInheritColours, 0}}, - {276, {wxWindow, show, 1}}, - {277, {wxWindow, thaw, 0}}, - {278, {wxWindow, transferDataFromWindow, 0}}, - {279, {wxWindow, transferDataToWindow, 0}}, - {280, {wxWindow, update, 0}}, - {281, {wxWindow, updateWindowUI, 1}}, - {282, {wxWindow, validate, 0}}, - {283, {wxWindow, warpPointer, 2}}, - {284, {wxWindow, setTransparent, 1}}, - {285, {wxWindow, canSetTransparent, 0}}, - {286, {wxWindow, isDoubleBuffered, 0}}, - {287, {wxWindow, setDoubleBuffered, 1}}, - {288, {wxTopLevelWindow, getIcon, 0}}, - {289, {wxTopLevelWindow, getIcons, 0}}, - {290, {wxTopLevelWindow, getTitle, 0}}, - {291, {wxTopLevelWindow, isActive, 0}}, - {292, {wxTopLevelWindow, iconize, 1}}, - {293, {wxTopLevelWindow, isFullScreen, 0}}, - {294, {wxTopLevelWindow, isIconized, 0}}, - {295, {wxTopLevelWindow, isMaximized, 0}}, - {296, {wxTopLevelWindow, maximize, 1}}, - {297, {wxTopLevelWindow, requestUserAttention, 1}}, - {298, {wxTopLevelWindow, setIcon, 1}}, - {299, {wxTopLevelWindow, setIcons, 1}}, - {300, {wxTopLevelWindow, centerOnScreen, 1}}, - {301, {wxTopLevelWindow, centreOnScreen, 1}}, - {303, {wxTopLevelWindow, setShape, 1}}, - {304, {wxTopLevelWindow, setTitle, 1}}, - {305, {wxTopLevelWindow, showFullScreen, 2}}, - {307, {wxFrame, new_4, 4}}, - {308, {wxFrame, new_0, 0}}, - {310, {wxFrame, destruct, 0}}, - {311, {wxFrame, create, 4}}, - {312, {wxFrame, createStatusBar, 1}}, - {313, {wxFrame, createToolBar, 1}}, - {314, {wxFrame, getClientAreaOrigin, 0}}, - {315, {wxFrame, getMenuBar, 0}}, - {316, {wxFrame, getStatusBar, 0}}, - {317, {wxFrame, getStatusBarPane, 0}}, - {318, {wxFrame, getToolBar, 0}}, - {319, {wxFrame, processCommand, 1}}, - {320, {wxFrame, sendSizeEvent, 0}}, - {321, {wxFrame, setMenuBar, 1}}, - {322, {wxFrame, setStatusBar, 1}}, - {323, {wxFrame, setStatusBarPane, 1}}, - {324, {wxFrame, setStatusText, 2}}, - {325, {wxFrame, setStatusWidths, 2}}, - {326, {wxFrame, setToolBar, 1}}, - {327, {wxMiniFrame, new_0, 0}}, - {328, {wxMiniFrame, new_4, 4}}, - {329, {wxMiniFrame, create, 4}}, - {330, {wxMiniFrame, 'Destroy', undefined}}, - {331, {wxSplashScreen, new_0, 0}}, - {332, {wxSplashScreen, new_6, 6}}, - {333, {wxSplashScreen, destruct, 0}}, - {334, {wxSplashScreen, getSplashStyle, 0}}, - {335, {wxSplashScreen, getTimeout, 0}}, - {336, {wxPanel, new_0, 0}}, - {337, {wxPanel, new_6, 6}}, - {338, {wxPanel, new_2, 2}}, - {339, {wxPanel, destruct, 0}}, - {340, {wxPanel, initDialog, 0}}, - {341, {wxPanel, setFocusIgnoringChildren, 0}}, - {342, {wxScrolledWindow, new_0, 0}}, - {343, {wxScrolledWindow, new_2, 2}}, - {344, {wxScrolledWindow, destruct, 0}}, - {345, {wxScrolledWindow, calcScrolledPosition_4, 4}}, - {346, {wxScrolledWindow, calcScrolledPosition_1, 1}}, - {347, {wxScrolledWindow, calcUnscrolledPosition_4, 4}}, - {348, {wxScrolledWindow, calcUnscrolledPosition_1, 1}}, - {349, {wxScrolledWindow, enableScrolling, 2}}, - {350, {wxScrolledWindow, getScrollPixelsPerUnit, 2}}, - {351, {wxScrolledWindow, getViewStart, 2}}, - {352, {wxScrolledWindow, doPrepareDC, 1}}, - {353, {wxScrolledWindow, prepareDC, 1}}, - {354, {wxScrolledWindow, scroll, 2}}, - {355, {wxScrolledWindow, setScrollbars, 5}}, - {356, {wxScrolledWindow, setScrollRate, 2}}, - {357, {wxScrolledWindow, setTargetWindow, 1}}, - {358, {wxSashWindow, new_0, 0}}, - {359, {wxSashWindow, new_2, 2}}, - {360, {wxSashWindow, destruct, 0}}, - {361, {wxSashWindow, getSashVisible, 1}}, - {362, {wxSashWindow, getMaximumSizeX, 0}}, - {363, {wxSashWindow, getMaximumSizeY, 0}}, - {364, {wxSashWindow, getMinimumSizeX, 0}}, - {365, {wxSashWindow, getMinimumSizeY, 0}}, - {366, {wxSashWindow, setMaximumSizeX, 1}}, - {367, {wxSashWindow, setMaximumSizeY, 1}}, - {368, {wxSashWindow, setMinimumSizeX, 1}}, - {369, {wxSashWindow, setMinimumSizeY, 1}}, - {370, {wxSashWindow, setSashVisible, 2}}, - {371, {wxSashLayoutWindow, new_0, 0}}, - {372, {wxSashLayoutWindow, new_2, 2}}, - {373, {wxSashLayoutWindow, create, 2}}, - {374, {wxSashLayoutWindow, getAlignment, 0}}, - {375, {wxSashLayoutWindow, getOrientation, 0}}, - {376, {wxSashLayoutWindow, setAlignment, 1}}, - {377, {wxSashLayoutWindow, setDefaultSize, 1}}, - {378, {wxSashLayoutWindow, setOrientation, 1}}, - {379, {wxSashLayoutWindow, 'Destroy', undefined}}, - {380, {wxGrid, new_0, 0}}, - {381, {wxGrid, new_3, 3}}, - {382, {wxGrid, new_4, 4}}, - {383, {wxGrid, destruct, 0}}, - {384, {wxGrid, appendCols, 1}}, - {385, {wxGrid, appendRows, 1}}, - {386, {wxGrid, autoSize, 0}}, - {387, {wxGrid, autoSizeColumn, 2}}, - {388, {wxGrid, autoSizeColumns, 1}}, - {389, {wxGrid, autoSizeRow, 2}}, - {390, {wxGrid, autoSizeRows, 1}}, - {391, {wxGrid, beginBatch, 0}}, - {392, {wxGrid, blockToDeviceRect, 2}}, - {393, {wxGrid, canDragColSize, 0}}, - {394, {wxGrid, canDragRowSize, 0}}, - {395, {wxGrid, canDragGridSize, 0}}, - {396, {wxGrid, canEnableCellControl, 0}}, - {397, {wxGrid, cellToRect_2, 2}}, - {398, {wxGrid, cellToRect_1, 1}}, - {399, {wxGrid, clearGrid, 0}}, - {400, {wxGrid, clearSelection, 0}}, - {401, {wxGrid, createGrid, 3}}, - {402, {wxGrid, deleteCols, 1}}, - {403, {wxGrid, deleteRows, 1}}, - {404, {wxGrid, disableCellEditControl, 0}}, - {405, {wxGrid, disableDragColSize, 0}}, - {406, {wxGrid, disableDragGridSize, 0}}, - {407, {wxGrid, disableDragRowSize, 0}}, - {408, {wxGrid, enableCellEditControl, 1}}, - {409, {wxGrid, enableDragColSize, 1}}, - {410, {wxGrid, enableDragGridSize, 1}}, - {411, {wxGrid, enableDragRowSize, 1}}, - {412, {wxGrid, enableEditing, 1}}, - {413, {wxGrid, enableGridLines, 1}}, - {414, {wxGrid, endBatch, 0}}, - {415, {wxGrid, fit, 0}}, - {416, {wxGrid, forceRefresh, 0}}, - {417, {wxGrid, getBatchCount, 0}}, - {418, {wxGrid, getCellAlignment, 4}}, - {419, {wxGrid, getCellBackgroundColour, 2}}, - {420, {wxGrid, getCellEditor, 2}}, - {421, {wxGrid, getCellFont, 2}}, - {422, {wxGrid, getCellRenderer, 2}}, - {423, {wxGrid, getCellTextColour, 2}}, - {424, {wxGrid, getCellValue_2, 2}}, - {425, {wxGrid, getCellValue_1, 1}}, - {426, {wxGrid, getColLabelAlignment, 2}}, - {427, {wxGrid, getColLabelSize, 0}}, - {428, {wxGrid, getColLabelValue, 1}}, - {429, {wxGrid, getColMinimalAcceptableWidth, 0}}, - {430, {wxGrid, getDefaultCellAlignment, 2}}, - {431, {wxGrid, getDefaultCellBackgroundColour, 0}}, - {432, {wxGrid, getDefaultCellFont, 0}}, - {433, {wxGrid, getDefaultCellTextColour, 0}}, - {434, {wxGrid, getDefaultColLabelSize, 0}}, - {435, {wxGrid, getDefaultColSize, 0}}, - {436, {wxGrid, getDefaultEditor, 0}}, - {437, {wxGrid, getDefaultEditorForCell_2, 2}}, - {438, {wxGrid, getDefaultEditorForCell_1, 1}}, - {439, {wxGrid, getDefaultEditorForType, 1}}, - {440, {wxGrid, getDefaultRenderer, 0}}, - {441, {wxGrid, getDefaultRendererForCell, 2}}, - {442, {wxGrid, getDefaultRendererForType, 1}}, - {443, {wxGrid, getDefaultRowLabelSize, 0}}, - {444, {wxGrid, getDefaultRowSize, 0}}, - {445, {wxGrid, getGridCursorCol, 0}}, - {446, {wxGrid, getGridCursorRow, 0}}, - {447, {wxGrid, getGridLineColour, 0}}, - {448, {wxGrid, gridLinesEnabled, 0}}, - {449, {wxGrid, getLabelBackgroundColour, 0}}, - {450, {wxGrid, getLabelFont, 0}}, - {451, {wxGrid, getLabelTextColour, 0}}, - {452, {wxGrid, getNumberCols, 0}}, - {453, {wxGrid, getNumberRows, 0}}, - {454, {wxGrid, getOrCreateCellAttr, 2}}, - {455, {wxGrid, getRowMinimalAcceptableHeight, 0}}, - {456, {wxGrid, getRowLabelAlignment, 2}}, - {457, {wxGrid, getRowLabelSize, 0}}, - {458, {wxGrid, getRowLabelValue, 1}}, - {459, {wxGrid, getRowSize, 1}}, - {460, {wxGrid, getScrollLineX, 0}}, - {461, {wxGrid, getScrollLineY, 0}}, - {462, {wxGrid, getSelectedCells, 0}}, - {463, {wxGrid, getSelectedCols, 0}}, - {464, {wxGrid, getSelectedRows, 0}}, - {465, {wxGrid, getSelectionBackground, 0}}, - {466, {wxGrid, getSelectionBlockTopLeft, 0}}, - {467, {wxGrid, getSelectionBlockBottomRight, 0}}, - {468, {wxGrid, getSelectionForeground, 0}}, - {469, {wxGrid, getViewWidth, 0}}, - {470, {wxGrid, getGridWindow, 0}}, - {471, {wxGrid, getGridRowLabelWindow, 0}}, - {472, {wxGrid, getGridColLabelWindow, 0}}, - {473, {wxGrid, getGridCornerLabelWindow, 0}}, - {474, {wxGrid, hideCellEditControl, 0}}, - {475, {wxGrid, insertCols, 1}}, - {476, {wxGrid, insertRows, 1}}, - {477, {wxGrid, isCellEditControlEnabled, 0}}, - {478, {wxGrid, isCurrentCellReadOnly, 0}}, - {479, {wxGrid, isEditable, 0}}, - {480, {wxGrid, isInSelection_2, 2}}, - {481, {wxGrid, isInSelection_1, 1}}, - {482, {wxGrid, isReadOnly, 2}}, - {483, {wxGrid, isSelection, 0}}, - {484, {wxGrid, isVisible_3, 3}}, - {485, {wxGrid, isVisible_2, 2}}, - {486, {wxGrid, makeCellVisible_2, 2}}, - {487, {wxGrid, makeCellVisible_1, 1}}, - {488, {wxGrid, moveCursorDown, 1}}, - {489, {wxGrid, moveCursorLeft, 1}}, - {490, {wxGrid, moveCursorRight, 1}}, - {491, {wxGrid, moveCursorUp, 1}}, - {492, {wxGrid, moveCursorDownBlock, 1}}, - {493, {wxGrid, moveCursorLeftBlock, 1}}, - {494, {wxGrid, moveCursorRightBlock, 1}}, - {495, {wxGrid, moveCursorUpBlock, 1}}, - {496, {wxGrid, movePageDown, 0}}, - {497, {wxGrid, movePageUp, 0}}, - {498, {wxGrid, registerDataType, 3}}, - {499, {wxGrid, saveEditControlValue, 0}}, - {500, {wxGrid, selectAll, 0}}, - {501, {wxGrid, selectBlock_5, 5}}, - {502, {wxGrid, selectBlock_3, 3}}, - {503, {wxGrid, selectCol, 2}}, - {504, {wxGrid, selectRow, 2}}, - {505, {wxGrid, setCellAlignment_4, 4}}, - {506, {wxGrid, setCellAlignment_3, 3}}, - {507, {wxGrid, setCellAlignment_1, 1}}, - {508, {wxGrid, setCellBackgroundColour_3_0, 3}}, - {509, {wxGrid, setCellBackgroundColour_1, 1}}, - {510, {wxGrid, setCellBackgroundColour_3_1, 3}}, - {511, {wxGrid, setCellEditor, 3}}, - {512, {wxGrid, setCellFont, 3}}, - {513, {wxGrid, setCellRenderer, 3}}, - {514, {wxGrid, setCellTextColour_3_0, 3}}, - {515, {wxGrid, setCellTextColour_3_1, 3}}, - {516, {wxGrid, setCellTextColour_1, 1}}, - {517, {wxGrid, setCellValue_3_0, 3}}, - {518, {wxGrid, setCellValue_2, 2}}, - {519, {wxGrid, setCellValue_3_1, 3}}, - {520, {wxGrid, setColAttr, 2}}, - {521, {wxGrid, setColFormatBool, 1}}, - {522, {wxGrid, setColFormatNumber, 1}}, - {523, {wxGrid, setColFormatFloat, 2}}, - {524, {wxGrid, setColFormatCustom, 2}}, - {525, {wxGrid, setColLabelAlignment, 2}}, - {526, {wxGrid, setColLabelSize, 1}}, - {527, {wxGrid, setColLabelValue, 2}}, - {528, {wxGrid, setColMinimalWidth, 2}}, - {529, {wxGrid, setColMinimalAcceptableWidth, 1}}, - {530, {wxGrid, setColSize, 2}}, - {531, {wxGrid, setDefaultCellAlignment, 2}}, - {532, {wxGrid, setDefaultCellBackgroundColour, 1}}, - {533, {wxGrid, setDefaultCellFont, 1}}, - {534, {wxGrid, setDefaultCellTextColour, 1}}, - {535, {wxGrid, setDefaultEditor, 1}}, - {536, {wxGrid, setDefaultRenderer, 1}}, - {537, {wxGrid, setDefaultColSize, 2}}, - {538, {wxGrid, setDefaultRowSize, 2}}, - {539, {wxGrid, setGridCursor, 2}}, - {540, {wxGrid, setGridLineColour, 1}}, - {541, {wxGrid, setLabelBackgroundColour, 1}}, - {542, {wxGrid, setLabelFont, 1}}, - {543, {wxGrid, setLabelTextColour, 1}}, - {544, {wxGrid, setMargins, 2}}, - {545, {wxGrid, setReadOnly, 3}}, - {546, {wxGrid, setRowAttr, 2}}, - {547, {wxGrid, setRowLabelAlignment, 2}}, - {548, {wxGrid, setRowLabelSize, 1}}, - {549, {wxGrid, setRowLabelValue, 2}}, - {550, {wxGrid, setRowMinimalHeight, 2}}, - {551, {wxGrid, setRowMinimalAcceptableHeight, 1}}, - {552, {wxGrid, setRowSize, 2}}, - {553, {wxGrid, setScrollLineX, 1}}, - {554, {wxGrid, setScrollLineY, 1}}, - {555, {wxGrid, setSelectionBackground, 1}}, - {556, {wxGrid, setSelectionForeground, 1}}, - {557, {wxGrid, setSelectionMode, 1}}, - {558, {wxGrid, showCellEditControl, 0}}, - {559, {wxGrid, xToCol, 2}}, - {560, {wxGrid, xToEdgeOfCol, 1}}, - {561, {wxGrid, yToEdgeOfRow, 1}}, - {562, {wxGrid, yToRow, 1}}, - {563, {wxGridCellRenderer, draw, 7}}, - {564, {wxGridCellRenderer, getBestSize, 5}}, - {565, {wxGridCellEditor, create, 3}}, - {566, {wxGridCellEditor, isCreated, 0}}, - {567, {wxGridCellEditor, setSize, 1}}, - {568, {wxGridCellEditor, show, 2}}, - {569, {wxGridCellEditor, paintBackground, 2}}, - {570, {wxGridCellEditor, beginEdit, 3}}, - {571, {wxGridCellEditor, endEdit, 3}}, - {572, {wxGridCellEditor, reset, 0}}, - {573, {wxGridCellEditor, startingKey, 1}}, - {574, {wxGridCellEditor, startingClick, 0}}, - {575, {wxGridCellEditor, handleReturn, 1}}, - {576, {wxGridCellBoolRenderer, new, 0}}, - {577, {wxGridCellBoolRenderer, 'Destroy', undefined}}, - {578, {wxGridCellBoolEditor, new, 0}}, - {579, {wxGridCellBoolEditor, isTrueValue, 1}}, - {580, {wxGridCellBoolEditor, useStringValues, 1}}, - {581, {wxGridCellBoolEditor, 'Destroy', undefined}}, - {582, {wxGridCellFloatRenderer, new, 1}}, - {583, {wxGridCellFloatRenderer, getPrecision, 0}}, - {584, {wxGridCellFloatRenderer, getWidth, 0}}, - {585, {wxGridCellFloatRenderer, setParameters, 1}}, - {586, {wxGridCellFloatRenderer, setPrecision, 1}}, - {587, {wxGridCellFloatRenderer, setWidth, 1}}, - {588, {wxGridCellFloatRenderer, 'Destroy', undefined}}, - {589, {wxGridCellFloatEditor, new, 1}}, - {590, {wxGridCellFloatEditor, setParameters, 1}}, - {591, {wxGridCellFloatEditor, 'Destroy', undefined}}, - {592, {wxGridCellStringRenderer, new, 0}}, - {593, {wxGridCellStringRenderer, 'Destroy', undefined}}, - {594, {wxGridCellTextEditor, new, 0}}, - {595, {wxGridCellTextEditor, setParameters, 1}}, - {596, {wxGridCellTextEditor, 'Destroy', undefined}}, - {598, {wxGridCellChoiceEditor, new, 2}}, - {599, {wxGridCellChoiceEditor, setParameters, 1}}, - {600, {wxGridCellChoiceEditor, 'Destroy', undefined}}, - {601, {wxGridCellNumberRenderer, new, 0}}, - {602, {wxGridCellNumberRenderer, 'Destroy', undefined}}, - {603, {wxGridCellNumberEditor, new, 1}}, - {604, {wxGridCellNumberEditor, getValue, 0}}, - {605, {wxGridCellNumberEditor, setParameters, 1}}, - {606, {wxGridCellNumberEditor, 'Destroy', undefined}}, - {607, {wxGridCellAttr, setTextColour, 1}}, - {608, {wxGridCellAttr, setBackgroundColour, 1}}, - {609, {wxGridCellAttr, setFont, 1}}, - {610, {wxGridCellAttr, setAlignment, 2}}, - {611, {wxGridCellAttr, setReadOnly, 1}}, - {612, {wxGridCellAttr, setRenderer, 1}}, - {613, {wxGridCellAttr, setEditor, 1}}, - {614, {wxGridCellAttr, hasTextColour, 0}}, - {615, {wxGridCellAttr, hasBackgroundColour, 0}}, - {616, {wxGridCellAttr, hasFont, 0}}, - {617, {wxGridCellAttr, hasAlignment, 0}}, - {618, {wxGridCellAttr, hasRenderer, 0}}, - {619, {wxGridCellAttr, hasEditor, 0}}, - {620, {wxGridCellAttr, getTextColour, 0}}, - {621, {wxGridCellAttr, getBackgroundColour, 0}}, - {622, {wxGridCellAttr, getFont, 0}}, - {623, {wxGridCellAttr, getAlignment, 2}}, - {624, {wxGridCellAttr, getRenderer, 3}}, - {625, {wxGridCellAttr, getEditor, 3}}, - {626, {wxGridCellAttr, isReadOnly, 0}}, - {627, {wxGridCellAttr, setDefAttr, 1}}, - {628, {wxDC, blit, 5}}, - {629, {wxDC, calcBoundingBox, 2}}, - {630, {wxDC, clear, 0}}, - {631, {wxDC, computeScaleAndOrigin, 0}}, - {632, {wxDC, crossHair, 1}}, - {633, {wxDC, destroyClippingRegion, 0}}, - {634, {wxDC, deviceToLogicalX, 1}}, - {635, {wxDC, deviceToLogicalXRel, 1}}, - {636, {wxDC, deviceToLogicalY, 1}}, - {637, {wxDC, deviceToLogicalYRel, 1}}, - {638, {wxDC, drawArc, 3}}, - {639, {wxDC, drawBitmap, 3}}, - {640, {wxDC, drawCheckMark, 1}}, - {641, {wxDC, drawCircle, 2}}, - {643, {wxDC, drawEllipse_2, 2}}, - {644, {wxDC, drawEllipse_1, 1}}, - {645, {wxDC, drawEllipticArc, 4}}, - {646, {wxDC, drawIcon, 2}}, - {647, {wxDC, drawLabel, 3}}, - {648, {wxDC, drawLine, 2}}, - {649, {wxDC, drawLines, 3}}, - {651, {wxDC, drawPolygon, 3}}, - {653, {wxDC, drawPoint, 1}}, - {655, {wxDC, drawRectangle_2, 2}}, - {656, {wxDC, drawRectangle_1, 1}}, - {657, {wxDC, drawRotatedText, 3}}, - {659, {wxDC, drawRoundedRectangle_3, 3}}, - {660, {wxDC, drawRoundedRectangle_2, 2}}, - {661, {wxDC, drawText, 2}}, - {662, {wxDC, endDoc, 0}}, - {663, {wxDC, endPage, 0}}, - {664, {wxDC, floodFill, 3}}, - {665, {wxDC, getBackground, 0}}, - {666, {wxDC, getBackgroundMode, 0}}, - {667, {wxDC, getBrush, 0}}, - {668, {wxDC, getCharHeight, 0}}, - {669, {wxDC, getCharWidth, 0}}, - {670, {wxDC, getClippingBox, 4}}, - {672, {wxDC, getFont, 0}}, - {673, {wxDC, getLayoutDirection, 0}}, - {674, {wxDC, getLogicalFunction, 0}}, - {675, {wxDC, getMapMode, 0}}, - {676, {wxDC, getMultiLineTextExtent_4, 4}}, - {677, {wxDC, getMultiLineTextExtent_1, 1}}, - {678, {wxDC, getPartialTextExtents, 2}}, - {679, {wxDC, getPen, 0}}, - {680, {wxDC, getPixel, 2}}, - {681, {wxDC, getPPI, 0}}, - {683, {wxDC, getSize, 0}}, - {685, {wxDC, getSizeMM, 0}}, - {686, {wxDC, getTextBackground, 0}}, - {687, {wxDC, getTextExtent_4, 4}}, - {688, {wxDC, getTextExtent_1, 1}}, - {690, {wxDC, getTextForeground, 0}}, - {691, {wxDC, getUserScale, 2}}, - {692, {wxDC, gradientFillConcentric_3, 3}}, - {693, {wxDC, gradientFillConcentric_4, 4}}, - {694, {wxDC, gradientFillLinear, 4}}, - {695, {wxDC, logicalToDeviceX, 1}}, - {696, {wxDC, logicalToDeviceXRel, 1}}, - {697, {wxDC, logicalToDeviceY, 1}}, - {698, {wxDC, logicalToDeviceYRel, 1}}, - {699, {wxDC, maxX, 0}}, - {700, {wxDC, maxY, 0}}, - {701, {wxDC, minX, 0}}, - {702, {wxDC, minY, 0}}, - {703, {wxDC, isOk, 0}}, - {704, {wxDC, resetBoundingBox, 0}}, - {705, {wxDC, setAxisOrientation, 2}}, - {706, {wxDC, setBackground, 1}}, - {707, {wxDC, setBackgroundMode, 1}}, - {708, {wxDC, setBrush, 1}}, - {710, {wxDC, setClippingRegion_2, 2}}, - {711, {wxDC, setClippingRegion_1_1, 1}}, - {712, {wxDC, setClippingRegion_1_0, 1}}, - {713, {wxDC, setDeviceOrigin, 2}}, - {714, {wxDC, setFont, 1}}, - {715, {wxDC, setLayoutDirection, 1}}, - {716, {wxDC, setLogicalFunction, 1}}, - {717, {wxDC, setMapMode, 1}}, - {718, {wxDC, setPalette, 1}}, - {719, {wxDC, setPen, 1}}, - {720, {wxDC, setTextBackground, 1}}, - {721, {wxDC, setTextForeground, 1}}, - {722, {wxDC, setUserScale, 2}}, - {723, {wxDC, startDoc, 1}}, - {724, {wxDC, startPage, 0}}, - {725, {wxMirrorDC, new, 2}}, - {726, {wxMirrorDC, 'Destroy', undefined}}, - {727, {wxScreenDC, new, 0}}, - {728, {wxScreenDC, destruct, 0}}, - {729, {wxPostScriptDC, new_0, 0}}, - {730, {wxPostScriptDC, new_1, 1}}, - {731, {wxPostScriptDC, destruct, 0}}, - {732, {wxPostScriptDC, setResolution, 1}}, - {733, {wxPostScriptDC, getResolution, 0}}, - {734, {wxWindowDC, new_0, 0}}, - {735, {wxWindowDC, new_1, 1}}, - {736, {wxWindowDC, destruct, 0}}, - {737, {wxClientDC, new_0, 0}}, - {738, {wxClientDC, new_1, 1}}, - {739, {wxClientDC, 'Destroy', undefined}}, - {740, {wxPaintDC, new_0, 0}}, - {741, {wxPaintDC, new_1, 1}}, - {742, {wxPaintDC, 'Destroy', undefined}}, - {744, {wxMemoryDC, new_1_0, 1}}, - {745, {wxMemoryDC, new_1_1, 1}}, - {746, {wxMemoryDC, new_0, 0}}, - {748, {wxMemoryDC, destruct, 0}}, - {749, {wxMemoryDC, selectObject, 1}}, - {750, {wxMemoryDC, selectObjectAsSource, 1}}, - {751, {wxBufferedDC, new_0, 0}}, - {752, {wxBufferedDC, new_2, 2}}, - {753, {wxBufferedDC, new_3, 3}}, - {754, {wxBufferedDC, destruct, 0}}, - {755, {wxBufferedDC, init_2, 2}}, - {756, {wxBufferedDC, init_3, 3}}, - {757, {wxBufferedPaintDC, new_3, 3}}, - {758, {wxBufferedPaintDC, new_2, 2}}, - {759, {wxBufferedPaintDC, destruct, 0}}, - {760, {wxGraphicsObject, destruct, 0}}, - {761, {wxGraphicsObject, getRenderer, 0}}, - {762, {wxGraphicsObject, isNull, 0}}, - {763, {wxGraphicsContext, destruct, 0}}, - {764, {wxGraphicsContext, create_1_1, 1}}, - {765, {wxGraphicsContext, create_1_0, 1}}, - {766, {wxGraphicsContext, create_0, 0}}, - {767, {wxGraphicsContext, createPen, 1}}, - {768, {wxGraphicsContext, createBrush, 1}}, - {769, {wxGraphicsContext, createRadialGradientBrush, 7}}, - {770, {wxGraphicsContext, createLinearGradientBrush, 6}}, - {771, {wxGraphicsContext, createFont, 2}}, - {772, {wxGraphicsContext, createMatrix, 1}}, - {773, {wxGraphicsContext, createPath, 0}}, - {774, {wxGraphicsContext, clip_1, 1}}, - {775, {wxGraphicsContext, clip_4, 4}}, - {776, {wxGraphicsContext, resetClip, 0}}, - {777, {wxGraphicsContext, drawBitmap, 5}}, - {778, {wxGraphicsContext, drawEllipse, 4}}, - {779, {wxGraphicsContext, drawIcon, 5}}, - {780, {wxGraphicsContext, drawLines, 3}}, - {781, {wxGraphicsContext, drawPath, 2}}, - {782, {wxGraphicsContext, drawRectangle, 4}}, - {783, {wxGraphicsContext, drawRoundedRectangle, 5}}, - {784, {wxGraphicsContext, drawText_3, 3}}, - {785, {wxGraphicsContext, drawText_4_0, 4}}, - {786, {wxGraphicsContext, drawText_4_1, 4}}, - {787, {wxGraphicsContext, drawText_5, 5}}, - {788, {wxGraphicsContext, fillPath, 2}}, - {789, {wxGraphicsContext, strokePath, 1}}, - {790, {wxGraphicsContext, getPartialTextExtents, 2}}, - {791, {wxGraphicsContext, getTextExtent, 5}}, - {792, {wxGraphicsContext, rotate, 1}}, - {793, {wxGraphicsContext, scale, 2}}, - {794, {wxGraphicsContext, translate, 2}}, - {795, {wxGraphicsContext, getTransform, 0}}, - {796, {wxGraphicsContext, setTransform, 1}}, - {797, {wxGraphicsContext, concatTransform, 1}}, - {798, {wxGraphicsContext, setBrush_1_1, 1}}, - {799, {wxGraphicsContext, setBrush_1_0, 1}}, - {800, {wxGraphicsContext, setFont_1, 1}}, - {801, {wxGraphicsContext, setFont_2, 2}}, - {802, {wxGraphicsContext, setPen_1_0, 1}}, - {803, {wxGraphicsContext, setPen_1_1, 1}}, - {804, {wxGraphicsContext, strokeLine, 4}}, - {805, {wxGraphicsContext, strokeLines, 2}}, - {807, {wxGraphicsMatrix, concat, 1}}, - {809, {wxGraphicsMatrix, get, 1}}, - {810, {wxGraphicsMatrix, invert, 0}}, - {811, {wxGraphicsMatrix, isEqual, 1}}, - {813, {wxGraphicsMatrix, isIdentity, 0}}, - {814, {wxGraphicsMatrix, rotate, 1}}, - {815, {wxGraphicsMatrix, scale, 2}}, - {816, {wxGraphicsMatrix, translate, 2}}, - {817, {wxGraphicsMatrix, set, 1}}, - {818, {wxGraphicsMatrix, transformPoint, 2}}, - {819, {wxGraphicsMatrix, transformDistance, 2}}, - {820, {wxGraphicsPath, moveToPoint_2, 2}}, - {821, {wxGraphicsPath, moveToPoint_1, 1}}, - {822, {wxGraphicsPath, addArc_6, 6}}, - {823, {wxGraphicsPath, addArc_5, 5}}, - {824, {wxGraphicsPath, addArcToPoint, 5}}, - {825, {wxGraphicsPath, addCircle, 3}}, - {826, {wxGraphicsPath, addCurveToPoint_6, 6}}, - {827, {wxGraphicsPath, addCurveToPoint_3, 3}}, - {828, {wxGraphicsPath, addEllipse, 4}}, - {829, {wxGraphicsPath, addLineToPoint_2, 2}}, - {830, {wxGraphicsPath, addLineToPoint_1, 1}}, - {831, {wxGraphicsPath, addPath, 1}}, - {832, {wxGraphicsPath, addQuadCurveToPoint, 4}}, - {833, {wxGraphicsPath, addRectangle, 4}}, - {834, {wxGraphicsPath, addRoundedRectangle, 5}}, - {835, {wxGraphicsPath, closeSubpath, 0}}, - {836, {wxGraphicsPath, contains_3, 3}}, - {837, {wxGraphicsPath, contains_2, 2}}, - {839, {wxGraphicsPath, getBox, 0}}, - {841, {wxGraphicsPath, getCurrentPoint, 0}}, - {842, {wxGraphicsPath, transform, 1}}, - {843, {wxGraphicsRenderer, getDefaultRenderer, 0}}, - {844, {wxGraphicsRenderer, createContext_1_1, 1}}, - {845, {wxGraphicsRenderer, createContext_1_0, 1}}, - {846, {wxGraphicsRenderer, createPen, 1}}, - {847, {wxGraphicsRenderer, createBrush, 1}}, - {848, {wxGraphicsRenderer, createLinearGradientBrush, 6}}, - {849, {wxGraphicsRenderer, createRadialGradientBrush, 7}}, - {850, {wxGraphicsRenderer, createFont, 2}}, - {851, {wxGraphicsRenderer, createMatrix, 1}}, - {852, {wxGraphicsRenderer, createPath, 0}}, - {854, {wxMenuBar, new_1, 1}}, - {856, {wxMenuBar, new_0, 0}}, - {858, {wxMenuBar, destruct, 0}}, - {859, {wxMenuBar, append, 2}}, - {860, {wxMenuBar, check, 2}}, - {861, {wxMenuBar, enable_2, 2}}, - {862, {wxMenuBar, enable_1, 1}}, - {863, {wxMenuBar, enableTop, 2}}, - {864, {wxMenuBar, findMenu, 1}}, - {865, {wxMenuBar, findMenuItem, 2}}, - {866, {wxMenuBar, findItem, 2}}, - {867, {wxMenuBar, getHelpString, 1}}, - {868, {wxMenuBar, getLabel_1, 1}}, - {869, {wxMenuBar, getLabel_0, 0}}, - {870, {wxMenuBar, getLabelTop, 1}}, - {871, {wxMenuBar, getMenu, 1}}, - {872, {wxMenuBar, getMenuCount, 0}}, - {873, {wxMenuBar, insert, 3}}, - {874, {wxMenuBar, isChecked, 1}}, - {875, {wxMenuBar, isEnabled_1, 1}}, - {876, {wxMenuBar, isEnabled_0, 0}}, - {877, {wxMenuBar, remove, 1}}, - {878, {wxMenuBar, replace, 3}}, - {879, {wxMenuBar, setHelpString, 2}}, - {880, {wxMenuBar, setLabel_2, 2}}, - {881, {wxMenuBar, setLabel_1, 1}}, - {882, {wxMenuBar, setLabelTop, 2}}, - {883, {wxControl, getLabel, 0}}, - {884, {wxControl, setLabel, 1}}, - {885, {wxControlWithItems, append_1, 1}}, - {886, {wxControlWithItems, append_2, 2}}, - {887, {wxControlWithItems, appendStrings_1, 1}}, - {888, {wxControlWithItems, clear, 0}}, - {889, {wxControlWithItems, delete, 1}}, - {890, {wxControlWithItems, findString, 2}}, - {891, {wxControlWithItems, getClientData, 1}}, - {892, {wxControlWithItems, setClientData, 2}}, - {893, {wxControlWithItems, getCount, 0}}, - {894, {wxControlWithItems, getSelection, 0}}, - {895, {wxControlWithItems, getString, 1}}, - {896, {wxControlWithItems, getStringSelection, 0}}, - {897, {wxControlWithItems, insert_2, 2}}, - {898, {wxControlWithItems, insert_3, 3}}, - {899, {wxControlWithItems, isEmpty, 0}}, - {900, {wxControlWithItems, select, 1}}, - {901, {wxControlWithItems, setSelection, 1}}, - {902, {wxControlWithItems, setString, 2}}, - {903, {wxControlWithItems, setStringSelection, 1}}, - {906, {wxMenu, new_2, 2}}, - {907, {wxMenu, new_1, 1}}, - {909, {wxMenu, destruct, 0}}, - {910, {wxMenu, append_3, 3}}, - {911, {wxMenu, append_1, 1}}, - {912, {wxMenu, append_4_0, 4}}, - {913, {wxMenu, append_4_1, 4}}, - {914, {wxMenu, appendCheckItem, 3}}, - {915, {wxMenu, appendRadioItem, 3}}, - {916, {wxMenu, appendSeparator, 0}}, - {917, {wxMenu, break, 0}}, - {918, {wxMenu, check, 2}}, - {919, {wxMenu, delete_1_0, 1}}, - {920, {wxMenu, delete_1_1, 1}}, - {921, {wxMenu, destroy_1_0, 1}}, - {922, {wxMenu, destroy_1_1, 1}}, - {923, {wxMenu, enable, 2}}, - {924, {wxMenu, findItem_1, 1}}, - {925, {wxMenu, findItem_2, 2}}, - {926, {wxMenu, findItemByPosition, 1}}, - {927, {wxMenu, getHelpString, 1}}, - {928, {wxMenu, getLabel, 1}}, - {929, {wxMenu, getMenuItemCount, 0}}, - {930, {wxMenu, getMenuItems, 0}}, - {932, {wxMenu, getTitle, 0}}, - {933, {wxMenu, insert_2, 2}}, - {934, {wxMenu, insert_3, 3}}, - {935, {wxMenu, insert_5_1, 5}}, - {936, {wxMenu, insert_5_0, 5}}, - {937, {wxMenu, insertCheckItem, 4}}, - {938, {wxMenu, insertRadioItem, 4}}, - {939, {wxMenu, insertSeparator, 1}}, - {940, {wxMenu, isChecked, 1}}, - {941, {wxMenu, isEnabled, 1}}, - {942, {wxMenu, prepend_1, 1}}, - {943, {wxMenu, prepend_2, 2}}, - {944, {wxMenu, prepend_4_1, 4}}, - {945, {wxMenu, prepend_4_0, 4}}, - {946, {wxMenu, prependCheckItem, 3}}, - {947, {wxMenu, prependRadioItem, 3}}, - {948, {wxMenu, prependSeparator, 0}}, - {949, {wxMenu, remove_1_0, 1}}, - {950, {wxMenu, remove_1_1, 1}}, - {951, {wxMenu, setHelpString, 2}}, - {952, {wxMenu, setLabel, 2}}, - {953, {wxMenu, setTitle, 1}}, - {954, {wxMenuItem, new, 1}}, - {956, {wxMenuItem, destruct, 0}}, - {957, {wxMenuItem, check, 1}}, - {958, {wxMenuItem, enable, 1}}, - {959, {wxMenuItem, getBitmap, 0}}, - {960, {wxMenuItem, getHelp, 0}}, - {961, {wxMenuItem, getId, 0}}, - {962, {wxMenuItem, getKind, 0}}, - {963, {wxMenuItem, getLabel, 0}}, - {964, {wxMenuItem, getLabelFromText, 1}}, - {965, {wxMenuItem, getMenu, 0}}, - {966, {wxMenuItem, getText, 0}}, - {967, {wxMenuItem, getSubMenu, 0}}, - {968, {wxMenuItem, isCheckable, 0}}, - {969, {wxMenuItem, isChecked, 0}}, - {970, {wxMenuItem, isEnabled, 0}}, - {971, {wxMenuItem, isSeparator, 0}}, - {972, {wxMenuItem, isSubMenu, 0}}, - {973, {wxMenuItem, setBitmap, 1}}, - {974, {wxMenuItem, setHelp, 1}}, - {975, {wxMenuItem, setMenu, 1}}, - {976, {wxMenuItem, setSubMenu, 1}}, - {977, {wxMenuItem, setText, 1}}, - {978, {wxToolBar, addControl, 1}}, - {979, {wxToolBar, addSeparator, 0}}, - {980, {wxToolBar, addTool_5, 5}}, - {981, {wxToolBar, addTool_4_0, 4}}, - {982, {wxToolBar, addTool_1, 1}}, - {983, {wxToolBar, addTool_4_1, 4}}, - {984, {wxToolBar, addTool_3, 3}}, - {985, {wxToolBar, addTool_6, 6}}, - {986, {wxToolBar, addCheckTool, 4}}, - {987, {wxToolBar, addRadioTool, 4}}, - {988, {wxToolBar, addStretchableSpace, 0}}, - {989, {wxToolBar, insertStretchableSpace, 1}}, - {990, {wxToolBar, deleteTool, 1}}, - {991, {wxToolBar, deleteToolByPos, 1}}, - {992, {wxToolBar, enableTool, 2}}, - {993, {wxToolBar, findById, 1}}, - {994, {wxToolBar, findControl, 1}}, - {995, {wxToolBar, findToolForPosition, 2}}, - {996, {wxToolBar, getToolSize, 0}}, - {997, {wxToolBar, getToolBitmapSize, 0}}, - {998, {wxToolBar, getMargins, 0}}, - {999, {wxToolBar, getToolEnabled, 1}}, - {1000, {wxToolBar, getToolLongHelp, 1}}, - {1001, {wxToolBar, getToolPacking, 0}}, - {1002, {wxToolBar, getToolPos, 1}}, - {1003, {wxToolBar, getToolSeparation, 0}}, - {1004, {wxToolBar, getToolShortHelp, 1}}, - {1005, {wxToolBar, getToolState, 1}}, - {1006, {wxToolBar, insertControl, 2}}, - {1007, {wxToolBar, insertSeparator, 1}}, - {1008, {wxToolBar, insertTool_5, 5}}, - {1009, {wxToolBar, insertTool_2, 2}}, - {1010, {wxToolBar, insertTool_4, 4}}, - {1011, {wxToolBar, realize, 0}}, - {1012, {wxToolBar, removeTool, 1}}, - {1013, {wxToolBar, setMargins, 2}}, - {1014, {wxToolBar, setToolBitmapSize, 1}}, - {1015, {wxToolBar, setToolLongHelp, 2}}, - {1016, {wxToolBar, setToolPacking, 1}}, - {1017, {wxToolBar, setToolShortHelp, 2}}, - {1018, {wxToolBar, setToolSeparation, 1}}, - {1019, {wxToolBar, toggleTool, 2}}, - {1021, {wxStatusBar, new_0, 0}}, - {1022, {wxStatusBar, new_2, 2}}, - {1024, {wxStatusBar, destruct, 0}}, - {1025, {wxStatusBar, create, 2}}, - {1026, {wxStatusBar, getFieldRect, 2}}, - {1027, {wxStatusBar, getFieldsCount, 0}}, - {1028, {wxStatusBar, getStatusText, 1}}, - {1029, {wxStatusBar, popStatusText, 1}}, - {1030, {wxStatusBar, pushStatusText, 2}}, - {1031, {wxStatusBar, setFieldsCount, 2}}, - {1032, {wxStatusBar, setMinHeight, 1}}, - {1033, {wxStatusBar, setStatusText, 2}}, - {1034, {wxStatusBar, setStatusWidths, 2}}, - {1035, {wxStatusBar, setStatusStyles, 2}}, - {1036, {wxBitmap, new_0, 0}}, - {1037, {wxBitmap, new_3, 3}}, - {1038, {wxBitmap, new_4, 4}}, - {1039, {wxBitmap, new_2_0, 2}}, - {1040, {wxBitmap, new_2_1, 2}}, - {1041, {wxBitmap, destruct, 0}}, - {1042, {wxBitmap, convertToImage, 0}}, - {1043, {wxBitmap, copyFromIcon, 1}}, - {1044, {wxBitmap, create, 3}}, - {1045, {wxBitmap, getDepth, 0}}, - {1046, {wxBitmap, getHeight, 0}}, - {1047, {wxBitmap, getPalette, 0}}, - {1048, {wxBitmap, getMask, 0}}, - {1049, {wxBitmap, getWidth, 0}}, - {1050, {wxBitmap, getSubBitmap, 1}}, - {1051, {wxBitmap, loadFile, 2}}, - {1052, {wxBitmap, ok, 0}}, - {1053, {wxBitmap, saveFile, 3}}, - {1054, {wxBitmap, setDepth, 1}}, - {1055, {wxBitmap, setHeight, 1}}, - {1056, {wxBitmap, setMask, 1}}, - {1057, {wxBitmap, setPalette, 1}}, - {1058, {wxBitmap, setWidth, 1}}, - {1059, {wxIcon, new_0, 0}}, - {1060, {wxIcon, new_2, 2}}, - {1061, {wxIcon, new_1, 1}}, - {1062, {wxIcon, copyFromBitmap, 1}}, - {1063, {wxIcon, 'Destroy', undefined}}, - {1064, {wxIconBundle, new_0, 0}}, - {1065, {wxIconBundle, new_2, 2}}, - {1066, {wxIconBundle, new_1_0, 1}}, - {1067, {wxIconBundle, new_1_1, 1}}, - {1068, {wxIconBundle, destruct, 0}}, - {1069, {wxIconBundle, addIcon_2, 2}}, - {1070, {wxIconBundle, addIcon_1, 1}}, - {1071, {wxIconBundle, getIcon_1_1, 1}}, - {1072, {wxIconBundle, getIcon_1_0, 1}}, - {1073, {wxCursor, new_0, 0}}, - {1074, {wxCursor, new_1_0, 1}}, - {1075, {wxCursor, new_1_1, 1}}, - {1076, {wxCursor, new_4, 4}}, - {1077, {wxCursor, destruct, 0}}, - {1078, {wxCursor, ok, 0}}, - {1079, {wxMask, new_0, 0}}, - {1080, {wxMask, new_2_1, 2}}, - {1081, {wxMask, new_2_0, 2}}, - {1082, {wxMask, new_1, 1}}, - {1083, {wxMask, destruct, 0}}, - {1084, {wxMask, create_2_1, 2}}, - {1085, {wxMask, create_2_0, 2}}, - {1086, {wxMask, create_1, 1}}, - {1087, {wxImage, new_0, 0}}, - {1088, {wxImage, new_3_0, 3}}, - {1089, {wxImage, new_4, 4}}, - {1090, {wxImage, new_5, 5}}, - {1091, {wxImage, new_2, 2}}, - {1092, {wxImage, new_3_1, 3}}, - {1093, {wxImage, blur, 1}}, - {1094, {wxImage, blurHorizontal, 1}}, - {1095, {wxImage, blurVertical, 1}}, - {1096, {wxImage, convertAlphaToMask, 1}}, - {1097, {wxImage, convertToGreyscale, 1}}, - {1098, {wxImage, convertToMono, 3}}, - {1099, {wxImage, copy, 0}}, - {1100, {wxImage, create_3, 3}}, - {1101, {wxImage, create_4, 4}}, - {1102, {wxImage, create_5, 5}}, - {1103, {wxImage, 'Destroy', 0}}, - {1104, {wxImage, findFirstUnusedColour, 4}}, - {1105, {wxImage, getImageExtWildcard, 0}}, - {1106, {wxImage, getAlpha_2, 2}}, - {1107, {wxImage, getAlpha_0, 0}}, - {1108, {wxImage, getBlue, 2}}, - {1109, {wxImage, getData, 0}}, - {1110, {wxImage, getGreen, 2}}, - {1111, {wxImage, getImageCount, 2}}, - {1112, {wxImage, getHeight, 0}}, - {1113, {wxImage, getMaskBlue, 0}}, - {1114, {wxImage, getMaskGreen, 0}}, - {1115, {wxImage, getMaskRed, 0}}, - {1116, {wxImage, getOrFindMaskColour, 3}}, - {1117, {wxImage, getPalette, 0}}, - {1118, {wxImage, getRed, 2}}, - {1119, {wxImage, getSubImage, 1}}, - {1120, {wxImage, getWidth, 0}}, - {1121, {wxImage, hasAlpha, 0}}, - {1122, {wxImage, hasMask, 0}}, - {1123, {wxImage, getOption, 1}}, - {1124, {wxImage, getOptionInt, 1}}, - {1125, {wxImage, hasOption, 1}}, - {1126, {wxImage, initAlpha, 0}}, - {1127, {wxImage, initStandardHandlers, 0}}, - {1128, {wxImage, isTransparent, 3}}, - {1129, {wxImage, loadFile_2, 2}}, - {1130, {wxImage, loadFile_3, 3}}, - {1131, {wxImage, ok, 0}}, - {1132, {wxImage, removeHandler, 1}}, - {1133, {wxImage, mirror, 1}}, - {1134, {wxImage, replace, 6}}, - {1135, {wxImage, rescale, 3}}, - {1136, {wxImage, resize, 3}}, - {1137, {wxImage, rotate, 3}}, - {1138, {wxImage, rotateHue, 1}}, - {1139, {wxImage, rotate90, 1}}, - {1140, {wxImage, saveFile_1, 1}}, - {1141, {wxImage, saveFile_2_0, 2}}, - {1142, {wxImage, saveFile_2_1, 2}}, - {1143, {wxImage, scale, 3}}, - {1144, {wxImage, size, 3}}, - {1145, {wxImage, setAlpha_3, 3}}, - {1146, {wxImage, setAlpha_2, 2}}, - {1147, {wxImage, setData_2, 2}}, - {1148, {wxImage, setData_4, 4}}, - {1149, {wxImage, setMask, 1}}, - {1150, {wxImage, setMaskColour, 3}}, - {1151, {wxImage, setMaskFromImage, 4}}, - {1152, {wxImage, setOption_2_1, 2}}, - {1153, {wxImage, setOption_2_0, 2}}, - {1154, {wxImage, setPalette, 1}}, - {1155, {wxImage, setRGB_5, 5}}, - {1156, {wxImage, setRGB_4, 4}}, - {1157, {wxImage, 'Destroy', undefined}}, - {1158, {wxBrush, new_0, 0}}, - {1159, {wxBrush, new_2, 2}}, - {1160, {wxBrush, new_1, 1}}, - {1162, {wxBrush, destruct, 0}}, - {1163, {wxBrush, getColour, 0}}, - {1164, {wxBrush, getStipple, 0}}, - {1165, {wxBrush, getStyle, 0}}, - {1166, {wxBrush, isHatch, 0}}, - {1167, {wxBrush, isOk, 0}}, - {1168, {wxBrush, setColour_1, 1}}, - {1169, {wxBrush, setColour_3, 3}}, - {1170, {wxBrush, setStipple, 1}}, - {1171, {wxBrush, setStyle, 1}}, - {1172, {wxPen, new_0, 0}}, - {1173, {wxPen, new_2, 2}}, - {1174, {wxPen, destruct, 0}}, - {1175, {wxPen, getCap, 0}}, - {1176, {wxPen, getColour, 0}}, - {1177, {wxPen, getJoin, 0}}, - {1178, {wxPen, getStyle, 0}}, - {1179, {wxPen, getWidth, 0}}, - {1180, {wxPen, isOk, 0}}, - {1181, {wxPen, setCap, 1}}, - {1182, {wxPen, setColour_1, 1}}, - {1183, {wxPen, setColour_3, 3}}, - {1184, {wxPen, setJoin, 1}}, - {1185, {wxPen, setStyle, 1}}, - {1186, {wxPen, setWidth, 1}}, - {1187, {wxRegion, new_0, 0}}, - {1188, {wxRegion, new_4, 4}}, - {1189, {wxRegion, new_2, 2}}, - {1190, {wxRegion, new_1_1, 1}}, - {1192, {wxRegion, new_1_0, 1}}, - {1194, {wxRegion, destruct, 0}}, - {1195, {wxRegion, clear, 0}}, - {1196, {wxRegion, contains_2, 2}}, - {1197, {wxRegion, contains_1_0, 1}}, - {1198, {wxRegion, contains_4, 4}}, - {1199, {wxRegion, contains_1_1, 1}}, - {1200, {wxRegion, convertToBitmap, 0}}, - {1201, {wxRegion, getBox, 0}}, - {1202, {wxRegion, intersect_4, 4}}, - {1203, {wxRegion, intersect_1_1, 1}}, - {1204, {wxRegion, intersect_1_0, 1}}, - {1205, {wxRegion, isEmpty, 0}}, - {1206, {wxRegion, subtract_4, 4}}, - {1207, {wxRegion, subtract_1_1, 1}}, - {1208, {wxRegion, subtract_1_0, 1}}, - {1209, {wxRegion, offset_2, 2}}, - {1210, {wxRegion, offset_1, 1}}, - {1211, {wxRegion, union_4, 4}}, - {1212, {wxRegion, union_1_2, 1}}, - {1213, {wxRegion, union_1_1, 1}}, - {1214, {wxRegion, union_1_0, 1}}, - {1215, {wxRegion, union_3, 3}}, - {1216, {wxRegion, xor_4, 4}}, - {1217, {wxRegion, xor_1_1, 1}}, - {1218, {wxRegion, xor_1_0, 1}}, - {1219, {wxAcceleratorTable, new_0, 0}}, - {1220, {wxAcceleratorTable, new_2, 2}}, - {1221, {wxAcceleratorTable, destruct, 0}}, - {1222, {wxAcceleratorTable, ok, 0}}, - {1223, {wxAcceleratorEntry, new_1_0, 1}}, - {1224, {wxAcceleratorEntry, new_1_1, 1}}, - {1225, {wxAcceleratorEntry, getCommand, 0}}, - {1226, {wxAcceleratorEntry, getFlags, 0}}, - {1227, {wxAcceleratorEntry, getKeyCode, 0}}, - {1228, {wxAcceleratorEntry, set, 4}}, - {1229, {wxAcceleratorEntry, 'Destroy', undefined}}, - {1234, {wxCaret, new_3, 3}}, - {1235, {wxCaret, new_2, 2}}, - {1237, {wxCaret, destruct, 0}}, - {1238, {wxCaret, create_3, 3}}, - {1239, {wxCaret, create_2, 2}}, - {1240, {wxCaret, getBlinkTime, 0}}, - {1242, {wxCaret, getPosition, 0}}, - {1244, {wxCaret, getSize, 0}}, - {1245, {wxCaret, getWindow, 0}}, - {1246, {wxCaret, hide, 0}}, - {1247, {wxCaret, isOk, 0}}, - {1248, {wxCaret, isVisible, 0}}, - {1249, {wxCaret, move_2, 2}}, - {1250, {wxCaret, move_1, 1}}, - {1251, {wxCaret, setBlinkTime, 1}}, - {1252, {wxCaret, setSize_2, 2}}, - {1253, {wxCaret, setSize_1, 1}}, - {1254, {wxCaret, show, 1}}, - {1255, {wxSizer, add_2_1, 2}}, - {1256, {wxSizer, add_2_0, 2}}, - {1257, {wxSizer, add_3, 3}}, - {1258, {wxSizer, add_2_3, 2}}, - {1259, {wxSizer, add_2_2, 2}}, - {1260, {wxSizer, addSpacer, 1}}, - {1261, {wxSizer, addStretchSpacer, 1}}, - {1262, {wxSizer, calcMin, 0}}, - {1263, {wxSizer, clear, 1}}, - {1264, {wxSizer, detach_1_2, 1}}, - {1265, {wxSizer, detach_1_1, 1}}, - {1266, {wxSizer, detach_1_0, 1}}, - {1267, {wxSizer, fit, 1}}, - {1268, {wxSizer, fitInside, 1}}, - {1269, {wxSizer, getChildren, 0}}, - {1270, {wxSizer, getItem_2_1, 2}}, - {1271, {wxSizer, getItem_2_0, 2}}, - {1272, {wxSizer, getItem_1, 1}}, - {1273, {wxSizer, getSize, 0}}, - {1274, {wxSizer, getPosition, 0}}, - {1275, {wxSizer, getMinSize, 0}}, - {1276, {wxSizer, hide_2_0, 2}}, - {1277, {wxSizer, hide_2_1, 2}}, - {1278, {wxSizer, hide_1, 1}}, - {1279, {wxSizer, insert_3_1, 3}}, - {1280, {wxSizer, insert_3_0, 3}}, - {1281, {wxSizer, insert_4, 4}}, - {1282, {wxSizer, insert_3_3, 3}}, - {1283, {wxSizer, insert_3_2, 3}}, - {1284, {wxSizer, insert_2, 2}}, - {1285, {wxSizer, insertSpacer, 2}}, - {1286, {wxSizer, insertStretchSpacer, 2}}, - {1287, {wxSizer, isShown_1_2, 1}}, - {1288, {wxSizer, isShown_1_1, 1}}, - {1289, {wxSizer, isShown_1_0, 1}}, - {1290, {wxSizer, layout, 0}}, - {1291, {wxSizer, prepend_2_1, 2}}, - {1292, {wxSizer, prepend_2_0, 2}}, - {1293, {wxSizer, prepend_3, 3}}, - {1294, {wxSizer, prepend_2_3, 2}}, - {1295, {wxSizer, prepend_2_2, 2}}, - {1296, {wxSizer, prepend_1, 1}}, - {1297, {wxSizer, prependSpacer, 1}}, - {1298, {wxSizer, prependStretchSpacer, 1}}, - {1299, {wxSizer, recalcSizes, 0}}, - {1300, {wxSizer, remove_1_1, 1}}, - {1301, {wxSizer, remove_1_0, 1}}, - {1302, {wxSizer, replace_3_1, 3}}, - {1303, {wxSizer, replace_3_0, 3}}, - {1304, {wxSizer, replace_2, 2}}, - {1305, {wxSizer, setDimension, 4}}, - {1306, {wxSizer, setMinSize_2, 2}}, - {1307, {wxSizer, setMinSize_1, 1}}, - {1308, {wxSizer, setItemMinSize_3_2, 3}}, - {1309, {wxSizer, setItemMinSize_2_2, 2}}, - {1310, {wxSizer, setItemMinSize_3_1, 3}}, - {1311, {wxSizer, setItemMinSize_2_1, 2}}, - {1312, {wxSizer, setItemMinSize_3_0, 3}}, - {1313, {wxSizer, setItemMinSize_2_0, 2}}, - {1314, {wxSizer, setSizeHints, 1}}, - {1315, {wxSizer, setVirtualSizeHints, 1}}, - {1316, {wxSizer, show_2_2, 2}}, - {1317, {wxSizer, show_2_1, 2}}, - {1318, {wxSizer, show_2_0, 2}}, - {1319, {wxSizer, show_1, 1}}, - {1320, {wxSizerFlags, new, 1}}, - {1321, {wxSizerFlags, align, 1}}, - {1322, {wxSizerFlags, border_2, 2}}, - {1323, {wxSizerFlags, border_1, 1}}, - {1324, {wxSizerFlags, center, 0}}, - {1325, {wxSizerFlags, centre, 0}}, - {1326, {wxSizerFlags, expand, 0}}, - {1327, {wxSizerFlags, left, 0}}, - {1328, {wxSizerFlags, proportion, 1}}, - {1329, {wxSizerFlags, right, 0}}, - {1330, {wxSizerFlags, 'Destroy', undefined}}, - {1331, {wxSizerItem, new_5_1, 5}}, - {1332, {wxSizerItem, new_2_1, 2}}, - {1333, {wxSizerItem, new_5_0, 5}}, - {1334, {wxSizerItem, new_2_0, 2}}, - {1335, {wxSizerItem, new_6, 6}}, - {1336, {wxSizerItem, new_3, 3}}, - {1337, {wxSizerItem, new_0, 0}}, - {1338, {wxSizerItem, destruct, 0}}, - {1339, {wxSizerItem, calcMin, 0}}, - {1340, {wxSizerItem, deleteWindows, 0}}, - {1341, {wxSizerItem, detachSizer, 0}}, - {1342, {wxSizerItem, getBorder, 0}}, - {1343, {wxSizerItem, getFlag, 0}}, - {1344, {wxSizerItem, getMinSize, 0}}, - {1345, {wxSizerItem, getPosition, 0}}, - {1346, {wxSizerItem, getProportion, 0}}, - {1347, {wxSizerItem, getRatio, 0}}, - {1348, {wxSizerItem, getRect, 0}}, - {1349, {wxSizerItem, getSize, 0}}, - {1350, {wxSizerItem, getSizer, 0}}, - {1351, {wxSizerItem, getSpacer, 0}}, - {1352, {wxSizerItem, getUserData, 0}}, - {1353, {wxSizerItem, getWindow, 0}}, - {1354, {wxSizerItem, isSizer, 0}}, - {1355, {wxSizerItem, isShown, 0}}, - {1356, {wxSizerItem, isSpacer, 0}}, - {1357, {wxSizerItem, isWindow, 0}}, - {1358, {wxSizerItem, setBorder, 1}}, - {1359, {wxSizerItem, setDimension, 2}}, - {1360, {wxSizerItem, setFlag, 1}}, - {1361, {wxSizerItem, setInitSize, 2}}, - {1362, {wxSizerItem, setMinSize_1, 1}}, - {1363, {wxSizerItem, setMinSize_2, 2}}, - {1364, {wxSizerItem, setProportion, 1}}, - {1365, {wxSizerItem, setRatio_2, 2}}, - {1366, {wxSizerItem, setRatio_1_1, 1}}, - {1367, {wxSizerItem, setRatio_1_0, 1}}, - {1368, {wxSizerItem, setSizer, 1}}, - {1369, {wxSizerItem, setSpacer_1, 1}}, - {1370, {wxSizerItem, setSpacer_2, 2}}, - {1371, {wxSizerItem, setWindow, 1}}, - {1372, {wxSizerItem, show, 1}}, - {1373, {wxBoxSizer, new, 1}}, - {1374, {wxBoxSizer, getOrientation, 0}}, - {1375, {wxBoxSizer, 'Destroy', undefined}}, - {1376, {wxStaticBoxSizer, new_2, 2}}, - {1377, {wxStaticBoxSizer, new_3, 3}}, - {1378, {wxStaticBoxSizer, getStaticBox, 0}}, - {1379, {wxStaticBoxSizer, 'Destroy', undefined}}, - {1380, {wxGridSizer, new_4, 4}}, - {1381, {wxGridSizer, new_2, 2}}, - {1382, {wxGridSizer, getCols, 0}}, - {1383, {wxGridSizer, getHGap, 0}}, - {1384, {wxGridSizer, getRows, 0}}, - {1385, {wxGridSizer, getVGap, 0}}, - {1386, {wxGridSizer, setCols, 1}}, - {1387, {wxGridSizer, setHGap, 1}}, - {1388, {wxGridSizer, setRows, 1}}, - {1389, {wxGridSizer, setVGap, 1}}, - {1390, {wxGridSizer, 'Destroy', undefined}}, - {1391, {wxFlexGridSizer, new_4, 4}}, - {1392, {wxFlexGridSizer, new_2, 2}}, - {1393, {wxFlexGridSizer, addGrowableCol, 2}}, - {1394, {wxFlexGridSizer, addGrowableRow, 2}}, - {1395, {wxFlexGridSizer, getFlexibleDirection, 0}}, - {1396, {wxFlexGridSizer, getNonFlexibleGrowMode, 0}}, - {1397, {wxFlexGridSizer, removeGrowableCol, 1}}, - {1398, {wxFlexGridSizer, removeGrowableRow, 1}}, - {1399, {wxFlexGridSizer, setFlexibleDirection, 1}}, - {1400, {wxFlexGridSizer, setNonFlexibleGrowMode, 1}}, - {1401, {wxFlexGridSizer, 'Destroy', undefined}}, - {1402, {wxGridBagSizer, new, 1}}, - {1403, {wxGridBagSizer, add_3_2, 3}}, - {1404, {wxGridBagSizer, add_3_1, 3}}, - {1405, {wxGridBagSizer, add_4, 4}}, - {1406, {wxGridBagSizer, add_1_0, 1}}, - {1407, {wxGridBagSizer, add_2_1, 2}}, - {1408, {wxGridBagSizer, add_2_0, 2}}, - {1409, {wxGridBagSizer, add_3_0, 3}}, - {1410, {wxGridBagSizer, add_1_1, 1}}, - {1411, {wxGridBagSizer, calcMin, 0}}, - {1412, {wxGridBagSizer, checkForIntersection_2, 2}}, - {1413, {wxGridBagSizer, checkForIntersection_3, 3}}, - {1414, {wxGridBagSizer, findItem_1_1, 1}}, - {1415, {wxGridBagSizer, findItem_1_0, 1}}, - {1416, {wxGridBagSizer, findItemAtPoint, 1}}, - {1417, {wxGridBagSizer, findItemAtPosition, 1}}, - {1418, {wxGridBagSizer, findItemWithData, 1}}, - {1419, {wxGridBagSizer, getCellSize, 2}}, - {1420, {wxGridBagSizer, getEmptyCellSize, 0}}, - {1421, {wxGridBagSizer, getItemPosition_1_2, 1}}, - {1422, {wxGridBagSizer, getItemPosition_1_1, 1}}, - {1423, {wxGridBagSizer, getItemPosition_1_0, 1}}, - {1424, {wxGridBagSizer, getItemSpan_1_2, 1}}, - {1425, {wxGridBagSizer, getItemSpan_1_1, 1}}, - {1426, {wxGridBagSizer, getItemSpan_1_0, 1}}, - {1427, {wxGridBagSizer, setEmptyCellSize, 1}}, - {1428, {wxGridBagSizer, setItemPosition_2_2, 2}}, - {1429, {wxGridBagSizer, setItemPosition_2_1, 2}}, - {1430, {wxGridBagSizer, setItemPosition_2_0, 2}}, - {1431, {wxGridBagSizer, setItemSpan_2_2, 2}}, - {1432, {wxGridBagSizer, setItemSpan_2_1, 2}}, - {1433, {wxGridBagSizer, setItemSpan_2_0, 2}}, - {1434, {wxGridBagSizer, 'Destroy', undefined}}, - {1435, {wxStdDialogButtonSizer, new, 0}}, - {1436, {wxStdDialogButtonSizer, addButton, 1}}, - {1437, {wxStdDialogButtonSizer, realize, 0}}, - {1438, {wxStdDialogButtonSizer, setAffirmativeButton, 1}}, - {1439, {wxStdDialogButtonSizer, setCancelButton, 1}}, - {1440, {wxStdDialogButtonSizer, setNegativeButton, 1}}, - {1441, {wxStdDialogButtonSizer, 'Destroy', undefined}}, - {1442, {wxFont, new_0, 0}}, - {1443, {wxFont, new_1, 1}}, - {1444, {wxFont, new_5, 5}}, - {1446, {wxFont, destruct, 0}}, - {1447, {wxFont, isFixedWidth, 0}}, - {1448, {wxFont, getDefaultEncoding, 0}}, - {1449, {wxFont, getFaceName, 0}}, - {1450, {wxFont, getFamily, 0}}, - {1451, {wxFont, getNativeFontInfoDesc, 0}}, - {1452, {wxFont, getNativeFontInfoUserDesc, 0}}, - {1453, {wxFont, getPointSize, 0}}, - {1454, {wxFont, getStyle, 0}}, - {1455, {wxFont, getUnderlined, 0}}, - {1456, {wxFont, getWeight, 0}}, - {1457, {wxFont, ok, 0}}, - {1458, {wxFont, setDefaultEncoding, 1}}, - {1459, {wxFont, setFaceName, 1}}, - {1460, {wxFont, setFamily, 1}}, - {1461, {wxFont, setPointSize, 1}}, - {1462, {wxFont, setStyle, 1}}, - {1463, {wxFont, setUnderlined, 1}}, - {1464, {wxFont, setWeight, 1}}, - {1465, {wxToolTip, enable, 1}}, - {1466, {wxToolTip, setDelay, 1}}, - {1467, {wxToolTip, new, 1}}, - {1468, {wxToolTip, setTip, 1}}, - {1469, {wxToolTip, getTip, 0}}, - {1470, {wxToolTip, getWindow, 0}}, - {1471, {wxToolTip, 'Destroy', undefined}}, - {1473, {wxButton, new_3, 3}}, - {1474, {wxButton, new_0, 0}}, - {1475, {wxButton, destruct, 0}}, - {1476, {wxButton, create, 3}}, - {1477, {wxButton, getDefaultSize, 0}}, - {1478, {wxButton, setDefault, 0}}, - {1479, {wxButton, setLabel, 1}}, - {1481, {wxBitmapButton, new_4, 4}}, - {1482, {wxBitmapButton, new_0, 0}}, - {1483, {wxBitmapButton, create, 4}}, - {1484, {wxBitmapButton, getBitmapDisabled, 0}}, - {1486, {wxBitmapButton, getBitmapFocus, 0}}, - {1488, {wxBitmapButton, getBitmapLabel, 0}}, - {1490, {wxBitmapButton, getBitmapSelected, 0}}, - {1492, {wxBitmapButton, setBitmapDisabled, 1}}, - {1493, {wxBitmapButton, setBitmapFocus, 1}}, - {1494, {wxBitmapButton, setBitmapLabel, 1}}, - {1495, {wxBitmapButton, setBitmapSelected, 1}}, - {1496, {wxBitmapButton, 'Destroy', undefined}}, - {1497, {wxToggleButton, new_0, 0}}, - {1498, {wxToggleButton, new_4, 4}}, - {1499, {wxToggleButton, create, 4}}, - {1500, {wxToggleButton, getValue, 0}}, - {1501, {wxToggleButton, setValue, 1}}, - {1502, {wxToggleButton, 'Destroy', undefined}}, - {1503, {wxCalendarCtrl, new_0, 0}}, - {1504, {wxCalendarCtrl, new_3, 3}}, - {1505, {wxCalendarCtrl, create, 3}}, - {1506, {wxCalendarCtrl, destruct, 0}}, - {1507, {wxCalendarCtrl, setDate, 1}}, - {1508, {wxCalendarCtrl, getDate, 0}}, - {1509, {wxCalendarCtrl, enableYearChange, 1}}, - {1510, {wxCalendarCtrl, enableMonthChange, 1}}, - {1511, {wxCalendarCtrl, enableHolidayDisplay, 1}}, - {1512, {wxCalendarCtrl, setHeaderColours, 2}}, - {1513, {wxCalendarCtrl, getHeaderColourFg, 0}}, - {1514, {wxCalendarCtrl, getHeaderColourBg, 0}}, - {1515, {wxCalendarCtrl, setHighlightColours, 2}}, - {1516, {wxCalendarCtrl, getHighlightColourFg, 0}}, - {1517, {wxCalendarCtrl, getHighlightColourBg, 0}}, - {1518, {wxCalendarCtrl, setHolidayColours, 2}}, - {1519, {wxCalendarCtrl, getHolidayColourFg, 0}}, - {1520, {wxCalendarCtrl, getHolidayColourBg, 0}}, - {1521, {wxCalendarCtrl, getAttr, 1}}, - {1522, {wxCalendarCtrl, setAttr, 2}}, - {1523, {wxCalendarCtrl, setHoliday, 1}}, - {1524, {wxCalendarCtrl, resetAttr, 1}}, - {1525, {wxCalendarCtrl, hitTest, 2}}, - {1526, {wxCalendarDateAttr, new_0, 0}}, - {1527, {wxCalendarDateAttr, new_2_1, 2}}, - {1528, {wxCalendarDateAttr, new_2_0, 2}}, - {1529, {wxCalendarDateAttr, setTextColour, 1}}, - {1530, {wxCalendarDateAttr, setBackgroundColour, 1}}, - {1531, {wxCalendarDateAttr, setBorderColour, 1}}, - {1532, {wxCalendarDateAttr, setFont, 1}}, - {1533, {wxCalendarDateAttr, setBorder, 1}}, - {1534, {wxCalendarDateAttr, setHoliday, 1}}, - {1535, {wxCalendarDateAttr, hasTextColour, 0}}, - {1536, {wxCalendarDateAttr, hasBackgroundColour, 0}}, - {1537, {wxCalendarDateAttr, hasBorderColour, 0}}, - {1538, {wxCalendarDateAttr, hasFont, 0}}, - {1539, {wxCalendarDateAttr, hasBorder, 0}}, - {1540, {wxCalendarDateAttr, isHoliday, 0}}, - {1541, {wxCalendarDateAttr, getTextColour, 0}}, - {1542, {wxCalendarDateAttr, getBackgroundColour, 0}}, - {1543, {wxCalendarDateAttr, getBorderColour, 0}}, - {1544, {wxCalendarDateAttr, getFont, 0}}, - {1545, {wxCalendarDateAttr, getBorder, 0}}, - {1546, {wxCalendarDateAttr, 'Destroy', undefined}}, - {1548, {wxCheckBox, new_4, 4}}, - {1549, {wxCheckBox, new_0, 0}}, - {1550, {wxCheckBox, create, 4}}, - {1551, {wxCheckBox, getValue, 0}}, - {1552, {wxCheckBox, get3StateValue, 0}}, - {1553, {wxCheckBox, is3rdStateAllowedForUser, 0}}, - {1554, {wxCheckBox, is3State, 0}}, - {1555, {wxCheckBox, isChecked, 0}}, - {1556, {wxCheckBox, setValue, 1}}, - {1557, {wxCheckBox, set3StateValue, 1}}, - {1558, {wxCheckBox, 'Destroy', undefined}}, - {1559, {wxCheckListBox, new_0, 0}}, - {1561, {wxCheckListBox, new_3, 3}}, - {1562, {wxCheckListBox, check, 2}}, - {1563, {wxCheckListBox, isChecked, 1}}, - {1564, {wxCheckListBox, 'Destroy', undefined}}, - {1567, {wxChoice, new_3, 3}}, - {1568, {wxChoice, new_0, 0}}, - {1570, {wxChoice, destruct, 0}}, - {1572, {wxChoice, create, 6}}, - {1573, {wxChoice, delete, 1}}, - {1574, {wxChoice, getColumns, 0}}, - {1575, {wxChoice, setColumns, 1}}, - {1576, {wxComboBox, new_0, 0}}, - {1578, {wxComboBox, new_3, 3}}, - {1579, {wxComboBox, destruct, 0}}, - {1581, {wxComboBox, create, 7}}, - {1582, {wxComboBox, canCopy, 0}}, - {1583, {wxComboBox, canCut, 0}}, - {1584, {wxComboBox, canPaste, 0}}, - {1585, {wxComboBox, canRedo, 0}}, - {1586, {wxComboBox, canUndo, 0}}, - {1587, {wxComboBox, copy, 0}}, - {1588, {wxComboBox, cut, 0}}, - {1589, {wxComboBox, getInsertionPoint, 0}}, - {1590, {wxComboBox, getLastPosition, 0}}, - {1591, {wxComboBox, getValue, 0}}, - {1592, {wxComboBox, paste, 0}}, - {1593, {wxComboBox, redo, 0}}, - {1594, {wxComboBox, replace, 3}}, - {1595, {wxComboBox, remove, 2}}, - {1596, {wxComboBox, setInsertionPoint, 1}}, - {1597, {wxComboBox, setInsertionPointEnd, 0}}, - {1598, {wxComboBox, setSelection_1, 1}}, - {1599, {wxComboBox, setSelection_2, 2}}, - {1600, {wxComboBox, setValue, 1}}, - {1601, {wxComboBox, undo, 0}}, - {1602, {wxGauge, new_0, 0}}, - {1603, {wxGauge, new_4, 4}}, - {1604, {wxGauge, create, 4}}, - {1605, {wxGauge, getRange, 0}}, - {1606, {wxGauge, getValue, 0}}, - {1607, {wxGauge, isVertical, 0}}, - {1608, {wxGauge, setRange, 1}}, - {1609, {wxGauge, setValue, 1}}, - {1610, {wxGauge, pulse, 0}}, - {1611, {wxGauge, 'Destroy', undefined}}, - {1612, {wxGenericDirCtrl, new_0, 0}}, - {1613, {wxGenericDirCtrl, new_2, 2}}, - {1614, {wxGenericDirCtrl, destruct, 0}}, - {1615, {wxGenericDirCtrl, create, 2}}, - {1616, {wxGenericDirCtrl, init, 0}}, - {1617, {wxGenericDirCtrl, collapseTree, 0}}, - {1618, {wxGenericDirCtrl, expandPath, 1}}, - {1619, {wxGenericDirCtrl, getDefaultPath, 0}}, - {1620, {wxGenericDirCtrl, getPath, 0}}, - {1621, {wxGenericDirCtrl, getFilePath, 0}}, - {1622, {wxGenericDirCtrl, getFilter, 0}}, - {1623, {wxGenericDirCtrl, getFilterIndex, 0}}, - {1624, {wxGenericDirCtrl, getRootId, 0}}, - {1625, {wxGenericDirCtrl, getTreeCtrl, 0}}, - {1626, {wxGenericDirCtrl, reCreateTree, 0}}, - {1627, {wxGenericDirCtrl, setDefaultPath, 1}}, - {1628, {wxGenericDirCtrl, setFilter, 1}}, - {1629, {wxGenericDirCtrl, setFilterIndex, 1}}, - {1630, {wxGenericDirCtrl, setPath, 1}}, - {1632, {wxStaticBox, new_4, 4}}, - {1633, {wxStaticBox, new_0, 0}}, - {1634, {wxStaticBox, create, 4}}, - {1635, {wxStaticBox, 'Destroy', undefined}}, - {1637, {wxStaticLine, new_2, 2}}, - {1638, {wxStaticLine, new_0, 0}}, - {1639, {wxStaticLine, create, 2}}, - {1640, {wxStaticLine, isVertical, 0}}, - {1641, {wxStaticLine, getDefaultSize, 0}}, - {1642, {wxStaticLine, 'Destroy', undefined}}, - {1645, {wxListBox, new_3, 3}}, - {1646, {wxListBox, new_0, 0}}, - {1648, {wxListBox, destruct, 0}}, - {1650, {wxListBox, create, 6}}, - {1651, {wxListBox, deselect, 1}}, - {1652, {wxListBox, getSelections, 1}}, - {1653, {wxListBox, insertItems, 2}}, - {1654, {wxListBox, isSelected, 1}}, - {1655, {wxListBox, set, 1}}, - {1656, {wxListBox, hitTest, 1}}, - {1657, {wxListBox, setFirstItem_1_0, 1}}, - {1658, {wxListBox, setFirstItem_1_1, 1}}, - {1659, {wxListCtrl, new_0, 0}}, - {1660, {wxListCtrl, new_2, 2}}, - {1661, {wxListCtrl, arrange, 1}}, - {1662, {wxListCtrl, assignImageList, 2}}, - {1663, {wxListCtrl, clearAll, 0}}, - {1664, {wxListCtrl, create, 2}}, - {1665, {wxListCtrl, deleteAllItems, 0}}, - {1666, {wxListCtrl, deleteColumn, 1}}, - {1667, {wxListCtrl, deleteItem, 1}}, - {1668, {wxListCtrl, editLabel, 1}}, - {1669, {wxListCtrl, ensureVisible, 1}}, - {1670, {wxListCtrl, findItem_3_0, 3}}, - {1671, {wxListCtrl, findItem_3_1, 3}}, - {1672, {wxListCtrl, getColumn, 2}}, - {1673, {wxListCtrl, getColumnCount, 0}}, - {1674, {wxListCtrl, getColumnWidth, 1}}, - {1675, {wxListCtrl, getCountPerPage, 0}}, - {1676, {wxListCtrl, getEditControl, 0}}, - {1677, {wxListCtrl, getImageList, 1}}, - {1678, {wxListCtrl, getItem, 1}}, - {1679, {wxListCtrl, getItemBackgroundColour, 1}}, - {1680, {wxListCtrl, getItemCount, 0}}, - {1681, {wxListCtrl, getItemData, 1}}, - {1682, {wxListCtrl, getItemFont, 1}}, - {1683, {wxListCtrl, getItemPosition, 2}}, - {1684, {wxListCtrl, getItemRect, 3}}, - {1685, {wxListCtrl, getItemSpacing, 0}}, - {1686, {wxListCtrl, getItemState, 2}}, - {1687, {wxListCtrl, getItemText, 1}}, - {1688, {wxListCtrl, getItemTextColour, 1}}, - {1689, {wxListCtrl, getNextItem, 2}}, - {1690, {wxListCtrl, getSelectedItemCount, 0}}, - {1691, {wxListCtrl, getTextColour, 0}}, - {1692, {wxListCtrl, getTopItem, 0}}, - {1693, {wxListCtrl, getViewRect, 0}}, - {1694, {wxListCtrl, hitTest, 3}}, - {1695, {wxListCtrl, insertColumn_2, 2}}, - {1696, {wxListCtrl, insertColumn_3, 3}}, - {1697, {wxListCtrl, insertItem_1, 1}}, - {1698, {wxListCtrl, insertItem_2_1, 2}}, - {1699, {wxListCtrl, insertItem_2_0, 2}}, - {1700, {wxListCtrl, insertItem_3, 3}}, - {1701, {wxListCtrl, refreshItem, 1}}, - {1702, {wxListCtrl, refreshItems, 2}}, - {1703, {wxListCtrl, scrollList, 2}}, - {1704, {wxListCtrl, setBackgroundColour, 1}}, - {1705, {wxListCtrl, setColumn, 2}}, - {1706, {wxListCtrl, setColumnWidth, 2}}, - {1707, {wxListCtrl, setImageList, 2}}, - {1708, {wxListCtrl, setItem_1, 1}}, - {1709, {wxListCtrl, setItem_4, 4}}, - {1710, {wxListCtrl, setItemBackgroundColour, 2}}, - {1711, {wxListCtrl, setItemCount, 1}}, - {1712, {wxListCtrl, setItemData, 2}}, - {1713, {wxListCtrl, setItemFont, 2}}, - {1714, {wxListCtrl, setItemImage, 3}}, - {1715, {wxListCtrl, setItemColumnImage, 3}}, - {1716, {wxListCtrl, setItemPosition, 2}}, - {1717, {wxListCtrl, setItemState, 3}}, - {1718, {wxListCtrl, setItemText, 2}}, - {1719, {wxListCtrl, setItemTextColour, 2}}, - {1720, {wxListCtrl, setSingleStyle, 2}}, - {1721, {wxListCtrl, setTextColour, 1}}, - {1722, {wxListCtrl, setWindowStyleFlag, 1}}, - {1723, {wxListCtrl, sortItems, 2}}, - {1724, {wxListCtrl, 'Destroy', undefined}}, - {1725, {wxListView, clearColumnImage, 1}}, - {1726, {wxListView, focus, 1}}, - {1727, {wxListView, getFirstSelected, 0}}, - {1728, {wxListView, getFocusedItem, 0}}, - {1729, {wxListView, getNextSelected, 1}}, - {1730, {wxListView, isSelected, 1}}, - {1731, {wxListView, select, 2}}, - {1732, {wxListView, setColumnImage, 2}}, - {1733, {wxListItem, new_0, 0}}, - {1734, {wxListItem, new_1, 1}}, - {1735, {wxListItem, destruct, 0}}, - {1736, {wxListItem, clear, 0}}, - {1737, {wxListItem, getAlign, 0}}, - {1738, {wxListItem, getBackgroundColour, 0}}, - {1739, {wxListItem, getColumn, 0}}, - {1740, {wxListItem, getFont, 0}}, - {1741, {wxListItem, getId, 0}}, - {1742, {wxListItem, getImage, 0}}, - {1743, {wxListItem, getMask, 0}}, - {1744, {wxListItem, getState, 0}}, - {1745, {wxListItem, getText, 0}}, - {1746, {wxListItem, getTextColour, 0}}, - {1747, {wxListItem, getWidth, 0}}, - {1748, {wxListItem, setAlign, 1}}, - {1749, {wxListItem, setBackgroundColour, 1}}, - {1750, {wxListItem, setColumn, 1}}, - {1751, {wxListItem, setFont, 1}}, - {1752, {wxListItem, setId, 1}}, - {1753, {wxListItem, setImage, 1}}, - {1754, {wxListItem, setMask, 1}}, - {1755, {wxListItem, setState, 1}}, - {1756, {wxListItem, setStateMask, 1}}, - {1757, {wxListItem, setText, 1}}, - {1758, {wxListItem, setTextColour, 1}}, - {1759, {wxListItem, setWidth, 1}}, - {1760, {wxListItemAttr, new_0, 0}}, - {1761, {wxListItemAttr, new_3, 3}}, - {1762, {wxListItemAttr, getBackgroundColour, 0}}, - {1763, {wxListItemAttr, getFont, 0}}, - {1764, {wxListItemAttr, getTextColour, 0}}, - {1765, {wxListItemAttr, hasBackgroundColour, 0}}, - {1766, {wxListItemAttr, hasFont, 0}}, - {1767, {wxListItemAttr, hasTextColour, 0}}, - {1768, {wxListItemAttr, setBackgroundColour, 1}}, - {1769, {wxListItemAttr, setFont, 1}}, - {1770, {wxListItemAttr, setTextColour, 1}}, - {1771, {wxListItemAttr, 'Destroy', undefined}}, - {1772, {wxImageList, new_0, 0}}, - {1773, {wxImageList, new_3, 3}}, - {1774, {wxImageList, add_1, 1}}, - {1775, {wxImageList, add_2_0, 2}}, - {1776, {wxImageList, add_2_1, 2}}, - {1777, {wxImageList, create, 3}}, - {1779, {wxImageList, draw, 5}}, - {1780, {wxImageList, getBitmap, 1}}, - {1781, {wxImageList, getIcon, 1}}, - {1782, {wxImageList, getImageCount, 0}}, - {1783, {wxImageList, getSize, 3}}, - {1784, {wxImageList, remove, 1}}, - {1785, {wxImageList, removeAll, 0}}, - {1786, {wxImageList, replace_2, 2}}, - {1787, {wxImageList, replace_3, 3}}, - {1788, {wxImageList, 'Destroy', undefined}}, - {1789, {wxTextAttr, new_0, 0}}, - {1790, {wxTextAttr, new_2, 2}}, - {1791, {wxTextAttr, getAlignment, 0}}, - {1792, {wxTextAttr, getBackgroundColour, 0}}, - {1793, {wxTextAttr, getFont, 0}}, - {1794, {wxTextAttr, getLeftIndent, 0}}, - {1795, {wxTextAttr, getLeftSubIndent, 0}}, - {1796, {wxTextAttr, getRightIndent, 0}}, - {1797, {wxTextAttr, getTabs, 0}}, - {1798, {wxTextAttr, getTextColour, 0}}, - {1799, {wxTextAttr, hasBackgroundColour, 0}}, - {1800, {wxTextAttr, hasFont, 0}}, - {1801, {wxTextAttr, hasTextColour, 0}}, - {1802, {wxTextAttr, getFlags, 0}}, - {1803, {wxTextAttr, isDefault, 0}}, - {1804, {wxTextAttr, setAlignment, 1}}, - {1805, {wxTextAttr, setBackgroundColour, 1}}, - {1806, {wxTextAttr, setFlags, 1}}, - {1807, {wxTextAttr, setFont, 2}}, - {1808, {wxTextAttr, setLeftIndent, 2}}, - {1809, {wxTextAttr, setRightIndent, 1}}, - {1810, {wxTextAttr, setTabs, 1}}, - {1811, {wxTextAttr, setTextColour, 1}}, - {1812, {wxTextAttr, 'Destroy', undefined}}, - {1814, {wxTextCtrl, new_3, 3}}, - {1815, {wxTextCtrl, new_0, 0}}, - {1817, {wxTextCtrl, destruct, 0}}, - {1818, {wxTextCtrl, appendText, 1}}, - {1819, {wxTextCtrl, canCopy, 0}}, - {1820, {wxTextCtrl, canCut, 0}}, - {1821, {wxTextCtrl, canPaste, 0}}, - {1822, {wxTextCtrl, canRedo, 0}}, - {1823, {wxTextCtrl, canUndo, 0}}, - {1824, {wxTextCtrl, clear, 0}}, - {1825, {wxTextCtrl, copy, 0}}, - {1826, {wxTextCtrl, create, 3}}, - {1827, {wxTextCtrl, cut, 0}}, - {1828, {wxTextCtrl, discardEdits, 0}}, - {1829, {wxTextCtrl, changeValue, 1}}, - {1830, {wxTextCtrl, emulateKeyPress, 1}}, - {1831, {wxTextCtrl, getDefaultStyle, 0}}, - {1832, {wxTextCtrl, getInsertionPoint, 0}}, - {1833, {wxTextCtrl, getLastPosition, 0}}, - {1834, {wxTextCtrl, getLineLength, 1}}, - {1835, {wxTextCtrl, getLineText, 1}}, - {1836, {wxTextCtrl, getNumberOfLines, 0}}, - {1837, {wxTextCtrl, getRange, 2}}, - {1838, {wxTextCtrl, getSelection, 2}}, - {1839, {wxTextCtrl, getStringSelection, 0}}, - {1840, {wxTextCtrl, getStyle, 2}}, - {1841, {wxTextCtrl, getValue, 0}}, - {1842, {wxTextCtrl, isEditable, 0}}, - {1843, {wxTextCtrl, isModified, 0}}, - {1844, {wxTextCtrl, isMultiLine, 0}}, - {1845, {wxTextCtrl, isSingleLine, 0}}, - {1846, {wxTextCtrl, loadFile, 2}}, - {1847, {wxTextCtrl, markDirty, 0}}, - {1848, {wxTextCtrl, paste, 0}}, - {1849, {wxTextCtrl, positionToXY, 3}}, - {1850, {wxTextCtrl, redo, 0}}, - {1851, {wxTextCtrl, remove, 2}}, - {1852, {wxTextCtrl, replace, 3}}, - {1853, {wxTextCtrl, saveFile, 1}}, - {1854, {wxTextCtrl, setDefaultStyle, 1}}, - {1855, {wxTextCtrl, setEditable, 1}}, - {1856, {wxTextCtrl, setInsertionPoint, 1}}, - {1857, {wxTextCtrl, setInsertionPointEnd, 0}}, - {1859, {wxTextCtrl, setMaxLength, 1}}, - {1860, {wxTextCtrl, setSelection, 2}}, - {1861, {wxTextCtrl, setStyle, 3}}, - {1862, {wxTextCtrl, setValue, 1}}, - {1863, {wxTextCtrl, showPosition, 1}}, - {1864, {wxTextCtrl, undo, 0}}, - {1865, {wxTextCtrl, writeText, 1}}, - {1866, {wxTextCtrl, xYToPosition, 2}}, - {1869, {wxNotebook, new_0, 0}}, - {1870, {wxNotebook, new_3, 3}}, - {1871, {wxNotebook, destruct, 0}}, - {1872, {wxNotebook, addPage, 3}}, - {1873, {wxNotebook, advanceSelection, 1}}, - {1874, {wxNotebook, assignImageList, 1}}, - {1875, {wxNotebook, create, 3}}, - {1876, {wxNotebook, deleteAllPages, 0}}, - {1877, {wxNotebook, deletePage, 1}}, - {1878, {wxNotebook, removePage, 1}}, - {1879, {wxNotebook, getCurrentPage, 0}}, - {1880, {wxNotebook, getImageList, 0}}, - {1882, {wxNotebook, getPage, 1}}, - {1883, {wxNotebook, getPageCount, 0}}, - {1884, {wxNotebook, getPageImage, 1}}, - {1885, {wxNotebook, getPageText, 1}}, - {1886, {wxNotebook, getRowCount, 0}}, - {1887, {wxNotebook, getSelection, 0}}, - {1888, {wxNotebook, getThemeBackgroundColour, 0}}, - {1890, {wxNotebook, hitTest, 2}}, - {1892, {wxNotebook, insertPage, 4}}, - {1893, {wxNotebook, setImageList, 1}}, - {1894, {wxNotebook, setPadding, 1}}, - {1895, {wxNotebook, setPageSize, 1}}, - {1896, {wxNotebook, setPageImage, 2}}, - {1897, {wxNotebook, setPageText, 2}}, - {1898, {wxNotebook, setSelection, 1}}, - {1899, {wxNotebook, changeSelection, 1}}, - {1900, {wxChoicebook, new_0, 0}}, - {1901, {wxChoicebook, new_3, 3}}, - {1902, {wxChoicebook, addPage, 3}}, - {1903, {wxChoicebook, advanceSelection, 1}}, - {1904, {wxChoicebook, assignImageList, 1}}, - {1905, {wxChoicebook, create, 3}}, - {1906, {wxChoicebook, deleteAllPages, 0}}, - {1907, {wxChoicebook, deletePage, 1}}, - {1908, {wxChoicebook, removePage, 1}}, - {1909, {wxChoicebook, getCurrentPage, 0}}, - {1910, {wxChoicebook, getImageList, 0}}, - {1912, {wxChoicebook, getPage, 1}}, - {1913, {wxChoicebook, getPageCount, 0}}, - {1914, {wxChoicebook, getPageImage, 1}}, - {1915, {wxChoicebook, getPageText, 1}}, - {1916, {wxChoicebook, getSelection, 0}}, - {1917, {wxChoicebook, hitTest, 2}}, - {1918, {wxChoicebook, insertPage, 4}}, - {1919, {wxChoicebook, setImageList, 1}}, - {1920, {wxChoicebook, setPageSize, 1}}, - {1921, {wxChoicebook, setPageImage, 2}}, - {1922, {wxChoicebook, setPageText, 2}}, - {1923, {wxChoicebook, setSelection, 1}}, - {1924, {wxChoicebook, changeSelection, 1}}, - {1925, {wxChoicebook, 'Destroy', undefined}}, - {1926, {wxToolbook, new_0, 0}}, - {1927, {wxToolbook, new_3, 3}}, - {1928, {wxToolbook, addPage, 3}}, - {1929, {wxToolbook, advanceSelection, 1}}, - {1930, {wxToolbook, assignImageList, 1}}, - {1931, {wxToolbook, create, 3}}, - {1932, {wxToolbook, deleteAllPages, 0}}, - {1933, {wxToolbook, deletePage, 1}}, - {1934, {wxToolbook, removePage, 1}}, - {1935, {wxToolbook, getCurrentPage, 0}}, - {1936, {wxToolbook, getImageList, 0}}, - {1938, {wxToolbook, getPage, 1}}, - {1939, {wxToolbook, getPageCount, 0}}, - {1940, {wxToolbook, getPageImage, 1}}, - {1941, {wxToolbook, getPageText, 1}}, - {1942, {wxToolbook, getSelection, 0}}, - {1944, {wxToolbook, hitTest, 2}}, - {1945, {wxToolbook, insertPage, 4}}, - {1946, {wxToolbook, setImageList, 1}}, - {1947, {wxToolbook, setPageSize, 1}}, - {1948, {wxToolbook, setPageImage, 2}}, - {1949, {wxToolbook, setPageText, 2}}, - {1950, {wxToolbook, setSelection, 1}}, - {1951, {wxToolbook, changeSelection, 1}}, - {1952, {wxToolbook, 'Destroy', undefined}}, - {1953, {wxListbook, new_0, 0}}, - {1954, {wxListbook, new_3, 3}}, - {1955, {wxListbook, addPage, 3}}, - {1956, {wxListbook, advanceSelection, 1}}, - {1957, {wxListbook, assignImageList, 1}}, - {1958, {wxListbook, create, 3}}, - {1959, {wxListbook, deleteAllPages, 0}}, - {1960, {wxListbook, deletePage, 1}}, - {1961, {wxListbook, removePage, 1}}, - {1962, {wxListbook, getCurrentPage, 0}}, - {1963, {wxListbook, getImageList, 0}}, - {1965, {wxListbook, getPage, 1}}, - {1966, {wxListbook, getPageCount, 0}}, - {1967, {wxListbook, getPageImage, 1}}, - {1968, {wxListbook, getPageText, 1}}, - {1969, {wxListbook, getSelection, 0}}, - {1971, {wxListbook, hitTest, 2}}, - {1972, {wxListbook, insertPage, 4}}, - {1973, {wxListbook, setImageList, 1}}, - {1974, {wxListbook, setPageSize, 1}}, - {1975, {wxListbook, setPageImage, 2}}, - {1976, {wxListbook, setPageText, 2}}, - {1977, {wxListbook, setSelection, 1}}, - {1978, {wxListbook, changeSelection, 1}}, - {1979, {wxListbook, 'Destroy', undefined}}, - {1980, {wxTreebook, new_0, 0}}, - {1981, {wxTreebook, new_3, 3}}, - {1982, {wxTreebook, addPage, 3}}, - {1983, {wxTreebook, advanceSelection, 1}}, - {1984, {wxTreebook, assignImageList, 1}}, - {1985, {wxTreebook, create, 3}}, - {1986, {wxTreebook, deleteAllPages, 0}}, - {1987, {wxTreebook, deletePage, 1}}, - {1988, {wxTreebook, removePage, 1}}, - {1989, {wxTreebook, getCurrentPage, 0}}, - {1990, {wxTreebook, getImageList, 0}}, - {1992, {wxTreebook, getPage, 1}}, - {1993, {wxTreebook, getPageCount, 0}}, - {1994, {wxTreebook, getPageImage, 1}}, - {1995, {wxTreebook, getPageText, 1}}, - {1996, {wxTreebook, getSelection, 0}}, - {1997, {wxTreebook, expandNode, 2}}, - {1998, {wxTreebook, isNodeExpanded, 1}}, - {2000, {wxTreebook, hitTest, 2}}, - {2001, {wxTreebook, insertPage, 4}}, - {2002, {wxTreebook, insertSubPage, 4}}, - {2003, {wxTreebook, setImageList, 1}}, - {2004, {wxTreebook, setPageSize, 1}}, - {2005, {wxTreebook, setPageImage, 2}}, - {2006, {wxTreebook, setPageText, 2}}, - {2007, {wxTreebook, setSelection, 1}}, - {2008, {wxTreebook, changeSelection, 1}}, - {2009, {wxTreebook, 'Destroy', undefined}}, - {2012, {wxTreeCtrl, new_2, 2}}, - {2013, {wxTreeCtrl, new_0, 0}}, - {2015, {wxTreeCtrl, destruct, 0}}, - {2016, {wxTreeCtrl, addRoot, 2}}, - {2017, {wxTreeCtrl, appendItem, 3}}, - {2018, {wxTreeCtrl, assignImageList, 1}}, - {2019, {wxTreeCtrl, assignStateImageList, 1}}, - {2020, {wxTreeCtrl, collapse, 1}}, - {2021, {wxTreeCtrl, collapseAndReset, 1}}, - {2022, {wxTreeCtrl, create, 2}}, - {2023, {wxTreeCtrl, delete, 1}}, - {2024, {wxTreeCtrl, deleteAllItems, 0}}, - {2025, {wxTreeCtrl, deleteChildren, 1}}, - {2026, {wxTreeCtrl, editLabel, 1}}, - {2027, {wxTreeCtrl, ensureVisible, 1}}, - {2028, {wxTreeCtrl, expand, 1}}, - {2029, {wxTreeCtrl, getBoundingRect, 3}}, - {2031, {wxTreeCtrl, getChildrenCount, 2}}, - {2032, {wxTreeCtrl, getCount, 0}}, - {2033, {wxTreeCtrl, getEditControl, 0}}, - {2034, {wxTreeCtrl, getFirstChild, 2}}, - {2035, {wxTreeCtrl, getNextChild, 2}}, - {2036, {wxTreeCtrl, getFirstVisibleItem, 0}}, - {2037, {wxTreeCtrl, getImageList, 0}}, - {2038, {wxTreeCtrl, getIndent, 0}}, - {2039, {wxTreeCtrl, getItemBackgroundColour, 1}}, - {2040, {wxTreeCtrl, getItemData, 1}}, - {2041, {wxTreeCtrl, getItemFont, 1}}, - {2042, {wxTreeCtrl, getItemImage_1, 1}}, - {2043, {wxTreeCtrl, getItemImage_2, 2}}, - {2044, {wxTreeCtrl, getItemText, 1}}, - {2045, {wxTreeCtrl, getItemTextColour, 1}}, - {2046, {wxTreeCtrl, getLastChild, 1}}, - {2047, {wxTreeCtrl, getNextSibling, 1}}, - {2048, {wxTreeCtrl, getNextVisible, 1}}, - {2049, {wxTreeCtrl, getItemParent, 1}}, - {2050, {wxTreeCtrl, getPrevSibling, 1}}, - {2051, {wxTreeCtrl, getPrevVisible, 1}}, - {2052, {wxTreeCtrl, getRootItem, 0}}, - {2053, {wxTreeCtrl, getSelection, 0}}, - {2054, {wxTreeCtrl, getSelections, 1}}, - {2055, {wxTreeCtrl, getStateImageList, 0}}, - {2056, {wxTreeCtrl, hitTest, 2}}, - {2058, {wxTreeCtrl, insertItem, 4}}, - {2059, {wxTreeCtrl, isBold, 1}}, - {2060, {wxTreeCtrl, isExpanded, 1}}, - {2061, {wxTreeCtrl, isSelected, 1}}, - {2062, {wxTreeCtrl, isVisible, 1}}, - {2063, {wxTreeCtrl, itemHasChildren, 1}}, - {2064, {wxTreeCtrl, isTreeItemIdOk, 1}}, - {2065, {wxTreeCtrl, prependItem, 3}}, - {2066, {wxTreeCtrl, scrollTo, 1}}, - {2067, {wxTreeCtrl, selectItem_1, 1}}, - {2068, {wxTreeCtrl, selectItem_2, 2}}, - {2069, {wxTreeCtrl, setIndent, 1}}, - {2070, {wxTreeCtrl, setImageList, 1}}, - {2071, {wxTreeCtrl, setItemBackgroundColour, 2}}, - {2072, {wxTreeCtrl, setItemBold, 2}}, - {2073, {wxTreeCtrl, setItemData, 2}}, - {2074, {wxTreeCtrl, setItemDropHighlight, 2}}, - {2075, {wxTreeCtrl, setItemFont, 2}}, - {2076, {wxTreeCtrl, setItemHasChildren, 2}}, - {2077, {wxTreeCtrl, setItemImage_2, 2}}, - {2078, {wxTreeCtrl, setItemImage_3, 3}}, - {2079, {wxTreeCtrl, setItemText, 2}}, - {2080, {wxTreeCtrl, setItemTextColour, 2}}, - {2081, {wxTreeCtrl, setStateImageList, 1}}, - {2082, {wxTreeCtrl, setWindowStyle, 1}}, - {2083, {wxTreeCtrl, sortChildren, 1}}, - {2084, {wxTreeCtrl, toggle, 1}}, - {2085, {wxTreeCtrl, toggleItemSelection, 1}}, - {2086, {wxTreeCtrl, unselect, 0}}, - {2087, {wxTreeCtrl, unselectAll, 0}}, - {2088, {wxTreeCtrl, unselectItem, 1}}, - {2089, {wxScrollBar, new_0, 0}}, - {2090, {wxScrollBar, new_3, 3}}, - {2091, {wxScrollBar, destruct, 0}}, - {2092, {wxScrollBar, create, 3}}, - {2093, {wxScrollBar, getRange, 0}}, - {2094, {wxScrollBar, getPageSize, 0}}, - {2095, {wxScrollBar, getThumbPosition, 0}}, - {2096, {wxScrollBar, getThumbSize, 0}}, - {2097, {wxScrollBar, setThumbPosition, 1}}, - {2098, {wxScrollBar, setScrollbar, 5}}, - {2100, {wxSpinButton, new_2, 2}}, - {2101, {wxSpinButton, new_0, 0}}, - {2102, {wxSpinButton, create, 2}}, - {2103, {wxSpinButton, getMax, 0}}, - {2104, {wxSpinButton, getMin, 0}}, - {2105, {wxSpinButton, getValue, 0}}, - {2106, {wxSpinButton, setRange, 2}}, - {2107, {wxSpinButton, setValue, 1}}, - {2108, {wxSpinButton, 'Destroy', undefined}}, - {2109, {wxSpinCtrl, new_0, 0}}, - {2110, {wxSpinCtrl, new_2, 2}}, - {2112, {wxSpinCtrl, create, 2}}, - {2115, {wxSpinCtrl, setValue_1_1, 1}}, - {2116, {wxSpinCtrl, setValue_1_0, 1}}, - {2118, {wxSpinCtrl, getValue, 0}}, - {2120, {wxSpinCtrl, setRange, 2}}, - {2121, {wxSpinCtrl, setSelection, 2}}, - {2123, {wxSpinCtrl, getMin, 0}}, - {2125, {wxSpinCtrl, getMax, 0}}, - {2126, {wxSpinCtrl, 'Destroy', undefined}}, - {2127, {wxStaticText, new_0, 0}}, - {2128, {wxStaticText, new_4, 4}}, - {2129, {wxStaticText, create, 4}}, - {2130, {wxStaticText, getLabel, 0}}, - {2131, {wxStaticText, setLabel, 1}}, - {2132, {wxStaticText, wrap, 1}}, - {2133, {wxStaticText, 'Destroy', undefined}}, - {2134, {wxStaticBitmap, new_0, 0}}, - {2135, {wxStaticBitmap, new_4, 4}}, - {2136, {wxStaticBitmap, create, 4}}, - {2137, {wxStaticBitmap, getBitmap, 0}}, - {2138, {wxStaticBitmap, setBitmap, 1}}, - {2139, {wxStaticBitmap, 'Destroy', undefined}}, - {2140, {wxRadioBox, new, 7}}, - {2142, {wxRadioBox, destruct, 0}}, - {2143, {wxRadioBox, create, 7}}, - {2144, {wxRadioBox, enable_2, 2}}, - {2145, {wxRadioBox, enable_1, 1}}, - {2146, {wxRadioBox, getSelection, 0}}, - {2147, {wxRadioBox, getString, 1}}, - {2148, {wxRadioBox, setSelection, 1}}, - {2149, {wxRadioBox, show_2, 2}}, - {2150, {wxRadioBox, show_1, 1}}, - {2151, {wxRadioBox, getColumnCount, 0}}, - {2152, {wxRadioBox, getItemHelpText, 1}}, - {2153, {wxRadioBox, getItemToolTip, 1}}, - {2155, {wxRadioBox, getItemFromPoint, 1}}, - {2156, {wxRadioBox, getRowCount, 0}}, - {2157, {wxRadioBox, isItemEnabled, 1}}, - {2158, {wxRadioBox, isItemShown, 1}}, - {2159, {wxRadioBox, setItemHelpText, 2}}, - {2160, {wxRadioBox, setItemToolTip, 2}}, - {2161, {wxRadioButton, new_0, 0}}, - {2162, {wxRadioButton, new_4, 4}}, - {2163, {wxRadioButton, create, 4}}, - {2164, {wxRadioButton, getValue, 0}}, - {2165, {wxRadioButton, setValue, 1}}, - {2166, {wxRadioButton, 'Destroy', undefined}}, - {2168, {wxSlider, new_6, 6}}, - {2169, {wxSlider, new_0, 0}}, - {2170, {wxSlider, create, 6}}, - {2171, {wxSlider, getLineSize, 0}}, - {2172, {wxSlider, getMax, 0}}, - {2173, {wxSlider, getMin, 0}}, - {2174, {wxSlider, getPageSize, 0}}, - {2175, {wxSlider, getThumbLength, 0}}, - {2176, {wxSlider, getValue, 0}}, - {2177, {wxSlider, setLineSize, 1}}, - {2178, {wxSlider, setPageSize, 1}}, - {2179, {wxSlider, setRange, 2}}, - {2180, {wxSlider, setThumbLength, 1}}, - {2181, {wxSlider, setValue, 1}}, - {2182, {wxSlider, 'Destroy', undefined}}, - {2184, {wxDialog, new_4, 4}}, - {2185, {wxDialog, new_0, 0}}, - {2187, {wxDialog, destruct, 0}}, - {2188, {wxDialog, create, 4}}, - {2189, {wxDialog, createButtonSizer, 1}}, - {2190, {wxDialog, createStdDialogButtonSizer, 1}}, - {2191, {wxDialog, endModal, 1}}, - {2192, {wxDialog, getAffirmativeId, 0}}, - {2193, {wxDialog, getReturnCode, 0}}, - {2194, {wxDialog, isModal, 0}}, - {2195, {wxDialog, setAffirmativeId, 1}}, - {2196, {wxDialog, setReturnCode, 1}}, - {2197, {wxDialog, show, 1}}, - {2198, {wxDialog, showModal, 0}}, - {2199, {wxColourDialog, new_0, 0}}, - {2200, {wxColourDialog, new_2, 2}}, - {2201, {wxColourDialog, destruct, 0}}, - {2202, {wxColourDialog, create, 2}}, - {2203, {wxColourDialog, getColourData, 0}}, - {2204, {wxColourData, new_0, 0}}, - {2205, {wxColourData, new_1, 1}}, - {2206, {wxColourData, destruct, 0}}, - {2207, {wxColourData, getChooseFull, 0}}, - {2208, {wxColourData, getColour, 0}}, - {2210, {wxColourData, getCustomColour, 1}}, - {2211, {wxColourData, setChooseFull, 1}}, - {2212, {wxColourData, setColour, 1}}, - {2213, {wxColourData, setCustomColour, 2}}, - {2214, {wxPalette, new_0, 0}}, - {2215, {wxPalette, new_4, 4}}, - {2217, {wxPalette, destruct, 0}}, - {2218, {wxPalette, create, 4}}, - {2219, {wxPalette, getColoursCount, 0}}, - {2220, {wxPalette, getPixel, 3}}, - {2221, {wxPalette, getRGB, 4}}, - {2222, {wxPalette, isOk, 0}}, - {2226, {wxDirDialog, new, 2}}, - {2227, {wxDirDialog, destruct, 0}}, - {2228, {wxDirDialog, getPath, 0}}, - {2229, {wxDirDialog, getMessage, 0}}, - {2230, {wxDirDialog, setMessage, 1}}, - {2231, {wxDirDialog, setPath, 1}}, - {2235, {wxFileDialog, new, 2}}, - {2236, {wxFileDialog, destruct, 0}}, - {2237, {wxFileDialog, getDirectory, 0}}, - {2238, {wxFileDialog, getFilename, 0}}, - {2239, {wxFileDialog, getFilenames, 1}}, - {2240, {wxFileDialog, getFilterIndex, 0}}, - {2241, {wxFileDialog, getMessage, 0}}, - {2242, {wxFileDialog, getPath, 0}}, - {2243, {wxFileDialog, getPaths, 1}}, - {2244, {wxFileDialog, getWildcard, 0}}, - {2245, {wxFileDialog, setDirectory, 1}}, - {2246, {wxFileDialog, setFilename, 1}}, - {2247, {wxFileDialog, setFilterIndex, 1}}, - {2248, {wxFileDialog, setMessage, 1}}, - {2249, {wxFileDialog, setPath, 1}}, - {2250, {wxFileDialog, setWildcard, 1}}, - {2251, {wxPickerBase, setInternalMargin, 1}}, - {2252, {wxPickerBase, getInternalMargin, 0}}, - {2253, {wxPickerBase, setTextCtrlProportion, 1}}, - {2254, {wxPickerBase, setPickerCtrlProportion, 1}}, - {2255, {wxPickerBase, getTextCtrlProportion, 0}}, - {2256, {wxPickerBase, getPickerCtrlProportion, 0}}, - {2257, {wxPickerBase, hasTextCtrl, 0}}, - {2258, {wxPickerBase, getTextCtrl, 0}}, - {2259, {wxPickerBase, isTextCtrlGrowable, 0}}, - {2260, {wxPickerBase, setPickerCtrlGrowable, 1}}, - {2261, {wxPickerBase, setTextCtrlGrowable, 1}}, - {2262, {wxPickerBase, isPickerCtrlGrowable, 0}}, - {2263, {wxFilePickerCtrl, new_0, 0}}, - {2264, {wxFilePickerCtrl, new_3, 3}}, - {2265, {wxFilePickerCtrl, create, 3}}, - {2266, {wxFilePickerCtrl, getPath, 0}}, - {2267, {wxFilePickerCtrl, setPath, 1}}, - {2268, {wxFilePickerCtrl, 'Destroy', undefined}}, - {2269, {wxDirPickerCtrl, new_0, 0}}, - {2270, {wxDirPickerCtrl, new_3, 3}}, - {2271, {wxDirPickerCtrl, create, 3}}, - {2272, {wxDirPickerCtrl, getPath, 0}}, - {2273, {wxDirPickerCtrl, setPath, 1}}, - {2274, {wxDirPickerCtrl, 'Destroy', undefined}}, - {2275, {wxColourPickerCtrl, new_0, 0}}, - {2276, {wxColourPickerCtrl, new_3, 3}}, - {2277, {wxColourPickerCtrl, create, 3}}, - {2278, {wxColourPickerCtrl, getColour, 0}}, - {2279, {wxColourPickerCtrl, setColour_1_1, 1}}, - {2280, {wxColourPickerCtrl, setColour_1_0, 1}}, - {2281, {wxColourPickerCtrl, 'Destroy', undefined}}, - {2282, {wxDatePickerCtrl, new_0, 0}}, - {2283, {wxDatePickerCtrl, new_3, 3}}, - {2284, {wxDatePickerCtrl, getRange, 2}}, - {2285, {wxDatePickerCtrl, getValue, 0}}, - {2286, {wxDatePickerCtrl, setRange, 2}}, - {2287, {wxDatePickerCtrl, setValue, 1}}, - {2288, {wxDatePickerCtrl, 'Destroy', undefined}}, - {2289, {wxFontPickerCtrl, new_0, 0}}, - {2290, {wxFontPickerCtrl, new_3, 3}}, - {2291, {wxFontPickerCtrl, create, 3}}, - {2292, {wxFontPickerCtrl, getSelectedFont, 0}}, - {2293, {wxFontPickerCtrl, setSelectedFont, 1}}, - {2294, {wxFontPickerCtrl, getMaxPointSize, 0}}, - {2295, {wxFontPickerCtrl, setMaxPointSize, 1}}, - {2296, {wxFontPickerCtrl, 'Destroy', undefined}}, - {2299, {wxFindReplaceDialog, new_0, 0}}, - {2300, {wxFindReplaceDialog, new_4, 4}}, - {2301, {wxFindReplaceDialog, destruct, 0}}, - {2302, {wxFindReplaceDialog, create, 4}}, - {2303, {wxFindReplaceDialog, getData, 0}}, - {2304, {wxFindReplaceData, new_0, 0}}, - {2305, {wxFindReplaceData, new_1, 1}}, - {2306, {wxFindReplaceData, getFindString, 0}}, - {2307, {wxFindReplaceData, getReplaceString, 0}}, - {2308, {wxFindReplaceData, getFlags, 0}}, - {2309, {wxFindReplaceData, setFlags, 1}}, - {2310, {wxFindReplaceData, setFindString, 1}}, - {2311, {wxFindReplaceData, setReplaceString, 1}}, - {2312, {wxFindReplaceData, 'Destroy', undefined}}, - {2313, {wxMultiChoiceDialog, new_0, 0}}, - {2315, {wxMultiChoiceDialog, new_5, 5}}, - {2316, {wxMultiChoiceDialog, getSelections, 0}}, - {2317, {wxMultiChoiceDialog, setSelections, 1}}, - {2318, {wxMultiChoiceDialog, 'Destroy', undefined}}, - {2319, {wxSingleChoiceDialog, new_0, 0}}, - {2321, {wxSingleChoiceDialog, new_5, 5}}, - {2322, {wxSingleChoiceDialog, getSelection, 0}}, - {2323, {wxSingleChoiceDialog, getStringSelection, 0}}, - {2324, {wxSingleChoiceDialog, setSelection, 1}}, - {2325, {wxSingleChoiceDialog, 'Destroy', undefined}}, - {2326, {wxTextEntryDialog, new, 3}}, - {2327, {wxTextEntryDialog, getValue, 0}}, - {2328, {wxTextEntryDialog, setValue, 1}}, - {2329, {wxTextEntryDialog, 'Destroy', undefined}}, - {2330, {wxPasswordEntryDialog, new, 3}}, - {2331, {wxPasswordEntryDialog, 'Destroy', undefined}}, - {2332, {wxFontData, new_0, 0}}, - {2333, {wxFontData, new_1, 1}}, - {2334, {wxFontData, destruct, 0}}, - {2335, {wxFontData, enableEffects, 1}}, - {2336, {wxFontData, getAllowSymbols, 0}}, - {2337, {wxFontData, getColour, 0}}, - {2338, {wxFontData, getChosenFont, 0}}, - {2339, {wxFontData, getEnableEffects, 0}}, - {2340, {wxFontData, getInitialFont, 0}}, - {2341, {wxFontData, getShowHelp, 0}}, - {2342, {wxFontData, setAllowSymbols, 1}}, - {2343, {wxFontData, setChosenFont, 1}}, - {2344, {wxFontData, setColour, 1}}, - {2345, {wxFontData, setInitialFont, 1}}, - {2346, {wxFontData, setRange, 2}}, - {2347, {wxFontData, setShowHelp, 1}}, - {2351, {wxFontDialog, new_0, 0}}, - {2353, {wxFontDialog, new_2, 2}}, - {2355, {wxFontDialog, create, 2}}, - {2356, {wxFontDialog, getFontData, 0}}, - {2358, {wxFontDialog, 'Destroy', undefined}}, - {2359, {wxProgressDialog, new, 3}}, - {2360, {wxProgressDialog, destruct, 0}}, - {2361, {wxProgressDialog, resume, 0}}, - {2362, {wxProgressDialog, update_2, 2}}, - {2363, {wxProgressDialog, update_0, 0}}, - {2364, {wxMessageDialog, new, 3}}, - {2365, {wxMessageDialog, destruct, 0}}, - {2366, {wxPageSetupDialog, new, 2}}, - {2367, {wxPageSetupDialog, destruct, 0}}, - {2368, {wxPageSetupDialog, getPageSetupData, 0}}, - {2369, {wxPageSetupDialog, showModal, 0}}, - {2370, {wxPageSetupDialogData, new_0, 0}}, - {2371, {wxPageSetupDialogData, new_1_0, 1}}, - {2372, {wxPageSetupDialogData, new_1_1, 1}}, - {2373, {wxPageSetupDialogData, destruct, 0}}, - {2374, {wxPageSetupDialogData, enableHelp, 1}}, - {2375, {wxPageSetupDialogData, enableMargins, 1}}, - {2376, {wxPageSetupDialogData, enableOrientation, 1}}, - {2377, {wxPageSetupDialogData, enablePaper, 1}}, - {2378, {wxPageSetupDialogData, enablePrinter, 1}}, - {2379, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, - {2380, {wxPageSetupDialogData, getEnableMargins, 0}}, - {2381, {wxPageSetupDialogData, getEnableOrientation, 0}}, - {2382, {wxPageSetupDialogData, getEnablePaper, 0}}, - {2383, {wxPageSetupDialogData, getEnablePrinter, 0}}, - {2384, {wxPageSetupDialogData, getEnableHelp, 0}}, - {2385, {wxPageSetupDialogData, getDefaultInfo, 0}}, - {2386, {wxPageSetupDialogData, getMarginTopLeft, 0}}, - {2387, {wxPageSetupDialogData, getMarginBottomRight, 0}}, - {2388, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, - {2389, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, - {2390, {wxPageSetupDialogData, getPaperId, 0}}, - {2391, {wxPageSetupDialogData, getPaperSize, 0}}, - {2393, {wxPageSetupDialogData, getPrintData, 0}}, - {2394, {wxPageSetupDialogData, isOk, 0}}, - {2395, {wxPageSetupDialogData, setDefaultInfo, 1}}, - {2396, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, - {2397, {wxPageSetupDialogData, setMarginTopLeft, 1}}, - {2398, {wxPageSetupDialogData, setMarginBottomRight, 1}}, - {2399, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, - {2400, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, - {2401, {wxPageSetupDialogData, setPaperId, 1}}, - {2402, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, - {2403, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, - {2404, {wxPageSetupDialogData, setPrintData, 1}}, - {2405, {wxPrintDialog, new_2_0, 2}}, - {2406, {wxPrintDialog, new_2_1, 2}}, - {2407, {wxPrintDialog, destruct, 0}}, - {2408, {wxPrintDialog, getPrintDialogData, 0}}, - {2409, {wxPrintDialog, getPrintDC, 0}}, - {2410, {wxPrintDialogData, new_0, 0}}, - {2411, {wxPrintDialogData, new_1_1, 1}}, - {2412, {wxPrintDialogData, new_1_0, 1}}, - {2413, {wxPrintDialogData, destruct, 0}}, - {2414, {wxPrintDialogData, enableHelp, 1}}, - {2415, {wxPrintDialogData, enablePageNumbers, 1}}, - {2416, {wxPrintDialogData, enablePrintToFile, 1}}, - {2417, {wxPrintDialogData, enableSelection, 1}}, - {2418, {wxPrintDialogData, getAllPages, 0}}, - {2419, {wxPrintDialogData, getCollate, 0}}, - {2420, {wxPrintDialogData, getFromPage, 0}}, - {2421, {wxPrintDialogData, getMaxPage, 0}}, - {2422, {wxPrintDialogData, getMinPage, 0}}, - {2423, {wxPrintDialogData, getNoCopies, 0}}, - {2424, {wxPrintDialogData, getPrintData, 0}}, - {2425, {wxPrintDialogData, getPrintToFile, 0}}, - {2426, {wxPrintDialogData, getSelection, 0}}, - {2427, {wxPrintDialogData, getToPage, 0}}, - {2428, {wxPrintDialogData, isOk, 0}}, - {2429, {wxPrintDialogData, setCollate, 1}}, - {2430, {wxPrintDialogData, setFromPage, 1}}, - {2431, {wxPrintDialogData, setMaxPage, 1}}, - {2432, {wxPrintDialogData, setMinPage, 1}}, - {2433, {wxPrintDialogData, setNoCopies, 1}}, - {2434, {wxPrintDialogData, setPrintData, 1}}, - {2435, {wxPrintDialogData, setPrintToFile, 1}}, - {2436, {wxPrintDialogData, setSelection, 1}}, - {2437, {wxPrintDialogData, setToPage, 1}}, - {2438, {wxPrintData, new_0, 0}}, - {2439, {wxPrintData, new_1, 1}}, - {2440, {wxPrintData, destruct, 0}}, - {2441, {wxPrintData, getCollate, 0}}, - {2442, {wxPrintData, getBin, 0}}, - {2443, {wxPrintData, getColour, 0}}, - {2444, {wxPrintData, getDuplex, 0}}, - {2445, {wxPrintData, getNoCopies, 0}}, - {2446, {wxPrintData, getOrientation, 0}}, - {2447, {wxPrintData, getPaperId, 0}}, - {2448, {wxPrintData, getPrinterName, 0}}, - {2449, {wxPrintData, getQuality, 0}}, - {2450, {wxPrintData, isOk, 0}}, - {2451, {wxPrintData, setBin, 1}}, - {2452, {wxPrintData, setCollate, 1}}, - {2453, {wxPrintData, setColour, 1}}, - {2454, {wxPrintData, setDuplex, 1}}, - {2455, {wxPrintData, setNoCopies, 1}}, - {2456, {wxPrintData, setOrientation, 1}}, - {2457, {wxPrintData, setPaperId, 1}}, - {2458, {wxPrintData, setPrinterName, 1}}, - {2459, {wxPrintData, setQuality, 1}}, - {2462, {wxPrintPreview, new_2, 2}}, - {2463, {wxPrintPreview, new_3, 3}}, - {2465, {wxPrintPreview, destruct, 0}}, - {2466, {wxPrintPreview, getCanvas, 0}}, - {2467, {wxPrintPreview, getCurrentPage, 0}}, - {2468, {wxPrintPreview, getFrame, 0}}, - {2469, {wxPrintPreview, getMaxPage, 0}}, - {2470, {wxPrintPreview, getMinPage, 0}}, - {2471, {wxPrintPreview, getPrintout, 0}}, - {2472, {wxPrintPreview, getPrintoutForPrinting, 0}}, - {2473, {wxPrintPreview, isOk, 0}}, - {2474, {wxPrintPreview, paintPage, 2}}, - {2475, {wxPrintPreview, print, 1}}, - {2476, {wxPrintPreview, renderPage, 1}}, - {2477, {wxPrintPreview, setCanvas, 1}}, - {2478, {wxPrintPreview, setCurrentPage, 1}}, - {2479, {wxPrintPreview, setFrame, 1}}, - {2480, {wxPrintPreview, setPrintout, 1}}, - {2481, {wxPrintPreview, setZoom, 1}}, - {2482, {wxPreviewFrame, new, 3}}, - {2483, {wxPreviewFrame, destruct, 0}}, - {2484, {wxPreviewFrame, createControlBar, 0}}, - {2485, {wxPreviewFrame, createCanvas, 0}}, - {2486, {wxPreviewFrame, initialize, 0}}, - {2487, {wxPreviewFrame, onCloseWindow, 1}}, - {2488, {wxPreviewControlBar, new, 4}}, - {2489, {wxPreviewControlBar, destruct, 0}}, - {2490, {wxPreviewControlBar, createButtons, 0}}, - {2491, {wxPreviewControlBar, getPrintPreview, 0}}, - {2492, {wxPreviewControlBar, getZoomControl, 0}}, - {2493, {wxPreviewControlBar, setZoomControl, 1}}, - {2495, {wxPrinter, new, 1}}, - {2496, {wxPrinter, createAbortWindow, 2}}, - {2497, {wxPrinter, getAbort, 0}}, - {2498, {wxPrinter, getLastError, 0}}, - {2499, {wxPrinter, getPrintDialogData, 0}}, - {2500, {wxPrinter, print, 3}}, - {2501, {wxPrinter, printDialog, 1}}, - {2502, {wxPrinter, reportError, 3}}, - {2503, {wxPrinter, setup, 1}}, - {2504, {wxPrinter, 'Destroy', undefined}}, - {2505, {wxXmlResource, new_1, 1}}, - {2506, {wxXmlResource, new_2, 2}}, - {2507, {wxXmlResource, destruct, 0}}, - {2508, {wxXmlResource, attachUnknownControl, 3}}, - {2509, {wxXmlResource, clearHandlers, 0}}, - {2510, {wxXmlResource, compareVersion, 4}}, - {2511, {wxXmlResource, get, 0}}, - {2512, {wxXmlResource, getFlags, 0}}, - {2513, {wxXmlResource, getVersion, 0}}, - {2514, {wxXmlResource, getXRCID, 2}}, - {2515, {wxXmlResource, initAllHandlers, 0}}, - {2516, {wxXmlResource, load, 1}}, - {2517, {wxXmlResource, loadBitmap, 1}}, - {2518, {wxXmlResource, loadDialog_2, 2}}, - {2519, {wxXmlResource, loadDialog_3, 3}}, - {2520, {wxXmlResource, loadFrame_2, 2}}, - {2521, {wxXmlResource, loadFrame_3, 3}}, - {2522, {wxXmlResource, loadIcon, 1}}, - {2523, {wxXmlResource, loadMenu, 1}}, - {2524, {wxXmlResource, loadMenuBar_2, 2}}, - {2525, {wxXmlResource, loadMenuBar_1, 1}}, - {2526, {wxXmlResource, loadPanel_2, 2}}, - {2527, {wxXmlResource, loadPanel_3, 3}}, - {2528, {wxXmlResource, loadToolBar, 2}}, - {2529, {wxXmlResource, set, 1}}, - {2530, {wxXmlResource, setFlags, 1}}, - {2531, {wxXmlResource, unload, 1}}, - {2532, {wxXmlResource, xrcctrl, 3}}, - {2533, {wxHtmlEasyPrinting, new, 1}}, - {2534, {wxHtmlEasyPrinting, destruct, 0}}, - {2535, {wxHtmlEasyPrinting, getPrintData, 0}}, - {2536, {wxHtmlEasyPrinting, getPageSetupData, 0}}, - {2537, {wxHtmlEasyPrinting, previewFile, 1}}, - {2538, {wxHtmlEasyPrinting, previewText, 2}}, - {2539, {wxHtmlEasyPrinting, printFile, 1}}, - {2540, {wxHtmlEasyPrinting, printText, 2}}, - {2541, {wxHtmlEasyPrinting, pageSetup, 0}}, - {2542, {wxHtmlEasyPrinting, setFonts, 3}}, - {2543, {wxHtmlEasyPrinting, setHeader, 2}}, - {2544, {wxHtmlEasyPrinting, setFooter, 2}}, - {2546, {wxGLCanvas, new_2, 2}}, - {2547, {wxGLCanvas, new_3_1, 3}}, - {2548, {wxGLCanvas, new_3_0, 3}}, - {2549, {wxGLCanvas, getContext, 0}}, - {2551, {wxGLCanvas, setCurrent, 0}}, - {2552, {wxGLCanvas, swapBuffers, 0}}, - {2553, {wxGLCanvas, 'Destroy', undefined}}, - {2554, {wxAuiManager, new, 1}}, - {2555, {wxAuiManager, destruct, 0}}, - {2556, {wxAuiManager, addPane_2_1, 2}}, - {2557, {wxAuiManager, addPane_3, 3}}, - {2558, {wxAuiManager, addPane_2_0, 2}}, - {2559, {wxAuiManager, detachPane, 1}}, - {2560, {wxAuiManager, getAllPanes, 0}}, - {2561, {wxAuiManager, getArtProvider, 0}}, - {2562, {wxAuiManager, getDockSizeConstraint, 2}}, - {2563, {wxAuiManager, getFlags, 0}}, - {2564, {wxAuiManager, getManagedWindow, 0}}, - {2565, {wxAuiManager, getManager, 1}}, - {2566, {wxAuiManager, getPane_1_1, 1}}, - {2567, {wxAuiManager, getPane_1_0, 1}}, - {2568, {wxAuiManager, hideHint, 0}}, - {2569, {wxAuiManager, insertPane, 3}}, - {2570, {wxAuiManager, loadPaneInfo, 2}}, - {2571, {wxAuiManager, loadPerspective, 2}}, - {2572, {wxAuiManager, savePaneInfo, 1}}, - {2573, {wxAuiManager, savePerspective, 0}}, - {2574, {wxAuiManager, setArtProvider, 1}}, - {2575, {wxAuiManager, setDockSizeConstraint, 2}}, - {2576, {wxAuiManager, setFlags, 1}}, - {2577, {wxAuiManager, setManagedWindow, 1}}, - {2578, {wxAuiManager, showHint, 1}}, - {2579, {wxAuiManager, unInit, 0}}, - {2580, {wxAuiManager, update, 0}}, - {2581, {wxAuiPaneInfo, new_0, 0}}, - {2582, {wxAuiPaneInfo, new_1, 1}}, - {2583, {wxAuiPaneInfo, destruct, 0}}, - {2584, {wxAuiPaneInfo, bestSize_1, 1}}, - {2585, {wxAuiPaneInfo, bestSize_2, 2}}, - {2586, {wxAuiPaneInfo, bottom, 0}}, - {2587, {wxAuiPaneInfo, bottomDockable, 1}}, - {2588, {wxAuiPaneInfo, caption, 1}}, - {2589, {wxAuiPaneInfo, captionVisible, 1}}, - {2590, {wxAuiPaneInfo, centre, 0}}, - {2591, {wxAuiPaneInfo, centrePane, 0}}, - {2592, {wxAuiPaneInfo, closeButton, 1}}, - {2593, {wxAuiPaneInfo, defaultPane, 0}}, - {2594, {wxAuiPaneInfo, destroyOnClose, 1}}, - {2595, {wxAuiPaneInfo, direction, 1}}, - {2596, {wxAuiPaneInfo, dock, 0}}, - {2597, {wxAuiPaneInfo, dockable, 1}}, - {2598, {wxAuiPaneInfo, fixed, 0}}, - {2599, {wxAuiPaneInfo, float, 0}}, - {2600, {wxAuiPaneInfo, floatable, 1}}, - {2601, {wxAuiPaneInfo, floatingPosition_1, 1}}, - {2602, {wxAuiPaneInfo, floatingPosition_2, 2}}, - {2603, {wxAuiPaneInfo, floatingSize_1, 1}}, - {2604, {wxAuiPaneInfo, floatingSize_2, 2}}, - {2605, {wxAuiPaneInfo, gripper, 1}}, - {2606, {wxAuiPaneInfo, gripperTop, 1}}, - {2607, {wxAuiPaneInfo, hasBorder, 0}}, - {2608, {wxAuiPaneInfo, hasCaption, 0}}, - {2609, {wxAuiPaneInfo, hasCloseButton, 0}}, - {2610, {wxAuiPaneInfo, hasFlag, 1}}, - {2611, {wxAuiPaneInfo, hasGripper, 0}}, - {2612, {wxAuiPaneInfo, hasGripperTop, 0}}, - {2613, {wxAuiPaneInfo, hasMaximizeButton, 0}}, - {2614, {wxAuiPaneInfo, hasMinimizeButton, 0}}, - {2615, {wxAuiPaneInfo, hasPinButton, 0}}, - {2616, {wxAuiPaneInfo, hide, 0}}, - {2617, {wxAuiPaneInfo, isBottomDockable, 0}}, - {2618, {wxAuiPaneInfo, isDocked, 0}}, - {2619, {wxAuiPaneInfo, isFixed, 0}}, - {2620, {wxAuiPaneInfo, isFloatable, 0}}, - {2621, {wxAuiPaneInfo, isFloating, 0}}, - {2622, {wxAuiPaneInfo, isLeftDockable, 0}}, - {2623, {wxAuiPaneInfo, isMovable, 0}}, - {2624, {wxAuiPaneInfo, isOk, 0}}, - {2625, {wxAuiPaneInfo, isResizable, 0}}, - {2626, {wxAuiPaneInfo, isRightDockable, 0}}, - {2627, {wxAuiPaneInfo, isShown, 0}}, - {2628, {wxAuiPaneInfo, isToolbar, 0}}, - {2629, {wxAuiPaneInfo, isTopDockable, 0}}, - {2630, {wxAuiPaneInfo, layer, 1}}, - {2631, {wxAuiPaneInfo, left, 0}}, - {2632, {wxAuiPaneInfo, leftDockable, 1}}, - {2633, {wxAuiPaneInfo, maxSize_1, 1}}, - {2634, {wxAuiPaneInfo, maxSize_2, 2}}, - {2635, {wxAuiPaneInfo, maximizeButton, 1}}, - {2636, {wxAuiPaneInfo, minSize_1, 1}}, - {2637, {wxAuiPaneInfo, minSize_2, 2}}, - {2638, {wxAuiPaneInfo, minimizeButton, 1}}, - {2639, {wxAuiPaneInfo, movable, 1}}, - {2640, {wxAuiPaneInfo, name, 1}}, - {2641, {wxAuiPaneInfo, paneBorder, 1}}, - {2642, {wxAuiPaneInfo, pinButton, 1}}, - {2643, {wxAuiPaneInfo, position, 1}}, - {2644, {wxAuiPaneInfo, resizable, 1}}, - {2645, {wxAuiPaneInfo, right, 0}}, - {2646, {wxAuiPaneInfo, rightDockable, 1}}, - {2647, {wxAuiPaneInfo, row, 1}}, - {2648, {wxAuiPaneInfo, safeSet, 1}}, - {2649, {wxAuiPaneInfo, setFlag, 2}}, - {2650, {wxAuiPaneInfo, show, 1}}, - {2651, {wxAuiPaneInfo, toolbarPane, 0}}, - {2652, {wxAuiPaneInfo, top, 0}}, - {2653, {wxAuiPaneInfo, topDockable, 1}}, - {2654, {wxAuiPaneInfo, window, 1}}, - {2655, {wxAuiPaneInfo, getWindow, 0}}, - {2656, {wxAuiPaneInfo, getFrame, 0}}, - {2657, {wxAuiPaneInfo, getDirection, 0}}, - {2658, {wxAuiPaneInfo, getLayer, 0}}, - {2659, {wxAuiPaneInfo, getRow, 0}}, - {2660, {wxAuiPaneInfo, getPosition, 0}}, - {2661, {wxAuiPaneInfo, getFloatingPosition, 0}}, - {2662, {wxAuiPaneInfo, getFloatingSize, 0}}, - {2663, {wxAuiNotebook, new_0, 0}}, - {2664, {wxAuiNotebook, new_2, 2}}, - {2665, {wxAuiNotebook, addPage, 3}}, - {2666, {wxAuiNotebook, create, 2}}, - {2667, {wxAuiNotebook, deletePage, 1}}, - {2668, {wxAuiNotebook, getArtProvider, 0}}, - {2669, {wxAuiNotebook, getPage, 1}}, - {2670, {wxAuiNotebook, getPageBitmap, 1}}, - {2671, {wxAuiNotebook, getPageCount, 0}}, - {2672, {wxAuiNotebook, getPageIndex, 1}}, - {2673, {wxAuiNotebook, getPageText, 1}}, - {2674, {wxAuiNotebook, getSelection, 0}}, - {2675, {wxAuiNotebook, insertPage, 4}}, - {2676, {wxAuiNotebook, removePage, 1}}, - {2677, {wxAuiNotebook, setArtProvider, 1}}, - {2678, {wxAuiNotebook, setFont, 1}}, - {2679, {wxAuiNotebook, setPageBitmap, 2}}, - {2680, {wxAuiNotebook, setPageText, 2}}, - {2681, {wxAuiNotebook, setSelection, 1}}, - {2682, {wxAuiNotebook, setTabCtrlHeight, 1}}, - {2683, {wxAuiNotebook, setUniformBitmapSize, 1}}, - {2684, {wxAuiNotebook, 'Destroy', undefined}}, - {2685, {wxAuiTabArt, setFlags, 1}}, - {2686, {wxAuiTabArt, setMeasuringFont, 1}}, - {2687, {wxAuiTabArt, setNormalFont, 1}}, - {2688, {wxAuiTabArt, setSelectedFont, 1}}, - {2689, {wxAuiTabArt, setColour, 1}}, - {2690, {wxAuiTabArt, setActiveColour, 1}}, - {2691, {wxAuiDockArt, getColour, 1}}, - {2692, {wxAuiDockArt, getFont, 1}}, - {2693, {wxAuiDockArt, getMetric, 1}}, - {2694, {wxAuiDockArt, setColour, 2}}, - {2695, {wxAuiDockArt, setFont, 2}}, - {2696, {wxAuiDockArt, setMetric, 2}}, - {2697, {wxAuiSimpleTabArt, new, 0}}, - {2698, {wxAuiSimpleTabArt, 'Destroy', undefined}}, - {2699, {wxMDIParentFrame, new_0, 0}}, - {2700, {wxMDIParentFrame, new_4, 4}}, - {2701, {wxMDIParentFrame, destruct, 0}}, - {2702, {wxMDIParentFrame, activateNext, 0}}, - {2703, {wxMDIParentFrame, activatePrevious, 0}}, - {2704, {wxMDIParentFrame, arrangeIcons, 0}}, - {2705, {wxMDIParentFrame, cascade, 0}}, - {2706, {wxMDIParentFrame, create, 4}}, - {2707, {wxMDIParentFrame, getActiveChild, 0}}, - {2708, {wxMDIParentFrame, getClientWindow, 0}}, - {2709, {wxMDIParentFrame, tile, 1}}, - {2710, {wxMDIChildFrame, new_0, 0}}, - {2711, {wxMDIChildFrame, new_4, 4}}, - {2712, {wxMDIChildFrame, destruct, 0}}, - {2713, {wxMDIChildFrame, activate, 0}}, - {2714, {wxMDIChildFrame, create, 4}}, - {2715, {wxMDIChildFrame, maximize, 1}}, - {2716, {wxMDIChildFrame, restore, 0}}, - {2717, {wxMDIClientWindow, new_0, 0}}, - {2718, {wxMDIClientWindow, new_2, 2}}, - {2719, {wxMDIClientWindow, destruct, 0}}, - {2720, {wxMDIClientWindow, createClient, 2}}, - {2721, {wxLayoutAlgorithm, new, 0}}, - {2722, {wxLayoutAlgorithm, layoutFrame, 2}}, - {2723, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, - {2724, {wxLayoutAlgorithm, layoutWindow, 2}}, - {2725, {wxLayoutAlgorithm, 'Destroy', undefined}}, - {2726, {wxEvent, getId, 0}}, - {2727, {wxEvent, getSkipped, 0}}, - {2728, {wxEvent, getTimestamp, 0}}, - {2729, {wxEvent, isCommandEvent, 0}}, - {2730, {wxEvent, resumePropagation, 1}}, - {2731, {wxEvent, shouldPropagate, 0}}, - {2732, {wxEvent, skip, 1}}, - {2733, {wxEvent, stopPropagation, 0}}, - {2734, {wxCommandEvent, getClientData, 0}}, - {2735, {wxCommandEvent, getExtraLong, 0}}, - {2736, {wxCommandEvent, getInt, 0}}, - {2737, {wxCommandEvent, getSelection, 0}}, - {2738, {wxCommandEvent, getString, 0}}, - {2739, {wxCommandEvent, isChecked, 0}}, - {2740, {wxCommandEvent, isSelection, 0}}, - {2741, {wxCommandEvent, setInt, 1}}, - {2742, {wxCommandEvent, setString, 1}}, - {2743, {wxScrollEvent, getOrientation, 0}}, - {2744, {wxScrollEvent, getPosition, 0}}, - {2745, {wxScrollWinEvent, getOrientation, 0}}, - {2746, {wxScrollWinEvent, getPosition, 0}}, - {2747, {wxMouseEvent, altDown, 0}}, - {2748, {wxMouseEvent, button, 1}}, - {2749, {wxMouseEvent, buttonDClick, 1}}, - {2750, {wxMouseEvent, buttonDown, 1}}, - {2751, {wxMouseEvent, buttonUp, 1}}, - {2752, {wxMouseEvent, cmdDown, 0}}, - {2753, {wxMouseEvent, controlDown, 0}}, - {2754, {wxMouseEvent, dragging, 0}}, - {2755, {wxMouseEvent, entering, 0}}, - {2756, {wxMouseEvent, getButton, 0}}, - {2759, {wxMouseEvent, getPosition, 0}}, - {2760, {wxMouseEvent, getLogicalPosition, 1}}, - {2761, {wxMouseEvent, getLinesPerAction, 0}}, - {2762, {wxMouseEvent, getWheelRotation, 0}}, - {2763, {wxMouseEvent, getWheelDelta, 0}}, - {2764, {wxMouseEvent, getX, 0}}, - {2765, {wxMouseEvent, getY, 0}}, - {2766, {wxMouseEvent, isButton, 0}}, - {2767, {wxMouseEvent, isPageScroll, 0}}, - {2768, {wxMouseEvent, leaving, 0}}, - {2769, {wxMouseEvent, leftDClick, 0}}, - {2770, {wxMouseEvent, leftDown, 0}}, - {2771, {wxMouseEvent, leftIsDown, 0}}, - {2772, {wxMouseEvent, leftUp, 0}}, - {2773, {wxMouseEvent, metaDown, 0}}, - {2774, {wxMouseEvent, middleDClick, 0}}, - {2775, {wxMouseEvent, middleDown, 0}}, - {2776, {wxMouseEvent, middleIsDown, 0}}, - {2777, {wxMouseEvent, middleUp, 0}}, - {2778, {wxMouseEvent, moving, 0}}, - {2779, {wxMouseEvent, rightDClick, 0}}, - {2780, {wxMouseEvent, rightDown, 0}}, - {2781, {wxMouseEvent, rightIsDown, 0}}, - {2782, {wxMouseEvent, rightUp, 0}}, - {2783, {wxMouseEvent, shiftDown, 0}}, - {2784, {wxSetCursorEvent, getCursor, 0}}, - {2785, {wxSetCursorEvent, getX, 0}}, - {2786, {wxSetCursorEvent, getY, 0}}, - {2787, {wxSetCursorEvent, hasCursor, 0}}, - {2788, {wxSetCursorEvent, setCursor, 1}}, - {2789, {wxKeyEvent, altDown, 0}}, - {2790, {wxKeyEvent, cmdDown, 0}}, - {2791, {wxKeyEvent, controlDown, 0}}, - {2792, {wxKeyEvent, getKeyCode, 0}}, - {2793, {wxKeyEvent, getModifiers, 0}}, - {2796, {wxKeyEvent, getPosition, 0}}, - {2797, {wxKeyEvent, getRawKeyCode, 0}}, - {2798, {wxKeyEvent, getRawKeyFlags, 0}}, - {2799, {wxKeyEvent, getUnicodeKey, 0}}, - {2800, {wxKeyEvent, getX, 0}}, - {2801, {wxKeyEvent, getY, 0}}, - {2802, {wxKeyEvent, hasModifiers, 0}}, - {2803, {wxKeyEvent, metaDown, 0}}, - {2804, {wxKeyEvent, shiftDown, 0}}, - {2805, {wxSizeEvent, getSize, 0}}, - {2806, {wxMoveEvent, getPosition, 0}}, - {2807, {wxEraseEvent, getDC, 0}}, - {2808, {wxFocusEvent, getWindow, 0}}, - {2809, {wxChildFocusEvent, getWindow, 0}}, - {2810, {wxMenuEvent, getMenu, 0}}, - {2811, {wxMenuEvent, getMenuId, 0}}, - {2812, {wxMenuEvent, isPopup, 0}}, - {2813, {wxCloseEvent, canVeto, 0}}, - {2814, {wxCloseEvent, getLoggingOff, 0}}, - {2815, {wxCloseEvent, setCanVeto, 1}}, - {2816, {wxCloseEvent, setLoggingOff, 1}}, - {2817, {wxCloseEvent, veto, 1}}, - {2818, {wxShowEvent, setShow, 1}}, - {2819, {wxShowEvent, getShow, 0}}, - {2820, {wxIconizeEvent, iconized, 0}}, - {2821, {wxJoystickEvent, buttonDown, 1}}, - {2822, {wxJoystickEvent, buttonIsDown, 1}}, - {2823, {wxJoystickEvent, buttonUp, 1}}, - {2824, {wxJoystickEvent, getButtonChange, 0}}, - {2825, {wxJoystickEvent, getButtonState, 0}}, - {2826, {wxJoystickEvent, getJoystick, 0}}, - {2827, {wxJoystickEvent, getPosition, 0}}, - {2828, {wxJoystickEvent, getZPosition, 0}}, - {2829, {wxJoystickEvent, isButton, 0}}, - {2830, {wxJoystickEvent, isMove, 0}}, - {2831, {wxJoystickEvent, isZMove, 0}}, - {2832, {wxUpdateUIEvent, canUpdate, 1}}, - {2833, {wxUpdateUIEvent, check, 1}}, - {2834, {wxUpdateUIEvent, enable, 1}}, - {2835, {wxUpdateUIEvent, show, 1}}, - {2836, {wxUpdateUIEvent, getChecked, 0}}, - {2837, {wxUpdateUIEvent, getEnabled, 0}}, - {2838, {wxUpdateUIEvent, getShown, 0}}, - {2839, {wxUpdateUIEvent, getSetChecked, 0}}, - {2840, {wxUpdateUIEvent, getSetEnabled, 0}}, - {2841, {wxUpdateUIEvent, getSetShown, 0}}, - {2842, {wxUpdateUIEvent, getSetText, 0}}, - {2843, {wxUpdateUIEvent, getText, 0}}, - {2844, {wxUpdateUIEvent, getMode, 0}}, - {2845, {wxUpdateUIEvent, getUpdateInterval, 0}}, - {2846, {wxUpdateUIEvent, resetUpdateTime, 0}}, - {2847, {wxUpdateUIEvent, setMode, 1}}, - {2848, {wxUpdateUIEvent, setText, 1}}, - {2849, {wxUpdateUIEvent, setUpdateInterval, 1}}, - {2850, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, - {2851, {wxPaletteChangedEvent, setChangedWindow, 1}}, - {2852, {wxPaletteChangedEvent, getChangedWindow, 0}}, - {2853, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, - {2854, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, - {2855, {wxNavigationKeyEvent, getDirection, 0}}, - {2856, {wxNavigationKeyEvent, setDirection, 1}}, - {2857, {wxNavigationKeyEvent, isWindowChange, 0}}, - {2858, {wxNavigationKeyEvent, setWindowChange, 1}}, - {2859, {wxNavigationKeyEvent, isFromTab, 0}}, - {2860, {wxNavigationKeyEvent, setFromTab, 1}}, - {2861, {wxNavigationKeyEvent, getCurrentFocus, 0}}, - {2862, {wxNavigationKeyEvent, setCurrentFocus, 1}}, - {2863, {wxHelpEvent, getOrigin, 0}}, - {2864, {wxHelpEvent, getPosition, 0}}, - {2865, {wxHelpEvent, setOrigin, 1}}, - {2866, {wxHelpEvent, setPosition, 1}}, - {2867, {wxContextMenuEvent, getPosition, 0}}, - {2868, {wxContextMenuEvent, setPosition, 1}}, - {2869, {wxIdleEvent, canSend, 1}}, - {2870, {wxIdleEvent, getMode, 0}}, - {2871, {wxIdleEvent, requestMore, 1}}, - {2872, {wxIdleEvent, moreRequested, 0}}, - {2873, {wxIdleEvent, setMode, 1}}, - {2874, {wxGridEvent, altDown, 0}}, - {2875, {wxGridEvent, controlDown, 0}}, - {2876, {wxGridEvent, getCol, 0}}, - {2877, {wxGridEvent, getPosition, 0}}, - {2878, {wxGridEvent, getRow, 0}}, - {2879, {wxGridEvent, metaDown, 0}}, - {2880, {wxGridEvent, selecting, 0}}, - {2881, {wxGridEvent, shiftDown, 0}}, - {2882, {wxNotifyEvent, allow, 0}}, - {2883, {wxNotifyEvent, isAllowed, 0}}, - {2884, {wxNotifyEvent, veto, 0}}, - {2885, {wxSashEvent, getEdge, 0}}, - {2886, {wxSashEvent, getDragRect, 0}}, - {2887, {wxSashEvent, getDragStatus, 0}}, - {2888, {wxListEvent, getCacheFrom, 0}}, - {2889, {wxListEvent, getCacheTo, 0}}, - {2890, {wxListEvent, getKeyCode, 0}}, - {2891, {wxListEvent, getIndex, 0}}, - {2892, {wxListEvent, getColumn, 0}}, - {2893, {wxListEvent, getPoint, 0}}, - {2894, {wxListEvent, getLabel, 0}}, - {2895, {wxListEvent, getText, 0}}, - {2896, {wxListEvent, getImage, 0}}, - {2897, {wxListEvent, getData, 0}}, - {2898, {wxListEvent, getMask, 0}}, - {2899, {wxListEvent, getItem, 0}}, - {2900, {wxListEvent, isEditCancelled, 0}}, - {2901, {wxDateEvent, getDate, 0}}, - {2902, {wxCalendarEvent, getWeekDay, 0}}, - {2903, {wxFileDirPickerEvent, getPath, 0}}, - {2904, {wxColourPickerEvent, getColour, 0}}, - {2905, {wxFontPickerEvent, getFont, 0}}, - {2906, {wxStyledTextEvent, getPosition, 0}}, - {2907, {wxStyledTextEvent, getKey, 0}}, - {2908, {wxStyledTextEvent, getModifiers, 0}}, - {2909, {wxStyledTextEvent, getModificationType, 0}}, - {2910, {wxStyledTextEvent, getText, 0}}, - {2911, {wxStyledTextEvent, getLength, 0}}, - {2912, {wxStyledTextEvent, getLinesAdded, 0}}, - {2913, {wxStyledTextEvent, getLine, 0}}, - {2914, {wxStyledTextEvent, getFoldLevelNow, 0}}, - {2915, {wxStyledTextEvent, getFoldLevelPrev, 0}}, - {2916, {wxStyledTextEvent, getMargin, 0}}, - {2917, {wxStyledTextEvent, getMessage, 0}}, - {2918, {wxStyledTextEvent, getWParam, 0}}, - {2919, {wxStyledTextEvent, getLParam, 0}}, - {2920, {wxStyledTextEvent, getListType, 0}}, - {2921, {wxStyledTextEvent, getX, 0}}, - {2922, {wxStyledTextEvent, getY, 0}}, - {2923, {wxStyledTextEvent, getDragText, 0}}, - {2924, {wxStyledTextEvent, getDragAllowMove, 0}}, - {2925, {wxStyledTextEvent, getDragResult, 0}}, - {2926, {wxStyledTextEvent, getShift, 0}}, - {2927, {wxStyledTextEvent, getControl, 0}}, - {2928, {wxStyledTextEvent, getAlt, 0}}, - {2929, {utils, getKeyState, 1}}, - {2930, {utils, getMousePosition, 2}}, - {2931, {utils, getMouseState, 0}}, - {2932, {utils, setDetectableAutoRepeat, 1}}, - {2933, {utils, bell, 0}}, - {2934, {utils, findMenuItemId, 3}}, - {2935, {utils, genericFindWindowAtPoint, 1}}, - {2936, {utils, findWindowAtPoint, 1}}, - {2937, {utils, beginBusyCursor, 1}}, - {2938, {utils, endBusyCursor, 0}}, - {2939, {utils, isBusy, 0}}, - {2940, {utils, shutdown, 1}}, - {2941, {utils, shell, 1}}, - {2942, {utils, launchDefaultBrowser, 2}}, - {2943, {utils, getEmailAddress, 0}}, - {2944, {utils, getUserId, 0}}, - {2945, {utils, getHomeDir, 0}}, - {2946, {utils, newId, 0}}, - {2947, {utils, registerId, 1}}, - {2948, {utils, getCurrentId, 0}}, - {2949, {utils, getOsDescription, 0}}, - {2950, {utils, isPlatformLittleEndian, 0}}, - {2951, {utils, isPlatform64Bit, 0}}, - {2952, {gdicmn, displaySize, 2}}, - {2953, {gdicmn, setCursor, 1}}, - {2954, {wxPrintout, new, 1}}, - {2955, {wxPrintout, destruct, 0}}, - {2956, {wxPrintout, getDC, 0}}, - {2957, {wxPrintout, getPageSizeMM, 2}}, - {2958, {wxPrintout, getPageSizePixels, 2}}, - {2959, {wxPrintout, getPaperRectPixels, 0}}, - {2960, {wxPrintout, getPPIPrinter, 2}}, - {2961, {wxPrintout, getPPIScreen, 2}}, - {2962, {wxPrintout, getTitle, 0}}, - {2963, {wxPrintout, isPreview, 0}}, - {2964, {wxPrintout, fitThisSizeToPaper, 1}}, - {2965, {wxPrintout, fitThisSizeToPage, 1}}, - {2966, {wxPrintout, fitThisSizeToPageMargins, 2}}, - {2967, {wxPrintout, mapScreenSizeToPaper, 0}}, - {2968, {wxPrintout, mapScreenSizeToPage, 0}}, - {2969, {wxPrintout, mapScreenSizeToPageMargins, 1}}, - {2970, {wxPrintout, mapScreenSizeToDevice, 0}}, - {2971, {wxPrintout, getLogicalPaperRect, 0}}, - {2972, {wxPrintout, getLogicalPageRect, 0}}, - {2973, {wxPrintout, getLogicalPageMarginsRect, 1}}, - {2974, {wxPrintout, setLogicalOrigin, 2}}, - {2975, {wxPrintout, offsetLogicalOrigin, 2}}, - {2976, {wxStyledTextCtrl, new_2, 2}}, - {2977, {wxStyledTextCtrl, new_0, 0}}, - {2978, {wxStyledTextCtrl, destruct, 0}}, - {2979, {wxStyledTextCtrl, create, 2}}, - {2980, {wxStyledTextCtrl, addText, 1}}, - {2981, {wxStyledTextCtrl, addStyledText, 1}}, - {2982, {wxStyledTextCtrl, insertText, 2}}, - {2983, {wxStyledTextCtrl, clearAll, 0}}, - {2984, {wxStyledTextCtrl, clearDocumentStyle, 0}}, - {2985, {wxStyledTextCtrl, getLength, 0}}, - {2986, {wxStyledTextCtrl, getCharAt, 1}}, - {2987, {wxStyledTextCtrl, getCurrentPos, 0}}, - {2988, {wxStyledTextCtrl, getAnchor, 0}}, - {2989, {wxStyledTextCtrl, getStyleAt, 1}}, - {2990, {wxStyledTextCtrl, redo, 0}}, - {2991, {wxStyledTextCtrl, setUndoCollection, 1}}, - {2992, {wxStyledTextCtrl, selectAll, 0}}, - {2993, {wxStyledTextCtrl, setSavePoint, 0}}, - {2994, {wxStyledTextCtrl, getStyledText, 2}}, - {2995, {wxStyledTextCtrl, canRedo, 0}}, - {2996, {wxStyledTextCtrl, markerLineFromHandle, 1}}, - {2997, {wxStyledTextCtrl, markerDeleteHandle, 1}}, - {2998, {wxStyledTextCtrl, getUndoCollection, 0}}, - {2999, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, - {3000, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, - {3001, {wxStyledTextCtrl, positionFromPoint, 1}}, - {3002, {wxStyledTextCtrl, positionFromPointClose, 2}}, - {3003, {wxStyledTextCtrl, gotoLine, 1}}, - {3004, {wxStyledTextCtrl, gotoPos, 1}}, - {3005, {wxStyledTextCtrl, setAnchor, 1}}, - {3006, {wxStyledTextCtrl, getCurLine, 1}}, - {3007, {wxStyledTextCtrl, getEndStyled, 0}}, - {3008, {wxStyledTextCtrl, convertEOLs, 1}}, - {3009, {wxStyledTextCtrl, getEOLMode, 0}}, - {3010, {wxStyledTextCtrl, setEOLMode, 1}}, - {3011, {wxStyledTextCtrl, startStyling, 2}}, - {3012, {wxStyledTextCtrl, setStyling, 2}}, - {3013, {wxStyledTextCtrl, getBufferedDraw, 0}}, - {3014, {wxStyledTextCtrl, setBufferedDraw, 1}}, - {3015, {wxStyledTextCtrl, setTabWidth, 1}}, - {3016, {wxStyledTextCtrl, getTabWidth, 0}}, - {3017, {wxStyledTextCtrl, setCodePage, 1}}, - {3018, {wxStyledTextCtrl, markerDefine, 3}}, - {3019, {wxStyledTextCtrl, markerSetForeground, 2}}, - {3020, {wxStyledTextCtrl, markerSetBackground, 2}}, - {3021, {wxStyledTextCtrl, markerAdd, 2}}, - {3022, {wxStyledTextCtrl, markerDelete, 2}}, - {3023, {wxStyledTextCtrl, markerDeleteAll, 1}}, - {3024, {wxStyledTextCtrl, markerGet, 1}}, - {3025, {wxStyledTextCtrl, markerNext, 2}}, - {3026, {wxStyledTextCtrl, markerPrevious, 2}}, - {3027, {wxStyledTextCtrl, markerDefineBitmap, 2}}, - {3028, {wxStyledTextCtrl, markerAddSet, 2}}, - {3029, {wxStyledTextCtrl, markerSetAlpha, 2}}, - {3030, {wxStyledTextCtrl, setMarginType, 2}}, - {3031, {wxStyledTextCtrl, getMarginType, 1}}, - {3032, {wxStyledTextCtrl, setMarginWidth, 2}}, - {3033, {wxStyledTextCtrl, getMarginWidth, 1}}, - {3034, {wxStyledTextCtrl, setMarginMask, 2}}, - {3035, {wxStyledTextCtrl, getMarginMask, 1}}, - {3036, {wxStyledTextCtrl, setMarginSensitive, 2}}, - {3037, {wxStyledTextCtrl, getMarginSensitive, 1}}, - {3038, {wxStyledTextCtrl, styleClearAll, 0}}, - {3039, {wxStyledTextCtrl, styleSetForeground, 2}}, - {3040, {wxStyledTextCtrl, styleSetBackground, 2}}, - {3041, {wxStyledTextCtrl, styleSetBold, 2}}, - {3042, {wxStyledTextCtrl, styleSetItalic, 2}}, - {3043, {wxStyledTextCtrl, styleSetSize, 2}}, - {3044, {wxStyledTextCtrl, styleSetFaceName, 2}}, - {3045, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, - {3046, {wxStyledTextCtrl, styleResetDefault, 0}}, - {3047, {wxStyledTextCtrl, styleSetUnderline, 2}}, - {3048, {wxStyledTextCtrl, styleSetCase, 2}}, - {3049, {wxStyledTextCtrl, styleSetHotSpot, 2}}, - {3050, {wxStyledTextCtrl, setSelForeground, 2}}, - {3051, {wxStyledTextCtrl, setSelBackground, 2}}, - {3052, {wxStyledTextCtrl, getSelAlpha, 0}}, - {3053, {wxStyledTextCtrl, setSelAlpha, 1}}, - {3054, {wxStyledTextCtrl, setCaretForeground, 1}}, - {3055, {wxStyledTextCtrl, cmdKeyAssign, 3}}, - {3056, {wxStyledTextCtrl, cmdKeyClear, 2}}, - {3057, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, - {3058, {wxStyledTextCtrl, setStyleBytes, 2}}, - {3059, {wxStyledTextCtrl, styleSetVisible, 2}}, - {3060, {wxStyledTextCtrl, getCaretPeriod, 0}}, - {3061, {wxStyledTextCtrl, setCaretPeriod, 1}}, - {3062, {wxStyledTextCtrl, setWordChars, 1}}, - {3063, {wxStyledTextCtrl, beginUndoAction, 0}}, - {3064, {wxStyledTextCtrl, endUndoAction, 0}}, - {3065, {wxStyledTextCtrl, indicatorSetStyle, 2}}, - {3066, {wxStyledTextCtrl, indicatorGetStyle, 1}}, - {3067, {wxStyledTextCtrl, indicatorSetForeground, 2}}, - {3068, {wxStyledTextCtrl, indicatorGetForeground, 1}}, - {3069, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, - {3070, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, - {3071, {wxStyledTextCtrl, getStyleBits, 0}}, - {3072, {wxStyledTextCtrl, setLineState, 2}}, - {3073, {wxStyledTextCtrl, getLineState, 1}}, - {3074, {wxStyledTextCtrl, getMaxLineState, 0}}, - {3075, {wxStyledTextCtrl, getCaretLineVisible, 0}}, - {3076, {wxStyledTextCtrl, setCaretLineVisible, 1}}, - {3077, {wxStyledTextCtrl, getCaretLineBackground, 0}}, - {3078, {wxStyledTextCtrl, setCaretLineBackground, 1}}, - {3079, {wxStyledTextCtrl, autoCompShow, 2}}, - {3080, {wxStyledTextCtrl, autoCompCancel, 0}}, - {3081, {wxStyledTextCtrl, autoCompActive, 0}}, - {3082, {wxStyledTextCtrl, autoCompPosStart, 0}}, - {3083, {wxStyledTextCtrl, autoCompComplete, 0}}, - {3084, {wxStyledTextCtrl, autoCompStops, 1}}, - {3085, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, - {3086, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, - {3087, {wxStyledTextCtrl, autoCompSelect, 1}}, - {3088, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, - {3089, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, - {3090, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, - {3091, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, - {3092, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, - {3093, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, - {3094, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, - {3095, {wxStyledTextCtrl, userListShow, 2}}, - {3096, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, - {3097, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, - {3098, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, - {3099, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, - {3100, {wxStyledTextCtrl, registerImage, 2}}, - {3101, {wxStyledTextCtrl, clearRegisteredImages, 0}}, - {3102, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, - {3103, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, - {3104, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, - {3105, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, - {3106, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, - {3107, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, - {3108, {wxStyledTextCtrl, setIndent, 1}}, - {3109, {wxStyledTextCtrl, getIndent, 0}}, - {3110, {wxStyledTextCtrl, setUseTabs, 1}}, - {3111, {wxStyledTextCtrl, getUseTabs, 0}}, - {3112, {wxStyledTextCtrl, setLineIndentation, 2}}, - {3113, {wxStyledTextCtrl, getLineIndentation, 1}}, - {3114, {wxStyledTextCtrl, getLineIndentPosition, 1}}, - {3115, {wxStyledTextCtrl, getColumn, 1}}, - {3116, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, - {3117, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, - {3118, {wxStyledTextCtrl, setIndentationGuides, 1}}, - {3119, {wxStyledTextCtrl, getIndentationGuides, 0}}, - {3120, {wxStyledTextCtrl, setHighlightGuide, 1}}, - {3121, {wxStyledTextCtrl, getHighlightGuide, 0}}, - {3122, {wxStyledTextCtrl, getLineEndPosition, 1}}, - {3123, {wxStyledTextCtrl, getCodePage, 0}}, - {3124, {wxStyledTextCtrl, getCaretForeground, 0}}, - {3125, {wxStyledTextCtrl, getReadOnly, 0}}, - {3126, {wxStyledTextCtrl, setCurrentPos, 1}}, - {3127, {wxStyledTextCtrl, setSelectionStart, 1}}, - {3128, {wxStyledTextCtrl, getSelectionStart, 0}}, - {3129, {wxStyledTextCtrl, setSelectionEnd, 1}}, - {3130, {wxStyledTextCtrl, getSelectionEnd, 0}}, - {3131, {wxStyledTextCtrl, setPrintMagnification, 1}}, - {3132, {wxStyledTextCtrl, getPrintMagnification, 0}}, - {3133, {wxStyledTextCtrl, setPrintColourMode, 1}}, - {3134, {wxStyledTextCtrl, getPrintColourMode, 0}}, - {3135, {wxStyledTextCtrl, findText, 4}}, - {3136, {wxStyledTextCtrl, formatRange, 7}}, - {3137, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, - {3138, {wxStyledTextCtrl, getLine, 1}}, - {3139, {wxStyledTextCtrl, getLineCount, 0}}, - {3140, {wxStyledTextCtrl, setMarginLeft, 1}}, - {3141, {wxStyledTextCtrl, getMarginLeft, 0}}, - {3142, {wxStyledTextCtrl, setMarginRight, 1}}, - {3143, {wxStyledTextCtrl, getMarginRight, 0}}, - {3144, {wxStyledTextCtrl, getModify, 0}}, - {3145, {wxStyledTextCtrl, setSelection, 2}}, - {3146, {wxStyledTextCtrl, getSelectedText, 0}}, - {3147, {wxStyledTextCtrl, getTextRange, 2}}, - {3148, {wxStyledTextCtrl, hideSelection, 1}}, - {3149, {wxStyledTextCtrl, lineFromPosition, 1}}, - {3150, {wxStyledTextCtrl, positionFromLine, 1}}, - {3151, {wxStyledTextCtrl, lineScroll, 2}}, - {3152, {wxStyledTextCtrl, ensureCaretVisible, 0}}, - {3153, {wxStyledTextCtrl, replaceSelection, 1}}, - {3154, {wxStyledTextCtrl, setReadOnly, 1}}, - {3155, {wxStyledTextCtrl, canPaste, 0}}, - {3156, {wxStyledTextCtrl, canUndo, 0}}, - {3157, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, - {3158, {wxStyledTextCtrl, undo, 0}}, - {3159, {wxStyledTextCtrl, cut, 0}}, - {3160, {wxStyledTextCtrl, copy, 0}}, - {3161, {wxStyledTextCtrl, paste, 0}}, - {3162, {wxStyledTextCtrl, clear, 0}}, - {3163, {wxStyledTextCtrl, setText, 1}}, - {3164, {wxStyledTextCtrl, getText, 0}}, - {3165, {wxStyledTextCtrl, getTextLength, 0}}, - {3166, {wxStyledTextCtrl, getOvertype, 0}}, - {3167, {wxStyledTextCtrl, setCaretWidth, 1}}, - {3168, {wxStyledTextCtrl, getCaretWidth, 0}}, - {3169, {wxStyledTextCtrl, setTargetStart, 1}}, - {3170, {wxStyledTextCtrl, getTargetStart, 0}}, - {3171, {wxStyledTextCtrl, setTargetEnd, 1}}, - {3172, {wxStyledTextCtrl, getTargetEnd, 0}}, - {3173, {wxStyledTextCtrl, replaceTarget, 1}}, - {3174, {wxStyledTextCtrl, searchInTarget, 1}}, - {3175, {wxStyledTextCtrl, setSearchFlags, 1}}, - {3176, {wxStyledTextCtrl, getSearchFlags, 0}}, - {3177, {wxStyledTextCtrl, callTipShow, 2}}, - {3178, {wxStyledTextCtrl, callTipCancel, 0}}, - {3179, {wxStyledTextCtrl, callTipActive, 0}}, - {3180, {wxStyledTextCtrl, callTipPosAtStart, 0}}, - {3181, {wxStyledTextCtrl, callTipSetHighlight, 2}}, - {3182, {wxStyledTextCtrl, callTipSetBackground, 1}}, - {3183, {wxStyledTextCtrl, callTipSetForeground, 1}}, - {3184, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, - {3185, {wxStyledTextCtrl, callTipUseStyle, 1}}, - {3186, {wxStyledTextCtrl, visibleFromDocLine, 1}}, - {3187, {wxStyledTextCtrl, docLineFromVisible, 1}}, - {3188, {wxStyledTextCtrl, wrapCount, 1}}, - {3189, {wxStyledTextCtrl, setFoldLevel, 2}}, - {3190, {wxStyledTextCtrl, getFoldLevel, 1}}, - {3191, {wxStyledTextCtrl, getLastChild, 2}}, - {3192, {wxStyledTextCtrl, getFoldParent, 1}}, - {3193, {wxStyledTextCtrl, showLines, 2}}, - {3194, {wxStyledTextCtrl, hideLines, 2}}, - {3195, {wxStyledTextCtrl, getLineVisible, 1}}, - {3196, {wxStyledTextCtrl, setFoldExpanded, 2}}, - {3197, {wxStyledTextCtrl, getFoldExpanded, 1}}, - {3198, {wxStyledTextCtrl, toggleFold, 1}}, - {3199, {wxStyledTextCtrl, ensureVisible, 1}}, - {3200, {wxStyledTextCtrl, setFoldFlags, 1}}, - {3201, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, - {3202, {wxStyledTextCtrl, setTabIndents, 1}}, - {3203, {wxStyledTextCtrl, getTabIndents, 0}}, - {3204, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, - {3205, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, - {3206, {wxStyledTextCtrl, setMouseDwellTime, 1}}, - {3207, {wxStyledTextCtrl, getMouseDwellTime, 0}}, - {3208, {wxStyledTextCtrl, wordStartPosition, 2}}, - {3209, {wxStyledTextCtrl, wordEndPosition, 2}}, - {3210, {wxStyledTextCtrl, setWrapMode, 1}}, - {3211, {wxStyledTextCtrl, getWrapMode, 0}}, - {3212, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, - {3213, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, - {3214, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, - {3215, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, - {3216, {wxStyledTextCtrl, setWrapStartIndent, 1}}, - {3217, {wxStyledTextCtrl, getWrapStartIndent, 0}}, - {3218, {wxStyledTextCtrl, setLayoutCache, 1}}, - {3219, {wxStyledTextCtrl, getLayoutCache, 0}}, - {3220, {wxStyledTextCtrl, setScrollWidth, 1}}, - {3221, {wxStyledTextCtrl, getScrollWidth, 0}}, - {3222, {wxStyledTextCtrl, textWidth, 2}}, - {3223, {wxStyledTextCtrl, getEndAtLastLine, 0}}, - {3224, {wxStyledTextCtrl, textHeight, 1}}, - {3225, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, - {3226, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, - {3227, {wxStyledTextCtrl, appendText, 1}}, - {3228, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, - {3229, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, - {3230, {wxStyledTextCtrl, targetFromSelection, 0}}, - {3231, {wxStyledTextCtrl, linesJoin, 0}}, - {3232, {wxStyledTextCtrl, linesSplit, 1}}, - {3233, {wxStyledTextCtrl, setFoldMarginColour, 2}}, - {3234, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, - {3235, {wxStyledTextCtrl, lineDown, 0}}, - {3236, {wxStyledTextCtrl, lineDownExtend, 0}}, - {3237, {wxStyledTextCtrl, lineUp, 0}}, - {3238, {wxStyledTextCtrl, lineUpExtend, 0}}, - {3239, {wxStyledTextCtrl, charLeft, 0}}, - {3240, {wxStyledTextCtrl, charLeftExtend, 0}}, - {3241, {wxStyledTextCtrl, charRight, 0}}, - {3242, {wxStyledTextCtrl, charRightExtend, 0}}, - {3243, {wxStyledTextCtrl, wordLeft, 0}}, - {3244, {wxStyledTextCtrl, wordLeftExtend, 0}}, - {3245, {wxStyledTextCtrl, wordRight, 0}}, - {3246, {wxStyledTextCtrl, wordRightExtend, 0}}, - {3247, {wxStyledTextCtrl, home, 0}}, - {3248, {wxStyledTextCtrl, homeExtend, 0}}, - {3249, {wxStyledTextCtrl, lineEnd, 0}}, - {3250, {wxStyledTextCtrl, lineEndExtend, 0}}, - {3251, {wxStyledTextCtrl, documentStart, 0}}, - {3252, {wxStyledTextCtrl, documentStartExtend, 0}}, - {3253, {wxStyledTextCtrl, documentEnd, 0}}, - {3254, {wxStyledTextCtrl, documentEndExtend, 0}}, - {3255, {wxStyledTextCtrl, pageUp, 0}}, - {3256, {wxStyledTextCtrl, pageUpExtend, 0}}, - {3257, {wxStyledTextCtrl, pageDown, 0}}, - {3258, {wxStyledTextCtrl, pageDownExtend, 0}}, - {3259, {wxStyledTextCtrl, editToggleOvertype, 0}}, - {3260, {wxStyledTextCtrl, cancel, 0}}, - {3261, {wxStyledTextCtrl, deleteBack, 0}}, - {3262, {wxStyledTextCtrl, tab, 0}}, - {3263, {wxStyledTextCtrl, backTab, 0}}, - {3264, {wxStyledTextCtrl, newLine, 0}}, - {3265, {wxStyledTextCtrl, formFeed, 0}}, - {3266, {wxStyledTextCtrl, vCHome, 0}}, - {3267, {wxStyledTextCtrl, vCHomeExtend, 0}}, - {3268, {wxStyledTextCtrl, zoomIn, 0}}, - {3269, {wxStyledTextCtrl, zoomOut, 0}}, - {3270, {wxStyledTextCtrl, delWordLeft, 0}}, - {3271, {wxStyledTextCtrl, delWordRight, 0}}, - {3272, {wxStyledTextCtrl, lineCut, 0}}, - {3273, {wxStyledTextCtrl, lineDelete, 0}}, - {3274, {wxStyledTextCtrl, lineTranspose, 0}}, - {3275, {wxStyledTextCtrl, lineDuplicate, 0}}, - {3276, {wxStyledTextCtrl, lowerCase, 0}}, - {3277, {wxStyledTextCtrl, upperCase, 0}}, - {3278, {wxStyledTextCtrl, lineScrollDown, 0}}, - {3279, {wxStyledTextCtrl, lineScrollUp, 0}}, - {3280, {wxStyledTextCtrl, deleteBackNotLine, 0}}, - {3281, {wxStyledTextCtrl, homeDisplay, 0}}, - {3282, {wxStyledTextCtrl, homeDisplayExtend, 0}}, - {3283, {wxStyledTextCtrl, lineEndDisplay, 0}}, - {3284, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, - {3285, {wxStyledTextCtrl, homeWrapExtend, 0}}, - {3286, {wxStyledTextCtrl, lineEndWrap, 0}}, - {3287, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, - {3288, {wxStyledTextCtrl, vCHomeWrap, 0}}, - {3289, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, - {3290, {wxStyledTextCtrl, lineCopy, 0}}, - {3291, {wxStyledTextCtrl, moveCaretInsideView, 0}}, - {3292, {wxStyledTextCtrl, lineLength, 1}}, - {3293, {wxStyledTextCtrl, braceHighlight, 2}}, - {3294, {wxStyledTextCtrl, braceBadLight, 1}}, - {3295, {wxStyledTextCtrl, braceMatch, 1}}, - {3296, {wxStyledTextCtrl, getViewEOL, 0}}, - {3297, {wxStyledTextCtrl, setViewEOL, 1}}, - {3298, {wxStyledTextCtrl, setModEventMask, 1}}, - {3299, {wxStyledTextCtrl, getEdgeColumn, 0}}, - {3300, {wxStyledTextCtrl, setEdgeColumn, 1}}, - {3301, {wxStyledTextCtrl, setEdgeMode, 1}}, - {3302, {wxStyledTextCtrl, getEdgeMode, 0}}, - {3303, {wxStyledTextCtrl, getEdgeColour, 0}}, - {3304, {wxStyledTextCtrl, setEdgeColour, 1}}, - {3305, {wxStyledTextCtrl, searchAnchor, 0}}, - {3306, {wxStyledTextCtrl, searchNext, 2}}, - {3307, {wxStyledTextCtrl, searchPrev, 2}}, - {3308, {wxStyledTextCtrl, linesOnScreen, 0}}, - {3309, {wxStyledTextCtrl, usePopUp, 1}}, - {3310, {wxStyledTextCtrl, selectionIsRectangle, 0}}, - {3311, {wxStyledTextCtrl, setZoom, 1}}, - {3312, {wxStyledTextCtrl, getZoom, 0}}, - {3313, {wxStyledTextCtrl, getModEventMask, 0}}, - {3314, {wxStyledTextCtrl, setSTCFocus, 1}}, - {3315, {wxStyledTextCtrl, getSTCFocus, 0}}, - {3316, {wxStyledTextCtrl, setStatus, 1}}, - {3317, {wxStyledTextCtrl, getStatus, 0}}, - {3318, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, - {3319, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, - {3320, {wxStyledTextCtrl, setSTCCursor, 1}}, - {3321, {wxStyledTextCtrl, getSTCCursor, 0}}, - {3322, {wxStyledTextCtrl, setControlCharSymbol, 1}}, - {3323, {wxStyledTextCtrl, getControlCharSymbol, 0}}, - {3324, {wxStyledTextCtrl, wordPartLeft, 0}}, - {3325, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, - {3326, {wxStyledTextCtrl, wordPartRight, 0}}, - {3327, {wxStyledTextCtrl, wordPartRightExtend, 0}}, - {3328, {wxStyledTextCtrl, setVisiblePolicy, 2}}, - {3329, {wxStyledTextCtrl, delLineLeft, 0}}, - {3330, {wxStyledTextCtrl, delLineRight, 0}}, - {3331, {wxStyledTextCtrl, getXOffset, 0}}, - {3332, {wxStyledTextCtrl, chooseCaretX, 0}}, - {3333, {wxStyledTextCtrl, setXCaretPolicy, 2}}, - {3334, {wxStyledTextCtrl, setYCaretPolicy, 2}}, - {3335, {wxStyledTextCtrl, getPrintWrapMode, 0}}, - {3336, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, - {3337, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, - {3338, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, - {3339, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, - {3340, {wxStyledTextCtrl, paraDownExtend, 0}}, - {3341, {wxStyledTextCtrl, paraUp, 0}}, - {3342, {wxStyledTextCtrl, paraUpExtend, 0}}, - {3343, {wxStyledTextCtrl, positionBefore, 1}}, - {3344, {wxStyledTextCtrl, positionAfter, 1}}, - {3345, {wxStyledTextCtrl, copyRange, 2}}, - {3346, {wxStyledTextCtrl, copyText, 2}}, - {3347, {wxStyledTextCtrl, setSelectionMode, 1}}, - {3348, {wxStyledTextCtrl, getSelectionMode, 0}}, - {3349, {wxStyledTextCtrl, lineDownRectExtend, 0}}, - {3350, {wxStyledTextCtrl, lineUpRectExtend, 0}}, - {3351, {wxStyledTextCtrl, charLeftRectExtend, 0}}, - {3352, {wxStyledTextCtrl, charRightRectExtend, 0}}, - {3353, {wxStyledTextCtrl, homeRectExtend, 0}}, - {3354, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, - {3355, {wxStyledTextCtrl, lineEndRectExtend, 0}}, - {3356, {wxStyledTextCtrl, pageUpRectExtend, 0}}, - {3357, {wxStyledTextCtrl, pageDownRectExtend, 0}}, - {3358, {wxStyledTextCtrl, stutteredPageUp, 0}}, - {3359, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, - {3360, {wxStyledTextCtrl, stutteredPageDown, 0}}, - {3361, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, - {3362, {wxStyledTextCtrl, wordLeftEnd, 0}}, - {3363, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, - {3364, {wxStyledTextCtrl, wordRightEnd, 0}}, - {3365, {wxStyledTextCtrl, wordRightEndExtend, 0}}, - {3366, {wxStyledTextCtrl, setWhitespaceChars, 1}}, - {3367, {wxStyledTextCtrl, setCharsDefault, 0}}, - {3368, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, - {3369, {wxStyledTextCtrl, allocate, 1}}, - {3370, {wxStyledTextCtrl, findColumn, 2}}, - {3371, {wxStyledTextCtrl, getCaretSticky, 0}}, - {3372, {wxStyledTextCtrl, setCaretSticky, 1}}, - {3373, {wxStyledTextCtrl, toggleCaretSticky, 0}}, - {3374, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, - {3375, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, - {3376, {wxStyledTextCtrl, selectionDuplicate, 0}}, - {3377, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, - {3378, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, - {3379, {wxStyledTextCtrl, startRecord, 0}}, - {3380, {wxStyledTextCtrl, stopRecord, 0}}, - {3381, {wxStyledTextCtrl, setLexer, 1}}, - {3382, {wxStyledTextCtrl, getLexer, 0}}, - {3383, {wxStyledTextCtrl, colourise, 2}}, - {3384, {wxStyledTextCtrl, setProperty, 2}}, - {3385, {wxStyledTextCtrl, setKeyWords, 2}}, - {3386, {wxStyledTextCtrl, setLexerLanguage, 1}}, - {3387, {wxStyledTextCtrl, getProperty, 1}}, - {3388, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, - {3389, {wxStyledTextCtrl, getCurrentLine, 0}}, - {3390, {wxStyledTextCtrl, styleSetSpec, 2}}, - {3391, {wxStyledTextCtrl, styleSetFont, 2}}, - {3392, {wxStyledTextCtrl, styleSetFontAttr, 7}}, - {3393, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, - {3394, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, - {3395, {wxStyledTextCtrl, cmdKeyExecute, 1}}, - {3396, {wxStyledTextCtrl, setMargins, 2}}, - {3397, {wxStyledTextCtrl, getSelection, 2}}, - {3398, {wxStyledTextCtrl, pointFromPosition, 1}}, - {3399, {wxStyledTextCtrl, scrollToLine, 1}}, - {3400, {wxStyledTextCtrl, scrollToColumn, 1}}, - {3401, {wxStyledTextCtrl, setVScrollBar, 1}}, - {3402, {wxStyledTextCtrl, setHScrollBar, 1}}, - {3403, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, - {3404, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, - {3405, {wxStyledTextCtrl, saveFile, 1}}, - {3406, {wxStyledTextCtrl, loadFile, 1}}, - {3407, {wxStyledTextCtrl, doDragOver, 3}}, - {3408, {wxStyledTextCtrl, doDropText, 3}}, - {3409, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, - {3410, {wxStyledTextCtrl, addTextRaw, 1}}, - {3411, {wxStyledTextCtrl, insertTextRaw, 2}}, - {3412, {wxStyledTextCtrl, getCurLineRaw, 1}}, - {3413, {wxStyledTextCtrl, getLineRaw, 1}}, - {3414, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, - {3415, {wxStyledTextCtrl, getTextRangeRaw, 2}}, - {3416, {wxStyledTextCtrl, setTextRaw, 1}}, - {3417, {wxStyledTextCtrl, getTextRaw, 0}}, - {3418, {wxStyledTextCtrl, appendTextRaw, 1}}, - {3419, {wxArtProvider, getBitmap, 2}}, - {3420, {wxArtProvider, getIcon, 2}}, - {3421, {wxTreeEvent, getKeyCode, 0}}, - {3422, {wxTreeEvent, getItem, 0}}, - {3423, {wxTreeEvent, getKeyEvent, 0}}, - {3424, {wxTreeEvent, getLabel, 0}}, - {3425, {wxTreeEvent, getOldItem, 0}}, - {3426, {wxTreeEvent, getPoint, 0}}, - {3427, {wxTreeEvent, isEditCancelled, 0}}, - {3428, {wxTreeEvent, setToolTip, 1}}, - {3429, {wxNotebookEvent, getOldSelection, 0}}, - {3430, {wxNotebookEvent, getSelection, 0}}, - {3431, {wxNotebookEvent, setOldSelection, 1}}, - {3432, {wxNotebookEvent, setSelection, 1}}, - {3433, {wxFileDataObject, new, 0}}, - {3434, {wxFileDataObject, addFile, 1}}, - {3435, {wxFileDataObject, getFilenames, 0}}, - {3436, {wxFileDataObject, 'Destroy', undefined}}, - {3437, {wxTextDataObject, new, 1}}, - {3438, {wxTextDataObject, getTextLength, 0}}, - {3439, {wxTextDataObject, getText, 0}}, - {3440, {wxTextDataObject, setText, 1}}, - {3441, {wxTextDataObject, 'Destroy', undefined}}, - {3442, {wxBitmapDataObject, new_1_1, 1}}, - {3443, {wxBitmapDataObject, new_1_0, 1}}, - {3444, {wxBitmapDataObject, getBitmap, 0}}, - {3445, {wxBitmapDataObject, setBitmap, 1}}, - {3446, {wxBitmapDataObject, 'Destroy', undefined}}, - {3448, {wxClipboard, new, 0}}, - {3449, {wxClipboard, destruct, 0}}, - {3450, {wxClipboard, addData, 1}}, - {3451, {wxClipboard, clear, 0}}, - {3452, {wxClipboard, close, 0}}, - {3453, {wxClipboard, flush, 0}}, - {3454, {wxClipboard, getData, 1}}, - {3455, {wxClipboard, isOpened, 0}}, - {3456, {wxClipboard, open, 0}}, - {3457, {wxClipboard, setData, 1}}, - {3459, {wxClipboard, usePrimarySelection, 1}}, - {3460, {wxClipboard, isSupported, 1}}, - {3461, {wxClipboard, get, 0}}, - {3462, {wxSpinEvent, getPosition, 0}}, - {3463, {wxSpinEvent, setPosition, 1}}, - {3464, {wxSplitterWindow, new_0, 0}}, - {3465, {wxSplitterWindow, new_2, 2}}, - {3466, {wxSplitterWindow, destruct, 0}}, - {3467, {wxSplitterWindow, create, 2}}, - {3468, {wxSplitterWindow, getMinimumPaneSize, 0}}, - {3469, {wxSplitterWindow, getSashGravity, 0}}, - {3470, {wxSplitterWindow, getSashPosition, 0}}, - {3471, {wxSplitterWindow, getSplitMode, 0}}, - {3472, {wxSplitterWindow, getWindow1, 0}}, - {3473, {wxSplitterWindow, getWindow2, 0}}, - {3474, {wxSplitterWindow, initialize, 1}}, - {3475, {wxSplitterWindow, isSplit, 0}}, - {3476, {wxSplitterWindow, replaceWindow, 2}}, - {3477, {wxSplitterWindow, setSashGravity, 1}}, - {3478, {wxSplitterWindow, setSashPosition, 2}}, - {3479, {wxSplitterWindow, setSashSize, 1}}, - {3480, {wxSplitterWindow, setMinimumPaneSize, 1}}, - {3481, {wxSplitterWindow, setSplitMode, 1}}, - {3482, {wxSplitterWindow, splitHorizontally, 3}}, - {3483, {wxSplitterWindow, splitVertically, 3}}, - {3484, {wxSplitterWindow, unsplit, 1}}, - {3485, {wxSplitterWindow, updateSize, 0}}, - {3486, {wxSplitterEvent, getSashPosition, 0}}, - {3487, {wxSplitterEvent, getX, 0}}, - {3488, {wxSplitterEvent, getY, 0}}, - {3489, {wxSplitterEvent, getWindowBeingRemoved, 0}}, - {3490, {wxSplitterEvent, setSashPosition, 1}}, - {3491, {wxHtmlWindow, new_0, 0}}, - {3492, {wxHtmlWindow, new_2, 2}}, - {3493, {wxHtmlWindow, appendToPage, 1}}, - {3494, {wxHtmlWindow, getOpenedAnchor, 0}}, - {3495, {wxHtmlWindow, getOpenedPage, 0}}, - {3496, {wxHtmlWindow, getOpenedPageTitle, 0}}, - {3497, {wxHtmlWindow, getRelatedFrame, 0}}, - {3498, {wxHtmlWindow, historyBack, 0}}, - {3499, {wxHtmlWindow, historyCanBack, 0}}, - {3500, {wxHtmlWindow, historyCanForward, 0}}, - {3501, {wxHtmlWindow, historyClear, 0}}, - {3502, {wxHtmlWindow, historyForward, 0}}, - {3503, {wxHtmlWindow, loadFile, 1}}, - {3504, {wxHtmlWindow, loadPage, 1}}, - {3505, {wxHtmlWindow, selectAll, 0}}, - {3506, {wxHtmlWindow, selectionToText, 0}}, - {3507, {wxHtmlWindow, selectLine, 1}}, - {3508, {wxHtmlWindow, selectWord, 1}}, - {3509, {wxHtmlWindow, setBorders, 1}}, - {3510, {wxHtmlWindow, setFonts, 3}}, - {3511, {wxHtmlWindow, setPage, 1}}, - {3512, {wxHtmlWindow, setRelatedFrame, 2}}, - {3513, {wxHtmlWindow, setRelatedStatusBar, 1}}, - {3514, {wxHtmlWindow, toText, 0}}, - {3515, {wxHtmlWindow, 'Destroy', undefined}}, - {3516, {wxHtmlLinkEvent, getLinkInfo, 0}}, - {3517, {wxSystemSettings, getColour, 1}}, - {3518, {wxSystemSettings, getFont, 1}}, - {3519, {wxSystemSettings, getMetric, 2}}, - {3520, {wxSystemSettings, getScreenType, 0}}, - {3521, {wxSystemOptions, getOption, 1}}, - {3522, {wxSystemOptions, getOptionInt, 1}}, - {3523, {wxSystemOptions, hasOption, 1}}, - {3524, {wxSystemOptions, isFalse, 1}}, - {3525, {wxSystemOptions, setOption_2_1, 2}}, - {3526, {wxSystemOptions, setOption_2_0, 2}}, - {3527, {wxAuiNotebookEvent, setSelection, 1}}, - {3528, {wxAuiNotebookEvent, getSelection, 0}}, - {3529, {wxAuiNotebookEvent, setOldSelection, 1}}, - {3530, {wxAuiNotebookEvent, getOldSelection, 0}}, - {3531, {wxAuiNotebookEvent, setDragSource, 1}}, - {3532, {wxAuiNotebookEvent, getDragSource, 0}}, - {3533, {wxAuiManagerEvent, setManager, 1}}, - {3534, {wxAuiManagerEvent, getManager, 0}}, - {3535, {wxAuiManagerEvent, setPane, 1}}, - {3536, {wxAuiManagerEvent, getPane, 0}}, - {3537, {wxAuiManagerEvent, setButton, 1}}, - {3538, {wxAuiManagerEvent, getButton, 0}}, - {3539, {wxAuiManagerEvent, setDC, 1}}, - {3540, {wxAuiManagerEvent, getDC, 0}}, - {3541, {wxAuiManagerEvent, veto, 1}}, - {3542, {wxAuiManagerEvent, getVeto, 0}}, - {3543, {wxAuiManagerEvent, setCanVeto, 1}}, - {3544, {wxAuiManagerEvent, canVeto, 0}}, - {3545, {wxLogNull, new, 0}}, - {3546, {wxLogNull, 'Destroy', undefined}}, - {3547, {wxTaskBarIcon, new, 0}}, - {3548, {wxTaskBarIcon, destruct, 0}}, - {3549, {wxTaskBarIcon, popupMenu, 1}}, - {3550, {wxTaskBarIcon, removeIcon, 0}}, - {3551, {wxTaskBarIcon, setIcon, 2}}, - {3552, {wxLocale, new_0, 0}}, - {3554, {wxLocale, new_2, 2}}, - {3555, {wxLocale, destruct, 0}}, - {3557, {wxLocale, init, 1}}, - {3558, {wxLocale, addCatalog_1, 1}}, - {3559, {wxLocale, addCatalog_3, 3}}, - {3560, {wxLocale, addCatalogLookupPathPrefix, 1}}, - {3561, {wxLocale, getCanonicalName, 0}}, - {3562, {wxLocale, getLanguage, 0}}, - {3563, {wxLocale, getLanguageName, 1}}, - {3564, {wxLocale, getLocale, 0}}, - {3565, {wxLocale, getName, 0}}, - {3566, {wxLocale, getString_2, 2}}, - {3567, {wxLocale, getString_4, 4}}, - {3568, {wxLocale, getHeaderValue, 2}}, - {3569, {wxLocale, getSysName, 0}}, - {3570, {wxLocale, getSystemEncoding, 0}}, - {3571, {wxLocale, getSystemEncodingName, 0}}, - {3572, {wxLocale, getSystemLanguage, 0}}, - {3573, {wxLocale, isLoaded, 1}}, - {3574, {wxLocale, isOk, 0}}, - {3575, {wxActivateEvent, getActive, 0}}, - {3577, {wxPopupWindow, new_2, 2}}, - {3578, {wxPopupWindow, new_0, 0}}, - {3580, {wxPopupWindow, destruct, 0}}, - {3581, {wxPopupWindow, create, 2}}, - {3582, {wxPopupWindow, position, 2}}, - {3583, {wxPopupTransientWindow, new_0, 0}}, - {3584, {wxPopupTransientWindow, new_2, 2}}, - {3585, {wxPopupTransientWindow, destruct, 0}}, - {3586, {wxPopupTransientWindow, popup, 1}}, - {3587, {wxPopupTransientWindow, dismiss, 0}}, - {3588, {wxOverlay, new, 0}}, - {3589, {wxOverlay, destruct, 0}}, - {3590, {wxOverlay, reset, 0}}, - {3591, {wxDCOverlay, new_6, 6}}, - {3592, {wxDCOverlay, new_2, 2}}, - {3593, {wxDCOverlay, destruct, 0}}, - {3594, {wxDCOverlay, clear, 0}}, + {126, {wxWindow, dragAcceptFiles, 1}}, + {127, {wxWindow, enable, 1}}, + {128, {wxWindow, findFocus, 0}}, + {129, {wxWindow, findWindow_1_0, 1}}, + {130, {wxWindow, findWindow_1_1, 1}}, + {131, {wxWindow, findWindowById, 2}}, + {132, {wxWindow, findWindowByName, 2}}, + {133, {wxWindow, findWindowByLabel, 2}}, + {134, {wxWindow, fit, 0}}, + {135, {wxWindow, fitInside, 0}}, + {136, {wxWindow, freeze, 0}}, + {137, {wxWindow, getAcceleratorTable, 0}}, + {138, {wxWindow, getBackgroundColour, 0}}, + {139, {wxWindow, getBackgroundStyle, 0}}, + {140, {wxWindow, getBestSize, 0}}, + {142, {wxWindow, getCaret, 0}}, + {143, {wxWindow, getCapture, 0}}, + {144, {wxWindow, getCharHeight, 0}}, + {145, {wxWindow, getCharWidth, 0}}, + {146, {wxWindow, getChildren, 0}}, + {149, {wxWindow, getClientSize, 0}}, + {150, {wxWindow, getContainingSizer, 0}}, + {151, {wxWindow, getCursor, 0}}, + {152, {wxWindow, getDropTarget, 0}}, + {153, {wxWindow, getEventHandler, 0}}, + {154, {wxWindow, getExtraStyle, 0}}, + {155, {wxWindow, getFont, 0}}, + {156, {wxWindow, getForegroundColour, 0}}, + {157, {wxWindow, getGrandParent, 0}}, + {158, {wxWindow, getHandle, 0}}, + {159, {wxWindow, getHelpText, 0}}, + {160, {wxWindow, getId, 0}}, + {161, {wxWindow, getLabel, 0}}, + {162, {wxWindow, getMaxSize, 0}}, + {163, {wxWindow, getMinSize, 0}}, + {164, {wxWindow, getName, 0}}, + {165, {wxWindow, getParent, 0}}, + {167, {wxWindow, getPosition, 0}}, + {168, {wxWindow, getRect, 0}}, + {170, {wxWindow, getScreenPosition, 0}}, + {171, {wxWindow, getScreenRect, 0}}, + {172, {wxWindow, getScrollPos, 1}}, + {173, {wxWindow, getScrollRange, 1}}, + {174, {wxWindow, getScrollThumb, 1}}, + {176, {wxWindow, getSize, 0}}, + {177, {wxWindow, getSizer, 0}}, + {178, {wxWindow, getTextExtent, 4}}, + {179, {wxWindow, getToolTip, 0}}, + {180, {wxWindow, getUpdateRegion, 0}}, + {182, {wxWindow, getVirtualSize, 0}}, + {184, {wxWindow, getWindowStyleFlag, 0}}, + {185, {wxWindow, getWindowVariant, 0}}, + {186, {wxWindow, hasCapture, 0}}, + {187, {wxWindow, hasScrollbar, 1}}, + {188, {wxWindow, hasTransparentBackground, 0}}, + {189, {wxWindow, hide, 0}}, + {190, {wxWindow, inheritAttributes, 0}}, + {191, {wxWindow, initDialog, 0}}, + {192, {wxWindow, invalidateBestSize, 0}}, + {193, {wxWindow, isEnabled, 0}}, + {194, {wxWindow, isExposed_2, 2}}, + {195, {wxWindow, isExposed_4, 4}}, + {196, {wxWindow, isExposed_1_0, 1}}, + {197, {wxWindow, isExposed_1_1, 1}}, + {198, {wxWindow, isRetained, 0}}, + {199, {wxWindow, isShown, 0}}, + {200, {wxWindow, isTopLevel, 0}}, + {201, {wxWindow, layout, 0}}, + {202, {wxWindow, lineDown, 0}}, + {203, {wxWindow, lineUp, 0}}, + {204, {wxWindow, lower, 0}}, + {205, {wxWindow, makeModal, 1}}, + {206, {wxWindow, move_3, 3}}, + {207, {wxWindow, move_2, 2}}, + {208, {wxWindow, moveAfterInTabOrder, 1}}, + {209, {wxWindow, moveBeforeInTabOrder, 1}}, + {210, {wxWindow, navigate, 1}}, + {211, {wxWindow, pageDown, 0}}, + {212, {wxWindow, pageUp, 0}}, + {213, {wxWindow, popEventHandler, 1}}, + {214, {wxWindow, popupMenu_2, 2}}, + {215, {wxWindow, popupMenu_3, 3}}, + {216, {wxWindow, raise, 0}}, + {217, {wxWindow, refresh, 1}}, + {218, {wxWindow, refreshRect, 2}}, + {219, {wxWindow, releaseMouse, 0}}, + {220, {wxWindow, removeChild, 1}}, + {221, {wxWindow, reparent, 1}}, + {222, {wxWindow, screenToClient_2, 2}}, + {223, {wxWindow, screenToClient_1, 1}}, + {225, {wxWindow, scrollLines, 1}}, + {227, {wxWindow, scrollPages, 1}}, + {228, {wxWindow, scrollWindow, 3}}, + {229, {wxWindow, setAcceleratorTable, 1}}, + {230, {wxWindow, setAutoLayout, 1}}, + {231, {wxWindow, setBackgroundColour, 1}}, + {232, {wxWindow, setBackgroundStyle, 1}}, + {233, {wxWindow, setCaret, 1}}, + {234, {wxWindow, setClientSize_2, 2}}, + {235, {wxWindow, setClientSize_1_0, 1}}, + {236, {wxWindow, setClientSize_1_1, 1}}, + {237, {wxWindow, setContainingSizer, 1}}, + {238, {wxWindow, setCursor, 1}}, + {239, {wxWindow, setMaxSize, 1}}, + {240, {wxWindow, setMinSize, 1}}, + {241, {wxWindow, setOwnBackgroundColour, 1}}, + {242, {wxWindow, setOwnFont, 1}}, + {243, {wxWindow, setOwnForegroundColour, 1}}, + {244, {wxWindow, setDropTarget, 1}}, + {245, {wxWindow, setExtraStyle, 1}}, + {246, {wxWindow, setFocus, 0}}, + {247, {wxWindow, setFocusFromKbd, 0}}, + {248, {wxWindow, setFont, 1}}, + {249, {wxWindow, setForegroundColour, 1}}, + {250, {wxWindow, setHelpText, 1}}, + {251, {wxWindow, setId, 1}}, + {253, {wxWindow, setLabel, 1}}, + {254, {wxWindow, setName, 1}}, + {255, {wxWindow, setPalette, 1}}, + {256, {wxWindow, setScrollbar, 5}}, + {257, {wxWindow, setScrollPos, 3}}, + {258, {wxWindow, setSize_5, 5}}, + {259, {wxWindow, setSize_2_0, 2}}, + {260, {wxWindow, setSize_1, 1}}, + {261, {wxWindow, setSize_2_1, 2}}, + {262, {wxWindow, setSizeHints_3, 3}}, + {263, {wxWindow, setSizeHints_2, 2}}, + {264, {wxWindow, setSizer, 2}}, + {265, {wxWindow, setSizerAndFit, 2}}, + {266, {wxWindow, setThemeEnabled, 1}}, + {267, {wxWindow, setToolTip_1_0, 1}}, + {268, {wxWindow, setToolTip_1_1, 1}}, + {269, {wxWindow, setVirtualSize_1, 1}}, + {270, {wxWindow, setVirtualSize_2, 2}}, + {271, {wxWindow, setVirtualSizeHints_3, 3}}, + {272, {wxWindow, setVirtualSizeHints_2, 2}}, + {273, {wxWindow, setWindowStyle, 1}}, + {274, {wxWindow, setWindowStyleFlag, 1}}, + {275, {wxWindow, setWindowVariant, 1}}, + {276, {wxWindow, shouldInheritColours, 0}}, + {277, {wxWindow, show, 1}}, + {278, {wxWindow, thaw, 0}}, + {279, {wxWindow, transferDataFromWindow, 0}}, + {280, {wxWindow, transferDataToWindow, 0}}, + {281, {wxWindow, update, 0}}, + {282, {wxWindow, updateWindowUI, 1}}, + {283, {wxWindow, validate, 0}}, + {284, {wxWindow, warpPointer, 2}}, + {285, {wxWindow, setTransparent, 1}}, + {286, {wxWindow, canSetTransparent, 0}}, + {287, {wxWindow, isDoubleBuffered, 0}}, + {288, {wxWindow, setDoubleBuffered, 1}}, + {289, {wxTopLevelWindow, getIcon, 0}}, + {290, {wxTopLevelWindow, getIcons, 0}}, + {291, {wxTopLevelWindow, getTitle, 0}}, + {292, {wxTopLevelWindow, isActive, 0}}, + {293, {wxTopLevelWindow, iconize, 1}}, + {294, {wxTopLevelWindow, isFullScreen, 0}}, + {295, {wxTopLevelWindow, isIconized, 0}}, + {296, {wxTopLevelWindow, isMaximized, 0}}, + {297, {wxTopLevelWindow, maximize, 1}}, + {298, {wxTopLevelWindow, requestUserAttention, 1}}, + {299, {wxTopLevelWindow, setIcon, 1}}, + {300, {wxTopLevelWindow, setIcons, 1}}, + {301, {wxTopLevelWindow, centerOnScreen, 1}}, + {302, {wxTopLevelWindow, centreOnScreen, 1}}, + {304, {wxTopLevelWindow, setShape, 1}}, + {305, {wxTopLevelWindow, setTitle, 1}}, + {306, {wxTopLevelWindow, showFullScreen, 2}}, + {308, {wxFrame, new_4, 4}}, + {309, {wxFrame, new_0, 0}}, + {311, {wxFrame, destruct, 0}}, + {312, {wxFrame, create, 4}}, + {313, {wxFrame, createStatusBar, 1}}, + {314, {wxFrame, createToolBar, 1}}, + {315, {wxFrame, getClientAreaOrigin, 0}}, + {316, {wxFrame, getMenuBar, 0}}, + {317, {wxFrame, getStatusBar, 0}}, + {318, {wxFrame, getStatusBarPane, 0}}, + {319, {wxFrame, getToolBar, 0}}, + {320, {wxFrame, processCommand, 1}}, + {321, {wxFrame, sendSizeEvent, 0}}, + {322, {wxFrame, setMenuBar, 1}}, + {323, {wxFrame, setStatusBar, 1}}, + {324, {wxFrame, setStatusBarPane, 1}}, + {325, {wxFrame, setStatusText, 2}}, + {326, {wxFrame, setStatusWidths, 2}}, + {327, {wxFrame, setToolBar, 1}}, + {328, {wxMiniFrame, new_0, 0}}, + {329, {wxMiniFrame, new_4, 4}}, + {330, {wxMiniFrame, create, 4}}, + {331, {wxMiniFrame, 'Destroy', undefined}}, + {332, {wxSplashScreen, new_0, 0}}, + {333, {wxSplashScreen, new_6, 6}}, + {334, {wxSplashScreen, destruct, 0}}, + {335, {wxSplashScreen, getSplashStyle, 0}}, + {336, {wxSplashScreen, getTimeout, 0}}, + {337, {wxPanel, new_0, 0}}, + {338, {wxPanel, new_6, 6}}, + {339, {wxPanel, new_2, 2}}, + {340, {wxPanel, destruct, 0}}, + {341, {wxPanel, initDialog, 0}}, + {342, {wxPanel, setFocusIgnoringChildren, 0}}, + {343, {wxScrolledWindow, new_0, 0}}, + {344, {wxScrolledWindow, new_2, 2}}, + {345, {wxScrolledWindow, destruct, 0}}, + {346, {wxScrolledWindow, calcScrolledPosition_4, 4}}, + {347, {wxScrolledWindow, calcScrolledPosition_1, 1}}, + {348, {wxScrolledWindow, calcUnscrolledPosition_4, 4}}, + {349, {wxScrolledWindow, calcUnscrolledPosition_1, 1}}, + {350, {wxScrolledWindow, enableScrolling, 2}}, + {351, {wxScrolledWindow, getScrollPixelsPerUnit, 2}}, + {352, {wxScrolledWindow, getViewStart, 2}}, + {353, {wxScrolledWindow, doPrepareDC, 1}}, + {354, {wxScrolledWindow, prepareDC, 1}}, + {355, {wxScrolledWindow, scroll, 2}}, + {356, {wxScrolledWindow, setScrollbars, 5}}, + {357, {wxScrolledWindow, setScrollRate, 2}}, + {358, {wxScrolledWindow, setTargetWindow, 1}}, + {359, {wxSashWindow, new_0, 0}}, + {360, {wxSashWindow, new_2, 2}}, + {361, {wxSashWindow, destruct, 0}}, + {362, {wxSashWindow, getSashVisible, 1}}, + {363, {wxSashWindow, getMaximumSizeX, 0}}, + {364, {wxSashWindow, getMaximumSizeY, 0}}, + {365, {wxSashWindow, getMinimumSizeX, 0}}, + {366, {wxSashWindow, getMinimumSizeY, 0}}, + {367, {wxSashWindow, setMaximumSizeX, 1}}, + {368, {wxSashWindow, setMaximumSizeY, 1}}, + {369, {wxSashWindow, setMinimumSizeX, 1}}, + {370, {wxSashWindow, setMinimumSizeY, 1}}, + {371, {wxSashWindow, setSashVisible, 2}}, + {372, {wxSashLayoutWindow, new_0, 0}}, + {373, {wxSashLayoutWindow, new_2, 2}}, + {374, {wxSashLayoutWindow, create, 2}}, + {375, {wxSashLayoutWindow, getAlignment, 0}}, + {376, {wxSashLayoutWindow, getOrientation, 0}}, + {377, {wxSashLayoutWindow, setAlignment, 1}}, + {378, {wxSashLayoutWindow, setDefaultSize, 1}}, + {379, {wxSashLayoutWindow, setOrientation, 1}}, + {380, {wxSashLayoutWindow, 'Destroy', undefined}}, + {381, {wxGrid, new_0, 0}}, + {382, {wxGrid, new_3, 3}}, + {383, {wxGrid, new_4, 4}}, + {384, {wxGrid, destruct, 0}}, + {385, {wxGrid, appendCols, 1}}, + {386, {wxGrid, appendRows, 1}}, + {387, {wxGrid, autoSize, 0}}, + {388, {wxGrid, autoSizeColumn, 2}}, + {389, {wxGrid, autoSizeColumns, 1}}, + {390, {wxGrid, autoSizeRow, 2}}, + {391, {wxGrid, autoSizeRows, 1}}, + {392, {wxGrid, beginBatch, 0}}, + {393, {wxGrid, blockToDeviceRect, 2}}, + {394, {wxGrid, canDragColSize, 0}}, + {395, {wxGrid, canDragRowSize, 0}}, + {396, {wxGrid, canDragGridSize, 0}}, + {397, {wxGrid, canEnableCellControl, 0}}, + {398, {wxGrid, cellToRect_2, 2}}, + {399, {wxGrid, cellToRect_1, 1}}, + {400, {wxGrid, clearGrid, 0}}, + {401, {wxGrid, clearSelection, 0}}, + {402, {wxGrid, createGrid, 3}}, + {403, {wxGrid, deleteCols, 1}}, + {404, {wxGrid, deleteRows, 1}}, + {405, {wxGrid, disableCellEditControl, 0}}, + {406, {wxGrid, disableDragColSize, 0}}, + {407, {wxGrid, disableDragGridSize, 0}}, + {408, {wxGrid, disableDragRowSize, 0}}, + {409, {wxGrid, enableCellEditControl, 1}}, + {410, {wxGrid, enableDragColSize, 1}}, + {411, {wxGrid, enableDragGridSize, 1}}, + {412, {wxGrid, enableDragRowSize, 1}}, + {413, {wxGrid, enableEditing, 1}}, + {414, {wxGrid, enableGridLines, 1}}, + {415, {wxGrid, endBatch, 0}}, + {416, {wxGrid, fit, 0}}, + {417, {wxGrid, forceRefresh, 0}}, + {418, {wxGrid, getBatchCount, 0}}, + {419, {wxGrid, getCellAlignment, 4}}, + {420, {wxGrid, getCellBackgroundColour, 2}}, + {421, {wxGrid, getCellEditor, 2}}, + {422, {wxGrid, getCellFont, 2}}, + {423, {wxGrid, getCellRenderer, 2}}, + {424, {wxGrid, getCellTextColour, 2}}, + {425, {wxGrid, getCellValue_2, 2}}, + {426, {wxGrid, getCellValue_1, 1}}, + {427, {wxGrid, getColLabelAlignment, 2}}, + {428, {wxGrid, getColLabelSize, 0}}, + {429, {wxGrid, getColLabelValue, 1}}, + {430, {wxGrid, getColMinimalAcceptableWidth, 0}}, + {431, {wxGrid, getDefaultCellAlignment, 2}}, + {432, {wxGrid, getDefaultCellBackgroundColour, 0}}, + {433, {wxGrid, getDefaultCellFont, 0}}, + {434, {wxGrid, getDefaultCellTextColour, 0}}, + {435, {wxGrid, getDefaultColLabelSize, 0}}, + {436, {wxGrid, getDefaultColSize, 0}}, + {437, {wxGrid, getDefaultEditor, 0}}, + {438, {wxGrid, getDefaultEditorForCell_2, 2}}, + {439, {wxGrid, getDefaultEditorForCell_1, 1}}, + {440, {wxGrid, getDefaultEditorForType, 1}}, + {441, {wxGrid, getDefaultRenderer, 0}}, + {442, {wxGrid, getDefaultRendererForCell, 2}}, + {443, {wxGrid, getDefaultRendererForType, 1}}, + {444, {wxGrid, getDefaultRowLabelSize, 0}}, + {445, {wxGrid, getDefaultRowSize, 0}}, + {446, {wxGrid, getGridCursorCol, 0}}, + {447, {wxGrid, getGridCursorRow, 0}}, + {448, {wxGrid, getGridLineColour, 0}}, + {449, {wxGrid, gridLinesEnabled, 0}}, + {450, {wxGrid, getLabelBackgroundColour, 0}}, + {451, {wxGrid, getLabelFont, 0}}, + {452, {wxGrid, getLabelTextColour, 0}}, + {453, {wxGrid, getNumberCols, 0}}, + {454, {wxGrid, getNumberRows, 0}}, + {455, {wxGrid, getOrCreateCellAttr, 2}}, + {456, {wxGrid, getRowMinimalAcceptableHeight, 0}}, + {457, {wxGrid, getRowLabelAlignment, 2}}, + {458, {wxGrid, getRowLabelSize, 0}}, + {459, {wxGrid, getRowLabelValue, 1}}, + {460, {wxGrid, getRowSize, 1}}, + {461, {wxGrid, getScrollLineX, 0}}, + {462, {wxGrid, getScrollLineY, 0}}, + {463, {wxGrid, getSelectedCells, 0}}, + {464, {wxGrid, getSelectedCols, 0}}, + {465, {wxGrid, getSelectedRows, 0}}, + {466, {wxGrid, getSelectionBackground, 0}}, + {467, {wxGrid, getSelectionBlockTopLeft, 0}}, + {468, {wxGrid, getSelectionBlockBottomRight, 0}}, + {469, {wxGrid, getSelectionForeground, 0}}, + {470, {wxGrid, getViewWidth, 0}}, + {471, {wxGrid, getGridWindow, 0}}, + {472, {wxGrid, getGridRowLabelWindow, 0}}, + {473, {wxGrid, getGridColLabelWindow, 0}}, + {474, {wxGrid, getGridCornerLabelWindow, 0}}, + {475, {wxGrid, hideCellEditControl, 0}}, + {476, {wxGrid, insertCols, 1}}, + {477, {wxGrid, insertRows, 1}}, + {478, {wxGrid, isCellEditControlEnabled, 0}}, + {479, {wxGrid, isCurrentCellReadOnly, 0}}, + {480, {wxGrid, isEditable, 0}}, + {481, {wxGrid, isInSelection_2, 2}}, + {482, {wxGrid, isInSelection_1, 1}}, + {483, {wxGrid, isReadOnly, 2}}, + {484, {wxGrid, isSelection, 0}}, + {485, {wxGrid, isVisible_3, 3}}, + {486, {wxGrid, isVisible_2, 2}}, + {487, {wxGrid, makeCellVisible_2, 2}}, + {488, {wxGrid, makeCellVisible_1, 1}}, + {489, {wxGrid, moveCursorDown, 1}}, + {490, {wxGrid, moveCursorLeft, 1}}, + {491, {wxGrid, moveCursorRight, 1}}, + {492, {wxGrid, moveCursorUp, 1}}, + {493, {wxGrid, moveCursorDownBlock, 1}}, + {494, {wxGrid, moveCursorLeftBlock, 1}}, + {495, {wxGrid, moveCursorRightBlock, 1}}, + {496, {wxGrid, moveCursorUpBlock, 1}}, + {497, {wxGrid, movePageDown, 0}}, + {498, {wxGrid, movePageUp, 0}}, + {499, {wxGrid, registerDataType, 3}}, + {500, {wxGrid, saveEditControlValue, 0}}, + {501, {wxGrid, selectAll, 0}}, + {502, {wxGrid, selectBlock_5, 5}}, + {503, {wxGrid, selectBlock_3, 3}}, + {504, {wxGrid, selectCol, 2}}, + {505, {wxGrid, selectRow, 2}}, + {506, {wxGrid, setCellAlignment_4, 4}}, + {507, {wxGrid, setCellAlignment_3, 3}}, + {508, {wxGrid, setCellAlignment_1, 1}}, + {509, {wxGrid, setCellBackgroundColour_3_0, 3}}, + {510, {wxGrid, setCellBackgroundColour_1, 1}}, + {511, {wxGrid, setCellBackgroundColour_3_1, 3}}, + {512, {wxGrid, setCellEditor, 3}}, + {513, {wxGrid, setCellFont, 3}}, + {514, {wxGrid, setCellRenderer, 3}}, + {515, {wxGrid, setCellTextColour_3_0, 3}}, + {516, {wxGrid, setCellTextColour_3_1, 3}}, + {517, {wxGrid, setCellTextColour_1, 1}}, + {518, {wxGrid, setCellValue_3_0, 3}}, + {519, {wxGrid, setCellValue_2, 2}}, + {520, {wxGrid, setCellValue_3_1, 3}}, + {521, {wxGrid, setColAttr, 2}}, + {522, {wxGrid, setColFormatBool, 1}}, + {523, {wxGrid, setColFormatNumber, 1}}, + {524, {wxGrid, setColFormatFloat, 2}}, + {525, {wxGrid, setColFormatCustom, 2}}, + {526, {wxGrid, setColLabelAlignment, 2}}, + {527, {wxGrid, setColLabelSize, 1}}, + {528, {wxGrid, setColLabelValue, 2}}, + {529, {wxGrid, setColMinimalWidth, 2}}, + {530, {wxGrid, setColMinimalAcceptableWidth, 1}}, + {531, {wxGrid, setColSize, 2}}, + {532, {wxGrid, setDefaultCellAlignment, 2}}, + {533, {wxGrid, setDefaultCellBackgroundColour, 1}}, + {534, {wxGrid, setDefaultCellFont, 1}}, + {535, {wxGrid, setDefaultCellTextColour, 1}}, + {536, {wxGrid, setDefaultEditor, 1}}, + {537, {wxGrid, setDefaultRenderer, 1}}, + {538, {wxGrid, setDefaultColSize, 2}}, + {539, {wxGrid, setDefaultRowSize, 2}}, + {540, {wxGrid, setGridCursor, 2}}, + {541, {wxGrid, setGridLineColour, 1}}, + {542, {wxGrid, setLabelBackgroundColour, 1}}, + {543, {wxGrid, setLabelFont, 1}}, + {544, {wxGrid, setLabelTextColour, 1}}, + {545, {wxGrid, setMargins, 2}}, + {546, {wxGrid, setReadOnly, 3}}, + {547, {wxGrid, setRowAttr, 2}}, + {548, {wxGrid, setRowLabelAlignment, 2}}, + {549, {wxGrid, setRowLabelSize, 1}}, + {550, {wxGrid, setRowLabelValue, 2}}, + {551, {wxGrid, setRowMinimalHeight, 2}}, + {552, {wxGrid, setRowMinimalAcceptableHeight, 1}}, + {553, {wxGrid, setRowSize, 2}}, + {554, {wxGrid, setScrollLineX, 1}}, + {555, {wxGrid, setScrollLineY, 1}}, + {556, {wxGrid, setSelectionBackground, 1}}, + {557, {wxGrid, setSelectionForeground, 1}}, + {558, {wxGrid, setSelectionMode, 1}}, + {559, {wxGrid, showCellEditControl, 0}}, + {560, {wxGrid, xToCol, 2}}, + {561, {wxGrid, xToEdgeOfCol, 1}}, + {562, {wxGrid, yToEdgeOfRow, 1}}, + {563, {wxGrid, yToRow, 1}}, + {564, {wxGridCellRenderer, draw, 7}}, + {565, {wxGridCellRenderer, getBestSize, 5}}, + {566, {wxGridCellEditor, create, 3}}, + {567, {wxGridCellEditor, isCreated, 0}}, + {568, {wxGridCellEditor, setSize, 1}}, + {569, {wxGridCellEditor, show, 2}}, + {570, {wxGridCellEditor, paintBackground, 2}}, + {571, {wxGridCellEditor, beginEdit, 3}}, + {572, {wxGridCellEditor, endEdit, 3}}, + {573, {wxGridCellEditor, reset, 0}}, + {574, {wxGridCellEditor, startingKey, 1}}, + {575, {wxGridCellEditor, startingClick, 0}}, + {576, {wxGridCellEditor, handleReturn, 1}}, + {577, {wxGridCellBoolRenderer, new, 0}}, + {578, {wxGridCellBoolRenderer, 'Destroy', undefined}}, + {579, {wxGridCellBoolEditor, new, 0}}, + {580, {wxGridCellBoolEditor, isTrueValue, 1}}, + {581, {wxGridCellBoolEditor, useStringValues, 1}}, + {582, {wxGridCellBoolEditor, 'Destroy', undefined}}, + {583, {wxGridCellFloatRenderer, new, 1}}, + {584, {wxGridCellFloatRenderer, getPrecision, 0}}, + {585, {wxGridCellFloatRenderer, getWidth, 0}}, + {586, {wxGridCellFloatRenderer, setParameters, 1}}, + {587, {wxGridCellFloatRenderer, setPrecision, 1}}, + {588, {wxGridCellFloatRenderer, setWidth, 1}}, + {589, {wxGridCellFloatRenderer, 'Destroy', undefined}}, + {590, {wxGridCellFloatEditor, new, 1}}, + {591, {wxGridCellFloatEditor, setParameters, 1}}, + {592, {wxGridCellFloatEditor, 'Destroy', undefined}}, + {593, {wxGridCellStringRenderer, new, 0}}, + {594, {wxGridCellStringRenderer, 'Destroy', undefined}}, + {595, {wxGridCellTextEditor, new, 0}}, + {596, {wxGridCellTextEditor, setParameters, 1}}, + {597, {wxGridCellTextEditor, 'Destroy', undefined}}, + {599, {wxGridCellChoiceEditor, new, 2}}, + {600, {wxGridCellChoiceEditor, setParameters, 1}}, + {601, {wxGridCellChoiceEditor, 'Destroy', undefined}}, + {602, {wxGridCellNumberRenderer, new, 0}}, + {603, {wxGridCellNumberRenderer, 'Destroy', undefined}}, + {604, {wxGridCellNumberEditor, new, 1}}, + {605, {wxGridCellNumberEditor, getValue, 0}}, + {606, {wxGridCellNumberEditor, setParameters, 1}}, + {607, {wxGridCellNumberEditor, 'Destroy', undefined}}, + {608, {wxGridCellAttr, setTextColour, 1}}, + {609, {wxGridCellAttr, setBackgroundColour, 1}}, + {610, {wxGridCellAttr, setFont, 1}}, + {611, {wxGridCellAttr, setAlignment, 2}}, + {612, {wxGridCellAttr, setReadOnly, 1}}, + {613, {wxGridCellAttr, setRenderer, 1}}, + {614, {wxGridCellAttr, setEditor, 1}}, + {615, {wxGridCellAttr, hasTextColour, 0}}, + {616, {wxGridCellAttr, hasBackgroundColour, 0}}, + {617, {wxGridCellAttr, hasFont, 0}}, + {618, {wxGridCellAttr, hasAlignment, 0}}, + {619, {wxGridCellAttr, hasRenderer, 0}}, + {620, {wxGridCellAttr, hasEditor, 0}}, + {621, {wxGridCellAttr, getTextColour, 0}}, + {622, {wxGridCellAttr, getBackgroundColour, 0}}, + {623, {wxGridCellAttr, getFont, 0}}, + {624, {wxGridCellAttr, getAlignment, 2}}, + {625, {wxGridCellAttr, getRenderer, 3}}, + {626, {wxGridCellAttr, getEditor, 3}}, + {627, {wxGridCellAttr, isReadOnly, 0}}, + {628, {wxGridCellAttr, setDefAttr, 1}}, + {629, {wxDC, blit, 5}}, + {630, {wxDC, calcBoundingBox, 2}}, + {631, {wxDC, clear, 0}}, + {632, {wxDC, computeScaleAndOrigin, 0}}, + {633, {wxDC, crossHair, 1}}, + {634, {wxDC, destroyClippingRegion, 0}}, + {635, {wxDC, deviceToLogicalX, 1}}, + {636, {wxDC, deviceToLogicalXRel, 1}}, + {637, {wxDC, deviceToLogicalY, 1}}, + {638, {wxDC, deviceToLogicalYRel, 1}}, + {639, {wxDC, drawArc, 3}}, + {640, {wxDC, drawBitmap, 3}}, + {641, {wxDC, drawCheckMark, 1}}, + {642, {wxDC, drawCircle, 2}}, + {644, {wxDC, drawEllipse_2, 2}}, + {645, {wxDC, drawEllipse_1, 1}}, + {646, {wxDC, drawEllipticArc, 4}}, + {647, {wxDC, drawIcon, 2}}, + {648, {wxDC, drawLabel, 3}}, + {649, {wxDC, drawLine, 2}}, + {650, {wxDC, drawLines, 3}}, + {652, {wxDC, drawPolygon, 3}}, + {654, {wxDC, drawPoint, 1}}, + {656, {wxDC, drawRectangle_2, 2}}, + {657, {wxDC, drawRectangle_1, 1}}, + {658, {wxDC, drawRotatedText, 3}}, + {660, {wxDC, drawRoundedRectangle_3, 3}}, + {661, {wxDC, drawRoundedRectangle_2, 2}}, + {662, {wxDC, drawText, 2}}, + {663, {wxDC, endDoc, 0}}, + {664, {wxDC, endPage, 0}}, + {665, {wxDC, floodFill, 3}}, + {666, {wxDC, getBackground, 0}}, + {667, {wxDC, getBackgroundMode, 0}}, + {668, {wxDC, getBrush, 0}}, + {669, {wxDC, getCharHeight, 0}}, + {670, {wxDC, getCharWidth, 0}}, + {671, {wxDC, getClippingBox, 4}}, + {673, {wxDC, getFont, 0}}, + {674, {wxDC, getLayoutDirection, 0}}, + {675, {wxDC, getLogicalFunction, 0}}, + {676, {wxDC, getMapMode, 0}}, + {677, {wxDC, getMultiLineTextExtent_4, 4}}, + {678, {wxDC, getMultiLineTextExtent_1, 1}}, + {679, {wxDC, getPartialTextExtents, 2}}, + {680, {wxDC, getPen, 0}}, + {681, {wxDC, getPixel, 2}}, + {682, {wxDC, getPPI, 0}}, + {684, {wxDC, getSize, 0}}, + {686, {wxDC, getSizeMM, 0}}, + {687, {wxDC, getTextBackground, 0}}, + {688, {wxDC, getTextExtent_4, 4}}, + {689, {wxDC, getTextExtent_1, 1}}, + {691, {wxDC, getTextForeground, 0}}, + {692, {wxDC, getUserScale, 2}}, + {693, {wxDC, gradientFillConcentric_3, 3}}, + {694, {wxDC, gradientFillConcentric_4, 4}}, + {695, {wxDC, gradientFillLinear, 4}}, + {696, {wxDC, logicalToDeviceX, 1}}, + {697, {wxDC, logicalToDeviceXRel, 1}}, + {698, {wxDC, logicalToDeviceY, 1}}, + {699, {wxDC, logicalToDeviceYRel, 1}}, + {700, {wxDC, maxX, 0}}, + {701, {wxDC, maxY, 0}}, + {702, {wxDC, minX, 0}}, + {703, {wxDC, minY, 0}}, + {704, {wxDC, isOk, 0}}, + {705, {wxDC, resetBoundingBox, 0}}, + {706, {wxDC, setAxisOrientation, 2}}, + {707, {wxDC, setBackground, 1}}, + {708, {wxDC, setBackgroundMode, 1}}, + {709, {wxDC, setBrush, 1}}, + {711, {wxDC, setClippingRegion_2, 2}}, + {712, {wxDC, setClippingRegion_1_1, 1}}, + {713, {wxDC, setClippingRegion_1_0, 1}}, + {714, {wxDC, setDeviceOrigin, 2}}, + {715, {wxDC, setFont, 1}}, + {716, {wxDC, setLayoutDirection, 1}}, + {717, {wxDC, setLogicalFunction, 1}}, + {718, {wxDC, setMapMode, 1}}, + {719, {wxDC, setPalette, 1}}, + {720, {wxDC, setPen, 1}}, + {721, {wxDC, setTextBackground, 1}}, + {722, {wxDC, setTextForeground, 1}}, + {723, {wxDC, setUserScale, 2}}, + {724, {wxDC, startDoc, 1}}, + {725, {wxDC, startPage, 0}}, + {726, {wxMirrorDC, new, 2}}, + {727, {wxMirrorDC, 'Destroy', undefined}}, + {728, {wxScreenDC, new, 0}}, + {729, {wxScreenDC, destruct, 0}}, + {730, {wxPostScriptDC, new_0, 0}}, + {731, {wxPostScriptDC, new_1, 1}}, + {732, {wxPostScriptDC, destruct, 0}}, + {733, {wxPostScriptDC, setResolution, 1}}, + {734, {wxPostScriptDC, getResolution, 0}}, + {735, {wxWindowDC, new_0, 0}}, + {736, {wxWindowDC, new_1, 1}}, + {737, {wxWindowDC, destruct, 0}}, + {738, {wxClientDC, new_0, 0}}, + {739, {wxClientDC, new_1, 1}}, + {740, {wxClientDC, 'Destroy', undefined}}, + {741, {wxPaintDC, new_0, 0}}, + {742, {wxPaintDC, new_1, 1}}, + {743, {wxPaintDC, 'Destroy', undefined}}, + {745, {wxMemoryDC, new_1_0, 1}}, + {746, {wxMemoryDC, new_1_1, 1}}, + {747, {wxMemoryDC, new_0, 0}}, + {749, {wxMemoryDC, destruct, 0}}, + {750, {wxMemoryDC, selectObject, 1}}, + {751, {wxMemoryDC, selectObjectAsSource, 1}}, + {752, {wxBufferedDC, new_0, 0}}, + {753, {wxBufferedDC, new_2, 2}}, + {754, {wxBufferedDC, new_3, 3}}, + {755, {wxBufferedDC, destruct, 0}}, + {756, {wxBufferedDC, init_2, 2}}, + {757, {wxBufferedDC, init_3, 3}}, + {758, {wxBufferedPaintDC, new_3, 3}}, + {759, {wxBufferedPaintDC, new_2, 2}}, + {760, {wxBufferedPaintDC, destruct, 0}}, + {761, {wxGraphicsObject, destruct, 0}}, + {762, {wxGraphicsObject, getRenderer, 0}}, + {763, {wxGraphicsObject, isNull, 0}}, + {764, {wxGraphicsContext, destruct, 0}}, + {765, {wxGraphicsContext, create_1_1, 1}}, + {766, {wxGraphicsContext, create_1_0, 1}}, + {767, {wxGraphicsContext, create_0, 0}}, + {768, {wxGraphicsContext, createPen, 1}}, + {769, {wxGraphicsContext, createBrush, 1}}, + {770, {wxGraphicsContext, createRadialGradientBrush, 7}}, + {771, {wxGraphicsContext, createLinearGradientBrush, 6}}, + {772, {wxGraphicsContext, createFont, 2}}, + {773, {wxGraphicsContext, createMatrix, 1}}, + {774, {wxGraphicsContext, createPath, 0}}, + {775, {wxGraphicsContext, clip_1, 1}}, + {776, {wxGraphicsContext, clip_4, 4}}, + {777, {wxGraphicsContext, resetClip, 0}}, + {778, {wxGraphicsContext, drawBitmap, 5}}, + {779, {wxGraphicsContext, drawEllipse, 4}}, + {780, {wxGraphicsContext, drawIcon, 5}}, + {781, {wxGraphicsContext, drawLines, 3}}, + {782, {wxGraphicsContext, drawPath, 2}}, + {783, {wxGraphicsContext, drawRectangle, 4}}, + {784, {wxGraphicsContext, drawRoundedRectangle, 5}}, + {785, {wxGraphicsContext, drawText_3, 3}}, + {786, {wxGraphicsContext, drawText_4_0, 4}}, + {787, {wxGraphicsContext, drawText_4_1, 4}}, + {788, {wxGraphicsContext, drawText_5, 5}}, + {789, {wxGraphicsContext, fillPath, 2}}, + {790, {wxGraphicsContext, strokePath, 1}}, + {791, {wxGraphicsContext, getPartialTextExtents, 2}}, + {792, {wxGraphicsContext, getTextExtent, 5}}, + {793, {wxGraphicsContext, rotate, 1}}, + {794, {wxGraphicsContext, scale, 2}}, + {795, {wxGraphicsContext, translate, 2}}, + {796, {wxGraphicsContext, getTransform, 0}}, + {797, {wxGraphicsContext, setTransform, 1}}, + {798, {wxGraphicsContext, concatTransform, 1}}, + {799, {wxGraphicsContext, setBrush_1_1, 1}}, + {800, {wxGraphicsContext, setBrush_1_0, 1}}, + {801, {wxGraphicsContext, setFont_1, 1}}, + {802, {wxGraphicsContext, setFont_2, 2}}, + {803, {wxGraphicsContext, setPen_1_0, 1}}, + {804, {wxGraphicsContext, setPen_1_1, 1}}, + {805, {wxGraphicsContext, strokeLine, 4}}, + {806, {wxGraphicsContext, strokeLines, 2}}, + {808, {wxGraphicsMatrix, concat, 1}}, + {810, {wxGraphicsMatrix, get, 1}}, + {811, {wxGraphicsMatrix, invert, 0}}, + {812, {wxGraphicsMatrix, isEqual, 1}}, + {814, {wxGraphicsMatrix, isIdentity, 0}}, + {815, {wxGraphicsMatrix, rotate, 1}}, + {816, {wxGraphicsMatrix, scale, 2}}, + {817, {wxGraphicsMatrix, translate, 2}}, + {818, {wxGraphicsMatrix, set, 1}}, + {819, {wxGraphicsMatrix, transformPoint, 2}}, + {820, {wxGraphicsMatrix, transformDistance, 2}}, + {821, {wxGraphicsPath, moveToPoint_2, 2}}, + {822, {wxGraphicsPath, moveToPoint_1, 1}}, + {823, {wxGraphicsPath, addArc_6, 6}}, + {824, {wxGraphicsPath, addArc_5, 5}}, + {825, {wxGraphicsPath, addArcToPoint, 5}}, + {826, {wxGraphicsPath, addCircle, 3}}, + {827, {wxGraphicsPath, addCurveToPoint_6, 6}}, + {828, {wxGraphicsPath, addCurveToPoint_3, 3}}, + {829, {wxGraphicsPath, addEllipse, 4}}, + {830, {wxGraphicsPath, addLineToPoint_2, 2}}, + {831, {wxGraphicsPath, addLineToPoint_1, 1}}, + {832, {wxGraphicsPath, addPath, 1}}, + {833, {wxGraphicsPath, addQuadCurveToPoint, 4}}, + {834, {wxGraphicsPath, addRectangle, 4}}, + {835, {wxGraphicsPath, addRoundedRectangle, 5}}, + {836, {wxGraphicsPath, closeSubpath, 0}}, + {837, {wxGraphicsPath, contains_3, 3}}, + {838, {wxGraphicsPath, contains_2, 2}}, + {840, {wxGraphicsPath, getBox, 0}}, + {842, {wxGraphicsPath, getCurrentPoint, 0}}, + {843, {wxGraphicsPath, transform, 1}}, + {844, {wxGraphicsRenderer, getDefaultRenderer, 0}}, + {845, {wxGraphicsRenderer, createContext_1_1, 1}}, + {846, {wxGraphicsRenderer, createContext_1_0, 1}}, + {847, {wxGraphicsRenderer, createPen, 1}}, + {848, {wxGraphicsRenderer, createBrush, 1}}, + {849, {wxGraphicsRenderer, createLinearGradientBrush, 6}}, + {850, {wxGraphicsRenderer, createRadialGradientBrush, 7}}, + {851, {wxGraphicsRenderer, createFont, 2}}, + {852, {wxGraphicsRenderer, createMatrix, 1}}, + {853, {wxGraphicsRenderer, createPath, 0}}, + {855, {wxMenuBar, new_1, 1}}, + {857, {wxMenuBar, new_0, 0}}, + {859, {wxMenuBar, destruct, 0}}, + {860, {wxMenuBar, append, 2}}, + {861, {wxMenuBar, check, 2}}, + {862, {wxMenuBar, enable_2, 2}}, + {863, {wxMenuBar, enable_1, 1}}, + {864, {wxMenuBar, enableTop, 2}}, + {865, {wxMenuBar, findMenu, 1}}, + {866, {wxMenuBar, findMenuItem, 2}}, + {867, {wxMenuBar, findItem, 2}}, + {868, {wxMenuBar, getHelpString, 1}}, + {869, {wxMenuBar, getLabel_1, 1}}, + {870, {wxMenuBar, getLabel_0, 0}}, + {871, {wxMenuBar, getLabelTop, 1}}, + {872, {wxMenuBar, getMenu, 1}}, + {873, {wxMenuBar, getMenuCount, 0}}, + {874, {wxMenuBar, insert, 3}}, + {875, {wxMenuBar, isChecked, 1}}, + {876, {wxMenuBar, isEnabled_1, 1}}, + {877, {wxMenuBar, isEnabled_0, 0}}, + {878, {wxMenuBar, remove, 1}}, + {879, {wxMenuBar, replace, 3}}, + {880, {wxMenuBar, setHelpString, 2}}, + {881, {wxMenuBar, setLabel_2, 2}}, + {882, {wxMenuBar, setLabel_1, 1}}, + {883, {wxMenuBar, setLabelTop, 2}}, + {884, {wxControl, getLabel, 0}}, + {885, {wxControl, setLabel, 1}}, + {886, {wxControlWithItems, append_1, 1}}, + {887, {wxControlWithItems, append_2, 2}}, + {888, {wxControlWithItems, appendStrings_1, 1}}, + {889, {wxControlWithItems, clear, 0}}, + {890, {wxControlWithItems, delete, 1}}, + {891, {wxControlWithItems, findString, 2}}, + {892, {wxControlWithItems, getClientData, 1}}, + {893, {wxControlWithItems, setClientData, 2}}, + {894, {wxControlWithItems, getCount, 0}}, + {895, {wxControlWithItems, getSelection, 0}}, + {896, {wxControlWithItems, getString, 1}}, + {897, {wxControlWithItems, getStringSelection, 0}}, + {898, {wxControlWithItems, insert_2, 2}}, + {899, {wxControlWithItems, insert_3, 3}}, + {900, {wxControlWithItems, isEmpty, 0}}, + {901, {wxControlWithItems, select, 1}}, + {902, {wxControlWithItems, setSelection, 1}}, + {903, {wxControlWithItems, setString, 2}}, + {904, {wxControlWithItems, setStringSelection, 1}}, + {907, {wxMenu, new_2, 2}}, + {908, {wxMenu, new_1, 1}}, + {910, {wxMenu, destruct, 0}}, + {911, {wxMenu, append_3, 3}}, + {912, {wxMenu, append_1, 1}}, + {913, {wxMenu, append_4_0, 4}}, + {914, {wxMenu, append_4_1, 4}}, + {915, {wxMenu, appendCheckItem, 3}}, + {916, {wxMenu, appendRadioItem, 3}}, + {917, {wxMenu, appendSeparator, 0}}, + {918, {wxMenu, break, 0}}, + {919, {wxMenu, check, 2}}, + {920, {wxMenu, delete_1_0, 1}}, + {921, {wxMenu, delete_1_1, 1}}, + {922, {wxMenu, destroy_1_0, 1}}, + {923, {wxMenu, destroy_1_1, 1}}, + {924, {wxMenu, enable, 2}}, + {925, {wxMenu, findItem_1, 1}}, + {926, {wxMenu, findItem_2, 2}}, + {927, {wxMenu, findItemByPosition, 1}}, + {928, {wxMenu, getHelpString, 1}}, + {929, {wxMenu, getLabel, 1}}, + {930, {wxMenu, getMenuItemCount, 0}}, + {931, {wxMenu, getMenuItems, 0}}, + {933, {wxMenu, getTitle, 0}}, + {934, {wxMenu, insert_2, 2}}, + {935, {wxMenu, insert_3, 3}}, + {936, {wxMenu, insert_5_1, 5}}, + {937, {wxMenu, insert_5_0, 5}}, + {938, {wxMenu, insertCheckItem, 4}}, + {939, {wxMenu, insertRadioItem, 4}}, + {940, {wxMenu, insertSeparator, 1}}, + {941, {wxMenu, isChecked, 1}}, + {942, {wxMenu, isEnabled, 1}}, + {943, {wxMenu, prepend_1, 1}}, + {944, {wxMenu, prepend_2, 2}}, + {945, {wxMenu, prepend_4_1, 4}}, + {946, {wxMenu, prepend_4_0, 4}}, + {947, {wxMenu, prependCheckItem, 3}}, + {948, {wxMenu, prependRadioItem, 3}}, + {949, {wxMenu, prependSeparator, 0}}, + {950, {wxMenu, remove_1_0, 1}}, + {951, {wxMenu, remove_1_1, 1}}, + {952, {wxMenu, setHelpString, 2}}, + {953, {wxMenu, setLabel, 2}}, + {954, {wxMenu, setTitle, 1}}, + {955, {wxMenuItem, new, 1}}, + {957, {wxMenuItem, destruct, 0}}, + {958, {wxMenuItem, check, 1}}, + {959, {wxMenuItem, enable, 1}}, + {960, {wxMenuItem, getBitmap, 0}}, + {961, {wxMenuItem, getHelp, 0}}, + {962, {wxMenuItem, getId, 0}}, + {963, {wxMenuItem, getKind, 0}}, + {964, {wxMenuItem, getLabel, 0}}, + {965, {wxMenuItem, getLabelFromText, 1}}, + {966, {wxMenuItem, getMenu, 0}}, + {967, {wxMenuItem, getText, 0}}, + {968, {wxMenuItem, getSubMenu, 0}}, + {969, {wxMenuItem, isCheckable, 0}}, + {970, {wxMenuItem, isChecked, 0}}, + {971, {wxMenuItem, isEnabled, 0}}, + {972, {wxMenuItem, isSeparator, 0}}, + {973, {wxMenuItem, isSubMenu, 0}}, + {974, {wxMenuItem, setBitmap, 1}}, + {975, {wxMenuItem, setHelp, 1}}, + {976, {wxMenuItem, setMenu, 1}}, + {977, {wxMenuItem, setSubMenu, 1}}, + {978, {wxMenuItem, setText, 1}}, + {979, {wxToolBar, addControl, 1}}, + {980, {wxToolBar, addSeparator, 0}}, + {981, {wxToolBar, addTool_5, 5}}, + {982, {wxToolBar, addTool_4_0, 4}}, + {983, {wxToolBar, addTool_1, 1}}, + {984, {wxToolBar, addTool_4_1, 4}}, + {985, {wxToolBar, addTool_3, 3}}, + {986, {wxToolBar, addTool_6, 6}}, + {987, {wxToolBar, addCheckTool, 4}}, + {988, {wxToolBar, addRadioTool, 4}}, + {989, {wxToolBar, addStretchableSpace, 0}}, + {990, {wxToolBar, insertStretchableSpace, 1}}, + {991, {wxToolBar, deleteTool, 1}}, + {992, {wxToolBar, deleteToolByPos, 1}}, + {993, {wxToolBar, enableTool, 2}}, + {994, {wxToolBar, findById, 1}}, + {995, {wxToolBar, findControl, 1}}, + {996, {wxToolBar, findToolForPosition, 2}}, + {997, {wxToolBar, getToolSize, 0}}, + {998, {wxToolBar, getToolBitmapSize, 0}}, + {999, {wxToolBar, getMargins, 0}}, + {1000, {wxToolBar, getToolEnabled, 1}}, + {1001, {wxToolBar, getToolLongHelp, 1}}, + {1002, {wxToolBar, getToolPacking, 0}}, + {1003, {wxToolBar, getToolPos, 1}}, + {1004, {wxToolBar, getToolSeparation, 0}}, + {1005, {wxToolBar, getToolShortHelp, 1}}, + {1006, {wxToolBar, getToolState, 1}}, + {1007, {wxToolBar, insertControl, 2}}, + {1008, {wxToolBar, insertSeparator, 1}}, + {1009, {wxToolBar, insertTool_5, 5}}, + {1010, {wxToolBar, insertTool_2, 2}}, + {1011, {wxToolBar, insertTool_4, 4}}, + {1012, {wxToolBar, realize, 0}}, + {1013, {wxToolBar, removeTool, 1}}, + {1014, {wxToolBar, setMargins, 2}}, + {1015, {wxToolBar, setToolBitmapSize, 1}}, + {1016, {wxToolBar, setToolLongHelp, 2}}, + {1017, {wxToolBar, setToolPacking, 1}}, + {1018, {wxToolBar, setToolShortHelp, 2}}, + {1019, {wxToolBar, setToolSeparation, 1}}, + {1020, {wxToolBar, toggleTool, 2}}, + {1022, {wxStatusBar, new_0, 0}}, + {1023, {wxStatusBar, new_2, 2}}, + {1025, {wxStatusBar, destruct, 0}}, + {1026, {wxStatusBar, create, 2}}, + {1027, {wxStatusBar, getFieldRect, 2}}, + {1028, {wxStatusBar, getFieldsCount, 0}}, + {1029, {wxStatusBar, getStatusText, 1}}, + {1030, {wxStatusBar, popStatusText, 1}}, + {1031, {wxStatusBar, pushStatusText, 2}}, + {1032, {wxStatusBar, setFieldsCount, 2}}, + {1033, {wxStatusBar, setMinHeight, 1}}, + {1034, {wxStatusBar, setStatusText, 2}}, + {1035, {wxStatusBar, setStatusWidths, 2}}, + {1036, {wxStatusBar, setStatusStyles, 2}}, + {1037, {wxBitmap, new_0, 0}}, + {1038, {wxBitmap, new_3, 3}}, + {1039, {wxBitmap, new_4, 4}}, + {1040, {wxBitmap, new_2_0, 2}}, + {1041, {wxBitmap, new_2_1, 2}}, + {1042, {wxBitmap, destruct, 0}}, + {1043, {wxBitmap, convertToImage, 0}}, + {1044, {wxBitmap, copyFromIcon, 1}}, + {1045, {wxBitmap, create, 3}}, + {1046, {wxBitmap, getDepth, 0}}, + {1047, {wxBitmap, getHeight, 0}}, + {1048, {wxBitmap, getPalette, 0}}, + {1049, {wxBitmap, getMask, 0}}, + {1050, {wxBitmap, getWidth, 0}}, + {1051, {wxBitmap, getSubBitmap, 1}}, + {1052, {wxBitmap, loadFile, 2}}, + {1053, {wxBitmap, ok, 0}}, + {1054, {wxBitmap, saveFile, 3}}, + {1055, {wxBitmap, setDepth, 1}}, + {1056, {wxBitmap, setHeight, 1}}, + {1057, {wxBitmap, setMask, 1}}, + {1058, {wxBitmap, setPalette, 1}}, + {1059, {wxBitmap, setWidth, 1}}, + {1060, {wxIcon, new_0, 0}}, + {1061, {wxIcon, new_2, 2}}, + {1062, {wxIcon, new_1, 1}}, + {1063, {wxIcon, copyFromBitmap, 1}}, + {1064, {wxIcon, 'Destroy', undefined}}, + {1065, {wxIconBundle, new_0, 0}}, + {1066, {wxIconBundle, new_2, 2}}, + {1067, {wxIconBundle, new_1_0, 1}}, + {1068, {wxIconBundle, new_1_1, 1}}, + {1069, {wxIconBundle, destruct, 0}}, + {1070, {wxIconBundle, addIcon_2, 2}}, + {1071, {wxIconBundle, addIcon_1, 1}}, + {1072, {wxIconBundle, getIcon_1_1, 1}}, + {1073, {wxIconBundle, getIcon_1_0, 1}}, + {1074, {wxCursor, new_0, 0}}, + {1075, {wxCursor, new_1_0, 1}}, + {1076, {wxCursor, new_1_1, 1}}, + {1077, {wxCursor, new_4, 4}}, + {1078, {wxCursor, destruct, 0}}, + {1079, {wxCursor, ok, 0}}, + {1080, {wxMask, new_0, 0}}, + {1081, {wxMask, new_2_1, 2}}, + {1082, {wxMask, new_2_0, 2}}, + {1083, {wxMask, new_1, 1}}, + {1084, {wxMask, destruct, 0}}, + {1085, {wxMask, create_2_1, 2}}, + {1086, {wxMask, create_2_0, 2}}, + {1087, {wxMask, create_1, 1}}, + {1088, {wxImage, new_0, 0}}, + {1089, {wxImage, new_3_0, 3}}, + {1090, {wxImage, new_4, 4}}, + {1091, {wxImage, new_5, 5}}, + {1092, {wxImage, new_2, 2}}, + {1093, {wxImage, new_3_1, 3}}, + {1094, {wxImage, blur, 1}}, + {1095, {wxImage, blurHorizontal, 1}}, + {1096, {wxImage, blurVertical, 1}}, + {1097, {wxImage, convertAlphaToMask, 1}}, + {1098, {wxImage, convertToGreyscale, 1}}, + {1099, {wxImage, convertToMono, 3}}, + {1100, {wxImage, copy, 0}}, + {1101, {wxImage, create_3, 3}}, + {1102, {wxImage, create_4, 4}}, + {1103, {wxImage, create_5, 5}}, + {1104, {wxImage, 'Destroy', 0}}, + {1105, {wxImage, findFirstUnusedColour, 4}}, + {1106, {wxImage, getImageExtWildcard, 0}}, + {1107, {wxImage, getAlpha_2, 2}}, + {1108, {wxImage, getAlpha_0, 0}}, + {1109, {wxImage, getBlue, 2}}, + {1110, {wxImage, getData, 0}}, + {1111, {wxImage, getGreen, 2}}, + {1112, {wxImage, getImageCount, 2}}, + {1113, {wxImage, getHeight, 0}}, + {1114, {wxImage, getMaskBlue, 0}}, + {1115, {wxImage, getMaskGreen, 0}}, + {1116, {wxImage, getMaskRed, 0}}, + {1117, {wxImage, getOrFindMaskColour, 3}}, + {1118, {wxImage, getPalette, 0}}, + {1119, {wxImage, getRed, 2}}, + {1120, {wxImage, getSubImage, 1}}, + {1121, {wxImage, getWidth, 0}}, + {1122, {wxImage, hasAlpha, 0}}, + {1123, {wxImage, hasMask, 0}}, + {1124, {wxImage, getOption, 1}}, + {1125, {wxImage, getOptionInt, 1}}, + {1126, {wxImage, hasOption, 1}}, + {1127, {wxImage, initAlpha, 0}}, + {1128, {wxImage, initStandardHandlers, 0}}, + {1129, {wxImage, isTransparent, 3}}, + {1130, {wxImage, loadFile_2, 2}}, + {1131, {wxImage, loadFile_3, 3}}, + {1132, {wxImage, ok, 0}}, + {1133, {wxImage, removeHandler, 1}}, + {1134, {wxImage, mirror, 1}}, + {1135, {wxImage, replace, 6}}, + {1136, {wxImage, rescale, 3}}, + {1137, {wxImage, resize, 3}}, + {1138, {wxImage, rotate, 3}}, + {1139, {wxImage, rotateHue, 1}}, + {1140, {wxImage, rotate90, 1}}, + {1141, {wxImage, saveFile_1, 1}}, + {1142, {wxImage, saveFile_2_0, 2}}, + {1143, {wxImage, saveFile_2_1, 2}}, + {1144, {wxImage, scale, 3}}, + {1145, {wxImage, size, 3}}, + {1146, {wxImage, setAlpha_3, 3}}, + {1147, {wxImage, setAlpha_2, 2}}, + {1148, {wxImage, setData_2, 2}}, + {1149, {wxImage, setData_4, 4}}, + {1150, {wxImage, setMask, 1}}, + {1151, {wxImage, setMaskColour, 3}}, + {1152, {wxImage, setMaskFromImage, 4}}, + {1153, {wxImage, setOption_2_1, 2}}, + {1154, {wxImage, setOption_2_0, 2}}, + {1155, {wxImage, setPalette, 1}}, + {1156, {wxImage, setRGB_5, 5}}, + {1157, {wxImage, setRGB_4, 4}}, + {1158, {wxImage, 'Destroy', undefined}}, + {1159, {wxBrush, new_0, 0}}, + {1160, {wxBrush, new_2, 2}}, + {1161, {wxBrush, new_1, 1}}, + {1163, {wxBrush, destruct, 0}}, + {1164, {wxBrush, getColour, 0}}, + {1165, {wxBrush, getStipple, 0}}, + {1166, {wxBrush, getStyle, 0}}, + {1167, {wxBrush, isHatch, 0}}, + {1168, {wxBrush, isOk, 0}}, + {1169, {wxBrush, setColour_1, 1}}, + {1170, {wxBrush, setColour_3, 3}}, + {1171, {wxBrush, setStipple, 1}}, + {1172, {wxBrush, setStyle, 1}}, + {1173, {wxPen, new_0, 0}}, + {1174, {wxPen, new_2, 2}}, + {1175, {wxPen, destruct, 0}}, + {1176, {wxPen, getCap, 0}}, + {1177, {wxPen, getColour, 0}}, + {1178, {wxPen, getJoin, 0}}, + {1179, {wxPen, getStyle, 0}}, + {1180, {wxPen, getWidth, 0}}, + {1181, {wxPen, isOk, 0}}, + {1182, {wxPen, setCap, 1}}, + {1183, {wxPen, setColour_1, 1}}, + {1184, {wxPen, setColour_3, 3}}, + {1185, {wxPen, setJoin, 1}}, + {1186, {wxPen, setStyle, 1}}, + {1187, {wxPen, setWidth, 1}}, + {1188, {wxRegion, new_0, 0}}, + {1189, {wxRegion, new_4, 4}}, + {1190, {wxRegion, new_2, 2}}, + {1191, {wxRegion, new_1_1, 1}}, + {1193, {wxRegion, new_1_0, 1}}, + {1195, {wxRegion, destruct, 0}}, + {1196, {wxRegion, clear, 0}}, + {1197, {wxRegion, contains_2, 2}}, + {1198, {wxRegion, contains_1_0, 1}}, + {1199, {wxRegion, contains_4, 4}}, + {1200, {wxRegion, contains_1_1, 1}}, + {1201, {wxRegion, convertToBitmap, 0}}, + {1202, {wxRegion, getBox, 0}}, + {1203, {wxRegion, intersect_4, 4}}, + {1204, {wxRegion, intersect_1_1, 1}}, + {1205, {wxRegion, intersect_1_0, 1}}, + {1206, {wxRegion, isEmpty, 0}}, + {1207, {wxRegion, subtract_4, 4}}, + {1208, {wxRegion, subtract_1_1, 1}}, + {1209, {wxRegion, subtract_1_0, 1}}, + {1210, {wxRegion, offset_2, 2}}, + {1211, {wxRegion, offset_1, 1}}, + {1212, {wxRegion, union_4, 4}}, + {1213, {wxRegion, union_1_2, 1}}, + {1214, {wxRegion, union_1_1, 1}}, + {1215, {wxRegion, union_1_0, 1}}, + {1216, {wxRegion, union_3, 3}}, + {1217, {wxRegion, xor_4, 4}}, + {1218, {wxRegion, xor_1_1, 1}}, + {1219, {wxRegion, xor_1_0, 1}}, + {1220, {wxAcceleratorTable, new_0, 0}}, + {1221, {wxAcceleratorTable, new_2, 2}}, + {1222, {wxAcceleratorTable, destruct, 0}}, + {1223, {wxAcceleratorTable, ok, 0}}, + {1224, {wxAcceleratorEntry, new_1_0, 1}}, + {1225, {wxAcceleratorEntry, new_1_1, 1}}, + {1226, {wxAcceleratorEntry, getCommand, 0}}, + {1227, {wxAcceleratorEntry, getFlags, 0}}, + {1228, {wxAcceleratorEntry, getKeyCode, 0}}, + {1229, {wxAcceleratorEntry, set, 4}}, + {1230, {wxAcceleratorEntry, 'Destroy', undefined}}, + {1235, {wxCaret, new_3, 3}}, + {1236, {wxCaret, new_2, 2}}, + {1238, {wxCaret, destruct, 0}}, + {1239, {wxCaret, create_3, 3}}, + {1240, {wxCaret, create_2, 2}}, + {1241, {wxCaret, getBlinkTime, 0}}, + {1243, {wxCaret, getPosition, 0}}, + {1245, {wxCaret, getSize, 0}}, + {1246, {wxCaret, getWindow, 0}}, + {1247, {wxCaret, hide, 0}}, + {1248, {wxCaret, isOk, 0}}, + {1249, {wxCaret, isVisible, 0}}, + {1250, {wxCaret, move_2, 2}}, + {1251, {wxCaret, move_1, 1}}, + {1252, {wxCaret, setBlinkTime, 1}}, + {1253, {wxCaret, setSize_2, 2}}, + {1254, {wxCaret, setSize_1, 1}}, + {1255, {wxCaret, show, 1}}, + {1256, {wxSizer, add_2_1, 2}}, + {1257, {wxSizer, add_2_0, 2}}, + {1258, {wxSizer, add_3, 3}}, + {1259, {wxSizer, add_2_3, 2}}, + {1260, {wxSizer, add_2_2, 2}}, + {1261, {wxSizer, addSpacer, 1}}, + {1262, {wxSizer, addStretchSpacer, 1}}, + {1263, {wxSizer, calcMin, 0}}, + {1264, {wxSizer, clear, 1}}, + {1265, {wxSizer, detach_1_2, 1}}, + {1266, {wxSizer, detach_1_1, 1}}, + {1267, {wxSizer, detach_1_0, 1}}, + {1268, {wxSizer, fit, 1}}, + {1269, {wxSizer, fitInside, 1}}, + {1270, {wxSizer, getChildren, 0}}, + {1271, {wxSizer, getItem_2_1, 2}}, + {1272, {wxSizer, getItem_2_0, 2}}, + {1273, {wxSizer, getItem_1, 1}}, + {1274, {wxSizer, getSize, 0}}, + {1275, {wxSizer, getPosition, 0}}, + {1276, {wxSizer, getMinSize, 0}}, + {1277, {wxSizer, hide_2_0, 2}}, + {1278, {wxSizer, hide_2_1, 2}}, + {1279, {wxSizer, hide_1, 1}}, + {1280, {wxSizer, insert_3_1, 3}}, + {1281, {wxSizer, insert_3_0, 3}}, + {1282, {wxSizer, insert_4, 4}}, + {1283, {wxSizer, insert_3_3, 3}}, + {1284, {wxSizer, insert_3_2, 3}}, + {1285, {wxSizer, insert_2, 2}}, + {1286, {wxSizer, insertSpacer, 2}}, + {1287, {wxSizer, insertStretchSpacer, 2}}, + {1288, {wxSizer, isShown_1_2, 1}}, + {1289, {wxSizer, isShown_1_1, 1}}, + {1290, {wxSizer, isShown_1_0, 1}}, + {1291, {wxSizer, layout, 0}}, + {1292, {wxSizer, prepend_2_1, 2}}, + {1293, {wxSizer, prepend_2_0, 2}}, + {1294, {wxSizer, prepend_3, 3}}, + {1295, {wxSizer, prepend_2_3, 2}}, + {1296, {wxSizer, prepend_2_2, 2}}, + {1297, {wxSizer, prepend_1, 1}}, + {1298, {wxSizer, prependSpacer, 1}}, + {1299, {wxSizer, prependStretchSpacer, 1}}, + {1300, {wxSizer, recalcSizes, 0}}, + {1301, {wxSizer, remove_1_1, 1}}, + {1302, {wxSizer, remove_1_0, 1}}, + {1303, {wxSizer, replace_3_1, 3}}, + {1304, {wxSizer, replace_3_0, 3}}, + {1305, {wxSizer, replace_2, 2}}, + {1306, {wxSizer, setDimension, 4}}, + {1307, {wxSizer, setMinSize_2, 2}}, + {1308, {wxSizer, setMinSize_1, 1}}, + {1309, {wxSizer, setItemMinSize_3_2, 3}}, + {1310, {wxSizer, setItemMinSize_2_2, 2}}, + {1311, {wxSizer, setItemMinSize_3_1, 3}}, + {1312, {wxSizer, setItemMinSize_2_1, 2}}, + {1313, {wxSizer, setItemMinSize_3_0, 3}}, + {1314, {wxSizer, setItemMinSize_2_0, 2}}, + {1315, {wxSizer, setSizeHints, 1}}, + {1316, {wxSizer, setVirtualSizeHints, 1}}, + {1317, {wxSizer, show_2_2, 2}}, + {1318, {wxSizer, show_2_1, 2}}, + {1319, {wxSizer, show_2_0, 2}}, + {1320, {wxSizer, show_1, 1}}, + {1321, {wxSizerFlags, new, 1}}, + {1322, {wxSizerFlags, align, 1}}, + {1323, {wxSizerFlags, border_2, 2}}, + {1324, {wxSizerFlags, border_1, 1}}, + {1325, {wxSizerFlags, center, 0}}, + {1326, {wxSizerFlags, centre, 0}}, + {1327, {wxSizerFlags, expand, 0}}, + {1328, {wxSizerFlags, left, 0}}, + {1329, {wxSizerFlags, proportion, 1}}, + {1330, {wxSizerFlags, right, 0}}, + {1331, {wxSizerFlags, 'Destroy', undefined}}, + {1332, {wxSizerItem, new_5_1, 5}}, + {1333, {wxSizerItem, new_2_1, 2}}, + {1334, {wxSizerItem, new_5_0, 5}}, + {1335, {wxSizerItem, new_2_0, 2}}, + {1336, {wxSizerItem, new_6, 6}}, + {1337, {wxSizerItem, new_3, 3}}, + {1338, {wxSizerItem, new_0, 0}}, + {1339, {wxSizerItem, destruct, 0}}, + {1340, {wxSizerItem, calcMin, 0}}, + {1341, {wxSizerItem, deleteWindows, 0}}, + {1342, {wxSizerItem, detachSizer, 0}}, + {1343, {wxSizerItem, getBorder, 0}}, + {1344, {wxSizerItem, getFlag, 0}}, + {1345, {wxSizerItem, getMinSize, 0}}, + {1346, {wxSizerItem, getPosition, 0}}, + {1347, {wxSizerItem, getProportion, 0}}, + {1348, {wxSizerItem, getRatio, 0}}, + {1349, {wxSizerItem, getRect, 0}}, + {1350, {wxSizerItem, getSize, 0}}, + {1351, {wxSizerItem, getSizer, 0}}, + {1352, {wxSizerItem, getSpacer, 0}}, + {1353, {wxSizerItem, getUserData, 0}}, + {1354, {wxSizerItem, getWindow, 0}}, + {1355, {wxSizerItem, isSizer, 0}}, + {1356, {wxSizerItem, isShown, 0}}, + {1357, {wxSizerItem, isSpacer, 0}}, + {1358, {wxSizerItem, isWindow, 0}}, + {1359, {wxSizerItem, setBorder, 1}}, + {1360, {wxSizerItem, setDimension, 2}}, + {1361, {wxSizerItem, setFlag, 1}}, + {1362, {wxSizerItem, setInitSize, 2}}, + {1363, {wxSizerItem, setMinSize_1, 1}}, + {1364, {wxSizerItem, setMinSize_2, 2}}, + {1365, {wxSizerItem, setProportion, 1}}, + {1366, {wxSizerItem, setRatio_2, 2}}, + {1367, {wxSizerItem, setRatio_1_1, 1}}, + {1368, {wxSizerItem, setRatio_1_0, 1}}, + {1369, {wxSizerItem, setSizer, 1}}, + {1370, {wxSizerItem, setSpacer_1, 1}}, + {1371, {wxSizerItem, setSpacer_2, 2}}, + {1372, {wxSizerItem, setWindow, 1}}, + {1373, {wxSizerItem, show, 1}}, + {1374, {wxBoxSizer, new, 1}}, + {1375, {wxBoxSizer, getOrientation, 0}}, + {1376, {wxBoxSizer, 'Destroy', undefined}}, + {1377, {wxStaticBoxSizer, new_2, 2}}, + {1378, {wxStaticBoxSizer, new_3, 3}}, + {1379, {wxStaticBoxSizer, getStaticBox, 0}}, + {1380, {wxStaticBoxSizer, 'Destroy', undefined}}, + {1381, {wxGridSizer, new_4, 4}}, + {1382, {wxGridSizer, new_2, 2}}, + {1383, {wxGridSizer, getCols, 0}}, + {1384, {wxGridSizer, getHGap, 0}}, + {1385, {wxGridSizer, getRows, 0}}, + {1386, {wxGridSizer, getVGap, 0}}, + {1387, {wxGridSizer, setCols, 1}}, + {1388, {wxGridSizer, setHGap, 1}}, + {1389, {wxGridSizer, setRows, 1}}, + {1390, {wxGridSizer, setVGap, 1}}, + {1391, {wxGridSizer, 'Destroy', undefined}}, + {1392, {wxFlexGridSizer, new_4, 4}}, + {1393, {wxFlexGridSizer, new_2, 2}}, + {1394, {wxFlexGridSizer, addGrowableCol, 2}}, + {1395, {wxFlexGridSizer, addGrowableRow, 2}}, + {1396, {wxFlexGridSizer, getFlexibleDirection, 0}}, + {1397, {wxFlexGridSizer, getNonFlexibleGrowMode, 0}}, + {1398, {wxFlexGridSizer, removeGrowableCol, 1}}, + {1399, {wxFlexGridSizer, removeGrowableRow, 1}}, + {1400, {wxFlexGridSizer, setFlexibleDirection, 1}}, + {1401, {wxFlexGridSizer, setNonFlexibleGrowMode, 1}}, + {1402, {wxFlexGridSizer, 'Destroy', undefined}}, + {1403, {wxGridBagSizer, new, 1}}, + {1404, {wxGridBagSizer, add_3_2, 3}}, + {1405, {wxGridBagSizer, add_3_1, 3}}, + {1406, {wxGridBagSizer, add_4, 4}}, + {1407, {wxGridBagSizer, add_1_0, 1}}, + {1408, {wxGridBagSizer, add_2_1, 2}}, + {1409, {wxGridBagSizer, add_2_0, 2}}, + {1410, {wxGridBagSizer, add_3_0, 3}}, + {1411, {wxGridBagSizer, add_1_1, 1}}, + {1412, {wxGridBagSizer, calcMin, 0}}, + {1413, {wxGridBagSizer, checkForIntersection_2, 2}}, + {1414, {wxGridBagSizer, checkForIntersection_3, 3}}, + {1415, {wxGridBagSizer, findItem_1_1, 1}}, + {1416, {wxGridBagSizer, findItem_1_0, 1}}, + {1417, {wxGridBagSizer, findItemAtPoint, 1}}, + {1418, {wxGridBagSizer, findItemAtPosition, 1}}, + {1419, {wxGridBagSizer, findItemWithData, 1}}, + {1420, {wxGridBagSizer, getCellSize, 2}}, + {1421, {wxGridBagSizer, getEmptyCellSize, 0}}, + {1422, {wxGridBagSizer, getItemPosition_1_2, 1}}, + {1423, {wxGridBagSizer, getItemPosition_1_1, 1}}, + {1424, {wxGridBagSizer, getItemPosition_1_0, 1}}, + {1425, {wxGridBagSizer, getItemSpan_1_2, 1}}, + {1426, {wxGridBagSizer, getItemSpan_1_1, 1}}, + {1427, {wxGridBagSizer, getItemSpan_1_0, 1}}, + {1428, {wxGridBagSizer, setEmptyCellSize, 1}}, + {1429, {wxGridBagSizer, setItemPosition_2_2, 2}}, + {1430, {wxGridBagSizer, setItemPosition_2_1, 2}}, + {1431, {wxGridBagSizer, setItemPosition_2_0, 2}}, + {1432, {wxGridBagSizer, setItemSpan_2_2, 2}}, + {1433, {wxGridBagSizer, setItemSpan_2_1, 2}}, + {1434, {wxGridBagSizer, setItemSpan_2_0, 2}}, + {1435, {wxGridBagSizer, 'Destroy', undefined}}, + {1436, {wxStdDialogButtonSizer, new, 0}}, + {1437, {wxStdDialogButtonSizer, addButton, 1}}, + {1438, {wxStdDialogButtonSizer, realize, 0}}, + {1439, {wxStdDialogButtonSizer, setAffirmativeButton, 1}}, + {1440, {wxStdDialogButtonSizer, setCancelButton, 1}}, + {1441, {wxStdDialogButtonSizer, setNegativeButton, 1}}, + {1442, {wxStdDialogButtonSizer, 'Destroy', undefined}}, + {1443, {wxFont, new_0, 0}}, + {1444, {wxFont, new_1, 1}}, + {1445, {wxFont, new_5, 5}}, + {1447, {wxFont, destruct, 0}}, + {1448, {wxFont, isFixedWidth, 0}}, + {1449, {wxFont, getDefaultEncoding, 0}}, + {1450, {wxFont, getFaceName, 0}}, + {1451, {wxFont, getFamily, 0}}, + {1452, {wxFont, getNativeFontInfoDesc, 0}}, + {1453, {wxFont, getNativeFontInfoUserDesc, 0}}, + {1454, {wxFont, getPointSize, 0}}, + {1455, {wxFont, getStyle, 0}}, + {1456, {wxFont, getUnderlined, 0}}, + {1457, {wxFont, getWeight, 0}}, + {1458, {wxFont, ok, 0}}, + {1459, {wxFont, setDefaultEncoding, 1}}, + {1460, {wxFont, setFaceName, 1}}, + {1461, {wxFont, setFamily, 1}}, + {1462, {wxFont, setPointSize, 1}}, + {1463, {wxFont, setStyle, 1}}, + {1464, {wxFont, setUnderlined, 1}}, + {1465, {wxFont, setWeight, 1}}, + {1466, {wxToolTip, enable, 1}}, + {1467, {wxToolTip, setDelay, 1}}, + {1468, {wxToolTip, new, 1}}, + {1469, {wxToolTip, setTip, 1}}, + {1470, {wxToolTip, getTip, 0}}, + {1471, {wxToolTip, getWindow, 0}}, + {1472, {wxToolTip, 'Destroy', undefined}}, + {1474, {wxButton, new_3, 3}}, + {1475, {wxButton, new_0, 0}}, + {1476, {wxButton, destruct, 0}}, + {1477, {wxButton, create, 3}}, + {1478, {wxButton, getDefaultSize, 0}}, + {1479, {wxButton, setDefault, 0}}, + {1480, {wxButton, setLabel, 1}}, + {1482, {wxBitmapButton, new_4, 4}}, + {1483, {wxBitmapButton, new_0, 0}}, + {1484, {wxBitmapButton, create, 4}}, + {1485, {wxBitmapButton, getBitmapDisabled, 0}}, + {1487, {wxBitmapButton, getBitmapFocus, 0}}, + {1489, {wxBitmapButton, getBitmapLabel, 0}}, + {1491, {wxBitmapButton, getBitmapSelected, 0}}, + {1493, {wxBitmapButton, setBitmapDisabled, 1}}, + {1494, {wxBitmapButton, setBitmapFocus, 1}}, + {1495, {wxBitmapButton, setBitmapLabel, 1}}, + {1496, {wxBitmapButton, setBitmapSelected, 1}}, + {1497, {wxBitmapButton, 'Destroy', undefined}}, + {1498, {wxToggleButton, new_0, 0}}, + {1499, {wxToggleButton, new_4, 4}}, + {1500, {wxToggleButton, create, 4}}, + {1501, {wxToggleButton, getValue, 0}}, + {1502, {wxToggleButton, setValue, 1}}, + {1503, {wxToggleButton, 'Destroy', undefined}}, + {1504, {wxCalendarCtrl, new_0, 0}}, + {1505, {wxCalendarCtrl, new_3, 3}}, + {1506, {wxCalendarCtrl, create, 3}}, + {1507, {wxCalendarCtrl, destruct, 0}}, + {1508, {wxCalendarCtrl, setDate, 1}}, + {1509, {wxCalendarCtrl, getDate, 0}}, + {1510, {wxCalendarCtrl, enableYearChange, 1}}, + {1511, {wxCalendarCtrl, enableMonthChange, 1}}, + {1512, {wxCalendarCtrl, enableHolidayDisplay, 1}}, + {1513, {wxCalendarCtrl, setHeaderColours, 2}}, + {1514, {wxCalendarCtrl, getHeaderColourFg, 0}}, + {1515, {wxCalendarCtrl, getHeaderColourBg, 0}}, + {1516, {wxCalendarCtrl, setHighlightColours, 2}}, + {1517, {wxCalendarCtrl, getHighlightColourFg, 0}}, + {1518, {wxCalendarCtrl, getHighlightColourBg, 0}}, + {1519, {wxCalendarCtrl, setHolidayColours, 2}}, + {1520, {wxCalendarCtrl, getHolidayColourFg, 0}}, + {1521, {wxCalendarCtrl, getHolidayColourBg, 0}}, + {1522, {wxCalendarCtrl, getAttr, 1}}, + {1523, {wxCalendarCtrl, setAttr, 2}}, + {1524, {wxCalendarCtrl, setHoliday, 1}}, + {1525, {wxCalendarCtrl, resetAttr, 1}}, + {1526, {wxCalendarCtrl, hitTest, 2}}, + {1527, {wxCalendarDateAttr, new_0, 0}}, + {1528, {wxCalendarDateAttr, new_2_1, 2}}, + {1529, {wxCalendarDateAttr, new_2_0, 2}}, + {1530, {wxCalendarDateAttr, setTextColour, 1}}, + {1531, {wxCalendarDateAttr, setBackgroundColour, 1}}, + {1532, {wxCalendarDateAttr, setBorderColour, 1}}, + {1533, {wxCalendarDateAttr, setFont, 1}}, + {1534, {wxCalendarDateAttr, setBorder, 1}}, + {1535, {wxCalendarDateAttr, setHoliday, 1}}, + {1536, {wxCalendarDateAttr, hasTextColour, 0}}, + {1537, {wxCalendarDateAttr, hasBackgroundColour, 0}}, + {1538, {wxCalendarDateAttr, hasBorderColour, 0}}, + {1539, {wxCalendarDateAttr, hasFont, 0}}, + {1540, {wxCalendarDateAttr, hasBorder, 0}}, + {1541, {wxCalendarDateAttr, isHoliday, 0}}, + {1542, {wxCalendarDateAttr, getTextColour, 0}}, + {1543, {wxCalendarDateAttr, getBackgroundColour, 0}}, + {1544, {wxCalendarDateAttr, getBorderColour, 0}}, + {1545, {wxCalendarDateAttr, getFont, 0}}, + {1546, {wxCalendarDateAttr, getBorder, 0}}, + {1547, {wxCalendarDateAttr, 'Destroy', undefined}}, + {1549, {wxCheckBox, new_4, 4}}, + {1550, {wxCheckBox, new_0, 0}}, + {1551, {wxCheckBox, create, 4}}, + {1552, {wxCheckBox, getValue, 0}}, + {1553, {wxCheckBox, get3StateValue, 0}}, + {1554, {wxCheckBox, is3rdStateAllowedForUser, 0}}, + {1555, {wxCheckBox, is3State, 0}}, + {1556, {wxCheckBox, isChecked, 0}}, + {1557, {wxCheckBox, setValue, 1}}, + {1558, {wxCheckBox, set3StateValue, 1}}, + {1559, {wxCheckBox, 'Destroy', undefined}}, + {1560, {wxCheckListBox, new_0, 0}}, + {1562, {wxCheckListBox, new_3, 3}}, + {1563, {wxCheckListBox, check, 2}}, + {1564, {wxCheckListBox, isChecked, 1}}, + {1565, {wxCheckListBox, 'Destroy', undefined}}, + {1568, {wxChoice, new_3, 3}}, + {1569, {wxChoice, new_0, 0}}, + {1571, {wxChoice, destruct, 0}}, + {1573, {wxChoice, create, 6}}, + {1574, {wxChoice, delete, 1}}, + {1575, {wxChoice, getColumns, 0}}, + {1576, {wxChoice, setColumns, 1}}, + {1577, {wxComboBox, new_0, 0}}, + {1579, {wxComboBox, new_3, 3}}, + {1580, {wxComboBox, destruct, 0}}, + {1582, {wxComboBox, create, 7}}, + {1583, {wxComboBox, canCopy, 0}}, + {1584, {wxComboBox, canCut, 0}}, + {1585, {wxComboBox, canPaste, 0}}, + {1586, {wxComboBox, canRedo, 0}}, + {1587, {wxComboBox, canUndo, 0}}, + {1588, {wxComboBox, copy, 0}}, + {1589, {wxComboBox, cut, 0}}, + {1590, {wxComboBox, getInsertionPoint, 0}}, + {1591, {wxComboBox, getLastPosition, 0}}, + {1592, {wxComboBox, getValue, 0}}, + {1593, {wxComboBox, paste, 0}}, + {1594, {wxComboBox, redo, 0}}, + {1595, {wxComboBox, replace, 3}}, + {1596, {wxComboBox, remove, 2}}, + {1597, {wxComboBox, setInsertionPoint, 1}}, + {1598, {wxComboBox, setInsertionPointEnd, 0}}, + {1599, {wxComboBox, setSelection_1, 1}}, + {1600, {wxComboBox, setSelection_2, 2}}, + {1601, {wxComboBox, setValue, 1}}, + {1602, {wxComboBox, undo, 0}}, + {1603, {wxGauge, new_0, 0}}, + {1604, {wxGauge, new_4, 4}}, + {1605, {wxGauge, create, 4}}, + {1606, {wxGauge, getRange, 0}}, + {1607, {wxGauge, getValue, 0}}, + {1608, {wxGauge, isVertical, 0}}, + {1609, {wxGauge, setRange, 1}}, + {1610, {wxGauge, setValue, 1}}, + {1611, {wxGauge, pulse, 0}}, + {1612, {wxGauge, 'Destroy', undefined}}, + {1613, {wxGenericDirCtrl, new_0, 0}}, + {1614, {wxGenericDirCtrl, new_2, 2}}, + {1615, {wxGenericDirCtrl, destruct, 0}}, + {1616, {wxGenericDirCtrl, create, 2}}, + {1617, {wxGenericDirCtrl, init, 0}}, + {1618, {wxGenericDirCtrl, collapseTree, 0}}, + {1619, {wxGenericDirCtrl, expandPath, 1}}, + {1620, {wxGenericDirCtrl, getDefaultPath, 0}}, + {1621, {wxGenericDirCtrl, getPath, 0}}, + {1622, {wxGenericDirCtrl, getFilePath, 0}}, + {1623, {wxGenericDirCtrl, getFilter, 0}}, + {1624, {wxGenericDirCtrl, getFilterIndex, 0}}, + {1625, {wxGenericDirCtrl, getRootId, 0}}, + {1626, {wxGenericDirCtrl, getTreeCtrl, 0}}, + {1627, {wxGenericDirCtrl, reCreateTree, 0}}, + {1628, {wxGenericDirCtrl, setDefaultPath, 1}}, + {1629, {wxGenericDirCtrl, setFilter, 1}}, + {1630, {wxGenericDirCtrl, setFilterIndex, 1}}, + {1631, {wxGenericDirCtrl, setPath, 1}}, + {1633, {wxStaticBox, new_4, 4}}, + {1634, {wxStaticBox, new_0, 0}}, + {1635, {wxStaticBox, create, 4}}, + {1636, {wxStaticBox, 'Destroy', undefined}}, + {1638, {wxStaticLine, new_2, 2}}, + {1639, {wxStaticLine, new_0, 0}}, + {1640, {wxStaticLine, create, 2}}, + {1641, {wxStaticLine, isVertical, 0}}, + {1642, {wxStaticLine, getDefaultSize, 0}}, + {1643, {wxStaticLine, 'Destroy', undefined}}, + {1646, {wxListBox, new_3, 3}}, + {1647, {wxListBox, new_0, 0}}, + {1649, {wxListBox, destruct, 0}}, + {1651, {wxListBox, create, 6}}, + {1652, {wxListBox, deselect, 1}}, + {1653, {wxListBox, getSelections, 1}}, + {1654, {wxListBox, insertItems, 2}}, + {1655, {wxListBox, isSelected, 1}}, + {1656, {wxListBox, set, 1}}, + {1657, {wxListBox, hitTest, 1}}, + {1658, {wxListBox, setFirstItem_1_0, 1}}, + {1659, {wxListBox, setFirstItem_1_1, 1}}, + {1660, {wxListCtrl, new_0, 0}}, + {1661, {wxListCtrl, new_2, 2}}, + {1662, {wxListCtrl, arrange, 1}}, + {1663, {wxListCtrl, assignImageList, 2}}, + {1664, {wxListCtrl, clearAll, 0}}, + {1665, {wxListCtrl, create, 2}}, + {1666, {wxListCtrl, deleteAllItems, 0}}, + {1667, {wxListCtrl, deleteColumn, 1}}, + {1668, {wxListCtrl, deleteItem, 1}}, + {1669, {wxListCtrl, editLabel, 1}}, + {1670, {wxListCtrl, ensureVisible, 1}}, + {1671, {wxListCtrl, findItem_3_0, 3}}, + {1672, {wxListCtrl, findItem_3_1, 3}}, + {1673, {wxListCtrl, getColumn, 2}}, + {1674, {wxListCtrl, getColumnCount, 0}}, + {1675, {wxListCtrl, getColumnWidth, 1}}, + {1676, {wxListCtrl, getCountPerPage, 0}}, + {1677, {wxListCtrl, getEditControl, 0}}, + {1678, {wxListCtrl, getImageList, 1}}, + {1679, {wxListCtrl, getItem, 1}}, + {1680, {wxListCtrl, getItemBackgroundColour, 1}}, + {1681, {wxListCtrl, getItemCount, 0}}, + {1682, {wxListCtrl, getItemData, 1}}, + {1683, {wxListCtrl, getItemFont, 1}}, + {1684, {wxListCtrl, getItemPosition, 2}}, + {1685, {wxListCtrl, getItemRect, 3}}, + {1686, {wxListCtrl, getItemSpacing, 0}}, + {1687, {wxListCtrl, getItemState, 2}}, + {1688, {wxListCtrl, getItemText, 1}}, + {1689, {wxListCtrl, getItemTextColour, 1}}, + {1690, {wxListCtrl, getNextItem, 2}}, + {1691, {wxListCtrl, getSelectedItemCount, 0}}, + {1692, {wxListCtrl, getTextColour, 0}}, + {1693, {wxListCtrl, getTopItem, 0}}, + {1694, {wxListCtrl, getViewRect, 0}}, + {1695, {wxListCtrl, hitTest, 3}}, + {1696, {wxListCtrl, insertColumn_2, 2}}, + {1697, {wxListCtrl, insertColumn_3, 3}}, + {1698, {wxListCtrl, insertItem_1, 1}}, + {1699, {wxListCtrl, insertItem_2_1, 2}}, + {1700, {wxListCtrl, insertItem_2_0, 2}}, + {1701, {wxListCtrl, insertItem_3, 3}}, + {1702, {wxListCtrl, refreshItem, 1}}, + {1703, {wxListCtrl, refreshItems, 2}}, + {1704, {wxListCtrl, scrollList, 2}}, + {1705, {wxListCtrl, setBackgroundColour, 1}}, + {1706, {wxListCtrl, setColumn, 2}}, + {1707, {wxListCtrl, setColumnWidth, 2}}, + {1708, {wxListCtrl, setImageList, 2}}, + {1709, {wxListCtrl, setItem_1, 1}}, + {1710, {wxListCtrl, setItem_4, 4}}, + {1711, {wxListCtrl, setItemBackgroundColour, 2}}, + {1712, {wxListCtrl, setItemCount, 1}}, + {1713, {wxListCtrl, setItemData, 2}}, + {1714, {wxListCtrl, setItemFont, 2}}, + {1715, {wxListCtrl, setItemImage, 3}}, + {1716, {wxListCtrl, setItemColumnImage, 3}}, + {1717, {wxListCtrl, setItemPosition, 2}}, + {1718, {wxListCtrl, setItemState, 3}}, + {1719, {wxListCtrl, setItemText, 2}}, + {1720, {wxListCtrl, setItemTextColour, 2}}, + {1721, {wxListCtrl, setSingleStyle, 2}}, + {1722, {wxListCtrl, setTextColour, 1}}, + {1723, {wxListCtrl, setWindowStyleFlag, 1}}, + {1724, {wxListCtrl, sortItems, 2}}, + {1725, {wxListCtrl, 'Destroy', undefined}}, + {1726, {wxListView, clearColumnImage, 1}}, + {1727, {wxListView, focus, 1}}, + {1728, {wxListView, getFirstSelected, 0}}, + {1729, {wxListView, getFocusedItem, 0}}, + {1730, {wxListView, getNextSelected, 1}}, + {1731, {wxListView, isSelected, 1}}, + {1732, {wxListView, select, 2}}, + {1733, {wxListView, setColumnImage, 2}}, + {1734, {wxListItem, new_0, 0}}, + {1735, {wxListItem, new_1, 1}}, + {1736, {wxListItem, destruct, 0}}, + {1737, {wxListItem, clear, 0}}, + {1738, {wxListItem, getAlign, 0}}, + {1739, {wxListItem, getBackgroundColour, 0}}, + {1740, {wxListItem, getColumn, 0}}, + {1741, {wxListItem, getFont, 0}}, + {1742, {wxListItem, getId, 0}}, + {1743, {wxListItem, getImage, 0}}, + {1744, {wxListItem, getMask, 0}}, + {1745, {wxListItem, getState, 0}}, + {1746, {wxListItem, getText, 0}}, + {1747, {wxListItem, getTextColour, 0}}, + {1748, {wxListItem, getWidth, 0}}, + {1749, {wxListItem, setAlign, 1}}, + {1750, {wxListItem, setBackgroundColour, 1}}, + {1751, {wxListItem, setColumn, 1}}, + {1752, {wxListItem, setFont, 1}}, + {1753, {wxListItem, setId, 1}}, + {1754, {wxListItem, setImage, 1}}, + {1755, {wxListItem, setMask, 1}}, + {1756, {wxListItem, setState, 1}}, + {1757, {wxListItem, setStateMask, 1}}, + {1758, {wxListItem, setText, 1}}, + {1759, {wxListItem, setTextColour, 1}}, + {1760, {wxListItem, setWidth, 1}}, + {1761, {wxListItemAttr, new_0, 0}}, + {1762, {wxListItemAttr, new_3, 3}}, + {1763, {wxListItemAttr, getBackgroundColour, 0}}, + {1764, {wxListItemAttr, getFont, 0}}, + {1765, {wxListItemAttr, getTextColour, 0}}, + {1766, {wxListItemAttr, hasBackgroundColour, 0}}, + {1767, {wxListItemAttr, hasFont, 0}}, + {1768, {wxListItemAttr, hasTextColour, 0}}, + {1769, {wxListItemAttr, setBackgroundColour, 1}}, + {1770, {wxListItemAttr, setFont, 1}}, + {1771, {wxListItemAttr, setTextColour, 1}}, + {1772, {wxListItemAttr, 'Destroy', undefined}}, + {1773, {wxImageList, new_0, 0}}, + {1774, {wxImageList, new_3, 3}}, + {1775, {wxImageList, add_1, 1}}, + {1776, {wxImageList, add_2_0, 2}}, + {1777, {wxImageList, add_2_1, 2}}, + {1778, {wxImageList, create, 3}}, + {1780, {wxImageList, draw, 5}}, + {1781, {wxImageList, getBitmap, 1}}, + {1782, {wxImageList, getIcon, 1}}, + {1783, {wxImageList, getImageCount, 0}}, + {1784, {wxImageList, getSize, 3}}, + {1785, {wxImageList, remove, 1}}, + {1786, {wxImageList, removeAll, 0}}, + {1787, {wxImageList, replace_2, 2}}, + {1788, {wxImageList, replace_3, 3}}, + {1789, {wxImageList, 'Destroy', undefined}}, + {1790, {wxTextAttr, new_0, 0}}, + {1791, {wxTextAttr, new_2, 2}}, + {1792, {wxTextAttr, getAlignment, 0}}, + {1793, {wxTextAttr, getBackgroundColour, 0}}, + {1794, {wxTextAttr, getFont, 0}}, + {1795, {wxTextAttr, getLeftIndent, 0}}, + {1796, {wxTextAttr, getLeftSubIndent, 0}}, + {1797, {wxTextAttr, getRightIndent, 0}}, + {1798, {wxTextAttr, getTabs, 0}}, + {1799, {wxTextAttr, getTextColour, 0}}, + {1800, {wxTextAttr, hasBackgroundColour, 0}}, + {1801, {wxTextAttr, hasFont, 0}}, + {1802, {wxTextAttr, hasTextColour, 0}}, + {1803, {wxTextAttr, getFlags, 0}}, + {1804, {wxTextAttr, isDefault, 0}}, + {1805, {wxTextAttr, setAlignment, 1}}, + {1806, {wxTextAttr, setBackgroundColour, 1}}, + {1807, {wxTextAttr, setFlags, 1}}, + {1808, {wxTextAttr, setFont, 2}}, + {1809, {wxTextAttr, setLeftIndent, 2}}, + {1810, {wxTextAttr, setRightIndent, 1}}, + {1811, {wxTextAttr, setTabs, 1}}, + {1812, {wxTextAttr, setTextColour, 1}}, + {1813, {wxTextAttr, 'Destroy', undefined}}, + {1815, {wxTextCtrl, new_3, 3}}, + {1816, {wxTextCtrl, new_0, 0}}, + {1818, {wxTextCtrl, destruct, 0}}, + {1819, {wxTextCtrl, appendText, 1}}, + {1820, {wxTextCtrl, canCopy, 0}}, + {1821, {wxTextCtrl, canCut, 0}}, + {1822, {wxTextCtrl, canPaste, 0}}, + {1823, {wxTextCtrl, canRedo, 0}}, + {1824, {wxTextCtrl, canUndo, 0}}, + {1825, {wxTextCtrl, clear, 0}}, + {1826, {wxTextCtrl, copy, 0}}, + {1827, {wxTextCtrl, create, 3}}, + {1828, {wxTextCtrl, cut, 0}}, + {1829, {wxTextCtrl, discardEdits, 0}}, + {1830, {wxTextCtrl, changeValue, 1}}, + {1831, {wxTextCtrl, emulateKeyPress, 1}}, + {1832, {wxTextCtrl, getDefaultStyle, 0}}, + {1833, {wxTextCtrl, getInsertionPoint, 0}}, + {1834, {wxTextCtrl, getLastPosition, 0}}, + {1835, {wxTextCtrl, getLineLength, 1}}, + {1836, {wxTextCtrl, getLineText, 1}}, + {1837, {wxTextCtrl, getNumberOfLines, 0}}, + {1838, {wxTextCtrl, getRange, 2}}, + {1839, {wxTextCtrl, getSelection, 2}}, + {1840, {wxTextCtrl, getStringSelection, 0}}, + {1841, {wxTextCtrl, getStyle, 2}}, + {1842, {wxTextCtrl, getValue, 0}}, + {1843, {wxTextCtrl, isEditable, 0}}, + {1844, {wxTextCtrl, isModified, 0}}, + {1845, {wxTextCtrl, isMultiLine, 0}}, + {1846, {wxTextCtrl, isSingleLine, 0}}, + {1847, {wxTextCtrl, loadFile, 2}}, + {1848, {wxTextCtrl, markDirty, 0}}, + {1849, {wxTextCtrl, paste, 0}}, + {1850, {wxTextCtrl, positionToXY, 3}}, + {1851, {wxTextCtrl, redo, 0}}, + {1852, {wxTextCtrl, remove, 2}}, + {1853, {wxTextCtrl, replace, 3}}, + {1854, {wxTextCtrl, saveFile, 1}}, + {1855, {wxTextCtrl, setDefaultStyle, 1}}, + {1856, {wxTextCtrl, setEditable, 1}}, + {1857, {wxTextCtrl, setInsertionPoint, 1}}, + {1858, {wxTextCtrl, setInsertionPointEnd, 0}}, + {1860, {wxTextCtrl, setMaxLength, 1}}, + {1861, {wxTextCtrl, setSelection, 2}}, + {1862, {wxTextCtrl, setStyle, 3}}, + {1863, {wxTextCtrl, setValue, 1}}, + {1864, {wxTextCtrl, showPosition, 1}}, + {1865, {wxTextCtrl, undo, 0}}, + {1866, {wxTextCtrl, writeText, 1}}, + {1867, {wxTextCtrl, xYToPosition, 2}}, + {1870, {wxNotebook, new_0, 0}}, + {1871, {wxNotebook, new_3, 3}}, + {1872, {wxNotebook, destruct, 0}}, + {1873, {wxNotebook, addPage, 3}}, + {1874, {wxNotebook, advanceSelection, 1}}, + {1875, {wxNotebook, assignImageList, 1}}, + {1876, {wxNotebook, create, 3}}, + {1877, {wxNotebook, deleteAllPages, 0}}, + {1878, {wxNotebook, deletePage, 1}}, + {1879, {wxNotebook, removePage, 1}}, + {1880, {wxNotebook, getCurrentPage, 0}}, + {1881, {wxNotebook, getImageList, 0}}, + {1883, {wxNotebook, getPage, 1}}, + {1884, {wxNotebook, getPageCount, 0}}, + {1885, {wxNotebook, getPageImage, 1}}, + {1886, {wxNotebook, getPageText, 1}}, + {1887, {wxNotebook, getRowCount, 0}}, + {1888, {wxNotebook, getSelection, 0}}, + {1889, {wxNotebook, getThemeBackgroundColour, 0}}, + {1891, {wxNotebook, hitTest, 2}}, + {1893, {wxNotebook, insertPage, 4}}, + {1894, {wxNotebook, setImageList, 1}}, + {1895, {wxNotebook, setPadding, 1}}, + {1896, {wxNotebook, setPageSize, 1}}, + {1897, {wxNotebook, setPageImage, 2}}, + {1898, {wxNotebook, setPageText, 2}}, + {1899, {wxNotebook, setSelection, 1}}, + {1900, {wxNotebook, changeSelection, 1}}, + {1901, {wxChoicebook, new_0, 0}}, + {1902, {wxChoicebook, new_3, 3}}, + {1903, {wxChoicebook, addPage, 3}}, + {1904, {wxChoicebook, advanceSelection, 1}}, + {1905, {wxChoicebook, assignImageList, 1}}, + {1906, {wxChoicebook, create, 3}}, + {1907, {wxChoicebook, deleteAllPages, 0}}, + {1908, {wxChoicebook, deletePage, 1}}, + {1909, {wxChoicebook, removePage, 1}}, + {1910, {wxChoicebook, getCurrentPage, 0}}, + {1911, {wxChoicebook, getImageList, 0}}, + {1913, {wxChoicebook, getPage, 1}}, + {1914, {wxChoicebook, getPageCount, 0}}, + {1915, {wxChoicebook, getPageImage, 1}}, + {1916, {wxChoicebook, getPageText, 1}}, + {1917, {wxChoicebook, getSelection, 0}}, + {1918, {wxChoicebook, hitTest, 2}}, + {1919, {wxChoicebook, insertPage, 4}}, + {1920, {wxChoicebook, setImageList, 1}}, + {1921, {wxChoicebook, setPageSize, 1}}, + {1922, {wxChoicebook, setPageImage, 2}}, + {1923, {wxChoicebook, setPageText, 2}}, + {1924, {wxChoicebook, setSelection, 1}}, + {1925, {wxChoicebook, changeSelection, 1}}, + {1926, {wxChoicebook, 'Destroy', undefined}}, + {1927, {wxToolbook, new_0, 0}}, + {1928, {wxToolbook, new_3, 3}}, + {1929, {wxToolbook, addPage, 3}}, + {1930, {wxToolbook, advanceSelection, 1}}, + {1931, {wxToolbook, assignImageList, 1}}, + {1932, {wxToolbook, create, 3}}, + {1933, {wxToolbook, deleteAllPages, 0}}, + {1934, {wxToolbook, deletePage, 1}}, + {1935, {wxToolbook, removePage, 1}}, + {1936, {wxToolbook, getCurrentPage, 0}}, + {1937, {wxToolbook, getImageList, 0}}, + {1939, {wxToolbook, getPage, 1}}, + {1940, {wxToolbook, getPageCount, 0}}, + {1941, {wxToolbook, getPageImage, 1}}, + {1942, {wxToolbook, getPageText, 1}}, + {1943, {wxToolbook, getSelection, 0}}, + {1945, {wxToolbook, hitTest, 2}}, + {1946, {wxToolbook, insertPage, 4}}, + {1947, {wxToolbook, setImageList, 1}}, + {1948, {wxToolbook, setPageSize, 1}}, + {1949, {wxToolbook, setPageImage, 2}}, + {1950, {wxToolbook, setPageText, 2}}, + {1951, {wxToolbook, setSelection, 1}}, + {1952, {wxToolbook, changeSelection, 1}}, + {1953, {wxToolbook, 'Destroy', undefined}}, + {1954, {wxListbook, new_0, 0}}, + {1955, {wxListbook, new_3, 3}}, + {1956, {wxListbook, addPage, 3}}, + {1957, {wxListbook, advanceSelection, 1}}, + {1958, {wxListbook, assignImageList, 1}}, + {1959, {wxListbook, create, 3}}, + {1960, {wxListbook, deleteAllPages, 0}}, + {1961, {wxListbook, deletePage, 1}}, + {1962, {wxListbook, removePage, 1}}, + {1963, {wxListbook, getCurrentPage, 0}}, + {1964, {wxListbook, getImageList, 0}}, + {1966, {wxListbook, getPage, 1}}, + {1967, {wxListbook, getPageCount, 0}}, + {1968, {wxListbook, getPageImage, 1}}, + {1969, {wxListbook, getPageText, 1}}, + {1970, {wxListbook, getSelection, 0}}, + {1972, {wxListbook, hitTest, 2}}, + {1973, {wxListbook, insertPage, 4}}, + {1974, {wxListbook, setImageList, 1}}, + {1975, {wxListbook, setPageSize, 1}}, + {1976, {wxListbook, setPageImage, 2}}, + {1977, {wxListbook, setPageText, 2}}, + {1978, {wxListbook, setSelection, 1}}, + {1979, {wxListbook, changeSelection, 1}}, + {1980, {wxListbook, 'Destroy', undefined}}, + {1981, {wxTreebook, new_0, 0}}, + {1982, {wxTreebook, new_3, 3}}, + {1983, {wxTreebook, addPage, 3}}, + {1984, {wxTreebook, advanceSelection, 1}}, + {1985, {wxTreebook, assignImageList, 1}}, + {1986, {wxTreebook, create, 3}}, + {1987, {wxTreebook, deleteAllPages, 0}}, + {1988, {wxTreebook, deletePage, 1}}, + {1989, {wxTreebook, removePage, 1}}, + {1990, {wxTreebook, getCurrentPage, 0}}, + {1991, {wxTreebook, getImageList, 0}}, + {1993, {wxTreebook, getPage, 1}}, + {1994, {wxTreebook, getPageCount, 0}}, + {1995, {wxTreebook, getPageImage, 1}}, + {1996, {wxTreebook, getPageText, 1}}, + {1997, {wxTreebook, getSelection, 0}}, + {1998, {wxTreebook, expandNode, 2}}, + {1999, {wxTreebook, isNodeExpanded, 1}}, + {2001, {wxTreebook, hitTest, 2}}, + {2002, {wxTreebook, insertPage, 4}}, + {2003, {wxTreebook, insertSubPage, 4}}, + {2004, {wxTreebook, setImageList, 1}}, + {2005, {wxTreebook, setPageSize, 1}}, + {2006, {wxTreebook, setPageImage, 2}}, + {2007, {wxTreebook, setPageText, 2}}, + {2008, {wxTreebook, setSelection, 1}}, + {2009, {wxTreebook, changeSelection, 1}}, + {2010, {wxTreebook, 'Destroy', undefined}}, + {2013, {wxTreeCtrl, new_2, 2}}, + {2014, {wxTreeCtrl, new_0, 0}}, + {2016, {wxTreeCtrl, destruct, 0}}, + {2017, {wxTreeCtrl, addRoot, 2}}, + {2018, {wxTreeCtrl, appendItem, 3}}, + {2019, {wxTreeCtrl, assignImageList, 1}}, + {2020, {wxTreeCtrl, assignStateImageList, 1}}, + {2021, {wxTreeCtrl, collapse, 1}}, + {2022, {wxTreeCtrl, collapseAndReset, 1}}, + {2023, {wxTreeCtrl, create, 2}}, + {2024, {wxTreeCtrl, delete, 1}}, + {2025, {wxTreeCtrl, deleteAllItems, 0}}, + {2026, {wxTreeCtrl, deleteChildren, 1}}, + {2027, {wxTreeCtrl, editLabel, 1}}, + {2028, {wxTreeCtrl, ensureVisible, 1}}, + {2029, {wxTreeCtrl, expand, 1}}, + {2030, {wxTreeCtrl, getBoundingRect, 3}}, + {2032, {wxTreeCtrl, getChildrenCount, 2}}, + {2033, {wxTreeCtrl, getCount, 0}}, + {2034, {wxTreeCtrl, getEditControl, 0}}, + {2035, {wxTreeCtrl, getFirstChild, 2}}, + {2036, {wxTreeCtrl, getNextChild, 2}}, + {2037, {wxTreeCtrl, getFirstVisibleItem, 0}}, + {2038, {wxTreeCtrl, getImageList, 0}}, + {2039, {wxTreeCtrl, getIndent, 0}}, + {2040, {wxTreeCtrl, getItemBackgroundColour, 1}}, + {2041, {wxTreeCtrl, getItemData, 1}}, + {2042, {wxTreeCtrl, getItemFont, 1}}, + {2043, {wxTreeCtrl, getItemImage_1, 1}}, + {2044, {wxTreeCtrl, getItemImage_2, 2}}, + {2045, {wxTreeCtrl, getItemText, 1}}, + {2046, {wxTreeCtrl, getItemTextColour, 1}}, + {2047, {wxTreeCtrl, getLastChild, 1}}, + {2048, {wxTreeCtrl, getNextSibling, 1}}, + {2049, {wxTreeCtrl, getNextVisible, 1}}, + {2050, {wxTreeCtrl, getItemParent, 1}}, + {2051, {wxTreeCtrl, getPrevSibling, 1}}, + {2052, {wxTreeCtrl, getPrevVisible, 1}}, + {2053, {wxTreeCtrl, getRootItem, 0}}, + {2054, {wxTreeCtrl, getSelection, 0}}, + {2055, {wxTreeCtrl, getSelections, 1}}, + {2056, {wxTreeCtrl, getStateImageList, 0}}, + {2057, {wxTreeCtrl, hitTest, 2}}, + {2059, {wxTreeCtrl, insertItem, 4}}, + {2060, {wxTreeCtrl, isBold, 1}}, + {2061, {wxTreeCtrl, isExpanded, 1}}, + {2062, {wxTreeCtrl, isSelected, 1}}, + {2063, {wxTreeCtrl, isVisible, 1}}, + {2064, {wxTreeCtrl, itemHasChildren, 1}}, + {2065, {wxTreeCtrl, isTreeItemIdOk, 1}}, + {2066, {wxTreeCtrl, prependItem, 3}}, + {2067, {wxTreeCtrl, scrollTo, 1}}, + {2068, {wxTreeCtrl, selectItem_1, 1}}, + {2069, {wxTreeCtrl, selectItem_2, 2}}, + {2070, {wxTreeCtrl, setIndent, 1}}, + {2071, {wxTreeCtrl, setImageList, 1}}, + {2072, {wxTreeCtrl, setItemBackgroundColour, 2}}, + {2073, {wxTreeCtrl, setItemBold, 2}}, + {2074, {wxTreeCtrl, setItemData, 2}}, + {2075, {wxTreeCtrl, setItemDropHighlight, 2}}, + {2076, {wxTreeCtrl, setItemFont, 2}}, + {2077, {wxTreeCtrl, setItemHasChildren, 2}}, + {2078, {wxTreeCtrl, setItemImage_2, 2}}, + {2079, {wxTreeCtrl, setItemImage_3, 3}}, + {2080, {wxTreeCtrl, setItemText, 2}}, + {2081, {wxTreeCtrl, setItemTextColour, 2}}, + {2082, {wxTreeCtrl, setStateImageList, 1}}, + {2083, {wxTreeCtrl, setWindowStyle, 1}}, + {2084, {wxTreeCtrl, sortChildren, 1}}, + {2085, {wxTreeCtrl, toggle, 1}}, + {2086, {wxTreeCtrl, toggleItemSelection, 1}}, + {2087, {wxTreeCtrl, unselect, 0}}, + {2088, {wxTreeCtrl, unselectAll, 0}}, + {2089, {wxTreeCtrl, unselectItem, 1}}, + {2090, {wxScrollBar, new_0, 0}}, + {2091, {wxScrollBar, new_3, 3}}, + {2092, {wxScrollBar, destruct, 0}}, + {2093, {wxScrollBar, create, 3}}, + {2094, {wxScrollBar, getRange, 0}}, + {2095, {wxScrollBar, getPageSize, 0}}, + {2096, {wxScrollBar, getThumbPosition, 0}}, + {2097, {wxScrollBar, getThumbSize, 0}}, + {2098, {wxScrollBar, setThumbPosition, 1}}, + {2099, {wxScrollBar, setScrollbar, 5}}, + {2101, {wxSpinButton, new_2, 2}}, + {2102, {wxSpinButton, new_0, 0}}, + {2103, {wxSpinButton, create, 2}}, + {2104, {wxSpinButton, getMax, 0}}, + {2105, {wxSpinButton, getMin, 0}}, + {2106, {wxSpinButton, getValue, 0}}, + {2107, {wxSpinButton, setRange, 2}}, + {2108, {wxSpinButton, setValue, 1}}, + {2109, {wxSpinButton, 'Destroy', undefined}}, + {2110, {wxSpinCtrl, new_0, 0}}, + {2111, {wxSpinCtrl, new_2, 2}}, + {2113, {wxSpinCtrl, create, 2}}, + {2116, {wxSpinCtrl, setValue_1_1, 1}}, + {2117, {wxSpinCtrl, setValue_1_0, 1}}, + {2119, {wxSpinCtrl, getValue, 0}}, + {2121, {wxSpinCtrl, setRange, 2}}, + {2122, {wxSpinCtrl, setSelection, 2}}, + {2124, {wxSpinCtrl, getMin, 0}}, + {2126, {wxSpinCtrl, getMax, 0}}, + {2127, {wxSpinCtrl, 'Destroy', undefined}}, + {2128, {wxStaticText, new_0, 0}}, + {2129, {wxStaticText, new_4, 4}}, + {2130, {wxStaticText, create, 4}}, + {2131, {wxStaticText, getLabel, 0}}, + {2132, {wxStaticText, setLabel, 1}}, + {2133, {wxStaticText, wrap, 1}}, + {2134, {wxStaticText, 'Destroy', undefined}}, + {2135, {wxStaticBitmap, new_0, 0}}, + {2136, {wxStaticBitmap, new_4, 4}}, + {2137, {wxStaticBitmap, create, 4}}, + {2138, {wxStaticBitmap, getBitmap, 0}}, + {2139, {wxStaticBitmap, setBitmap, 1}}, + {2140, {wxStaticBitmap, 'Destroy', undefined}}, + {2141, {wxRadioBox, new, 7}}, + {2143, {wxRadioBox, destruct, 0}}, + {2144, {wxRadioBox, create, 7}}, + {2145, {wxRadioBox, enable_2, 2}}, + {2146, {wxRadioBox, enable_1, 1}}, + {2147, {wxRadioBox, getSelection, 0}}, + {2148, {wxRadioBox, getString, 1}}, + {2149, {wxRadioBox, setSelection, 1}}, + {2150, {wxRadioBox, show_2, 2}}, + {2151, {wxRadioBox, show_1, 1}}, + {2152, {wxRadioBox, getColumnCount, 0}}, + {2153, {wxRadioBox, getItemHelpText, 1}}, + {2154, {wxRadioBox, getItemToolTip, 1}}, + {2156, {wxRadioBox, getItemFromPoint, 1}}, + {2157, {wxRadioBox, getRowCount, 0}}, + {2158, {wxRadioBox, isItemEnabled, 1}}, + {2159, {wxRadioBox, isItemShown, 1}}, + {2160, {wxRadioBox, setItemHelpText, 2}}, + {2161, {wxRadioBox, setItemToolTip, 2}}, + {2162, {wxRadioButton, new_0, 0}}, + {2163, {wxRadioButton, new_4, 4}}, + {2164, {wxRadioButton, create, 4}}, + {2165, {wxRadioButton, getValue, 0}}, + {2166, {wxRadioButton, setValue, 1}}, + {2167, {wxRadioButton, 'Destroy', undefined}}, + {2169, {wxSlider, new_6, 6}}, + {2170, {wxSlider, new_0, 0}}, + {2171, {wxSlider, create, 6}}, + {2172, {wxSlider, getLineSize, 0}}, + {2173, {wxSlider, getMax, 0}}, + {2174, {wxSlider, getMin, 0}}, + {2175, {wxSlider, getPageSize, 0}}, + {2176, {wxSlider, getThumbLength, 0}}, + {2177, {wxSlider, getValue, 0}}, + {2178, {wxSlider, setLineSize, 1}}, + {2179, {wxSlider, setPageSize, 1}}, + {2180, {wxSlider, setRange, 2}}, + {2181, {wxSlider, setThumbLength, 1}}, + {2182, {wxSlider, setValue, 1}}, + {2183, {wxSlider, 'Destroy', undefined}}, + {2185, {wxDialog, new_4, 4}}, + {2186, {wxDialog, new_0, 0}}, + {2188, {wxDialog, destruct, 0}}, + {2189, {wxDialog, create, 4}}, + {2190, {wxDialog, createButtonSizer, 1}}, + {2191, {wxDialog, createStdDialogButtonSizer, 1}}, + {2192, {wxDialog, endModal, 1}}, + {2193, {wxDialog, getAffirmativeId, 0}}, + {2194, {wxDialog, getReturnCode, 0}}, + {2195, {wxDialog, isModal, 0}}, + {2196, {wxDialog, setAffirmativeId, 1}}, + {2197, {wxDialog, setReturnCode, 1}}, + {2198, {wxDialog, show, 1}}, + {2199, {wxDialog, showModal, 0}}, + {2200, {wxColourDialog, new_0, 0}}, + {2201, {wxColourDialog, new_2, 2}}, + {2202, {wxColourDialog, destruct, 0}}, + {2203, {wxColourDialog, create, 2}}, + {2204, {wxColourDialog, getColourData, 0}}, + {2205, {wxColourData, new_0, 0}}, + {2206, {wxColourData, new_1, 1}}, + {2207, {wxColourData, destruct, 0}}, + {2208, {wxColourData, getChooseFull, 0}}, + {2209, {wxColourData, getColour, 0}}, + {2211, {wxColourData, getCustomColour, 1}}, + {2212, {wxColourData, setChooseFull, 1}}, + {2213, {wxColourData, setColour, 1}}, + {2214, {wxColourData, setCustomColour, 2}}, + {2215, {wxPalette, new_0, 0}}, + {2216, {wxPalette, new_4, 4}}, + {2218, {wxPalette, destruct, 0}}, + {2219, {wxPalette, create, 4}}, + {2220, {wxPalette, getColoursCount, 0}}, + {2221, {wxPalette, getPixel, 3}}, + {2222, {wxPalette, getRGB, 4}}, + {2223, {wxPalette, isOk, 0}}, + {2227, {wxDirDialog, new, 2}}, + {2228, {wxDirDialog, destruct, 0}}, + {2229, {wxDirDialog, getPath, 0}}, + {2230, {wxDirDialog, getMessage, 0}}, + {2231, {wxDirDialog, setMessage, 1}}, + {2232, {wxDirDialog, setPath, 1}}, + {2236, {wxFileDialog, new, 2}}, + {2237, {wxFileDialog, destruct, 0}}, + {2238, {wxFileDialog, getDirectory, 0}}, + {2239, {wxFileDialog, getFilename, 0}}, + {2240, {wxFileDialog, getFilenames, 1}}, + {2241, {wxFileDialog, getFilterIndex, 0}}, + {2242, {wxFileDialog, getMessage, 0}}, + {2243, {wxFileDialog, getPath, 0}}, + {2244, {wxFileDialog, getPaths, 1}}, + {2245, {wxFileDialog, getWildcard, 0}}, + {2246, {wxFileDialog, setDirectory, 1}}, + {2247, {wxFileDialog, setFilename, 1}}, + {2248, {wxFileDialog, setFilterIndex, 1}}, + {2249, {wxFileDialog, setMessage, 1}}, + {2250, {wxFileDialog, setPath, 1}}, + {2251, {wxFileDialog, setWildcard, 1}}, + {2252, {wxPickerBase, setInternalMargin, 1}}, + {2253, {wxPickerBase, getInternalMargin, 0}}, + {2254, {wxPickerBase, setTextCtrlProportion, 1}}, + {2255, {wxPickerBase, setPickerCtrlProportion, 1}}, + {2256, {wxPickerBase, getTextCtrlProportion, 0}}, + {2257, {wxPickerBase, getPickerCtrlProportion, 0}}, + {2258, {wxPickerBase, hasTextCtrl, 0}}, + {2259, {wxPickerBase, getTextCtrl, 0}}, + {2260, {wxPickerBase, isTextCtrlGrowable, 0}}, + {2261, {wxPickerBase, setPickerCtrlGrowable, 1}}, + {2262, {wxPickerBase, setTextCtrlGrowable, 1}}, + {2263, {wxPickerBase, isPickerCtrlGrowable, 0}}, + {2264, {wxFilePickerCtrl, new_0, 0}}, + {2265, {wxFilePickerCtrl, new_3, 3}}, + {2266, {wxFilePickerCtrl, create, 3}}, + {2267, {wxFilePickerCtrl, getPath, 0}}, + {2268, {wxFilePickerCtrl, setPath, 1}}, + {2269, {wxFilePickerCtrl, 'Destroy', undefined}}, + {2270, {wxDirPickerCtrl, new_0, 0}}, + {2271, {wxDirPickerCtrl, new_3, 3}}, + {2272, {wxDirPickerCtrl, create, 3}}, + {2273, {wxDirPickerCtrl, getPath, 0}}, + {2274, {wxDirPickerCtrl, setPath, 1}}, + {2275, {wxDirPickerCtrl, 'Destroy', undefined}}, + {2276, {wxColourPickerCtrl, new_0, 0}}, + {2277, {wxColourPickerCtrl, new_3, 3}}, + {2278, {wxColourPickerCtrl, create, 3}}, + {2279, {wxColourPickerCtrl, getColour, 0}}, + {2280, {wxColourPickerCtrl, setColour_1_1, 1}}, + {2281, {wxColourPickerCtrl, setColour_1_0, 1}}, + {2282, {wxColourPickerCtrl, 'Destroy', undefined}}, + {2283, {wxDatePickerCtrl, new_0, 0}}, + {2284, {wxDatePickerCtrl, new_3, 3}}, + {2285, {wxDatePickerCtrl, getRange, 2}}, + {2286, {wxDatePickerCtrl, getValue, 0}}, + {2287, {wxDatePickerCtrl, setRange, 2}}, + {2288, {wxDatePickerCtrl, setValue, 1}}, + {2289, {wxDatePickerCtrl, 'Destroy', undefined}}, + {2290, {wxFontPickerCtrl, new_0, 0}}, + {2291, {wxFontPickerCtrl, new_3, 3}}, + {2292, {wxFontPickerCtrl, create, 3}}, + {2293, {wxFontPickerCtrl, getSelectedFont, 0}}, + {2294, {wxFontPickerCtrl, setSelectedFont, 1}}, + {2295, {wxFontPickerCtrl, getMaxPointSize, 0}}, + {2296, {wxFontPickerCtrl, setMaxPointSize, 1}}, + {2297, {wxFontPickerCtrl, 'Destroy', undefined}}, + {2300, {wxFindReplaceDialog, new_0, 0}}, + {2301, {wxFindReplaceDialog, new_4, 4}}, + {2302, {wxFindReplaceDialog, destruct, 0}}, + {2303, {wxFindReplaceDialog, create, 4}}, + {2304, {wxFindReplaceDialog, getData, 0}}, + {2305, {wxFindReplaceData, new_0, 0}}, + {2306, {wxFindReplaceData, new_1, 1}}, + {2307, {wxFindReplaceData, getFindString, 0}}, + {2308, {wxFindReplaceData, getReplaceString, 0}}, + {2309, {wxFindReplaceData, getFlags, 0}}, + {2310, {wxFindReplaceData, setFlags, 1}}, + {2311, {wxFindReplaceData, setFindString, 1}}, + {2312, {wxFindReplaceData, setReplaceString, 1}}, + {2313, {wxFindReplaceData, 'Destroy', undefined}}, + {2314, {wxMultiChoiceDialog, new_0, 0}}, + {2316, {wxMultiChoiceDialog, new_5, 5}}, + {2317, {wxMultiChoiceDialog, getSelections, 0}}, + {2318, {wxMultiChoiceDialog, setSelections, 1}}, + {2319, {wxMultiChoiceDialog, 'Destroy', undefined}}, + {2320, {wxSingleChoiceDialog, new_0, 0}}, + {2322, {wxSingleChoiceDialog, new_5, 5}}, + {2323, {wxSingleChoiceDialog, getSelection, 0}}, + {2324, {wxSingleChoiceDialog, getStringSelection, 0}}, + {2325, {wxSingleChoiceDialog, setSelection, 1}}, + {2326, {wxSingleChoiceDialog, 'Destroy', undefined}}, + {2327, {wxTextEntryDialog, new, 3}}, + {2328, {wxTextEntryDialog, getValue, 0}}, + {2329, {wxTextEntryDialog, setValue, 1}}, + {2330, {wxTextEntryDialog, 'Destroy', undefined}}, + {2331, {wxPasswordEntryDialog, new, 3}}, + {2332, {wxPasswordEntryDialog, 'Destroy', undefined}}, + {2333, {wxFontData, new_0, 0}}, + {2334, {wxFontData, new_1, 1}}, + {2335, {wxFontData, destruct, 0}}, + {2336, {wxFontData, enableEffects, 1}}, + {2337, {wxFontData, getAllowSymbols, 0}}, + {2338, {wxFontData, getColour, 0}}, + {2339, {wxFontData, getChosenFont, 0}}, + {2340, {wxFontData, getEnableEffects, 0}}, + {2341, {wxFontData, getInitialFont, 0}}, + {2342, {wxFontData, getShowHelp, 0}}, + {2343, {wxFontData, setAllowSymbols, 1}}, + {2344, {wxFontData, setChosenFont, 1}}, + {2345, {wxFontData, setColour, 1}}, + {2346, {wxFontData, setInitialFont, 1}}, + {2347, {wxFontData, setRange, 2}}, + {2348, {wxFontData, setShowHelp, 1}}, + {2352, {wxFontDialog, new_0, 0}}, + {2354, {wxFontDialog, new_2, 2}}, + {2356, {wxFontDialog, create, 2}}, + {2357, {wxFontDialog, getFontData, 0}}, + {2359, {wxFontDialog, 'Destroy', undefined}}, + {2360, {wxProgressDialog, new, 3}}, + {2361, {wxProgressDialog, destruct, 0}}, + {2362, {wxProgressDialog, resume, 0}}, + {2363, {wxProgressDialog, update_2, 2}}, + {2364, {wxProgressDialog, update_0, 0}}, + {2365, {wxMessageDialog, new, 3}}, + {2366, {wxMessageDialog, destruct, 0}}, + {2367, {wxPageSetupDialog, new, 2}}, + {2368, {wxPageSetupDialog, destruct, 0}}, + {2369, {wxPageSetupDialog, getPageSetupData, 0}}, + {2370, {wxPageSetupDialog, showModal, 0}}, + {2371, {wxPageSetupDialogData, new_0, 0}}, + {2372, {wxPageSetupDialogData, new_1_0, 1}}, + {2373, {wxPageSetupDialogData, new_1_1, 1}}, + {2374, {wxPageSetupDialogData, destruct, 0}}, + {2375, {wxPageSetupDialogData, enableHelp, 1}}, + {2376, {wxPageSetupDialogData, enableMargins, 1}}, + {2377, {wxPageSetupDialogData, enableOrientation, 1}}, + {2378, {wxPageSetupDialogData, enablePaper, 1}}, + {2379, {wxPageSetupDialogData, enablePrinter, 1}}, + {2380, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, + {2381, {wxPageSetupDialogData, getEnableMargins, 0}}, + {2382, {wxPageSetupDialogData, getEnableOrientation, 0}}, + {2383, {wxPageSetupDialogData, getEnablePaper, 0}}, + {2384, {wxPageSetupDialogData, getEnablePrinter, 0}}, + {2385, {wxPageSetupDialogData, getEnableHelp, 0}}, + {2386, {wxPageSetupDialogData, getDefaultInfo, 0}}, + {2387, {wxPageSetupDialogData, getMarginTopLeft, 0}}, + {2388, {wxPageSetupDialogData, getMarginBottomRight, 0}}, + {2389, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, + {2390, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, + {2391, {wxPageSetupDialogData, getPaperId, 0}}, + {2392, {wxPageSetupDialogData, getPaperSize, 0}}, + {2394, {wxPageSetupDialogData, getPrintData, 0}}, + {2395, {wxPageSetupDialogData, isOk, 0}}, + {2396, {wxPageSetupDialogData, setDefaultInfo, 1}}, + {2397, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, + {2398, {wxPageSetupDialogData, setMarginTopLeft, 1}}, + {2399, {wxPageSetupDialogData, setMarginBottomRight, 1}}, + {2400, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, + {2401, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, + {2402, {wxPageSetupDialogData, setPaperId, 1}}, + {2403, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, + {2404, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, + {2405, {wxPageSetupDialogData, setPrintData, 1}}, + {2406, {wxPrintDialog, new_2_0, 2}}, + {2407, {wxPrintDialog, new_2_1, 2}}, + {2408, {wxPrintDialog, destruct, 0}}, + {2409, {wxPrintDialog, getPrintDialogData, 0}}, + {2410, {wxPrintDialog, getPrintDC, 0}}, + {2411, {wxPrintDialogData, new_0, 0}}, + {2412, {wxPrintDialogData, new_1_1, 1}}, + {2413, {wxPrintDialogData, new_1_0, 1}}, + {2414, {wxPrintDialogData, destruct, 0}}, + {2415, {wxPrintDialogData, enableHelp, 1}}, + {2416, {wxPrintDialogData, enablePageNumbers, 1}}, + {2417, {wxPrintDialogData, enablePrintToFile, 1}}, + {2418, {wxPrintDialogData, enableSelection, 1}}, + {2419, {wxPrintDialogData, getAllPages, 0}}, + {2420, {wxPrintDialogData, getCollate, 0}}, + {2421, {wxPrintDialogData, getFromPage, 0}}, + {2422, {wxPrintDialogData, getMaxPage, 0}}, + {2423, {wxPrintDialogData, getMinPage, 0}}, + {2424, {wxPrintDialogData, getNoCopies, 0}}, + {2425, {wxPrintDialogData, getPrintData, 0}}, + {2426, {wxPrintDialogData, getPrintToFile, 0}}, + {2427, {wxPrintDialogData, getSelection, 0}}, + {2428, {wxPrintDialogData, getToPage, 0}}, + {2429, {wxPrintDialogData, isOk, 0}}, + {2430, {wxPrintDialogData, setCollate, 1}}, + {2431, {wxPrintDialogData, setFromPage, 1}}, + {2432, {wxPrintDialogData, setMaxPage, 1}}, + {2433, {wxPrintDialogData, setMinPage, 1}}, + {2434, {wxPrintDialogData, setNoCopies, 1}}, + {2435, {wxPrintDialogData, setPrintData, 1}}, + {2436, {wxPrintDialogData, setPrintToFile, 1}}, + {2437, {wxPrintDialogData, setSelection, 1}}, + {2438, {wxPrintDialogData, setToPage, 1}}, + {2439, {wxPrintData, new_0, 0}}, + {2440, {wxPrintData, new_1, 1}}, + {2441, {wxPrintData, destruct, 0}}, + {2442, {wxPrintData, getCollate, 0}}, + {2443, {wxPrintData, getBin, 0}}, + {2444, {wxPrintData, getColour, 0}}, + {2445, {wxPrintData, getDuplex, 0}}, + {2446, {wxPrintData, getNoCopies, 0}}, + {2447, {wxPrintData, getOrientation, 0}}, + {2448, {wxPrintData, getPaperId, 0}}, + {2449, {wxPrintData, getPrinterName, 0}}, + {2450, {wxPrintData, getQuality, 0}}, + {2451, {wxPrintData, isOk, 0}}, + {2452, {wxPrintData, setBin, 1}}, + {2453, {wxPrintData, setCollate, 1}}, + {2454, {wxPrintData, setColour, 1}}, + {2455, {wxPrintData, setDuplex, 1}}, + {2456, {wxPrintData, setNoCopies, 1}}, + {2457, {wxPrintData, setOrientation, 1}}, + {2458, {wxPrintData, setPaperId, 1}}, + {2459, {wxPrintData, setPrinterName, 1}}, + {2460, {wxPrintData, setQuality, 1}}, + {2463, {wxPrintPreview, new_2, 2}}, + {2464, {wxPrintPreview, new_3, 3}}, + {2466, {wxPrintPreview, destruct, 0}}, + {2467, {wxPrintPreview, getCanvas, 0}}, + {2468, {wxPrintPreview, getCurrentPage, 0}}, + {2469, {wxPrintPreview, getFrame, 0}}, + {2470, {wxPrintPreview, getMaxPage, 0}}, + {2471, {wxPrintPreview, getMinPage, 0}}, + {2472, {wxPrintPreview, getPrintout, 0}}, + {2473, {wxPrintPreview, getPrintoutForPrinting, 0}}, + {2474, {wxPrintPreview, isOk, 0}}, + {2475, {wxPrintPreview, paintPage, 2}}, + {2476, {wxPrintPreview, print, 1}}, + {2477, {wxPrintPreview, renderPage, 1}}, + {2478, {wxPrintPreview, setCanvas, 1}}, + {2479, {wxPrintPreview, setCurrentPage, 1}}, + {2480, {wxPrintPreview, setFrame, 1}}, + {2481, {wxPrintPreview, setPrintout, 1}}, + {2482, {wxPrintPreview, setZoom, 1}}, + {2483, {wxPreviewFrame, new, 3}}, + {2484, {wxPreviewFrame, destruct, 0}}, + {2485, {wxPreviewFrame, createControlBar, 0}}, + {2486, {wxPreviewFrame, createCanvas, 0}}, + {2487, {wxPreviewFrame, initialize, 0}}, + {2488, {wxPreviewFrame, onCloseWindow, 1}}, + {2489, {wxPreviewControlBar, new, 4}}, + {2490, {wxPreviewControlBar, destruct, 0}}, + {2491, {wxPreviewControlBar, createButtons, 0}}, + {2492, {wxPreviewControlBar, getPrintPreview, 0}}, + {2493, {wxPreviewControlBar, getZoomControl, 0}}, + {2494, {wxPreviewControlBar, setZoomControl, 1}}, + {2496, {wxPrinter, new, 1}}, + {2497, {wxPrinter, createAbortWindow, 2}}, + {2498, {wxPrinter, getAbort, 0}}, + {2499, {wxPrinter, getLastError, 0}}, + {2500, {wxPrinter, getPrintDialogData, 0}}, + {2501, {wxPrinter, print, 3}}, + {2502, {wxPrinter, printDialog, 1}}, + {2503, {wxPrinter, reportError, 3}}, + {2504, {wxPrinter, setup, 1}}, + {2505, {wxPrinter, 'Destroy', undefined}}, + {2506, {wxXmlResource, new_1, 1}}, + {2507, {wxXmlResource, new_2, 2}}, + {2508, {wxXmlResource, destruct, 0}}, + {2509, {wxXmlResource, attachUnknownControl, 3}}, + {2510, {wxXmlResource, clearHandlers, 0}}, + {2511, {wxXmlResource, compareVersion, 4}}, + {2512, {wxXmlResource, get, 0}}, + {2513, {wxXmlResource, getFlags, 0}}, + {2514, {wxXmlResource, getVersion, 0}}, + {2515, {wxXmlResource, getXRCID, 2}}, + {2516, {wxXmlResource, initAllHandlers, 0}}, + {2517, {wxXmlResource, load, 1}}, + {2518, {wxXmlResource, loadBitmap, 1}}, + {2519, {wxXmlResource, loadDialog_2, 2}}, + {2520, {wxXmlResource, loadDialog_3, 3}}, + {2521, {wxXmlResource, loadFrame_2, 2}}, + {2522, {wxXmlResource, loadFrame_3, 3}}, + {2523, {wxXmlResource, loadIcon, 1}}, + {2524, {wxXmlResource, loadMenu, 1}}, + {2525, {wxXmlResource, loadMenuBar_2, 2}}, + {2526, {wxXmlResource, loadMenuBar_1, 1}}, + {2527, {wxXmlResource, loadPanel_2, 2}}, + {2528, {wxXmlResource, loadPanel_3, 3}}, + {2529, {wxXmlResource, loadToolBar, 2}}, + {2530, {wxXmlResource, set, 1}}, + {2531, {wxXmlResource, setFlags, 1}}, + {2532, {wxXmlResource, unload, 1}}, + {2533, {wxXmlResource, xrcctrl, 3}}, + {2534, {wxHtmlEasyPrinting, new, 1}}, + {2535, {wxHtmlEasyPrinting, destruct, 0}}, + {2536, {wxHtmlEasyPrinting, getPrintData, 0}}, + {2537, {wxHtmlEasyPrinting, getPageSetupData, 0}}, + {2538, {wxHtmlEasyPrinting, previewFile, 1}}, + {2539, {wxHtmlEasyPrinting, previewText, 2}}, + {2540, {wxHtmlEasyPrinting, printFile, 1}}, + {2541, {wxHtmlEasyPrinting, printText, 2}}, + {2542, {wxHtmlEasyPrinting, pageSetup, 0}}, + {2543, {wxHtmlEasyPrinting, setFonts, 3}}, + {2544, {wxHtmlEasyPrinting, setHeader, 2}}, + {2545, {wxHtmlEasyPrinting, setFooter, 2}}, + {2547, {wxGLCanvas, new_2, 2}}, + {2548, {wxGLCanvas, new_3_1, 3}}, + {2549, {wxGLCanvas, new_3_0, 3}}, + {2550, {wxGLCanvas, getContext, 0}}, + {2552, {wxGLCanvas, setCurrent, 0}}, + {2553, {wxGLCanvas, swapBuffers, 0}}, + {2554, {wxGLCanvas, 'Destroy', undefined}}, + {2555, {wxAuiManager, new, 1}}, + {2556, {wxAuiManager, destruct, 0}}, + {2557, {wxAuiManager, addPane_2_1, 2}}, + {2558, {wxAuiManager, addPane_3, 3}}, + {2559, {wxAuiManager, addPane_2_0, 2}}, + {2560, {wxAuiManager, detachPane, 1}}, + {2561, {wxAuiManager, getAllPanes, 0}}, + {2562, {wxAuiManager, getArtProvider, 0}}, + {2563, {wxAuiManager, getDockSizeConstraint, 2}}, + {2564, {wxAuiManager, getFlags, 0}}, + {2565, {wxAuiManager, getManagedWindow, 0}}, + {2566, {wxAuiManager, getManager, 1}}, + {2567, {wxAuiManager, getPane_1_1, 1}}, + {2568, {wxAuiManager, getPane_1_0, 1}}, + {2569, {wxAuiManager, hideHint, 0}}, + {2570, {wxAuiManager, insertPane, 3}}, + {2571, {wxAuiManager, loadPaneInfo, 2}}, + {2572, {wxAuiManager, loadPerspective, 2}}, + {2573, {wxAuiManager, savePaneInfo, 1}}, + {2574, {wxAuiManager, savePerspective, 0}}, + {2575, {wxAuiManager, setArtProvider, 1}}, + {2576, {wxAuiManager, setDockSizeConstraint, 2}}, + {2577, {wxAuiManager, setFlags, 1}}, + {2578, {wxAuiManager, setManagedWindow, 1}}, + {2579, {wxAuiManager, showHint, 1}}, + {2580, {wxAuiManager, unInit, 0}}, + {2581, {wxAuiManager, update, 0}}, + {2582, {wxAuiPaneInfo, new_0, 0}}, + {2583, {wxAuiPaneInfo, new_1, 1}}, + {2584, {wxAuiPaneInfo, destruct, 0}}, + {2585, {wxAuiPaneInfo, bestSize_1, 1}}, + {2586, {wxAuiPaneInfo, bestSize_2, 2}}, + {2587, {wxAuiPaneInfo, bottom, 0}}, + {2588, {wxAuiPaneInfo, bottomDockable, 1}}, + {2589, {wxAuiPaneInfo, caption, 1}}, + {2590, {wxAuiPaneInfo, captionVisible, 1}}, + {2591, {wxAuiPaneInfo, centre, 0}}, + {2592, {wxAuiPaneInfo, centrePane, 0}}, + {2593, {wxAuiPaneInfo, closeButton, 1}}, + {2594, {wxAuiPaneInfo, defaultPane, 0}}, + {2595, {wxAuiPaneInfo, destroyOnClose, 1}}, + {2596, {wxAuiPaneInfo, direction, 1}}, + {2597, {wxAuiPaneInfo, dock, 0}}, + {2598, {wxAuiPaneInfo, dockable, 1}}, + {2599, {wxAuiPaneInfo, fixed, 0}}, + {2600, {wxAuiPaneInfo, float, 0}}, + {2601, {wxAuiPaneInfo, floatable, 1}}, + {2602, {wxAuiPaneInfo, floatingPosition_1, 1}}, + {2603, {wxAuiPaneInfo, floatingPosition_2, 2}}, + {2604, {wxAuiPaneInfo, floatingSize_1, 1}}, + {2605, {wxAuiPaneInfo, floatingSize_2, 2}}, + {2606, {wxAuiPaneInfo, gripper, 1}}, + {2607, {wxAuiPaneInfo, gripperTop, 1}}, + {2608, {wxAuiPaneInfo, hasBorder, 0}}, + {2609, {wxAuiPaneInfo, hasCaption, 0}}, + {2610, {wxAuiPaneInfo, hasCloseButton, 0}}, + {2611, {wxAuiPaneInfo, hasFlag, 1}}, + {2612, {wxAuiPaneInfo, hasGripper, 0}}, + {2613, {wxAuiPaneInfo, hasGripperTop, 0}}, + {2614, {wxAuiPaneInfo, hasMaximizeButton, 0}}, + {2615, {wxAuiPaneInfo, hasMinimizeButton, 0}}, + {2616, {wxAuiPaneInfo, hasPinButton, 0}}, + {2617, {wxAuiPaneInfo, hide, 0}}, + {2618, {wxAuiPaneInfo, isBottomDockable, 0}}, + {2619, {wxAuiPaneInfo, isDocked, 0}}, + {2620, {wxAuiPaneInfo, isFixed, 0}}, + {2621, {wxAuiPaneInfo, isFloatable, 0}}, + {2622, {wxAuiPaneInfo, isFloating, 0}}, + {2623, {wxAuiPaneInfo, isLeftDockable, 0}}, + {2624, {wxAuiPaneInfo, isMovable, 0}}, + {2625, {wxAuiPaneInfo, isOk, 0}}, + {2626, {wxAuiPaneInfo, isResizable, 0}}, + {2627, {wxAuiPaneInfo, isRightDockable, 0}}, + {2628, {wxAuiPaneInfo, isShown, 0}}, + {2629, {wxAuiPaneInfo, isToolbar, 0}}, + {2630, {wxAuiPaneInfo, isTopDockable, 0}}, + {2631, {wxAuiPaneInfo, layer, 1}}, + {2632, {wxAuiPaneInfo, left, 0}}, + {2633, {wxAuiPaneInfo, leftDockable, 1}}, + {2634, {wxAuiPaneInfo, maxSize_1, 1}}, + {2635, {wxAuiPaneInfo, maxSize_2, 2}}, + {2636, {wxAuiPaneInfo, maximizeButton, 1}}, + {2637, {wxAuiPaneInfo, minSize_1, 1}}, + {2638, {wxAuiPaneInfo, minSize_2, 2}}, + {2639, {wxAuiPaneInfo, minimizeButton, 1}}, + {2640, {wxAuiPaneInfo, movable, 1}}, + {2641, {wxAuiPaneInfo, name, 1}}, + {2642, {wxAuiPaneInfo, paneBorder, 1}}, + {2643, {wxAuiPaneInfo, pinButton, 1}}, + {2644, {wxAuiPaneInfo, position, 1}}, + {2645, {wxAuiPaneInfo, resizable, 1}}, + {2646, {wxAuiPaneInfo, right, 0}}, + {2647, {wxAuiPaneInfo, rightDockable, 1}}, + {2648, {wxAuiPaneInfo, row, 1}}, + {2649, {wxAuiPaneInfo, safeSet, 1}}, + {2650, {wxAuiPaneInfo, setFlag, 2}}, + {2651, {wxAuiPaneInfo, show, 1}}, + {2652, {wxAuiPaneInfo, toolbarPane, 0}}, + {2653, {wxAuiPaneInfo, top, 0}}, + {2654, {wxAuiPaneInfo, topDockable, 1}}, + {2655, {wxAuiPaneInfo, window, 1}}, + {2656, {wxAuiPaneInfo, getWindow, 0}}, + {2657, {wxAuiPaneInfo, getFrame, 0}}, + {2658, {wxAuiPaneInfo, getDirection, 0}}, + {2659, {wxAuiPaneInfo, getLayer, 0}}, + {2660, {wxAuiPaneInfo, getRow, 0}}, + {2661, {wxAuiPaneInfo, getPosition, 0}}, + {2662, {wxAuiPaneInfo, getFloatingPosition, 0}}, + {2663, {wxAuiPaneInfo, getFloatingSize, 0}}, + {2664, {wxAuiNotebook, new_0, 0}}, + {2665, {wxAuiNotebook, new_2, 2}}, + {2666, {wxAuiNotebook, addPage, 3}}, + {2667, {wxAuiNotebook, create, 2}}, + {2668, {wxAuiNotebook, deletePage, 1}}, + {2669, {wxAuiNotebook, getArtProvider, 0}}, + {2670, {wxAuiNotebook, getPage, 1}}, + {2671, {wxAuiNotebook, getPageBitmap, 1}}, + {2672, {wxAuiNotebook, getPageCount, 0}}, + {2673, {wxAuiNotebook, getPageIndex, 1}}, + {2674, {wxAuiNotebook, getPageText, 1}}, + {2675, {wxAuiNotebook, getSelection, 0}}, + {2676, {wxAuiNotebook, insertPage, 4}}, + {2677, {wxAuiNotebook, removePage, 1}}, + {2678, {wxAuiNotebook, setArtProvider, 1}}, + {2679, {wxAuiNotebook, setFont, 1}}, + {2680, {wxAuiNotebook, setPageBitmap, 2}}, + {2681, {wxAuiNotebook, setPageText, 2}}, + {2682, {wxAuiNotebook, setSelection, 1}}, + {2683, {wxAuiNotebook, setTabCtrlHeight, 1}}, + {2684, {wxAuiNotebook, setUniformBitmapSize, 1}}, + {2685, {wxAuiNotebook, 'Destroy', undefined}}, + {2686, {wxAuiTabArt, setFlags, 1}}, + {2687, {wxAuiTabArt, setMeasuringFont, 1}}, + {2688, {wxAuiTabArt, setNormalFont, 1}}, + {2689, {wxAuiTabArt, setSelectedFont, 1}}, + {2690, {wxAuiTabArt, setColour, 1}}, + {2691, {wxAuiTabArt, setActiveColour, 1}}, + {2692, {wxAuiDockArt, getColour, 1}}, + {2693, {wxAuiDockArt, getFont, 1}}, + {2694, {wxAuiDockArt, getMetric, 1}}, + {2695, {wxAuiDockArt, setColour, 2}}, + {2696, {wxAuiDockArt, setFont, 2}}, + {2697, {wxAuiDockArt, setMetric, 2}}, + {2698, {wxAuiSimpleTabArt, new, 0}}, + {2699, {wxAuiSimpleTabArt, 'Destroy', undefined}}, + {2700, {wxMDIParentFrame, new_0, 0}}, + {2701, {wxMDIParentFrame, new_4, 4}}, + {2702, {wxMDIParentFrame, destruct, 0}}, + {2703, {wxMDIParentFrame, activateNext, 0}}, + {2704, {wxMDIParentFrame, activatePrevious, 0}}, + {2705, {wxMDIParentFrame, arrangeIcons, 0}}, + {2706, {wxMDIParentFrame, cascade, 0}}, + {2707, {wxMDIParentFrame, create, 4}}, + {2708, {wxMDIParentFrame, getActiveChild, 0}}, + {2709, {wxMDIParentFrame, getClientWindow, 0}}, + {2710, {wxMDIParentFrame, tile, 1}}, + {2711, {wxMDIChildFrame, new_0, 0}}, + {2712, {wxMDIChildFrame, new_4, 4}}, + {2713, {wxMDIChildFrame, destruct, 0}}, + {2714, {wxMDIChildFrame, activate, 0}}, + {2715, {wxMDIChildFrame, create, 4}}, + {2716, {wxMDIChildFrame, maximize, 1}}, + {2717, {wxMDIChildFrame, restore, 0}}, + {2718, {wxMDIClientWindow, new_0, 0}}, + {2719, {wxMDIClientWindow, new_2, 2}}, + {2720, {wxMDIClientWindow, destruct, 0}}, + {2721, {wxMDIClientWindow, createClient, 2}}, + {2722, {wxLayoutAlgorithm, new, 0}}, + {2723, {wxLayoutAlgorithm, layoutFrame, 2}}, + {2724, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, + {2725, {wxLayoutAlgorithm, layoutWindow, 2}}, + {2726, {wxLayoutAlgorithm, 'Destroy', undefined}}, + {2727, {wxEvent, getId, 0}}, + {2728, {wxEvent, getSkipped, 0}}, + {2729, {wxEvent, getTimestamp, 0}}, + {2730, {wxEvent, isCommandEvent, 0}}, + {2731, {wxEvent, resumePropagation, 1}}, + {2732, {wxEvent, shouldPropagate, 0}}, + {2733, {wxEvent, skip, 1}}, + {2734, {wxEvent, stopPropagation, 0}}, + {2735, {wxCommandEvent, getClientData, 0}}, + {2736, {wxCommandEvent, getExtraLong, 0}}, + {2737, {wxCommandEvent, getInt, 0}}, + {2738, {wxCommandEvent, getSelection, 0}}, + {2739, {wxCommandEvent, getString, 0}}, + {2740, {wxCommandEvent, isChecked, 0}}, + {2741, {wxCommandEvent, isSelection, 0}}, + {2742, {wxCommandEvent, setInt, 1}}, + {2743, {wxCommandEvent, setString, 1}}, + {2744, {wxScrollEvent, getOrientation, 0}}, + {2745, {wxScrollEvent, getPosition, 0}}, + {2746, {wxScrollWinEvent, getOrientation, 0}}, + {2747, {wxScrollWinEvent, getPosition, 0}}, + {2748, {wxMouseEvent, altDown, 0}}, + {2749, {wxMouseEvent, button, 1}}, + {2750, {wxMouseEvent, buttonDClick, 1}}, + {2751, {wxMouseEvent, buttonDown, 1}}, + {2752, {wxMouseEvent, buttonUp, 1}}, + {2753, {wxMouseEvent, cmdDown, 0}}, + {2754, {wxMouseEvent, controlDown, 0}}, + {2755, {wxMouseEvent, dragging, 0}}, + {2756, {wxMouseEvent, entering, 0}}, + {2757, {wxMouseEvent, getButton, 0}}, + {2760, {wxMouseEvent, getPosition, 0}}, + {2761, {wxMouseEvent, getLogicalPosition, 1}}, + {2762, {wxMouseEvent, getLinesPerAction, 0}}, + {2763, {wxMouseEvent, getWheelRotation, 0}}, + {2764, {wxMouseEvent, getWheelDelta, 0}}, + {2765, {wxMouseEvent, getX, 0}}, + {2766, {wxMouseEvent, getY, 0}}, + {2767, {wxMouseEvent, isButton, 0}}, + {2768, {wxMouseEvent, isPageScroll, 0}}, + {2769, {wxMouseEvent, leaving, 0}}, + {2770, {wxMouseEvent, leftDClick, 0}}, + {2771, {wxMouseEvent, leftDown, 0}}, + {2772, {wxMouseEvent, leftIsDown, 0}}, + {2773, {wxMouseEvent, leftUp, 0}}, + {2774, {wxMouseEvent, metaDown, 0}}, + {2775, {wxMouseEvent, middleDClick, 0}}, + {2776, {wxMouseEvent, middleDown, 0}}, + {2777, {wxMouseEvent, middleIsDown, 0}}, + {2778, {wxMouseEvent, middleUp, 0}}, + {2779, {wxMouseEvent, moving, 0}}, + {2780, {wxMouseEvent, rightDClick, 0}}, + {2781, {wxMouseEvent, rightDown, 0}}, + {2782, {wxMouseEvent, rightIsDown, 0}}, + {2783, {wxMouseEvent, rightUp, 0}}, + {2784, {wxMouseEvent, shiftDown, 0}}, + {2785, {wxSetCursorEvent, getCursor, 0}}, + {2786, {wxSetCursorEvent, getX, 0}}, + {2787, {wxSetCursorEvent, getY, 0}}, + {2788, {wxSetCursorEvent, hasCursor, 0}}, + {2789, {wxSetCursorEvent, setCursor, 1}}, + {2790, {wxKeyEvent, altDown, 0}}, + {2791, {wxKeyEvent, cmdDown, 0}}, + {2792, {wxKeyEvent, controlDown, 0}}, + {2793, {wxKeyEvent, getKeyCode, 0}}, + {2794, {wxKeyEvent, getModifiers, 0}}, + {2797, {wxKeyEvent, getPosition, 0}}, + {2798, {wxKeyEvent, getRawKeyCode, 0}}, + {2799, {wxKeyEvent, getRawKeyFlags, 0}}, + {2800, {wxKeyEvent, getUnicodeKey, 0}}, + {2801, {wxKeyEvent, getX, 0}}, + {2802, {wxKeyEvent, getY, 0}}, + {2803, {wxKeyEvent, hasModifiers, 0}}, + {2804, {wxKeyEvent, metaDown, 0}}, + {2805, {wxKeyEvent, shiftDown, 0}}, + {2806, {wxSizeEvent, getSize, 0}}, + {2807, {wxMoveEvent, getPosition, 0}}, + {2808, {wxEraseEvent, getDC, 0}}, + {2809, {wxFocusEvent, getWindow, 0}}, + {2810, {wxChildFocusEvent, getWindow, 0}}, + {2811, {wxMenuEvent, getMenu, 0}}, + {2812, {wxMenuEvent, getMenuId, 0}}, + {2813, {wxMenuEvent, isPopup, 0}}, + {2814, {wxCloseEvent, canVeto, 0}}, + {2815, {wxCloseEvent, getLoggingOff, 0}}, + {2816, {wxCloseEvent, setCanVeto, 1}}, + {2817, {wxCloseEvent, setLoggingOff, 1}}, + {2818, {wxCloseEvent, veto, 1}}, + {2819, {wxShowEvent, setShow, 1}}, + {2820, {wxShowEvent, getShow, 0}}, + {2821, {wxIconizeEvent, iconized, 0}}, + {2822, {wxJoystickEvent, buttonDown, 1}}, + {2823, {wxJoystickEvent, buttonIsDown, 1}}, + {2824, {wxJoystickEvent, buttonUp, 1}}, + {2825, {wxJoystickEvent, getButtonChange, 0}}, + {2826, {wxJoystickEvent, getButtonState, 0}}, + {2827, {wxJoystickEvent, getJoystick, 0}}, + {2828, {wxJoystickEvent, getPosition, 0}}, + {2829, {wxJoystickEvent, getZPosition, 0}}, + {2830, {wxJoystickEvent, isButton, 0}}, + {2831, {wxJoystickEvent, isMove, 0}}, + {2832, {wxJoystickEvent, isZMove, 0}}, + {2833, {wxUpdateUIEvent, canUpdate, 1}}, + {2834, {wxUpdateUIEvent, check, 1}}, + {2835, {wxUpdateUIEvent, enable, 1}}, + {2836, {wxUpdateUIEvent, show, 1}}, + {2837, {wxUpdateUIEvent, getChecked, 0}}, + {2838, {wxUpdateUIEvent, getEnabled, 0}}, + {2839, {wxUpdateUIEvent, getShown, 0}}, + {2840, {wxUpdateUIEvent, getSetChecked, 0}}, + {2841, {wxUpdateUIEvent, getSetEnabled, 0}}, + {2842, {wxUpdateUIEvent, getSetShown, 0}}, + {2843, {wxUpdateUIEvent, getSetText, 0}}, + {2844, {wxUpdateUIEvent, getText, 0}}, + {2845, {wxUpdateUIEvent, getMode, 0}}, + {2846, {wxUpdateUIEvent, getUpdateInterval, 0}}, + {2847, {wxUpdateUIEvent, resetUpdateTime, 0}}, + {2848, {wxUpdateUIEvent, setMode, 1}}, + {2849, {wxUpdateUIEvent, setText, 1}}, + {2850, {wxUpdateUIEvent, setUpdateInterval, 1}}, + {2851, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, + {2852, {wxPaletteChangedEvent, setChangedWindow, 1}}, + {2853, {wxPaletteChangedEvent, getChangedWindow, 0}}, + {2854, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, + {2855, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, + {2856, {wxNavigationKeyEvent, getDirection, 0}}, + {2857, {wxNavigationKeyEvent, setDirection, 1}}, + {2858, {wxNavigationKeyEvent, isWindowChange, 0}}, + {2859, {wxNavigationKeyEvent, setWindowChange, 1}}, + {2860, {wxNavigationKeyEvent, isFromTab, 0}}, + {2861, {wxNavigationKeyEvent, setFromTab, 1}}, + {2862, {wxNavigationKeyEvent, getCurrentFocus, 0}}, + {2863, {wxNavigationKeyEvent, setCurrentFocus, 1}}, + {2864, {wxHelpEvent, getOrigin, 0}}, + {2865, {wxHelpEvent, getPosition, 0}}, + {2866, {wxHelpEvent, setOrigin, 1}}, + {2867, {wxHelpEvent, setPosition, 1}}, + {2868, {wxContextMenuEvent, getPosition, 0}}, + {2869, {wxContextMenuEvent, setPosition, 1}}, + {2870, {wxIdleEvent, canSend, 1}}, + {2871, {wxIdleEvent, getMode, 0}}, + {2872, {wxIdleEvent, requestMore, 1}}, + {2873, {wxIdleEvent, moreRequested, 0}}, + {2874, {wxIdleEvent, setMode, 1}}, + {2875, {wxGridEvent, altDown, 0}}, + {2876, {wxGridEvent, controlDown, 0}}, + {2877, {wxGridEvent, getCol, 0}}, + {2878, {wxGridEvent, getPosition, 0}}, + {2879, {wxGridEvent, getRow, 0}}, + {2880, {wxGridEvent, metaDown, 0}}, + {2881, {wxGridEvent, selecting, 0}}, + {2882, {wxGridEvent, shiftDown, 0}}, + {2883, {wxNotifyEvent, allow, 0}}, + {2884, {wxNotifyEvent, isAllowed, 0}}, + {2885, {wxNotifyEvent, veto, 0}}, + {2886, {wxSashEvent, getEdge, 0}}, + {2887, {wxSashEvent, getDragRect, 0}}, + {2888, {wxSashEvent, getDragStatus, 0}}, + {2889, {wxListEvent, getCacheFrom, 0}}, + {2890, {wxListEvent, getCacheTo, 0}}, + {2891, {wxListEvent, getKeyCode, 0}}, + {2892, {wxListEvent, getIndex, 0}}, + {2893, {wxListEvent, getColumn, 0}}, + {2894, {wxListEvent, getPoint, 0}}, + {2895, {wxListEvent, getLabel, 0}}, + {2896, {wxListEvent, getText, 0}}, + {2897, {wxListEvent, getImage, 0}}, + {2898, {wxListEvent, getData, 0}}, + {2899, {wxListEvent, getMask, 0}}, + {2900, {wxListEvent, getItem, 0}}, + {2901, {wxListEvent, isEditCancelled, 0}}, + {2902, {wxDateEvent, getDate, 0}}, + {2903, {wxCalendarEvent, getWeekDay, 0}}, + {2904, {wxFileDirPickerEvent, getPath, 0}}, + {2905, {wxColourPickerEvent, getColour, 0}}, + {2906, {wxFontPickerEvent, getFont, 0}}, + {2907, {wxStyledTextEvent, getPosition, 0}}, + {2908, {wxStyledTextEvent, getKey, 0}}, + {2909, {wxStyledTextEvent, getModifiers, 0}}, + {2910, {wxStyledTextEvent, getModificationType, 0}}, + {2911, {wxStyledTextEvent, getText, 0}}, + {2912, {wxStyledTextEvent, getLength, 0}}, + {2913, {wxStyledTextEvent, getLinesAdded, 0}}, + {2914, {wxStyledTextEvent, getLine, 0}}, + {2915, {wxStyledTextEvent, getFoldLevelNow, 0}}, + {2916, {wxStyledTextEvent, getFoldLevelPrev, 0}}, + {2917, {wxStyledTextEvent, getMargin, 0}}, + {2918, {wxStyledTextEvent, getMessage, 0}}, + {2919, {wxStyledTextEvent, getWParam, 0}}, + {2920, {wxStyledTextEvent, getLParam, 0}}, + {2921, {wxStyledTextEvent, getListType, 0}}, + {2922, {wxStyledTextEvent, getX, 0}}, + {2923, {wxStyledTextEvent, getY, 0}}, + {2924, {wxStyledTextEvent, getDragText, 0}}, + {2925, {wxStyledTextEvent, getDragAllowMove, 0}}, + {2926, {wxStyledTextEvent, getDragResult, 0}}, + {2927, {wxStyledTextEvent, getShift, 0}}, + {2928, {wxStyledTextEvent, getControl, 0}}, + {2929, {wxStyledTextEvent, getAlt, 0}}, + {2930, {utils, getKeyState, 1}}, + {2931, {utils, getMousePosition, 2}}, + {2932, {utils, getMouseState, 0}}, + {2933, {utils, setDetectableAutoRepeat, 1}}, + {2934, {utils, bell, 0}}, + {2935, {utils, findMenuItemId, 3}}, + {2936, {utils, genericFindWindowAtPoint, 1}}, + {2937, {utils, findWindowAtPoint, 1}}, + {2938, {utils, beginBusyCursor, 1}}, + {2939, {utils, endBusyCursor, 0}}, + {2940, {utils, isBusy, 0}}, + {2941, {utils, shutdown, 1}}, + {2942, {utils, shell, 1}}, + {2943, {utils, launchDefaultBrowser, 2}}, + {2944, {utils, getEmailAddress, 0}}, + {2945, {utils, getUserId, 0}}, + {2946, {utils, getHomeDir, 0}}, + {2947, {utils, newId, 0}}, + {2948, {utils, registerId, 1}}, + {2949, {utils, getCurrentId, 0}}, + {2950, {utils, getOsDescription, 0}}, + {2951, {utils, isPlatformLittleEndian, 0}}, + {2952, {utils, isPlatform64Bit, 0}}, + {2953, {gdicmn, displaySize, 2}}, + {2954, {gdicmn, setCursor, 1}}, + {2955, {wxPrintout, new, 1}}, + {2956, {wxPrintout, destruct, 0}}, + {2957, {wxPrintout, getDC, 0}}, + {2958, {wxPrintout, getPageSizeMM, 2}}, + {2959, {wxPrintout, getPageSizePixels, 2}}, + {2960, {wxPrintout, getPaperRectPixels, 0}}, + {2961, {wxPrintout, getPPIPrinter, 2}}, + {2962, {wxPrintout, getPPIScreen, 2}}, + {2963, {wxPrintout, getTitle, 0}}, + {2964, {wxPrintout, isPreview, 0}}, + {2965, {wxPrintout, fitThisSizeToPaper, 1}}, + {2966, {wxPrintout, fitThisSizeToPage, 1}}, + {2967, {wxPrintout, fitThisSizeToPageMargins, 2}}, + {2968, {wxPrintout, mapScreenSizeToPaper, 0}}, + {2969, {wxPrintout, mapScreenSizeToPage, 0}}, + {2970, {wxPrintout, mapScreenSizeToPageMargins, 1}}, + {2971, {wxPrintout, mapScreenSizeToDevice, 0}}, + {2972, {wxPrintout, getLogicalPaperRect, 0}}, + {2973, {wxPrintout, getLogicalPageRect, 0}}, + {2974, {wxPrintout, getLogicalPageMarginsRect, 1}}, + {2975, {wxPrintout, setLogicalOrigin, 2}}, + {2976, {wxPrintout, offsetLogicalOrigin, 2}}, + {2977, {wxStyledTextCtrl, new_2, 2}}, + {2978, {wxStyledTextCtrl, new_0, 0}}, + {2979, {wxStyledTextCtrl, destruct, 0}}, + {2980, {wxStyledTextCtrl, create, 2}}, + {2981, {wxStyledTextCtrl, addText, 1}}, + {2982, {wxStyledTextCtrl, addStyledText, 1}}, + {2983, {wxStyledTextCtrl, insertText, 2}}, + {2984, {wxStyledTextCtrl, clearAll, 0}}, + {2985, {wxStyledTextCtrl, clearDocumentStyle, 0}}, + {2986, {wxStyledTextCtrl, getLength, 0}}, + {2987, {wxStyledTextCtrl, getCharAt, 1}}, + {2988, {wxStyledTextCtrl, getCurrentPos, 0}}, + {2989, {wxStyledTextCtrl, getAnchor, 0}}, + {2990, {wxStyledTextCtrl, getStyleAt, 1}}, + {2991, {wxStyledTextCtrl, redo, 0}}, + {2992, {wxStyledTextCtrl, setUndoCollection, 1}}, + {2993, {wxStyledTextCtrl, selectAll, 0}}, + {2994, {wxStyledTextCtrl, setSavePoint, 0}}, + {2995, {wxStyledTextCtrl, getStyledText, 2}}, + {2996, {wxStyledTextCtrl, canRedo, 0}}, + {2997, {wxStyledTextCtrl, markerLineFromHandle, 1}}, + {2998, {wxStyledTextCtrl, markerDeleteHandle, 1}}, + {2999, {wxStyledTextCtrl, getUndoCollection, 0}}, + {3000, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, + {3001, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, + {3002, {wxStyledTextCtrl, positionFromPoint, 1}}, + {3003, {wxStyledTextCtrl, positionFromPointClose, 2}}, + {3004, {wxStyledTextCtrl, gotoLine, 1}}, + {3005, {wxStyledTextCtrl, gotoPos, 1}}, + {3006, {wxStyledTextCtrl, setAnchor, 1}}, + {3007, {wxStyledTextCtrl, getCurLine, 1}}, + {3008, {wxStyledTextCtrl, getEndStyled, 0}}, + {3009, {wxStyledTextCtrl, convertEOLs, 1}}, + {3010, {wxStyledTextCtrl, getEOLMode, 0}}, + {3011, {wxStyledTextCtrl, setEOLMode, 1}}, + {3012, {wxStyledTextCtrl, startStyling, 2}}, + {3013, {wxStyledTextCtrl, setStyling, 2}}, + {3014, {wxStyledTextCtrl, getBufferedDraw, 0}}, + {3015, {wxStyledTextCtrl, setBufferedDraw, 1}}, + {3016, {wxStyledTextCtrl, setTabWidth, 1}}, + {3017, {wxStyledTextCtrl, getTabWidth, 0}}, + {3018, {wxStyledTextCtrl, setCodePage, 1}}, + {3019, {wxStyledTextCtrl, markerDefine, 3}}, + {3020, {wxStyledTextCtrl, markerSetForeground, 2}}, + {3021, {wxStyledTextCtrl, markerSetBackground, 2}}, + {3022, {wxStyledTextCtrl, markerAdd, 2}}, + {3023, {wxStyledTextCtrl, markerDelete, 2}}, + {3024, {wxStyledTextCtrl, markerDeleteAll, 1}}, + {3025, {wxStyledTextCtrl, markerGet, 1}}, + {3026, {wxStyledTextCtrl, markerNext, 2}}, + {3027, {wxStyledTextCtrl, markerPrevious, 2}}, + {3028, {wxStyledTextCtrl, markerDefineBitmap, 2}}, + {3029, {wxStyledTextCtrl, markerAddSet, 2}}, + {3030, {wxStyledTextCtrl, markerSetAlpha, 2}}, + {3031, {wxStyledTextCtrl, setMarginType, 2}}, + {3032, {wxStyledTextCtrl, getMarginType, 1}}, + {3033, {wxStyledTextCtrl, setMarginWidth, 2}}, + {3034, {wxStyledTextCtrl, getMarginWidth, 1}}, + {3035, {wxStyledTextCtrl, setMarginMask, 2}}, + {3036, {wxStyledTextCtrl, getMarginMask, 1}}, + {3037, {wxStyledTextCtrl, setMarginSensitive, 2}}, + {3038, {wxStyledTextCtrl, getMarginSensitive, 1}}, + {3039, {wxStyledTextCtrl, styleClearAll, 0}}, + {3040, {wxStyledTextCtrl, styleSetForeground, 2}}, + {3041, {wxStyledTextCtrl, styleSetBackground, 2}}, + {3042, {wxStyledTextCtrl, styleSetBold, 2}}, + {3043, {wxStyledTextCtrl, styleSetItalic, 2}}, + {3044, {wxStyledTextCtrl, styleSetSize, 2}}, + {3045, {wxStyledTextCtrl, styleSetFaceName, 2}}, + {3046, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, + {3047, {wxStyledTextCtrl, styleResetDefault, 0}}, + {3048, {wxStyledTextCtrl, styleSetUnderline, 2}}, + {3049, {wxStyledTextCtrl, styleSetCase, 2}}, + {3050, {wxStyledTextCtrl, styleSetHotSpot, 2}}, + {3051, {wxStyledTextCtrl, setSelForeground, 2}}, + {3052, {wxStyledTextCtrl, setSelBackground, 2}}, + {3053, {wxStyledTextCtrl, getSelAlpha, 0}}, + {3054, {wxStyledTextCtrl, setSelAlpha, 1}}, + {3055, {wxStyledTextCtrl, setCaretForeground, 1}}, + {3056, {wxStyledTextCtrl, cmdKeyAssign, 3}}, + {3057, {wxStyledTextCtrl, cmdKeyClear, 2}}, + {3058, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, + {3059, {wxStyledTextCtrl, setStyleBytes, 2}}, + {3060, {wxStyledTextCtrl, styleSetVisible, 2}}, + {3061, {wxStyledTextCtrl, getCaretPeriod, 0}}, + {3062, {wxStyledTextCtrl, setCaretPeriod, 1}}, + {3063, {wxStyledTextCtrl, setWordChars, 1}}, + {3064, {wxStyledTextCtrl, beginUndoAction, 0}}, + {3065, {wxStyledTextCtrl, endUndoAction, 0}}, + {3066, {wxStyledTextCtrl, indicatorSetStyle, 2}}, + {3067, {wxStyledTextCtrl, indicatorGetStyle, 1}}, + {3068, {wxStyledTextCtrl, indicatorSetForeground, 2}}, + {3069, {wxStyledTextCtrl, indicatorGetForeground, 1}}, + {3070, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, + {3071, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, + {3072, {wxStyledTextCtrl, getStyleBits, 0}}, + {3073, {wxStyledTextCtrl, setLineState, 2}}, + {3074, {wxStyledTextCtrl, getLineState, 1}}, + {3075, {wxStyledTextCtrl, getMaxLineState, 0}}, + {3076, {wxStyledTextCtrl, getCaretLineVisible, 0}}, + {3077, {wxStyledTextCtrl, setCaretLineVisible, 1}}, + {3078, {wxStyledTextCtrl, getCaretLineBackground, 0}}, + {3079, {wxStyledTextCtrl, setCaretLineBackground, 1}}, + {3080, {wxStyledTextCtrl, autoCompShow, 2}}, + {3081, {wxStyledTextCtrl, autoCompCancel, 0}}, + {3082, {wxStyledTextCtrl, autoCompActive, 0}}, + {3083, {wxStyledTextCtrl, autoCompPosStart, 0}}, + {3084, {wxStyledTextCtrl, autoCompComplete, 0}}, + {3085, {wxStyledTextCtrl, autoCompStops, 1}}, + {3086, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, + {3087, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, + {3088, {wxStyledTextCtrl, autoCompSelect, 1}}, + {3089, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, + {3090, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, + {3091, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, + {3092, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, + {3093, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, + {3094, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, + {3095, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, + {3096, {wxStyledTextCtrl, userListShow, 2}}, + {3097, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, + {3098, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, + {3099, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, + {3100, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, + {3101, {wxStyledTextCtrl, registerImage, 2}}, + {3102, {wxStyledTextCtrl, clearRegisteredImages, 0}}, + {3103, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, + {3104, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, + {3105, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, + {3106, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, + {3107, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, + {3108, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, + {3109, {wxStyledTextCtrl, setIndent, 1}}, + {3110, {wxStyledTextCtrl, getIndent, 0}}, + {3111, {wxStyledTextCtrl, setUseTabs, 1}}, + {3112, {wxStyledTextCtrl, getUseTabs, 0}}, + {3113, {wxStyledTextCtrl, setLineIndentation, 2}}, + {3114, {wxStyledTextCtrl, getLineIndentation, 1}}, + {3115, {wxStyledTextCtrl, getLineIndentPosition, 1}}, + {3116, {wxStyledTextCtrl, getColumn, 1}}, + {3117, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, + {3118, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, + {3119, {wxStyledTextCtrl, setIndentationGuides, 1}}, + {3120, {wxStyledTextCtrl, getIndentationGuides, 0}}, + {3121, {wxStyledTextCtrl, setHighlightGuide, 1}}, + {3122, {wxStyledTextCtrl, getHighlightGuide, 0}}, + {3123, {wxStyledTextCtrl, getLineEndPosition, 1}}, + {3124, {wxStyledTextCtrl, getCodePage, 0}}, + {3125, {wxStyledTextCtrl, getCaretForeground, 0}}, + {3126, {wxStyledTextCtrl, getReadOnly, 0}}, + {3127, {wxStyledTextCtrl, setCurrentPos, 1}}, + {3128, {wxStyledTextCtrl, setSelectionStart, 1}}, + {3129, {wxStyledTextCtrl, getSelectionStart, 0}}, + {3130, {wxStyledTextCtrl, setSelectionEnd, 1}}, + {3131, {wxStyledTextCtrl, getSelectionEnd, 0}}, + {3132, {wxStyledTextCtrl, setPrintMagnification, 1}}, + {3133, {wxStyledTextCtrl, getPrintMagnification, 0}}, + {3134, {wxStyledTextCtrl, setPrintColourMode, 1}}, + {3135, {wxStyledTextCtrl, getPrintColourMode, 0}}, + {3136, {wxStyledTextCtrl, findText, 4}}, + {3137, {wxStyledTextCtrl, formatRange, 7}}, + {3138, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, + {3139, {wxStyledTextCtrl, getLine, 1}}, + {3140, {wxStyledTextCtrl, getLineCount, 0}}, + {3141, {wxStyledTextCtrl, setMarginLeft, 1}}, + {3142, {wxStyledTextCtrl, getMarginLeft, 0}}, + {3143, {wxStyledTextCtrl, setMarginRight, 1}}, + {3144, {wxStyledTextCtrl, getMarginRight, 0}}, + {3145, {wxStyledTextCtrl, getModify, 0}}, + {3146, {wxStyledTextCtrl, setSelection, 2}}, + {3147, {wxStyledTextCtrl, getSelectedText, 0}}, + {3148, {wxStyledTextCtrl, getTextRange, 2}}, + {3149, {wxStyledTextCtrl, hideSelection, 1}}, + {3150, {wxStyledTextCtrl, lineFromPosition, 1}}, + {3151, {wxStyledTextCtrl, positionFromLine, 1}}, + {3152, {wxStyledTextCtrl, lineScroll, 2}}, + {3153, {wxStyledTextCtrl, ensureCaretVisible, 0}}, + {3154, {wxStyledTextCtrl, replaceSelection, 1}}, + {3155, {wxStyledTextCtrl, setReadOnly, 1}}, + {3156, {wxStyledTextCtrl, canPaste, 0}}, + {3157, {wxStyledTextCtrl, canUndo, 0}}, + {3158, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, + {3159, {wxStyledTextCtrl, undo, 0}}, + {3160, {wxStyledTextCtrl, cut, 0}}, + {3161, {wxStyledTextCtrl, copy, 0}}, + {3162, {wxStyledTextCtrl, paste, 0}}, + {3163, {wxStyledTextCtrl, clear, 0}}, + {3164, {wxStyledTextCtrl, setText, 1}}, + {3165, {wxStyledTextCtrl, getText, 0}}, + {3166, {wxStyledTextCtrl, getTextLength, 0}}, + {3167, {wxStyledTextCtrl, getOvertype, 0}}, + {3168, {wxStyledTextCtrl, setCaretWidth, 1}}, + {3169, {wxStyledTextCtrl, getCaretWidth, 0}}, + {3170, {wxStyledTextCtrl, setTargetStart, 1}}, + {3171, {wxStyledTextCtrl, getTargetStart, 0}}, + {3172, {wxStyledTextCtrl, setTargetEnd, 1}}, + {3173, {wxStyledTextCtrl, getTargetEnd, 0}}, + {3174, {wxStyledTextCtrl, replaceTarget, 1}}, + {3175, {wxStyledTextCtrl, searchInTarget, 1}}, + {3176, {wxStyledTextCtrl, setSearchFlags, 1}}, + {3177, {wxStyledTextCtrl, getSearchFlags, 0}}, + {3178, {wxStyledTextCtrl, callTipShow, 2}}, + {3179, {wxStyledTextCtrl, callTipCancel, 0}}, + {3180, {wxStyledTextCtrl, callTipActive, 0}}, + {3181, {wxStyledTextCtrl, callTipPosAtStart, 0}}, + {3182, {wxStyledTextCtrl, callTipSetHighlight, 2}}, + {3183, {wxStyledTextCtrl, callTipSetBackground, 1}}, + {3184, {wxStyledTextCtrl, callTipSetForeground, 1}}, + {3185, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, + {3186, {wxStyledTextCtrl, callTipUseStyle, 1}}, + {3187, {wxStyledTextCtrl, visibleFromDocLine, 1}}, + {3188, {wxStyledTextCtrl, docLineFromVisible, 1}}, + {3189, {wxStyledTextCtrl, wrapCount, 1}}, + {3190, {wxStyledTextCtrl, setFoldLevel, 2}}, + {3191, {wxStyledTextCtrl, getFoldLevel, 1}}, + {3192, {wxStyledTextCtrl, getLastChild, 2}}, + {3193, {wxStyledTextCtrl, getFoldParent, 1}}, + {3194, {wxStyledTextCtrl, showLines, 2}}, + {3195, {wxStyledTextCtrl, hideLines, 2}}, + {3196, {wxStyledTextCtrl, getLineVisible, 1}}, + {3197, {wxStyledTextCtrl, setFoldExpanded, 2}}, + {3198, {wxStyledTextCtrl, getFoldExpanded, 1}}, + {3199, {wxStyledTextCtrl, toggleFold, 1}}, + {3200, {wxStyledTextCtrl, ensureVisible, 1}}, + {3201, {wxStyledTextCtrl, setFoldFlags, 1}}, + {3202, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, + {3203, {wxStyledTextCtrl, setTabIndents, 1}}, + {3204, {wxStyledTextCtrl, getTabIndents, 0}}, + {3205, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, + {3206, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, + {3207, {wxStyledTextCtrl, setMouseDwellTime, 1}}, + {3208, {wxStyledTextCtrl, getMouseDwellTime, 0}}, + {3209, {wxStyledTextCtrl, wordStartPosition, 2}}, + {3210, {wxStyledTextCtrl, wordEndPosition, 2}}, + {3211, {wxStyledTextCtrl, setWrapMode, 1}}, + {3212, {wxStyledTextCtrl, getWrapMode, 0}}, + {3213, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, + {3214, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, + {3215, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, + {3216, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, + {3217, {wxStyledTextCtrl, setWrapStartIndent, 1}}, + {3218, {wxStyledTextCtrl, getWrapStartIndent, 0}}, + {3219, {wxStyledTextCtrl, setLayoutCache, 1}}, + {3220, {wxStyledTextCtrl, getLayoutCache, 0}}, + {3221, {wxStyledTextCtrl, setScrollWidth, 1}}, + {3222, {wxStyledTextCtrl, getScrollWidth, 0}}, + {3223, {wxStyledTextCtrl, textWidth, 2}}, + {3224, {wxStyledTextCtrl, getEndAtLastLine, 0}}, + {3225, {wxStyledTextCtrl, textHeight, 1}}, + {3226, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, + {3227, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, + {3228, {wxStyledTextCtrl, appendText, 1}}, + {3229, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, + {3230, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, + {3231, {wxStyledTextCtrl, targetFromSelection, 0}}, + {3232, {wxStyledTextCtrl, linesJoin, 0}}, + {3233, {wxStyledTextCtrl, linesSplit, 1}}, + {3234, {wxStyledTextCtrl, setFoldMarginColour, 2}}, + {3235, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, + {3236, {wxStyledTextCtrl, lineDown, 0}}, + {3237, {wxStyledTextCtrl, lineDownExtend, 0}}, + {3238, {wxStyledTextCtrl, lineUp, 0}}, + {3239, {wxStyledTextCtrl, lineUpExtend, 0}}, + {3240, {wxStyledTextCtrl, charLeft, 0}}, + {3241, {wxStyledTextCtrl, charLeftExtend, 0}}, + {3242, {wxStyledTextCtrl, charRight, 0}}, + {3243, {wxStyledTextCtrl, charRightExtend, 0}}, + {3244, {wxStyledTextCtrl, wordLeft, 0}}, + {3245, {wxStyledTextCtrl, wordLeftExtend, 0}}, + {3246, {wxStyledTextCtrl, wordRight, 0}}, + {3247, {wxStyledTextCtrl, wordRightExtend, 0}}, + {3248, {wxStyledTextCtrl, home, 0}}, + {3249, {wxStyledTextCtrl, homeExtend, 0}}, + {3250, {wxStyledTextCtrl, lineEnd, 0}}, + {3251, {wxStyledTextCtrl, lineEndExtend, 0}}, + {3252, {wxStyledTextCtrl, documentStart, 0}}, + {3253, {wxStyledTextCtrl, documentStartExtend, 0}}, + {3254, {wxStyledTextCtrl, documentEnd, 0}}, + {3255, {wxStyledTextCtrl, documentEndExtend, 0}}, + {3256, {wxStyledTextCtrl, pageUp, 0}}, + {3257, {wxStyledTextCtrl, pageUpExtend, 0}}, + {3258, {wxStyledTextCtrl, pageDown, 0}}, + {3259, {wxStyledTextCtrl, pageDownExtend, 0}}, + {3260, {wxStyledTextCtrl, editToggleOvertype, 0}}, + {3261, {wxStyledTextCtrl, cancel, 0}}, + {3262, {wxStyledTextCtrl, deleteBack, 0}}, + {3263, {wxStyledTextCtrl, tab, 0}}, + {3264, {wxStyledTextCtrl, backTab, 0}}, + {3265, {wxStyledTextCtrl, newLine, 0}}, + {3266, {wxStyledTextCtrl, formFeed, 0}}, + {3267, {wxStyledTextCtrl, vCHome, 0}}, + {3268, {wxStyledTextCtrl, vCHomeExtend, 0}}, + {3269, {wxStyledTextCtrl, zoomIn, 0}}, + {3270, {wxStyledTextCtrl, zoomOut, 0}}, + {3271, {wxStyledTextCtrl, delWordLeft, 0}}, + {3272, {wxStyledTextCtrl, delWordRight, 0}}, + {3273, {wxStyledTextCtrl, lineCut, 0}}, + {3274, {wxStyledTextCtrl, lineDelete, 0}}, + {3275, {wxStyledTextCtrl, lineTranspose, 0}}, + {3276, {wxStyledTextCtrl, lineDuplicate, 0}}, + {3277, {wxStyledTextCtrl, lowerCase, 0}}, + {3278, {wxStyledTextCtrl, upperCase, 0}}, + {3279, {wxStyledTextCtrl, lineScrollDown, 0}}, + {3280, {wxStyledTextCtrl, lineScrollUp, 0}}, + {3281, {wxStyledTextCtrl, deleteBackNotLine, 0}}, + {3282, {wxStyledTextCtrl, homeDisplay, 0}}, + {3283, {wxStyledTextCtrl, homeDisplayExtend, 0}}, + {3284, {wxStyledTextCtrl, lineEndDisplay, 0}}, + {3285, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, + {3286, {wxStyledTextCtrl, homeWrapExtend, 0}}, + {3287, {wxStyledTextCtrl, lineEndWrap, 0}}, + {3288, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, + {3289, {wxStyledTextCtrl, vCHomeWrap, 0}}, + {3290, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, + {3291, {wxStyledTextCtrl, lineCopy, 0}}, + {3292, {wxStyledTextCtrl, moveCaretInsideView, 0}}, + {3293, {wxStyledTextCtrl, lineLength, 1}}, + {3294, {wxStyledTextCtrl, braceHighlight, 2}}, + {3295, {wxStyledTextCtrl, braceBadLight, 1}}, + {3296, {wxStyledTextCtrl, braceMatch, 1}}, + {3297, {wxStyledTextCtrl, getViewEOL, 0}}, + {3298, {wxStyledTextCtrl, setViewEOL, 1}}, + {3299, {wxStyledTextCtrl, setModEventMask, 1}}, + {3300, {wxStyledTextCtrl, getEdgeColumn, 0}}, + {3301, {wxStyledTextCtrl, setEdgeColumn, 1}}, + {3302, {wxStyledTextCtrl, setEdgeMode, 1}}, + {3303, {wxStyledTextCtrl, getEdgeMode, 0}}, + {3304, {wxStyledTextCtrl, getEdgeColour, 0}}, + {3305, {wxStyledTextCtrl, setEdgeColour, 1}}, + {3306, {wxStyledTextCtrl, searchAnchor, 0}}, + {3307, {wxStyledTextCtrl, searchNext, 2}}, + {3308, {wxStyledTextCtrl, searchPrev, 2}}, + {3309, {wxStyledTextCtrl, linesOnScreen, 0}}, + {3310, {wxStyledTextCtrl, usePopUp, 1}}, + {3311, {wxStyledTextCtrl, selectionIsRectangle, 0}}, + {3312, {wxStyledTextCtrl, setZoom, 1}}, + {3313, {wxStyledTextCtrl, getZoom, 0}}, + {3314, {wxStyledTextCtrl, getModEventMask, 0}}, + {3315, {wxStyledTextCtrl, setSTCFocus, 1}}, + {3316, {wxStyledTextCtrl, getSTCFocus, 0}}, + {3317, {wxStyledTextCtrl, setStatus, 1}}, + {3318, {wxStyledTextCtrl, getStatus, 0}}, + {3319, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, + {3320, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, + {3321, {wxStyledTextCtrl, setSTCCursor, 1}}, + {3322, {wxStyledTextCtrl, getSTCCursor, 0}}, + {3323, {wxStyledTextCtrl, setControlCharSymbol, 1}}, + {3324, {wxStyledTextCtrl, getControlCharSymbol, 0}}, + {3325, {wxStyledTextCtrl, wordPartLeft, 0}}, + {3326, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, + {3327, {wxStyledTextCtrl, wordPartRight, 0}}, + {3328, {wxStyledTextCtrl, wordPartRightExtend, 0}}, + {3329, {wxStyledTextCtrl, setVisiblePolicy, 2}}, + {3330, {wxStyledTextCtrl, delLineLeft, 0}}, + {3331, {wxStyledTextCtrl, delLineRight, 0}}, + {3332, {wxStyledTextCtrl, getXOffset, 0}}, + {3333, {wxStyledTextCtrl, chooseCaretX, 0}}, + {3334, {wxStyledTextCtrl, setXCaretPolicy, 2}}, + {3335, {wxStyledTextCtrl, setYCaretPolicy, 2}}, + {3336, {wxStyledTextCtrl, getPrintWrapMode, 0}}, + {3337, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, + {3338, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, + {3339, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, + {3340, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, + {3341, {wxStyledTextCtrl, paraDownExtend, 0}}, + {3342, {wxStyledTextCtrl, paraUp, 0}}, + {3343, {wxStyledTextCtrl, paraUpExtend, 0}}, + {3344, {wxStyledTextCtrl, positionBefore, 1}}, + {3345, {wxStyledTextCtrl, positionAfter, 1}}, + {3346, {wxStyledTextCtrl, copyRange, 2}}, + {3347, {wxStyledTextCtrl, copyText, 2}}, + {3348, {wxStyledTextCtrl, setSelectionMode, 1}}, + {3349, {wxStyledTextCtrl, getSelectionMode, 0}}, + {3350, {wxStyledTextCtrl, lineDownRectExtend, 0}}, + {3351, {wxStyledTextCtrl, lineUpRectExtend, 0}}, + {3352, {wxStyledTextCtrl, charLeftRectExtend, 0}}, + {3353, {wxStyledTextCtrl, charRightRectExtend, 0}}, + {3354, {wxStyledTextCtrl, homeRectExtend, 0}}, + {3355, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, + {3356, {wxStyledTextCtrl, lineEndRectExtend, 0}}, + {3357, {wxStyledTextCtrl, pageUpRectExtend, 0}}, + {3358, {wxStyledTextCtrl, pageDownRectExtend, 0}}, + {3359, {wxStyledTextCtrl, stutteredPageUp, 0}}, + {3360, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, + {3361, {wxStyledTextCtrl, stutteredPageDown, 0}}, + {3362, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, + {3363, {wxStyledTextCtrl, wordLeftEnd, 0}}, + {3364, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, + {3365, {wxStyledTextCtrl, wordRightEnd, 0}}, + {3366, {wxStyledTextCtrl, wordRightEndExtend, 0}}, + {3367, {wxStyledTextCtrl, setWhitespaceChars, 1}}, + {3368, {wxStyledTextCtrl, setCharsDefault, 0}}, + {3369, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, + {3370, {wxStyledTextCtrl, allocate, 1}}, + {3371, {wxStyledTextCtrl, findColumn, 2}}, + {3372, {wxStyledTextCtrl, getCaretSticky, 0}}, + {3373, {wxStyledTextCtrl, setCaretSticky, 1}}, + {3374, {wxStyledTextCtrl, toggleCaretSticky, 0}}, + {3375, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, + {3376, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, + {3377, {wxStyledTextCtrl, selectionDuplicate, 0}}, + {3378, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, + {3379, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, + {3380, {wxStyledTextCtrl, startRecord, 0}}, + {3381, {wxStyledTextCtrl, stopRecord, 0}}, + {3382, {wxStyledTextCtrl, setLexer, 1}}, + {3383, {wxStyledTextCtrl, getLexer, 0}}, + {3384, {wxStyledTextCtrl, colourise, 2}}, + {3385, {wxStyledTextCtrl, setProperty, 2}}, + {3386, {wxStyledTextCtrl, setKeyWords, 2}}, + {3387, {wxStyledTextCtrl, setLexerLanguage, 1}}, + {3388, {wxStyledTextCtrl, getProperty, 1}}, + {3389, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, + {3390, {wxStyledTextCtrl, getCurrentLine, 0}}, + {3391, {wxStyledTextCtrl, styleSetSpec, 2}}, + {3392, {wxStyledTextCtrl, styleSetFont, 2}}, + {3393, {wxStyledTextCtrl, styleSetFontAttr, 7}}, + {3394, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, + {3395, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, + {3396, {wxStyledTextCtrl, cmdKeyExecute, 1}}, + {3397, {wxStyledTextCtrl, setMargins, 2}}, + {3398, {wxStyledTextCtrl, getSelection, 2}}, + {3399, {wxStyledTextCtrl, pointFromPosition, 1}}, + {3400, {wxStyledTextCtrl, scrollToLine, 1}}, + {3401, {wxStyledTextCtrl, scrollToColumn, 1}}, + {3402, {wxStyledTextCtrl, setVScrollBar, 1}}, + {3403, {wxStyledTextCtrl, setHScrollBar, 1}}, + {3404, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, + {3405, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, + {3406, {wxStyledTextCtrl, saveFile, 1}}, + {3407, {wxStyledTextCtrl, loadFile, 1}}, + {3408, {wxStyledTextCtrl, doDragOver, 3}}, + {3409, {wxStyledTextCtrl, doDropText, 3}}, + {3410, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, + {3411, {wxStyledTextCtrl, addTextRaw, 1}}, + {3412, {wxStyledTextCtrl, insertTextRaw, 2}}, + {3413, {wxStyledTextCtrl, getCurLineRaw, 1}}, + {3414, {wxStyledTextCtrl, getLineRaw, 1}}, + {3415, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, + {3416, {wxStyledTextCtrl, getTextRangeRaw, 2}}, + {3417, {wxStyledTextCtrl, setTextRaw, 1}}, + {3418, {wxStyledTextCtrl, getTextRaw, 0}}, + {3419, {wxStyledTextCtrl, appendTextRaw, 1}}, + {3420, {wxArtProvider, getBitmap, 2}}, + {3421, {wxArtProvider, getIcon, 2}}, + {3422, {wxTreeEvent, getKeyCode, 0}}, + {3423, {wxTreeEvent, getItem, 0}}, + {3424, {wxTreeEvent, getKeyEvent, 0}}, + {3425, {wxTreeEvent, getLabel, 0}}, + {3426, {wxTreeEvent, getOldItem, 0}}, + {3427, {wxTreeEvent, getPoint, 0}}, + {3428, {wxTreeEvent, isEditCancelled, 0}}, + {3429, {wxTreeEvent, setToolTip, 1}}, + {3430, {wxNotebookEvent, getOldSelection, 0}}, + {3431, {wxNotebookEvent, getSelection, 0}}, + {3432, {wxNotebookEvent, setOldSelection, 1}}, + {3433, {wxNotebookEvent, setSelection, 1}}, + {3434, {wxFileDataObject, new, 0}}, + {3435, {wxFileDataObject, addFile, 1}}, + {3436, {wxFileDataObject, getFilenames, 0}}, + {3437, {wxFileDataObject, 'Destroy', undefined}}, + {3438, {wxTextDataObject, new, 1}}, + {3439, {wxTextDataObject, getTextLength, 0}}, + {3440, {wxTextDataObject, getText, 0}}, + {3441, {wxTextDataObject, setText, 1}}, + {3442, {wxTextDataObject, 'Destroy', undefined}}, + {3443, {wxBitmapDataObject, new_1_1, 1}}, + {3444, {wxBitmapDataObject, new_1_0, 1}}, + {3445, {wxBitmapDataObject, getBitmap, 0}}, + {3446, {wxBitmapDataObject, setBitmap, 1}}, + {3447, {wxBitmapDataObject, 'Destroy', undefined}}, + {3449, {wxClipboard, new, 0}}, + {3450, {wxClipboard, destruct, 0}}, + {3451, {wxClipboard, addData, 1}}, + {3452, {wxClipboard, clear, 0}}, + {3453, {wxClipboard, close, 0}}, + {3454, {wxClipboard, flush, 0}}, + {3455, {wxClipboard, getData, 1}}, + {3456, {wxClipboard, isOpened, 0}}, + {3457, {wxClipboard, open, 0}}, + {3458, {wxClipboard, setData, 1}}, + {3460, {wxClipboard, usePrimarySelection, 1}}, + {3461, {wxClipboard, isSupported, 1}}, + {3462, {wxClipboard, get, 0}}, + {3463, {wxSpinEvent, getPosition, 0}}, + {3464, {wxSpinEvent, setPosition, 1}}, + {3465, {wxSplitterWindow, new_0, 0}}, + {3466, {wxSplitterWindow, new_2, 2}}, + {3467, {wxSplitterWindow, destruct, 0}}, + {3468, {wxSplitterWindow, create, 2}}, + {3469, {wxSplitterWindow, getMinimumPaneSize, 0}}, + {3470, {wxSplitterWindow, getSashGravity, 0}}, + {3471, {wxSplitterWindow, getSashPosition, 0}}, + {3472, {wxSplitterWindow, getSplitMode, 0}}, + {3473, {wxSplitterWindow, getWindow1, 0}}, + {3474, {wxSplitterWindow, getWindow2, 0}}, + {3475, {wxSplitterWindow, initialize, 1}}, + {3476, {wxSplitterWindow, isSplit, 0}}, + {3477, {wxSplitterWindow, replaceWindow, 2}}, + {3478, {wxSplitterWindow, setSashGravity, 1}}, + {3479, {wxSplitterWindow, setSashPosition, 2}}, + {3480, {wxSplitterWindow, setSashSize, 1}}, + {3481, {wxSplitterWindow, setMinimumPaneSize, 1}}, + {3482, {wxSplitterWindow, setSplitMode, 1}}, + {3483, {wxSplitterWindow, splitHorizontally, 3}}, + {3484, {wxSplitterWindow, splitVertically, 3}}, + {3485, {wxSplitterWindow, unsplit, 1}}, + {3486, {wxSplitterWindow, updateSize, 0}}, + {3487, {wxSplitterEvent, getSashPosition, 0}}, + {3488, {wxSplitterEvent, getX, 0}}, + {3489, {wxSplitterEvent, getY, 0}}, + {3490, {wxSplitterEvent, getWindowBeingRemoved, 0}}, + {3491, {wxSplitterEvent, setSashPosition, 1}}, + {3492, {wxHtmlWindow, new_0, 0}}, + {3493, {wxHtmlWindow, new_2, 2}}, + {3494, {wxHtmlWindow, appendToPage, 1}}, + {3495, {wxHtmlWindow, getOpenedAnchor, 0}}, + {3496, {wxHtmlWindow, getOpenedPage, 0}}, + {3497, {wxHtmlWindow, getOpenedPageTitle, 0}}, + {3498, {wxHtmlWindow, getRelatedFrame, 0}}, + {3499, {wxHtmlWindow, historyBack, 0}}, + {3500, {wxHtmlWindow, historyCanBack, 0}}, + {3501, {wxHtmlWindow, historyCanForward, 0}}, + {3502, {wxHtmlWindow, historyClear, 0}}, + {3503, {wxHtmlWindow, historyForward, 0}}, + {3504, {wxHtmlWindow, loadFile, 1}}, + {3505, {wxHtmlWindow, loadPage, 1}}, + {3506, {wxHtmlWindow, selectAll, 0}}, + {3507, {wxHtmlWindow, selectionToText, 0}}, + {3508, {wxHtmlWindow, selectLine, 1}}, + {3509, {wxHtmlWindow, selectWord, 1}}, + {3510, {wxHtmlWindow, setBorders, 1}}, + {3511, {wxHtmlWindow, setFonts, 3}}, + {3512, {wxHtmlWindow, setPage, 1}}, + {3513, {wxHtmlWindow, setRelatedFrame, 2}}, + {3514, {wxHtmlWindow, setRelatedStatusBar, 1}}, + {3515, {wxHtmlWindow, toText, 0}}, + {3516, {wxHtmlWindow, 'Destroy', undefined}}, + {3517, {wxHtmlLinkEvent, getLinkInfo, 0}}, + {3518, {wxSystemSettings, getColour, 1}}, + {3519, {wxSystemSettings, getFont, 1}}, + {3520, {wxSystemSettings, getMetric, 2}}, + {3521, {wxSystemSettings, getScreenType, 0}}, + {3522, {wxSystemOptions, getOption, 1}}, + {3523, {wxSystemOptions, getOptionInt, 1}}, + {3524, {wxSystemOptions, hasOption, 1}}, + {3525, {wxSystemOptions, isFalse, 1}}, + {3526, {wxSystemOptions, setOption_2_1, 2}}, + {3527, {wxSystemOptions, setOption_2_0, 2}}, + {3528, {wxAuiNotebookEvent, setSelection, 1}}, + {3529, {wxAuiNotebookEvent, getSelection, 0}}, + {3530, {wxAuiNotebookEvent, setOldSelection, 1}}, + {3531, {wxAuiNotebookEvent, getOldSelection, 0}}, + {3532, {wxAuiNotebookEvent, setDragSource, 1}}, + {3533, {wxAuiNotebookEvent, getDragSource, 0}}, + {3534, {wxAuiManagerEvent, setManager, 1}}, + {3535, {wxAuiManagerEvent, getManager, 0}}, + {3536, {wxAuiManagerEvent, setPane, 1}}, + {3537, {wxAuiManagerEvent, getPane, 0}}, + {3538, {wxAuiManagerEvent, setButton, 1}}, + {3539, {wxAuiManagerEvent, getButton, 0}}, + {3540, {wxAuiManagerEvent, setDC, 1}}, + {3541, {wxAuiManagerEvent, getDC, 0}}, + {3542, {wxAuiManagerEvent, veto, 1}}, + {3543, {wxAuiManagerEvent, getVeto, 0}}, + {3544, {wxAuiManagerEvent, setCanVeto, 1}}, + {3545, {wxAuiManagerEvent, canVeto, 0}}, + {3546, {wxLogNull, new, 0}}, + {3547, {wxLogNull, 'Destroy', undefined}}, + {3548, {wxTaskBarIcon, new, 0}}, + {3549, {wxTaskBarIcon, destruct, 0}}, + {3550, {wxTaskBarIcon, popupMenu, 1}}, + {3551, {wxTaskBarIcon, removeIcon, 0}}, + {3552, {wxTaskBarIcon, setIcon, 2}}, + {3553, {wxLocale, new_0, 0}}, + {3555, {wxLocale, new_2, 2}}, + {3556, {wxLocale, destruct, 0}}, + {3558, {wxLocale, init, 1}}, + {3559, {wxLocale, addCatalog_1, 1}}, + {3560, {wxLocale, addCatalog_3, 3}}, + {3561, {wxLocale, addCatalogLookupPathPrefix, 1}}, + {3562, {wxLocale, getCanonicalName, 0}}, + {3563, {wxLocale, getLanguage, 0}}, + {3564, {wxLocale, getLanguageName, 1}}, + {3565, {wxLocale, getLocale, 0}}, + {3566, {wxLocale, getName, 0}}, + {3567, {wxLocale, getString_2, 2}}, + {3568, {wxLocale, getString_4, 4}}, + {3569, {wxLocale, getHeaderValue, 2}}, + {3570, {wxLocale, getSysName, 0}}, + {3571, {wxLocale, getSystemEncoding, 0}}, + {3572, {wxLocale, getSystemEncodingName, 0}}, + {3573, {wxLocale, getSystemLanguage, 0}}, + {3574, {wxLocale, isLoaded, 1}}, + {3575, {wxLocale, isOk, 0}}, + {3576, {wxActivateEvent, getActive, 0}}, + {3578, {wxPopupWindow, new_2, 2}}, + {3579, {wxPopupWindow, new_0, 0}}, + {3581, {wxPopupWindow, destruct, 0}}, + {3582, {wxPopupWindow, create, 2}}, + {3583, {wxPopupWindow, position, 2}}, + {3584, {wxPopupTransientWindow, new_0, 0}}, + {3585, {wxPopupTransientWindow, new_2, 2}}, + {3586, {wxPopupTransientWindow, destruct, 0}}, + {3587, {wxPopupTransientWindow, popup, 1}}, + {3588, {wxPopupTransientWindow, dismiss, 0}}, + {3589, {wxOverlay, new, 0}}, + {3590, {wxOverlay, destruct, 0}}, + {3591, {wxOverlay, reset, 0}}, + {3592, {wxDCOverlay, new_6, 6}}, + {3593, {wxDCOverlay, new_2, 2}}, + {3594, {wxDCOverlay, destruct, 0}}, + {3595, {wxDCOverlay, clear, 0}}, + {3596, {wxDropFilesEvent, getPosition, 0}}, + {3597, {wxDropFilesEvent, getNumberOfFiles, 0}}, + {3598, {wxDropFilesEvent, getFiles, 0}}, {-1, {mod, func, -1}} ]. diff --git a/lib/wx/src/gen/wxe_funcs.hrl b/lib/wx/src/gen/wxe_funcs.hrl index 84fa592aaa..4713889b0b 100644 --- a/lib/wx/src/gen/wxe_funcs.hrl +++ b/lib/wx/src/gen/wxe_funcs.hrl @@ -42,3330 +42,3334 @@ -define(wxWindow_Destroy, 123). -define(wxWindow_DestroyChildren, 124). -define(wxWindow_Disable, 125). --define(wxWindow_Enable, 126). --define(wxWindow_FindFocus, 127). --define(wxWindow_FindWindow_1_0, 128). --define(wxWindow_FindWindow_1_1, 129). --define(wxWindow_FindWindowById, 130). --define(wxWindow_FindWindowByName, 131). --define(wxWindow_FindWindowByLabel, 132). --define(wxWindow_Fit, 133). --define(wxWindow_FitInside, 134). --define(wxWindow_Freeze, 135). --define(wxWindow_GetAcceleratorTable, 136). --define(wxWindow_GetBackgroundColour, 137). --define(wxWindow_GetBackgroundStyle, 138). --define(wxWindow_GetBestSize, 139). --define(wxWindow_GetCaret, 141). --define(wxWindow_GetCapture, 142). --define(wxWindow_GetCharHeight, 143). --define(wxWindow_GetCharWidth, 144). --define(wxWindow_GetChildren, 145). --define(wxWindow_GetClientSize, 148). --define(wxWindow_GetContainingSizer, 149). --define(wxWindow_GetCursor, 150). --define(wxWindow_GetDropTarget, 151). --define(wxWindow_GetEventHandler, 152). --define(wxWindow_GetExtraStyle, 153). --define(wxWindow_GetFont, 154). --define(wxWindow_GetForegroundColour, 155). --define(wxWindow_GetGrandParent, 156). --define(wxWindow_GetHandle, 157). --define(wxWindow_GetHelpText, 158). --define(wxWindow_GetId, 159). --define(wxWindow_GetLabel, 160). --define(wxWindow_GetMaxSize, 161). --define(wxWindow_GetMinSize, 162). --define(wxWindow_GetName, 163). --define(wxWindow_GetParent, 164). --define(wxWindow_GetPosition, 166). --define(wxWindow_GetRect, 167). --define(wxWindow_GetScreenPosition, 169). --define(wxWindow_GetScreenRect, 170). --define(wxWindow_GetScrollPos, 171). --define(wxWindow_GetScrollRange, 172). --define(wxWindow_GetScrollThumb, 173). --define(wxWindow_GetSize, 175). --define(wxWindow_GetSizer, 176). --define(wxWindow_GetTextExtent, 177). --define(wxWindow_GetToolTip, 178). --define(wxWindow_GetUpdateRegion, 179). --define(wxWindow_GetVirtualSize, 181). --define(wxWindow_GetWindowStyleFlag, 183). --define(wxWindow_GetWindowVariant, 184). --define(wxWindow_HasCapture, 185). --define(wxWindow_HasScrollbar, 186). --define(wxWindow_HasTransparentBackground, 187). --define(wxWindow_Hide, 188). --define(wxWindow_InheritAttributes, 189). --define(wxWindow_InitDialog, 190). --define(wxWindow_InvalidateBestSize, 191). --define(wxWindow_IsEnabled, 192). --define(wxWindow_IsExposed_2, 193). --define(wxWindow_IsExposed_4, 194). --define(wxWindow_IsExposed_1_0, 195). --define(wxWindow_IsExposed_1_1, 196). --define(wxWindow_IsRetained, 197). --define(wxWindow_IsShown, 198). --define(wxWindow_IsTopLevel, 199). --define(wxWindow_Layout, 200). --define(wxWindow_LineDown, 201). --define(wxWindow_LineUp, 202). --define(wxWindow_Lower, 203). --define(wxWindow_MakeModal, 204). --define(wxWindow_Move_3, 205). --define(wxWindow_Move_2, 206). --define(wxWindow_MoveAfterInTabOrder, 207). --define(wxWindow_MoveBeforeInTabOrder, 208). --define(wxWindow_Navigate, 209). --define(wxWindow_PageDown, 210). --define(wxWindow_PageUp, 211). --define(wxWindow_PopEventHandler, 212). --define(wxWindow_PopupMenu_2, 213). --define(wxWindow_PopupMenu_3, 214). --define(wxWindow_Raise, 215). --define(wxWindow_Refresh, 216). --define(wxWindow_RefreshRect, 217). --define(wxWindow_ReleaseMouse, 218). --define(wxWindow_RemoveChild, 219). --define(wxWindow_Reparent, 220). --define(wxWindow_ScreenToClient_2, 221). --define(wxWindow_ScreenToClient_1, 222). --define(wxWindow_ScrollLines, 224). --define(wxWindow_ScrollPages, 226). --define(wxWindow_ScrollWindow, 227). --define(wxWindow_SetAcceleratorTable, 228). --define(wxWindow_SetAutoLayout, 229). --define(wxWindow_SetBackgroundColour, 230). --define(wxWindow_SetBackgroundStyle, 231). --define(wxWindow_SetCaret, 232). --define(wxWindow_SetClientSize_2, 233). --define(wxWindow_SetClientSize_1_0, 234). --define(wxWindow_SetClientSize_1_1, 235). --define(wxWindow_SetContainingSizer, 236). --define(wxWindow_SetCursor, 237). --define(wxWindow_SetMaxSize, 238). --define(wxWindow_SetMinSize, 239). --define(wxWindow_SetOwnBackgroundColour, 240). --define(wxWindow_SetOwnFont, 241). --define(wxWindow_SetOwnForegroundColour, 242). --define(wxWindow_SetDropTarget, 243). --define(wxWindow_SetExtraStyle, 244). --define(wxWindow_SetFocus, 245). --define(wxWindow_SetFocusFromKbd, 246). --define(wxWindow_SetFont, 247). --define(wxWindow_SetForegroundColour, 248). --define(wxWindow_SetHelpText, 249). --define(wxWindow_SetId, 250). --define(wxWindow_SetLabel, 252). --define(wxWindow_SetName, 253). --define(wxWindow_SetPalette, 254). --define(wxWindow_SetScrollbar, 255). --define(wxWindow_SetScrollPos, 256). --define(wxWindow_SetSize_5, 257). --define(wxWindow_SetSize_2_0, 258). --define(wxWindow_SetSize_1, 259). --define(wxWindow_SetSize_2_1, 260). --define(wxWindow_SetSizeHints_3, 261). --define(wxWindow_SetSizeHints_2, 262). --define(wxWindow_SetSizer, 263). --define(wxWindow_SetSizerAndFit, 264). --define(wxWindow_SetThemeEnabled, 265). --define(wxWindow_SetToolTip_1_0, 266). --define(wxWindow_SetToolTip_1_1, 267). --define(wxWindow_SetVirtualSize_1, 268). --define(wxWindow_SetVirtualSize_2, 269). --define(wxWindow_SetVirtualSizeHints_3, 270). --define(wxWindow_SetVirtualSizeHints_2, 271). --define(wxWindow_SetWindowStyle, 272). --define(wxWindow_SetWindowStyleFlag, 273). --define(wxWindow_SetWindowVariant, 274). --define(wxWindow_ShouldInheritColours, 275). --define(wxWindow_Show, 276). --define(wxWindow_Thaw, 277). --define(wxWindow_TransferDataFromWindow, 278). --define(wxWindow_TransferDataToWindow, 279). --define(wxWindow_Update, 280). --define(wxWindow_UpdateWindowUI, 281). --define(wxWindow_Validate, 282). --define(wxWindow_WarpPointer, 283). --define(wxWindow_SetTransparent, 284). --define(wxWindow_CanSetTransparent, 285). --define(wxWindow_IsDoubleBuffered, 286). --define(wxWindow_SetDoubleBuffered, 287). --define(wxTopLevelWindow_GetIcon, 288). --define(wxTopLevelWindow_GetIcons, 289). --define(wxTopLevelWindow_GetTitle, 290). --define(wxTopLevelWindow_IsActive, 291). --define(wxTopLevelWindow_Iconize, 292). --define(wxTopLevelWindow_IsFullScreen, 293). --define(wxTopLevelWindow_IsIconized, 294). --define(wxTopLevelWindow_IsMaximized, 295). --define(wxTopLevelWindow_Maximize, 296). --define(wxTopLevelWindow_RequestUserAttention, 297). --define(wxTopLevelWindow_SetIcon, 298). --define(wxTopLevelWindow_SetIcons, 299). --define(wxTopLevelWindow_CenterOnScreen, 300). --define(wxTopLevelWindow_CentreOnScreen, 301). --define(wxTopLevelWindow_SetShape, 303). --define(wxTopLevelWindow_SetTitle, 304). --define(wxTopLevelWindow_ShowFullScreen, 305). --define(wxFrame_new_4, 307). --define(wxFrame_new_0, 308). --define(wxFrame_destruct, 310). --define(wxFrame_Create, 311). --define(wxFrame_CreateStatusBar, 312). --define(wxFrame_CreateToolBar, 313). --define(wxFrame_GetClientAreaOrigin, 314). --define(wxFrame_GetMenuBar, 315). --define(wxFrame_GetStatusBar, 316). --define(wxFrame_GetStatusBarPane, 317). --define(wxFrame_GetToolBar, 318). --define(wxFrame_ProcessCommand, 319). --define(wxFrame_SendSizeEvent, 320). --define(wxFrame_SetMenuBar, 321). --define(wxFrame_SetStatusBar, 322). --define(wxFrame_SetStatusBarPane, 323). --define(wxFrame_SetStatusText, 324). --define(wxFrame_SetStatusWidths, 325). --define(wxFrame_SetToolBar, 326). --define(wxMiniFrame_new_0, 327). --define(wxMiniFrame_new_4, 328). --define(wxMiniFrame_Create, 329). --define(wxMiniFrame_destroy, 330). --define(wxSplashScreen_new_0, 331). --define(wxSplashScreen_new_6, 332). --define(wxSplashScreen_destruct, 333). --define(wxSplashScreen_GetSplashStyle, 334). --define(wxSplashScreen_GetTimeout, 335). --define(wxPanel_new_0, 336). --define(wxPanel_new_6, 337). --define(wxPanel_new_2, 338). --define(wxPanel_destruct, 339). --define(wxPanel_InitDialog, 340). --define(wxPanel_SetFocusIgnoringChildren, 341). --define(wxScrolledWindow_new_0, 342). --define(wxScrolledWindow_new_2, 343). --define(wxScrolledWindow_destruct, 344). --define(wxScrolledWindow_CalcScrolledPosition_4, 345). --define(wxScrolledWindow_CalcScrolledPosition_1, 346). --define(wxScrolledWindow_CalcUnscrolledPosition_4, 347). --define(wxScrolledWindow_CalcUnscrolledPosition_1, 348). --define(wxScrolledWindow_EnableScrolling, 349). --define(wxScrolledWindow_GetScrollPixelsPerUnit, 350). --define(wxScrolledWindow_GetViewStart, 351). --define(wxScrolledWindow_DoPrepareDC, 352). --define(wxScrolledWindow_PrepareDC, 353). --define(wxScrolledWindow_Scroll, 354). --define(wxScrolledWindow_SetScrollbars, 355). --define(wxScrolledWindow_SetScrollRate, 356). --define(wxScrolledWindow_SetTargetWindow, 357). --define(wxSashWindow_new_0, 358). --define(wxSashWindow_new_2, 359). --define(wxSashWindow_destruct, 360). --define(wxSashWindow_GetSashVisible, 361). --define(wxSashWindow_GetMaximumSizeX, 362). --define(wxSashWindow_GetMaximumSizeY, 363). --define(wxSashWindow_GetMinimumSizeX, 364). --define(wxSashWindow_GetMinimumSizeY, 365). --define(wxSashWindow_SetMaximumSizeX, 366). --define(wxSashWindow_SetMaximumSizeY, 367). --define(wxSashWindow_SetMinimumSizeX, 368). --define(wxSashWindow_SetMinimumSizeY, 369). --define(wxSashWindow_SetSashVisible, 370). --define(wxSashLayoutWindow_new_0, 371). --define(wxSashLayoutWindow_new_2, 372). --define(wxSashLayoutWindow_Create, 373). --define(wxSashLayoutWindow_GetAlignment, 374). --define(wxSashLayoutWindow_GetOrientation, 375). --define(wxSashLayoutWindow_SetAlignment, 376). --define(wxSashLayoutWindow_SetDefaultSize, 377). --define(wxSashLayoutWindow_SetOrientation, 378). --define(wxSashLayoutWindow_destroy, 379). --define(wxGrid_new_0, 380). --define(wxGrid_new_3, 381). --define(wxGrid_new_4, 382). --define(wxGrid_destruct, 383). --define(wxGrid_AppendCols, 384). --define(wxGrid_AppendRows, 385). --define(wxGrid_AutoSize, 386). --define(wxGrid_AutoSizeColumn, 387). --define(wxGrid_AutoSizeColumns, 388). --define(wxGrid_AutoSizeRow, 389). --define(wxGrid_AutoSizeRows, 390). --define(wxGrid_BeginBatch, 391). --define(wxGrid_BlockToDeviceRect, 392). --define(wxGrid_CanDragColSize, 393). --define(wxGrid_CanDragRowSize, 394). --define(wxGrid_CanDragGridSize, 395). --define(wxGrid_CanEnableCellControl, 396). --define(wxGrid_CellToRect_2, 397). --define(wxGrid_CellToRect_1, 398). --define(wxGrid_ClearGrid, 399). --define(wxGrid_ClearSelection, 400). --define(wxGrid_CreateGrid, 401). --define(wxGrid_DeleteCols, 402). --define(wxGrid_DeleteRows, 403). --define(wxGrid_DisableCellEditControl, 404). --define(wxGrid_DisableDragColSize, 405). --define(wxGrid_DisableDragGridSize, 406). --define(wxGrid_DisableDragRowSize, 407). --define(wxGrid_EnableCellEditControl, 408). --define(wxGrid_EnableDragColSize, 409). --define(wxGrid_EnableDragGridSize, 410). --define(wxGrid_EnableDragRowSize, 411). --define(wxGrid_EnableEditing, 412). --define(wxGrid_EnableGridLines, 413). --define(wxGrid_EndBatch, 414). --define(wxGrid_Fit, 415). --define(wxGrid_ForceRefresh, 416). --define(wxGrid_GetBatchCount, 417). --define(wxGrid_GetCellAlignment, 418). --define(wxGrid_GetCellBackgroundColour, 419). --define(wxGrid_GetCellEditor, 420). --define(wxGrid_GetCellFont, 421). --define(wxGrid_GetCellRenderer, 422). --define(wxGrid_GetCellTextColour, 423). --define(wxGrid_GetCellValue_2, 424). --define(wxGrid_GetCellValue_1, 425). --define(wxGrid_GetColLabelAlignment, 426). --define(wxGrid_GetColLabelSize, 427). --define(wxGrid_GetColLabelValue, 428). --define(wxGrid_GetColMinimalAcceptableWidth, 429). --define(wxGrid_GetDefaultCellAlignment, 430). --define(wxGrid_GetDefaultCellBackgroundColour, 431). --define(wxGrid_GetDefaultCellFont, 432). --define(wxGrid_GetDefaultCellTextColour, 433). --define(wxGrid_GetDefaultColLabelSize, 434). --define(wxGrid_GetDefaultColSize, 435). --define(wxGrid_GetDefaultEditor, 436). --define(wxGrid_GetDefaultEditorForCell_2, 437). --define(wxGrid_GetDefaultEditorForCell_1, 438). --define(wxGrid_GetDefaultEditorForType, 439). --define(wxGrid_GetDefaultRenderer, 440). --define(wxGrid_GetDefaultRendererForCell, 441). --define(wxGrid_GetDefaultRendererForType, 442). --define(wxGrid_GetDefaultRowLabelSize, 443). --define(wxGrid_GetDefaultRowSize, 444). --define(wxGrid_GetGridCursorCol, 445). --define(wxGrid_GetGridCursorRow, 446). --define(wxGrid_GetGridLineColour, 447). --define(wxGrid_GridLinesEnabled, 448). --define(wxGrid_GetLabelBackgroundColour, 449). --define(wxGrid_GetLabelFont, 450). --define(wxGrid_GetLabelTextColour, 451). --define(wxGrid_GetNumberCols, 452). --define(wxGrid_GetNumberRows, 453). --define(wxGrid_GetOrCreateCellAttr, 454). --define(wxGrid_GetRowMinimalAcceptableHeight, 455). --define(wxGrid_GetRowLabelAlignment, 456). --define(wxGrid_GetRowLabelSize, 457). --define(wxGrid_GetRowLabelValue, 458). --define(wxGrid_GetRowSize, 459). --define(wxGrid_GetScrollLineX, 460). --define(wxGrid_GetScrollLineY, 461). --define(wxGrid_GetSelectedCells, 462). --define(wxGrid_GetSelectedCols, 463). --define(wxGrid_GetSelectedRows, 464). --define(wxGrid_GetSelectionBackground, 465). --define(wxGrid_GetSelectionBlockTopLeft, 466). --define(wxGrid_GetSelectionBlockBottomRight, 467). --define(wxGrid_GetSelectionForeground, 468). --define(wxGrid_GetViewWidth, 469). --define(wxGrid_GetGridWindow, 470). --define(wxGrid_GetGridRowLabelWindow, 471). --define(wxGrid_GetGridColLabelWindow, 472). --define(wxGrid_GetGridCornerLabelWindow, 473). --define(wxGrid_HideCellEditControl, 474). --define(wxGrid_InsertCols, 475). --define(wxGrid_InsertRows, 476). --define(wxGrid_IsCellEditControlEnabled, 477). --define(wxGrid_IsCurrentCellReadOnly, 478). --define(wxGrid_IsEditable, 479). --define(wxGrid_IsInSelection_2, 480). --define(wxGrid_IsInSelection_1, 481). --define(wxGrid_IsReadOnly, 482). --define(wxGrid_IsSelection, 483). --define(wxGrid_IsVisible_3, 484). --define(wxGrid_IsVisible_2, 485). --define(wxGrid_MakeCellVisible_2, 486). --define(wxGrid_MakeCellVisible_1, 487). --define(wxGrid_MoveCursorDown, 488). --define(wxGrid_MoveCursorLeft, 489). --define(wxGrid_MoveCursorRight, 490). --define(wxGrid_MoveCursorUp, 491). --define(wxGrid_MoveCursorDownBlock, 492). --define(wxGrid_MoveCursorLeftBlock, 493). --define(wxGrid_MoveCursorRightBlock, 494). --define(wxGrid_MoveCursorUpBlock, 495). --define(wxGrid_MovePageDown, 496). --define(wxGrid_MovePageUp, 497). --define(wxGrid_RegisterDataType, 498). --define(wxGrid_SaveEditControlValue, 499). --define(wxGrid_SelectAll, 500). --define(wxGrid_SelectBlock_5, 501). --define(wxGrid_SelectBlock_3, 502). --define(wxGrid_SelectCol, 503). --define(wxGrid_SelectRow, 504). --define(wxGrid_SetCellAlignment_4, 505). --define(wxGrid_SetCellAlignment_3, 506). --define(wxGrid_SetCellAlignment_1, 507). --define(wxGrid_SetCellBackgroundColour_3_0, 508). --define(wxGrid_SetCellBackgroundColour_1, 509). --define(wxGrid_SetCellBackgroundColour_3_1, 510). --define(wxGrid_SetCellEditor, 511). --define(wxGrid_SetCellFont, 512). --define(wxGrid_SetCellRenderer, 513). --define(wxGrid_SetCellTextColour_3_0, 514). --define(wxGrid_SetCellTextColour_3_1, 515). --define(wxGrid_SetCellTextColour_1, 516). --define(wxGrid_SetCellValue_3_0, 517). --define(wxGrid_SetCellValue_2, 518). --define(wxGrid_SetCellValue_3_1, 519). --define(wxGrid_SetColAttr, 520). --define(wxGrid_SetColFormatBool, 521). --define(wxGrid_SetColFormatNumber, 522). --define(wxGrid_SetColFormatFloat, 523). --define(wxGrid_SetColFormatCustom, 524). --define(wxGrid_SetColLabelAlignment, 525). --define(wxGrid_SetColLabelSize, 526). --define(wxGrid_SetColLabelValue, 527). --define(wxGrid_SetColMinimalWidth, 528). --define(wxGrid_SetColMinimalAcceptableWidth, 529). --define(wxGrid_SetColSize, 530). --define(wxGrid_SetDefaultCellAlignment, 531). --define(wxGrid_SetDefaultCellBackgroundColour, 532). --define(wxGrid_SetDefaultCellFont, 533). --define(wxGrid_SetDefaultCellTextColour, 534). --define(wxGrid_SetDefaultEditor, 535). --define(wxGrid_SetDefaultRenderer, 536). --define(wxGrid_SetDefaultColSize, 537). --define(wxGrid_SetDefaultRowSize, 538). --define(wxGrid_SetGridCursor, 539). --define(wxGrid_SetGridLineColour, 540). --define(wxGrid_SetLabelBackgroundColour, 541). --define(wxGrid_SetLabelFont, 542). --define(wxGrid_SetLabelTextColour, 543). --define(wxGrid_SetMargins, 544). --define(wxGrid_SetReadOnly, 545). --define(wxGrid_SetRowAttr, 546). --define(wxGrid_SetRowLabelAlignment, 547). --define(wxGrid_SetRowLabelSize, 548). --define(wxGrid_SetRowLabelValue, 549). --define(wxGrid_SetRowMinimalHeight, 550). --define(wxGrid_SetRowMinimalAcceptableHeight, 551). --define(wxGrid_SetRowSize, 552). --define(wxGrid_SetScrollLineX, 553). --define(wxGrid_SetScrollLineY, 554). --define(wxGrid_SetSelectionBackground, 555). --define(wxGrid_SetSelectionForeground, 556). --define(wxGrid_SetSelectionMode, 557). --define(wxGrid_ShowCellEditControl, 558). --define(wxGrid_XToCol, 559). --define(wxGrid_XToEdgeOfCol, 560). --define(wxGrid_YToEdgeOfRow, 561). --define(wxGrid_YToRow, 562). --define(wxGridCellRenderer_Draw, 563). --define(wxGridCellRenderer_GetBestSize, 564). --define(wxGridCellEditor_Create, 565). --define(wxGridCellEditor_IsCreated, 566). --define(wxGridCellEditor_SetSize, 567). --define(wxGridCellEditor_Show, 568). --define(wxGridCellEditor_PaintBackground, 569). --define(wxGridCellEditor_BeginEdit, 570). --define(wxGridCellEditor_EndEdit, 571). --define(wxGridCellEditor_Reset, 572). --define(wxGridCellEditor_StartingKey, 573). --define(wxGridCellEditor_StartingClick, 574). --define(wxGridCellEditor_HandleReturn, 575). --define(wxGridCellBoolRenderer_new, 576). --define(wxGridCellBoolRenderer_destroy, 577). --define(wxGridCellBoolEditor_new, 578). --define(wxGridCellBoolEditor_IsTrueValue, 579). --define(wxGridCellBoolEditor_UseStringValues, 580). --define(wxGridCellBoolEditor_destroy, 581). --define(wxGridCellFloatRenderer_new, 582). --define(wxGridCellFloatRenderer_GetPrecision, 583). --define(wxGridCellFloatRenderer_GetWidth, 584). --define(wxGridCellFloatRenderer_SetParameters, 585). --define(wxGridCellFloatRenderer_SetPrecision, 586). --define(wxGridCellFloatRenderer_SetWidth, 587). --define(wxGridCellFloatRenderer_destroy, 588). --define(wxGridCellFloatEditor_new, 589). --define(wxGridCellFloatEditor_SetParameters, 590). --define(wxGridCellFloatEditor_destroy, 591). --define(wxGridCellStringRenderer_new, 592). --define(wxGridCellStringRenderer_destroy, 593). --define(wxGridCellTextEditor_new, 594). --define(wxGridCellTextEditor_SetParameters, 595). --define(wxGridCellTextEditor_destroy, 596). --define(wxGridCellChoiceEditor_new, 598). --define(wxGridCellChoiceEditor_SetParameters, 599). --define(wxGridCellChoiceEditor_destroy, 600). --define(wxGridCellNumberRenderer_new, 601). --define(wxGridCellNumberRenderer_destroy, 602). --define(wxGridCellNumberEditor_new, 603). --define(wxGridCellNumberEditor_GetValue, 604). --define(wxGridCellNumberEditor_SetParameters, 605). --define(wxGridCellNumberEditor_destroy, 606). --define(wxGridCellAttr_SetTextColour, 607). --define(wxGridCellAttr_SetBackgroundColour, 608). --define(wxGridCellAttr_SetFont, 609). --define(wxGridCellAttr_SetAlignment, 610). --define(wxGridCellAttr_SetReadOnly, 611). --define(wxGridCellAttr_SetRenderer, 612). --define(wxGridCellAttr_SetEditor, 613). --define(wxGridCellAttr_HasTextColour, 614). --define(wxGridCellAttr_HasBackgroundColour, 615). --define(wxGridCellAttr_HasFont, 616). --define(wxGridCellAttr_HasAlignment, 617). --define(wxGridCellAttr_HasRenderer, 618). --define(wxGridCellAttr_HasEditor, 619). --define(wxGridCellAttr_GetTextColour, 620). --define(wxGridCellAttr_GetBackgroundColour, 621). --define(wxGridCellAttr_GetFont, 622). --define(wxGridCellAttr_GetAlignment, 623). --define(wxGridCellAttr_GetRenderer, 624). --define(wxGridCellAttr_GetEditor, 625). --define(wxGridCellAttr_IsReadOnly, 626). --define(wxGridCellAttr_SetDefAttr, 627). --define(wxDC_Blit, 628). --define(wxDC_CalcBoundingBox, 629). --define(wxDC_Clear, 630). --define(wxDC_ComputeScaleAndOrigin, 631). --define(wxDC_CrossHair, 632). --define(wxDC_DestroyClippingRegion, 633). --define(wxDC_DeviceToLogicalX, 634). --define(wxDC_DeviceToLogicalXRel, 635). --define(wxDC_DeviceToLogicalY, 636). --define(wxDC_DeviceToLogicalYRel, 637). --define(wxDC_DrawArc, 638). --define(wxDC_DrawBitmap, 639). --define(wxDC_DrawCheckMark, 640). --define(wxDC_DrawCircle, 641). --define(wxDC_DrawEllipse_2, 643). --define(wxDC_DrawEllipse_1, 644). --define(wxDC_DrawEllipticArc, 645). --define(wxDC_DrawIcon, 646). --define(wxDC_DrawLabel, 647). --define(wxDC_DrawLine, 648). --define(wxDC_DrawLines, 649). --define(wxDC_DrawPolygon, 651). --define(wxDC_DrawPoint, 653). --define(wxDC_DrawRectangle_2, 655). --define(wxDC_DrawRectangle_1, 656). --define(wxDC_DrawRotatedText, 657). --define(wxDC_DrawRoundedRectangle_3, 659). --define(wxDC_DrawRoundedRectangle_2, 660). --define(wxDC_DrawText, 661). --define(wxDC_EndDoc, 662). --define(wxDC_EndPage, 663). --define(wxDC_FloodFill, 664). --define(wxDC_GetBackground, 665). --define(wxDC_GetBackgroundMode, 666). --define(wxDC_GetBrush, 667). --define(wxDC_GetCharHeight, 668). --define(wxDC_GetCharWidth, 669). --define(wxDC_GetClippingBox, 670). --define(wxDC_GetFont, 672). --define(wxDC_GetLayoutDirection, 673). --define(wxDC_GetLogicalFunction, 674). --define(wxDC_GetMapMode, 675). --define(wxDC_GetMultiLineTextExtent_4, 676). --define(wxDC_GetMultiLineTextExtent_1, 677). --define(wxDC_GetPartialTextExtents, 678). --define(wxDC_GetPen, 679). --define(wxDC_GetPixel, 680). --define(wxDC_GetPPI, 681). --define(wxDC_GetSize, 683). --define(wxDC_GetSizeMM, 685). --define(wxDC_GetTextBackground, 686). --define(wxDC_GetTextExtent_4, 687). --define(wxDC_GetTextExtent_1, 688). --define(wxDC_GetTextForeground, 690). --define(wxDC_GetUserScale, 691). --define(wxDC_GradientFillConcentric_3, 692). --define(wxDC_GradientFillConcentric_4, 693). --define(wxDC_GradientFillLinear, 694). --define(wxDC_LogicalToDeviceX, 695). --define(wxDC_LogicalToDeviceXRel, 696). --define(wxDC_LogicalToDeviceY, 697). --define(wxDC_LogicalToDeviceYRel, 698). --define(wxDC_MaxX, 699). --define(wxDC_MaxY, 700). --define(wxDC_MinX, 701). --define(wxDC_MinY, 702). --define(wxDC_IsOk, 703). --define(wxDC_ResetBoundingBox, 704). --define(wxDC_SetAxisOrientation, 705). --define(wxDC_SetBackground, 706). --define(wxDC_SetBackgroundMode, 707). --define(wxDC_SetBrush, 708). --define(wxDC_SetClippingRegion_2, 710). --define(wxDC_SetClippingRegion_1_1, 711). --define(wxDC_SetClippingRegion_1_0, 712). --define(wxDC_SetDeviceOrigin, 713). --define(wxDC_SetFont, 714). --define(wxDC_SetLayoutDirection, 715). --define(wxDC_SetLogicalFunction, 716). --define(wxDC_SetMapMode, 717). --define(wxDC_SetPalette, 718). --define(wxDC_SetPen, 719). --define(wxDC_SetTextBackground, 720). --define(wxDC_SetTextForeground, 721). --define(wxDC_SetUserScale, 722). --define(wxDC_StartDoc, 723). --define(wxDC_StartPage, 724). --define(wxMirrorDC_new, 725). --define(wxMirrorDC_destroy, 726). --define(wxScreenDC_new, 727). --define(wxScreenDC_destruct, 728). --define(wxPostScriptDC_new_0, 729). --define(wxPostScriptDC_new_1, 730). --define(wxPostScriptDC_destruct, 731). --define(wxPostScriptDC_SetResolution, 732). --define(wxPostScriptDC_GetResolution, 733). --define(wxWindowDC_new_0, 734). --define(wxWindowDC_new_1, 735). --define(wxWindowDC_destruct, 736). --define(wxClientDC_new_0, 737). --define(wxClientDC_new_1, 738). --define(wxClientDC_destroy, 739). --define(wxPaintDC_new_0, 740). --define(wxPaintDC_new_1, 741). --define(wxPaintDC_destroy, 742). --define(wxMemoryDC_new_1_0, 744). --define(wxMemoryDC_new_1_1, 745). --define(wxMemoryDC_new_0, 746). --define(wxMemoryDC_destruct, 748). --define(wxMemoryDC_SelectObject, 749). --define(wxMemoryDC_SelectObjectAsSource, 750). --define(wxBufferedDC_new_0, 751). --define(wxBufferedDC_new_2, 752). --define(wxBufferedDC_new_3, 753). --define(wxBufferedDC_destruct, 754). --define(wxBufferedDC_Init_2, 755). --define(wxBufferedDC_Init_3, 756). --define(wxBufferedPaintDC_new_3, 757). --define(wxBufferedPaintDC_new_2, 758). --define(wxBufferedPaintDC_destruct, 759). --define(wxGraphicsObject_destruct, 760). --define(wxGraphicsObject_GetRenderer, 761). --define(wxGraphicsObject_IsNull, 762). --define(wxGraphicsContext_destruct, 763). --define(wxGraphicsContext_Create_1_1, 764). --define(wxGraphicsContext_Create_1_0, 765). --define(wxGraphicsContext_Create_0, 766). --define(wxGraphicsContext_CreatePen, 767). --define(wxGraphicsContext_CreateBrush, 768). --define(wxGraphicsContext_CreateRadialGradientBrush, 769). --define(wxGraphicsContext_CreateLinearGradientBrush, 770). --define(wxGraphicsContext_CreateFont, 771). --define(wxGraphicsContext_CreateMatrix, 772). --define(wxGraphicsContext_CreatePath, 773). --define(wxGraphicsContext_Clip_1, 774). --define(wxGraphicsContext_Clip_4, 775). --define(wxGraphicsContext_ResetClip, 776). --define(wxGraphicsContext_DrawBitmap, 777). --define(wxGraphicsContext_DrawEllipse, 778). --define(wxGraphicsContext_DrawIcon, 779). --define(wxGraphicsContext_DrawLines, 780). --define(wxGraphicsContext_DrawPath, 781). --define(wxGraphicsContext_DrawRectangle, 782). --define(wxGraphicsContext_DrawRoundedRectangle, 783). --define(wxGraphicsContext_DrawText_3, 784). --define(wxGraphicsContext_DrawText_4_0, 785). --define(wxGraphicsContext_DrawText_4_1, 786). --define(wxGraphicsContext_DrawText_5, 787). --define(wxGraphicsContext_FillPath, 788). --define(wxGraphicsContext_StrokePath, 789). --define(wxGraphicsContext_GetPartialTextExtents, 790). --define(wxGraphicsContext_GetTextExtent, 791). --define(wxGraphicsContext_Rotate, 792). --define(wxGraphicsContext_Scale, 793). --define(wxGraphicsContext_Translate, 794). --define(wxGraphicsContext_GetTransform, 795). --define(wxGraphicsContext_SetTransform, 796). --define(wxGraphicsContext_ConcatTransform, 797). --define(wxGraphicsContext_SetBrush_1_1, 798). --define(wxGraphicsContext_SetBrush_1_0, 799). --define(wxGraphicsContext_SetFont_1, 800). --define(wxGraphicsContext_SetFont_2, 801). --define(wxGraphicsContext_SetPen_1_0, 802). --define(wxGraphicsContext_SetPen_1_1, 803). --define(wxGraphicsContext_StrokeLine, 804). --define(wxGraphicsContext_StrokeLines, 805). --define(wxGraphicsMatrix_Concat, 807). --define(wxGraphicsMatrix_Get, 809). --define(wxGraphicsMatrix_Invert, 810). --define(wxGraphicsMatrix_IsEqual, 811). --define(wxGraphicsMatrix_IsIdentity, 813). --define(wxGraphicsMatrix_Rotate, 814). --define(wxGraphicsMatrix_Scale, 815). --define(wxGraphicsMatrix_Translate, 816). --define(wxGraphicsMatrix_Set, 817). --define(wxGraphicsMatrix_TransformPoint, 818). --define(wxGraphicsMatrix_TransformDistance, 819). --define(wxGraphicsPath_MoveToPoint_2, 820). --define(wxGraphicsPath_MoveToPoint_1, 821). --define(wxGraphicsPath_AddArc_6, 822). --define(wxGraphicsPath_AddArc_5, 823). --define(wxGraphicsPath_AddArcToPoint, 824). --define(wxGraphicsPath_AddCircle, 825). --define(wxGraphicsPath_AddCurveToPoint_6, 826). --define(wxGraphicsPath_AddCurveToPoint_3, 827). --define(wxGraphicsPath_AddEllipse, 828). --define(wxGraphicsPath_AddLineToPoint_2, 829). --define(wxGraphicsPath_AddLineToPoint_1, 830). --define(wxGraphicsPath_AddPath, 831). --define(wxGraphicsPath_AddQuadCurveToPoint, 832). --define(wxGraphicsPath_AddRectangle, 833). --define(wxGraphicsPath_AddRoundedRectangle, 834). --define(wxGraphicsPath_CloseSubpath, 835). --define(wxGraphicsPath_Contains_3, 836). --define(wxGraphicsPath_Contains_2, 837). --define(wxGraphicsPath_GetBox, 839). --define(wxGraphicsPath_GetCurrentPoint, 841). --define(wxGraphicsPath_Transform, 842). --define(wxGraphicsRenderer_GetDefaultRenderer, 843). --define(wxGraphicsRenderer_CreateContext_1_1, 844). --define(wxGraphicsRenderer_CreateContext_1_0, 845). --define(wxGraphicsRenderer_CreatePen, 846). --define(wxGraphicsRenderer_CreateBrush, 847). --define(wxGraphicsRenderer_CreateLinearGradientBrush, 848). --define(wxGraphicsRenderer_CreateRadialGradientBrush, 849). --define(wxGraphicsRenderer_CreateFont, 850). --define(wxGraphicsRenderer_CreateMatrix, 851). --define(wxGraphicsRenderer_CreatePath, 852). --define(wxMenuBar_new_1, 854). --define(wxMenuBar_new_0, 856). --define(wxMenuBar_destruct, 858). --define(wxMenuBar_Append, 859). --define(wxMenuBar_Check, 860). --define(wxMenuBar_Enable_2, 861). --define(wxMenuBar_Enable_1, 862). --define(wxMenuBar_EnableTop, 863). --define(wxMenuBar_FindMenu, 864). --define(wxMenuBar_FindMenuItem, 865). --define(wxMenuBar_FindItem, 866). --define(wxMenuBar_GetHelpString, 867). --define(wxMenuBar_GetLabel_1, 868). --define(wxMenuBar_GetLabel_0, 869). --define(wxMenuBar_GetLabelTop, 870). --define(wxMenuBar_GetMenu, 871). --define(wxMenuBar_GetMenuCount, 872). --define(wxMenuBar_Insert, 873). --define(wxMenuBar_IsChecked, 874). --define(wxMenuBar_IsEnabled_1, 875). --define(wxMenuBar_IsEnabled_0, 876). --define(wxMenuBar_Remove, 877). --define(wxMenuBar_Replace, 878). --define(wxMenuBar_SetHelpString, 879). --define(wxMenuBar_SetLabel_2, 880). --define(wxMenuBar_SetLabel_1, 881). --define(wxMenuBar_SetLabelTop, 882). --define(wxControl_GetLabel, 883). --define(wxControl_SetLabel, 884). --define(wxControlWithItems_Append_1, 885). --define(wxControlWithItems_Append_2, 886). --define(wxControlWithItems_appendStrings_1, 887). --define(wxControlWithItems_Clear, 888). --define(wxControlWithItems_Delete, 889). --define(wxControlWithItems_FindString, 890). --define(wxControlWithItems_getClientData, 891). --define(wxControlWithItems_setClientData, 892). --define(wxControlWithItems_GetCount, 893). --define(wxControlWithItems_GetSelection, 894). --define(wxControlWithItems_GetString, 895). --define(wxControlWithItems_GetStringSelection, 896). --define(wxControlWithItems_Insert_2, 897). --define(wxControlWithItems_Insert_3, 898). --define(wxControlWithItems_IsEmpty, 899). --define(wxControlWithItems_Select, 900). --define(wxControlWithItems_SetSelection, 901). --define(wxControlWithItems_SetString, 902). --define(wxControlWithItems_SetStringSelection, 903). --define(wxMenu_new_2, 906). --define(wxMenu_new_1, 907). --define(wxMenu_destruct, 909). --define(wxMenu_Append_3, 910). --define(wxMenu_Append_1, 911). --define(wxMenu_Append_4_0, 912). --define(wxMenu_Append_4_1, 913). --define(wxMenu_AppendCheckItem, 914). --define(wxMenu_AppendRadioItem, 915). --define(wxMenu_AppendSeparator, 916). --define(wxMenu_Break, 917). --define(wxMenu_Check, 918). --define(wxMenu_Delete_1_0, 919). --define(wxMenu_Delete_1_1, 920). --define(wxMenu_Destroy_1_0, 921). --define(wxMenu_Destroy_1_1, 922). --define(wxMenu_Enable, 923). --define(wxMenu_FindItem_1, 924). --define(wxMenu_FindItem_2, 925). --define(wxMenu_FindItemByPosition, 926). --define(wxMenu_GetHelpString, 927). --define(wxMenu_GetLabel, 928). --define(wxMenu_GetMenuItemCount, 929). --define(wxMenu_GetMenuItems, 930). --define(wxMenu_GetTitle, 932). --define(wxMenu_Insert_2, 933). --define(wxMenu_Insert_3, 934). --define(wxMenu_Insert_5_1, 935). --define(wxMenu_Insert_5_0, 936). --define(wxMenu_InsertCheckItem, 937). --define(wxMenu_InsertRadioItem, 938). --define(wxMenu_InsertSeparator, 939). --define(wxMenu_IsChecked, 940). --define(wxMenu_IsEnabled, 941). --define(wxMenu_Prepend_1, 942). --define(wxMenu_Prepend_2, 943). --define(wxMenu_Prepend_4_1, 944). --define(wxMenu_Prepend_4_0, 945). --define(wxMenu_PrependCheckItem, 946). --define(wxMenu_PrependRadioItem, 947). --define(wxMenu_PrependSeparator, 948). --define(wxMenu_Remove_1_0, 949). --define(wxMenu_Remove_1_1, 950). --define(wxMenu_SetHelpString, 951). --define(wxMenu_SetLabel, 952). --define(wxMenu_SetTitle, 953). --define(wxMenuItem_new, 954). --define(wxMenuItem_destruct, 956). --define(wxMenuItem_Check, 957). --define(wxMenuItem_Enable, 958). --define(wxMenuItem_GetBitmap, 959). --define(wxMenuItem_GetHelp, 960). --define(wxMenuItem_GetId, 961). --define(wxMenuItem_GetKind, 962). --define(wxMenuItem_GetLabel, 963). --define(wxMenuItem_GetLabelFromText, 964). --define(wxMenuItem_GetMenu, 965). --define(wxMenuItem_GetText, 966). --define(wxMenuItem_GetSubMenu, 967). --define(wxMenuItem_IsCheckable, 968). --define(wxMenuItem_IsChecked, 969). --define(wxMenuItem_IsEnabled, 970). --define(wxMenuItem_IsSeparator, 971). --define(wxMenuItem_IsSubMenu, 972). --define(wxMenuItem_SetBitmap, 973). --define(wxMenuItem_SetHelp, 974). --define(wxMenuItem_SetMenu, 975). --define(wxMenuItem_SetSubMenu, 976). --define(wxMenuItem_SetText, 977). --define(wxToolBar_AddControl, 978). --define(wxToolBar_AddSeparator, 979). --define(wxToolBar_AddTool_5, 980). --define(wxToolBar_AddTool_4_0, 981). --define(wxToolBar_AddTool_1, 982). --define(wxToolBar_AddTool_4_1, 983). --define(wxToolBar_AddTool_3, 984). --define(wxToolBar_AddTool_6, 985). --define(wxToolBar_AddCheckTool, 986). --define(wxToolBar_AddRadioTool, 987). --define(wxToolBar_AddStretchableSpace, 988). --define(wxToolBar_InsertStretchableSpace, 989). --define(wxToolBar_DeleteTool, 990). --define(wxToolBar_DeleteToolByPos, 991). --define(wxToolBar_EnableTool, 992). --define(wxToolBar_FindById, 993). --define(wxToolBar_FindControl, 994). --define(wxToolBar_FindToolForPosition, 995). --define(wxToolBar_GetToolSize, 996). --define(wxToolBar_GetToolBitmapSize, 997). --define(wxToolBar_GetMargins, 998). --define(wxToolBar_GetToolEnabled, 999). --define(wxToolBar_GetToolLongHelp, 1000). --define(wxToolBar_GetToolPacking, 1001). --define(wxToolBar_GetToolPos, 1002). --define(wxToolBar_GetToolSeparation, 1003). --define(wxToolBar_GetToolShortHelp, 1004). --define(wxToolBar_GetToolState, 1005). --define(wxToolBar_InsertControl, 1006). --define(wxToolBar_InsertSeparator, 1007). --define(wxToolBar_InsertTool_5, 1008). --define(wxToolBar_InsertTool_2, 1009). --define(wxToolBar_InsertTool_4, 1010). --define(wxToolBar_Realize, 1011). --define(wxToolBar_RemoveTool, 1012). --define(wxToolBar_SetMargins, 1013). --define(wxToolBar_SetToolBitmapSize, 1014). --define(wxToolBar_SetToolLongHelp, 1015). --define(wxToolBar_SetToolPacking, 1016). --define(wxToolBar_SetToolShortHelp, 1017). --define(wxToolBar_SetToolSeparation, 1018). --define(wxToolBar_ToggleTool, 1019). --define(wxStatusBar_new_0, 1021). --define(wxStatusBar_new_2, 1022). --define(wxStatusBar_destruct, 1024). --define(wxStatusBar_Create, 1025). --define(wxStatusBar_GetFieldRect, 1026). --define(wxStatusBar_GetFieldsCount, 1027). --define(wxStatusBar_GetStatusText, 1028). --define(wxStatusBar_PopStatusText, 1029). --define(wxStatusBar_PushStatusText, 1030). --define(wxStatusBar_SetFieldsCount, 1031). --define(wxStatusBar_SetMinHeight, 1032). --define(wxStatusBar_SetStatusText, 1033). --define(wxStatusBar_SetStatusWidths, 1034). --define(wxStatusBar_SetStatusStyles, 1035). --define(wxBitmap_new_0, 1036). --define(wxBitmap_new_3, 1037). --define(wxBitmap_new_4, 1038). --define(wxBitmap_new_2_0, 1039). --define(wxBitmap_new_2_1, 1040). --define(wxBitmap_destruct, 1041). --define(wxBitmap_ConvertToImage, 1042). --define(wxBitmap_CopyFromIcon, 1043). --define(wxBitmap_Create, 1044). --define(wxBitmap_GetDepth, 1045). --define(wxBitmap_GetHeight, 1046). --define(wxBitmap_GetPalette, 1047). --define(wxBitmap_GetMask, 1048). --define(wxBitmap_GetWidth, 1049). --define(wxBitmap_GetSubBitmap, 1050). --define(wxBitmap_LoadFile, 1051). --define(wxBitmap_Ok, 1052). --define(wxBitmap_SaveFile, 1053). --define(wxBitmap_SetDepth, 1054). --define(wxBitmap_SetHeight, 1055). --define(wxBitmap_SetMask, 1056). --define(wxBitmap_SetPalette, 1057). --define(wxBitmap_SetWidth, 1058). --define(wxIcon_new_0, 1059). --define(wxIcon_new_2, 1060). --define(wxIcon_new_1, 1061). --define(wxIcon_CopyFromBitmap, 1062). --define(wxIcon_destroy, 1063). --define(wxIconBundle_new_0, 1064). --define(wxIconBundle_new_2, 1065). --define(wxIconBundle_new_1_0, 1066). --define(wxIconBundle_new_1_1, 1067). --define(wxIconBundle_destruct, 1068). --define(wxIconBundle_AddIcon_2, 1069). --define(wxIconBundle_AddIcon_1, 1070). --define(wxIconBundle_GetIcon_1_1, 1071). --define(wxIconBundle_GetIcon_1_0, 1072). --define(wxCursor_new_0, 1073). --define(wxCursor_new_1_0, 1074). --define(wxCursor_new_1_1, 1075). --define(wxCursor_new_4, 1076). --define(wxCursor_destruct, 1077). --define(wxCursor_Ok, 1078). --define(wxMask_new_0, 1079). --define(wxMask_new_2_1, 1080). --define(wxMask_new_2_0, 1081). --define(wxMask_new_1, 1082). --define(wxMask_destruct, 1083). --define(wxMask_Create_2_1, 1084). --define(wxMask_Create_2_0, 1085). --define(wxMask_Create_1, 1086). --define(wxImage_new_0, 1087). --define(wxImage_new_3_0, 1088). --define(wxImage_new_4, 1089). --define(wxImage_new_5, 1090). --define(wxImage_new_2, 1091). --define(wxImage_new_3_1, 1092). --define(wxImage_Blur, 1093). --define(wxImage_BlurHorizontal, 1094). --define(wxImage_BlurVertical, 1095). --define(wxImage_ConvertAlphaToMask, 1096). --define(wxImage_ConvertToGreyscale, 1097). --define(wxImage_ConvertToMono, 1098). --define(wxImage_Copy, 1099). --define(wxImage_Create_3, 1100). --define(wxImage_Create_4, 1101). --define(wxImage_Create_5, 1102). --define(wxImage_Destroy, 1103). --define(wxImage_FindFirstUnusedColour, 1104). --define(wxImage_GetImageExtWildcard, 1105). --define(wxImage_GetAlpha_2, 1106). --define(wxImage_GetAlpha_0, 1107). --define(wxImage_GetBlue, 1108). --define(wxImage_GetData, 1109). --define(wxImage_GetGreen, 1110). --define(wxImage_GetImageCount, 1111). --define(wxImage_GetHeight, 1112). --define(wxImage_GetMaskBlue, 1113). --define(wxImage_GetMaskGreen, 1114). --define(wxImage_GetMaskRed, 1115). --define(wxImage_GetOrFindMaskColour, 1116). --define(wxImage_GetPalette, 1117). --define(wxImage_GetRed, 1118). --define(wxImage_GetSubImage, 1119). --define(wxImage_GetWidth, 1120). --define(wxImage_HasAlpha, 1121). --define(wxImage_HasMask, 1122). --define(wxImage_GetOption, 1123). --define(wxImage_GetOptionInt, 1124). --define(wxImage_HasOption, 1125). --define(wxImage_InitAlpha, 1126). --define(wxImage_InitStandardHandlers, 1127). --define(wxImage_IsTransparent, 1128). --define(wxImage_LoadFile_2, 1129). --define(wxImage_LoadFile_3, 1130). --define(wxImage_Ok, 1131). --define(wxImage_RemoveHandler, 1132). --define(wxImage_Mirror, 1133). --define(wxImage_Replace, 1134). --define(wxImage_Rescale, 1135). --define(wxImage_Resize, 1136). --define(wxImage_Rotate, 1137). --define(wxImage_RotateHue, 1138). --define(wxImage_Rotate90, 1139). --define(wxImage_SaveFile_1, 1140). --define(wxImage_SaveFile_2_0, 1141). --define(wxImage_SaveFile_2_1, 1142). --define(wxImage_Scale, 1143). --define(wxImage_Size, 1144). --define(wxImage_SetAlpha_3, 1145). --define(wxImage_SetAlpha_2, 1146). --define(wxImage_SetData_2, 1147). --define(wxImage_SetData_4, 1148). --define(wxImage_SetMask, 1149). --define(wxImage_SetMaskColour, 1150). --define(wxImage_SetMaskFromImage, 1151). --define(wxImage_SetOption_2_1, 1152). --define(wxImage_SetOption_2_0, 1153). --define(wxImage_SetPalette, 1154). --define(wxImage_SetRGB_5, 1155). --define(wxImage_SetRGB_4, 1156). --define(wxImage_destroy, 1157). --define(wxBrush_new_0, 1158). --define(wxBrush_new_2, 1159). --define(wxBrush_new_1, 1160). --define(wxBrush_destruct, 1162). --define(wxBrush_GetColour, 1163). --define(wxBrush_GetStipple, 1164). --define(wxBrush_GetStyle, 1165). --define(wxBrush_IsHatch, 1166). --define(wxBrush_IsOk, 1167). --define(wxBrush_SetColour_1, 1168). --define(wxBrush_SetColour_3, 1169). --define(wxBrush_SetStipple, 1170). --define(wxBrush_SetStyle, 1171). --define(wxPen_new_0, 1172). --define(wxPen_new_2, 1173). --define(wxPen_destruct, 1174). --define(wxPen_GetCap, 1175). --define(wxPen_GetColour, 1176). --define(wxPen_GetJoin, 1177). --define(wxPen_GetStyle, 1178). --define(wxPen_GetWidth, 1179). --define(wxPen_IsOk, 1180). --define(wxPen_SetCap, 1181). --define(wxPen_SetColour_1, 1182). --define(wxPen_SetColour_3, 1183). --define(wxPen_SetJoin, 1184). --define(wxPen_SetStyle, 1185). --define(wxPen_SetWidth, 1186). --define(wxRegion_new_0, 1187). --define(wxRegion_new_4, 1188). --define(wxRegion_new_2, 1189). --define(wxRegion_new_1_1, 1190). --define(wxRegion_new_1_0, 1192). --define(wxRegion_destruct, 1194). --define(wxRegion_Clear, 1195). --define(wxRegion_Contains_2, 1196). --define(wxRegion_Contains_1_0, 1197). --define(wxRegion_Contains_4, 1198). --define(wxRegion_Contains_1_1, 1199). --define(wxRegion_ConvertToBitmap, 1200). --define(wxRegion_GetBox, 1201). --define(wxRegion_Intersect_4, 1202). --define(wxRegion_Intersect_1_1, 1203). --define(wxRegion_Intersect_1_0, 1204). --define(wxRegion_IsEmpty, 1205). --define(wxRegion_Subtract_4, 1206). --define(wxRegion_Subtract_1_1, 1207). --define(wxRegion_Subtract_1_0, 1208). --define(wxRegion_Offset_2, 1209). --define(wxRegion_Offset_1, 1210). --define(wxRegion_Union_4, 1211). --define(wxRegion_Union_1_2, 1212). --define(wxRegion_Union_1_1, 1213). --define(wxRegion_Union_1_0, 1214). --define(wxRegion_Union_3, 1215). --define(wxRegion_Xor_4, 1216). --define(wxRegion_Xor_1_1, 1217). --define(wxRegion_Xor_1_0, 1218). --define(wxAcceleratorTable_new_0, 1219). --define(wxAcceleratorTable_new_2, 1220). --define(wxAcceleratorTable_destruct, 1221). --define(wxAcceleratorTable_Ok, 1222). --define(wxAcceleratorEntry_new_1_0, 1223). --define(wxAcceleratorEntry_new_1_1, 1224). --define(wxAcceleratorEntry_GetCommand, 1225). --define(wxAcceleratorEntry_GetFlags, 1226). --define(wxAcceleratorEntry_GetKeyCode, 1227). --define(wxAcceleratorEntry_Set, 1228). --define(wxAcceleratorEntry_destroy, 1229). --define(wxCaret_new_3, 1234). --define(wxCaret_new_2, 1235). --define(wxCaret_destruct, 1237). --define(wxCaret_Create_3, 1238). --define(wxCaret_Create_2, 1239). --define(wxCaret_GetBlinkTime, 1240). --define(wxCaret_GetPosition, 1242). --define(wxCaret_GetSize, 1244). --define(wxCaret_GetWindow, 1245). --define(wxCaret_Hide, 1246). --define(wxCaret_IsOk, 1247). --define(wxCaret_IsVisible, 1248). --define(wxCaret_Move_2, 1249). --define(wxCaret_Move_1, 1250). --define(wxCaret_SetBlinkTime, 1251). --define(wxCaret_SetSize_2, 1252). --define(wxCaret_SetSize_1, 1253). --define(wxCaret_Show, 1254). --define(wxSizer_Add_2_1, 1255). --define(wxSizer_Add_2_0, 1256). --define(wxSizer_Add_3, 1257). --define(wxSizer_Add_2_3, 1258). --define(wxSizer_Add_2_2, 1259). --define(wxSizer_AddSpacer, 1260). --define(wxSizer_AddStretchSpacer, 1261). --define(wxSizer_CalcMin, 1262). --define(wxSizer_Clear, 1263). --define(wxSizer_Detach_1_2, 1264). --define(wxSizer_Detach_1_1, 1265). --define(wxSizer_Detach_1_0, 1266). --define(wxSizer_Fit, 1267). --define(wxSizer_FitInside, 1268). --define(wxSizer_GetChildren, 1269). --define(wxSizer_GetItem_2_1, 1270). --define(wxSizer_GetItem_2_0, 1271). --define(wxSizer_GetItem_1, 1272). --define(wxSizer_GetSize, 1273). --define(wxSizer_GetPosition, 1274). --define(wxSizer_GetMinSize, 1275). --define(wxSizer_Hide_2_0, 1276). --define(wxSizer_Hide_2_1, 1277). --define(wxSizer_Hide_1, 1278). --define(wxSizer_Insert_3_1, 1279). --define(wxSizer_Insert_3_0, 1280). --define(wxSizer_Insert_4, 1281). --define(wxSizer_Insert_3_3, 1282). --define(wxSizer_Insert_3_2, 1283). --define(wxSizer_Insert_2, 1284). --define(wxSizer_InsertSpacer, 1285). --define(wxSizer_InsertStretchSpacer, 1286). --define(wxSizer_IsShown_1_2, 1287). --define(wxSizer_IsShown_1_1, 1288). --define(wxSizer_IsShown_1_0, 1289). --define(wxSizer_Layout, 1290). --define(wxSizer_Prepend_2_1, 1291). --define(wxSizer_Prepend_2_0, 1292). --define(wxSizer_Prepend_3, 1293). --define(wxSizer_Prepend_2_3, 1294). --define(wxSizer_Prepend_2_2, 1295). --define(wxSizer_Prepend_1, 1296). --define(wxSizer_PrependSpacer, 1297). --define(wxSizer_PrependStretchSpacer, 1298). --define(wxSizer_RecalcSizes, 1299). --define(wxSizer_Remove_1_1, 1300). --define(wxSizer_Remove_1_0, 1301). --define(wxSizer_Replace_3_1, 1302). --define(wxSizer_Replace_3_0, 1303). --define(wxSizer_Replace_2, 1304). --define(wxSizer_SetDimension, 1305). --define(wxSizer_SetMinSize_2, 1306). --define(wxSizer_SetMinSize_1, 1307). --define(wxSizer_SetItemMinSize_3_2, 1308). --define(wxSizer_SetItemMinSize_2_2, 1309). --define(wxSizer_SetItemMinSize_3_1, 1310). --define(wxSizer_SetItemMinSize_2_1, 1311). --define(wxSizer_SetItemMinSize_3_0, 1312). --define(wxSizer_SetItemMinSize_2_0, 1313). --define(wxSizer_SetSizeHints, 1314). --define(wxSizer_SetVirtualSizeHints, 1315). --define(wxSizer_Show_2_2, 1316). --define(wxSizer_Show_2_1, 1317). --define(wxSizer_Show_2_0, 1318). --define(wxSizer_Show_1, 1319). --define(wxSizerFlags_new, 1320). --define(wxSizerFlags_Align, 1321). --define(wxSizerFlags_Border_2, 1322). --define(wxSizerFlags_Border_1, 1323). --define(wxSizerFlags_Center, 1324). --define(wxSizerFlags_Centre, 1325). --define(wxSizerFlags_Expand, 1326). --define(wxSizerFlags_Left, 1327). --define(wxSizerFlags_Proportion, 1328). --define(wxSizerFlags_Right, 1329). --define(wxSizerFlags_destroy, 1330). --define(wxSizerItem_new_5_1, 1331). --define(wxSizerItem_new_2_1, 1332). --define(wxSizerItem_new_5_0, 1333). --define(wxSizerItem_new_2_0, 1334). --define(wxSizerItem_new_6, 1335). --define(wxSizerItem_new_3, 1336). --define(wxSizerItem_new_0, 1337). --define(wxSizerItem_destruct, 1338). --define(wxSizerItem_CalcMin, 1339). --define(wxSizerItem_DeleteWindows, 1340). --define(wxSizerItem_DetachSizer, 1341). --define(wxSizerItem_GetBorder, 1342). --define(wxSizerItem_GetFlag, 1343). --define(wxSizerItem_GetMinSize, 1344). --define(wxSizerItem_GetPosition, 1345). --define(wxSizerItem_GetProportion, 1346). --define(wxSizerItem_GetRatio, 1347). --define(wxSizerItem_GetRect, 1348). --define(wxSizerItem_GetSize, 1349). --define(wxSizerItem_GetSizer, 1350). --define(wxSizerItem_GetSpacer, 1351). --define(wxSizerItem_GetUserData, 1352). --define(wxSizerItem_GetWindow, 1353). --define(wxSizerItem_IsSizer, 1354). --define(wxSizerItem_IsShown, 1355). --define(wxSizerItem_IsSpacer, 1356). --define(wxSizerItem_IsWindow, 1357). --define(wxSizerItem_SetBorder, 1358). --define(wxSizerItem_SetDimension, 1359). --define(wxSizerItem_SetFlag, 1360). --define(wxSizerItem_SetInitSize, 1361). --define(wxSizerItem_SetMinSize_1, 1362). --define(wxSizerItem_SetMinSize_2, 1363). --define(wxSizerItem_SetProportion, 1364). --define(wxSizerItem_SetRatio_2, 1365). --define(wxSizerItem_SetRatio_1_1, 1366). --define(wxSizerItem_SetRatio_1_0, 1367). --define(wxSizerItem_SetSizer, 1368). --define(wxSizerItem_SetSpacer_1, 1369). --define(wxSizerItem_SetSpacer_2, 1370). --define(wxSizerItem_SetWindow, 1371). --define(wxSizerItem_Show, 1372). --define(wxBoxSizer_new, 1373). --define(wxBoxSizer_GetOrientation, 1374). --define(wxBoxSizer_destroy, 1375). --define(wxStaticBoxSizer_new_2, 1376). --define(wxStaticBoxSizer_new_3, 1377). --define(wxStaticBoxSizer_GetStaticBox, 1378). --define(wxStaticBoxSizer_destroy, 1379). --define(wxGridSizer_new_4, 1380). --define(wxGridSizer_new_2, 1381). --define(wxGridSizer_GetCols, 1382). --define(wxGridSizer_GetHGap, 1383). --define(wxGridSizer_GetRows, 1384). --define(wxGridSizer_GetVGap, 1385). --define(wxGridSizer_SetCols, 1386). --define(wxGridSizer_SetHGap, 1387). --define(wxGridSizer_SetRows, 1388). --define(wxGridSizer_SetVGap, 1389). --define(wxGridSizer_destroy, 1390). --define(wxFlexGridSizer_new_4, 1391). --define(wxFlexGridSizer_new_2, 1392). --define(wxFlexGridSizer_AddGrowableCol, 1393). --define(wxFlexGridSizer_AddGrowableRow, 1394). --define(wxFlexGridSizer_GetFlexibleDirection, 1395). --define(wxFlexGridSizer_GetNonFlexibleGrowMode, 1396). --define(wxFlexGridSizer_RemoveGrowableCol, 1397). --define(wxFlexGridSizer_RemoveGrowableRow, 1398). --define(wxFlexGridSizer_SetFlexibleDirection, 1399). --define(wxFlexGridSizer_SetNonFlexibleGrowMode, 1400). --define(wxFlexGridSizer_destroy, 1401). --define(wxGridBagSizer_new, 1402). --define(wxGridBagSizer_Add_3_2, 1403). --define(wxGridBagSizer_Add_3_1, 1404). --define(wxGridBagSizer_Add_4, 1405). --define(wxGridBagSizer_Add_1_0, 1406). --define(wxGridBagSizer_Add_2_1, 1407). --define(wxGridBagSizer_Add_2_0, 1408). --define(wxGridBagSizer_Add_3_0, 1409). --define(wxGridBagSizer_Add_1_1, 1410). --define(wxGridBagSizer_CalcMin, 1411). --define(wxGridBagSizer_CheckForIntersection_2, 1412). --define(wxGridBagSizer_CheckForIntersection_3, 1413). --define(wxGridBagSizer_FindItem_1_1, 1414). --define(wxGridBagSizer_FindItem_1_0, 1415). --define(wxGridBagSizer_FindItemAtPoint, 1416). --define(wxGridBagSizer_FindItemAtPosition, 1417). --define(wxGridBagSizer_FindItemWithData, 1418). --define(wxGridBagSizer_GetCellSize, 1419). --define(wxGridBagSizer_GetEmptyCellSize, 1420). --define(wxGridBagSizer_GetItemPosition_1_2, 1421). --define(wxGridBagSizer_GetItemPosition_1_1, 1422). --define(wxGridBagSizer_GetItemPosition_1_0, 1423). --define(wxGridBagSizer_GetItemSpan_1_2, 1424). --define(wxGridBagSizer_GetItemSpan_1_1, 1425). --define(wxGridBagSizer_GetItemSpan_1_0, 1426). --define(wxGridBagSizer_SetEmptyCellSize, 1427). --define(wxGridBagSizer_SetItemPosition_2_2, 1428). --define(wxGridBagSizer_SetItemPosition_2_1, 1429). --define(wxGridBagSizer_SetItemPosition_2_0, 1430). --define(wxGridBagSizer_SetItemSpan_2_2, 1431). --define(wxGridBagSizer_SetItemSpan_2_1, 1432). --define(wxGridBagSizer_SetItemSpan_2_0, 1433). --define(wxGridBagSizer_destroy, 1434). --define(wxStdDialogButtonSizer_new, 1435). --define(wxStdDialogButtonSizer_AddButton, 1436). --define(wxStdDialogButtonSizer_Realize, 1437). --define(wxStdDialogButtonSizer_SetAffirmativeButton, 1438). --define(wxStdDialogButtonSizer_SetCancelButton, 1439). --define(wxStdDialogButtonSizer_SetNegativeButton, 1440). --define(wxStdDialogButtonSizer_destroy, 1441). --define(wxFont_new_0, 1442). --define(wxFont_new_1, 1443). --define(wxFont_new_5, 1444). --define(wxFont_destruct, 1446). --define(wxFont_IsFixedWidth, 1447). --define(wxFont_GetDefaultEncoding, 1448). --define(wxFont_GetFaceName, 1449). --define(wxFont_GetFamily, 1450). --define(wxFont_GetNativeFontInfoDesc, 1451). --define(wxFont_GetNativeFontInfoUserDesc, 1452). --define(wxFont_GetPointSize, 1453). --define(wxFont_GetStyle, 1454). --define(wxFont_GetUnderlined, 1455). --define(wxFont_GetWeight, 1456). --define(wxFont_Ok, 1457). --define(wxFont_SetDefaultEncoding, 1458). --define(wxFont_SetFaceName, 1459). --define(wxFont_SetFamily, 1460). --define(wxFont_SetPointSize, 1461). --define(wxFont_SetStyle, 1462). --define(wxFont_SetUnderlined, 1463). --define(wxFont_SetWeight, 1464). --define(wxToolTip_Enable, 1465). --define(wxToolTip_SetDelay, 1466). --define(wxToolTip_new, 1467). --define(wxToolTip_SetTip, 1468). --define(wxToolTip_GetTip, 1469). --define(wxToolTip_GetWindow, 1470). --define(wxToolTip_destroy, 1471). --define(wxButton_new_3, 1473). --define(wxButton_new_0, 1474). --define(wxButton_destruct, 1475). --define(wxButton_Create, 1476). --define(wxButton_GetDefaultSize, 1477). --define(wxButton_SetDefault, 1478). --define(wxButton_SetLabel, 1479). --define(wxBitmapButton_new_4, 1481). --define(wxBitmapButton_new_0, 1482). --define(wxBitmapButton_Create, 1483). --define(wxBitmapButton_GetBitmapDisabled, 1484). --define(wxBitmapButton_GetBitmapFocus, 1486). --define(wxBitmapButton_GetBitmapLabel, 1488). --define(wxBitmapButton_GetBitmapSelected, 1490). --define(wxBitmapButton_SetBitmapDisabled, 1492). --define(wxBitmapButton_SetBitmapFocus, 1493). --define(wxBitmapButton_SetBitmapLabel, 1494). --define(wxBitmapButton_SetBitmapSelected, 1495). --define(wxBitmapButton_destroy, 1496). --define(wxToggleButton_new_0, 1497). --define(wxToggleButton_new_4, 1498). --define(wxToggleButton_Create, 1499). --define(wxToggleButton_GetValue, 1500). --define(wxToggleButton_SetValue, 1501). --define(wxToggleButton_destroy, 1502). --define(wxCalendarCtrl_new_0, 1503). --define(wxCalendarCtrl_new_3, 1504). --define(wxCalendarCtrl_Create, 1505). --define(wxCalendarCtrl_destruct, 1506). --define(wxCalendarCtrl_SetDate, 1507). --define(wxCalendarCtrl_GetDate, 1508). --define(wxCalendarCtrl_EnableYearChange, 1509). --define(wxCalendarCtrl_EnableMonthChange, 1510). --define(wxCalendarCtrl_EnableHolidayDisplay, 1511). --define(wxCalendarCtrl_SetHeaderColours, 1512). --define(wxCalendarCtrl_GetHeaderColourFg, 1513). --define(wxCalendarCtrl_GetHeaderColourBg, 1514). --define(wxCalendarCtrl_SetHighlightColours, 1515). --define(wxCalendarCtrl_GetHighlightColourFg, 1516). --define(wxCalendarCtrl_GetHighlightColourBg, 1517). --define(wxCalendarCtrl_SetHolidayColours, 1518). --define(wxCalendarCtrl_GetHolidayColourFg, 1519). --define(wxCalendarCtrl_GetHolidayColourBg, 1520). --define(wxCalendarCtrl_GetAttr, 1521). --define(wxCalendarCtrl_SetAttr, 1522). --define(wxCalendarCtrl_SetHoliday, 1523). --define(wxCalendarCtrl_ResetAttr, 1524). --define(wxCalendarCtrl_HitTest, 1525). --define(wxCalendarDateAttr_new_0, 1526). --define(wxCalendarDateAttr_new_2_1, 1527). --define(wxCalendarDateAttr_new_2_0, 1528). --define(wxCalendarDateAttr_SetTextColour, 1529). --define(wxCalendarDateAttr_SetBackgroundColour, 1530). --define(wxCalendarDateAttr_SetBorderColour, 1531). --define(wxCalendarDateAttr_SetFont, 1532). --define(wxCalendarDateAttr_SetBorder, 1533). --define(wxCalendarDateAttr_SetHoliday, 1534). --define(wxCalendarDateAttr_HasTextColour, 1535). --define(wxCalendarDateAttr_HasBackgroundColour, 1536). --define(wxCalendarDateAttr_HasBorderColour, 1537). --define(wxCalendarDateAttr_HasFont, 1538). --define(wxCalendarDateAttr_HasBorder, 1539). --define(wxCalendarDateAttr_IsHoliday, 1540). --define(wxCalendarDateAttr_GetTextColour, 1541). --define(wxCalendarDateAttr_GetBackgroundColour, 1542). --define(wxCalendarDateAttr_GetBorderColour, 1543). --define(wxCalendarDateAttr_GetFont, 1544). --define(wxCalendarDateAttr_GetBorder, 1545). --define(wxCalendarDateAttr_destroy, 1546). --define(wxCheckBox_new_4, 1548). --define(wxCheckBox_new_0, 1549). --define(wxCheckBox_Create, 1550). --define(wxCheckBox_GetValue, 1551). --define(wxCheckBox_Get3StateValue, 1552). --define(wxCheckBox_Is3rdStateAllowedForUser, 1553). --define(wxCheckBox_Is3State, 1554). --define(wxCheckBox_IsChecked, 1555). --define(wxCheckBox_SetValue, 1556). --define(wxCheckBox_Set3StateValue, 1557). --define(wxCheckBox_destroy, 1558). --define(wxCheckListBox_new_0, 1559). --define(wxCheckListBox_new_3, 1561). --define(wxCheckListBox_Check, 1562). --define(wxCheckListBox_IsChecked, 1563). --define(wxCheckListBox_destroy, 1564). --define(wxChoice_new_3, 1567). --define(wxChoice_new_0, 1568). --define(wxChoice_destruct, 1570). --define(wxChoice_Create, 1572). --define(wxChoice_Delete, 1573). --define(wxChoice_GetColumns, 1574). --define(wxChoice_SetColumns, 1575). --define(wxComboBox_new_0, 1576). --define(wxComboBox_new_3, 1578). --define(wxComboBox_destruct, 1579). --define(wxComboBox_Create, 1581). --define(wxComboBox_CanCopy, 1582). --define(wxComboBox_CanCut, 1583). --define(wxComboBox_CanPaste, 1584). --define(wxComboBox_CanRedo, 1585). --define(wxComboBox_CanUndo, 1586). --define(wxComboBox_Copy, 1587). --define(wxComboBox_Cut, 1588). --define(wxComboBox_GetInsertionPoint, 1589). --define(wxComboBox_GetLastPosition, 1590). --define(wxComboBox_GetValue, 1591). --define(wxComboBox_Paste, 1592). --define(wxComboBox_Redo, 1593). --define(wxComboBox_Replace, 1594). --define(wxComboBox_Remove, 1595). --define(wxComboBox_SetInsertionPoint, 1596). --define(wxComboBox_SetInsertionPointEnd, 1597). --define(wxComboBox_SetSelection_1, 1598). --define(wxComboBox_SetSelection_2, 1599). --define(wxComboBox_SetValue, 1600). --define(wxComboBox_Undo, 1601). --define(wxGauge_new_0, 1602). --define(wxGauge_new_4, 1603). --define(wxGauge_Create, 1604). --define(wxGauge_GetRange, 1605). --define(wxGauge_GetValue, 1606). --define(wxGauge_IsVertical, 1607). --define(wxGauge_SetRange, 1608). --define(wxGauge_SetValue, 1609). --define(wxGauge_Pulse, 1610). --define(wxGauge_destroy, 1611). --define(wxGenericDirCtrl_new_0, 1612). --define(wxGenericDirCtrl_new_2, 1613). --define(wxGenericDirCtrl_destruct, 1614). --define(wxGenericDirCtrl_Create, 1615). --define(wxGenericDirCtrl_Init, 1616). --define(wxGenericDirCtrl_CollapseTree, 1617). --define(wxGenericDirCtrl_ExpandPath, 1618). --define(wxGenericDirCtrl_GetDefaultPath, 1619). --define(wxGenericDirCtrl_GetPath, 1620). --define(wxGenericDirCtrl_GetFilePath, 1621). --define(wxGenericDirCtrl_GetFilter, 1622). --define(wxGenericDirCtrl_GetFilterIndex, 1623). --define(wxGenericDirCtrl_GetRootId, 1624). --define(wxGenericDirCtrl_GetTreeCtrl, 1625). --define(wxGenericDirCtrl_ReCreateTree, 1626). --define(wxGenericDirCtrl_SetDefaultPath, 1627). --define(wxGenericDirCtrl_SetFilter, 1628). --define(wxGenericDirCtrl_SetFilterIndex, 1629). --define(wxGenericDirCtrl_SetPath, 1630). --define(wxStaticBox_new_4, 1632). --define(wxStaticBox_new_0, 1633). --define(wxStaticBox_Create, 1634). --define(wxStaticBox_destroy, 1635). --define(wxStaticLine_new_2, 1637). --define(wxStaticLine_new_0, 1638). --define(wxStaticLine_Create, 1639). --define(wxStaticLine_IsVertical, 1640). --define(wxStaticLine_GetDefaultSize, 1641). --define(wxStaticLine_destroy, 1642). --define(wxListBox_new_3, 1645). --define(wxListBox_new_0, 1646). --define(wxListBox_destruct, 1648). --define(wxListBox_Create, 1650). --define(wxListBox_Deselect, 1651). --define(wxListBox_GetSelections, 1652). --define(wxListBox_InsertItems, 1653). --define(wxListBox_IsSelected, 1654). --define(wxListBox_Set, 1655). --define(wxListBox_HitTest, 1656). --define(wxListBox_SetFirstItem_1_0, 1657). --define(wxListBox_SetFirstItem_1_1, 1658). --define(wxListCtrl_new_0, 1659). --define(wxListCtrl_new_2, 1660). --define(wxListCtrl_Arrange, 1661). --define(wxListCtrl_AssignImageList, 1662). --define(wxListCtrl_ClearAll, 1663). --define(wxListCtrl_Create, 1664). --define(wxListCtrl_DeleteAllItems, 1665). --define(wxListCtrl_DeleteColumn, 1666). --define(wxListCtrl_DeleteItem, 1667). --define(wxListCtrl_EditLabel, 1668). --define(wxListCtrl_EnsureVisible, 1669). --define(wxListCtrl_FindItem_3_0, 1670). --define(wxListCtrl_FindItem_3_1, 1671). --define(wxListCtrl_GetColumn, 1672). --define(wxListCtrl_GetColumnCount, 1673). --define(wxListCtrl_GetColumnWidth, 1674). --define(wxListCtrl_GetCountPerPage, 1675). --define(wxListCtrl_GetEditControl, 1676). --define(wxListCtrl_GetImageList, 1677). --define(wxListCtrl_GetItem, 1678). --define(wxListCtrl_GetItemBackgroundColour, 1679). --define(wxListCtrl_GetItemCount, 1680). --define(wxListCtrl_GetItemData, 1681). --define(wxListCtrl_GetItemFont, 1682). --define(wxListCtrl_GetItemPosition, 1683). --define(wxListCtrl_GetItemRect, 1684). --define(wxListCtrl_GetItemSpacing, 1685). --define(wxListCtrl_GetItemState, 1686). --define(wxListCtrl_GetItemText, 1687). --define(wxListCtrl_GetItemTextColour, 1688). --define(wxListCtrl_GetNextItem, 1689). --define(wxListCtrl_GetSelectedItemCount, 1690). --define(wxListCtrl_GetTextColour, 1691). --define(wxListCtrl_GetTopItem, 1692). --define(wxListCtrl_GetViewRect, 1693). --define(wxListCtrl_HitTest, 1694). --define(wxListCtrl_InsertColumn_2, 1695). --define(wxListCtrl_InsertColumn_3, 1696). --define(wxListCtrl_InsertItem_1, 1697). --define(wxListCtrl_InsertItem_2_1, 1698). --define(wxListCtrl_InsertItem_2_0, 1699). --define(wxListCtrl_InsertItem_3, 1700). --define(wxListCtrl_RefreshItem, 1701). --define(wxListCtrl_RefreshItems, 1702). --define(wxListCtrl_ScrollList, 1703). --define(wxListCtrl_SetBackgroundColour, 1704). --define(wxListCtrl_SetColumn, 1705). --define(wxListCtrl_SetColumnWidth, 1706). --define(wxListCtrl_SetImageList, 1707). --define(wxListCtrl_SetItem_1, 1708). --define(wxListCtrl_SetItem_4, 1709). --define(wxListCtrl_SetItemBackgroundColour, 1710). --define(wxListCtrl_SetItemCount, 1711). --define(wxListCtrl_SetItemData, 1712). --define(wxListCtrl_SetItemFont, 1713). --define(wxListCtrl_SetItemImage, 1714). --define(wxListCtrl_SetItemColumnImage, 1715). --define(wxListCtrl_SetItemPosition, 1716). --define(wxListCtrl_SetItemState, 1717). --define(wxListCtrl_SetItemText, 1718). --define(wxListCtrl_SetItemTextColour, 1719). --define(wxListCtrl_SetSingleStyle, 1720). --define(wxListCtrl_SetTextColour, 1721). --define(wxListCtrl_SetWindowStyleFlag, 1722). --define(wxListCtrl_SortItems, 1723). --define(wxListCtrl_destroy, 1724). --define(wxListView_ClearColumnImage, 1725). --define(wxListView_Focus, 1726). --define(wxListView_GetFirstSelected, 1727). --define(wxListView_GetFocusedItem, 1728). --define(wxListView_GetNextSelected, 1729). --define(wxListView_IsSelected, 1730). --define(wxListView_Select, 1731). --define(wxListView_SetColumnImage, 1732). --define(wxListItem_new_0, 1733). --define(wxListItem_new_1, 1734). --define(wxListItem_destruct, 1735). --define(wxListItem_Clear, 1736). --define(wxListItem_GetAlign, 1737). --define(wxListItem_GetBackgroundColour, 1738). --define(wxListItem_GetColumn, 1739). --define(wxListItem_GetFont, 1740). --define(wxListItem_GetId, 1741). --define(wxListItem_GetImage, 1742). --define(wxListItem_GetMask, 1743). --define(wxListItem_GetState, 1744). --define(wxListItem_GetText, 1745). --define(wxListItem_GetTextColour, 1746). --define(wxListItem_GetWidth, 1747). --define(wxListItem_SetAlign, 1748). --define(wxListItem_SetBackgroundColour, 1749). --define(wxListItem_SetColumn, 1750). --define(wxListItem_SetFont, 1751). --define(wxListItem_SetId, 1752). --define(wxListItem_SetImage, 1753). --define(wxListItem_SetMask, 1754). --define(wxListItem_SetState, 1755). --define(wxListItem_SetStateMask, 1756). --define(wxListItem_SetText, 1757). --define(wxListItem_SetTextColour, 1758). --define(wxListItem_SetWidth, 1759). --define(wxListItemAttr_new_0, 1760). --define(wxListItemAttr_new_3, 1761). --define(wxListItemAttr_GetBackgroundColour, 1762). --define(wxListItemAttr_GetFont, 1763). --define(wxListItemAttr_GetTextColour, 1764). --define(wxListItemAttr_HasBackgroundColour, 1765). --define(wxListItemAttr_HasFont, 1766). --define(wxListItemAttr_HasTextColour, 1767). --define(wxListItemAttr_SetBackgroundColour, 1768). --define(wxListItemAttr_SetFont, 1769). --define(wxListItemAttr_SetTextColour, 1770). --define(wxListItemAttr_destroy, 1771). --define(wxImageList_new_0, 1772). --define(wxImageList_new_3, 1773). --define(wxImageList_Add_1, 1774). --define(wxImageList_Add_2_0, 1775). --define(wxImageList_Add_2_1, 1776). --define(wxImageList_Create, 1777). --define(wxImageList_Draw, 1779). --define(wxImageList_GetBitmap, 1780). --define(wxImageList_GetIcon, 1781). --define(wxImageList_GetImageCount, 1782). --define(wxImageList_GetSize, 1783). --define(wxImageList_Remove, 1784). --define(wxImageList_RemoveAll, 1785). --define(wxImageList_Replace_2, 1786). --define(wxImageList_Replace_3, 1787). --define(wxImageList_destroy, 1788). --define(wxTextAttr_new_0, 1789). --define(wxTextAttr_new_2, 1790). --define(wxTextAttr_GetAlignment, 1791). --define(wxTextAttr_GetBackgroundColour, 1792). --define(wxTextAttr_GetFont, 1793). --define(wxTextAttr_GetLeftIndent, 1794). --define(wxTextAttr_GetLeftSubIndent, 1795). --define(wxTextAttr_GetRightIndent, 1796). --define(wxTextAttr_GetTabs, 1797). --define(wxTextAttr_GetTextColour, 1798). --define(wxTextAttr_HasBackgroundColour, 1799). --define(wxTextAttr_HasFont, 1800). --define(wxTextAttr_HasTextColour, 1801). --define(wxTextAttr_GetFlags, 1802). --define(wxTextAttr_IsDefault, 1803). --define(wxTextAttr_SetAlignment, 1804). --define(wxTextAttr_SetBackgroundColour, 1805). --define(wxTextAttr_SetFlags, 1806). --define(wxTextAttr_SetFont, 1807). --define(wxTextAttr_SetLeftIndent, 1808). --define(wxTextAttr_SetRightIndent, 1809). --define(wxTextAttr_SetTabs, 1810). --define(wxTextAttr_SetTextColour, 1811). --define(wxTextAttr_destroy, 1812). --define(wxTextCtrl_new_3, 1814). --define(wxTextCtrl_new_0, 1815). --define(wxTextCtrl_destruct, 1817). --define(wxTextCtrl_AppendText, 1818). --define(wxTextCtrl_CanCopy, 1819). --define(wxTextCtrl_CanCut, 1820). --define(wxTextCtrl_CanPaste, 1821). --define(wxTextCtrl_CanRedo, 1822). --define(wxTextCtrl_CanUndo, 1823). --define(wxTextCtrl_Clear, 1824). --define(wxTextCtrl_Copy, 1825). --define(wxTextCtrl_Create, 1826). --define(wxTextCtrl_Cut, 1827). --define(wxTextCtrl_DiscardEdits, 1828). --define(wxTextCtrl_ChangeValue, 1829). --define(wxTextCtrl_EmulateKeyPress, 1830). --define(wxTextCtrl_GetDefaultStyle, 1831). --define(wxTextCtrl_GetInsertionPoint, 1832). --define(wxTextCtrl_GetLastPosition, 1833). --define(wxTextCtrl_GetLineLength, 1834). --define(wxTextCtrl_GetLineText, 1835). --define(wxTextCtrl_GetNumberOfLines, 1836). --define(wxTextCtrl_GetRange, 1837). --define(wxTextCtrl_GetSelection, 1838). --define(wxTextCtrl_GetStringSelection, 1839). --define(wxTextCtrl_GetStyle, 1840). --define(wxTextCtrl_GetValue, 1841). --define(wxTextCtrl_IsEditable, 1842). --define(wxTextCtrl_IsModified, 1843). --define(wxTextCtrl_IsMultiLine, 1844). --define(wxTextCtrl_IsSingleLine, 1845). --define(wxTextCtrl_LoadFile, 1846). --define(wxTextCtrl_MarkDirty, 1847). --define(wxTextCtrl_Paste, 1848). --define(wxTextCtrl_PositionToXY, 1849). --define(wxTextCtrl_Redo, 1850). --define(wxTextCtrl_Remove, 1851). --define(wxTextCtrl_Replace, 1852). --define(wxTextCtrl_SaveFile, 1853). --define(wxTextCtrl_SetDefaultStyle, 1854). --define(wxTextCtrl_SetEditable, 1855). --define(wxTextCtrl_SetInsertionPoint, 1856). --define(wxTextCtrl_SetInsertionPointEnd, 1857). --define(wxTextCtrl_SetMaxLength, 1859). --define(wxTextCtrl_SetSelection, 1860). --define(wxTextCtrl_SetStyle, 1861). --define(wxTextCtrl_SetValue, 1862). --define(wxTextCtrl_ShowPosition, 1863). --define(wxTextCtrl_Undo, 1864). --define(wxTextCtrl_WriteText, 1865). --define(wxTextCtrl_XYToPosition, 1866). --define(wxNotebook_new_0, 1869). --define(wxNotebook_new_3, 1870). --define(wxNotebook_destruct, 1871). --define(wxNotebook_AddPage, 1872). --define(wxNotebook_AdvanceSelection, 1873). --define(wxNotebook_AssignImageList, 1874). --define(wxNotebook_Create, 1875). --define(wxNotebook_DeleteAllPages, 1876). --define(wxNotebook_DeletePage, 1877). --define(wxNotebook_RemovePage, 1878). --define(wxNotebook_GetCurrentPage, 1879). --define(wxNotebook_GetImageList, 1880). --define(wxNotebook_GetPage, 1882). --define(wxNotebook_GetPageCount, 1883). --define(wxNotebook_GetPageImage, 1884). --define(wxNotebook_GetPageText, 1885). --define(wxNotebook_GetRowCount, 1886). --define(wxNotebook_GetSelection, 1887). --define(wxNotebook_GetThemeBackgroundColour, 1888). --define(wxNotebook_HitTest, 1890). --define(wxNotebook_InsertPage, 1892). --define(wxNotebook_SetImageList, 1893). --define(wxNotebook_SetPadding, 1894). --define(wxNotebook_SetPageSize, 1895). --define(wxNotebook_SetPageImage, 1896). --define(wxNotebook_SetPageText, 1897). --define(wxNotebook_SetSelection, 1898). --define(wxNotebook_ChangeSelection, 1899). --define(wxChoicebook_new_0, 1900). --define(wxChoicebook_new_3, 1901). --define(wxChoicebook_AddPage, 1902). --define(wxChoicebook_AdvanceSelection, 1903). --define(wxChoicebook_AssignImageList, 1904). --define(wxChoicebook_Create, 1905). --define(wxChoicebook_DeleteAllPages, 1906). --define(wxChoicebook_DeletePage, 1907). --define(wxChoicebook_RemovePage, 1908). --define(wxChoicebook_GetCurrentPage, 1909). --define(wxChoicebook_GetImageList, 1910). --define(wxChoicebook_GetPage, 1912). --define(wxChoicebook_GetPageCount, 1913). --define(wxChoicebook_GetPageImage, 1914). --define(wxChoicebook_GetPageText, 1915). --define(wxChoicebook_GetSelection, 1916). --define(wxChoicebook_HitTest, 1917). --define(wxChoicebook_InsertPage, 1918). --define(wxChoicebook_SetImageList, 1919). --define(wxChoicebook_SetPageSize, 1920). --define(wxChoicebook_SetPageImage, 1921). --define(wxChoicebook_SetPageText, 1922). --define(wxChoicebook_SetSelection, 1923). --define(wxChoicebook_ChangeSelection, 1924). --define(wxChoicebook_destroy, 1925). --define(wxToolbook_new_0, 1926). --define(wxToolbook_new_3, 1927). --define(wxToolbook_AddPage, 1928). --define(wxToolbook_AdvanceSelection, 1929). --define(wxToolbook_AssignImageList, 1930). --define(wxToolbook_Create, 1931). --define(wxToolbook_DeleteAllPages, 1932). --define(wxToolbook_DeletePage, 1933). --define(wxToolbook_RemovePage, 1934). --define(wxToolbook_GetCurrentPage, 1935). --define(wxToolbook_GetImageList, 1936). --define(wxToolbook_GetPage, 1938). --define(wxToolbook_GetPageCount, 1939). --define(wxToolbook_GetPageImage, 1940). --define(wxToolbook_GetPageText, 1941). --define(wxToolbook_GetSelection, 1942). --define(wxToolbook_HitTest, 1944). --define(wxToolbook_InsertPage, 1945). --define(wxToolbook_SetImageList, 1946). --define(wxToolbook_SetPageSize, 1947). --define(wxToolbook_SetPageImage, 1948). --define(wxToolbook_SetPageText, 1949). --define(wxToolbook_SetSelection, 1950). --define(wxToolbook_ChangeSelection, 1951). --define(wxToolbook_destroy, 1952). --define(wxListbook_new_0, 1953). --define(wxListbook_new_3, 1954). --define(wxListbook_AddPage, 1955). --define(wxListbook_AdvanceSelection, 1956). --define(wxListbook_AssignImageList, 1957). --define(wxListbook_Create, 1958). --define(wxListbook_DeleteAllPages, 1959). --define(wxListbook_DeletePage, 1960). --define(wxListbook_RemovePage, 1961). --define(wxListbook_GetCurrentPage, 1962). --define(wxListbook_GetImageList, 1963). --define(wxListbook_GetPage, 1965). --define(wxListbook_GetPageCount, 1966). --define(wxListbook_GetPageImage, 1967). --define(wxListbook_GetPageText, 1968). --define(wxListbook_GetSelection, 1969). --define(wxListbook_HitTest, 1971). --define(wxListbook_InsertPage, 1972). --define(wxListbook_SetImageList, 1973). --define(wxListbook_SetPageSize, 1974). --define(wxListbook_SetPageImage, 1975). --define(wxListbook_SetPageText, 1976). --define(wxListbook_SetSelection, 1977). --define(wxListbook_ChangeSelection, 1978). --define(wxListbook_destroy, 1979). --define(wxTreebook_new_0, 1980). --define(wxTreebook_new_3, 1981). --define(wxTreebook_AddPage, 1982). --define(wxTreebook_AdvanceSelection, 1983). --define(wxTreebook_AssignImageList, 1984). --define(wxTreebook_Create, 1985). --define(wxTreebook_DeleteAllPages, 1986). --define(wxTreebook_DeletePage, 1987). --define(wxTreebook_RemovePage, 1988). --define(wxTreebook_GetCurrentPage, 1989). --define(wxTreebook_GetImageList, 1990). --define(wxTreebook_GetPage, 1992). --define(wxTreebook_GetPageCount, 1993). --define(wxTreebook_GetPageImage, 1994). --define(wxTreebook_GetPageText, 1995). --define(wxTreebook_GetSelection, 1996). --define(wxTreebook_ExpandNode, 1997). --define(wxTreebook_IsNodeExpanded, 1998). --define(wxTreebook_HitTest, 2000). --define(wxTreebook_InsertPage, 2001). --define(wxTreebook_InsertSubPage, 2002). --define(wxTreebook_SetImageList, 2003). --define(wxTreebook_SetPageSize, 2004). --define(wxTreebook_SetPageImage, 2005). --define(wxTreebook_SetPageText, 2006). --define(wxTreebook_SetSelection, 2007). --define(wxTreebook_ChangeSelection, 2008). --define(wxTreebook_destroy, 2009). --define(wxTreeCtrl_new_2, 2012). --define(wxTreeCtrl_new_0, 2013). --define(wxTreeCtrl_destruct, 2015). --define(wxTreeCtrl_AddRoot, 2016). --define(wxTreeCtrl_AppendItem, 2017). --define(wxTreeCtrl_AssignImageList, 2018). --define(wxTreeCtrl_AssignStateImageList, 2019). --define(wxTreeCtrl_Collapse, 2020). --define(wxTreeCtrl_CollapseAndReset, 2021). --define(wxTreeCtrl_Create, 2022). --define(wxTreeCtrl_Delete, 2023). --define(wxTreeCtrl_DeleteAllItems, 2024). --define(wxTreeCtrl_DeleteChildren, 2025). --define(wxTreeCtrl_EditLabel, 2026). --define(wxTreeCtrl_EnsureVisible, 2027). --define(wxTreeCtrl_Expand, 2028). --define(wxTreeCtrl_GetBoundingRect, 2029). --define(wxTreeCtrl_GetChildrenCount, 2031). --define(wxTreeCtrl_GetCount, 2032). --define(wxTreeCtrl_GetEditControl, 2033). --define(wxTreeCtrl_GetFirstChild, 2034). --define(wxTreeCtrl_GetNextChild, 2035). --define(wxTreeCtrl_GetFirstVisibleItem, 2036). --define(wxTreeCtrl_GetImageList, 2037). --define(wxTreeCtrl_GetIndent, 2038). --define(wxTreeCtrl_GetItemBackgroundColour, 2039). --define(wxTreeCtrl_GetItemData, 2040). --define(wxTreeCtrl_GetItemFont, 2041). --define(wxTreeCtrl_GetItemImage_1, 2042). --define(wxTreeCtrl_GetItemImage_2, 2043). --define(wxTreeCtrl_GetItemText, 2044). --define(wxTreeCtrl_GetItemTextColour, 2045). --define(wxTreeCtrl_GetLastChild, 2046). --define(wxTreeCtrl_GetNextSibling, 2047). --define(wxTreeCtrl_GetNextVisible, 2048). --define(wxTreeCtrl_GetItemParent, 2049). --define(wxTreeCtrl_GetPrevSibling, 2050). --define(wxTreeCtrl_GetPrevVisible, 2051). --define(wxTreeCtrl_GetRootItem, 2052). --define(wxTreeCtrl_GetSelection, 2053). --define(wxTreeCtrl_GetSelections, 2054). --define(wxTreeCtrl_GetStateImageList, 2055). --define(wxTreeCtrl_HitTest, 2056). --define(wxTreeCtrl_InsertItem, 2058). --define(wxTreeCtrl_IsBold, 2059). --define(wxTreeCtrl_IsExpanded, 2060). --define(wxTreeCtrl_IsSelected, 2061). --define(wxTreeCtrl_IsVisible, 2062). --define(wxTreeCtrl_ItemHasChildren, 2063). --define(wxTreeCtrl_IsTreeItemIdOk, 2064). --define(wxTreeCtrl_PrependItem, 2065). --define(wxTreeCtrl_ScrollTo, 2066). --define(wxTreeCtrl_SelectItem_1, 2067). --define(wxTreeCtrl_SelectItem_2, 2068). --define(wxTreeCtrl_SetIndent, 2069). --define(wxTreeCtrl_SetImageList, 2070). --define(wxTreeCtrl_SetItemBackgroundColour, 2071). --define(wxTreeCtrl_SetItemBold, 2072). --define(wxTreeCtrl_SetItemData, 2073). --define(wxTreeCtrl_SetItemDropHighlight, 2074). --define(wxTreeCtrl_SetItemFont, 2075). --define(wxTreeCtrl_SetItemHasChildren, 2076). --define(wxTreeCtrl_SetItemImage_2, 2077). --define(wxTreeCtrl_SetItemImage_3, 2078). --define(wxTreeCtrl_SetItemText, 2079). --define(wxTreeCtrl_SetItemTextColour, 2080). --define(wxTreeCtrl_SetStateImageList, 2081). --define(wxTreeCtrl_SetWindowStyle, 2082). --define(wxTreeCtrl_SortChildren, 2083). --define(wxTreeCtrl_Toggle, 2084). --define(wxTreeCtrl_ToggleItemSelection, 2085). --define(wxTreeCtrl_Unselect, 2086). --define(wxTreeCtrl_UnselectAll, 2087). --define(wxTreeCtrl_UnselectItem, 2088). --define(wxScrollBar_new_0, 2089). --define(wxScrollBar_new_3, 2090). --define(wxScrollBar_destruct, 2091). --define(wxScrollBar_Create, 2092). --define(wxScrollBar_GetRange, 2093). --define(wxScrollBar_GetPageSize, 2094). --define(wxScrollBar_GetThumbPosition, 2095). --define(wxScrollBar_GetThumbSize, 2096). --define(wxScrollBar_SetThumbPosition, 2097). --define(wxScrollBar_SetScrollbar, 2098). --define(wxSpinButton_new_2, 2100). --define(wxSpinButton_new_0, 2101). --define(wxSpinButton_Create, 2102). --define(wxSpinButton_GetMax, 2103). --define(wxSpinButton_GetMin, 2104). --define(wxSpinButton_GetValue, 2105). --define(wxSpinButton_SetRange, 2106). --define(wxSpinButton_SetValue, 2107). --define(wxSpinButton_destroy, 2108). --define(wxSpinCtrl_new_0, 2109). --define(wxSpinCtrl_new_2, 2110). --define(wxSpinCtrl_Create, 2112). --define(wxSpinCtrl_SetValue_1_1, 2115). --define(wxSpinCtrl_SetValue_1_0, 2116). --define(wxSpinCtrl_GetValue, 2118). --define(wxSpinCtrl_SetRange, 2120). --define(wxSpinCtrl_SetSelection, 2121). --define(wxSpinCtrl_GetMin, 2123). --define(wxSpinCtrl_GetMax, 2125). --define(wxSpinCtrl_destroy, 2126). --define(wxStaticText_new_0, 2127). --define(wxStaticText_new_4, 2128). --define(wxStaticText_Create, 2129). --define(wxStaticText_GetLabel, 2130). --define(wxStaticText_SetLabel, 2131). --define(wxStaticText_Wrap, 2132). --define(wxStaticText_destroy, 2133). --define(wxStaticBitmap_new_0, 2134). --define(wxStaticBitmap_new_4, 2135). --define(wxStaticBitmap_Create, 2136). --define(wxStaticBitmap_GetBitmap, 2137). --define(wxStaticBitmap_SetBitmap, 2138). --define(wxStaticBitmap_destroy, 2139). --define(wxRadioBox_new, 2140). --define(wxRadioBox_destruct, 2142). --define(wxRadioBox_Create, 2143). --define(wxRadioBox_Enable_2, 2144). --define(wxRadioBox_Enable_1, 2145). --define(wxRadioBox_GetSelection, 2146). --define(wxRadioBox_GetString, 2147). --define(wxRadioBox_SetSelection, 2148). --define(wxRadioBox_Show_2, 2149). --define(wxRadioBox_Show_1, 2150). --define(wxRadioBox_GetColumnCount, 2151). --define(wxRadioBox_GetItemHelpText, 2152). --define(wxRadioBox_GetItemToolTip, 2153). --define(wxRadioBox_GetItemFromPoint, 2155). --define(wxRadioBox_GetRowCount, 2156). --define(wxRadioBox_IsItemEnabled, 2157). --define(wxRadioBox_IsItemShown, 2158). --define(wxRadioBox_SetItemHelpText, 2159). --define(wxRadioBox_SetItemToolTip, 2160). --define(wxRadioButton_new_0, 2161). --define(wxRadioButton_new_4, 2162). --define(wxRadioButton_Create, 2163). --define(wxRadioButton_GetValue, 2164). --define(wxRadioButton_SetValue, 2165). --define(wxRadioButton_destroy, 2166). --define(wxSlider_new_6, 2168). --define(wxSlider_new_0, 2169). --define(wxSlider_Create, 2170). --define(wxSlider_GetLineSize, 2171). --define(wxSlider_GetMax, 2172). --define(wxSlider_GetMin, 2173). --define(wxSlider_GetPageSize, 2174). --define(wxSlider_GetThumbLength, 2175). --define(wxSlider_GetValue, 2176). --define(wxSlider_SetLineSize, 2177). --define(wxSlider_SetPageSize, 2178). --define(wxSlider_SetRange, 2179). --define(wxSlider_SetThumbLength, 2180). --define(wxSlider_SetValue, 2181). --define(wxSlider_destroy, 2182). --define(wxDialog_new_4, 2184). --define(wxDialog_new_0, 2185). --define(wxDialog_destruct, 2187). --define(wxDialog_Create, 2188). --define(wxDialog_CreateButtonSizer, 2189). --define(wxDialog_CreateStdDialogButtonSizer, 2190). --define(wxDialog_EndModal, 2191). --define(wxDialog_GetAffirmativeId, 2192). --define(wxDialog_GetReturnCode, 2193). --define(wxDialog_IsModal, 2194). --define(wxDialog_SetAffirmativeId, 2195). --define(wxDialog_SetReturnCode, 2196). --define(wxDialog_Show, 2197). --define(wxDialog_ShowModal, 2198). --define(wxColourDialog_new_0, 2199). --define(wxColourDialog_new_2, 2200). --define(wxColourDialog_destruct, 2201). --define(wxColourDialog_Create, 2202). --define(wxColourDialog_GetColourData, 2203). --define(wxColourData_new_0, 2204). --define(wxColourData_new_1, 2205). --define(wxColourData_destruct, 2206). --define(wxColourData_GetChooseFull, 2207). --define(wxColourData_GetColour, 2208). --define(wxColourData_GetCustomColour, 2210). --define(wxColourData_SetChooseFull, 2211). --define(wxColourData_SetColour, 2212). --define(wxColourData_SetCustomColour, 2213). --define(wxPalette_new_0, 2214). --define(wxPalette_new_4, 2215). --define(wxPalette_destruct, 2217). --define(wxPalette_Create, 2218). --define(wxPalette_GetColoursCount, 2219). --define(wxPalette_GetPixel, 2220). --define(wxPalette_GetRGB, 2221). --define(wxPalette_IsOk, 2222). --define(wxDirDialog_new, 2226). --define(wxDirDialog_destruct, 2227). --define(wxDirDialog_GetPath, 2228). --define(wxDirDialog_GetMessage, 2229). --define(wxDirDialog_SetMessage, 2230). --define(wxDirDialog_SetPath, 2231). --define(wxFileDialog_new, 2235). --define(wxFileDialog_destruct, 2236). --define(wxFileDialog_GetDirectory, 2237). --define(wxFileDialog_GetFilename, 2238). --define(wxFileDialog_GetFilenames, 2239). --define(wxFileDialog_GetFilterIndex, 2240). --define(wxFileDialog_GetMessage, 2241). --define(wxFileDialog_GetPath, 2242). --define(wxFileDialog_GetPaths, 2243). --define(wxFileDialog_GetWildcard, 2244). --define(wxFileDialog_SetDirectory, 2245). --define(wxFileDialog_SetFilename, 2246). --define(wxFileDialog_SetFilterIndex, 2247). --define(wxFileDialog_SetMessage, 2248). --define(wxFileDialog_SetPath, 2249). --define(wxFileDialog_SetWildcard, 2250). --define(wxPickerBase_SetInternalMargin, 2251). --define(wxPickerBase_GetInternalMargin, 2252). --define(wxPickerBase_SetTextCtrlProportion, 2253). --define(wxPickerBase_SetPickerCtrlProportion, 2254). --define(wxPickerBase_GetTextCtrlProportion, 2255). --define(wxPickerBase_GetPickerCtrlProportion, 2256). --define(wxPickerBase_HasTextCtrl, 2257). --define(wxPickerBase_GetTextCtrl, 2258). --define(wxPickerBase_IsTextCtrlGrowable, 2259). --define(wxPickerBase_SetPickerCtrlGrowable, 2260). --define(wxPickerBase_SetTextCtrlGrowable, 2261). --define(wxPickerBase_IsPickerCtrlGrowable, 2262). --define(wxFilePickerCtrl_new_0, 2263). --define(wxFilePickerCtrl_new_3, 2264). --define(wxFilePickerCtrl_Create, 2265). --define(wxFilePickerCtrl_GetPath, 2266). --define(wxFilePickerCtrl_SetPath, 2267). --define(wxFilePickerCtrl_destroy, 2268). --define(wxDirPickerCtrl_new_0, 2269). --define(wxDirPickerCtrl_new_3, 2270). --define(wxDirPickerCtrl_Create, 2271). --define(wxDirPickerCtrl_GetPath, 2272). --define(wxDirPickerCtrl_SetPath, 2273). --define(wxDirPickerCtrl_destroy, 2274). --define(wxColourPickerCtrl_new_0, 2275). --define(wxColourPickerCtrl_new_3, 2276). --define(wxColourPickerCtrl_Create, 2277). --define(wxColourPickerCtrl_GetColour, 2278). --define(wxColourPickerCtrl_SetColour_1_1, 2279). --define(wxColourPickerCtrl_SetColour_1_0, 2280). --define(wxColourPickerCtrl_destroy, 2281). --define(wxDatePickerCtrl_new_0, 2282). --define(wxDatePickerCtrl_new_3, 2283). --define(wxDatePickerCtrl_GetRange, 2284). --define(wxDatePickerCtrl_GetValue, 2285). --define(wxDatePickerCtrl_SetRange, 2286). --define(wxDatePickerCtrl_SetValue, 2287). --define(wxDatePickerCtrl_destroy, 2288). --define(wxFontPickerCtrl_new_0, 2289). --define(wxFontPickerCtrl_new_3, 2290). --define(wxFontPickerCtrl_Create, 2291). --define(wxFontPickerCtrl_GetSelectedFont, 2292). --define(wxFontPickerCtrl_SetSelectedFont, 2293). --define(wxFontPickerCtrl_GetMaxPointSize, 2294). --define(wxFontPickerCtrl_SetMaxPointSize, 2295). --define(wxFontPickerCtrl_destroy, 2296). --define(wxFindReplaceDialog_new_0, 2299). --define(wxFindReplaceDialog_new_4, 2300). --define(wxFindReplaceDialog_destruct, 2301). --define(wxFindReplaceDialog_Create, 2302). --define(wxFindReplaceDialog_GetData, 2303). --define(wxFindReplaceData_new_0, 2304). --define(wxFindReplaceData_new_1, 2305). --define(wxFindReplaceData_GetFindString, 2306). --define(wxFindReplaceData_GetReplaceString, 2307). --define(wxFindReplaceData_GetFlags, 2308). --define(wxFindReplaceData_SetFlags, 2309). --define(wxFindReplaceData_SetFindString, 2310). --define(wxFindReplaceData_SetReplaceString, 2311). --define(wxFindReplaceData_destroy, 2312). --define(wxMultiChoiceDialog_new_0, 2313). --define(wxMultiChoiceDialog_new_5, 2315). --define(wxMultiChoiceDialog_GetSelections, 2316). --define(wxMultiChoiceDialog_SetSelections, 2317). --define(wxMultiChoiceDialog_destroy, 2318). --define(wxSingleChoiceDialog_new_0, 2319). --define(wxSingleChoiceDialog_new_5, 2321). --define(wxSingleChoiceDialog_GetSelection, 2322). --define(wxSingleChoiceDialog_GetStringSelection, 2323). --define(wxSingleChoiceDialog_SetSelection, 2324). --define(wxSingleChoiceDialog_destroy, 2325). --define(wxTextEntryDialog_new, 2326). --define(wxTextEntryDialog_GetValue, 2327). --define(wxTextEntryDialog_SetValue, 2328). --define(wxTextEntryDialog_destroy, 2329). --define(wxPasswordEntryDialog_new, 2330). --define(wxPasswordEntryDialog_destroy, 2331). --define(wxFontData_new_0, 2332). --define(wxFontData_new_1, 2333). --define(wxFontData_destruct, 2334). --define(wxFontData_EnableEffects, 2335). --define(wxFontData_GetAllowSymbols, 2336). --define(wxFontData_GetColour, 2337). --define(wxFontData_GetChosenFont, 2338). --define(wxFontData_GetEnableEffects, 2339). --define(wxFontData_GetInitialFont, 2340). --define(wxFontData_GetShowHelp, 2341). --define(wxFontData_SetAllowSymbols, 2342). --define(wxFontData_SetChosenFont, 2343). --define(wxFontData_SetColour, 2344). --define(wxFontData_SetInitialFont, 2345). --define(wxFontData_SetRange, 2346). --define(wxFontData_SetShowHelp, 2347). --define(wxFontDialog_new_0, 2351). --define(wxFontDialog_new_2, 2353). --define(wxFontDialog_Create, 2355). --define(wxFontDialog_GetFontData, 2356). --define(wxFontDialog_destroy, 2358). --define(wxProgressDialog_new, 2359). --define(wxProgressDialog_destruct, 2360). --define(wxProgressDialog_Resume, 2361). --define(wxProgressDialog_Update_2, 2362). --define(wxProgressDialog_Update_0, 2363). --define(wxMessageDialog_new, 2364). --define(wxMessageDialog_destruct, 2365). --define(wxPageSetupDialog_new, 2366). --define(wxPageSetupDialog_destruct, 2367). --define(wxPageSetupDialog_GetPageSetupData, 2368). --define(wxPageSetupDialog_ShowModal, 2369). --define(wxPageSetupDialogData_new_0, 2370). --define(wxPageSetupDialogData_new_1_0, 2371). --define(wxPageSetupDialogData_new_1_1, 2372). --define(wxPageSetupDialogData_destruct, 2373). --define(wxPageSetupDialogData_EnableHelp, 2374). --define(wxPageSetupDialogData_EnableMargins, 2375). --define(wxPageSetupDialogData_EnableOrientation, 2376). --define(wxPageSetupDialogData_EnablePaper, 2377). --define(wxPageSetupDialogData_EnablePrinter, 2378). --define(wxPageSetupDialogData_GetDefaultMinMargins, 2379). --define(wxPageSetupDialogData_GetEnableMargins, 2380). --define(wxPageSetupDialogData_GetEnableOrientation, 2381). --define(wxPageSetupDialogData_GetEnablePaper, 2382). --define(wxPageSetupDialogData_GetEnablePrinter, 2383). --define(wxPageSetupDialogData_GetEnableHelp, 2384). --define(wxPageSetupDialogData_GetDefaultInfo, 2385). --define(wxPageSetupDialogData_GetMarginTopLeft, 2386). --define(wxPageSetupDialogData_GetMarginBottomRight, 2387). --define(wxPageSetupDialogData_GetMinMarginTopLeft, 2388). --define(wxPageSetupDialogData_GetMinMarginBottomRight, 2389). --define(wxPageSetupDialogData_GetPaperId, 2390). --define(wxPageSetupDialogData_GetPaperSize, 2391). --define(wxPageSetupDialogData_GetPrintData, 2393). --define(wxPageSetupDialogData_IsOk, 2394). --define(wxPageSetupDialogData_SetDefaultInfo, 2395). --define(wxPageSetupDialogData_SetDefaultMinMargins, 2396). --define(wxPageSetupDialogData_SetMarginTopLeft, 2397). --define(wxPageSetupDialogData_SetMarginBottomRight, 2398). --define(wxPageSetupDialogData_SetMinMarginTopLeft, 2399). --define(wxPageSetupDialogData_SetMinMarginBottomRight, 2400). --define(wxPageSetupDialogData_SetPaperId, 2401). --define(wxPageSetupDialogData_SetPaperSize_1_1, 2402). --define(wxPageSetupDialogData_SetPaperSize_1_0, 2403). --define(wxPageSetupDialogData_SetPrintData, 2404). --define(wxPrintDialog_new_2_0, 2405). --define(wxPrintDialog_new_2_1, 2406). --define(wxPrintDialog_destruct, 2407). --define(wxPrintDialog_GetPrintDialogData, 2408). --define(wxPrintDialog_GetPrintDC, 2409). --define(wxPrintDialogData_new_0, 2410). --define(wxPrintDialogData_new_1_1, 2411). --define(wxPrintDialogData_new_1_0, 2412). --define(wxPrintDialogData_destruct, 2413). --define(wxPrintDialogData_EnableHelp, 2414). --define(wxPrintDialogData_EnablePageNumbers, 2415). --define(wxPrintDialogData_EnablePrintToFile, 2416). --define(wxPrintDialogData_EnableSelection, 2417). --define(wxPrintDialogData_GetAllPages, 2418). --define(wxPrintDialogData_GetCollate, 2419). --define(wxPrintDialogData_GetFromPage, 2420). --define(wxPrintDialogData_GetMaxPage, 2421). --define(wxPrintDialogData_GetMinPage, 2422). --define(wxPrintDialogData_GetNoCopies, 2423). --define(wxPrintDialogData_GetPrintData, 2424). --define(wxPrintDialogData_GetPrintToFile, 2425). --define(wxPrintDialogData_GetSelection, 2426). --define(wxPrintDialogData_GetToPage, 2427). --define(wxPrintDialogData_IsOk, 2428). --define(wxPrintDialogData_SetCollate, 2429). --define(wxPrintDialogData_SetFromPage, 2430). --define(wxPrintDialogData_SetMaxPage, 2431). --define(wxPrintDialogData_SetMinPage, 2432). --define(wxPrintDialogData_SetNoCopies, 2433). --define(wxPrintDialogData_SetPrintData, 2434). --define(wxPrintDialogData_SetPrintToFile, 2435). --define(wxPrintDialogData_SetSelection, 2436). --define(wxPrintDialogData_SetToPage, 2437). --define(wxPrintData_new_0, 2438). --define(wxPrintData_new_1, 2439). --define(wxPrintData_destruct, 2440). --define(wxPrintData_GetCollate, 2441). --define(wxPrintData_GetBin, 2442). --define(wxPrintData_GetColour, 2443). --define(wxPrintData_GetDuplex, 2444). --define(wxPrintData_GetNoCopies, 2445). --define(wxPrintData_GetOrientation, 2446). --define(wxPrintData_GetPaperId, 2447). --define(wxPrintData_GetPrinterName, 2448). --define(wxPrintData_GetQuality, 2449). --define(wxPrintData_IsOk, 2450). --define(wxPrintData_SetBin, 2451). --define(wxPrintData_SetCollate, 2452). --define(wxPrintData_SetColour, 2453). --define(wxPrintData_SetDuplex, 2454). --define(wxPrintData_SetNoCopies, 2455). --define(wxPrintData_SetOrientation, 2456). --define(wxPrintData_SetPaperId, 2457). --define(wxPrintData_SetPrinterName, 2458). --define(wxPrintData_SetQuality, 2459). --define(wxPrintPreview_new_2, 2462). --define(wxPrintPreview_new_3, 2463). --define(wxPrintPreview_destruct, 2465). --define(wxPrintPreview_GetCanvas, 2466). --define(wxPrintPreview_GetCurrentPage, 2467). --define(wxPrintPreview_GetFrame, 2468). --define(wxPrintPreview_GetMaxPage, 2469). --define(wxPrintPreview_GetMinPage, 2470). --define(wxPrintPreview_GetPrintout, 2471). --define(wxPrintPreview_GetPrintoutForPrinting, 2472). --define(wxPrintPreview_IsOk, 2473). --define(wxPrintPreview_PaintPage, 2474). --define(wxPrintPreview_Print, 2475). --define(wxPrintPreview_RenderPage, 2476). --define(wxPrintPreview_SetCanvas, 2477). --define(wxPrintPreview_SetCurrentPage, 2478). --define(wxPrintPreview_SetFrame, 2479). --define(wxPrintPreview_SetPrintout, 2480). --define(wxPrintPreview_SetZoom, 2481). --define(wxPreviewFrame_new, 2482). --define(wxPreviewFrame_destruct, 2483). --define(wxPreviewFrame_CreateControlBar, 2484). --define(wxPreviewFrame_CreateCanvas, 2485). --define(wxPreviewFrame_Initialize, 2486). --define(wxPreviewFrame_OnCloseWindow, 2487). --define(wxPreviewControlBar_new, 2488). --define(wxPreviewControlBar_destruct, 2489). --define(wxPreviewControlBar_CreateButtons, 2490). --define(wxPreviewControlBar_GetPrintPreview, 2491). --define(wxPreviewControlBar_GetZoomControl, 2492). --define(wxPreviewControlBar_SetZoomControl, 2493). --define(wxPrinter_new, 2495). --define(wxPrinter_CreateAbortWindow, 2496). --define(wxPrinter_GetAbort, 2497). --define(wxPrinter_GetLastError, 2498). --define(wxPrinter_GetPrintDialogData, 2499). --define(wxPrinter_Print, 2500). --define(wxPrinter_PrintDialog, 2501). --define(wxPrinter_ReportError, 2502). --define(wxPrinter_Setup, 2503). --define(wxPrinter_destroy, 2504). --define(wxXmlResource_new_1, 2505). --define(wxXmlResource_new_2, 2506). --define(wxXmlResource_destruct, 2507). --define(wxXmlResource_AttachUnknownControl, 2508). --define(wxXmlResource_ClearHandlers, 2509). --define(wxXmlResource_CompareVersion, 2510). --define(wxXmlResource_Get, 2511). --define(wxXmlResource_GetFlags, 2512). --define(wxXmlResource_GetVersion, 2513). --define(wxXmlResource_GetXRCID, 2514). --define(wxXmlResource_InitAllHandlers, 2515). --define(wxXmlResource_Load, 2516). --define(wxXmlResource_LoadBitmap, 2517). --define(wxXmlResource_LoadDialog_2, 2518). --define(wxXmlResource_LoadDialog_3, 2519). --define(wxXmlResource_LoadFrame_2, 2520). --define(wxXmlResource_LoadFrame_3, 2521). --define(wxXmlResource_LoadIcon, 2522). --define(wxXmlResource_LoadMenu, 2523). --define(wxXmlResource_LoadMenuBar_2, 2524). --define(wxXmlResource_LoadMenuBar_1, 2525). --define(wxXmlResource_LoadPanel_2, 2526). --define(wxXmlResource_LoadPanel_3, 2527). --define(wxXmlResource_LoadToolBar, 2528). --define(wxXmlResource_Set, 2529). --define(wxXmlResource_SetFlags, 2530). --define(wxXmlResource_Unload, 2531). --define(wxXmlResource_xrcctrl, 2532). --define(wxHtmlEasyPrinting_new, 2533). --define(wxHtmlEasyPrinting_destruct, 2534). --define(wxHtmlEasyPrinting_GetPrintData, 2535). --define(wxHtmlEasyPrinting_GetPageSetupData, 2536). --define(wxHtmlEasyPrinting_PreviewFile, 2537). --define(wxHtmlEasyPrinting_PreviewText, 2538). --define(wxHtmlEasyPrinting_PrintFile, 2539). --define(wxHtmlEasyPrinting_PrintText, 2540). --define(wxHtmlEasyPrinting_PageSetup, 2541). --define(wxHtmlEasyPrinting_SetFonts, 2542). --define(wxHtmlEasyPrinting_SetHeader, 2543). --define(wxHtmlEasyPrinting_SetFooter, 2544). --define(wxGLCanvas_new_2, 2546). --define(wxGLCanvas_new_3_1, 2547). --define(wxGLCanvas_new_3_0, 2548). --define(wxGLCanvas_GetContext, 2549). --define(wxGLCanvas_SetCurrent, 2551). --define(wxGLCanvas_SwapBuffers, 2552). --define(wxGLCanvas_destroy, 2553). --define(wxAuiManager_new, 2554). --define(wxAuiManager_destruct, 2555). --define(wxAuiManager_AddPane_2_1, 2556). --define(wxAuiManager_AddPane_3, 2557). --define(wxAuiManager_AddPane_2_0, 2558). --define(wxAuiManager_DetachPane, 2559). --define(wxAuiManager_GetAllPanes, 2560). --define(wxAuiManager_GetArtProvider, 2561). --define(wxAuiManager_GetDockSizeConstraint, 2562). --define(wxAuiManager_GetFlags, 2563). --define(wxAuiManager_GetManagedWindow, 2564). --define(wxAuiManager_GetManager, 2565). --define(wxAuiManager_GetPane_1_1, 2566). --define(wxAuiManager_GetPane_1_0, 2567). --define(wxAuiManager_HideHint, 2568). --define(wxAuiManager_InsertPane, 2569). --define(wxAuiManager_LoadPaneInfo, 2570). --define(wxAuiManager_LoadPerspective, 2571). --define(wxAuiManager_SavePaneInfo, 2572). --define(wxAuiManager_SavePerspective, 2573). --define(wxAuiManager_SetArtProvider, 2574). --define(wxAuiManager_SetDockSizeConstraint, 2575). --define(wxAuiManager_SetFlags, 2576). --define(wxAuiManager_SetManagedWindow, 2577). --define(wxAuiManager_ShowHint, 2578). --define(wxAuiManager_UnInit, 2579). --define(wxAuiManager_Update, 2580). --define(wxAuiPaneInfo_new_0, 2581). --define(wxAuiPaneInfo_new_1, 2582). --define(wxAuiPaneInfo_destruct, 2583). --define(wxAuiPaneInfo_BestSize_1, 2584). --define(wxAuiPaneInfo_BestSize_2, 2585). --define(wxAuiPaneInfo_Bottom, 2586). --define(wxAuiPaneInfo_BottomDockable, 2587). --define(wxAuiPaneInfo_Caption, 2588). --define(wxAuiPaneInfo_CaptionVisible, 2589). --define(wxAuiPaneInfo_Centre, 2590). --define(wxAuiPaneInfo_CentrePane, 2591). --define(wxAuiPaneInfo_CloseButton, 2592). --define(wxAuiPaneInfo_DefaultPane, 2593). --define(wxAuiPaneInfo_DestroyOnClose, 2594). --define(wxAuiPaneInfo_Direction, 2595). --define(wxAuiPaneInfo_Dock, 2596). --define(wxAuiPaneInfo_Dockable, 2597). --define(wxAuiPaneInfo_Fixed, 2598). --define(wxAuiPaneInfo_Float, 2599). --define(wxAuiPaneInfo_Floatable, 2600). --define(wxAuiPaneInfo_FloatingPosition_1, 2601). --define(wxAuiPaneInfo_FloatingPosition_2, 2602). --define(wxAuiPaneInfo_FloatingSize_1, 2603). --define(wxAuiPaneInfo_FloatingSize_2, 2604). --define(wxAuiPaneInfo_Gripper, 2605). --define(wxAuiPaneInfo_GripperTop, 2606). --define(wxAuiPaneInfo_HasBorder, 2607). --define(wxAuiPaneInfo_HasCaption, 2608). --define(wxAuiPaneInfo_HasCloseButton, 2609). --define(wxAuiPaneInfo_HasFlag, 2610). --define(wxAuiPaneInfo_HasGripper, 2611). --define(wxAuiPaneInfo_HasGripperTop, 2612). --define(wxAuiPaneInfo_HasMaximizeButton, 2613). --define(wxAuiPaneInfo_HasMinimizeButton, 2614). --define(wxAuiPaneInfo_HasPinButton, 2615). --define(wxAuiPaneInfo_Hide, 2616). --define(wxAuiPaneInfo_IsBottomDockable, 2617). --define(wxAuiPaneInfo_IsDocked, 2618). --define(wxAuiPaneInfo_IsFixed, 2619). --define(wxAuiPaneInfo_IsFloatable, 2620). --define(wxAuiPaneInfo_IsFloating, 2621). --define(wxAuiPaneInfo_IsLeftDockable, 2622). --define(wxAuiPaneInfo_IsMovable, 2623). --define(wxAuiPaneInfo_IsOk, 2624). --define(wxAuiPaneInfo_IsResizable, 2625). --define(wxAuiPaneInfo_IsRightDockable, 2626). --define(wxAuiPaneInfo_IsShown, 2627). --define(wxAuiPaneInfo_IsToolbar, 2628). --define(wxAuiPaneInfo_IsTopDockable, 2629). --define(wxAuiPaneInfo_Layer, 2630). --define(wxAuiPaneInfo_Left, 2631). --define(wxAuiPaneInfo_LeftDockable, 2632). --define(wxAuiPaneInfo_MaxSize_1, 2633). --define(wxAuiPaneInfo_MaxSize_2, 2634). --define(wxAuiPaneInfo_MaximizeButton, 2635). --define(wxAuiPaneInfo_MinSize_1, 2636). --define(wxAuiPaneInfo_MinSize_2, 2637). --define(wxAuiPaneInfo_MinimizeButton, 2638). --define(wxAuiPaneInfo_Movable, 2639). --define(wxAuiPaneInfo_Name, 2640). --define(wxAuiPaneInfo_PaneBorder, 2641). --define(wxAuiPaneInfo_PinButton, 2642). --define(wxAuiPaneInfo_Position, 2643). --define(wxAuiPaneInfo_Resizable, 2644). --define(wxAuiPaneInfo_Right, 2645). --define(wxAuiPaneInfo_RightDockable, 2646). --define(wxAuiPaneInfo_Row, 2647). --define(wxAuiPaneInfo_SafeSet, 2648). --define(wxAuiPaneInfo_SetFlag, 2649). --define(wxAuiPaneInfo_Show, 2650). --define(wxAuiPaneInfo_ToolbarPane, 2651). --define(wxAuiPaneInfo_Top, 2652). --define(wxAuiPaneInfo_TopDockable, 2653). --define(wxAuiPaneInfo_Window, 2654). --define(wxAuiPaneInfo_GetWindow, 2655). --define(wxAuiPaneInfo_GetFrame, 2656). --define(wxAuiPaneInfo_GetDirection, 2657). --define(wxAuiPaneInfo_GetLayer, 2658). --define(wxAuiPaneInfo_GetRow, 2659). --define(wxAuiPaneInfo_GetPosition, 2660). --define(wxAuiPaneInfo_GetFloatingPosition, 2661). --define(wxAuiPaneInfo_GetFloatingSize, 2662). --define(wxAuiNotebook_new_0, 2663). --define(wxAuiNotebook_new_2, 2664). --define(wxAuiNotebook_AddPage, 2665). --define(wxAuiNotebook_Create, 2666). --define(wxAuiNotebook_DeletePage, 2667). --define(wxAuiNotebook_GetArtProvider, 2668). --define(wxAuiNotebook_GetPage, 2669). --define(wxAuiNotebook_GetPageBitmap, 2670). --define(wxAuiNotebook_GetPageCount, 2671). --define(wxAuiNotebook_GetPageIndex, 2672). --define(wxAuiNotebook_GetPageText, 2673). --define(wxAuiNotebook_GetSelection, 2674). --define(wxAuiNotebook_InsertPage, 2675). --define(wxAuiNotebook_RemovePage, 2676). --define(wxAuiNotebook_SetArtProvider, 2677). --define(wxAuiNotebook_SetFont, 2678). --define(wxAuiNotebook_SetPageBitmap, 2679). --define(wxAuiNotebook_SetPageText, 2680). --define(wxAuiNotebook_SetSelection, 2681). --define(wxAuiNotebook_SetTabCtrlHeight, 2682). --define(wxAuiNotebook_SetUniformBitmapSize, 2683). --define(wxAuiNotebook_destroy, 2684). --define(wxAuiTabArt_SetFlags, 2685). --define(wxAuiTabArt_SetMeasuringFont, 2686). --define(wxAuiTabArt_SetNormalFont, 2687). --define(wxAuiTabArt_SetSelectedFont, 2688). --define(wxAuiTabArt_SetColour, 2689). --define(wxAuiTabArt_SetActiveColour, 2690). --define(wxAuiDockArt_GetColour, 2691). --define(wxAuiDockArt_GetFont, 2692). --define(wxAuiDockArt_GetMetric, 2693). --define(wxAuiDockArt_SetColour, 2694). --define(wxAuiDockArt_SetFont, 2695). --define(wxAuiDockArt_SetMetric, 2696). --define(wxAuiSimpleTabArt_new, 2697). --define(wxAuiSimpleTabArt_destroy, 2698). --define(wxMDIParentFrame_new_0, 2699). --define(wxMDIParentFrame_new_4, 2700). --define(wxMDIParentFrame_destruct, 2701). --define(wxMDIParentFrame_ActivateNext, 2702). --define(wxMDIParentFrame_ActivatePrevious, 2703). --define(wxMDIParentFrame_ArrangeIcons, 2704). --define(wxMDIParentFrame_Cascade, 2705). --define(wxMDIParentFrame_Create, 2706). --define(wxMDIParentFrame_GetActiveChild, 2707). --define(wxMDIParentFrame_GetClientWindow, 2708). --define(wxMDIParentFrame_Tile, 2709). --define(wxMDIChildFrame_new_0, 2710). --define(wxMDIChildFrame_new_4, 2711). --define(wxMDIChildFrame_destruct, 2712). --define(wxMDIChildFrame_Activate, 2713). --define(wxMDIChildFrame_Create, 2714). --define(wxMDIChildFrame_Maximize, 2715). --define(wxMDIChildFrame_Restore, 2716). --define(wxMDIClientWindow_new_0, 2717). --define(wxMDIClientWindow_new_2, 2718). --define(wxMDIClientWindow_destruct, 2719). --define(wxMDIClientWindow_CreateClient, 2720). --define(wxLayoutAlgorithm_new, 2721). --define(wxLayoutAlgorithm_LayoutFrame, 2722). --define(wxLayoutAlgorithm_LayoutMDIFrame, 2723). --define(wxLayoutAlgorithm_LayoutWindow, 2724). --define(wxLayoutAlgorithm_destroy, 2725). --define(wxEvent_GetId, 2726). --define(wxEvent_GetSkipped, 2727). --define(wxEvent_GetTimestamp, 2728). --define(wxEvent_IsCommandEvent, 2729). --define(wxEvent_ResumePropagation, 2730). --define(wxEvent_ShouldPropagate, 2731). --define(wxEvent_Skip, 2732). --define(wxEvent_StopPropagation, 2733). --define(wxCommandEvent_getClientData, 2734). --define(wxCommandEvent_GetExtraLong, 2735). --define(wxCommandEvent_GetInt, 2736). --define(wxCommandEvent_GetSelection, 2737). --define(wxCommandEvent_GetString, 2738). --define(wxCommandEvent_IsChecked, 2739). --define(wxCommandEvent_IsSelection, 2740). --define(wxCommandEvent_SetInt, 2741). --define(wxCommandEvent_SetString, 2742). --define(wxScrollEvent_GetOrientation, 2743). --define(wxScrollEvent_GetPosition, 2744). --define(wxScrollWinEvent_GetOrientation, 2745). --define(wxScrollWinEvent_GetPosition, 2746). --define(wxMouseEvent_AltDown, 2747). --define(wxMouseEvent_Button, 2748). --define(wxMouseEvent_ButtonDClick, 2749). --define(wxMouseEvent_ButtonDown, 2750). --define(wxMouseEvent_ButtonUp, 2751). --define(wxMouseEvent_CmdDown, 2752). --define(wxMouseEvent_ControlDown, 2753). --define(wxMouseEvent_Dragging, 2754). --define(wxMouseEvent_Entering, 2755). --define(wxMouseEvent_GetButton, 2756). --define(wxMouseEvent_GetPosition, 2759). --define(wxMouseEvent_GetLogicalPosition, 2760). --define(wxMouseEvent_GetLinesPerAction, 2761). --define(wxMouseEvent_GetWheelRotation, 2762). --define(wxMouseEvent_GetWheelDelta, 2763). --define(wxMouseEvent_GetX, 2764). --define(wxMouseEvent_GetY, 2765). --define(wxMouseEvent_IsButton, 2766). --define(wxMouseEvent_IsPageScroll, 2767). --define(wxMouseEvent_Leaving, 2768). --define(wxMouseEvent_LeftDClick, 2769). --define(wxMouseEvent_LeftDown, 2770). --define(wxMouseEvent_LeftIsDown, 2771). --define(wxMouseEvent_LeftUp, 2772). --define(wxMouseEvent_MetaDown, 2773). --define(wxMouseEvent_MiddleDClick, 2774). --define(wxMouseEvent_MiddleDown, 2775). --define(wxMouseEvent_MiddleIsDown, 2776). --define(wxMouseEvent_MiddleUp, 2777). --define(wxMouseEvent_Moving, 2778). --define(wxMouseEvent_RightDClick, 2779). --define(wxMouseEvent_RightDown, 2780). --define(wxMouseEvent_RightIsDown, 2781). --define(wxMouseEvent_RightUp, 2782). --define(wxMouseEvent_ShiftDown, 2783). --define(wxSetCursorEvent_GetCursor, 2784). --define(wxSetCursorEvent_GetX, 2785). --define(wxSetCursorEvent_GetY, 2786). --define(wxSetCursorEvent_HasCursor, 2787). --define(wxSetCursorEvent_SetCursor, 2788). --define(wxKeyEvent_AltDown, 2789). --define(wxKeyEvent_CmdDown, 2790). --define(wxKeyEvent_ControlDown, 2791). --define(wxKeyEvent_GetKeyCode, 2792). --define(wxKeyEvent_GetModifiers, 2793). --define(wxKeyEvent_GetPosition, 2796). --define(wxKeyEvent_GetRawKeyCode, 2797). --define(wxKeyEvent_GetRawKeyFlags, 2798). --define(wxKeyEvent_GetUnicodeKey, 2799). --define(wxKeyEvent_GetX, 2800). --define(wxKeyEvent_GetY, 2801). --define(wxKeyEvent_HasModifiers, 2802). --define(wxKeyEvent_MetaDown, 2803). --define(wxKeyEvent_ShiftDown, 2804). --define(wxSizeEvent_GetSize, 2805). --define(wxMoveEvent_GetPosition, 2806). --define(wxEraseEvent_GetDC, 2807). --define(wxFocusEvent_GetWindow, 2808). --define(wxChildFocusEvent_GetWindow, 2809). --define(wxMenuEvent_GetMenu, 2810). --define(wxMenuEvent_GetMenuId, 2811). --define(wxMenuEvent_IsPopup, 2812). --define(wxCloseEvent_CanVeto, 2813). --define(wxCloseEvent_GetLoggingOff, 2814). --define(wxCloseEvent_SetCanVeto, 2815). --define(wxCloseEvent_SetLoggingOff, 2816). --define(wxCloseEvent_Veto, 2817). --define(wxShowEvent_SetShow, 2818). --define(wxShowEvent_GetShow, 2819). --define(wxIconizeEvent_Iconized, 2820). --define(wxJoystickEvent_ButtonDown, 2821). --define(wxJoystickEvent_ButtonIsDown, 2822). --define(wxJoystickEvent_ButtonUp, 2823). --define(wxJoystickEvent_GetButtonChange, 2824). --define(wxJoystickEvent_GetButtonState, 2825). --define(wxJoystickEvent_GetJoystick, 2826). --define(wxJoystickEvent_GetPosition, 2827). --define(wxJoystickEvent_GetZPosition, 2828). --define(wxJoystickEvent_IsButton, 2829). --define(wxJoystickEvent_IsMove, 2830). --define(wxJoystickEvent_IsZMove, 2831). --define(wxUpdateUIEvent_CanUpdate, 2832). --define(wxUpdateUIEvent_Check, 2833). --define(wxUpdateUIEvent_Enable, 2834). --define(wxUpdateUIEvent_Show, 2835). --define(wxUpdateUIEvent_GetChecked, 2836). --define(wxUpdateUIEvent_GetEnabled, 2837). --define(wxUpdateUIEvent_GetShown, 2838). --define(wxUpdateUIEvent_GetSetChecked, 2839). --define(wxUpdateUIEvent_GetSetEnabled, 2840). --define(wxUpdateUIEvent_GetSetShown, 2841). --define(wxUpdateUIEvent_GetSetText, 2842). --define(wxUpdateUIEvent_GetText, 2843). --define(wxUpdateUIEvent_GetMode, 2844). --define(wxUpdateUIEvent_GetUpdateInterval, 2845). --define(wxUpdateUIEvent_ResetUpdateTime, 2846). --define(wxUpdateUIEvent_SetMode, 2847). --define(wxUpdateUIEvent_SetText, 2848). --define(wxUpdateUIEvent_SetUpdateInterval, 2849). --define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2850). --define(wxPaletteChangedEvent_SetChangedWindow, 2851). --define(wxPaletteChangedEvent_GetChangedWindow, 2852). --define(wxQueryNewPaletteEvent_SetPaletteRealized, 2853). --define(wxQueryNewPaletteEvent_GetPaletteRealized, 2854). --define(wxNavigationKeyEvent_GetDirection, 2855). --define(wxNavigationKeyEvent_SetDirection, 2856). --define(wxNavigationKeyEvent_IsWindowChange, 2857). --define(wxNavigationKeyEvent_SetWindowChange, 2858). --define(wxNavigationKeyEvent_IsFromTab, 2859). --define(wxNavigationKeyEvent_SetFromTab, 2860). --define(wxNavigationKeyEvent_GetCurrentFocus, 2861). --define(wxNavigationKeyEvent_SetCurrentFocus, 2862). --define(wxHelpEvent_GetOrigin, 2863). --define(wxHelpEvent_GetPosition, 2864). --define(wxHelpEvent_SetOrigin, 2865). --define(wxHelpEvent_SetPosition, 2866). --define(wxContextMenuEvent_GetPosition, 2867). --define(wxContextMenuEvent_SetPosition, 2868). --define(wxIdleEvent_CanSend, 2869). --define(wxIdleEvent_GetMode, 2870). --define(wxIdleEvent_RequestMore, 2871). --define(wxIdleEvent_MoreRequested, 2872). --define(wxIdleEvent_SetMode, 2873). --define(wxGridEvent_AltDown, 2874). --define(wxGridEvent_ControlDown, 2875). --define(wxGridEvent_GetCol, 2876). --define(wxGridEvent_GetPosition, 2877). --define(wxGridEvent_GetRow, 2878). --define(wxGridEvent_MetaDown, 2879). --define(wxGridEvent_Selecting, 2880). --define(wxGridEvent_ShiftDown, 2881). --define(wxNotifyEvent_Allow, 2882). --define(wxNotifyEvent_IsAllowed, 2883). --define(wxNotifyEvent_Veto, 2884). --define(wxSashEvent_GetEdge, 2885). --define(wxSashEvent_GetDragRect, 2886). --define(wxSashEvent_GetDragStatus, 2887). --define(wxListEvent_GetCacheFrom, 2888). --define(wxListEvent_GetCacheTo, 2889). --define(wxListEvent_GetKeyCode, 2890). --define(wxListEvent_GetIndex, 2891). --define(wxListEvent_GetColumn, 2892). --define(wxListEvent_GetPoint, 2893). --define(wxListEvent_GetLabel, 2894). --define(wxListEvent_GetText, 2895). --define(wxListEvent_GetImage, 2896). --define(wxListEvent_GetData, 2897). --define(wxListEvent_GetMask, 2898). --define(wxListEvent_GetItem, 2899). --define(wxListEvent_IsEditCancelled, 2900). --define(wxDateEvent_GetDate, 2901). --define(wxCalendarEvent_GetWeekDay, 2902). --define(wxFileDirPickerEvent_GetPath, 2903). --define(wxColourPickerEvent_GetColour, 2904). --define(wxFontPickerEvent_GetFont, 2905). --define(wxStyledTextEvent_GetPosition, 2906). --define(wxStyledTextEvent_GetKey, 2907). --define(wxStyledTextEvent_GetModifiers, 2908). --define(wxStyledTextEvent_GetModificationType, 2909). --define(wxStyledTextEvent_GetText, 2910). --define(wxStyledTextEvent_GetLength, 2911). --define(wxStyledTextEvent_GetLinesAdded, 2912). --define(wxStyledTextEvent_GetLine, 2913). --define(wxStyledTextEvent_GetFoldLevelNow, 2914). --define(wxStyledTextEvent_GetFoldLevelPrev, 2915). --define(wxStyledTextEvent_GetMargin, 2916). --define(wxStyledTextEvent_GetMessage, 2917). --define(wxStyledTextEvent_GetWParam, 2918). --define(wxStyledTextEvent_GetLParam, 2919). --define(wxStyledTextEvent_GetListType, 2920). --define(wxStyledTextEvent_GetX, 2921). --define(wxStyledTextEvent_GetY, 2922). --define(wxStyledTextEvent_GetDragText, 2923). --define(wxStyledTextEvent_GetDragAllowMove, 2924). --define(wxStyledTextEvent_GetDragResult, 2925). --define(wxStyledTextEvent_GetShift, 2926). --define(wxStyledTextEvent_GetControl, 2927). --define(wxStyledTextEvent_GetAlt, 2928). --define(utils_wxGetKeyState, 2929). --define(utils_wxGetMousePosition, 2930). --define(utils_wxGetMouseState, 2931). --define(utils_wxSetDetectableAutoRepeat, 2932). --define(utils_wxBell, 2933). --define(utils_wxFindMenuItemId, 2934). --define(utils_wxGenericFindWindowAtPoint, 2935). --define(utils_wxFindWindowAtPoint, 2936). --define(utils_wxBeginBusyCursor, 2937). --define(utils_wxEndBusyCursor, 2938). --define(utils_wxIsBusy, 2939). --define(utils_wxShutdown, 2940). --define(utils_wxShell, 2941). --define(utils_wxLaunchDefaultBrowser, 2942). --define(utils_wxGetEmailAddress, 2943). --define(utils_wxGetUserId, 2944). --define(utils_wxGetHomeDir, 2945). --define(utils_wxNewId, 2946). --define(utils_wxRegisterId, 2947). --define(utils_wxGetCurrentId, 2948). --define(utils_wxGetOsDescription, 2949). --define(utils_wxIsPlatformLittleEndian, 2950). --define(utils_wxIsPlatform64Bit, 2951). --define(gdicmn_wxDisplaySize, 2952). --define(gdicmn_wxSetCursor, 2953). --define(wxPrintout_new, 2954). --define(wxPrintout_destruct, 2955). --define(wxPrintout_GetDC, 2956). --define(wxPrintout_GetPageSizeMM, 2957). --define(wxPrintout_GetPageSizePixels, 2958). --define(wxPrintout_GetPaperRectPixels, 2959). --define(wxPrintout_GetPPIPrinter, 2960). --define(wxPrintout_GetPPIScreen, 2961). --define(wxPrintout_GetTitle, 2962). --define(wxPrintout_IsPreview, 2963). --define(wxPrintout_FitThisSizeToPaper, 2964). --define(wxPrintout_FitThisSizeToPage, 2965). --define(wxPrintout_FitThisSizeToPageMargins, 2966). --define(wxPrintout_MapScreenSizeToPaper, 2967). --define(wxPrintout_MapScreenSizeToPage, 2968). --define(wxPrintout_MapScreenSizeToPageMargins, 2969). --define(wxPrintout_MapScreenSizeToDevice, 2970). --define(wxPrintout_GetLogicalPaperRect, 2971). --define(wxPrintout_GetLogicalPageRect, 2972). --define(wxPrintout_GetLogicalPageMarginsRect, 2973). --define(wxPrintout_SetLogicalOrigin, 2974). --define(wxPrintout_OffsetLogicalOrigin, 2975). --define(wxStyledTextCtrl_new_2, 2976). --define(wxStyledTextCtrl_new_0, 2977). --define(wxStyledTextCtrl_destruct, 2978). --define(wxStyledTextCtrl_Create, 2979). --define(wxStyledTextCtrl_AddText, 2980). --define(wxStyledTextCtrl_AddStyledText, 2981). --define(wxStyledTextCtrl_InsertText, 2982). --define(wxStyledTextCtrl_ClearAll, 2983). --define(wxStyledTextCtrl_ClearDocumentStyle, 2984). --define(wxStyledTextCtrl_GetLength, 2985). --define(wxStyledTextCtrl_GetCharAt, 2986). --define(wxStyledTextCtrl_GetCurrentPos, 2987). --define(wxStyledTextCtrl_GetAnchor, 2988). --define(wxStyledTextCtrl_GetStyleAt, 2989). --define(wxStyledTextCtrl_Redo, 2990). --define(wxStyledTextCtrl_SetUndoCollection, 2991). --define(wxStyledTextCtrl_SelectAll, 2992). --define(wxStyledTextCtrl_SetSavePoint, 2993). --define(wxStyledTextCtrl_GetStyledText, 2994). --define(wxStyledTextCtrl_CanRedo, 2995). --define(wxStyledTextCtrl_MarkerLineFromHandle, 2996). --define(wxStyledTextCtrl_MarkerDeleteHandle, 2997). --define(wxStyledTextCtrl_GetUndoCollection, 2998). --define(wxStyledTextCtrl_GetViewWhiteSpace, 2999). --define(wxStyledTextCtrl_SetViewWhiteSpace, 3000). --define(wxStyledTextCtrl_PositionFromPoint, 3001). --define(wxStyledTextCtrl_PositionFromPointClose, 3002). --define(wxStyledTextCtrl_GotoLine, 3003). --define(wxStyledTextCtrl_GotoPos, 3004). --define(wxStyledTextCtrl_SetAnchor, 3005). --define(wxStyledTextCtrl_GetCurLine, 3006). --define(wxStyledTextCtrl_GetEndStyled, 3007). --define(wxStyledTextCtrl_ConvertEOLs, 3008). --define(wxStyledTextCtrl_GetEOLMode, 3009). --define(wxStyledTextCtrl_SetEOLMode, 3010). --define(wxStyledTextCtrl_StartStyling, 3011). --define(wxStyledTextCtrl_SetStyling, 3012). --define(wxStyledTextCtrl_GetBufferedDraw, 3013). --define(wxStyledTextCtrl_SetBufferedDraw, 3014). --define(wxStyledTextCtrl_SetTabWidth, 3015). --define(wxStyledTextCtrl_GetTabWidth, 3016). --define(wxStyledTextCtrl_SetCodePage, 3017). --define(wxStyledTextCtrl_MarkerDefine, 3018). --define(wxStyledTextCtrl_MarkerSetForeground, 3019). --define(wxStyledTextCtrl_MarkerSetBackground, 3020). --define(wxStyledTextCtrl_MarkerAdd, 3021). --define(wxStyledTextCtrl_MarkerDelete, 3022). --define(wxStyledTextCtrl_MarkerDeleteAll, 3023). --define(wxStyledTextCtrl_MarkerGet, 3024). --define(wxStyledTextCtrl_MarkerNext, 3025). --define(wxStyledTextCtrl_MarkerPrevious, 3026). --define(wxStyledTextCtrl_MarkerDefineBitmap, 3027). --define(wxStyledTextCtrl_MarkerAddSet, 3028). --define(wxStyledTextCtrl_MarkerSetAlpha, 3029). --define(wxStyledTextCtrl_SetMarginType, 3030). --define(wxStyledTextCtrl_GetMarginType, 3031). --define(wxStyledTextCtrl_SetMarginWidth, 3032). --define(wxStyledTextCtrl_GetMarginWidth, 3033). --define(wxStyledTextCtrl_SetMarginMask, 3034). --define(wxStyledTextCtrl_GetMarginMask, 3035). --define(wxStyledTextCtrl_SetMarginSensitive, 3036). --define(wxStyledTextCtrl_GetMarginSensitive, 3037). --define(wxStyledTextCtrl_StyleClearAll, 3038). --define(wxStyledTextCtrl_StyleSetForeground, 3039). --define(wxStyledTextCtrl_StyleSetBackground, 3040). --define(wxStyledTextCtrl_StyleSetBold, 3041). --define(wxStyledTextCtrl_StyleSetItalic, 3042). --define(wxStyledTextCtrl_StyleSetSize, 3043). --define(wxStyledTextCtrl_StyleSetFaceName, 3044). --define(wxStyledTextCtrl_StyleSetEOLFilled, 3045). --define(wxStyledTextCtrl_StyleResetDefault, 3046). --define(wxStyledTextCtrl_StyleSetUnderline, 3047). --define(wxStyledTextCtrl_StyleSetCase, 3048). --define(wxStyledTextCtrl_StyleSetHotSpot, 3049). --define(wxStyledTextCtrl_SetSelForeground, 3050). --define(wxStyledTextCtrl_SetSelBackground, 3051). --define(wxStyledTextCtrl_GetSelAlpha, 3052). --define(wxStyledTextCtrl_SetSelAlpha, 3053). --define(wxStyledTextCtrl_SetCaretForeground, 3054). --define(wxStyledTextCtrl_CmdKeyAssign, 3055). --define(wxStyledTextCtrl_CmdKeyClear, 3056). --define(wxStyledTextCtrl_CmdKeyClearAll, 3057). --define(wxStyledTextCtrl_SetStyleBytes, 3058). --define(wxStyledTextCtrl_StyleSetVisible, 3059). --define(wxStyledTextCtrl_GetCaretPeriod, 3060). --define(wxStyledTextCtrl_SetCaretPeriod, 3061). --define(wxStyledTextCtrl_SetWordChars, 3062). --define(wxStyledTextCtrl_BeginUndoAction, 3063). --define(wxStyledTextCtrl_EndUndoAction, 3064). --define(wxStyledTextCtrl_IndicatorSetStyle, 3065). --define(wxStyledTextCtrl_IndicatorGetStyle, 3066). --define(wxStyledTextCtrl_IndicatorSetForeground, 3067). --define(wxStyledTextCtrl_IndicatorGetForeground, 3068). --define(wxStyledTextCtrl_SetWhitespaceForeground, 3069). --define(wxStyledTextCtrl_SetWhitespaceBackground, 3070). --define(wxStyledTextCtrl_GetStyleBits, 3071). --define(wxStyledTextCtrl_SetLineState, 3072). --define(wxStyledTextCtrl_GetLineState, 3073). --define(wxStyledTextCtrl_GetMaxLineState, 3074). --define(wxStyledTextCtrl_GetCaretLineVisible, 3075). --define(wxStyledTextCtrl_SetCaretLineVisible, 3076). --define(wxStyledTextCtrl_GetCaretLineBackground, 3077). --define(wxStyledTextCtrl_SetCaretLineBackground, 3078). --define(wxStyledTextCtrl_AutoCompShow, 3079). --define(wxStyledTextCtrl_AutoCompCancel, 3080). --define(wxStyledTextCtrl_AutoCompActive, 3081). --define(wxStyledTextCtrl_AutoCompPosStart, 3082). --define(wxStyledTextCtrl_AutoCompComplete, 3083). --define(wxStyledTextCtrl_AutoCompStops, 3084). --define(wxStyledTextCtrl_AutoCompSetSeparator, 3085). --define(wxStyledTextCtrl_AutoCompGetSeparator, 3086). --define(wxStyledTextCtrl_AutoCompSelect, 3087). --define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3088). --define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3089). --define(wxStyledTextCtrl_AutoCompSetFillUps, 3090). --define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3091). --define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3092). --define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3093). --define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3094). --define(wxStyledTextCtrl_UserListShow, 3095). --define(wxStyledTextCtrl_AutoCompSetAutoHide, 3096). --define(wxStyledTextCtrl_AutoCompGetAutoHide, 3097). --define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3098). --define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3099). --define(wxStyledTextCtrl_RegisterImage, 3100). --define(wxStyledTextCtrl_ClearRegisteredImages, 3101). --define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3102). --define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3103). --define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3104). --define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3105). --define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3106). --define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3107). --define(wxStyledTextCtrl_SetIndent, 3108). --define(wxStyledTextCtrl_GetIndent, 3109). --define(wxStyledTextCtrl_SetUseTabs, 3110). --define(wxStyledTextCtrl_GetUseTabs, 3111). --define(wxStyledTextCtrl_SetLineIndentation, 3112). --define(wxStyledTextCtrl_GetLineIndentation, 3113). --define(wxStyledTextCtrl_GetLineIndentPosition, 3114). --define(wxStyledTextCtrl_GetColumn, 3115). --define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3116). --define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3117). --define(wxStyledTextCtrl_SetIndentationGuides, 3118). --define(wxStyledTextCtrl_GetIndentationGuides, 3119). --define(wxStyledTextCtrl_SetHighlightGuide, 3120). --define(wxStyledTextCtrl_GetHighlightGuide, 3121). --define(wxStyledTextCtrl_GetLineEndPosition, 3122). --define(wxStyledTextCtrl_GetCodePage, 3123). --define(wxStyledTextCtrl_GetCaretForeground, 3124). --define(wxStyledTextCtrl_GetReadOnly, 3125). --define(wxStyledTextCtrl_SetCurrentPos, 3126). --define(wxStyledTextCtrl_SetSelectionStart, 3127). --define(wxStyledTextCtrl_GetSelectionStart, 3128). --define(wxStyledTextCtrl_SetSelectionEnd, 3129). --define(wxStyledTextCtrl_GetSelectionEnd, 3130). --define(wxStyledTextCtrl_SetPrintMagnification, 3131). --define(wxStyledTextCtrl_GetPrintMagnification, 3132). --define(wxStyledTextCtrl_SetPrintColourMode, 3133). --define(wxStyledTextCtrl_GetPrintColourMode, 3134). --define(wxStyledTextCtrl_FindText, 3135). --define(wxStyledTextCtrl_FormatRange, 3136). --define(wxStyledTextCtrl_GetFirstVisibleLine, 3137). --define(wxStyledTextCtrl_GetLine, 3138). --define(wxStyledTextCtrl_GetLineCount, 3139). --define(wxStyledTextCtrl_SetMarginLeft, 3140). --define(wxStyledTextCtrl_GetMarginLeft, 3141). --define(wxStyledTextCtrl_SetMarginRight, 3142). --define(wxStyledTextCtrl_GetMarginRight, 3143). --define(wxStyledTextCtrl_GetModify, 3144). --define(wxStyledTextCtrl_SetSelection, 3145). --define(wxStyledTextCtrl_GetSelectedText, 3146). --define(wxStyledTextCtrl_GetTextRange, 3147). --define(wxStyledTextCtrl_HideSelection, 3148). --define(wxStyledTextCtrl_LineFromPosition, 3149). --define(wxStyledTextCtrl_PositionFromLine, 3150). --define(wxStyledTextCtrl_LineScroll, 3151). --define(wxStyledTextCtrl_EnsureCaretVisible, 3152). --define(wxStyledTextCtrl_ReplaceSelection, 3153). --define(wxStyledTextCtrl_SetReadOnly, 3154). --define(wxStyledTextCtrl_CanPaste, 3155). --define(wxStyledTextCtrl_CanUndo, 3156). --define(wxStyledTextCtrl_EmptyUndoBuffer, 3157). --define(wxStyledTextCtrl_Undo, 3158). --define(wxStyledTextCtrl_Cut, 3159). --define(wxStyledTextCtrl_Copy, 3160). --define(wxStyledTextCtrl_Paste, 3161). --define(wxStyledTextCtrl_Clear, 3162). --define(wxStyledTextCtrl_SetText, 3163). --define(wxStyledTextCtrl_GetText, 3164). --define(wxStyledTextCtrl_GetTextLength, 3165). --define(wxStyledTextCtrl_GetOvertype, 3166). --define(wxStyledTextCtrl_SetCaretWidth, 3167). --define(wxStyledTextCtrl_GetCaretWidth, 3168). --define(wxStyledTextCtrl_SetTargetStart, 3169). --define(wxStyledTextCtrl_GetTargetStart, 3170). --define(wxStyledTextCtrl_SetTargetEnd, 3171). --define(wxStyledTextCtrl_GetTargetEnd, 3172). --define(wxStyledTextCtrl_ReplaceTarget, 3173). --define(wxStyledTextCtrl_SearchInTarget, 3174). --define(wxStyledTextCtrl_SetSearchFlags, 3175). --define(wxStyledTextCtrl_GetSearchFlags, 3176). --define(wxStyledTextCtrl_CallTipShow, 3177). --define(wxStyledTextCtrl_CallTipCancel, 3178). --define(wxStyledTextCtrl_CallTipActive, 3179). --define(wxStyledTextCtrl_CallTipPosAtStart, 3180). --define(wxStyledTextCtrl_CallTipSetHighlight, 3181). --define(wxStyledTextCtrl_CallTipSetBackground, 3182). --define(wxStyledTextCtrl_CallTipSetForeground, 3183). --define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3184). --define(wxStyledTextCtrl_CallTipUseStyle, 3185). --define(wxStyledTextCtrl_VisibleFromDocLine, 3186). --define(wxStyledTextCtrl_DocLineFromVisible, 3187). --define(wxStyledTextCtrl_WrapCount, 3188). --define(wxStyledTextCtrl_SetFoldLevel, 3189). --define(wxStyledTextCtrl_GetFoldLevel, 3190). --define(wxStyledTextCtrl_GetLastChild, 3191). --define(wxStyledTextCtrl_GetFoldParent, 3192). --define(wxStyledTextCtrl_ShowLines, 3193). --define(wxStyledTextCtrl_HideLines, 3194). --define(wxStyledTextCtrl_GetLineVisible, 3195). --define(wxStyledTextCtrl_SetFoldExpanded, 3196). --define(wxStyledTextCtrl_GetFoldExpanded, 3197). --define(wxStyledTextCtrl_ToggleFold, 3198). --define(wxStyledTextCtrl_EnsureVisible, 3199). --define(wxStyledTextCtrl_SetFoldFlags, 3200). --define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3201). --define(wxStyledTextCtrl_SetTabIndents, 3202). --define(wxStyledTextCtrl_GetTabIndents, 3203). --define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3204). --define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3205). --define(wxStyledTextCtrl_SetMouseDwellTime, 3206). --define(wxStyledTextCtrl_GetMouseDwellTime, 3207). --define(wxStyledTextCtrl_WordStartPosition, 3208). --define(wxStyledTextCtrl_WordEndPosition, 3209). --define(wxStyledTextCtrl_SetWrapMode, 3210). --define(wxStyledTextCtrl_GetWrapMode, 3211). --define(wxStyledTextCtrl_SetWrapVisualFlags, 3212). --define(wxStyledTextCtrl_GetWrapVisualFlags, 3213). --define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3214). --define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3215). --define(wxStyledTextCtrl_SetWrapStartIndent, 3216). --define(wxStyledTextCtrl_GetWrapStartIndent, 3217). --define(wxStyledTextCtrl_SetLayoutCache, 3218). --define(wxStyledTextCtrl_GetLayoutCache, 3219). --define(wxStyledTextCtrl_SetScrollWidth, 3220). --define(wxStyledTextCtrl_GetScrollWidth, 3221). --define(wxStyledTextCtrl_TextWidth, 3222). --define(wxStyledTextCtrl_GetEndAtLastLine, 3223). --define(wxStyledTextCtrl_TextHeight, 3224). --define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3225). --define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3226). --define(wxStyledTextCtrl_AppendText, 3227). --define(wxStyledTextCtrl_GetTwoPhaseDraw, 3228). --define(wxStyledTextCtrl_SetTwoPhaseDraw, 3229). --define(wxStyledTextCtrl_TargetFromSelection, 3230). --define(wxStyledTextCtrl_LinesJoin, 3231). --define(wxStyledTextCtrl_LinesSplit, 3232). --define(wxStyledTextCtrl_SetFoldMarginColour, 3233). --define(wxStyledTextCtrl_SetFoldMarginHiColour, 3234). --define(wxStyledTextCtrl_LineDown, 3235). --define(wxStyledTextCtrl_LineDownExtend, 3236). --define(wxStyledTextCtrl_LineUp, 3237). --define(wxStyledTextCtrl_LineUpExtend, 3238). --define(wxStyledTextCtrl_CharLeft, 3239). --define(wxStyledTextCtrl_CharLeftExtend, 3240). --define(wxStyledTextCtrl_CharRight, 3241). --define(wxStyledTextCtrl_CharRightExtend, 3242). --define(wxStyledTextCtrl_WordLeft, 3243). --define(wxStyledTextCtrl_WordLeftExtend, 3244). --define(wxStyledTextCtrl_WordRight, 3245). --define(wxStyledTextCtrl_WordRightExtend, 3246). --define(wxStyledTextCtrl_Home, 3247). --define(wxStyledTextCtrl_HomeExtend, 3248). --define(wxStyledTextCtrl_LineEnd, 3249). --define(wxStyledTextCtrl_LineEndExtend, 3250). --define(wxStyledTextCtrl_DocumentStart, 3251). --define(wxStyledTextCtrl_DocumentStartExtend, 3252). --define(wxStyledTextCtrl_DocumentEnd, 3253). --define(wxStyledTextCtrl_DocumentEndExtend, 3254). --define(wxStyledTextCtrl_PageUp, 3255). --define(wxStyledTextCtrl_PageUpExtend, 3256). --define(wxStyledTextCtrl_PageDown, 3257). --define(wxStyledTextCtrl_PageDownExtend, 3258). --define(wxStyledTextCtrl_EditToggleOvertype, 3259). --define(wxStyledTextCtrl_Cancel, 3260). --define(wxStyledTextCtrl_DeleteBack, 3261). --define(wxStyledTextCtrl_Tab, 3262). --define(wxStyledTextCtrl_BackTab, 3263). --define(wxStyledTextCtrl_NewLine, 3264). --define(wxStyledTextCtrl_FormFeed, 3265). --define(wxStyledTextCtrl_VCHome, 3266). --define(wxStyledTextCtrl_VCHomeExtend, 3267). --define(wxStyledTextCtrl_ZoomIn, 3268). --define(wxStyledTextCtrl_ZoomOut, 3269). --define(wxStyledTextCtrl_DelWordLeft, 3270). --define(wxStyledTextCtrl_DelWordRight, 3271). --define(wxStyledTextCtrl_LineCut, 3272). --define(wxStyledTextCtrl_LineDelete, 3273). --define(wxStyledTextCtrl_LineTranspose, 3274). --define(wxStyledTextCtrl_LineDuplicate, 3275). --define(wxStyledTextCtrl_LowerCase, 3276). --define(wxStyledTextCtrl_UpperCase, 3277). --define(wxStyledTextCtrl_LineScrollDown, 3278). --define(wxStyledTextCtrl_LineScrollUp, 3279). --define(wxStyledTextCtrl_DeleteBackNotLine, 3280). --define(wxStyledTextCtrl_HomeDisplay, 3281). --define(wxStyledTextCtrl_HomeDisplayExtend, 3282). --define(wxStyledTextCtrl_LineEndDisplay, 3283). --define(wxStyledTextCtrl_LineEndDisplayExtend, 3284). --define(wxStyledTextCtrl_HomeWrapExtend, 3285). --define(wxStyledTextCtrl_LineEndWrap, 3286). --define(wxStyledTextCtrl_LineEndWrapExtend, 3287). --define(wxStyledTextCtrl_VCHomeWrap, 3288). --define(wxStyledTextCtrl_VCHomeWrapExtend, 3289). --define(wxStyledTextCtrl_LineCopy, 3290). --define(wxStyledTextCtrl_MoveCaretInsideView, 3291). --define(wxStyledTextCtrl_LineLength, 3292). --define(wxStyledTextCtrl_BraceHighlight, 3293). --define(wxStyledTextCtrl_BraceBadLight, 3294). --define(wxStyledTextCtrl_BraceMatch, 3295). --define(wxStyledTextCtrl_GetViewEOL, 3296). --define(wxStyledTextCtrl_SetViewEOL, 3297). --define(wxStyledTextCtrl_SetModEventMask, 3298). --define(wxStyledTextCtrl_GetEdgeColumn, 3299). --define(wxStyledTextCtrl_SetEdgeColumn, 3300). --define(wxStyledTextCtrl_SetEdgeMode, 3301). --define(wxStyledTextCtrl_GetEdgeMode, 3302). --define(wxStyledTextCtrl_GetEdgeColour, 3303). --define(wxStyledTextCtrl_SetEdgeColour, 3304). --define(wxStyledTextCtrl_SearchAnchor, 3305). --define(wxStyledTextCtrl_SearchNext, 3306). --define(wxStyledTextCtrl_SearchPrev, 3307). --define(wxStyledTextCtrl_LinesOnScreen, 3308). --define(wxStyledTextCtrl_UsePopUp, 3309). --define(wxStyledTextCtrl_SelectionIsRectangle, 3310). --define(wxStyledTextCtrl_SetZoom, 3311). --define(wxStyledTextCtrl_GetZoom, 3312). --define(wxStyledTextCtrl_GetModEventMask, 3313). --define(wxStyledTextCtrl_SetSTCFocus, 3314). --define(wxStyledTextCtrl_GetSTCFocus, 3315). --define(wxStyledTextCtrl_SetStatus, 3316). --define(wxStyledTextCtrl_GetStatus, 3317). --define(wxStyledTextCtrl_SetMouseDownCaptures, 3318). --define(wxStyledTextCtrl_GetMouseDownCaptures, 3319). --define(wxStyledTextCtrl_SetSTCCursor, 3320). --define(wxStyledTextCtrl_GetSTCCursor, 3321). --define(wxStyledTextCtrl_SetControlCharSymbol, 3322). --define(wxStyledTextCtrl_GetControlCharSymbol, 3323). --define(wxStyledTextCtrl_WordPartLeft, 3324). --define(wxStyledTextCtrl_WordPartLeftExtend, 3325). --define(wxStyledTextCtrl_WordPartRight, 3326). --define(wxStyledTextCtrl_WordPartRightExtend, 3327). --define(wxStyledTextCtrl_SetVisiblePolicy, 3328). --define(wxStyledTextCtrl_DelLineLeft, 3329). --define(wxStyledTextCtrl_DelLineRight, 3330). --define(wxStyledTextCtrl_GetXOffset, 3331). --define(wxStyledTextCtrl_ChooseCaretX, 3332). --define(wxStyledTextCtrl_SetXCaretPolicy, 3333). --define(wxStyledTextCtrl_SetYCaretPolicy, 3334). --define(wxStyledTextCtrl_GetPrintWrapMode, 3335). --define(wxStyledTextCtrl_SetHotspotActiveForeground, 3336). --define(wxStyledTextCtrl_SetHotspotActiveBackground, 3337). --define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3338). --define(wxStyledTextCtrl_SetHotspotSingleLine, 3339). --define(wxStyledTextCtrl_ParaDownExtend, 3340). --define(wxStyledTextCtrl_ParaUp, 3341). --define(wxStyledTextCtrl_ParaUpExtend, 3342). --define(wxStyledTextCtrl_PositionBefore, 3343). --define(wxStyledTextCtrl_PositionAfter, 3344). --define(wxStyledTextCtrl_CopyRange, 3345). --define(wxStyledTextCtrl_CopyText, 3346). --define(wxStyledTextCtrl_SetSelectionMode, 3347). --define(wxStyledTextCtrl_GetSelectionMode, 3348). --define(wxStyledTextCtrl_LineDownRectExtend, 3349). --define(wxStyledTextCtrl_LineUpRectExtend, 3350). --define(wxStyledTextCtrl_CharLeftRectExtend, 3351). --define(wxStyledTextCtrl_CharRightRectExtend, 3352). --define(wxStyledTextCtrl_HomeRectExtend, 3353). --define(wxStyledTextCtrl_VCHomeRectExtend, 3354). --define(wxStyledTextCtrl_LineEndRectExtend, 3355). --define(wxStyledTextCtrl_PageUpRectExtend, 3356). --define(wxStyledTextCtrl_PageDownRectExtend, 3357). --define(wxStyledTextCtrl_StutteredPageUp, 3358). --define(wxStyledTextCtrl_StutteredPageUpExtend, 3359). --define(wxStyledTextCtrl_StutteredPageDown, 3360). --define(wxStyledTextCtrl_StutteredPageDownExtend, 3361). --define(wxStyledTextCtrl_WordLeftEnd, 3362). --define(wxStyledTextCtrl_WordLeftEndExtend, 3363). --define(wxStyledTextCtrl_WordRightEnd, 3364). --define(wxStyledTextCtrl_WordRightEndExtend, 3365). --define(wxStyledTextCtrl_SetWhitespaceChars, 3366). --define(wxStyledTextCtrl_SetCharsDefault, 3367). --define(wxStyledTextCtrl_AutoCompGetCurrent, 3368). --define(wxStyledTextCtrl_Allocate, 3369). --define(wxStyledTextCtrl_FindColumn, 3370). --define(wxStyledTextCtrl_GetCaretSticky, 3371). --define(wxStyledTextCtrl_SetCaretSticky, 3372). --define(wxStyledTextCtrl_ToggleCaretSticky, 3373). --define(wxStyledTextCtrl_SetPasteConvertEndings, 3374). --define(wxStyledTextCtrl_GetPasteConvertEndings, 3375). --define(wxStyledTextCtrl_SelectionDuplicate, 3376). --define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3377). --define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3378). --define(wxStyledTextCtrl_StartRecord, 3379). --define(wxStyledTextCtrl_StopRecord, 3380). --define(wxStyledTextCtrl_SetLexer, 3381). --define(wxStyledTextCtrl_GetLexer, 3382). --define(wxStyledTextCtrl_Colourise, 3383). --define(wxStyledTextCtrl_SetProperty, 3384). --define(wxStyledTextCtrl_SetKeyWords, 3385). --define(wxStyledTextCtrl_SetLexerLanguage, 3386). --define(wxStyledTextCtrl_GetProperty, 3387). --define(wxStyledTextCtrl_GetStyleBitsNeeded, 3388). --define(wxStyledTextCtrl_GetCurrentLine, 3389). --define(wxStyledTextCtrl_StyleSetSpec, 3390). --define(wxStyledTextCtrl_StyleSetFont, 3391). --define(wxStyledTextCtrl_StyleSetFontAttr, 3392). --define(wxStyledTextCtrl_StyleSetCharacterSet, 3393). --define(wxStyledTextCtrl_StyleSetFontEncoding, 3394). --define(wxStyledTextCtrl_CmdKeyExecute, 3395). --define(wxStyledTextCtrl_SetMargins, 3396). --define(wxStyledTextCtrl_GetSelection, 3397). --define(wxStyledTextCtrl_PointFromPosition, 3398). --define(wxStyledTextCtrl_ScrollToLine, 3399). --define(wxStyledTextCtrl_ScrollToColumn, 3400). --define(wxStyledTextCtrl_SetVScrollBar, 3401). --define(wxStyledTextCtrl_SetHScrollBar, 3402). --define(wxStyledTextCtrl_GetLastKeydownProcessed, 3403). --define(wxStyledTextCtrl_SetLastKeydownProcessed, 3404). --define(wxStyledTextCtrl_SaveFile, 3405). --define(wxStyledTextCtrl_LoadFile, 3406). --define(wxStyledTextCtrl_DoDragOver, 3407). --define(wxStyledTextCtrl_DoDropText, 3408). --define(wxStyledTextCtrl_GetUseAntiAliasing, 3409). --define(wxStyledTextCtrl_AddTextRaw, 3410). --define(wxStyledTextCtrl_InsertTextRaw, 3411). --define(wxStyledTextCtrl_GetCurLineRaw, 3412). --define(wxStyledTextCtrl_GetLineRaw, 3413). --define(wxStyledTextCtrl_GetSelectedTextRaw, 3414). --define(wxStyledTextCtrl_GetTextRangeRaw, 3415). --define(wxStyledTextCtrl_SetTextRaw, 3416). --define(wxStyledTextCtrl_GetTextRaw, 3417). --define(wxStyledTextCtrl_AppendTextRaw, 3418). --define(wxArtProvider_GetBitmap, 3419). --define(wxArtProvider_GetIcon, 3420). --define(wxTreeEvent_GetKeyCode, 3421). --define(wxTreeEvent_GetItem, 3422). --define(wxTreeEvent_GetKeyEvent, 3423). --define(wxTreeEvent_GetLabel, 3424). --define(wxTreeEvent_GetOldItem, 3425). --define(wxTreeEvent_GetPoint, 3426). --define(wxTreeEvent_IsEditCancelled, 3427). --define(wxTreeEvent_SetToolTip, 3428). --define(wxNotebookEvent_GetOldSelection, 3429). --define(wxNotebookEvent_GetSelection, 3430). --define(wxNotebookEvent_SetOldSelection, 3431). --define(wxNotebookEvent_SetSelection, 3432). --define(wxFileDataObject_new, 3433). --define(wxFileDataObject_AddFile, 3434). --define(wxFileDataObject_GetFilenames, 3435). --define(wxFileDataObject_destroy, 3436). --define(wxTextDataObject_new, 3437). --define(wxTextDataObject_GetTextLength, 3438). --define(wxTextDataObject_GetText, 3439). --define(wxTextDataObject_SetText, 3440). --define(wxTextDataObject_destroy, 3441). --define(wxBitmapDataObject_new_1_1, 3442). --define(wxBitmapDataObject_new_1_0, 3443). --define(wxBitmapDataObject_GetBitmap, 3444). --define(wxBitmapDataObject_SetBitmap, 3445). --define(wxBitmapDataObject_destroy, 3446). --define(wxClipboard_new, 3448). --define(wxClipboard_destruct, 3449). --define(wxClipboard_AddData, 3450). --define(wxClipboard_Clear, 3451). --define(wxClipboard_Close, 3452). --define(wxClipboard_Flush, 3453). --define(wxClipboard_GetData, 3454). --define(wxClipboard_IsOpened, 3455). --define(wxClipboard_Open, 3456). --define(wxClipboard_SetData, 3457). --define(wxClipboard_UsePrimarySelection, 3459). --define(wxClipboard_IsSupported, 3460). --define(wxClipboard_Get, 3461). --define(wxSpinEvent_GetPosition, 3462). --define(wxSpinEvent_SetPosition, 3463). --define(wxSplitterWindow_new_0, 3464). --define(wxSplitterWindow_new_2, 3465). --define(wxSplitterWindow_destruct, 3466). --define(wxSplitterWindow_Create, 3467). --define(wxSplitterWindow_GetMinimumPaneSize, 3468). --define(wxSplitterWindow_GetSashGravity, 3469). --define(wxSplitterWindow_GetSashPosition, 3470). --define(wxSplitterWindow_GetSplitMode, 3471). --define(wxSplitterWindow_GetWindow1, 3472). --define(wxSplitterWindow_GetWindow2, 3473). --define(wxSplitterWindow_Initialize, 3474). --define(wxSplitterWindow_IsSplit, 3475). --define(wxSplitterWindow_ReplaceWindow, 3476). --define(wxSplitterWindow_SetSashGravity, 3477). --define(wxSplitterWindow_SetSashPosition, 3478). --define(wxSplitterWindow_SetSashSize, 3479). --define(wxSplitterWindow_SetMinimumPaneSize, 3480). --define(wxSplitterWindow_SetSplitMode, 3481). --define(wxSplitterWindow_SplitHorizontally, 3482). --define(wxSplitterWindow_SplitVertically, 3483). --define(wxSplitterWindow_Unsplit, 3484). --define(wxSplitterWindow_UpdateSize, 3485). --define(wxSplitterEvent_GetSashPosition, 3486). --define(wxSplitterEvent_GetX, 3487). --define(wxSplitterEvent_GetY, 3488). --define(wxSplitterEvent_GetWindowBeingRemoved, 3489). --define(wxSplitterEvent_SetSashPosition, 3490). --define(wxHtmlWindow_new_0, 3491). --define(wxHtmlWindow_new_2, 3492). --define(wxHtmlWindow_AppendToPage, 3493). --define(wxHtmlWindow_GetOpenedAnchor, 3494). --define(wxHtmlWindow_GetOpenedPage, 3495). --define(wxHtmlWindow_GetOpenedPageTitle, 3496). --define(wxHtmlWindow_GetRelatedFrame, 3497). --define(wxHtmlWindow_HistoryBack, 3498). --define(wxHtmlWindow_HistoryCanBack, 3499). --define(wxHtmlWindow_HistoryCanForward, 3500). --define(wxHtmlWindow_HistoryClear, 3501). --define(wxHtmlWindow_HistoryForward, 3502). --define(wxHtmlWindow_LoadFile, 3503). --define(wxHtmlWindow_LoadPage, 3504). --define(wxHtmlWindow_SelectAll, 3505). --define(wxHtmlWindow_SelectionToText, 3506). --define(wxHtmlWindow_SelectLine, 3507). --define(wxHtmlWindow_SelectWord, 3508). --define(wxHtmlWindow_SetBorders, 3509). --define(wxHtmlWindow_SetFonts, 3510). --define(wxHtmlWindow_SetPage, 3511). --define(wxHtmlWindow_SetRelatedFrame, 3512). --define(wxHtmlWindow_SetRelatedStatusBar, 3513). --define(wxHtmlWindow_ToText, 3514). --define(wxHtmlWindow_destroy, 3515). --define(wxHtmlLinkEvent_GetLinkInfo, 3516). --define(wxSystemSettings_GetColour, 3517). --define(wxSystemSettings_GetFont, 3518). --define(wxSystemSettings_GetMetric, 3519). --define(wxSystemSettings_GetScreenType, 3520). --define(wxSystemOptions_GetOption, 3521). --define(wxSystemOptions_GetOptionInt, 3522). --define(wxSystemOptions_HasOption, 3523). --define(wxSystemOptions_IsFalse, 3524). --define(wxSystemOptions_SetOption_2_1, 3525). --define(wxSystemOptions_SetOption_2_0, 3526). --define(wxAuiNotebookEvent_SetSelection, 3527). --define(wxAuiNotebookEvent_GetSelection, 3528). --define(wxAuiNotebookEvent_SetOldSelection, 3529). --define(wxAuiNotebookEvent_GetOldSelection, 3530). --define(wxAuiNotebookEvent_SetDragSource, 3531). --define(wxAuiNotebookEvent_GetDragSource, 3532). --define(wxAuiManagerEvent_SetManager, 3533). --define(wxAuiManagerEvent_GetManager, 3534). --define(wxAuiManagerEvent_SetPane, 3535). --define(wxAuiManagerEvent_GetPane, 3536). --define(wxAuiManagerEvent_SetButton, 3537). --define(wxAuiManagerEvent_GetButton, 3538). --define(wxAuiManagerEvent_SetDC, 3539). --define(wxAuiManagerEvent_GetDC, 3540). --define(wxAuiManagerEvent_Veto, 3541). --define(wxAuiManagerEvent_GetVeto, 3542). --define(wxAuiManagerEvent_SetCanVeto, 3543). --define(wxAuiManagerEvent_CanVeto, 3544). --define(wxLogNull_new, 3545). --define(wxLogNull_destroy, 3546). --define(wxTaskBarIcon_new, 3547). --define(wxTaskBarIcon_destruct, 3548). --define(wxTaskBarIcon_PopupMenu, 3549). --define(wxTaskBarIcon_RemoveIcon, 3550). --define(wxTaskBarIcon_SetIcon, 3551). --define(wxLocale_new_0, 3552). --define(wxLocale_new_2, 3554). --define(wxLocale_destruct, 3555). --define(wxLocale_Init, 3557). --define(wxLocale_AddCatalog_1, 3558). --define(wxLocale_AddCatalog_3, 3559). --define(wxLocale_AddCatalogLookupPathPrefix, 3560). --define(wxLocale_GetCanonicalName, 3561). --define(wxLocale_GetLanguage, 3562). --define(wxLocale_GetLanguageName, 3563). --define(wxLocale_GetLocale, 3564). --define(wxLocale_GetName, 3565). --define(wxLocale_GetString_2, 3566). --define(wxLocale_GetString_4, 3567). --define(wxLocale_GetHeaderValue, 3568). --define(wxLocale_GetSysName, 3569). --define(wxLocale_GetSystemEncoding, 3570). --define(wxLocale_GetSystemEncodingName, 3571). --define(wxLocale_GetSystemLanguage, 3572). --define(wxLocale_IsLoaded, 3573). --define(wxLocale_IsOk, 3574). --define(wxActivateEvent_GetActive, 3575). --define(wxPopupWindow_new_2, 3577). --define(wxPopupWindow_new_0, 3578). --define(wxPopupWindow_destruct, 3580). --define(wxPopupWindow_Create, 3581). --define(wxPopupWindow_Position, 3582). --define(wxPopupTransientWindow_new_0, 3583). --define(wxPopupTransientWindow_new_2, 3584). --define(wxPopupTransientWindow_destruct, 3585). --define(wxPopupTransientWindow_Popup, 3586). --define(wxPopupTransientWindow_Dismiss, 3587). --define(wxOverlay_new, 3588). --define(wxOverlay_destruct, 3589). --define(wxOverlay_Reset, 3590). --define(wxDCOverlay_new_6, 3591). --define(wxDCOverlay_new_2, 3592). --define(wxDCOverlay_destruct, 3593). --define(wxDCOverlay_Clear, 3594). +-define(wxWindow_DragAcceptFiles, 126). +-define(wxWindow_Enable, 127). +-define(wxWindow_FindFocus, 128). +-define(wxWindow_FindWindow_1_0, 129). +-define(wxWindow_FindWindow_1_1, 130). +-define(wxWindow_FindWindowById, 131). +-define(wxWindow_FindWindowByName, 132). +-define(wxWindow_FindWindowByLabel, 133). +-define(wxWindow_Fit, 134). +-define(wxWindow_FitInside, 135). +-define(wxWindow_Freeze, 136). +-define(wxWindow_GetAcceleratorTable, 137). +-define(wxWindow_GetBackgroundColour, 138). +-define(wxWindow_GetBackgroundStyle, 139). +-define(wxWindow_GetBestSize, 140). +-define(wxWindow_GetCaret, 142). +-define(wxWindow_GetCapture, 143). +-define(wxWindow_GetCharHeight, 144). +-define(wxWindow_GetCharWidth, 145). +-define(wxWindow_GetChildren, 146). +-define(wxWindow_GetClientSize, 149). +-define(wxWindow_GetContainingSizer, 150). +-define(wxWindow_GetCursor, 151). +-define(wxWindow_GetDropTarget, 152). +-define(wxWindow_GetEventHandler, 153). +-define(wxWindow_GetExtraStyle, 154). +-define(wxWindow_GetFont, 155). +-define(wxWindow_GetForegroundColour, 156). +-define(wxWindow_GetGrandParent, 157). +-define(wxWindow_GetHandle, 158). +-define(wxWindow_GetHelpText, 159). +-define(wxWindow_GetId, 160). +-define(wxWindow_GetLabel, 161). +-define(wxWindow_GetMaxSize, 162). +-define(wxWindow_GetMinSize, 163). +-define(wxWindow_GetName, 164). +-define(wxWindow_GetParent, 165). +-define(wxWindow_GetPosition, 167). +-define(wxWindow_GetRect, 168). +-define(wxWindow_GetScreenPosition, 170). +-define(wxWindow_GetScreenRect, 171). +-define(wxWindow_GetScrollPos, 172). +-define(wxWindow_GetScrollRange, 173). +-define(wxWindow_GetScrollThumb, 174). +-define(wxWindow_GetSize, 176). +-define(wxWindow_GetSizer, 177). +-define(wxWindow_GetTextExtent, 178). +-define(wxWindow_GetToolTip, 179). +-define(wxWindow_GetUpdateRegion, 180). +-define(wxWindow_GetVirtualSize, 182). +-define(wxWindow_GetWindowStyleFlag, 184). +-define(wxWindow_GetWindowVariant, 185). +-define(wxWindow_HasCapture, 186). +-define(wxWindow_HasScrollbar, 187). +-define(wxWindow_HasTransparentBackground, 188). +-define(wxWindow_Hide, 189). +-define(wxWindow_InheritAttributes, 190). +-define(wxWindow_InitDialog, 191). +-define(wxWindow_InvalidateBestSize, 192). +-define(wxWindow_IsEnabled, 193). +-define(wxWindow_IsExposed_2, 194). +-define(wxWindow_IsExposed_4, 195). +-define(wxWindow_IsExposed_1_0, 196). +-define(wxWindow_IsExposed_1_1, 197). +-define(wxWindow_IsRetained, 198). +-define(wxWindow_IsShown, 199). +-define(wxWindow_IsTopLevel, 200). +-define(wxWindow_Layout, 201). +-define(wxWindow_LineDown, 202). +-define(wxWindow_LineUp, 203). +-define(wxWindow_Lower, 204). +-define(wxWindow_MakeModal, 205). +-define(wxWindow_Move_3, 206). +-define(wxWindow_Move_2, 207). +-define(wxWindow_MoveAfterInTabOrder, 208). +-define(wxWindow_MoveBeforeInTabOrder, 209). +-define(wxWindow_Navigate, 210). +-define(wxWindow_PageDown, 211). +-define(wxWindow_PageUp, 212). +-define(wxWindow_PopEventHandler, 213). +-define(wxWindow_PopupMenu_2, 214). +-define(wxWindow_PopupMenu_3, 215). +-define(wxWindow_Raise, 216). +-define(wxWindow_Refresh, 217). +-define(wxWindow_RefreshRect, 218). +-define(wxWindow_ReleaseMouse, 219). +-define(wxWindow_RemoveChild, 220). +-define(wxWindow_Reparent, 221). +-define(wxWindow_ScreenToClient_2, 222). +-define(wxWindow_ScreenToClient_1, 223). +-define(wxWindow_ScrollLines, 225). +-define(wxWindow_ScrollPages, 227). +-define(wxWindow_ScrollWindow, 228). +-define(wxWindow_SetAcceleratorTable, 229). +-define(wxWindow_SetAutoLayout, 230). +-define(wxWindow_SetBackgroundColour, 231). +-define(wxWindow_SetBackgroundStyle, 232). +-define(wxWindow_SetCaret, 233). +-define(wxWindow_SetClientSize_2, 234). +-define(wxWindow_SetClientSize_1_0, 235). +-define(wxWindow_SetClientSize_1_1, 236). +-define(wxWindow_SetContainingSizer, 237). +-define(wxWindow_SetCursor, 238). +-define(wxWindow_SetMaxSize, 239). +-define(wxWindow_SetMinSize, 240). +-define(wxWindow_SetOwnBackgroundColour, 241). +-define(wxWindow_SetOwnFont, 242). +-define(wxWindow_SetOwnForegroundColour, 243). +-define(wxWindow_SetDropTarget, 244). +-define(wxWindow_SetExtraStyle, 245). +-define(wxWindow_SetFocus, 246). +-define(wxWindow_SetFocusFromKbd, 247). +-define(wxWindow_SetFont, 248). +-define(wxWindow_SetForegroundColour, 249). +-define(wxWindow_SetHelpText, 250). +-define(wxWindow_SetId, 251). +-define(wxWindow_SetLabel, 253). +-define(wxWindow_SetName, 254). +-define(wxWindow_SetPalette, 255). +-define(wxWindow_SetScrollbar, 256). +-define(wxWindow_SetScrollPos, 257). +-define(wxWindow_SetSize_5, 258). +-define(wxWindow_SetSize_2_0, 259). +-define(wxWindow_SetSize_1, 260). +-define(wxWindow_SetSize_2_1, 261). +-define(wxWindow_SetSizeHints_3, 262). +-define(wxWindow_SetSizeHints_2, 263). +-define(wxWindow_SetSizer, 264). +-define(wxWindow_SetSizerAndFit, 265). +-define(wxWindow_SetThemeEnabled, 266). +-define(wxWindow_SetToolTip_1_0, 267). +-define(wxWindow_SetToolTip_1_1, 268). +-define(wxWindow_SetVirtualSize_1, 269). +-define(wxWindow_SetVirtualSize_2, 270). +-define(wxWindow_SetVirtualSizeHints_3, 271). +-define(wxWindow_SetVirtualSizeHints_2, 272). +-define(wxWindow_SetWindowStyle, 273). +-define(wxWindow_SetWindowStyleFlag, 274). +-define(wxWindow_SetWindowVariant, 275). +-define(wxWindow_ShouldInheritColours, 276). +-define(wxWindow_Show, 277). +-define(wxWindow_Thaw, 278). +-define(wxWindow_TransferDataFromWindow, 279). +-define(wxWindow_TransferDataToWindow, 280). +-define(wxWindow_Update, 281). +-define(wxWindow_UpdateWindowUI, 282). +-define(wxWindow_Validate, 283). +-define(wxWindow_WarpPointer, 284). +-define(wxWindow_SetTransparent, 285). +-define(wxWindow_CanSetTransparent, 286). +-define(wxWindow_IsDoubleBuffered, 287). +-define(wxWindow_SetDoubleBuffered, 288). +-define(wxTopLevelWindow_GetIcon, 289). +-define(wxTopLevelWindow_GetIcons, 290). +-define(wxTopLevelWindow_GetTitle, 291). +-define(wxTopLevelWindow_IsActive, 292). +-define(wxTopLevelWindow_Iconize, 293). +-define(wxTopLevelWindow_IsFullScreen, 294). +-define(wxTopLevelWindow_IsIconized, 295). +-define(wxTopLevelWindow_IsMaximized, 296). +-define(wxTopLevelWindow_Maximize, 297). +-define(wxTopLevelWindow_RequestUserAttention, 298). +-define(wxTopLevelWindow_SetIcon, 299). +-define(wxTopLevelWindow_SetIcons, 300). +-define(wxTopLevelWindow_CenterOnScreen, 301). +-define(wxTopLevelWindow_CentreOnScreen, 302). +-define(wxTopLevelWindow_SetShape, 304). +-define(wxTopLevelWindow_SetTitle, 305). +-define(wxTopLevelWindow_ShowFullScreen, 306). +-define(wxFrame_new_4, 308). +-define(wxFrame_new_0, 309). +-define(wxFrame_destruct, 311). +-define(wxFrame_Create, 312). +-define(wxFrame_CreateStatusBar, 313). +-define(wxFrame_CreateToolBar, 314). +-define(wxFrame_GetClientAreaOrigin, 315). +-define(wxFrame_GetMenuBar, 316). +-define(wxFrame_GetStatusBar, 317). +-define(wxFrame_GetStatusBarPane, 318). +-define(wxFrame_GetToolBar, 319). +-define(wxFrame_ProcessCommand, 320). +-define(wxFrame_SendSizeEvent, 321). +-define(wxFrame_SetMenuBar, 322). +-define(wxFrame_SetStatusBar, 323). +-define(wxFrame_SetStatusBarPane, 324). +-define(wxFrame_SetStatusText, 325). +-define(wxFrame_SetStatusWidths, 326). +-define(wxFrame_SetToolBar, 327). +-define(wxMiniFrame_new_0, 328). +-define(wxMiniFrame_new_4, 329). +-define(wxMiniFrame_Create, 330). +-define(wxMiniFrame_destroy, 331). +-define(wxSplashScreen_new_0, 332). +-define(wxSplashScreen_new_6, 333). +-define(wxSplashScreen_destruct, 334). +-define(wxSplashScreen_GetSplashStyle, 335). +-define(wxSplashScreen_GetTimeout, 336). +-define(wxPanel_new_0, 337). +-define(wxPanel_new_6, 338). +-define(wxPanel_new_2, 339). +-define(wxPanel_destruct, 340). +-define(wxPanel_InitDialog, 341). +-define(wxPanel_SetFocusIgnoringChildren, 342). +-define(wxScrolledWindow_new_0, 343). +-define(wxScrolledWindow_new_2, 344). +-define(wxScrolledWindow_destruct, 345). +-define(wxScrolledWindow_CalcScrolledPosition_4, 346). +-define(wxScrolledWindow_CalcScrolledPosition_1, 347). +-define(wxScrolledWindow_CalcUnscrolledPosition_4, 348). +-define(wxScrolledWindow_CalcUnscrolledPosition_1, 349). +-define(wxScrolledWindow_EnableScrolling, 350). +-define(wxScrolledWindow_GetScrollPixelsPerUnit, 351). +-define(wxScrolledWindow_GetViewStart, 352). +-define(wxScrolledWindow_DoPrepareDC, 353). +-define(wxScrolledWindow_PrepareDC, 354). +-define(wxScrolledWindow_Scroll, 355). +-define(wxScrolledWindow_SetScrollbars, 356). +-define(wxScrolledWindow_SetScrollRate, 357). +-define(wxScrolledWindow_SetTargetWindow, 358). +-define(wxSashWindow_new_0, 359). +-define(wxSashWindow_new_2, 360). +-define(wxSashWindow_destruct, 361). +-define(wxSashWindow_GetSashVisible, 362). +-define(wxSashWindow_GetMaximumSizeX, 363). +-define(wxSashWindow_GetMaximumSizeY, 364). +-define(wxSashWindow_GetMinimumSizeX, 365). +-define(wxSashWindow_GetMinimumSizeY, 366). +-define(wxSashWindow_SetMaximumSizeX, 367). +-define(wxSashWindow_SetMaximumSizeY, 368). +-define(wxSashWindow_SetMinimumSizeX, 369). +-define(wxSashWindow_SetMinimumSizeY, 370). +-define(wxSashWindow_SetSashVisible, 371). +-define(wxSashLayoutWindow_new_0, 372). +-define(wxSashLayoutWindow_new_2, 373). +-define(wxSashLayoutWindow_Create, 374). +-define(wxSashLayoutWindow_GetAlignment, 375). +-define(wxSashLayoutWindow_GetOrientation, 376). +-define(wxSashLayoutWindow_SetAlignment, 377). +-define(wxSashLayoutWindow_SetDefaultSize, 378). +-define(wxSashLayoutWindow_SetOrientation, 379). +-define(wxSashLayoutWindow_destroy, 380). +-define(wxGrid_new_0, 381). +-define(wxGrid_new_3, 382). +-define(wxGrid_new_4, 383). +-define(wxGrid_destruct, 384). +-define(wxGrid_AppendCols, 385). +-define(wxGrid_AppendRows, 386). +-define(wxGrid_AutoSize, 387). +-define(wxGrid_AutoSizeColumn, 388). +-define(wxGrid_AutoSizeColumns, 389). +-define(wxGrid_AutoSizeRow, 390). +-define(wxGrid_AutoSizeRows, 391). +-define(wxGrid_BeginBatch, 392). +-define(wxGrid_BlockToDeviceRect, 393). +-define(wxGrid_CanDragColSize, 394). +-define(wxGrid_CanDragRowSize, 395). +-define(wxGrid_CanDragGridSize, 396). +-define(wxGrid_CanEnableCellControl, 397). +-define(wxGrid_CellToRect_2, 398). +-define(wxGrid_CellToRect_1, 399). +-define(wxGrid_ClearGrid, 400). +-define(wxGrid_ClearSelection, 401). +-define(wxGrid_CreateGrid, 402). +-define(wxGrid_DeleteCols, 403). +-define(wxGrid_DeleteRows, 404). +-define(wxGrid_DisableCellEditControl, 405). +-define(wxGrid_DisableDragColSize, 406). +-define(wxGrid_DisableDragGridSize, 407). +-define(wxGrid_DisableDragRowSize, 408). +-define(wxGrid_EnableCellEditControl, 409). +-define(wxGrid_EnableDragColSize, 410). +-define(wxGrid_EnableDragGridSize, 411). +-define(wxGrid_EnableDragRowSize, 412). +-define(wxGrid_EnableEditing, 413). +-define(wxGrid_EnableGridLines, 414). +-define(wxGrid_EndBatch, 415). +-define(wxGrid_Fit, 416). +-define(wxGrid_ForceRefresh, 417). +-define(wxGrid_GetBatchCount, 418). +-define(wxGrid_GetCellAlignment, 419). +-define(wxGrid_GetCellBackgroundColour, 420). +-define(wxGrid_GetCellEditor, 421). +-define(wxGrid_GetCellFont, 422). +-define(wxGrid_GetCellRenderer, 423). +-define(wxGrid_GetCellTextColour, 424). +-define(wxGrid_GetCellValue_2, 425). +-define(wxGrid_GetCellValue_1, 426). +-define(wxGrid_GetColLabelAlignment, 427). +-define(wxGrid_GetColLabelSize, 428). +-define(wxGrid_GetColLabelValue, 429). +-define(wxGrid_GetColMinimalAcceptableWidth, 430). +-define(wxGrid_GetDefaultCellAlignment, 431). +-define(wxGrid_GetDefaultCellBackgroundColour, 432). +-define(wxGrid_GetDefaultCellFont, 433). +-define(wxGrid_GetDefaultCellTextColour, 434). +-define(wxGrid_GetDefaultColLabelSize, 435). +-define(wxGrid_GetDefaultColSize, 436). +-define(wxGrid_GetDefaultEditor, 437). +-define(wxGrid_GetDefaultEditorForCell_2, 438). +-define(wxGrid_GetDefaultEditorForCell_1, 439). +-define(wxGrid_GetDefaultEditorForType, 440). +-define(wxGrid_GetDefaultRenderer, 441). +-define(wxGrid_GetDefaultRendererForCell, 442). +-define(wxGrid_GetDefaultRendererForType, 443). +-define(wxGrid_GetDefaultRowLabelSize, 444). +-define(wxGrid_GetDefaultRowSize, 445). +-define(wxGrid_GetGridCursorCol, 446). +-define(wxGrid_GetGridCursorRow, 447). +-define(wxGrid_GetGridLineColour, 448). +-define(wxGrid_GridLinesEnabled, 449). +-define(wxGrid_GetLabelBackgroundColour, 450). +-define(wxGrid_GetLabelFont, 451). +-define(wxGrid_GetLabelTextColour, 452). +-define(wxGrid_GetNumberCols, 453). +-define(wxGrid_GetNumberRows, 454). +-define(wxGrid_GetOrCreateCellAttr, 455). +-define(wxGrid_GetRowMinimalAcceptableHeight, 456). +-define(wxGrid_GetRowLabelAlignment, 457). +-define(wxGrid_GetRowLabelSize, 458). +-define(wxGrid_GetRowLabelValue, 459). +-define(wxGrid_GetRowSize, 460). +-define(wxGrid_GetScrollLineX, 461). +-define(wxGrid_GetScrollLineY, 462). +-define(wxGrid_GetSelectedCells, 463). +-define(wxGrid_GetSelectedCols, 464). +-define(wxGrid_GetSelectedRows, 465). +-define(wxGrid_GetSelectionBackground, 466). +-define(wxGrid_GetSelectionBlockTopLeft, 467). +-define(wxGrid_GetSelectionBlockBottomRight, 468). +-define(wxGrid_GetSelectionForeground, 469). +-define(wxGrid_GetViewWidth, 470). +-define(wxGrid_GetGridWindow, 471). +-define(wxGrid_GetGridRowLabelWindow, 472). +-define(wxGrid_GetGridColLabelWindow, 473). +-define(wxGrid_GetGridCornerLabelWindow, 474). +-define(wxGrid_HideCellEditControl, 475). +-define(wxGrid_InsertCols, 476). +-define(wxGrid_InsertRows, 477). +-define(wxGrid_IsCellEditControlEnabled, 478). +-define(wxGrid_IsCurrentCellReadOnly, 479). +-define(wxGrid_IsEditable, 480). +-define(wxGrid_IsInSelection_2, 481). +-define(wxGrid_IsInSelection_1, 482). +-define(wxGrid_IsReadOnly, 483). +-define(wxGrid_IsSelection, 484). +-define(wxGrid_IsVisible_3, 485). +-define(wxGrid_IsVisible_2, 486). +-define(wxGrid_MakeCellVisible_2, 487). +-define(wxGrid_MakeCellVisible_1, 488). +-define(wxGrid_MoveCursorDown, 489). +-define(wxGrid_MoveCursorLeft, 490). +-define(wxGrid_MoveCursorRight, 491). +-define(wxGrid_MoveCursorUp, 492). +-define(wxGrid_MoveCursorDownBlock, 493). +-define(wxGrid_MoveCursorLeftBlock, 494). +-define(wxGrid_MoveCursorRightBlock, 495). +-define(wxGrid_MoveCursorUpBlock, 496). +-define(wxGrid_MovePageDown, 497). +-define(wxGrid_MovePageUp, 498). +-define(wxGrid_RegisterDataType, 499). +-define(wxGrid_SaveEditControlValue, 500). +-define(wxGrid_SelectAll, 501). +-define(wxGrid_SelectBlock_5, 502). +-define(wxGrid_SelectBlock_3, 503). +-define(wxGrid_SelectCol, 504). +-define(wxGrid_SelectRow, 505). +-define(wxGrid_SetCellAlignment_4, 506). +-define(wxGrid_SetCellAlignment_3, 507). +-define(wxGrid_SetCellAlignment_1, 508). +-define(wxGrid_SetCellBackgroundColour_3_0, 509). +-define(wxGrid_SetCellBackgroundColour_1, 510). +-define(wxGrid_SetCellBackgroundColour_3_1, 511). +-define(wxGrid_SetCellEditor, 512). +-define(wxGrid_SetCellFont, 513). +-define(wxGrid_SetCellRenderer, 514). +-define(wxGrid_SetCellTextColour_3_0, 515). +-define(wxGrid_SetCellTextColour_3_1, 516). +-define(wxGrid_SetCellTextColour_1, 517). +-define(wxGrid_SetCellValue_3_0, 518). +-define(wxGrid_SetCellValue_2, 519). +-define(wxGrid_SetCellValue_3_1, 520). +-define(wxGrid_SetColAttr, 521). +-define(wxGrid_SetColFormatBool, 522). +-define(wxGrid_SetColFormatNumber, 523). +-define(wxGrid_SetColFormatFloat, 524). +-define(wxGrid_SetColFormatCustom, 525). +-define(wxGrid_SetColLabelAlignment, 526). +-define(wxGrid_SetColLabelSize, 527). +-define(wxGrid_SetColLabelValue, 528). +-define(wxGrid_SetColMinimalWidth, 529). +-define(wxGrid_SetColMinimalAcceptableWidth, 530). +-define(wxGrid_SetColSize, 531). +-define(wxGrid_SetDefaultCellAlignment, 532). +-define(wxGrid_SetDefaultCellBackgroundColour, 533). +-define(wxGrid_SetDefaultCellFont, 534). +-define(wxGrid_SetDefaultCellTextColour, 535). +-define(wxGrid_SetDefaultEditor, 536). +-define(wxGrid_SetDefaultRenderer, 537). +-define(wxGrid_SetDefaultColSize, 538). +-define(wxGrid_SetDefaultRowSize, 539). +-define(wxGrid_SetGridCursor, 540). +-define(wxGrid_SetGridLineColour, 541). +-define(wxGrid_SetLabelBackgroundColour, 542). +-define(wxGrid_SetLabelFont, 543). +-define(wxGrid_SetLabelTextColour, 544). +-define(wxGrid_SetMargins, 545). +-define(wxGrid_SetReadOnly, 546). +-define(wxGrid_SetRowAttr, 547). +-define(wxGrid_SetRowLabelAlignment, 548). +-define(wxGrid_SetRowLabelSize, 549). +-define(wxGrid_SetRowLabelValue, 550). +-define(wxGrid_SetRowMinimalHeight, 551). +-define(wxGrid_SetRowMinimalAcceptableHeight, 552). +-define(wxGrid_SetRowSize, 553). +-define(wxGrid_SetScrollLineX, 554). +-define(wxGrid_SetScrollLineY, 555). +-define(wxGrid_SetSelectionBackground, 556). +-define(wxGrid_SetSelectionForeground, 557). +-define(wxGrid_SetSelectionMode, 558). +-define(wxGrid_ShowCellEditControl, 559). +-define(wxGrid_XToCol, 560). +-define(wxGrid_XToEdgeOfCol, 561). +-define(wxGrid_YToEdgeOfRow, 562). +-define(wxGrid_YToRow, 563). +-define(wxGridCellRenderer_Draw, 564). +-define(wxGridCellRenderer_GetBestSize, 565). +-define(wxGridCellEditor_Create, 566). +-define(wxGridCellEditor_IsCreated, 567). +-define(wxGridCellEditor_SetSize, 568). +-define(wxGridCellEditor_Show, 569). +-define(wxGridCellEditor_PaintBackground, 570). +-define(wxGridCellEditor_BeginEdit, 571). +-define(wxGridCellEditor_EndEdit, 572). +-define(wxGridCellEditor_Reset, 573). +-define(wxGridCellEditor_StartingKey, 574). +-define(wxGridCellEditor_StartingClick, 575). +-define(wxGridCellEditor_HandleReturn, 576). +-define(wxGridCellBoolRenderer_new, 577). +-define(wxGridCellBoolRenderer_destroy, 578). +-define(wxGridCellBoolEditor_new, 579). +-define(wxGridCellBoolEditor_IsTrueValue, 580). +-define(wxGridCellBoolEditor_UseStringValues, 581). +-define(wxGridCellBoolEditor_destroy, 582). +-define(wxGridCellFloatRenderer_new, 583). +-define(wxGridCellFloatRenderer_GetPrecision, 584). +-define(wxGridCellFloatRenderer_GetWidth, 585). +-define(wxGridCellFloatRenderer_SetParameters, 586). +-define(wxGridCellFloatRenderer_SetPrecision, 587). +-define(wxGridCellFloatRenderer_SetWidth, 588). +-define(wxGridCellFloatRenderer_destroy, 589). +-define(wxGridCellFloatEditor_new, 590). +-define(wxGridCellFloatEditor_SetParameters, 591). +-define(wxGridCellFloatEditor_destroy, 592). +-define(wxGridCellStringRenderer_new, 593). +-define(wxGridCellStringRenderer_destroy, 594). +-define(wxGridCellTextEditor_new, 595). +-define(wxGridCellTextEditor_SetParameters, 596). +-define(wxGridCellTextEditor_destroy, 597). +-define(wxGridCellChoiceEditor_new, 599). +-define(wxGridCellChoiceEditor_SetParameters, 600). +-define(wxGridCellChoiceEditor_destroy, 601). +-define(wxGridCellNumberRenderer_new, 602). +-define(wxGridCellNumberRenderer_destroy, 603). +-define(wxGridCellNumberEditor_new, 604). +-define(wxGridCellNumberEditor_GetValue, 605). +-define(wxGridCellNumberEditor_SetParameters, 606). +-define(wxGridCellNumberEditor_destroy, 607). +-define(wxGridCellAttr_SetTextColour, 608). +-define(wxGridCellAttr_SetBackgroundColour, 609). +-define(wxGridCellAttr_SetFont, 610). +-define(wxGridCellAttr_SetAlignment, 611). +-define(wxGridCellAttr_SetReadOnly, 612). +-define(wxGridCellAttr_SetRenderer, 613). +-define(wxGridCellAttr_SetEditor, 614). +-define(wxGridCellAttr_HasTextColour, 615). +-define(wxGridCellAttr_HasBackgroundColour, 616). +-define(wxGridCellAttr_HasFont, 617). +-define(wxGridCellAttr_HasAlignment, 618). +-define(wxGridCellAttr_HasRenderer, 619). +-define(wxGridCellAttr_HasEditor, 620). +-define(wxGridCellAttr_GetTextColour, 621). +-define(wxGridCellAttr_GetBackgroundColour, 622). +-define(wxGridCellAttr_GetFont, 623). +-define(wxGridCellAttr_GetAlignment, 624). +-define(wxGridCellAttr_GetRenderer, 625). +-define(wxGridCellAttr_GetEditor, 626). +-define(wxGridCellAttr_IsReadOnly, 627). +-define(wxGridCellAttr_SetDefAttr, 628). +-define(wxDC_Blit, 629). +-define(wxDC_CalcBoundingBox, 630). +-define(wxDC_Clear, 631). +-define(wxDC_ComputeScaleAndOrigin, 632). +-define(wxDC_CrossHair, 633). +-define(wxDC_DestroyClippingRegion, 634). +-define(wxDC_DeviceToLogicalX, 635). +-define(wxDC_DeviceToLogicalXRel, 636). +-define(wxDC_DeviceToLogicalY, 637). +-define(wxDC_DeviceToLogicalYRel, 638). +-define(wxDC_DrawArc, 639). +-define(wxDC_DrawBitmap, 640). +-define(wxDC_DrawCheckMark, 641). +-define(wxDC_DrawCircle, 642). +-define(wxDC_DrawEllipse_2, 644). +-define(wxDC_DrawEllipse_1, 645). +-define(wxDC_DrawEllipticArc, 646). +-define(wxDC_DrawIcon, 647). +-define(wxDC_DrawLabel, 648). +-define(wxDC_DrawLine, 649). +-define(wxDC_DrawLines, 650). +-define(wxDC_DrawPolygon, 652). +-define(wxDC_DrawPoint, 654). +-define(wxDC_DrawRectangle_2, 656). +-define(wxDC_DrawRectangle_1, 657). +-define(wxDC_DrawRotatedText, 658). +-define(wxDC_DrawRoundedRectangle_3, 660). +-define(wxDC_DrawRoundedRectangle_2, 661). +-define(wxDC_DrawText, 662). +-define(wxDC_EndDoc, 663). +-define(wxDC_EndPage, 664). +-define(wxDC_FloodFill, 665). +-define(wxDC_GetBackground, 666). +-define(wxDC_GetBackgroundMode, 667). +-define(wxDC_GetBrush, 668). +-define(wxDC_GetCharHeight, 669). +-define(wxDC_GetCharWidth, 670). +-define(wxDC_GetClippingBox, 671). +-define(wxDC_GetFont, 673). +-define(wxDC_GetLayoutDirection, 674). +-define(wxDC_GetLogicalFunction, 675). +-define(wxDC_GetMapMode, 676). +-define(wxDC_GetMultiLineTextExtent_4, 677). +-define(wxDC_GetMultiLineTextExtent_1, 678). +-define(wxDC_GetPartialTextExtents, 679). +-define(wxDC_GetPen, 680). +-define(wxDC_GetPixel, 681). +-define(wxDC_GetPPI, 682). +-define(wxDC_GetSize, 684). +-define(wxDC_GetSizeMM, 686). +-define(wxDC_GetTextBackground, 687). +-define(wxDC_GetTextExtent_4, 688). +-define(wxDC_GetTextExtent_1, 689). +-define(wxDC_GetTextForeground, 691). +-define(wxDC_GetUserScale, 692). +-define(wxDC_GradientFillConcentric_3, 693). +-define(wxDC_GradientFillConcentric_4, 694). +-define(wxDC_GradientFillLinear, 695). +-define(wxDC_LogicalToDeviceX, 696). +-define(wxDC_LogicalToDeviceXRel, 697). +-define(wxDC_LogicalToDeviceY, 698). +-define(wxDC_LogicalToDeviceYRel, 699). +-define(wxDC_MaxX, 700). +-define(wxDC_MaxY, 701). +-define(wxDC_MinX, 702). +-define(wxDC_MinY, 703). +-define(wxDC_IsOk, 704). +-define(wxDC_ResetBoundingBox, 705). +-define(wxDC_SetAxisOrientation, 706). +-define(wxDC_SetBackground, 707). +-define(wxDC_SetBackgroundMode, 708). +-define(wxDC_SetBrush, 709). +-define(wxDC_SetClippingRegion_2, 711). +-define(wxDC_SetClippingRegion_1_1, 712). +-define(wxDC_SetClippingRegion_1_0, 713). +-define(wxDC_SetDeviceOrigin, 714). +-define(wxDC_SetFont, 715). +-define(wxDC_SetLayoutDirection, 716). +-define(wxDC_SetLogicalFunction, 717). +-define(wxDC_SetMapMode, 718). +-define(wxDC_SetPalette, 719). +-define(wxDC_SetPen, 720). +-define(wxDC_SetTextBackground, 721). +-define(wxDC_SetTextForeground, 722). +-define(wxDC_SetUserScale, 723). +-define(wxDC_StartDoc, 724). +-define(wxDC_StartPage, 725). +-define(wxMirrorDC_new, 726). +-define(wxMirrorDC_destroy, 727). +-define(wxScreenDC_new, 728). +-define(wxScreenDC_destruct, 729). +-define(wxPostScriptDC_new_0, 730). +-define(wxPostScriptDC_new_1, 731). +-define(wxPostScriptDC_destruct, 732). +-define(wxPostScriptDC_SetResolution, 733). +-define(wxPostScriptDC_GetResolution, 734). +-define(wxWindowDC_new_0, 735). +-define(wxWindowDC_new_1, 736). +-define(wxWindowDC_destruct, 737). +-define(wxClientDC_new_0, 738). +-define(wxClientDC_new_1, 739). +-define(wxClientDC_destroy, 740). +-define(wxPaintDC_new_0, 741). +-define(wxPaintDC_new_1, 742). +-define(wxPaintDC_destroy, 743). +-define(wxMemoryDC_new_1_0, 745). +-define(wxMemoryDC_new_1_1, 746). +-define(wxMemoryDC_new_0, 747). +-define(wxMemoryDC_destruct, 749). +-define(wxMemoryDC_SelectObject, 750). +-define(wxMemoryDC_SelectObjectAsSource, 751). +-define(wxBufferedDC_new_0, 752). +-define(wxBufferedDC_new_2, 753). +-define(wxBufferedDC_new_3, 754). +-define(wxBufferedDC_destruct, 755). +-define(wxBufferedDC_Init_2, 756). +-define(wxBufferedDC_Init_3, 757). +-define(wxBufferedPaintDC_new_3, 758). +-define(wxBufferedPaintDC_new_2, 759). +-define(wxBufferedPaintDC_destruct, 760). +-define(wxGraphicsObject_destruct, 761). +-define(wxGraphicsObject_GetRenderer, 762). +-define(wxGraphicsObject_IsNull, 763). +-define(wxGraphicsContext_destruct, 764). +-define(wxGraphicsContext_Create_1_1, 765). +-define(wxGraphicsContext_Create_1_0, 766). +-define(wxGraphicsContext_Create_0, 767). +-define(wxGraphicsContext_CreatePen, 768). +-define(wxGraphicsContext_CreateBrush, 769). +-define(wxGraphicsContext_CreateRadialGradientBrush, 770). +-define(wxGraphicsContext_CreateLinearGradientBrush, 771). +-define(wxGraphicsContext_CreateFont, 772). +-define(wxGraphicsContext_CreateMatrix, 773). +-define(wxGraphicsContext_CreatePath, 774). +-define(wxGraphicsContext_Clip_1, 775). +-define(wxGraphicsContext_Clip_4, 776). +-define(wxGraphicsContext_ResetClip, 777). +-define(wxGraphicsContext_DrawBitmap, 778). +-define(wxGraphicsContext_DrawEllipse, 779). +-define(wxGraphicsContext_DrawIcon, 780). +-define(wxGraphicsContext_DrawLines, 781). +-define(wxGraphicsContext_DrawPath, 782). +-define(wxGraphicsContext_DrawRectangle, 783). +-define(wxGraphicsContext_DrawRoundedRectangle, 784). +-define(wxGraphicsContext_DrawText_3, 785). +-define(wxGraphicsContext_DrawText_4_0, 786). +-define(wxGraphicsContext_DrawText_4_1, 787). +-define(wxGraphicsContext_DrawText_5, 788). +-define(wxGraphicsContext_FillPath, 789). +-define(wxGraphicsContext_StrokePath, 790). +-define(wxGraphicsContext_GetPartialTextExtents, 791). +-define(wxGraphicsContext_GetTextExtent, 792). +-define(wxGraphicsContext_Rotate, 793). +-define(wxGraphicsContext_Scale, 794). +-define(wxGraphicsContext_Translate, 795). +-define(wxGraphicsContext_GetTransform, 796). +-define(wxGraphicsContext_SetTransform, 797). +-define(wxGraphicsContext_ConcatTransform, 798). +-define(wxGraphicsContext_SetBrush_1_1, 799). +-define(wxGraphicsContext_SetBrush_1_0, 800). +-define(wxGraphicsContext_SetFont_1, 801). +-define(wxGraphicsContext_SetFont_2, 802). +-define(wxGraphicsContext_SetPen_1_0, 803). +-define(wxGraphicsContext_SetPen_1_1, 804). +-define(wxGraphicsContext_StrokeLine, 805). +-define(wxGraphicsContext_StrokeLines, 806). +-define(wxGraphicsMatrix_Concat, 808). +-define(wxGraphicsMatrix_Get, 810). +-define(wxGraphicsMatrix_Invert, 811). +-define(wxGraphicsMatrix_IsEqual, 812). +-define(wxGraphicsMatrix_IsIdentity, 814). +-define(wxGraphicsMatrix_Rotate, 815). +-define(wxGraphicsMatrix_Scale, 816). +-define(wxGraphicsMatrix_Translate, 817). +-define(wxGraphicsMatrix_Set, 818). +-define(wxGraphicsMatrix_TransformPoint, 819). +-define(wxGraphicsMatrix_TransformDistance, 820). +-define(wxGraphicsPath_MoveToPoint_2, 821). +-define(wxGraphicsPath_MoveToPoint_1, 822). +-define(wxGraphicsPath_AddArc_6, 823). +-define(wxGraphicsPath_AddArc_5, 824). +-define(wxGraphicsPath_AddArcToPoint, 825). +-define(wxGraphicsPath_AddCircle, 826). +-define(wxGraphicsPath_AddCurveToPoint_6, 827). +-define(wxGraphicsPath_AddCurveToPoint_3, 828). +-define(wxGraphicsPath_AddEllipse, 829). +-define(wxGraphicsPath_AddLineToPoint_2, 830). +-define(wxGraphicsPath_AddLineToPoint_1, 831). +-define(wxGraphicsPath_AddPath, 832). +-define(wxGraphicsPath_AddQuadCurveToPoint, 833). +-define(wxGraphicsPath_AddRectangle, 834). +-define(wxGraphicsPath_AddRoundedRectangle, 835). +-define(wxGraphicsPath_CloseSubpath, 836). +-define(wxGraphicsPath_Contains_3, 837). +-define(wxGraphicsPath_Contains_2, 838). +-define(wxGraphicsPath_GetBox, 840). +-define(wxGraphicsPath_GetCurrentPoint, 842). +-define(wxGraphicsPath_Transform, 843). +-define(wxGraphicsRenderer_GetDefaultRenderer, 844). +-define(wxGraphicsRenderer_CreateContext_1_1, 845). +-define(wxGraphicsRenderer_CreateContext_1_0, 846). +-define(wxGraphicsRenderer_CreatePen, 847). +-define(wxGraphicsRenderer_CreateBrush, 848). +-define(wxGraphicsRenderer_CreateLinearGradientBrush, 849). +-define(wxGraphicsRenderer_CreateRadialGradientBrush, 850). +-define(wxGraphicsRenderer_CreateFont, 851). +-define(wxGraphicsRenderer_CreateMatrix, 852). +-define(wxGraphicsRenderer_CreatePath, 853). +-define(wxMenuBar_new_1, 855). +-define(wxMenuBar_new_0, 857). +-define(wxMenuBar_destruct, 859). +-define(wxMenuBar_Append, 860). +-define(wxMenuBar_Check, 861). +-define(wxMenuBar_Enable_2, 862). +-define(wxMenuBar_Enable_1, 863). +-define(wxMenuBar_EnableTop, 864). +-define(wxMenuBar_FindMenu, 865). +-define(wxMenuBar_FindMenuItem, 866). +-define(wxMenuBar_FindItem, 867). +-define(wxMenuBar_GetHelpString, 868). +-define(wxMenuBar_GetLabel_1, 869). +-define(wxMenuBar_GetLabel_0, 870). +-define(wxMenuBar_GetLabelTop, 871). +-define(wxMenuBar_GetMenu, 872). +-define(wxMenuBar_GetMenuCount, 873). +-define(wxMenuBar_Insert, 874). +-define(wxMenuBar_IsChecked, 875). +-define(wxMenuBar_IsEnabled_1, 876). +-define(wxMenuBar_IsEnabled_0, 877). +-define(wxMenuBar_Remove, 878). +-define(wxMenuBar_Replace, 879). +-define(wxMenuBar_SetHelpString, 880). +-define(wxMenuBar_SetLabel_2, 881). +-define(wxMenuBar_SetLabel_1, 882). +-define(wxMenuBar_SetLabelTop, 883). +-define(wxControl_GetLabel, 884). +-define(wxControl_SetLabel, 885). +-define(wxControlWithItems_Append_1, 886). +-define(wxControlWithItems_Append_2, 887). +-define(wxControlWithItems_appendStrings_1, 888). +-define(wxControlWithItems_Clear, 889). +-define(wxControlWithItems_Delete, 890). +-define(wxControlWithItems_FindString, 891). +-define(wxControlWithItems_getClientData, 892). +-define(wxControlWithItems_setClientData, 893). +-define(wxControlWithItems_GetCount, 894). +-define(wxControlWithItems_GetSelection, 895). +-define(wxControlWithItems_GetString, 896). +-define(wxControlWithItems_GetStringSelection, 897). +-define(wxControlWithItems_Insert_2, 898). +-define(wxControlWithItems_Insert_3, 899). +-define(wxControlWithItems_IsEmpty, 900). +-define(wxControlWithItems_Select, 901). +-define(wxControlWithItems_SetSelection, 902). +-define(wxControlWithItems_SetString, 903). +-define(wxControlWithItems_SetStringSelection, 904). +-define(wxMenu_new_2, 907). +-define(wxMenu_new_1, 908). +-define(wxMenu_destruct, 910). +-define(wxMenu_Append_3, 911). +-define(wxMenu_Append_1, 912). +-define(wxMenu_Append_4_0, 913). +-define(wxMenu_Append_4_1, 914). +-define(wxMenu_AppendCheckItem, 915). +-define(wxMenu_AppendRadioItem, 916). +-define(wxMenu_AppendSeparator, 917). +-define(wxMenu_Break, 918). +-define(wxMenu_Check, 919). +-define(wxMenu_Delete_1_0, 920). +-define(wxMenu_Delete_1_1, 921). +-define(wxMenu_Destroy_1_0, 922). +-define(wxMenu_Destroy_1_1, 923). +-define(wxMenu_Enable, 924). +-define(wxMenu_FindItem_1, 925). +-define(wxMenu_FindItem_2, 926). +-define(wxMenu_FindItemByPosition, 927). +-define(wxMenu_GetHelpString, 928). +-define(wxMenu_GetLabel, 929). +-define(wxMenu_GetMenuItemCount, 930). +-define(wxMenu_GetMenuItems, 931). +-define(wxMenu_GetTitle, 933). +-define(wxMenu_Insert_2, 934). +-define(wxMenu_Insert_3, 935). +-define(wxMenu_Insert_5_1, 936). +-define(wxMenu_Insert_5_0, 937). +-define(wxMenu_InsertCheckItem, 938). +-define(wxMenu_InsertRadioItem, 939). +-define(wxMenu_InsertSeparator, 940). +-define(wxMenu_IsChecked, 941). +-define(wxMenu_IsEnabled, 942). +-define(wxMenu_Prepend_1, 943). +-define(wxMenu_Prepend_2, 944). +-define(wxMenu_Prepend_4_1, 945). +-define(wxMenu_Prepend_4_0, 946). +-define(wxMenu_PrependCheckItem, 947). +-define(wxMenu_PrependRadioItem, 948). +-define(wxMenu_PrependSeparator, 949). +-define(wxMenu_Remove_1_0, 950). +-define(wxMenu_Remove_1_1, 951). +-define(wxMenu_SetHelpString, 952). +-define(wxMenu_SetLabel, 953). +-define(wxMenu_SetTitle, 954). +-define(wxMenuItem_new, 955). +-define(wxMenuItem_destruct, 957). +-define(wxMenuItem_Check, 958). +-define(wxMenuItem_Enable, 959). +-define(wxMenuItem_GetBitmap, 960). +-define(wxMenuItem_GetHelp, 961). +-define(wxMenuItem_GetId, 962). +-define(wxMenuItem_GetKind, 963). +-define(wxMenuItem_GetLabel, 964). +-define(wxMenuItem_GetLabelFromText, 965). +-define(wxMenuItem_GetMenu, 966). +-define(wxMenuItem_GetText, 967). +-define(wxMenuItem_GetSubMenu, 968). +-define(wxMenuItem_IsCheckable, 969). +-define(wxMenuItem_IsChecked, 970). +-define(wxMenuItem_IsEnabled, 971). +-define(wxMenuItem_IsSeparator, 972). +-define(wxMenuItem_IsSubMenu, 973). +-define(wxMenuItem_SetBitmap, 974). +-define(wxMenuItem_SetHelp, 975). +-define(wxMenuItem_SetMenu, 976). +-define(wxMenuItem_SetSubMenu, 977). +-define(wxMenuItem_SetText, 978). +-define(wxToolBar_AddControl, 979). +-define(wxToolBar_AddSeparator, 980). +-define(wxToolBar_AddTool_5, 981). +-define(wxToolBar_AddTool_4_0, 982). +-define(wxToolBar_AddTool_1, 983). +-define(wxToolBar_AddTool_4_1, 984). +-define(wxToolBar_AddTool_3, 985). +-define(wxToolBar_AddTool_6, 986). +-define(wxToolBar_AddCheckTool, 987). +-define(wxToolBar_AddRadioTool, 988). +-define(wxToolBar_AddStretchableSpace, 989). +-define(wxToolBar_InsertStretchableSpace, 990). +-define(wxToolBar_DeleteTool, 991). +-define(wxToolBar_DeleteToolByPos, 992). +-define(wxToolBar_EnableTool, 993). +-define(wxToolBar_FindById, 994). +-define(wxToolBar_FindControl, 995). +-define(wxToolBar_FindToolForPosition, 996). +-define(wxToolBar_GetToolSize, 997). +-define(wxToolBar_GetToolBitmapSize, 998). +-define(wxToolBar_GetMargins, 999). +-define(wxToolBar_GetToolEnabled, 1000). +-define(wxToolBar_GetToolLongHelp, 1001). +-define(wxToolBar_GetToolPacking, 1002). +-define(wxToolBar_GetToolPos, 1003). +-define(wxToolBar_GetToolSeparation, 1004). +-define(wxToolBar_GetToolShortHelp, 1005). +-define(wxToolBar_GetToolState, 1006). +-define(wxToolBar_InsertControl, 1007). +-define(wxToolBar_InsertSeparator, 1008). +-define(wxToolBar_InsertTool_5, 1009). +-define(wxToolBar_InsertTool_2, 1010). +-define(wxToolBar_InsertTool_4, 1011). +-define(wxToolBar_Realize, 1012). +-define(wxToolBar_RemoveTool, 1013). +-define(wxToolBar_SetMargins, 1014). +-define(wxToolBar_SetToolBitmapSize, 1015). +-define(wxToolBar_SetToolLongHelp, 1016). +-define(wxToolBar_SetToolPacking, 1017). +-define(wxToolBar_SetToolShortHelp, 1018). +-define(wxToolBar_SetToolSeparation, 1019). +-define(wxToolBar_ToggleTool, 1020). +-define(wxStatusBar_new_0, 1022). +-define(wxStatusBar_new_2, 1023). +-define(wxStatusBar_destruct, 1025). +-define(wxStatusBar_Create, 1026). +-define(wxStatusBar_GetFieldRect, 1027). +-define(wxStatusBar_GetFieldsCount, 1028). +-define(wxStatusBar_GetStatusText, 1029). +-define(wxStatusBar_PopStatusText, 1030). +-define(wxStatusBar_PushStatusText, 1031). +-define(wxStatusBar_SetFieldsCount, 1032). +-define(wxStatusBar_SetMinHeight, 1033). +-define(wxStatusBar_SetStatusText, 1034). +-define(wxStatusBar_SetStatusWidths, 1035). +-define(wxStatusBar_SetStatusStyles, 1036). +-define(wxBitmap_new_0, 1037). +-define(wxBitmap_new_3, 1038). +-define(wxBitmap_new_4, 1039). +-define(wxBitmap_new_2_0, 1040). +-define(wxBitmap_new_2_1, 1041). +-define(wxBitmap_destruct, 1042). +-define(wxBitmap_ConvertToImage, 1043). +-define(wxBitmap_CopyFromIcon, 1044). +-define(wxBitmap_Create, 1045). +-define(wxBitmap_GetDepth, 1046). +-define(wxBitmap_GetHeight, 1047). +-define(wxBitmap_GetPalette, 1048). +-define(wxBitmap_GetMask, 1049). +-define(wxBitmap_GetWidth, 1050). +-define(wxBitmap_GetSubBitmap, 1051). +-define(wxBitmap_LoadFile, 1052). +-define(wxBitmap_Ok, 1053). +-define(wxBitmap_SaveFile, 1054). +-define(wxBitmap_SetDepth, 1055). +-define(wxBitmap_SetHeight, 1056). +-define(wxBitmap_SetMask, 1057). +-define(wxBitmap_SetPalette, 1058). +-define(wxBitmap_SetWidth, 1059). +-define(wxIcon_new_0, 1060). +-define(wxIcon_new_2, 1061). +-define(wxIcon_new_1, 1062). +-define(wxIcon_CopyFromBitmap, 1063). +-define(wxIcon_destroy, 1064). +-define(wxIconBundle_new_0, 1065). +-define(wxIconBundle_new_2, 1066). +-define(wxIconBundle_new_1_0, 1067). +-define(wxIconBundle_new_1_1, 1068). +-define(wxIconBundle_destruct, 1069). +-define(wxIconBundle_AddIcon_2, 1070). +-define(wxIconBundle_AddIcon_1, 1071). +-define(wxIconBundle_GetIcon_1_1, 1072). +-define(wxIconBundle_GetIcon_1_0, 1073). +-define(wxCursor_new_0, 1074). +-define(wxCursor_new_1_0, 1075). +-define(wxCursor_new_1_1, 1076). +-define(wxCursor_new_4, 1077). +-define(wxCursor_destruct, 1078). +-define(wxCursor_Ok, 1079). +-define(wxMask_new_0, 1080). +-define(wxMask_new_2_1, 1081). +-define(wxMask_new_2_0, 1082). +-define(wxMask_new_1, 1083). +-define(wxMask_destruct, 1084). +-define(wxMask_Create_2_1, 1085). +-define(wxMask_Create_2_0, 1086). +-define(wxMask_Create_1, 1087). +-define(wxImage_new_0, 1088). +-define(wxImage_new_3_0, 1089). +-define(wxImage_new_4, 1090). +-define(wxImage_new_5, 1091). +-define(wxImage_new_2, 1092). +-define(wxImage_new_3_1, 1093). +-define(wxImage_Blur, 1094). +-define(wxImage_BlurHorizontal, 1095). +-define(wxImage_BlurVertical, 1096). +-define(wxImage_ConvertAlphaToMask, 1097). +-define(wxImage_ConvertToGreyscale, 1098). +-define(wxImage_ConvertToMono, 1099). +-define(wxImage_Copy, 1100). +-define(wxImage_Create_3, 1101). +-define(wxImage_Create_4, 1102). +-define(wxImage_Create_5, 1103). +-define(wxImage_Destroy, 1104). +-define(wxImage_FindFirstUnusedColour, 1105). +-define(wxImage_GetImageExtWildcard, 1106). +-define(wxImage_GetAlpha_2, 1107). +-define(wxImage_GetAlpha_0, 1108). +-define(wxImage_GetBlue, 1109). +-define(wxImage_GetData, 1110). +-define(wxImage_GetGreen, 1111). +-define(wxImage_GetImageCount, 1112). +-define(wxImage_GetHeight, 1113). +-define(wxImage_GetMaskBlue, 1114). +-define(wxImage_GetMaskGreen, 1115). +-define(wxImage_GetMaskRed, 1116). +-define(wxImage_GetOrFindMaskColour, 1117). +-define(wxImage_GetPalette, 1118). +-define(wxImage_GetRed, 1119). +-define(wxImage_GetSubImage, 1120). +-define(wxImage_GetWidth, 1121). +-define(wxImage_HasAlpha, 1122). +-define(wxImage_HasMask, 1123). +-define(wxImage_GetOption, 1124). +-define(wxImage_GetOptionInt, 1125). +-define(wxImage_HasOption, 1126). +-define(wxImage_InitAlpha, 1127). +-define(wxImage_InitStandardHandlers, 1128). +-define(wxImage_IsTransparent, 1129). +-define(wxImage_LoadFile_2, 1130). +-define(wxImage_LoadFile_3, 1131). +-define(wxImage_Ok, 1132). +-define(wxImage_RemoveHandler, 1133). +-define(wxImage_Mirror, 1134). +-define(wxImage_Replace, 1135). +-define(wxImage_Rescale, 1136). +-define(wxImage_Resize, 1137). +-define(wxImage_Rotate, 1138). +-define(wxImage_RotateHue, 1139). +-define(wxImage_Rotate90, 1140). +-define(wxImage_SaveFile_1, 1141). +-define(wxImage_SaveFile_2_0, 1142). +-define(wxImage_SaveFile_2_1, 1143). +-define(wxImage_Scale, 1144). +-define(wxImage_Size, 1145). +-define(wxImage_SetAlpha_3, 1146). +-define(wxImage_SetAlpha_2, 1147). +-define(wxImage_SetData_2, 1148). +-define(wxImage_SetData_4, 1149). +-define(wxImage_SetMask, 1150). +-define(wxImage_SetMaskColour, 1151). +-define(wxImage_SetMaskFromImage, 1152). +-define(wxImage_SetOption_2_1, 1153). +-define(wxImage_SetOption_2_0, 1154). +-define(wxImage_SetPalette, 1155). +-define(wxImage_SetRGB_5, 1156). +-define(wxImage_SetRGB_4, 1157). +-define(wxImage_destroy, 1158). +-define(wxBrush_new_0, 1159). +-define(wxBrush_new_2, 1160). +-define(wxBrush_new_1, 1161). +-define(wxBrush_destruct, 1163). +-define(wxBrush_GetColour, 1164). +-define(wxBrush_GetStipple, 1165). +-define(wxBrush_GetStyle, 1166). +-define(wxBrush_IsHatch, 1167). +-define(wxBrush_IsOk, 1168). +-define(wxBrush_SetColour_1, 1169). +-define(wxBrush_SetColour_3, 1170). +-define(wxBrush_SetStipple, 1171). +-define(wxBrush_SetStyle, 1172). +-define(wxPen_new_0, 1173). +-define(wxPen_new_2, 1174). +-define(wxPen_destruct, 1175). +-define(wxPen_GetCap, 1176). +-define(wxPen_GetColour, 1177). +-define(wxPen_GetJoin, 1178). +-define(wxPen_GetStyle, 1179). +-define(wxPen_GetWidth, 1180). +-define(wxPen_IsOk, 1181). +-define(wxPen_SetCap, 1182). +-define(wxPen_SetColour_1, 1183). +-define(wxPen_SetColour_3, 1184). +-define(wxPen_SetJoin, 1185). +-define(wxPen_SetStyle, 1186). +-define(wxPen_SetWidth, 1187). +-define(wxRegion_new_0, 1188). +-define(wxRegion_new_4, 1189). +-define(wxRegion_new_2, 1190). +-define(wxRegion_new_1_1, 1191). +-define(wxRegion_new_1_0, 1193). +-define(wxRegion_destruct, 1195). +-define(wxRegion_Clear, 1196). +-define(wxRegion_Contains_2, 1197). +-define(wxRegion_Contains_1_0, 1198). +-define(wxRegion_Contains_4, 1199). +-define(wxRegion_Contains_1_1, 1200). +-define(wxRegion_ConvertToBitmap, 1201). +-define(wxRegion_GetBox, 1202). +-define(wxRegion_Intersect_4, 1203). +-define(wxRegion_Intersect_1_1, 1204). +-define(wxRegion_Intersect_1_0, 1205). +-define(wxRegion_IsEmpty, 1206). +-define(wxRegion_Subtract_4, 1207). +-define(wxRegion_Subtract_1_1, 1208). +-define(wxRegion_Subtract_1_0, 1209). +-define(wxRegion_Offset_2, 1210). +-define(wxRegion_Offset_1, 1211). +-define(wxRegion_Union_4, 1212). +-define(wxRegion_Union_1_2, 1213). +-define(wxRegion_Union_1_1, 1214). +-define(wxRegion_Union_1_0, 1215). +-define(wxRegion_Union_3, 1216). +-define(wxRegion_Xor_4, 1217). +-define(wxRegion_Xor_1_1, 1218). +-define(wxRegion_Xor_1_0, 1219). +-define(wxAcceleratorTable_new_0, 1220). +-define(wxAcceleratorTable_new_2, 1221). +-define(wxAcceleratorTable_destruct, 1222). +-define(wxAcceleratorTable_Ok, 1223). +-define(wxAcceleratorEntry_new_1_0, 1224). +-define(wxAcceleratorEntry_new_1_1, 1225). +-define(wxAcceleratorEntry_GetCommand, 1226). +-define(wxAcceleratorEntry_GetFlags, 1227). +-define(wxAcceleratorEntry_GetKeyCode, 1228). +-define(wxAcceleratorEntry_Set, 1229). +-define(wxAcceleratorEntry_destroy, 1230). +-define(wxCaret_new_3, 1235). +-define(wxCaret_new_2, 1236). +-define(wxCaret_destruct, 1238). +-define(wxCaret_Create_3, 1239). +-define(wxCaret_Create_2, 1240). +-define(wxCaret_GetBlinkTime, 1241). +-define(wxCaret_GetPosition, 1243). +-define(wxCaret_GetSize, 1245). +-define(wxCaret_GetWindow, 1246). +-define(wxCaret_Hide, 1247). +-define(wxCaret_IsOk, 1248). +-define(wxCaret_IsVisible, 1249). +-define(wxCaret_Move_2, 1250). +-define(wxCaret_Move_1, 1251). +-define(wxCaret_SetBlinkTime, 1252). +-define(wxCaret_SetSize_2, 1253). +-define(wxCaret_SetSize_1, 1254). +-define(wxCaret_Show, 1255). +-define(wxSizer_Add_2_1, 1256). +-define(wxSizer_Add_2_0, 1257). +-define(wxSizer_Add_3, 1258). +-define(wxSizer_Add_2_3, 1259). +-define(wxSizer_Add_2_2, 1260). +-define(wxSizer_AddSpacer, 1261). +-define(wxSizer_AddStretchSpacer, 1262). +-define(wxSizer_CalcMin, 1263). +-define(wxSizer_Clear, 1264). +-define(wxSizer_Detach_1_2, 1265). +-define(wxSizer_Detach_1_1, 1266). +-define(wxSizer_Detach_1_0, 1267). +-define(wxSizer_Fit, 1268). +-define(wxSizer_FitInside, 1269). +-define(wxSizer_GetChildren, 1270). +-define(wxSizer_GetItem_2_1, 1271). +-define(wxSizer_GetItem_2_0, 1272). +-define(wxSizer_GetItem_1, 1273). +-define(wxSizer_GetSize, 1274). +-define(wxSizer_GetPosition, 1275). +-define(wxSizer_GetMinSize, 1276). +-define(wxSizer_Hide_2_0, 1277). +-define(wxSizer_Hide_2_1, 1278). +-define(wxSizer_Hide_1, 1279). +-define(wxSizer_Insert_3_1, 1280). +-define(wxSizer_Insert_3_0, 1281). +-define(wxSizer_Insert_4, 1282). +-define(wxSizer_Insert_3_3, 1283). +-define(wxSizer_Insert_3_2, 1284). +-define(wxSizer_Insert_2, 1285). +-define(wxSizer_InsertSpacer, 1286). +-define(wxSizer_InsertStretchSpacer, 1287). +-define(wxSizer_IsShown_1_2, 1288). +-define(wxSizer_IsShown_1_1, 1289). +-define(wxSizer_IsShown_1_0, 1290). +-define(wxSizer_Layout, 1291). +-define(wxSizer_Prepend_2_1, 1292). +-define(wxSizer_Prepend_2_0, 1293). +-define(wxSizer_Prepend_3, 1294). +-define(wxSizer_Prepend_2_3, 1295). +-define(wxSizer_Prepend_2_2, 1296). +-define(wxSizer_Prepend_1, 1297). +-define(wxSizer_PrependSpacer, 1298). +-define(wxSizer_PrependStretchSpacer, 1299). +-define(wxSizer_RecalcSizes, 1300). +-define(wxSizer_Remove_1_1, 1301). +-define(wxSizer_Remove_1_0, 1302). +-define(wxSizer_Replace_3_1, 1303). +-define(wxSizer_Replace_3_0, 1304). +-define(wxSizer_Replace_2, 1305). +-define(wxSizer_SetDimension, 1306). +-define(wxSizer_SetMinSize_2, 1307). +-define(wxSizer_SetMinSize_1, 1308). +-define(wxSizer_SetItemMinSize_3_2, 1309). +-define(wxSizer_SetItemMinSize_2_2, 1310). +-define(wxSizer_SetItemMinSize_3_1, 1311). +-define(wxSizer_SetItemMinSize_2_1, 1312). +-define(wxSizer_SetItemMinSize_3_0, 1313). +-define(wxSizer_SetItemMinSize_2_0, 1314). +-define(wxSizer_SetSizeHints, 1315). +-define(wxSizer_SetVirtualSizeHints, 1316). +-define(wxSizer_Show_2_2, 1317). +-define(wxSizer_Show_2_1, 1318). +-define(wxSizer_Show_2_0, 1319). +-define(wxSizer_Show_1, 1320). +-define(wxSizerFlags_new, 1321). +-define(wxSizerFlags_Align, 1322). +-define(wxSizerFlags_Border_2, 1323). +-define(wxSizerFlags_Border_1, 1324). +-define(wxSizerFlags_Center, 1325). +-define(wxSizerFlags_Centre, 1326). +-define(wxSizerFlags_Expand, 1327). +-define(wxSizerFlags_Left, 1328). +-define(wxSizerFlags_Proportion, 1329). +-define(wxSizerFlags_Right, 1330). +-define(wxSizerFlags_destroy, 1331). +-define(wxSizerItem_new_5_1, 1332). +-define(wxSizerItem_new_2_1, 1333). +-define(wxSizerItem_new_5_0, 1334). +-define(wxSizerItem_new_2_0, 1335). +-define(wxSizerItem_new_6, 1336). +-define(wxSizerItem_new_3, 1337). +-define(wxSizerItem_new_0, 1338). +-define(wxSizerItem_destruct, 1339). +-define(wxSizerItem_CalcMin, 1340). +-define(wxSizerItem_DeleteWindows, 1341). +-define(wxSizerItem_DetachSizer, 1342). +-define(wxSizerItem_GetBorder, 1343). +-define(wxSizerItem_GetFlag, 1344). +-define(wxSizerItem_GetMinSize, 1345). +-define(wxSizerItem_GetPosition, 1346). +-define(wxSizerItem_GetProportion, 1347). +-define(wxSizerItem_GetRatio, 1348). +-define(wxSizerItem_GetRect, 1349). +-define(wxSizerItem_GetSize, 1350). +-define(wxSizerItem_GetSizer, 1351). +-define(wxSizerItem_GetSpacer, 1352). +-define(wxSizerItem_GetUserData, 1353). +-define(wxSizerItem_GetWindow, 1354). +-define(wxSizerItem_IsSizer, 1355). +-define(wxSizerItem_IsShown, 1356). +-define(wxSizerItem_IsSpacer, 1357). +-define(wxSizerItem_IsWindow, 1358). +-define(wxSizerItem_SetBorder, 1359). +-define(wxSizerItem_SetDimension, 1360). +-define(wxSizerItem_SetFlag, 1361). +-define(wxSizerItem_SetInitSize, 1362). +-define(wxSizerItem_SetMinSize_1, 1363). +-define(wxSizerItem_SetMinSize_2, 1364). +-define(wxSizerItem_SetProportion, 1365). +-define(wxSizerItem_SetRatio_2, 1366). +-define(wxSizerItem_SetRatio_1_1, 1367). +-define(wxSizerItem_SetRatio_1_0, 1368). +-define(wxSizerItem_SetSizer, 1369). +-define(wxSizerItem_SetSpacer_1, 1370). +-define(wxSizerItem_SetSpacer_2, 1371). +-define(wxSizerItem_SetWindow, 1372). +-define(wxSizerItem_Show, 1373). +-define(wxBoxSizer_new, 1374). +-define(wxBoxSizer_GetOrientation, 1375). +-define(wxBoxSizer_destroy, 1376). +-define(wxStaticBoxSizer_new_2, 1377). +-define(wxStaticBoxSizer_new_3, 1378). +-define(wxStaticBoxSizer_GetStaticBox, 1379). +-define(wxStaticBoxSizer_destroy, 1380). +-define(wxGridSizer_new_4, 1381). +-define(wxGridSizer_new_2, 1382). +-define(wxGridSizer_GetCols, 1383). +-define(wxGridSizer_GetHGap, 1384). +-define(wxGridSizer_GetRows, 1385). +-define(wxGridSizer_GetVGap, 1386). +-define(wxGridSizer_SetCols, 1387). +-define(wxGridSizer_SetHGap, 1388). +-define(wxGridSizer_SetRows, 1389). +-define(wxGridSizer_SetVGap, 1390). +-define(wxGridSizer_destroy, 1391). +-define(wxFlexGridSizer_new_4, 1392). +-define(wxFlexGridSizer_new_2, 1393). +-define(wxFlexGridSizer_AddGrowableCol, 1394). +-define(wxFlexGridSizer_AddGrowableRow, 1395). +-define(wxFlexGridSizer_GetFlexibleDirection, 1396). +-define(wxFlexGridSizer_GetNonFlexibleGrowMode, 1397). +-define(wxFlexGridSizer_RemoveGrowableCol, 1398). +-define(wxFlexGridSizer_RemoveGrowableRow, 1399). +-define(wxFlexGridSizer_SetFlexibleDirection, 1400). +-define(wxFlexGridSizer_SetNonFlexibleGrowMode, 1401). +-define(wxFlexGridSizer_destroy, 1402). +-define(wxGridBagSizer_new, 1403). +-define(wxGridBagSizer_Add_3_2, 1404). +-define(wxGridBagSizer_Add_3_1, 1405). +-define(wxGridBagSizer_Add_4, 1406). +-define(wxGridBagSizer_Add_1_0, 1407). +-define(wxGridBagSizer_Add_2_1, 1408). +-define(wxGridBagSizer_Add_2_0, 1409). +-define(wxGridBagSizer_Add_3_0, 1410). +-define(wxGridBagSizer_Add_1_1, 1411). +-define(wxGridBagSizer_CalcMin, 1412). +-define(wxGridBagSizer_CheckForIntersection_2, 1413). +-define(wxGridBagSizer_CheckForIntersection_3, 1414). +-define(wxGridBagSizer_FindItem_1_1, 1415). +-define(wxGridBagSizer_FindItem_1_0, 1416). +-define(wxGridBagSizer_FindItemAtPoint, 1417). +-define(wxGridBagSizer_FindItemAtPosition, 1418). +-define(wxGridBagSizer_FindItemWithData, 1419). +-define(wxGridBagSizer_GetCellSize, 1420). +-define(wxGridBagSizer_GetEmptyCellSize, 1421). +-define(wxGridBagSizer_GetItemPosition_1_2, 1422). +-define(wxGridBagSizer_GetItemPosition_1_1, 1423). +-define(wxGridBagSizer_GetItemPosition_1_0, 1424). +-define(wxGridBagSizer_GetItemSpan_1_2, 1425). +-define(wxGridBagSizer_GetItemSpan_1_1, 1426). +-define(wxGridBagSizer_GetItemSpan_1_0, 1427). +-define(wxGridBagSizer_SetEmptyCellSize, 1428). +-define(wxGridBagSizer_SetItemPosition_2_2, 1429). +-define(wxGridBagSizer_SetItemPosition_2_1, 1430). +-define(wxGridBagSizer_SetItemPosition_2_0, 1431). +-define(wxGridBagSizer_SetItemSpan_2_2, 1432). +-define(wxGridBagSizer_SetItemSpan_2_1, 1433). +-define(wxGridBagSizer_SetItemSpan_2_0, 1434). +-define(wxGridBagSizer_destroy, 1435). +-define(wxStdDialogButtonSizer_new, 1436). +-define(wxStdDialogButtonSizer_AddButton, 1437). +-define(wxStdDialogButtonSizer_Realize, 1438). +-define(wxStdDialogButtonSizer_SetAffirmativeButton, 1439). +-define(wxStdDialogButtonSizer_SetCancelButton, 1440). +-define(wxStdDialogButtonSizer_SetNegativeButton, 1441). +-define(wxStdDialogButtonSizer_destroy, 1442). +-define(wxFont_new_0, 1443). +-define(wxFont_new_1, 1444). +-define(wxFont_new_5, 1445). +-define(wxFont_destruct, 1447). +-define(wxFont_IsFixedWidth, 1448). +-define(wxFont_GetDefaultEncoding, 1449). +-define(wxFont_GetFaceName, 1450). +-define(wxFont_GetFamily, 1451). +-define(wxFont_GetNativeFontInfoDesc, 1452). +-define(wxFont_GetNativeFontInfoUserDesc, 1453). +-define(wxFont_GetPointSize, 1454). +-define(wxFont_GetStyle, 1455). +-define(wxFont_GetUnderlined, 1456). +-define(wxFont_GetWeight, 1457). +-define(wxFont_Ok, 1458). +-define(wxFont_SetDefaultEncoding, 1459). +-define(wxFont_SetFaceName, 1460). +-define(wxFont_SetFamily, 1461). +-define(wxFont_SetPointSize, 1462). +-define(wxFont_SetStyle, 1463). +-define(wxFont_SetUnderlined, 1464). +-define(wxFont_SetWeight, 1465). +-define(wxToolTip_Enable, 1466). +-define(wxToolTip_SetDelay, 1467). +-define(wxToolTip_new, 1468). +-define(wxToolTip_SetTip, 1469). +-define(wxToolTip_GetTip, 1470). +-define(wxToolTip_GetWindow, 1471). +-define(wxToolTip_destroy, 1472). +-define(wxButton_new_3, 1474). +-define(wxButton_new_0, 1475). +-define(wxButton_destruct, 1476). +-define(wxButton_Create, 1477). +-define(wxButton_GetDefaultSize, 1478). +-define(wxButton_SetDefault, 1479). +-define(wxButton_SetLabel, 1480). +-define(wxBitmapButton_new_4, 1482). +-define(wxBitmapButton_new_0, 1483). +-define(wxBitmapButton_Create, 1484). +-define(wxBitmapButton_GetBitmapDisabled, 1485). +-define(wxBitmapButton_GetBitmapFocus, 1487). +-define(wxBitmapButton_GetBitmapLabel, 1489). +-define(wxBitmapButton_GetBitmapSelected, 1491). +-define(wxBitmapButton_SetBitmapDisabled, 1493). +-define(wxBitmapButton_SetBitmapFocus, 1494). +-define(wxBitmapButton_SetBitmapLabel, 1495). +-define(wxBitmapButton_SetBitmapSelected, 1496). +-define(wxBitmapButton_destroy, 1497). +-define(wxToggleButton_new_0, 1498). +-define(wxToggleButton_new_4, 1499). +-define(wxToggleButton_Create, 1500). +-define(wxToggleButton_GetValue, 1501). +-define(wxToggleButton_SetValue, 1502). +-define(wxToggleButton_destroy, 1503). +-define(wxCalendarCtrl_new_0, 1504). +-define(wxCalendarCtrl_new_3, 1505). +-define(wxCalendarCtrl_Create, 1506). +-define(wxCalendarCtrl_destruct, 1507). +-define(wxCalendarCtrl_SetDate, 1508). +-define(wxCalendarCtrl_GetDate, 1509). +-define(wxCalendarCtrl_EnableYearChange, 1510). +-define(wxCalendarCtrl_EnableMonthChange, 1511). +-define(wxCalendarCtrl_EnableHolidayDisplay, 1512). +-define(wxCalendarCtrl_SetHeaderColours, 1513). +-define(wxCalendarCtrl_GetHeaderColourFg, 1514). +-define(wxCalendarCtrl_GetHeaderColourBg, 1515). +-define(wxCalendarCtrl_SetHighlightColours, 1516). +-define(wxCalendarCtrl_GetHighlightColourFg, 1517). +-define(wxCalendarCtrl_GetHighlightColourBg, 1518). +-define(wxCalendarCtrl_SetHolidayColours, 1519). +-define(wxCalendarCtrl_GetHolidayColourFg, 1520). +-define(wxCalendarCtrl_GetHolidayColourBg, 1521). +-define(wxCalendarCtrl_GetAttr, 1522). +-define(wxCalendarCtrl_SetAttr, 1523). +-define(wxCalendarCtrl_SetHoliday, 1524). +-define(wxCalendarCtrl_ResetAttr, 1525). +-define(wxCalendarCtrl_HitTest, 1526). +-define(wxCalendarDateAttr_new_0, 1527). +-define(wxCalendarDateAttr_new_2_1, 1528). +-define(wxCalendarDateAttr_new_2_0, 1529). +-define(wxCalendarDateAttr_SetTextColour, 1530). +-define(wxCalendarDateAttr_SetBackgroundColour, 1531). +-define(wxCalendarDateAttr_SetBorderColour, 1532). +-define(wxCalendarDateAttr_SetFont, 1533). +-define(wxCalendarDateAttr_SetBorder, 1534). +-define(wxCalendarDateAttr_SetHoliday, 1535). +-define(wxCalendarDateAttr_HasTextColour, 1536). +-define(wxCalendarDateAttr_HasBackgroundColour, 1537). +-define(wxCalendarDateAttr_HasBorderColour, 1538). +-define(wxCalendarDateAttr_HasFont, 1539). +-define(wxCalendarDateAttr_HasBorder, 1540). +-define(wxCalendarDateAttr_IsHoliday, 1541). +-define(wxCalendarDateAttr_GetTextColour, 1542). +-define(wxCalendarDateAttr_GetBackgroundColour, 1543). +-define(wxCalendarDateAttr_GetBorderColour, 1544). +-define(wxCalendarDateAttr_GetFont, 1545). +-define(wxCalendarDateAttr_GetBorder, 1546). +-define(wxCalendarDateAttr_destroy, 1547). +-define(wxCheckBox_new_4, 1549). +-define(wxCheckBox_new_0, 1550). +-define(wxCheckBox_Create, 1551). +-define(wxCheckBox_GetValue, 1552). +-define(wxCheckBox_Get3StateValue, 1553). +-define(wxCheckBox_Is3rdStateAllowedForUser, 1554). +-define(wxCheckBox_Is3State, 1555). +-define(wxCheckBox_IsChecked, 1556). +-define(wxCheckBox_SetValue, 1557). +-define(wxCheckBox_Set3StateValue, 1558). +-define(wxCheckBox_destroy, 1559). +-define(wxCheckListBox_new_0, 1560). +-define(wxCheckListBox_new_3, 1562). +-define(wxCheckListBox_Check, 1563). +-define(wxCheckListBox_IsChecked, 1564). +-define(wxCheckListBox_destroy, 1565). +-define(wxChoice_new_3, 1568). +-define(wxChoice_new_0, 1569). +-define(wxChoice_destruct, 1571). +-define(wxChoice_Create, 1573). +-define(wxChoice_Delete, 1574). +-define(wxChoice_GetColumns, 1575). +-define(wxChoice_SetColumns, 1576). +-define(wxComboBox_new_0, 1577). +-define(wxComboBox_new_3, 1579). +-define(wxComboBox_destruct, 1580). +-define(wxComboBox_Create, 1582). +-define(wxComboBox_CanCopy, 1583). +-define(wxComboBox_CanCut, 1584). +-define(wxComboBox_CanPaste, 1585). +-define(wxComboBox_CanRedo, 1586). +-define(wxComboBox_CanUndo, 1587). +-define(wxComboBox_Copy, 1588). +-define(wxComboBox_Cut, 1589). +-define(wxComboBox_GetInsertionPoint, 1590). +-define(wxComboBox_GetLastPosition, 1591). +-define(wxComboBox_GetValue, 1592). +-define(wxComboBox_Paste, 1593). +-define(wxComboBox_Redo, 1594). +-define(wxComboBox_Replace, 1595). +-define(wxComboBox_Remove, 1596). +-define(wxComboBox_SetInsertionPoint, 1597). +-define(wxComboBox_SetInsertionPointEnd, 1598). +-define(wxComboBox_SetSelection_1, 1599). +-define(wxComboBox_SetSelection_2, 1600). +-define(wxComboBox_SetValue, 1601). +-define(wxComboBox_Undo, 1602). +-define(wxGauge_new_0, 1603). +-define(wxGauge_new_4, 1604). +-define(wxGauge_Create, 1605). +-define(wxGauge_GetRange, 1606). +-define(wxGauge_GetValue, 1607). +-define(wxGauge_IsVertical, 1608). +-define(wxGauge_SetRange, 1609). +-define(wxGauge_SetValue, 1610). +-define(wxGauge_Pulse, 1611). +-define(wxGauge_destroy, 1612). +-define(wxGenericDirCtrl_new_0, 1613). +-define(wxGenericDirCtrl_new_2, 1614). +-define(wxGenericDirCtrl_destruct, 1615). +-define(wxGenericDirCtrl_Create, 1616). +-define(wxGenericDirCtrl_Init, 1617). +-define(wxGenericDirCtrl_CollapseTree, 1618). +-define(wxGenericDirCtrl_ExpandPath, 1619). +-define(wxGenericDirCtrl_GetDefaultPath, 1620). +-define(wxGenericDirCtrl_GetPath, 1621). +-define(wxGenericDirCtrl_GetFilePath, 1622). +-define(wxGenericDirCtrl_GetFilter, 1623). +-define(wxGenericDirCtrl_GetFilterIndex, 1624). +-define(wxGenericDirCtrl_GetRootId, 1625). +-define(wxGenericDirCtrl_GetTreeCtrl, 1626). +-define(wxGenericDirCtrl_ReCreateTree, 1627). +-define(wxGenericDirCtrl_SetDefaultPath, 1628). +-define(wxGenericDirCtrl_SetFilter, 1629). +-define(wxGenericDirCtrl_SetFilterIndex, 1630). +-define(wxGenericDirCtrl_SetPath, 1631). +-define(wxStaticBox_new_4, 1633). +-define(wxStaticBox_new_0, 1634). +-define(wxStaticBox_Create, 1635). +-define(wxStaticBox_destroy, 1636). +-define(wxStaticLine_new_2, 1638). +-define(wxStaticLine_new_0, 1639). +-define(wxStaticLine_Create, 1640). +-define(wxStaticLine_IsVertical, 1641). +-define(wxStaticLine_GetDefaultSize, 1642). +-define(wxStaticLine_destroy, 1643). +-define(wxListBox_new_3, 1646). +-define(wxListBox_new_0, 1647). +-define(wxListBox_destruct, 1649). +-define(wxListBox_Create, 1651). +-define(wxListBox_Deselect, 1652). +-define(wxListBox_GetSelections, 1653). +-define(wxListBox_InsertItems, 1654). +-define(wxListBox_IsSelected, 1655). +-define(wxListBox_Set, 1656). +-define(wxListBox_HitTest, 1657). +-define(wxListBox_SetFirstItem_1_0, 1658). +-define(wxListBox_SetFirstItem_1_1, 1659). +-define(wxListCtrl_new_0, 1660). +-define(wxListCtrl_new_2, 1661). +-define(wxListCtrl_Arrange, 1662). +-define(wxListCtrl_AssignImageList, 1663). +-define(wxListCtrl_ClearAll, 1664). +-define(wxListCtrl_Create, 1665). +-define(wxListCtrl_DeleteAllItems, 1666). +-define(wxListCtrl_DeleteColumn, 1667). +-define(wxListCtrl_DeleteItem, 1668). +-define(wxListCtrl_EditLabel, 1669). +-define(wxListCtrl_EnsureVisible, 1670). +-define(wxListCtrl_FindItem_3_0, 1671). +-define(wxListCtrl_FindItem_3_1, 1672). +-define(wxListCtrl_GetColumn, 1673). +-define(wxListCtrl_GetColumnCount, 1674). +-define(wxListCtrl_GetColumnWidth, 1675). +-define(wxListCtrl_GetCountPerPage, 1676). +-define(wxListCtrl_GetEditControl, 1677). +-define(wxListCtrl_GetImageList, 1678). +-define(wxListCtrl_GetItem, 1679). +-define(wxListCtrl_GetItemBackgroundColour, 1680). +-define(wxListCtrl_GetItemCount, 1681). +-define(wxListCtrl_GetItemData, 1682). +-define(wxListCtrl_GetItemFont, 1683). +-define(wxListCtrl_GetItemPosition, 1684). +-define(wxListCtrl_GetItemRect, 1685). +-define(wxListCtrl_GetItemSpacing, 1686). +-define(wxListCtrl_GetItemState, 1687). +-define(wxListCtrl_GetItemText, 1688). +-define(wxListCtrl_GetItemTextColour, 1689). +-define(wxListCtrl_GetNextItem, 1690). +-define(wxListCtrl_GetSelectedItemCount, 1691). +-define(wxListCtrl_GetTextColour, 1692). +-define(wxListCtrl_GetTopItem, 1693). +-define(wxListCtrl_GetViewRect, 1694). +-define(wxListCtrl_HitTest, 1695). +-define(wxListCtrl_InsertColumn_2, 1696). +-define(wxListCtrl_InsertColumn_3, 1697). +-define(wxListCtrl_InsertItem_1, 1698). +-define(wxListCtrl_InsertItem_2_1, 1699). +-define(wxListCtrl_InsertItem_2_0, 1700). +-define(wxListCtrl_InsertItem_3, 1701). +-define(wxListCtrl_RefreshItem, 1702). +-define(wxListCtrl_RefreshItems, 1703). +-define(wxListCtrl_ScrollList, 1704). +-define(wxListCtrl_SetBackgroundColour, 1705). +-define(wxListCtrl_SetColumn, 1706). +-define(wxListCtrl_SetColumnWidth, 1707). +-define(wxListCtrl_SetImageList, 1708). +-define(wxListCtrl_SetItem_1, 1709). +-define(wxListCtrl_SetItem_4, 1710). +-define(wxListCtrl_SetItemBackgroundColour, 1711). +-define(wxListCtrl_SetItemCount, 1712). +-define(wxListCtrl_SetItemData, 1713). +-define(wxListCtrl_SetItemFont, 1714). +-define(wxListCtrl_SetItemImage, 1715). +-define(wxListCtrl_SetItemColumnImage, 1716). +-define(wxListCtrl_SetItemPosition, 1717). +-define(wxListCtrl_SetItemState, 1718). +-define(wxListCtrl_SetItemText, 1719). +-define(wxListCtrl_SetItemTextColour, 1720). +-define(wxListCtrl_SetSingleStyle, 1721). +-define(wxListCtrl_SetTextColour, 1722). +-define(wxListCtrl_SetWindowStyleFlag, 1723). +-define(wxListCtrl_SortItems, 1724). +-define(wxListCtrl_destroy, 1725). +-define(wxListView_ClearColumnImage, 1726). +-define(wxListView_Focus, 1727). +-define(wxListView_GetFirstSelected, 1728). +-define(wxListView_GetFocusedItem, 1729). +-define(wxListView_GetNextSelected, 1730). +-define(wxListView_IsSelected, 1731). +-define(wxListView_Select, 1732). +-define(wxListView_SetColumnImage, 1733). +-define(wxListItem_new_0, 1734). +-define(wxListItem_new_1, 1735). +-define(wxListItem_destruct, 1736). +-define(wxListItem_Clear, 1737). +-define(wxListItem_GetAlign, 1738). +-define(wxListItem_GetBackgroundColour, 1739). +-define(wxListItem_GetColumn, 1740). +-define(wxListItem_GetFont, 1741). +-define(wxListItem_GetId, 1742). +-define(wxListItem_GetImage, 1743). +-define(wxListItem_GetMask, 1744). +-define(wxListItem_GetState, 1745). +-define(wxListItem_GetText, 1746). +-define(wxListItem_GetTextColour, 1747). +-define(wxListItem_GetWidth, 1748). +-define(wxListItem_SetAlign, 1749). +-define(wxListItem_SetBackgroundColour, 1750). +-define(wxListItem_SetColumn, 1751). +-define(wxListItem_SetFont, 1752). +-define(wxListItem_SetId, 1753). +-define(wxListItem_SetImage, 1754). +-define(wxListItem_SetMask, 1755). +-define(wxListItem_SetState, 1756). +-define(wxListItem_SetStateMask, 1757). +-define(wxListItem_SetText, 1758). +-define(wxListItem_SetTextColour, 1759). +-define(wxListItem_SetWidth, 1760). +-define(wxListItemAttr_new_0, 1761). +-define(wxListItemAttr_new_3, 1762). +-define(wxListItemAttr_GetBackgroundColour, 1763). +-define(wxListItemAttr_GetFont, 1764). +-define(wxListItemAttr_GetTextColour, 1765). +-define(wxListItemAttr_HasBackgroundColour, 1766). +-define(wxListItemAttr_HasFont, 1767). +-define(wxListItemAttr_HasTextColour, 1768). +-define(wxListItemAttr_SetBackgroundColour, 1769). +-define(wxListItemAttr_SetFont, 1770). +-define(wxListItemAttr_SetTextColour, 1771). +-define(wxListItemAttr_destroy, 1772). +-define(wxImageList_new_0, 1773). +-define(wxImageList_new_3, 1774). +-define(wxImageList_Add_1, 1775). +-define(wxImageList_Add_2_0, 1776). +-define(wxImageList_Add_2_1, 1777). +-define(wxImageList_Create, 1778). +-define(wxImageList_Draw, 1780). +-define(wxImageList_GetBitmap, 1781). +-define(wxImageList_GetIcon, 1782). +-define(wxImageList_GetImageCount, 1783). +-define(wxImageList_GetSize, 1784). +-define(wxImageList_Remove, 1785). +-define(wxImageList_RemoveAll, 1786). +-define(wxImageList_Replace_2, 1787). +-define(wxImageList_Replace_3, 1788). +-define(wxImageList_destroy, 1789). +-define(wxTextAttr_new_0, 1790). +-define(wxTextAttr_new_2, 1791). +-define(wxTextAttr_GetAlignment, 1792). +-define(wxTextAttr_GetBackgroundColour, 1793). +-define(wxTextAttr_GetFont, 1794). +-define(wxTextAttr_GetLeftIndent, 1795). +-define(wxTextAttr_GetLeftSubIndent, 1796). +-define(wxTextAttr_GetRightIndent, 1797). +-define(wxTextAttr_GetTabs, 1798). +-define(wxTextAttr_GetTextColour, 1799). +-define(wxTextAttr_HasBackgroundColour, 1800). +-define(wxTextAttr_HasFont, 1801). +-define(wxTextAttr_HasTextColour, 1802). +-define(wxTextAttr_GetFlags, 1803). +-define(wxTextAttr_IsDefault, 1804). +-define(wxTextAttr_SetAlignment, 1805). +-define(wxTextAttr_SetBackgroundColour, 1806). +-define(wxTextAttr_SetFlags, 1807). +-define(wxTextAttr_SetFont, 1808). +-define(wxTextAttr_SetLeftIndent, 1809). +-define(wxTextAttr_SetRightIndent, 1810). +-define(wxTextAttr_SetTabs, 1811). +-define(wxTextAttr_SetTextColour, 1812). +-define(wxTextAttr_destroy, 1813). +-define(wxTextCtrl_new_3, 1815). +-define(wxTextCtrl_new_0, 1816). +-define(wxTextCtrl_destruct, 1818). +-define(wxTextCtrl_AppendText, 1819). +-define(wxTextCtrl_CanCopy, 1820). +-define(wxTextCtrl_CanCut, 1821). +-define(wxTextCtrl_CanPaste, 1822). +-define(wxTextCtrl_CanRedo, 1823). +-define(wxTextCtrl_CanUndo, 1824). +-define(wxTextCtrl_Clear, 1825). +-define(wxTextCtrl_Copy, 1826). +-define(wxTextCtrl_Create, 1827). +-define(wxTextCtrl_Cut, 1828). +-define(wxTextCtrl_DiscardEdits, 1829). +-define(wxTextCtrl_ChangeValue, 1830). +-define(wxTextCtrl_EmulateKeyPress, 1831). +-define(wxTextCtrl_GetDefaultStyle, 1832). +-define(wxTextCtrl_GetInsertionPoint, 1833). +-define(wxTextCtrl_GetLastPosition, 1834). +-define(wxTextCtrl_GetLineLength, 1835). +-define(wxTextCtrl_GetLineText, 1836). +-define(wxTextCtrl_GetNumberOfLines, 1837). +-define(wxTextCtrl_GetRange, 1838). +-define(wxTextCtrl_GetSelection, 1839). +-define(wxTextCtrl_GetStringSelection, 1840). +-define(wxTextCtrl_GetStyle, 1841). +-define(wxTextCtrl_GetValue, 1842). +-define(wxTextCtrl_IsEditable, 1843). +-define(wxTextCtrl_IsModified, 1844). +-define(wxTextCtrl_IsMultiLine, 1845). +-define(wxTextCtrl_IsSingleLine, 1846). +-define(wxTextCtrl_LoadFile, 1847). +-define(wxTextCtrl_MarkDirty, 1848). +-define(wxTextCtrl_Paste, 1849). +-define(wxTextCtrl_PositionToXY, 1850). +-define(wxTextCtrl_Redo, 1851). +-define(wxTextCtrl_Remove, 1852). +-define(wxTextCtrl_Replace, 1853). +-define(wxTextCtrl_SaveFile, 1854). +-define(wxTextCtrl_SetDefaultStyle, 1855). +-define(wxTextCtrl_SetEditable, 1856). +-define(wxTextCtrl_SetInsertionPoint, 1857). +-define(wxTextCtrl_SetInsertionPointEnd, 1858). +-define(wxTextCtrl_SetMaxLength, 1860). +-define(wxTextCtrl_SetSelection, 1861). +-define(wxTextCtrl_SetStyle, 1862). +-define(wxTextCtrl_SetValue, 1863). +-define(wxTextCtrl_ShowPosition, 1864). +-define(wxTextCtrl_Undo, 1865). +-define(wxTextCtrl_WriteText, 1866). +-define(wxTextCtrl_XYToPosition, 1867). +-define(wxNotebook_new_0, 1870). +-define(wxNotebook_new_3, 1871). +-define(wxNotebook_destruct, 1872). +-define(wxNotebook_AddPage, 1873). +-define(wxNotebook_AdvanceSelection, 1874). +-define(wxNotebook_AssignImageList, 1875). +-define(wxNotebook_Create, 1876). +-define(wxNotebook_DeleteAllPages, 1877). +-define(wxNotebook_DeletePage, 1878). +-define(wxNotebook_RemovePage, 1879). +-define(wxNotebook_GetCurrentPage, 1880). +-define(wxNotebook_GetImageList, 1881). +-define(wxNotebook_GetPage, 1883). +-define(wxNotebook_GetPageCount, 1884). +-define(wxNotebook_GetPageImage, 1885). +-define(wxNotebook_GetPageText, 1886). +-define(wxNotebook_GetRowCount, 1887). +-define(wxNotebook_GetSelection, 1888). +-define(wxNotebook_GetThemeBackgroundColour, 1889). +-define(wxNotebook_HitTest, 1891). +-define(wxNotebook_InsertPage, 1893). +-define(wxNotebook_SetImageList, 1894). +-define(wxNotebook_SetPadding, 1895). +-define(wxNotebook_SetPageSize, 1896). +-define(wxNotebook_SetPageImage, 1897). +-define(wxNotebook_SetPageText, 1898). +-define(wxNotebook_SetSelection, 1899). +-define(wxNotebook_ChangeSelection, 1900). +-define(wxChoicebook_new_0, 1901). +-define(wxChoicebook_new_3, 1902). +-define(wxChoicebook_AddPage, 1903). +-define(wxChoicebook_AdvanceSelection, 1904). +-define(wxChoicebook_AssignImageList, 1905). +-define(wxChoicebook_Create, 1906). +-define(wxChoicebook_DeleteAllPages, 1907). +-define(wxChoicebook_DeletePage, 1908). +-define(wxChoicebook_RemovePage, 1909). +-define(wxChoicebook_GetCurrentPage, 1910). +-define(wxChoicebook_GetImageList, 1911). +-define(wxChoicebook_GetPage, 1913). +-define(wxChoicebook_GetPageCount, 1914). +-define(wxChoicebook_GetPageImage, 1915). +-define(wxChoicebook_GetPageText, 1916). +-define(wxChoicebook_GetSelection, 1917). +-define(wxChoicebook_HitTest, 1918). +-define(wxChoicebook_InsertPage, 1919). +-define(wxChoicebook_SetImageList, 1920). +-define(wxChoicebook_SetPageSize, 1921). +-define(wxChoicebook_SetPageImage, 1922). +-define(wxChoicebook_SetPageText, 1923). +-define(wxChoicebook_SetSelection, 1924). +-define(wxChoicebook_ChangeSelection, 1925). +-define(wxChoicebook_destroy, 1926). +-define(wxToolbook_new_0, 1927). +-define(wxToolbook_new_3, 1928). +-define(wxToolbook_AddPage, 1929). +-define(wxToolbook_AdvanceSelection, 1930). +-define(wxToolbook_AssignImageList, 1931). +-define(wxToolbook_Create, 1932). +-define(wxToolbook_DeleteAllPages, 1933). +-define(wxToolbook_DeletePage, 1934). +-define(wxToolbook_RemovePage, 1935). +-define(wxToolbook_GetCurrentPage, 1936). +-define(wxToolbook_GetImageList, 1937). +-define(wxToolbook_GetPage, 1939). +-define(wxToolbook_GetPageCount, 1940). +-define(wxToolbook_GetPageImage, 1941). +-define(wxToolbook_GetPageText, 1942). +-define(wxToolbook_GetSelection, 1943). +-define(wxToolbook_HitTest, 1945). +-define(wxToolbook_InsertPage, 1946). +-define(wxToolbook_SetImageList, 1947). +-define(wxToolbook_SetPageSize, 1948). +-define(wxToolbook_SetPageImage, 1949). +-define(wxToolbook_SetPageText, 1950). +-define(wxToolbook_SetSelection, 1951). +-define(wxToolbook_ChangeSelection, 1952). +-define(wxToolbook_destroy, 1953). +-define(wxListbook_new_0, 1954). +-define(wxListbook_new_3, 1955). +-define(wxListbook_AddPage, 1956). +-define(wxListbook_AdvanceSelection, 1957). +-define(wxListbook_AssignImageList, 1958). +-define(wxListbook_Create, 1959). +-define(wxListbook_DeleteAllPages, 1960). +-define(wxListbook_DeletePage, 1961). +-define(wxListbook_RemovePage, 1962). +-define(wxListbook_GetCurrentPage, 1963). +-define(wxListbook_GetImageList, 1964). +-define(wxListbook_GetPage, 1966). +-define(wxListbook_GetPageCount, 1967). +-define(wxListbook_GetPageImage, 1968). +-define(wxListbook_GetPageText, 1969). +-define(wxListbook_GetSelection, 1970). +-define(wxListbook_HitTest, 1972). +-define(wxListbook_InsertPage, 1973). +-define(wxListbook_SetImageList, 1974). +-define(wxListbook_SetPageSize, 1975). +-define(wxListbook_SetPageImage, 1976). +-define(wxListbook_SetPageText, 1977). +-define(wxListbook_SetSelection, 1978). +-define(wxListbook_ChangeSelection, 1979). +-define(wxListbook_destroy, 1980). +-define(wxTreebook_new_0, 1981). +-define(wxTreebook_new_3, 1982). +-define(wxTreebook_AddPage, 1983). +-define(wxTreebook_AdvanceSelection, 1984). +-define(wxTreebook_AssignImageList, 1985). +-define(wxTreebook_Create, 1986). +-define(wxTreebook_DeleteAllPages, 1987). +-define(wxTreebook_DeletePage, 1988). +-define(wxTreebook_RemovePage, 1989). +-define(wxTreebook_GetCurrentPage, 1990). +-define(wxTreebook_GetImageList, 1991). +-define(wxTreebook_GetPage, 1993). +-define(wxTreebook_GetPageCount, 1994). +-define(wxTreebook_GetPageImage, 1995). +-define(wxTreebook_GetPageText, 1996). +-define(wxTreebook_GetSelection, 1997). +-define(wxTreebook_ExpandNode, 1998). +-define(wxTreebook_IsNodeExpanded, 1999). +-define(wxTreebook_HitTest, 2001). +-define(wxTreebook_InsertPage, 2002). +-define(wxTreebook_InsertSubPage, 2003). +-define(wxTreebook_SetImageList, 2004). +-define(wxTreebook_SetPageSize, 2005). +-define(wxTreebook_SetPageImage, 2006). +-define(wxTreebook_SetPageText, 2007). +-define(wxTreebook_SetSelection, 2008). +-define(wxTreebook_ChangeSelection, 2009). +-define(wxTreebook_destroy, 2010). +-define(wxTreeCtrl_new_2, 2013). +-define(wxTreeCtrl_new_0, 2014). +-define(wxTreeCtrl_destruct, 2016). +-define(wxTreeCtrl_AddRoot, 2017). +-define(wxTreeCtrl_AppendItem, 2018). +-define(wxTreeCtrl_AssignImageList, 2019). +-define(wxTreeCtrl_AssignStateImageList, 2020). +-define(wxTreeCtrl_Collapse, 2021). +-define(wxTreeCtrl_CollapseAndReset, 2022). +-define(wxTreeCtrl_Create, 2023). +-define(wxTreeCtrl_Delete, 2024). +-define(wxTreeCtrl_DeleteAllItems, 2025). +-define(wxTreeCtrl_DeleteChildren, 2026). +-define(wxTreeCtrl_EditLabel, 2027). +-define(wxTreeCtrl_EnsureVisible, 2028). +-define(wxTreeCtrl_Expand, 2029). +-define(wxTreeCtrl_GetBoundingRect, 2030). +-define(wxTreeCtrl_GetChildrenCount, 2032). +-define(wxTreeCtrl_GetCount, 2033). +-define(wxTreeCtrl_GetEditControl, 2034). +-define(wxTreeCtrl_GetFirstChild, 2035). +-define(wxTreeCtrl_GetNextChild, 2036). +-define(wxTreeCtrl_GetFirstVisibleItem, 2037). +-define(wxTreeCtrl_GetImageList, 2038). +-define(wxTreeCtrl_GetIndent, 2039). +-define(wxTreeCtrl_GetItemBackgroundColour, 2040). +-define(wxTreeCtrl_GetItemData, 2041). +-define(wxTreeCtrl_GetItemFont, 2042). +-define(wxTreeCtrl_GetItemImage_1, 2043). +-define(wxTreeCtrl_GetItemImage_2, 2044). +-define(wxTreeCtrl_GetItemText, 2045). +-define(wxTreeCtrl_GetItemTextColour, 2046). +-define(wxTreeCtrl_GetLastChild, 2047). +-define(wxTreeCtrl_GetNextSibling, 2048). +-define(wxTreeCtrl_GetNextVisible, 2049). +-define(wxTreeCtrl_GetItemParent, 2050). +-define(wxTreeCtrl_GetPrevSibling, 2051). +-define(wxTreeCtrl_GetPrevVisible, 2052). +-define(wxTreeCtrl_GetRootItem, 2053). +-define(wxTreeCtrl_GetSelection, 2054). +-define(wxTreeCtrl_GetSelections, 2055). +-define(wxTreeCtrl_GetStateImageList, 2056). +-define(wxTreeCtrl_HitTest, 2057). +-define(wxTreeCtrl_InsertItem, 2059). +-define(wxTreeCtrl_IsBold, 2060). +-define(wxTreeCtrl_IsExpanded, 2061). +-define(wxTreeCtrl_IsSelected, 2062). +-define(wxTreeCtrl_IsVisible, 2063). +-define(wxTreeCtrl_ItemHasChildren, 2064). +-define(wxTreeCtrl_IsTreeItemIdOk, 2065). +-define(wxTreeCtrl_PrependItem, 2066). +-define(wxTreeCtrl_ScrollTo, 2067). +-define(wxTreeCtrl_SelectItem_1, 2068). +-define(wxTreeCtrl_SelectItem_2, 2069). +-define(wxTreeCtrl_SetIndent, 2070). +-define(wxTreeCtrl_SetImageList, 2071). +-define(wxTreeCtrl_SetItemBackgroundColour, 2072). +-define(wxTreeCtrl_SetItemBold, 2073). +-define(wxTreeCtrl_SetItemData, 2074). +-define(wxTreeCtrl_SetItemDropHighlight, 2075). +-define(wxTreeCtrl_SetItemFont, 2076). +-define(wxTreeCtrl_SetItemHasChildren, 2077). +-define(wxTreeCtrl_SetItemImage_2, 2078). +-define(wxTreeCtrl_SetItemImage_3, 2079). +-define(wxTreeCtrl_SetItemText, 2080). +-define(wxTreeCtrl_SetItemTextColour, 2081). +-define(wxTreeCtrl_SetStateImageList, 2082). +-define(wxTreeCtrl_SetWindowStyle, 2083). +-define(wxTreeCtrl_SortChildren, 2084). +-define(wxTreeCtrl_Toggle, 2085). +-define(wxTreeCtrl_ToggleItemSelection, 2086). +-define(wxTreeCtrl_Unselect, 2087). +-define(wxTreeCtrl_UnselectAll, 2088). +-define(wxTreeCtrl_UnselectItem, 2089). +-define(wxScrollBar_new_0, 2090). +-define(wxScrollBar_new_3, 2091). +-define(wxScrollBar_destruct, 2092). +-define(wxScrollBar_Create, 2093). +-define(wxScrollBar_GetRange, 2094). +-define(wxScrollBar_GetPageSize, 2095). +-define(wxScrollBar_GetThumbPosition, 2096). +-define(wxScrollBar_GetThumbSize, 2097). +-define(wxScrollBar_SetThumbPosition, 2098). +-define(wxScrollBar_SetScrollbar, 2099). +-define(wxSpinButton_new_2, 2101). +-define(wxSpinButton_new_0, 2102). +-define(wxSpinButton_Create, 2103). +-define(wxSpinButton_GetMax, 2104). +-define(wxSpinButton_GetMin, 2105). +-define(wxSpinButton_GetValue, 2106). +-define(wxSpinButton_SetRange, 2107). +-define(wxSpinButton_SetValue, 2108). +-define(wxSpinButton_destroy, 2109). +-define(wxSpinCtrl_new_0, 2110). +-define(wxSpinCtrl_new_2, 2111). +-define(wxSpinCtrl_Create, 2113). +-define(wxSpinCtrl_SetValue_1_1, 2116). +-define(wxSpinCtrl_SetValue_1_0, 2117). +-define(wxSpinCtrl_GetValue, 2119). +-define(wxSpinCtrl_SetRange, 2121). +-define(wxSpinCtrl_SetSelection, 2122). +-define(wxSpinCtrl_GetMin, 2124). +-define(wxSpinCtrl_GetMax, 2126). +-define(wxSpinCtrl_destroy, 2127). +-define(wxStaticText_new_0, 2128). +-define(wxStaticText_new_4, 2129). +-define(wxStaticText_Create, 2130). +-define(wxStaticText_GetLabel, 2131). +-define(wxStaticText_SetLabel, 2132). +-define(wxStaticText_Wrap, 2133). +-define(wxStaticText_destroy, 2134). +-define(wxStaticBitmap_new_0, 2135). +-define(wxStaticBitmap_new_4, 2136). +-define(wxStaticBitmap_Create, 2137). +-define(wxStaticBitmap_GetBitmap, 2138). +-define(wxStaticBitmap_SetBitmap, 2139). +-define(wxStaticBitmap_destroy, 2140). +-define(wxRadioBox_new, 2141). +-define(wxRadioBox_destruct, 2143). +-define(wxRadioBox_Create, 2144). +-define(wxRadioBox_Enable_2, 2145). +-define(wxRadioBox_Enable_1, 2146). +-define(wxRadioBox_GetSelection, 2147). +-define(wxRadioBox_GetString, 2148). +-define(wxRadioBox_SetSelection, 2149). +-define(wxRadioBox_Show_2, 2150). +-define(wxRadioBox_Show_1, 2151). +-define(wxRadioBox_GetColumnCount, 2152). +-define(wxRadioBox_GetItemHelpText, 2153). +-define(wxRadioBox_GetItemToolTip, 2154). +-define(wxRadioBox_GetItemFromPoint, 2156). +-define(wxRadioBox_GetRowCount, 2157). +-define(wxRadioBox_IsItemEnabled, 2158). +-define(wxRadioBox_IsItemShown, 2159). +-define(wxRadioBox_SetItemHelpText, 2160). +-define(wxRadioBox_SetItemToolTip, 2161). +-define(wxRadioButton_new_0, 2162). +-define(wxRadioButton_new_4, 2163). +-define(wxRadioButton_Create, 2164). +-define(wxRadioButton_GetValue, 2165). +-define(wxRadioButton_SetValue, 2166). +-define(wxRadioButton_destroy, 2167). +-define(wxSlider_new_6, 2169). +-define(wxSlider_new_0, 2170). +-define(wxSlider_Create, 2171). +-define(wxSlider_GetLineSize, 2172). +-define(wxSlider_GetMax, 2173). +-define(wxSlider_GetMin, 2174). +-define(wxSlider_GetPageSize, 2175). +-define(wxSlider_GetThumbLength, 2176). +-define(wxSlider_GetValue, 2177). +-define(wxSlider_SetLineSize, 2178). +-define(wxSlider_SetPageSize, 2179). +-define(wxSlider_SetRange, 2180). +-define(wxSlider_SetThumbLength, 2181). +-define(wxSlider_SetValue, 2182). +-define(wxSlider_destroy, 2183). +-define(wxDialog_new_4, 2185). +-define(wxDialog_new_0, 2186). +-define(wxDialog_destruct, 2188). +-define(wxDialog_Create, 2189). +-define(wxDialog_CreateButtonSizer, 2190). +-define(wxDialog_CreateStdDialogButtonSizer, 2191). +-define(wxDialog_EndModal, 2192). +-define(wxDialog_GetAffirmativeId, 2193). +-define(wxDialog_GetReturnCode, 2194). +-define(wxDialog_IsModal, 2195). +-define(wxDialog_SetAffirmativeId, 2196). +-define(wxDialog_SetReturnCode, 2197). +-define(wxDialog_Show, 2198). +-define(wxDialog_ShowModal, 2199). +-define(wxColourDialog_new_0, 2200). +-define(wxColourDialog_new_2, 2201). +-define(wxColourDialog_destruct, 2202). +-define(wxColourDialog_Create, 2203). +-define(wxColourDialog_GetColourData, 2204). +-define(wxColourData_new_0, 2205). +-define(wxColourData_new_1, 2206). +-define(wxColourData_destruct, 2207). +-define(wxColourData_GetChooseFull, 2208). +-define(wxColourData_GetColour, 2209). +-define(wxColourData_GetCustomColour, 2211). +-define(wxColourData_SetChooseFull, 2212). +-define(wxColourData_SetColour, 2213). +-define(wxColourData_SetCustomColour, 2214). +-define(wxPalette_new_0, 2215). +-define(wxPalette_new_4, 2216). +-define(wxPalette_destruct, 2218). +-define(wxPalette_Create, 2219). +-define(wxPalette_GetColoursCount, 2220). +-define(wxPalette_GetPixel, 2221). +-define(wxPalette_GetRGB, 2222). +-define(wxPalette_IsOk, 2223). +-define(wxDirDialog_new, 2227). +-define(wxDirDialog_destruct, 2228). +-define(wxDirDialog_GetPath, 2229). +-define(wxDirDialog_GetMessage, 2230). +-define(wxDirDialog_SetMessage, 2231). +-define(wxDirDialog_SetPath, 2232). +-define(wxFileDialog_new, 2236). +-define(wxFileDialog_destruct, 2237). +-define(wxFileDialog_GetDirectory, 2238). +-define(wxFileDialog_GetFilename, 2239). +-define(wxFileDialog_GetFilenames, 2240). +-define(wxFileDialog_GetFilterIndex, 2241). +-define(wxFileDialog_GetMessage, 2242). +-define(wxFileDialog_GetPath, 2243). +-define(wxFileDialog_GetPaths, 2244). +-define(wxFileDialog_GetWildcard, 2245). +-define(wxFileDialog_SetDirectory, 2246). +-define(wxFileDialog_SetFilename, 2247). +-define(wxFileDialog_SetFilterIndex, 2248). +-define(wxFileDialog_SetMessage, 2249). +-define(wxFileDialog_SetPath, 2250). +-define(wxFileDialog_SetWildcard, 2251). +-define(wxPickerBase_SetInternalMargin, 2252). +-define(wxPickerBase_GetInternalMargin, 2253). +-define(wxPickerBase_SetTextCtrlProportion, 2254). +-define(wxPickerBase_SetPickerCtrlProportion, 2255). +-define(wxPickerBase_GetTextCtrlProportion, 2256). +-define(wxPickerBase_GetPickerCtrlProportion, 2257). +-define(wxPickerBase_HasTextCtrl, 2258). +-define(wxPickerBase_GetTextCtrl, 2259). +-define(wxPickerBase_IsTextCtrlGrowable, 2260). +-define(wxPickerBase_SetPickerCtrlGrowable, 2261). +-define(wxPickerBase_SetTextCtrlGrowable, 2262). +-define(wxPickerBase_IsPickerCtrlGrowable, 2263). +-define(wxFilePickerCtrl_new_0, 2264). +-define(wxFilePickerCtrl_new_3, 2265). +-define(wxFilePickerCtrl_Create, 2266). +-define(wxFilePickerCtrl_GetPath, 2267). +-define(wxFilePickerCtrl_SetPath, 2268). +-define(wxFilePickerCtrl_destroy, 2269). +-define(wxDirPickerCtrl_new_0, 2270). +-define(wxDirPickerCtrl_new_3, 2271). +-define(wxDirPickerCtrl_Create, 2272). +-define(wxDirPickerCtrl_GetPath, 2273). +-define(wxDirPickerCtrl_SetPath, 2274). +-define(wxDirPickerCtrl_destroy, 2275). +-define(wxColourPickerCtrl_new_0, 2276). +-define(wxColourPickerCtrl_new_3, 2277). +-define(wxColourPickerCtrl_Create, 2278). +-define(wxColourPickerCtrl_GetColour, 2279). +-define(wxColourPickerCtrl_SetColour_1_1, 2280). +-define(wxColourPickerCtrl_SetColour_1_0, 2281). +-define(wxColourPickerCtrl_destroy, 2282). +-define(wxDatePickerCtrl_new_0, 2283). +-define(wxDatePickerCtrl_new_3, 2284). +-define(wxDatePickerCtrl_GetRange, 2285). +-define(wxDatePickerCtrl_GetValue, 2286). +-define(wxDatePickerCtrl_SetRange, 2287). +-define(wxDatePickerCtrl_SetValue, 2288). +-define(wxDatePickerCtrl_destroy, 2289). +-define(wxFontPickerCtrl_new_0, 2290). +-define(wxFontPickerCtrl_new_3, 2291). +-define(wxFontPickerCtrl_Create, 2292). +-define(wxFontPickerCtrl_GetSelectedFont, 2293). +-define(wxFontPickerCtrl_SetSelectedFont, 2294). +-define(wxFontPickerCtrl_GetMaxPointSize, 2295). +-define(wxFontPickerCtrl_SetMaxPointSize, 2296). +-define(wxFontPickerCtrl_destroy, 2297). +-define(wxFindReplaceDialog_new_0, 2300). +-define(wxFindReplaceDialog_new_4, 2301). +-define(wxFindReplaceDialog_destruct, 2302). +-define(wxFindReplaceDialog_Create, 2303). +-define(wxFindReplaceDialog_GetData, 2304). +-define(wxFindReplaceData_new_0, 2305). +-define(wxFindReplaceData_new_1, 2306). +-define(wxFindReplaceData_GetFindString, 2307). +-define(wxFindReplaceData_GetReplaceString, 2308). +-define(wxFindReplaceData_GetFlags, 2309). +-define(wxFindReplaceData_SetFlags, 2310). +-define(wxFindReplaceData_SetFindString, 2311). +-define(wxFindReplaceData_SetReplaceString, 2312). +-define(wxFindReplaceData_destroy, 2313). +-define(wxMultiChoiceDialog_new_0, 2314). +-define(wxMultiChoiceDialog_new_5, 2316). +-define(wxMultiChoiceDialog_GetSelections, 2317). +-define(wxMultiChoiceDialog_SetSelections, 2318). +-define(wxMultiChoiceDialog_destroy, 2319). +-define(wxSingleChoiceDialog_new_0, 2320). +-define(wxSingleChoiceDialog_new_5, 2322). +-define(wxSingleChoiceDialog_GetSelection, 2323). +-define(wxSingleChoiceDialog_GetStringSelection, 2324). +-define(wxSingleChoiceDialog_SetSelection, 2325). +-define(wxSingleChoiceDialog_destroy, 2326). +-define(wxTextEntryDialog_new, 2327). +-define(wxTextEntryDialog_GetValue, 2328). +-define(wxTextEntryDialog_SetValue, 2329). +-define(wxTextEntryDialog_destroy, 2330). +-define(wxPasswordEntryDialog_new, 2331). +-define(wxPasswordEntryDialog_destroy, 2332). +-define(wxFontData_new_0, 2333). +-define(wxFontData_new_1, 2334). +-define(wxFontData_destruct, 2335). +-define(wxFontData_EnableEffects, 2336). +-define(wxFontData_GetAllowSymbols, 2337). +-define(wxFontData_GetColour, 2338). +-define(wxFontData_GetChosenFont, 2339). +-define(wxFontData_GetEnableEffects, 2340). +-define(wxFontData_GetInitialFont, 2341). +-define(wxFontData_GetShowHelp, 2342). +-define(wxFontData_SetAllowSymbols, 2343). +-define(wxFontData_SetChosenFont, 2344). +-define(wxFontData_SetColour, 2345). +-define(wxFontData_SetInitialFont, 2346). +-define(wxFontData_SetRange, 2347). +-define(wxFontData_SetShowHelp, 2348). +-define(wxFontDialog_new_0, 2352). +-define(wxFontDialog_new_2, 2354). +-define(wxFontDialog_Create, 2356). +-define(wxFontDialog_GetFontData, 2357). +-define(wxFontDialog_destroy, 2359). +-define(wxProgressDialog_new, 2360). +-define(wxProgressDialog_destruct, 2361). +-define(wxProgressDialog_Resume, 2362). +-define(wxProgressDialog_Update_2, 2363). +-define(wxProgressDialog_Update_0, 2364). +-define(wxMessageDialog_new, 2365). +-define(wxMessageDialog_destruct, 2366). +-define(wxPageSetupDialog_new, 2367). +-define(wxPageSetupDialog_destruct, 2368). +-define(wxPageSetupDialog_GetPageSetupData, 2369). +-define(wxPageSetupDialog_ShowModal, 2370). +-define(wxPageSetupDialogData_new_0, 2371). +-define(wxPageSetupDialogData_new_1_0, 2372). +-define(wxPageSetupDialogData_new_1_1, 2373). +-define(wxPageSetupDialogData_destruct, 2374). +-define(wxPageSetupDialogData_EnableHelp, 2375). +-define(wxPageSetupDialogData_EnableMargins, 2376). +-define(wxPageSetupDialogData_EnableOrientation, 2377). +-define(wxPageSetupDialogData_EnablePaper, 2378). +-define(wxPageSetupDialogData_EnablePrinter, 2379). +-define(wxPageSetupDialogData_GetDefaultMinMargins, 2380). +-define(wxPageSetupDialogData_GetEnableMargins, 2381). +-define(wxPageSetupDialogData_GetEnableOrientation, 2382). +-define(wxPageSetupDialogData_GetEnablePaper, 2383). +-define(wxPageSetupDialogData_GetEnablePrinter, 2384). +-define(wxPageSetupDialogData_GetEnableHelp, 2385). +-define(wxPageSetupDialogData_GetDefaultInfo, 2386). +-define(wxPageSetupDialogData_GetMarginTopLeft, 2387). +-define(wxPageSetupDialogData_GetMarginBottomRight, 2388). +-define(wxPageSetupDialogData_GetMinMarginTopLeft, 2389). +-define(wxPageSetupDialogData_GetMinMarginBottomRight, 2390). +-define(wxPageSetupDialogData_GetPaperId, 2391). +-define(wxPageSetupDialogData_GetPaperSize, 2392). +-define(wxPageSetupDialogData_GetPrintData, 2394). +-define(wxPageSetupDialogData_IsOk, 2395). +-define(wxPageSetupDialogData_SetDefaultInfo, 2396). +-define(wxPageSetupDialogData_SetDefaultMinMargins, 2397). +-define(wxPageSetupDialogData_SetMarginTopLeft, 2398). +-define(wxPageSetupDialogData_SetMarginBottomRight, 2399). +-define(wxPageSetupDialogData_SetMinMarginTopLeft, 2400). +-define(wxPageSetupDialogData_SetMinMarginBottomRight, 2401). +-define(wxPageSetupDialogData_SetPaperId, 2402). +-define(wxPageSetupDialogData_SetPaperSize_1_1, 2403). +-define(wxPageSetupDialogData_SetPaperSize_1_0, 2404). +-define(wxPageSetupDialogData_SetPrintData, 2405). +-define(wxPrintDialog_new_2_0, 2406). +-define(wxPrintDialog_new_2_1, 2407). +-define(wxPrintDialog_destruct, 2408). +-define(wxPrintDialog_GetPrintDialogData, 2409). +-define(wxPrintDialog_GetPrintDC, 2410). +-define(wxPrintDialogData_new_0, 2411). +-define(wxPrintDialogData_new_1_1, 2412). +-define(wxPrintDialogData_new_1_0, 2413). +-define(wxPrintDialogData_destruct, 2414). +-define(wxPrintDialogData_EnableHelp, 2415). +-define(wxPrintDialogData_EnablePageNumbers, 2416). +-define(wxPrintDialogData_EnablePrintToFile, 2417). +-define(wxPrintDialogData_EnableSelection, 2418). +-define(wxPrintDialogData_GetAllPages, 2419). +-define(wxPrintDialogData_GetCollate, 2420). +-define(wxPrintDialogData_GetFromPage, 2421). +-define(wxPrintDialogData_GetMaxPage, 2422). +-define(wxPrintDialogData_GetMinPage, 2423). +-define(wxPrintDialogData_GetNoCopies, 2424). +-define(wxPrintDialogData_GetPrintData, 2425). +-define(wxPrintDialogData_GetPrintToFile, 2426). +-define(wxPrintDialogData_GetSelection, 2427). +-define(wxPrintDialogData_GetToPage, 2428). +-define(wxPrintDialogData_IsOk, 2429). +-define(wxPrintDialogData_SetCollate, 2430). +-define(wxPrintDialogData_SetFromPage, 2431). +-define(wxPrintDialogData_SetMaxPage, 2432). +-define(wxPrintDialogData_SetMinPage, 2433). +-define(wxPrintDialogData_SetNoCopies, 2434). +-define(wxPrintDialogData_SetPrintData, 2435). +-define(wxPrintDialogData_SetPrintToFile, 2436). +-define(wxPrintDialogData_SetSelection, 2437). +-define(wxPrintDialogData_SetToPage, 2438). +-define(wxPrintData_new_0, 2439). +-define(wxPrintData_new_1, 2440). +-define(wxPrintData_destruct, 2441). +-define(wxPrintData_GetCollate, 2442). +-define(wxPrintData_GetBin, 2443). +-define(wxPrintData_GetColour, 2444). +-define(wxPrintData_GetDuplex, 2445). +-define(wxPrintData_GetNoCopies, 2446). +-define(wxPrintData_GetOrientation, 2447). +-define(wxPrintData_GetPaperId, 2448). +-define(wxPrintData_GetPrinterName, 2449). +-define(wxPrintData_GetQuality, 2450). +-define(wxPrintData_IsOk, 2451). +-define(wxPrintData_SetBin, 2452). +-define(wxPrintData_SetCollate, 2453). +-define(wxPrintData_SetColour, 2454). +-define(wxPrintData_SetDuplex, 2455). +-define(wxPrintData_SetNoCopies, 2456). +-define(wxPrintData_SetOrientation, 2457). +-define(wxPrintData_SetPaperId, 2458). +-define(wxPrintData_SetPrinterName, 2459). +-define(wxPrintData_SetQuality, 2460). +-define(wxPrintPreview_new_2, 2463). +-define(wxPrintPreview_new_3, 2464). +-define(wxPrintPreview_destruct, 2466). +-define(wxPrintPreview_GetCanvas, 2467). +-define(wxPrintPreview_GetCurrentPage, 2468). +-define(wxPrintPreview_GetFrame, 2469). +-define(wxPrintPreview_GetMaxPage, 2470). +-define(wxPrintPreview_GetMinPage, 2471). +-define(wxPrintPreview_GetPrintout, 2472). +-define(wxPrintPreview_GetPrintoutForPrinting, 2473). +-define(wxPrintPreview_IsOk, 2474). +-define(wxPrintPreview_PaintPage, 2475). +-define(wxPrintPreview_Print, 2476). +-define(wxPrintPreview_RenderPage, 2477). +-define(wxPrintPreview_SetCanvas, 2478). +-define(wxPrintPreview_SetCurrentPage, 2479). +-define(wxPrintPreview_SetFrame, 2480). +-define(wxPrintPreview_SetPrintout, 2481). +-define(wxPrintPreview_SetZoom, 2482). +-define(wxPreviewFrame_new, 2483). +-define(wxPreviewFrame_destruct, 2484). +-define(wxPreviewFrame_CreateControlBar, 2485). +-define(wxPreviewFrame_CreateCanvas, 2486). +-define(wxPreviewFrame_Initialize, 2487). +-define(wxPreviewFrame_OnCloseWindow, 2488). +-define(wxPreviewControlBar_new, 2489). +-define(wxPreviewControlBar_destruct, 2490). +-define(wxPreviewControlBar_CreateButtons, 2491). +-define(wxPreviewControlBar_GetPrintPreview, 2492). +-define(wxPreviewControlBar_GetZoomControl, 2493). +-define(wxPreviewControlBar_SetZoomControl, 2494). +-define(wxPrinter_new, 2496). +-define(wxPrinter_CreateAbortWindow, 2497). +-define(wxPrinter_GetAbort, 2498). +-define(wxPrinter_GetLastError, 2499). +-define(wxPrinter_GetPrintDialogData, 2500). +-define(wxPrinter_Print, 2501). +-define(wxPrinter_PrintDialog, 2502). +-define(wxPrinter_ReportError, 2503). +-define(wxPrinter_Setup, 2504). +-define(wxPrinter_destroy, 2505). +-define(wxXmlResource_new_1, 2506). +-define(wxXmlResource_new_2, 2507). +-define(wxXmlResource_destruct, 2508). +-define(wxXmlResource_AttachUnknownControl, 2509). +-define(wxXmlResource_ClearHandlers, 2510). +-define(wxXmlResource_CompareVersion, 2511). +-define(wxXmlResource_Get, 2512). +-define(wxXmlResource_GetFlags, 2513). +-define(wxXmlResource_GetVersion, 2514). +-define(wxXmlResource_GetXRCID, 2515). +-define(wxXmlResource_InitAllHandlers, 2516). +-define(wxXmlResource_Load, 2517). +-define(wxXmlResource_LoadBitmap, 2518). +-define(wxXmlResource_LoadDialog_2, 2519). +-define(wxXmlResource_LoadDialog_3, 2520). +-define(wxXmlResource_LoadFrame_2, 2521). +-define(wxXmlResource_LoadFrame_3, 2522). +-define(wxXmlResource_LoadIcon, 2523). +-define(wxXmlResource_LoadMenu, 2524). +-define(wxXmlResource_LoadMenuBar_2, 2525). +-define(wxXmlResource_LoadMenuBar_1, 2526). +-define(wxXmlResource_LoadPanel_2, 2527). +-define(wxXmlResource_LoadPanel_3, 2528). +-define(wxXmlResource_LoadToolBar, 2529). +-define(wxXmlResource_Set, 2530). +-define(wxXmlResource_SetFlags, 2531). +-define(wxXmlResource_Unload, 2532). +-define(wxXmlResource_xrcctrl, 2533). +-define(wxHtmlEasyPrinting_new, 2534). +-define(wxHtmlEasyPrinting_destruct, 2535). +-define(wxHtmlEasyPrinting_GetPrintData, 2536). +-define(wxHtmlEasyPrinting_GetPageSetupData, 2537). +-define(wxHtmlEasyPrinting_PreviewFile, 2538). +-define(wxHtmlEasyPrinting_PreviewText, 2539). +-define(wxHtmlEasyPrinting_PrintFile, 2540). +-define(wxHtmlEasyPrinting_PrintText, 2541). +-define(wxHtmlEasyPrinting_PageSetup, 2542). +-define(wxHtmlEasyPrinting_SetFonts, 2543). +-define(wxHtmlEasyPrinting_SetHeader, 2544). +-define(wxHtmlEasyPrinting_SetFooter, 2545). +-define(wxGLCanvas_new_2, 2547). +-define(wxGLCanvas_new_3_1, 2548). +-define(wxGLCanvas_new_3_0, 2549). +-define(wxGLCanvas_GetContext, 2550). +-define(wxGLCanvas_SetCurrent, 2552). +-define(wxGLCanvas_SwapBuffers, 2553). +-define(wxGLCanvas_destroy, 2554). +-define(wxAuiManager_new, 2555). +-define(wxAuiManager_destruct, 2556). +-define(wxAuiManager_AddPane_2_1, 2557). +-define(wxAuiManager_AddPane_3, 2558). +-define(wxAuiManager_AddPane_2_0, 2559). +-define(wxAuiManager_DetachPane, 2560). +-define(wxAuiManager_GetAllPanes, 2561). +-define(wxAuiManager_GetArtProvider, 2562). +-define(wxAuiManager_GetDockSizeConstraint, 2563). +-define(wxAuiManager_GetFlags, 2564). +-define(wxAuiManager_GetManagedWindow, 2565). +-define(wxAuiManager_GetManager, 2566). +-define(wxAuiManager_GetPane_1_1, 2567). +-define(wxAuiManager_GetPane_1_0, 2568). +-define(wxAuiManager_HideHint, 2569). +-define(wxAuiManager_InsertPane, 2570). +-define(wxAuiManager_LoadPaneInfo, 2571). +-define(wxAuiManager_LoadPerspective, 2572). +-define(wxAuiManager_SavePaneInfo, 2573). +-define(wxAuiManager_SavePerspective, 2574). +-define(wxAuiManager_SetArtProvider, 2575). +-define(wxAuiManager_SetDockSizeConstraint, 2576). +-define(wxAuiManager_SetFlags, 2577). +-define(wxAuiManager_SetManagedWindow, 2578). +-define(wxAuiManager_ShowHint, 2579). +-define(wxAuiManager_UnInit, 2580). +-define(wxAuiManager_Update, 2581). +-define(wxAuiPaneInfo_new_0, 2582). +-define(wxAuiPaneInfo_new_1, 2583). +-define(wxAuiPaneInfo_destruct, 2584). +-define(wxAuiPaneInfo_BestSize_1, 2585). +-define(wxAuiPaneInfo_BestSize_2, 2586). +-define(wxAuiPaneInfo_Bottom, 2587). +-define(wxAuiPaneInfo_BottomDockable, 2588). +-define(wxAuiPaneInfo_Caption, 2589). +-define(wxAuiPaneInfo_CaptionVisible, 2590). +-define(wxAuiPaneInfo_Centre, 2591). +-define(wxAuiPaneInfo_CentrePane, 2592). +-define(wxAuiPaneInfo_CloseButton, 2593). +-define(wxAuiPaneInfo_DefaultPane, 2594). +-define(wxAuiPaneInfo_DestroyOnClose, 2595). +-define(wxAuiPaneInfo_Direction, 2596). +-define(wxAuiPaneInfo_Dock, 2597). +-define(wxAuiPaneInfo_Dockable, 2598). +-define(wxAuiPaneInfo_Fixed, 2599). +-define(wxAuiPaneInfo_Float, 2600). +-define(wxAuiPaneInfo_Floatable, 2601). +-define(wxAuiPaneInfo_FloatingPosition_1, 2602). +-define(wxAuiPaneInfo_FloatingPosition_2, 2603). +-define(wxAuiPaneInfo_FloatingSize_1, 2604). +-define(wxAuiPaneInfo_FloatingSize_2, 2605). +-define(wxAuiPaneInfo_Gripper, 2606). +-define(wxAuiPaneInfo_GripperTop, 2607). +-define(wxAuiPaneInfo_HasBorder, 2608). +-define(wxAuiPaneInfo_HasCaption, 2609). +-define(wxAuiPaneInfo_HasCloseButton, 2610). +-define(wxAuiPaneInfo_HasFlag, 2611). +-define(wxAuiPaneInfo_HasGripper, 2612). +-define(wxAuiPaneInfo_HasGripperTop, 2613). +-define(wxAuiPaneInfo_HasMaximizeButton, 2614). +-define(wxAuiPaneInfo_HasMinimizeButton, 2615). +-define(wxAuiPaneInfo_HasPinButton, 2616). +-define(wxAuiPaneInfo_Hide, 2617). +-define(wxAuiPaneInfo_IsBottomDockable, 2618). +-define(wxAuiPaneInfo_IsDocked, 2619). +-define(wxAuiPaneInfo_IsFixed, 2620). +-define(wxAuiPaneInfo_IsFloatable, 2621). +-define(wxAuiPaneInfo_IsFloating, 2622). +-define(wxAuiPaneInfo_IsLeftDockable, 2623). +-define(wxAuiPaneInfo_IsMovable, 2624). +-define(wxAuiPaneInfo_IsOk, 2625). +-define(wxAuiPaneInfo_IsResizable, 2626). +-define(wxAuiPaneInfo_IsRightDockable, 2627). +-define(wxAuiPaneInfo_IsShown, 2628). +-define(wxAuiPaneInfo_IsToolbar, 2629). +-define(wxAuiPaneInfo_IsTopDockable, 2630). +-define(wxAuiPaneInfo_Layer, 2631). +-define(wxAuiPaneInfo_Left, 2632). +-define(wxAuiPaneInfo_LeftDockable, 2633). +-define(wxAuiPaneInfo_MaxSize_1, 2634). +-define(wxAuiPaneInfo_MaxSize_2, 2635). +-define(wxAuiPaneInfo_MaximizeButton, 2636). +-define(wxAuiPaneInfo_MinSize_1, 2637). +-define(wxAuiPaneInfo_MinSize_2, 2638). +-define(wxAuiPaneInfo_MinimizeButton, 2639). +-define(wxAuiPaneInfo_Movable, 2640). +-define(wxAuiPaneInfo_Name, 2641). +-define(wxAuiPaneInfo_PaneBorder, 2642). +-define(wxAuiPaneInfo_PinButton, 2643). +-define(wxAuiPaneInfo_Position, 2644). +-define(wxAuiPaneInfo_Resizable, 2645). +-define(wxAuiPaneInfo_Right, 2646). +-define(wxAuiPaneInfo_RightDockable, 2647). +-define(wxAuiPaneInfo_Row, 2648). +-define(wxAuiPaneInfo_SafeSet, 2649). +-define(wxAuiPaneInfo_SetFlag, 2650). +-define(wxAuiPaneInfo_Show, 2651). +-define(wxAuiPaneInfo_ToolbarPane, 2652). +-define(wxAuiPaneInfo_Top, 2653). +-define(wxAuiPaneInfo_TopDockable, 2654). +-define(wxAuiPaneInfo_Window, 2655). +-define(wxAuiPaneInfo_GetWindow, 2656). +-define(wxAuiPaneInfo_GetFrame, 2657). +-define(wxAuiPaneInfo_GetDirection, 2658). +-define(wxAuiPaneInfo_GetLayer, 2659). +-define(wxAuiPaneInfo_GetRow, 2660). +-define(wxAuiPaneInfo_GetPosition, 2661). +-define(wxAuiPaneInfo_GetFloatingPosition, 2662). +-define(wxAuiPaneInfo_GetFloatingSize, 2663). +-define(wxAuiNotebook_new_0, 2664). +-define(wxAuiNotebook_new_2, 2665). +-define(wxAuiNotebook_AddPage, 2666). +-define(wxAuiNotebook_Create, 2667). +-define(wxAuiNotebook_DeletePage, 2668). +-define(wxAuiNotebook_GetArtProvider, 2669). +-define(wxAuiNotebook_GetPage, 2670). +-define(wxAuiNotebook_GetPageBitmap, 2671). +-define(wxAuiNotebook_GetPageCount, 2672). +-define(wxAuiNotebook_GetPageIndex, 2673). +-define(wxAuiNotebook_GetPageText, 2674). +-define(wxAuiNotebook_GetSelection, 2675). +-define(wxAuiNotebook_InsertPage, 2676). +-define(wxAuiNotebook_RemovePage, 2677). +-define(wxAuiNotebook_SetArtProvider, 2678). +-define(wxAuiNotebook_SetFont, 2679). +-define(wxAuiNotebook_SetPageBitmap, 2680). +-define(wxAuiNotebook_SetPageText, 2681). +-define(wxAuiNotebook_SetSelection, 2682). +-define(wxAuiNotebook_SetTabCtrlHeight, 2683). +-define(wxAuiNotebook_SetUniformBitmapSize, 2684). +-define(wxAuiNotebook_destroy, 2685). +-define(wxAuiTabArt_SetFlags, 2686). +-define(wxAuiTabArt_SetMeasuringFont, 2687). +-define(wxAuiTabArt_SetNormalFont, 2688). +-define(wxAuiTabArt_SetSelectedFont, 2689). +-define(wxAuiTabArt_SetColour, 2690). +-define(wxAuiTabArt_SetActiveColour, 2691). +-define(wxAuiDockArt_GetColour, 2692). +-define(wxAuiDockArt_GetFont, 2693). +-define(wxAuiDockArt_GetMetric, 2694). +-define(wxAuiDockArt_SetColour, 2695). +-define(wxAuiDockArt_SetFont, 2696). +-define(wxAuiDockArt_SetMetric, 2697). +-define(wxAuiSimpleTabArt_new, 2698). +-define(wxAuiSimpleTabArt_destroy, 2699). +-define(wxMDIParentFrame_new_0, 2700). +-define(wxMDIParentFrame_new_4, 2701). +-define(wxMDIParentFrame_destruct, 2702). +-define(wxMDIParentFrame_ActivateNext, 2703). +-define(wxMDIParentFrame_ActivatePrevious, 2704). +-define(wxMDIParentFrame_ArrangeIcons, 2705). +-define(wxMDIParentFrame_Cascade, 2706). +-define(wxMDIParentFrame_Create, 2707). +-define(wxMDIParentFrame_GetActiveChild, 2708). +-define(wxMDIParentFrame_GetClientWindow, 2709). +-define(wxMDIParentFrame_Tile, 2710). +-define(wxMDIChildFrame_new_0, 2711). +-define(wxMDIChildFrame_new_4, 2712). +-define(wxMDIChildFrame_destruct, 2713). +-define(wxMDIChildFrame_Activate, 2714). +-define(wxMDIChildFrame_Create, 2715). +-define(wxMDIChildFrame_Maximize, 2716). +-define(wxMDIChildFrame_Restore, 2717). +-define(wxMDIClientWindow_new_0, 2718). +-define(wxMDIClientWindow_new_2, 2719). +-define(wxMDIClientWindow_destruct, 2720). +-define(wxMDIClientWindow_CreateClient, 2721). +-define(wxLayoutAlgorithm_new, 2722). +-define(wxLayoutAlgorithm_LayoutFrame, 2723). +-define(wxLayoutAlgorithm_LayoutMDIFrame, 2724). +-define(wxLayoutAlgorithm_LayoutWindow, 2725). +-define(wxLayoutAlgorithm_destroy, 2726). +-define(wxEvent_GetId, 2727). +-define(wxEvent_GetSkipped, 2728). +-define(wxEvent_GetTimestamp, 2729). +-define(wxEvent_IsCommandEvent, 2730). +-define(wxEvent_ResumePropagation, 2731). +-define(wxEvent_ShouldPropagate, 2732). +-define(wxEvent_Skip, 2733). +-define(wxEvent_StopPropagation, 2734). +-define(wxCommandEvent_getClientData, 2735). +-define(wxCommandEvent_GetExtraLong, 2736). +-define(wxCommandEvent_GetInt, 2737). +-define(wxCommandEvent_GetSelection, 2738). +-define(wxCommandEvent_GetString, 2739). +-define(wxCommandEvent_IsChecked, 2740). +-define(wxCommandEvent_IsSelection, 2741). +-define(wxCommandEvent_SetInt, 2742). +-define(wxCommandEvent_SetString, 2743). +-define(wxScrollEvent_GetOrientation, 2744). +-define(wxScrollEvent_GetPosition, 2745). +-define(wxScrollWinEvent_GetOrientation, 2746). +-define(wxScrollWinEvent_GetPosition, 2747). +-define(wxMouseEvent_AltDown, 2748). +-define(wxMouseEvent_Button, 2749). +-define(wxMouseEvent_ButtonDClick, 2750). +-define(wxMouseEvent_ButtonDown, 2751). +-define(wxMouseEvent_ButtonUp, 2752). +-define(wxMouseEvent_CmdDown, 2753). +-define(wxMouseEvent_ControlDown, 2754). +-define(wxMouseEvent_Dragging, 2755). +-define(wxMouseEvent_Entering, 2756). +-define(wxMouseEvent_GetButton, 2757). +-define(wxMouseEvent_GetPosition, 2760). +-define(wxMouseEvent_GetLogicalPosition, 2761). +-define(wxMouseEvent_GetLinesPerAction, 2762). +-define(wxMouseEvent_GetWheelRotation, 2763). +-define(wxMouseEvent_GetWheelDelta, 2764). +-define(wxMouseEvent_GetX, 2765). +-define(wxMouseEvent_GetY, 2766). +-define(wxMouseEvent_IsButton, 2767). +-define(wxMouseEvent_IsPageScroll, 2768). +-define(wxMouseEvent_Leaving, 2769). +-define(wxMouseEvent_LeftDClick, 2770). +-define(wxMouseEvent_LeftDown, 2771). +-define(wxMouseEvent_LeftIsDown, 2772). +-define(wxMouseEvent_LeftUp, 2773). +-define(wxMouseEvent_MetaDown, 2774). +-define(wxMouseEvent_MiddleDClick, 2775). +-define(wxMouseEvent_MiddleDown, 2776). +-define(wxMouseEvent_MiddleIsDown, 2777). +-define(wxMouseEvent_MiddleUp, 2778). +-define(wxMouseEvent_Moving, 2779). +-define(wxMouseEvent_RightDClick, 2780). +-define(wxMouseEvent_RightDown, 2781). +-define(wxMouseEvent_RightIsDown, 2782). +-define(wxMouseEvent_RightUp, 2783). +-define(wxMouseEvent_ShiftDown, 2784). +-define(wxSetCursorEvent_GetCursor, 2785). +-define(wxSetCursorEvent_GetX, 2786). +-define(wxSetCursorEvent_GetY, 2787). +-define(wxSetCursorEvent_HasCursor, 2788). +-define(wxSetCursorEvent_SetCursor, 2789). +-define(wxKeyEvent_AltDown, 2790). +-define(wxKeyEvent_CmdDown, 2791). +-define(wxKeyEvent_ControlDown, 2792). +-define(wxKeyEvent_GetKeyCode, 2793). +-define(wxKeyEvent_GetModifiers, 2794). +-define(wxKeyEvent_GetPosition, 2797). +-define(wxKeyEvent_GetRawKeyCode, 2798). +-define(wxKeyEvent_GetRawKeyFlags, 2799). +-define(wxKeyEvent_GetUnicodeKey, 2800). +-define(wxKeyEvent_GetX, 2801). +-define(wxKeyEvent_GetY, 2802). +-define(wxKeyEvent_HasModifiers, 2803). +-define(wxKeyEvent_MetaDown, 2804). +-define(wxKeyEvent_ShiftDown, 2805). +-define(wxSizeEvent_GetSize, 2806). +-define(wxMoveEvent_GetPosition, 2807). +-define(wxEraseEvent_GetDC, 2808). +-define(wxFocusEvent_GetWindow, 2809). +-define(wxChildFocusEvent_GetWindow, 2810). +-define(wxMenuEvent_GetMenu, 2811). +-define(wxMenuEvent_GetMenuId, 2812). +-define(wxMenuEvent_IsPopup, 2813). +-define(wxCloseEvent_CanVeto, 2814). +-define(wxCloseEvent_GetLoggingOff, 2815). +-define(wxCloseEvent_SetCanVeto, 2816). +-define(wxCloseEvent_SetLoggingOff, 2817). +-define(wxCloseEvent_Veto, 2818). +-define(wxShowEvent_SetShow, 2819). +-define(wxShowEvent_GetShow, 2820). +-define(wxIconizeEvent_Iconized, 2821). +-define(wxJoystickEvent_ButtonDown, 2822). +-define(wxJoystickEvent_ButtonIsDown, 2823). +-define(wxJoystickEvent_ButtonUp, 2824). +-define(wxJoystickEvent_GetButtonChange, 2825). +-define(wxJoystickEvent_GetButtonState, 2826). +-define(wxJoystickEvent_GetJoystick, 2827). +-define(wxJoystickEvent_GetPosition, 2828). +-define(wxJoystickEvent_GetZPosition, 2829). +-define(wxJoystickEvent_IsButton, 2830). +-define(wxJoystickEvent_IsMove, 2831). +-define(wxJoystickEvent_IsZMove, 2832). +-define(wxUpdateUIEvent_CanUpdate, 2833). +-define(wxUpdateUIEvent_Check, 2834). +-define(wxUpdateUIEvent_Enable, 2835). +-define(wxUpdateUIEvent_Show, 2836). +-define(wxUpdateUIEvent_GetChecked, 2837). +-define(wxUpdateUIEvent_GetEnabled, 2838). +-define(wxUpdateUIEvent_GetShown, 2839). +-define(wxUpdateUIEvent_GetSetChecked, 2840). +-define(wxUpdateUIEvent_GetSetEnabled, 2841). +-define(wxUpdateUIEvent_GetSetShown, 2842). +-define(wxUpdateUIEvent_GetSetText, 2843). +-define(wxUpdateUIEvent_GetText, 2844). +-define(wxUpdateUIEvent_GetMode, 2845). +-define(wxUpdateUIEvent_GetUpdateInterval, 2846). +-define(wxUpdateUIEvent_ResetUpdateTime, 2847). +-define(wxUpdateUIEvent_SetMode, 2848). +-define(wxUpdateUIEvent_SetText, 2849). +-define(wxUpdateUIEvent_SetUpdateInterval, 2850). +-define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2851). +-define(wxPaletteChangedEvent_SetChangedWindow, 2852). +-define(wxPaletteChangedEvent_GetChangedWindow, 2853). +-define(wxQueryNewPaletteEvent_SetPaletteRealized, 2854). +-define(wxQueryNewPaletteEvent_GetPaletteRealized, 2855). +-define(wxNavigationKeyEvent_GetDirection, 2856). +-define(wxNavigationKeyEvent_SetDirection, 2857). +-define(wxNavigationKeyEvent_IsWindowChange, 2858). +-define(wxNavigationKeyEvent_SetWindowChange, 2859). +-define(wxNavigationKeyEvent_IsFromTab, 2860). +-define(wxNavigationKeyEvent_SetFromTab, 2861). +-define(wxNavigationKeyEvent_GetCurrentFocus, 2862). +-define(wxNavigationKeyEvent_SetCurrentFocus, 2863). +-define(wxHelpEvent_GetOrigin, 2864). +-define(wxHelpEvent_GetPosition, 2865). +-define(wxHelpEvent_SetOrigin, 2866). +-define(wxHelpEvent_SetPosition, 2867). +-define(wxContextMenuEvent_GetPosition, 2868). +-define(wxContextMenuEvent_SetPosition, 2869). +-define(wxIdleEvent_CanSend, 2870). +-define(wxIdleEvent_GetMode, 2871). +-define(wxIdleEvent_RequestMore, 2872). +-define(wxIdleEvent_MoreRequested, 2873). +-define(wxIdleEvent_SetMode, 2874). +-define(wxGridEvent_AltDown, 2875). +-define(wxGridEvent_ControlDown, 2876). +-define(wxGridEvent_GetCol, 2877). +-define(wxGridEvent_GetPosition, 2878). +-define(wxGridEvent_GetRow, 2879). +-define(wxGridEvent_MetaDown, 2880). +-define(wxGridEvent_Selecting, 2881). +-define(wxGridEvent_ShiftDown, 2882). +-define(wxNotifyEvent_Allow, 2883). +-define(wxNotifyEvent_IsAllowed, 2884). +-define(wxNotifyEvent_Veto, 2885). +-define(wxSashEvent_GetEdge, 2886). +-define(wxSashEvent_GetDragRect, 2887). +-define(wxSashEvent_GetDragStatus, 2888). +-define(wxListEvent_GetCacheFrom, 2889). +-define(wxListEvent_GetCacheTo, 2890). +-define(wxListEvent_GetKeyCode, 2891). +-define(wxListEvent_GetIndex, 2892). +-define(wxListEvent_GetColumn, 2893). +-define(wxListEvent_GetPoint, 2894). +-define(wxListEvent_GetLabel, 2895). +-define(wxListEvent_GetText, 2896). +-define(wxListEvent_GetImage, 2897). +-define(wxListEvent_GetData, 2898). +-define(wxListEvent_GetMask, 2899). +-define(wxListEvent_GetItem, 2900). +-define(wxListEvent_IsEditCancelled, 2901). +-define(wxDateEvent_GetDate, 2902). +-define(wxCalendarEvent_GetWeekDay, 2903). +-define(wxFileDirPickerEvent_GetPath, 2904). +-define(wxColourPickerEvent_GetColour, 2905). +-define(wxFontPickerEvent_GetFont, 2906). +-define(wxStyledTextEvent_GetPosition, 2907). +-define(wxStyledTextEvent_GetKey, 2908). +-define(wxStyledTextEvent_GetModifiers, 2909). +-define(wxStyledTextEvent_GetModificationType, 2910). +-define(wxStyledTextEvent_GetText, 2911). +-define(wxStyledTextEvent_GetLength, 2912). +-define(wxStyledTextEvent_GetLinesAdded, 2913). +-define(wxStyledTextEvent_GetLine, 2914). +-define(wxStyledTextEvent_GetFoldLevelNow, 2915). +-define(wxStyledTextEvent_GetFoldLevelPrev, 2916). +-define(wxStyledTextEvent_GetMargin, 2917). +-define(wxStyledTextEvent_GetMessage, 2918). +-define(wxStyledTextEvent_GetWParam, 2919). +-define(wxStyledTextEvent_GetLParam, 2920). +-define(wxStyledTextEvent_GetListType, 2921). +-define(wxStyledTextEvent_GetX, 2922). +-define(wxStyledTextEvent_GetY, 2923). +-define(wxStyledTextEvent_GetDragText, 2924). +-define(wxStyledTextEvent_GetDragAllowMove, 2925). +-define(wxStyledTextEvent_GetDragResult, 2926). +-define(wxStyledTextEvent_GetShift, 2927). +-define(wxStyledTextEvent_GetControl, 2928). +-define(wxStyledTextEvent_GetAlt, 2929). +-define(utils_wxGetKeyState, 2930). +-define(utils_wxGetMousePosition, 2931). +-define(utils_wxGetMouseState, 2932). +-define(utils_wxSetDetectableAutoRepeat, 2933). +-define(utils_wxBell, 2934). +-define(utils_wxFindMenuItemId, 2935). +-define(utils_wxGenericFindWindowAtPoint, 2936). +-define(utils_wxFindWindowAtPoint, 2937). +-define(utils_wxBeginBusyCursor, 2938). +-define(utils_wxEndBusyCursor, 2939). +-define(utils_wxIsBusy, 2940). +-define(utils_wxShutdown, 2941). +-define(utils_wxShell, 2942). +-define(utils_wxLaunchDefaultBrowser, 2943). +-define(utils_wxGetEmailAddress, 2944). +-define(utils_wxGetUserId, 2945). +-define(utils_wxGetHomeDir, 2946). +-define(utils_wxNewId, 2947). +-define(utils_wxRegisterId, 2948). +-define(utils_wxGetCurrentId, 2949). +-define(utils_wxGetOsDescription, 2950). +-define(utils_wxIsPlatformLittleEndian, 2951). +-define(utils_wxIsPlatform64Bit, 2952). +-define(gdicmn_wxDisplaySize, 2953). +-define(gdicmn_wxSetCursor, 2954). +-define(wxPrintout_new, 2955). +-define(wxPrintout_destruct, 2956). +-define(wxPrintout_GetDC, 2957). +-define(wxPrintout_GetPageSizeMM, 2958). +-define(wxPrintout_GetPageSizePixels, 2959). +-define(wxPrintout_GetPaperRectPixels, 2960). +-define(wxPrintout_GetPPIPrinter, 2961). +-define(wxPrintout_GetPPIScreen, 2962). +-define(wxPrintout_GetTitle, 2963). +-define(wxPrintout_IsPreview, 2964). +-define(wxPrintout_FitThisSizeToPaper, 2965). +-define(wxPrintout_FitThisSizeToPage, 2966). +-define(wxPrintout_FitThisSizeToPageMargins, 2967). +-define(wxPrintout_MapScreenSizeToPaper, 2968). +-define(wxPrintout_MapScreenSizeToPage, 2969). +-define(wxPrintout_MapScreenSizeToPageMargins, 2970). +-define(wxPrintout_MapScreenSizeToDevice, 2971). +-define(wxPrintout_GetLogicalPaperRect, 2972). +-define(wxPrintout_GetLogicalPageRect, 2973). +-define(wxPrintout_GetLogicalPageMarginsRect, 2974). +-define(wxPrintout_SetLogicalOrigin, 2975). +-define(wxPrintout_OffsetLogicalOrigin, 2976). +-define(wxStyledTextCtrl_new_2, 2977). +-define(wxStyledTextCtrl_new_0, 2978). +-define(wxStyledTextCtrl_destruct, 2979). +-define(wxStyledTextCtrl_Create, 2980). +-define(wxStyledTextCtrl_AddText, 2981). +-define(wxStyledTextCtrl_AddStyledText, 2982). +-define(wxStyledTextCtrl_InsertText, 2983). +-define(wxStyledTextCtrl_ClearAll, 2984). +-define(wxStyledTextCtrl_ClearDocumentStyle, 2985). +-define(wxStyledTextCtrl_GetLength, 2986). +-define(wxStyledTextCtrl_GetCharAt, 2987). +-define(wxStyledTextCtrl_GetCurrentPos, 2988). +-define(wxStyledTextCtrl_GetAnchor, 2989). +-define(wxStyledTextCtrl_GetStyleAt, 2990). +-define(wxStyledTextCtrl_Redo, 2991). +-define(wxStyledTextCtrl_SetUndoCollection, 2992). +-define(wxStyledTextCtrl_SelectAll, 2993). +-define(wxStyledTextCtrl_SetSavePoint, 2994). +-define(wxStyledTextCtrl_GetStyledText, 2995). +-define(wxStyledTextCtrl_CanRedo, 2996). +-define(wxStyledTextCtrl_MarkerLineFromHandle, 2997). +-define(wxStyledTextCtrl_MarkerDeleteHandle, 2998). +-define(wxStyledTextCtrl_GetUndoCollection, 2999). +-define(wxStyledTextCtrl_GetViewWhiteSpace, 3000). +-define(wxStyledTextCtrl_SetViewWhiteSpace, 3001). +-define(wxStyledTextCtrl_PositionFromPoint, 3002). +-define(wxStyledTextCtrl_PositionFromPointClose, 3003). +-define(wxStyledTextCtrl_GotoLine, 3004). +-define(wxStyledTextCtrl_GotoPos, 3005). +-define(wxStyledTextCtrl_SetAnchor, 3006). +-define(wxStyledTextCtrl_GetCurLine, 3007). +-define(wxStyledTextCtrl_GetEndStyled, 3008). +-define(wxStyledTextCtrl_ConvertEOLs, 3009). +-define(wxStyledTextCtrl_GetEOLMode, 3010). +-define(wxStyledTextCtrl_SetEOLMode, 3011). +-define(wxStyledTextCtrl_StartStyling, 3012). +-define(wxStyledTextCtrl_SetStyling, 3013). +-define(wxStyledTextCtrl_GetBufferedDraw, 3014). +-define(wxStyledTextCtrl_SetBufferedDraw, 3015). +-define(wxStyledTextCtrl_SetTabWidth, 3016). +-define(wxStyledTextCtrl_GetTabWidth, 3017). +-define(wxStyledTextCtrl_SetCodePage, 3018). +-define(wxStyledTextCtrl_MarkerDefine, 3019). +-define(wxStyledTextCtrl_MarkerSetForeground, 3020). +-define(wxStyledTextCtrl_MarkerSetBackground, 3021). +-define(wxStyledTextCtrl_MarkerAdd, 3022). +-define(wxStyledTextCtrl_MarkerDelete, 3023). +-define(wxStyledTextCtrl_MarkerDeleteAll, 3024). +-define(wxStyledTextCtrl_MarkerGet, 3025). +-define(wxStyledTextCtrl_MarkerNext, 3026). +-define(wxStyledTextCtrl_MarkerPrevious, 3027). +-define(wxStyledTextCtrl_MarkerDefineBitmap, 3028). +-define(wxStyledTextCtrl_MarkerAddSet, 3029). +-define(wxStyledTextCtrl_MarkerSetAlpha, 3030). +-define(wxStyledTextCtrl_SetMarginType, 3031). +-define(wxStyledTextCtrl_GetMarginType, 3032). +-define(wxStyledTextCtrl_SetMarginWidth, 3033). +-define(wxStyledTextCtrl_GetMarginWidth, 3034). +-define(wxStyledTextCtrl_SetMarginMask, 3035). +-define(wxStyledTextCtrl_GetMarginMask, 3036). +-define(wxStyledTextCtrl_SetMarginSensitive, 3037). +-define(wxStyledTextCtrl_GetMarginSensitive, 3038). +-define(wxStyledTextCtrl_StyleClearAll, 3039). +-define(wxStyledTextCtrl_StyleSetForeground, 3040). +-define(wxStyledTextCtrl_StyleSetBackground, 3041). +-define(wxStyledTextCtrl_StyleSetBold, 3042). +-define(wxStyledTextCtrl_StyleSetItalic, 3043). +-define(wxStyledTextCtrl_StyleSetSize, 3044). +-define(wxStyledTextCtrl_StyleSetFaceName, 3045). +-define(wxStyledTextCtrl_StyleSetEOLFilled, 3046). +-define(wxStyledTextCtrl_StyleResetDefault, 3047). +-define(wxStyledTextCtrl_StyleSetUnderline, 3048). +-define(wxStyledTextCtrl_StyleSetCase, 3049). +-define(wxStyledTextCtrl_StyleSetHotSpot, 3050). +-define(wxStyledTextCtrl_SetSelForeground, 3051). +-define(wxStyledTextCtrl_SetSelBackground, 3052). +-define(wxStyledTextCtrl_GetSelAlpha, 3053). +-define(wxStyledTextCtrl_SetSelAlpha, 3054). +-define(wxStyledTextCtrl_SetCaretForeground, 3055). +-define(wxStyledTextCtrl_CmdKeyAssign, 3056). +-define(wxStyledTextCtrl_CmdKeyClear, 3057). +-define(wxStyledTextCtrl_CmdKeyClearAll, 3058). +-define(wxStyledTextCtrl_SetStyleBytes, 3059). +-define(wxStyledTextCtrl_StyleSetVisible, 3060). +-define(wxStyledTextCtrl_GetCaretPeriod, 3061). +-define(wxStyledTextCtrl_SetCaretPeriod, 3062). +-define(wxStyledTextCtrl_SetWordChars, 3063). +-define(wxStyledTextCtrl_BeginUndoAction, 3064). +-define(wxStyledTextCtrl_EndUndoAction, 3065). +-define(wxStyledTextCtrl_IndicatorSetStyle, 3066). +-define(wxStyledTextCtrl_IndicatorGetStyle, 3067). +-define(wxStyledTextCtrl_IndicatorSetForeground, 3068). +-define(wxStyledTextCtrl_IndicatorGetForeground, 3069). +-define(wxStyledTextCtrl_SetWhitespaceForeground, 3070). +-define(wxStyledTextCtrl_SetWhitespaceBackground, 3071). +-define(wxStyledTextCtrl_GetStyleBits, 3072). +-define(wxStyledTextCtrl_SetLineState, 3073). +-define(wxStyledTextCtrl_GetLineState, 3074). +-define(wxStyledTextCtrl_GetMaxLineState, 3075). +-define(wxStyledTextCtrl_GetCaretLineVisible, 3076). +-define(wxStyledTextCtrl_SetCaretLineVisible, 3077). +-define(wxStyledTextCtrl_GetCaretLineBackground, 3078). +-define(wxStyledTextCtrl_SetCaretLineBackground, 3079). +-define(wxStyledTextCtrl_AutoCompShow, 3080). +-define(wxStyledTextCtrl_AutoCompCancel, 3081). +-define(wxStyledTextCtrl_AutoCompActive, 3082). +-define(wxStyledTextCtrl_AutoCompPosStart, 3083). +-define(wxStyledTextCtrl_AutoCompComplete, 3084). +-define(wxStyledTextCtrl_AutoCompStops, 3085). +-define(wxStyledTextCtrl_AutoCompSetSeparator, 3086). +-define(wxStyledTextCtrl_AutoCompGetSeparator, 3087). +-define(wxStyledTextCtrl_AutoCompSelect, 3088). +-define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3089). +-define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3090). +-define(wxStyledTextCtrl_AutoCompSetFillUps, 3091). +-define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3092). +-define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3093). +-define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3094). +-define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3095). +-define(wxStyledTextCtrl_UserListShow, 3096). +-define(wxStyledTextCtrl_AutoCompSetAutoHide, 3097). +-define(wxStyledTextCtrl_AutoCompGetAutoHide, 3098). +-define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3099). +-define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3100). +-define(wxStyledTextCtrl_RegisterImage, 3101). +-define(wxStyledTextCtrl_ClearRegisteredImages, 3102). +-define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3103). +-define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3104). +-define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3105). +-define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3106). +-define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3107). +-define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3108). +-define(wxStyledTextCtrl_SetIndent, 3109). +-define(wxStyledTextCtrl_GetIndent, 3110). +-define(wxStyledTextCtrl_SetUseTabs, 3111). +-define(wxStyledTextCtrl_GetUseTabs, 3112). +-define(wxStyledTextCtrl_SetLineIndentation, 3113). +-define(wxStyledTextCtrl_GetLineIndentation, 3114). +-define(wxStyledTextCtrl_GetLineIndentPosition, 3115). +-define(wxStyledTextCtrl_GetColumn, 3116). +-define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3117). +-define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3118). +-define(wxStyledTextCtrl_SetIndentationGuides, 3119). +-define(wxStyledTextCtrl_GetIndentationGuides, 3120). +-define(wxStyledTextCtrl_SetHighlightGuide, 3121). +-define(wxStyledTextCtrl_GetHighlightGuide, 3122). +-define(wxStyledTextCtrl_GetLineEndPosition, 3123). +-define(wxStyledTextCtrl_GetCodePage, 3124). +-define(wxStyledTextCtrl_GetCaretForeground, 3125). +-define(wxStyledTextCtrl_GetReadOnly, 3126). +-define(wxStyledTextCtrl_SetCurrentPos, 3127). +-define(wxStyledTextCtrl_SetSelectionStart, 3128). +-define(wxStyledTextCtrl_GetSelectionStart, 3129). +-define(wxStyledTextCtrl_SetSelectionEnd, 3130). +-define(wxStyledTextCtrl_GetSelectionEnd, 3131). +-define(wxStyledTextCtrl_SetPrintMagnification, 3132). +-define(wxStyledTextCtrl_GetPrintMagnification, 3133). +-define(wxStyledTextCtrl_SetPrintColourMode, 3134). +-define(wxStyledTextCtrl_GetPrintColourMode, 3135). +-define(wxStyledTextCtrl_FindText, 3136). +-define(wxStyledTextCtrl_FormatRange, 3137). +-define(wxStyledTextCtrl_GetFirstVisibleLine, 3138). +-define(wxStyledTextCtrl_GetLine, 3139). +-define(wxStyledTextCtrl_GetLineCount, 3140). +-define(wxStyledTextCtrl_SetMarginLeft, 3141). +-define(wxStyledTextCtrl_GetMarginLeft, 3142). +-define(wxStyledTextCtrl_SetMarginRight, 3143). +-define(wxStyledTextCtrl_GetMarginRight, 3144). +-define(wxStyledTextCtrl_GetModify, 3145). +-define(wxStyledTextCtrl_SetSelection, 3146). +-define(wxStyledTextCtrl_GetSelectedText, 3147). +-define(wxStyledTextCtrl_GetTextRange, 3148). +-define(wxStyledTextCtrl_HideSelection, 3149). +-define(wxStyledTextCtrl_LineFromPosition, 3150). +-define(wxStyledTextCtrl_PositionFromLine, 3151). +-define(wxStyledTextCtrl_LineScroll, 3152). +-define(wxStyledTextCtrl_EnsureCaretVisible, 3153). +-define(wxStyledTextCtrl_ReplaceSelection, 3154). +-define(wxStyledTextCtrl_SetReadOnly, 3155). +-define(wxStyledTextCtrl_CanPaste, 3156). +-define(wxStyledTextCtrl_CanUndo, 3157). +-define(wxStyledTextCtrl_EmptyUndoBuffer, 3158). +-define(wxStyledTextCtrl_Undo, 3159). +-define(wxStyledTextCtrl_Cut, 3160). +-define(wxStyledTextCtrl_Copy, 3161). +-define(wxStyledTextCtrl_Paste, 3162). +-define(wxStyledTextCtrl_Clear, 3163). +-define(wxStyledTextCtrl_SetText, 3164). +-define(wxStyledTextCtrl_GetText, 3165). +-define(wxStyledTextCtrl_GetTextLength, 3166). +-define(wxStyledTextCtrl_GetOvertype, 3167). +-define(wxStyledTextCtrl_SetCaretWidth, 3168). +-define(wxStyledTextCtrl_GetCaretWidth, 3169). +-define(wxStyledTextCtrl_SetTargetStart, 3170). +-define(wxStyledTextCtrl_GetTargetStart, 3171). +-define(wxStyledTextCtrl_SetTargetEnd, 3172). +-define(wxStyledTextCtrl_GetTargetEnd, 3173). +-define(wxStyledTextCtrl_ReplaceTarget, 3174). +-define(wxStyledTextCtrl_SearchInTarget, 3175). +-define(wxStyledTextCtrl_SetSearchFlags, 3176). +-define(wxStyledTextCtrl_GetSearchFlags, 3177). +-define(wxStyledTextCtrl_CallTipShow, 3178). +-define(wxStyledTextCtrl_CallTipCancel, 3179). +-define(wxStyledTextCtrl_CallTipActive, 3180). +-define(wxStyledTextCtrl_CallTipPosAtStart, 3181). +-define(wxStyledTextCtrl_CallTipSetHighlight, 3182). +-define(wxStyledTextCtrl_CallTipSetBackground, 3183). +-define(wxStyledTextCtrl_CallTipSetForeground, 3184). +-define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3185). +-define(wxStyledTextCtrl_CallTipUseStyle, 3186). +-define(wxStyledTextCtrl_VisibleFromDocLine, 3187). +-define(wxStyledTextCtrl_DocLineFromVisible, 3188). +-define(wxStyledTextCtrl_WrapCount, 3189). +-define(wxStyledTextCtrl_SetFoldLevel, 3190). +-define(wxStyledTextCtrl_GetFoldLevel, 3191). +-define(wxStyledTextCtrl_GetLastChild, 3192). +-define(wxStyledTextCtrl_GetFoldParent, 3193). +-define(wxStyledTextCtrl_ShowLines, 3194). +-define(wxStyledTextCtrl_HideLines, 3195). +-define(wxStyledTextCtrl_GetLineVisible, 3196). +-define(wxStyledTextCtrl_SetFoldExpanded, 3197). +-define(wxStyledTextCtrl_GetFoldExpanded, 3198). +-define(wxStyledTextCtrl_ToggleFold, 3199). +-define(wxStyledTextCtrl_EnsureVisible, 3200). +-define(wxStyledTextCtrl_SetFoldFlags, 3201). +-define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3202). +-define(wxStyledTextCtrl_SetTabIndents, 3203). +-define(wxStyledTextCtrl_GetTabIndents, 3204). +-define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3205). +-define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3206). +-define(wxStyledTextCtrl_SetMouseDwellTime, 3207). +-define(wxStyledTextCtrl_GetMouseDwellTime, 3208). +-define(wxStyledTextCtrl_WordStartPosition, 3209). +-define(wxStyledTextCtrl_WordEndPosition, 3210). +-define(wxStyledTextCtrl_SetWrapMode, 3211). +-define(wxStyledTextCtrl_GetWrapMode, 3212). +-define(wxStyledTextCtrl_SetWrapVisualFlags, 3213). +-define(wxStyledTextCtrl_GetWrapVisualFlags, 3214). +-define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3215). +-define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3216). +-define(wxStyledTextCtrl_SetWrapStartIndent, 3217). +-define(wxStyledTextCtrl_GetWrapStartIndent, 3218). +-define(wxStyledTextCtrl_SetLayoutCache, 3219). +-define(wxStyledTextCtrl_GetLayoutCache, 3220). +-define(wxStyledTextCtrl_SetScrollWidth, 3221). +-define(wxStyledTextCtrl_GetScrollWidth, 3222). +-define(wxStyledTextCtrl_TextWidth, 3223). +-define(wxStyledTextCtrl_GetEndAtLastLine, 3224). +-define(wxStyledTextCtrl_TextHeight, 3225). +-define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3226). +-define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3227). +-define(wxStyledTextCtrl_AppendText, 3228). +-define(wxStyledTextCtrl_GetTwoPhaseDraw, 3229). +-define(wxStyledTextCtrl_SetTwoPhaseDraw, 3230). +-define(wxStyledTextCtrl_TargetFromSelection, 3231). +-define(wxStyledTextCtrl_LinesJoin, 3232). +-define(wxStyledTextCtrl_LinesSplit, 3233). +-define(wxStyledTextCtrl_SetFoldMarginColour, 3234). +-define(wxStyledTextCtrl_SetFoldMarginHiColour, 3235). +-define(wxStyledTextCtrl_LineDown, 3236). +-define(wxStyledTextCtrl_LineDownExtend, 3237). +-define(wxStyledTextCtrl_LineUp, 3238). +-define(wxStyledTextCtrl_LineUpExtend, 3239). +-define(wxStyledTextCtrl_CharLeft, 3240). +-define(wxStyledTextCtrl_CharLeftExtend, 3241). +-define(wxStyledTextCtrl_CharRight, 3242). +-define(wxStyledTextCtrl_CharRightExtend, 3243). +-define(wxStyledTextCtrl_WordLeft, 3244). +-define(wxStyledTextCtrl_WordLeftExtend, 3245). +-define(wxStyledTextCtrl_WordRight, 3246). +-define(wxStyledTextCtrl_WordRightExtend, 3247). +-define(wxStyledTextCtrl_Home, 3248). +-define(wxStyledTextCtrl_HomeExtend, 3249). +-define(wxStyledTextCtrl_LineEnd, 3250). +-define(wxStyledTextCtrl_LineEndExtend, 3251). +-define(wxStyledTextCtrl_DocumentStart, 3252). +-define(wxStyledTextCtrl_DocumentStartExtend, 3253). +-define(wxStyledTextCtrl_DocumentEnd, 3254). +-define(wxStyledTextCtrl_DocumentEndExtend, 3255). +-define(wxStyledTextCtrl_PageUp, 3256). +-define(wxStyledTextCtrl_PageUpExtend, 3257). +-define(wxStyledTextCtrl_PageDown, 3258). +-define(wxStyledTextCtrl_PageDownExtend, 3259). +-define(wxStyledTextCtrl_EditToggleOvertype, 3260). +-define(wxStyledTextCtrl_Cancel, 3261). +-define(wxStyledTextCtrl_DeleteBack, 3262). +-define(wxStyledTextCtrl_Tab, 3263). +-define(wxStyledTextCtrl_BackTab, 3264). +-define(wxStyledTextCtrl_NewLine, 3265). +-define(wxStyledTextCtrl_FormFeed, 3266). +-define(wxStyledTextCtrl_VCHome, 3267). +-define(wxStyledTextCtrl_VCHomeExtend, 3268). +-define(wxStyledTextCtrl_ZoomIn, 3269). +-define(wxStyledTextCtrl_ZoomOut, 3270). +-define(wxStyledTextCtrl_DelWordLeft, 3271). +-define(wxStyledTextCtrl_DelWordRight, 3272). +-define(wxStyledTextCtrl_LineCut, 3273). +-define(wxStyledTextCtrl_LineDelete, 3274). +-define(wxStyledTextCtrl_LineTranspose, 3275). +-define(wxStyledTextCtrl_LineDuplicate, 3276). +-define(wxStyledTextCtrl_LowerCase, 3277). +-define(wxStyledTextCtrl_UpperCase, 3278). +-define(wxStyledTextCtrl_LineScrollDown, 3279). +-define(wxStyledTextCtrl_LineScrollUp, 3280). +-define(wxStyledTextCtrl_DeleteBackNotLine, 3281). +-define(wxStyledTextCtrl_HomeDisplay, 3282). +-define(wxStyledTextCtrl_HomeDisplayExtend, 3283). +-define(wxStyledTextCtrl_LineEndDisplay, 3284). +-define(wxStyledTextCtrl_LineEndDisplayExtend, 3285). +-define(wxStyledTextCtrl_HomeWrapExtend, 3286). +-define(wxStyledTextCtrl_LineEndWrap, 3287). +-define(wxStyledTextCtrl_LineEndWrapExtend, 3288). +-define(wxStyledTextCtrl_VCHomeWrap, 3289). +-define(wxStyledTextCtrl_VCHomeWrapExtend, 3290). +-define(wxStyledTextCtrl_LineCopy, 3291). +-define(wxStyledTextCtrl_MoveCaretInsideView, 3292). +-define(wxStyledTextCtrl_LineLength, 3293). +-define(wxStyledTextCtrl_BraceHighlight, 3294). +-define(wxStyledTextCtrl_BraceBadLight, 3295). +-define(wxStyledTextCtrl_BraceMatch, 3296). +-define(wxStyledTextCtrl_GetViewEOL, 3297). +-define(wxStyledTextCtrl_SetViewEOL, 3298). +-define(wxStyledTextCtrl_SetModEventMask, 3299). +-define(wxStyledTextCtrl_GetEdgeColumn, 3300). +-define(wxStyledTextCtrl_SetEdgeColumn, 3301). +-define(wxStyledTextCtrl_SetEdgeMode, 3302). +-define(wxStyledTextCtrl_GetEdgeMode, 3303). +-define(wxStyledTextCtrl_GetEdgeColour, 3304). +-define(wxStyledTextCtrl_SetEdgeColour, 3305). +-define(wxStyledTextCtrl_SearchAnchor, 3306). +-define(wxStyledTextCtrl_SearchNext, 3307). +-define(wxStyledTextCtrl_SearchPrev, 3308). +-define(wxStyledTextCtrl_LinesOnScreen, 3309). +-define(wxStyledTextCtrl_UsePopUp, 3310). +-define(wxStyledTextCtrl_SelectionIsRectangle, 3311). +-define(wxStyledTextCtrl_SetZoom, 3312). +-define(wxStyledTextCtrl_GetZoom, 3313). +-define(wxStyledTextCtrl_GetModEventMask, 3314). +-define(wxStyledTextCtrl_SetSTCFocus, 3315). +-define(wxStyledTextCtrl_GetSTCFocus, 3316). +-define(wxStyledTextCtrl_SetStatus, 3317). +-define(wxStyledTextCtrl_GetStatus, 3318). +-define(wxStyledTextCtrl_SetMouseDownCaptures, 3319). +-define(wxStyledTextCtrl_GetMouseDownCaptures, 3320). +-define(wxStyledTextCtrl_SetSTCCursor, 3321). +-define(wxStyledTextCtrl_GetSTCCursor, 3322). +-define(wxStyledTextCtrl_SetControlCharSymbol, 3323). +-define(wxStyledTextCtrl_GetControlCharSymbol, 3324). +-define(wxStyledTextCtrl_WordPartLeft, 3325). +-define(wxStyledTextCtrl_WordPartLeftExtend, 3326). +-define(wxStyledTextCtrl_WordPartRight, 3327). +-define(wxStyledTextCtrl_WordPartRightExtend, 3328). +-define(wxStyledTextCtrl_SetVisiblePolicy, 3329). +-define(wxStyledTextCtrl_DelLineLeft, 3330). +-define(wxStyledTextCtrl_DelLineRight, 3331). +-define(wxStyledTextCtrl_GetXOffset, 3332). +-define(wxStyledTextCtrl_ChooseCaretX, 3333). +-define(wxStyledTextCtrl_SetXCaretPolicy, 3334). +-define(wxStyledTextCtrl_SetYCaretPolicy, 3335). +-define(wxStyledTextCtrl_GetPrintWrapMode, 3336). +-define(wxStyledTextCtrl_SetHotspotActiveForeground, 3337). +-define(wxStyledTextCtrl_SetHotspotActiveBackground, 3338). +-define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3339). +-define(wxStyledTextCtrl_SetHotspotSingleLine, 3340). +-define(wxStyledTextCtrl_ParaDownExtend, 3341). +-define(wxStyledTextCtrl_ParaUp, 3342). +-define(wxStyledTextCtrl_ParaUpExtend, 3343). +-define(wxStyledTextCtrl_PositionBefore, 3344). +-define(wxStyledTextCtrl_PositionAfter, 3345). +-define(wxStyledTextCtrl_CopyRange, 3346). +-define(wxStyledTextCtrl_CopyText, 3347). +-define(wxStyledTextCtrl_SetSelectionMode, 3348). +-define(wxStyledTextCtrl_GetSelectionMode, 3349). +-define(wxStyledTextCtrl_LineDownRectExtend, 3350). +-define(wxStyledTextCtrl_LineUpRectExtend, 3351). +-define(wxStyledTextCtrl_CharLeftRectExtend, 3352). +-define(wxStyledTextCtrl_CharRightRectExtend, 3353). +-define(wxStyledTextCtrl_HomeRectExtend, 3354). +-define(wxStyledTextCtrl_VCHomeRectExtend, 3355). +-define(wxStyledTextCtrl_LineEndRectExtend, 3356). +-define(wxStyledTextCtrl_PageUpRectExtend, 3357). +-define(wxStyledTextCtrl_PageDownRectExtend, 3358). +-define(wxStyledTextCtrl_StutteredPageUp, 3359). +-define(wxStyledTextCtrl_StutteredPageUpExtend, 3360). +-define(wxStyledTextCtrl_StutteredPageDown, 3361). +-define(wxStyledTextCtrl_StutteredPageDownExtend, 3362). +-define(wxStyledTextCtrl_WordLeftEnd, 3363). +-define(wxStyledTextCtrl_WordLeftEndExtend, 3364). +-define(wxStyledTextCtrl_WordRightEnd, 3365). +-define(wxStyledTextCtrl_WordRightEndExtend, 3366). +-define(wxStyledTextCtrl_SetWhitespaceChars, 3367). +-define(wxStyledTextCtrl_SetCharsDefault, 3368). +-define(wxStyledTextCtrl_AutoCompGetCurrent, 3369). +-define(wxStyledTextCtrl_Allocate, 3370). +-define(wxStyledTextCtrl_FindColumn, 3371). +-define(wxStyledTextCtrl_GetCaretSticky, 3372). +-define(wxStyledTextCtrl_SetCaretSticky, 3373). +-define(wxStyledTextCtrl_ToggleCaretSticky, 3374). +-define(wxStyledTextCtrl_SetPasteConvertEndings, 3375). +-define(wxStyledTextCtrl_GetPasteConvertEndings, 3376). +-define(wxStyledTextCtrl_SelectionDuplicate, 3377). +-define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3378). +-define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3379). +-define(wxStyledTextCtrl_StartRecord, 3380). +-define(wxStyledTextCtrl_StopRecord, 3381). +-define(wxStyledTextCtrl_SetLexer, 3382). +-define(wxStyledTextCtrl_GetLexer, 3383). +-define(wxStyledTextCtrl_Colourise, 3384). +-define(wxStyledTextCtrl_SetProperty, 3385). +-define(wxStyledTextCtrl_SetKeyWords, 3386). +-define(wxStyledTextCtrl_SetLexerLanguage, 3387). +-define(wxStyledTextCtrl_GetProperty, 3388). +-define(wxStyledTextCtrl_GetStyleBitsNeeded, 3389). +-define(wxStyledTextCtrl_GetCurrentLine, 3390). +-define(wxStyledTextCtrl_StyleSetSpec, 3391). +-define(wxStyledTextCtrl_StyleSetFont, 3392). +-define(wxStyledTextCtrl_StyleSetFontAttr, 3393). +-define(wxStyledTextCtrl_StyleSetCharacterSet, 3394). +-define(wxStyledTextCtrl_StyleSetFontEncoding, 3395). +-define(wxStyledTextCtrl_CmdKeyExecute, 3396). +-define(wxStyledTextCtrl_SetMargins, 3397). +-define(wxStyledTextCtrl_GetSelection, 3398). +-define(wxStyledTextCtrl_PointFromPosition, 3399). +-define(wxStyledTextCtrl_ScrollToLine, 3400). +-define(wxStyledTextCtrl_ScrollToColumn, 3401). +-define(wxStyledTextCtrl_SetVScrollBar, 3402). +-define(wxStyledTextCtrl_SetHScrollBar, 3403). +-define(wxStyledTextCtrl_GetLastKeydownProcessed, 3404). +-define(wxStyledTextCtrl_SetLastKeydownProcessed, 3405). +-define(wxStyledTextCtrl_SaveFile, 3406). +-define(wxStyledTextCtrl_LoadFile, 3407). +-define(wxStyledTextCtrl_DoDragOver, 3408). +-define(wxStyledTextCtrl_DoDropText, 3409). +-define(wxStyledTextCtrl_GetUseAntiAliasing, 3410). +-define(wxStyledTextCtrl_AddTextRaw, 3411). +-define(wxStyledTextCtrl_InsertTextRaw, 3412). +-define(wxStyledTextCtrl_GetCurLineRaw, 3413). +-define(wxStyledTextCtrl_GetLineRaw, 3414). +-define(wxStyledTextCtrl_GetSelectedTextRaw, 3415). +-define(wxStyledTextCtrl_GetTextRangeRaw, 3416). +-define(wxStyledTextCtrl_SetTextRaw, 3417). +-define(wxStyledTextCtrl_GetTextRaw, 3418). +-define(wxStyledTextCtrl_AppendTextRaw, 3419). +-define(wxArtProvider_GetBitmap, 3420). +-define(wxArtProvider_GetIcon, 3421). +-define(wxTreeEvent_GetKeyCode, 3422). +-define(wxTreeEvent_GetItem, 3423). +-define(wxTreeEvent_GetKeyEvent, 3424). +-define(wxTreeEvent_GetLabel, 3425). +-define(wxTreeEvent_GetOldItem, 3426). +-define(wxTreeEvent_GetPoint, 3427). +-define(wxTreeEvent_IsEditCancelled, 3428). +-define(wxTreeEvent_SetToolTip, 3429). +-define(wxNotebookEvent_GetOldSelection, 3430). +-define(wxNotebookEvent_GetSelection, 3431). +-define(wxNotebookEvent_SetOldSelection, 3432). +-define(wxNotebookEvent_SetSelection, 3433). +-define(wxFileDataObject_new, 3434). +-define(wxFileDataObject_AddFile, 3435). +-define(wxFileDataObject_GetFilenames, 3436). +-define(wxFileDataObject_destroy, 3437). +-define(wxTextDataObject_new, 3438). +-define(wxTextDataObject_GetTextLength, 3439). +-define(wxTextDataObject_GetText, 3440). +-define(wxTextDataObject_SetText, 3441). +-define(wxTextDataObject_destroy, 3442). +-define(wxBitmapDataObject_new_1_1, 3443). +-define(wxBitmapDataObject_new_1_0, 3444). +-define(wxBitmapDataObject_GetBitmap, 3445). +-define(wxBitmapDataObject_SetBitmap, 3446). +-define(wxBitmapDataObject_destroy, 3447). +-define(wxClipboard_new, 3449). +-define(wxClipboard_destruct, 3450). +-define(wxClipboard_AddData, 3451). +-define(wxClipboard_Clear, 3452). +-define(wxClipboard_Close, 3453). +-define(wxClipboard_Flush, 3454). +-define(wxClipboard_GetData, 3455). +-define(wxClipboard_IsOpened, 3456). +-define(wxClipboard_Open, 3457). +-define(wxClipboard_SetData, 3458). +-define(wxClipboard_UsePrimarySelection, 3460). +-define(wxClipboard_IsSupported, 3461). +-define(wxClipboard_Get, 3462). +-define(wxSpinEvent_GetPosition, 3463). +-define(wxSpinEvent_SetPosition, 3464). +-define(wxSplitterWindow_new_0, 3465). +-define(wxSplitterWindow_new_2, 3466). +-define(wxSplitterWindow_destruct, 3467). +-define(wxSplitterWindow_Create, 3468). +-define(wxSplitterWindow_GetMinimumPaneSize, 3469). +-define(wxSplitterWindow_GetSashGravity, 3470). +-define(wxSplitterWindow_GetSashPosition, 3471). +-define(wxSplitterWindow_GetSplitMode, 3472). +-define(wxSplitterWindow_GetWindow1, 3473). +-define(wxSplitterWindow_GetWindow2, 3474). +-define(wxSplitterWindow_Initialize, 3475). +-define(wxSplitterWindow_IsSplit, 3476). +-define(wxSplitterWindow_ReplaceWindow, 3477). +-define(wxSplitterWindow_SetSashGravity, 3478). +-define(wxSplitterWindow_SetSashPosition, 3479). +-define(wxSplitterWindow_SetSashSize, 3480). +-define(wxSplitterWindow_SetMinimumPaneSize, 3481). +-define(wxSplitterWindow_SetSplitMode, 3482). +-define(wxSplitterWindow_SplitHorizontally, 3483). +-define(wxSplitterWindow_SplitVertically, 3484). +-define(wxSplitterWindow_Unsplit, 3485). +-define(wxSplitterWindow_UpdateSize, 3486). +-define(wxSplitterEvent_GetSashPosition, 3487). +-define(wxSplitterEvent_GetX, 3488). +-define(wxSplitterEvent_GetY, 3489). +-define(wxSplitterEvent_GetWindowBeingRemoved, 3490). +-define(wxSplitterEvent_SetSashPosition, 3491). +-define(wxHtmlWindow_new_0, 3492). +-define(wxHtmlWindow_new_2, 3493). +-define(wxHtmlWindow_AppendToPage, 3494). +-define(wxHtmlWindow_GetOpenedAnchor, 3495). +-define(wxHtmlWindow_GetOpenedPage, 3496). +-define(wxHtmlWindow_GetOpenedPageTitle, 3497). +-define(wxHtmlWindow_GetRelatedFrame, 3498). +-define(wxHtmlWindow_HistoryBack, 3499). +-define(wxHtmlWindow_HistoryCanBack, 3500). +-define(wxHtmlWindow_HistoryCanForward, 3501). +-define(wxHtmlWindow_HistoryClear, 3502). +-define(wxHtmlWindow_HistoryForward, 3503). +-define(wxHtmlWindow_LoadFile, 3504). +-define(wxHtmlWindow_LoadPage, 3505). +-define(wxHtmlWindow_SelectAll, 3506). +-define(wxHtmlWindow_SelectionToText, 3507). +-define(wxHtmlWindow_SelectLine, 3508). +-define(wxHtmlWindow_SelectWord, 3509). +-define(wxHtmlWindow_SetBorders, 3510). +-define(wxHtmlWindow_SetFonts, 3511). +-define(wxHtmlWindow_SetPage, 3512). +-define(wxHtmlWindow_SetRelatedFrame, 3513). +-define(wxHtmlWindow_SetRelatedStatusBar, 3514). +-define(wxHtmlWindow_ToText, 3515). +-define(wxHtmlWindow_destroy, 3516). +-define(wxHtmlLinkEvent_GetLinkInfo, 3517). +-define(wxSystemSettings_GetColour, 3518). +-define(wxSystemSettings_GetFont, 3519). +-define(wxSystemSettings_GetMetric, 3520). +-define(wxSystemSettings_GetScreenType, 3521). +-define(wxSystemOptions_GetOption, 3522). +-define(wxSystemOptions_GetOptionInt, 3523). +-define(wxSystemOptions_HasOption, 3524). +-define(wxSystemOptions_IsFalse, 3525). +-define(wxSystemOptions_SetOption_2_1, 3526). +-define(wxSystemOptions_SetOption_2_0, 3527). +-define(wxAuiNotebookEvent_SetSelection, 3528). +-define(wxAuiNotebookEvent_GetSelection, 3529). +-define(wxAuiNotebookEvent_SetOldSelection, 3530). +-define(wxAuiNotebookEvent_GetOldSelection, 3531). +-define(wxAuiNotebookEvent_SetDragSource, 3532). +-define(wxAuiNotebookEvent_GetDragSource, 3533). +-define(wxAuiManagerEvent_SetManager, 3534). +-define(wxAuiManagerEvent_GetManager, 3535). +-define(wxAuiManagerEvent_SetPane, 3536). +-define(wxAuiManagerEvent_GetPane, 3537). +-define(wxAuiManagerEvent_SetButton, 3538). +-define(wxAuiManagerEvent_GetButton, 3539). +-define(wxAuiManagerEvent_SetDC, 3540). +-define(wxAuiManagerEvent_GetDC, 3541). +-define(wxAuiManagerEvent_Veto, 3542). +-define(wxAuiManagerEvent_GetVeto, 3543). +-define(wxAuiManagerEvent_SetCanVeto, 3544). +-define(wxAuiManagerEvent_CanVeto, 3545). +-define(wxLogNull_new, 3546). +-define(wxLogNull_destroy, 3547). +-define(wxTaskBarIcon_new, 3548). +-define(wxTaskBarIcon_destruct, 3549). +-define(wxTaskBarIcon_PopupMenu, 3550). +-define(wxTaskBarIcon_RemoveIcon, 3551). +-define(wxTaskBarIcon_SetIcon, 3552). +-define(wxLocale_new_0, 3553). +-define(wxLocale_new_2, 3555). +-define(wxLocale_destruct, 3556). +-define(wxLocale_Init, 3558). +-define(wxLocale_AddCatalog_1, 3559). +-define(wxLocale_AddCatalog_3, 3560). +-define(wxLocale_AddCatalogLookupPathPrefix, 3561). +-define(wxLocale_GetCanonicalName, 3562). +-define(wxLocale_GetLanguage, 3563). +-define(wxLocale_GetLanguageName, 3564). +-define(wxLocale_GetLocale, 3565). +-define(wxLocale_GetName, 3566). +-define(wxLocale_GetString_2, 3567). +-define(wxLocale_GetString_4, 3568). +-define(wxLocale_GetHeaderValue, 3569). +-define(wxLocale_GetSysName, 3570). +-define(wxLocale_GetSystemEncoding, 3571). +-define(wxLocale_GetSystemEncodingName, 3572). +-define(wxLocale_GetSystemLanguage, 3573). +-define(wxLocale_IsLoaded, 3574). +-define(wxLocale_IsOk, 3575). +-define(wxActivateEvent_GetActive, 3576). +-define(wxPopupWindow_new_2, 3578). +-define(wxPopupWindow_new_0, 3579). +-define(wxPopupWindow_destruct, 3581). +-define(wxPopupWindow_Create, 3582). +-define(wxPopupWindow_Position, 3583). +-define(wxPopupTransientWindow_new_0, 3584). +-define(wxPopupTransientWindow_new_2, 3585). +-define(wxPopupTransientWindow_destruct, 3586). +-define(wxPopupTransientWindow_Popup, 3587). +-define(wxPopupTransientWindow_Dismiss, 3588). +-define(wxOverlay_new, 3589). +-define(wxOverlay_destruct, 3590). +-define(wxOverlay_Reset, 3591). +-define(wxDCOverlay_new_6, 3592). +-define(wxDCOverlay_new_2, 3593). +-define(wxDCOverlay_destruct, 3594). +-define(wxDCOverlay_Clear, 3595). +-define(wxDropFilesEvent_GetPosition, 3596). +-define(wxDropFilesEvent_GetNumberOfFiles, 3597). +-define(wxDropFilesEvent_GetFiles, 3598). diff --git a/lib/wx/src/wxe.hrl b/lib/wx/src/wxe.hrl index da65cb939d..0f42d7e82e 100644 --- a/lib/wx/src/wxe.hrl +++ b/lib/wx/src/wxe.hrl @@ -44,6 +44,8 @@ -define(I, signed-native). -define(F, float-native). +-define(is_chardata(String), (is_list(String) orelse is_binary(String))). + -define(WXE_IDENTIFIER, wx_env). -define(BATCH_BEGIN, 0). -define(BATCH_END, 1). diff --git a/lib/wx/vsn.mk b/lib/wx/vsn.mk index de4e5e1935..0ce63d9f71 100644 --- a/lib/wx/vsn.mk +++ b/lib/wx/vsn.mk @@ -1 +1 @@ -WX_VSN = 1.7 +WX_VSN = 1.7.1 diff --git a/lib/xmerl/doc/src/notes.xml b/lib/xmerl/doc/src/notes.xml index 0abcb87998..12e64537ed 100644 --- a/lib/xmerl/doc/src/notes.xml +++ b/lib/xmerl/doc/src/notes.xml @@ -32,6 +32,21 @@ <p>This document describes the changes made to the Xmerl application.</p> +<section><title>Xmerl 1.3.12</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> Fix a number of broken links in the xmerl + documentation. </p> + <p> + Own Id: OTP-13880</p> + </item> + </list> + </section> + +</section> + <section><title>Xmerl 1.3.11</title> <section><title>Improvements and New Features</title> diff --git a/otp_versions.table b/otp_versions.table index 9d7d0a78bb..1378f6afea 100644 --- a/otp_versions.table +++ b/otp_versions.table @@ -1,3 +1,11 @@ +OTP-19.1.5 : ssh-4.3.6 # asn1-4.0.4 common_test-1.12.3 compiler-7.0.2 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7.1 debugger-4.2.1 dialyzer-3.0.2 diameter-1.12.1 edoc-0.8 eldap-1.2.2 erl_docgen-0.6 erl_interface-3.9.1 erts-8.1 et-1.6 eunit-2.3.1 gs-1.6.2 hipe-3.15.2 ic-4.4.2 inets-6.3.3 jinterface-1.7.1 kernel-5.1 megaco-3.18.1 mnesia-4.14.1 observer-2.2.2 odbc-2.11.3 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.3 percept-0.9 public_key-1.2 reltool-0.7.2 runtime_tools-1.10.1 sasl-3.0.1 snmp-5.2.4 ssl-8.0.3 stdlib-3.1 syntax_tools-2.1 tools-2.8.6 typer-0.9.11 wx-1.7.1 xmerl-1.3.12 : +OTP-19.1.4 : ssh-4.3.5 # asn1-4.0.4 common_test-1.12.3 compiler-7.0.2 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7.1 debugger-4.2.1 dialyzer-3.0.2 diameter-1.12.1 edoc-0.8 eldap-1.2.2 erl_docgen-0.6 erl_interface-3.9.1 erts-8.1 et-1.6 eunit-2.3.1 gs-1.6.2 hipe-3.15.2 ic-4.4.2 inets-6.3.3 jinterface-1.7.1 kernel-5.1 megaco-3.18.1 mnesia-4.14.1 observer-2.2.2 odbc-2.11.3 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.3 percept-0.9 public_key-1.2 reltool-0.7.2 runtime_tools-1.10.1 sasl-3.0.1 snmp-5.2.4 ssl-8.0.3 stdlib-3.1 syntax_tools-2.1 tools-2.8.6 typer-0.9.11 wx-1.7.1 xmerl-1.3.12 : +OTP-19.1.3 : ssh-4.3.4 # asn1-4.0.4 common_test-1.12.3 compiler-7.0.2 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7.1 debugger-4.2.1 dialyzer-3.0.2 diameter-1.12.1 edoc-0.8 eldap-1.2.2 erl_docgen-0.6 erl_interface-3.9.1 erts-8.1 et-1.6 eunit-2.3.1 gs-1.6.2 hipe-3.15.2 ic-4.4.2 inets-6.3.3 jinterface-1.7.1 kernel-5.1 megaco-3.18.1 mnesia-4.14.1 observer-2.2.2 odbc-2.11.3 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.3 percept-0.9 public_key-1.2 reltool-0.7.2 runtime_tools-1.10.1 sasl-3.0.1 snmp-5.2.4 ssl-8.0.3 stdlib-3.1 syntax_tools-2.1 tools-2.8.6 typer-0.9.11 wx-1.7.1 xmerl-1.3.12 : +OTP-19.1.2 : ssh-4.3.3 # asn1-4.0.4 common_test-1.12.3 compiler-7.0.2 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7.1 debugger-4.2.1 dialyzer-3.0.2 diameter-1.12.1 edoc-0.8 eldap-1.2.2 erl_docgen-0.6 erl_interface-3.9.1 erts-8.1 et-1.6 eunit-2.3.1 gs-1.6.2 hipe-3.15.2 ic-4.4.2 inets-6.3.3 jinterface-1.7.1 kernel-5.1 megaco-3.18.1 mnesia-4.14.1 observer-2.2.2 odbc-2.11.3 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.3 percept-0.9 public_key-1.2 reltool-0.7.2 runtime_tools-1.10.1 sasl-3.0.1 snmp-5.2.4 ssl-8.0.3 stdlib-3.1 syntax_tools-2.1 tools-2.8.6 typer-0.9.11 wx-1.7.1 xmerl-1.3.12 : +OTP-19.1.1 : ssl-8.0.3 # asn1-4.0.4 common_test-1.12.3 compiler-7.0.2 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7.1 debugger-4.2.1 dialyzer-3.0.2 diameter-1.12.1 edoc-0.8 eldap-1.2.2 erl_docgen-0.6 erl_interface-3.9.1 erts-8.1 et-1.6 eunit-2.3.1 gs-1.6.2 hipe-3.15.2 ic-4.4.2 inets-6.3.3 jinterface-1.7.1 kernel-5.1 megaco-3.18.1 mnesia-4.14.1 observer-2.2.2 odbc-2.11.3 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.3 percept-0.9 public_key-1.2 reltool-0.7.2 runtime_tools-1.10.1 sasl-3.0.1 snmp-5.2.4 ssh-4.3.2 stdlib-3.1 syntax_tools-2.1 tools-2.8.6 typer-0.9.11 wx-1.7.1 xmerl-1.3.12 : +OTP-19.1 : asn1-4.0.4 common_test-1.12.3 compiler-7.0.2 crypto-3.7.1 debugger-4.2.1 dialyzer-3.0.2 diameter-1.12.1 edoc-0.8 erl_docgen-0.6 erl_interface-3.9.1 erts-8.1 eunit-2.3.1 gs-1.6.2 hipe-3.15.2 ic-4.4.2 inets-6.3.3 jinterface-1.7.1 kernel-5.1 mnesia-4.14.1 observer-2.2.2 odbc-2.11.3 parsetools-2.1.3 reltool-0.7.2 runtime_tools-1.10.1 sasl-3.0.1 snmp-5.2.4 ssh-4.3.2 ssl-8.0.2 stdlib-3.1 syntax_tools-2.1 tools-2.8.6 wx-1.7.1 xmerl-1.3.12 # cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 eldap-1.2.2 et-1.6 megaco-3.18.1 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 percept-0.9 public_key-1.2 typer-0.9.11 : +OTP-19.0.7 : erts-8.0.5 # asn1-4.0.3 common_test-1.12.2 compiler-7.0.1 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7 debugger-4.2 dialyzer-3.0.1 diameter-1.12 edoc-0.7.19 eldap-1.2.2 erl_docgen-0.5 erl_interface-3.9 et-1.6 eunit-2.3 gs-1.6.1 hipe-3.15.1 ic-4.4.1 inets-6.3.2 jinterface-1.7 kernel-5.0.2 megaco-3.18.1 mnesia-4.14 observer-2.2.1 odbc-2.11.2 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.2 percept-0.9 public_key-1.2 reltool-0.7.1 runtime_tools-1.10 sasl-3.0 snmp-5.2.3 ssh-4.3.1 ssl-8.0.1 stdlib-3.0.1 syntax_tools-2.0 tools-2.8.5 typer-0.9.11 wx-1.7 xmerl-1.3.11 : +OTP-19.0.6 : erts-8.0.4 # asn1-4.0.3 common_test-1.12.2 compiler-7.0.1 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7 debugger-4.2 dialyzer-3.0.1 diameter-1.12 edoc-0.7.19 eldap-1.2.2 erl_docgen-0.5 erl_interface-3.9 et-1.6 eunit-2.3 gs-1.6.1 hipe-3.15.1 ic-4.4.1 inets-6.3.2 jinterface-1.7 kernel-5.0.2 megaco-3.18.1 mnesia-4.14 observer-2.2.1 odbc-2.11.2 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.2 percept-0.9 public_key-1.2 reltool-0.7.1 runtime_tools-1.10 sasl-3.0 snmp-5.2.3 ssh-4.3.1 ssl-8.0.1 stdlib-3.0.1 syntax_tools-2.0 tools-2.8.5 typer-0.9.11 wx-1.7 xmerl-1.3.11 : OTP-19.0.5 : kernel-5.0.2 # asn1-4.0.3 common_test-1.12.2 compiler-7.0.1 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7 debugger-4.2 dialyzer-3.0.1 diameter-1.12 edoc-0.7.19 eldap-1.2.2 erl_docgen-0.5 erl_interface-3.9 erts-8.0.3 et-1.6 eunit-2.3 gs-1.6.1 hipe-3.15.1 ic-4.4.1 inets-6.3.2 jinterface-1.7 megaco-3.18.1 mnesia-4.14 observer-2.2.1 odbc-2.11.2 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.2 percept-0.9 public_key-1.2 reltool-0.7.1 runtime_tools-1.10 sasl-3.0 snmp-5.2.3 ssh-4.3.1 ssl-8.0.1 stdlib-3.0.1 syntax_tools-2.0 tools-2.8.5 typer-0.9.11 wx-1.7 xmerl-1.3.11 : OTP-19.0.4 : erts-8.0.3 # asn1-4.0.3 common_test-1.12.2 compiler-7.0.1 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7 debugger-4.2 dialyzer-3.0.1 diameter-1.12 edoc-0.7.19 eldap-1.2.2 erl_docgen-0.5 erl_interface-3.9 et-1.6 eunit-2.3 gs-1.6.1 hipe-3.15.1 ic-4.4.1 inets-6.3.2 jinterface-1.7 kernel-5.0.1 megaco-3.18.1 mnesia-4.14 observer-2.2.1 odbc-2.11.2 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.2 percept-0.9 public_key-1.2 reltool-0.7.1 runtime_tools-1.10 sasl-3.0 snmp-5.2.3 ssh-4.3.1 ssl-8.0.1 stdlib-3.0.1 syntax_tools-2.0 tools-2.8.5 typer-0.9.11 wx-1.7 xmerl-1.3.11 : OTP-19.0.3 : inets-6.3.2 kernel-5.0.1 ssl-8.0.1 # asn1-4.0.3 common_test-1.12.2 compiler-7.0.1 cosEvent-2.2.1 cosEventDomain-1.2.1 cosFileTransfer-1.2.1 cosNotification-1.2.2 cosProperty-1.2.1 cosTime-1.2.2 cosTransactions-1.3.2 crypto-3.7 debugger-4.2 dialyzer-3.0.1 diameter-1.12 edoc-0.7.19 eldap-1.2.2 erl_docgen-0.5 erl_interface-3.9 erts-8.0.2 et-1.6 eunit-2.3 gs-1.6.1 hipe-3.15.1 ic-4.4.1 jinterface-1.7 megaco-3.18.1 mnesia-4.14 observer-2.2.1 odbc-2.11.2 orber-3.8.2 os_mon-2.4.1 otp_mibs-1.1.1 parsetools-2.1.2 percept-0.9 public_key-1.2 reltool-0.7.1 runtime_tools-1.10 sasl-3.0 snmp-5.2.3 ssh-4.3.1 stdlib-3.0.1 syntax_tools-2.0 tools-2.8.5 typer-0.9.11 wx-1.7 xmerl-1.3.11 : diff --git a/system/doc/reference_manual/typespec.xml b/system/doc/reference_manual/typespec.xml index 1899efd5f3..ced584ed35 100644 --- a/system/doc/reference_manual/typespec.xml +++ b/system/doc/reference_manual/typespec.xml @@ -409,11 +409,13 @@ The initial values for fields are to be compatible with (that is, a member of) the corresponding types. This is checked by the compiler and results in a compilation error - if a violation is detected. For fields without initial values, - the singleton type <c>'undefined'</c> is added to all declared types. - In other words, the following two record declarations have identical - effects: + if a violation is detected. </p> + <note> + <p>Before Erlang/OTP 19, for fields without initial values, + the singleton type <c>'undefined'</c> was added to all declared types. + In other words, the following two record declarations had identical + effects:</p> <pre> -record(rec, {f1 = 42 :: integer(), f2 :: float(), @@ -423,9 +425,10 @@ f2 :: 'undefined' | float(), f3 :: 'undefined' | 'a' | 'b'}).</pre> <p> - For this reason, it is recommended that records contain initializers, - whenever possible. + This is no longer the case. If you require <c>'undefined'</c> in your record field + type, you must explicitly add it to the typespec, as in the 2nd example. </p> + </note> <p> Any record, containing type information or not, once defined, can be used as a type using the following syntax: diff --git a/system/doc/tutorial/c_port.xmlsrc b/system/doc/tutorial/c_port.xmlsrc index 695f16515d..3c3bc48044 100644 --- a/system/doc/tutorial/c_port.xmlsrc +++ b/system/doc/tutorial/c_port.xmlsrc @@ -98,11 +98,11 @@ loop(Port) -> {call, Caller, Msg} -> Port ! {self(), {command, encode(Msg)}}, receive - {Port, {data, Data}} -> + {Port, {data, Data}} -> Caller ! {complex, decode(Data)} end, loop(Port) - end.</pre> + end.</pre> <p>Assuming that both the arguments and the results from the C functions are less than 256, a simple encoding/decoding scheme is employed. In this scheme, <c>foo</c> is represented by byte |