summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--OTP_VERSION2
-rwxr-xr-xerts/configure28
-rw-r--r--erts/configure.ac23
-rw-r--r--erts/doc/src/notes.xml170
-rw-r--r--erts/emulator/beam/bif.c3
-rw-r--r--erts/emulator/beam/code_ix.c23
-rw-r--r--erts/emulator/beam/dist.c21
-rw-r--r--erts/emulator/beam/emu/ops.tab7
-rw-r--r--erts/emulator/beam/erl_bif_info.c7
-rw-r--r--erts/emulator/beam/erl_bif_unique.c11
-rw-r--r--erts/emulator/beam/erl_db_util.c107
-rw-r--r--erts/emulator/beam/erl_map.c672
-rw-r--r--erts/emulator/beam/erl_map.h32
-rw-r--r--erts/emulator/beam/erl_monitor_link.c22
-rw-r--r--erts/emulator/beam/erl_node_tables.c14
-rw-r--r--erts/emulator/beam/erl_node_tables.h8
-rw-r--r--erts/emulator/beam/erl_proc_sig_queue.c1
-rw-r--r--erts/emulator/beam/erl_process_lock.h3
-rw-r--r--erts/emulator/beam/erl_term.h2
-rw-r--r--erts/emulator/beam/erl_utils.h8
-rw-r--r--erts/emulator/beam/external.c49
-rw-r--r--erts/emulator/beam/io.c46
-rw-r--r--erts/emulator/beam/jit/arm/instr_map.cpp86
-rw-r--r--erts/emulator/beam/jit/arm/ops.tab14
-rw-r--r--erts/emulator/beam/jit/beam_jit_main.cpp6
-rw-r--r--erts/emulator/beam/jit/x86/instr_guard_bifs.cpp26
-rw-r--r--erts/emulator/beam/jit/x86/instr_map.cpp86
-rw-r--r--erts/emulator/beam/jit/x86/ops.tab21
-rw-r--r--erts/emulator/beam/utils.c111
-rw-r--r--erts/emulator/test/bs_utf_SUITE.erl6
-rw-r--r--erts/emulator/test/distribution_SUITE.erl129
-rw-r--r--erts/emulator/test/map_SUITE.erl70
-rw-r--r--erts/emulator/test/process_SUITE.erl50
-rw-r--r--erts/vsn.mk2
-rw-r--r--lib/compiler/doc/src/notes.xml37
-rw-r--r--lib/compiler/src/beam_ssa.erl23
-rw-r--r--lib/compiler/src/beam_validator.erl6
-rw-r--r--lib/compiler/src/sys_core_fold.erl30
-rw-r--r--lib/compiler/test/beam_ssa_SUITE.erl92
-rw-r--r--lib/compiler/test/beam_type_SUITE.erl8
-rw-r--r--lib/compiler/test/beam_validator_SUITE.erl21
-rw-r--r--lib/compiler/test/bif_SUITE.erl30
-rw-r--r--lib/compiler/test/core_fold_SUITE.erl22
-rw-r--r--lib/compiler/vsn.mk2
-rw-r--r--lib/crypto/c_src/dh.c6
-rw-r--r--lib/crypto/c_src/openssl_config.h9
-rw-r--r--lib/crypto/doc/src/notes.xml16
-rw-r--r--lib/crypto/vsn.mk2
-rw-r--r--lib/eldap/doc/src/eldap.xml14
-rw-r--r--lib/eldap/doc/src/notes.xml16
-rw-r--r--lib/eldap/src/eldap.erl23
-rw-r--r--lib/eldap/test/eldap_basic_SUITE.erl41
-rw-r--r--lib/eldap/vsn.mk2
-rwxr-xr-xlib/erl_interface/configure6
-rw-r--r--lib/erl_interface/doc/src/notes.xml16
-rw-r--r--lib/erl_interface/vsn.mk2
-rw-r--r--lib/inets/doc/src/notes.xml63
-rw-r--r--lib/inets/vsn.mk2
-rw-r--r--lib/os_mon/doc/src/notes.xml17
-rw-r--r--lib/os_mon/src/cpu_sup.erl4
-rw-r--r--lib/os_mon/src/memsup.erl2
-rw-r--r--lib/os_mon/vsn.mk2
-rw-r--r--lib/snmp/doc/src/notes.xml34
-rw-r--r--lib/snmp/doc/src/snmp_app.xml38
-rw-r--r--lib/snmp/doc/src/snmp_config.xml38
-rw-r--r--lib/snmp/src/agent/snmpa_agent.erl73
-rw-r--r--lib/snmp/src/agent/snmpa_agent_sup.erl12
-rw-r--r--lib/snmp/src/agent/snmpa_net_if.erl38
-rw-r--r--lib/snmp/src/agent/snmpa_supervisor.erl43
-rw-r--r--lib/snmp/src/app/snmp_app.erl11
-rw-r--r--lib/snmp/src/app/snmp_app_sup.erl16
-rw-r--r--lib/snmp/vsn.mk2
-rw-r--r--lib/ssl/doc/src/notes.xml41
-rw-r--r--lib/ssl/src/ssl_cipher.erl4
-rw-r--r--lib/ssl/src/ssl_gen_statem.erl34
-rw-r--r--lib/ssl/src/tls_sender.erl9
-rw-r--r--lib/ssl/test/ssl_cipher_SUITE.erl11
-rw-r--r--lib/ssl/test/ssl_key_update_SUITE.erl113
-rw-r--r--lib/ssl/test/ssl_session_SUITE.erl24
-rw-r--r--lib/ssl/vsn.mk2
-rw-r--r--lib/stdlib/doc/src/notes.xml16
-rw-r--r--lib/stdlib/src/erl_parse.yrl14
-rw-r--r--lib/stdlib/src/stdlib.appup.src8
-rw-r--r--lib/stdlib/vsn.mk2
-rw-r--r--lib/wx/api_gen/gl_gen.erl7
-rw-r--r--lib/wx/api_gen/gl_gen_erl.erl12
-rw-r--r--lib/wx/api_gen/gl_gen_nif.erl35
-rw-r--r--lib/wx/api_gen/glapi.conf16
-rw-r--r--lib/wx/api_gen/wx_extra/added_func.h6
-rw-r--r--lib/wx/api_gen/wx_gen_nif.erl6
-rw-r--r--lib/wx/api_gen/wxapi.conf21
-rw-r--r--lib/wx/c_src/egl_impl.c19
-rw-r--r--lib/wx/c_src/gen/gl_nif.cpp18
-rw-r--r--lib/wx/c_src/gen/wxe_func_table.cpp2772
-rw-r--r--lib/wx/c_src/gen/wxe_init.cpp8
-rw-r--r--lib/wx/c_src/gen/wxe_macros.h5
-rw-r--r--lib/wx/c_src/gen/wxe_wrapper_3.cpp63
-rw-r--r--lib/wx/c_src/wxe_gl.cpp41
-rw-r--r--lib/wx/c_src/wxe_gl.h4
-rw-r--r--lib/wx/c_src/wxe_impl.cpp35
-rw-r--r--lib/wx/c_src/wxe_impl.h5
-rw-r--r--lib/wx/c_src/wxe_nif.c12
-rw-r--r--lib/wx/c_src/wxe_return.cpp9
-rw-r--r--lib/wx/doc/src/gl.xml13
-rw-r--r--lib/wx/doc/src/notes.xml16
-rw-r--r--lib/wx/doc/src/wxGLCanvas.xml17
-rw-r--r--lib/wx/doc/src/wxGLContext.xml13
-rw-r--r--lib/wx/include/wx.hrl4
-rw-r--r--lib/wx/src/gen/gl.erl22
-rw-r--r--lib/wx/src/gen/wxGLCanvas.erl21
-rw-r--r--lib/wx/src/gen/wxGLContext.erl12
-rw-r--r--lib/wx/src/gen/wxe_funcs.hrl2269
-rw-r--r--lib/wx/src/wxe_master.erl7
-rw-r--r--lib/wx/src/wxe_util.erl8
-rw-r--r--lib/wx/test/wx_class_SUITE.erl13
-rw-r--r--lib/wx/test/wx_opengl_SUITE.erl75
-rw-r--r--lib/wx/vsn.mk2
-rw-r--r--make/autoconf/otp.m46
-rw-r--r--make/otp_version_tickets45
-rw-r--r--make/otp_version_tickets_in_merge3
-rw-r--r--otp_versions.table4
121 files changed, 5171 insertions, 3436 deletions
diff --git a/OTP_VERSION b/OTP_VERSION
index 51fc50a418..3193ae6445 100644
--- a/OTP_VERSION
+++ b/OTP_VERSION
@@ -1 +1 @@
-25.3
+25.3.2
diff --git a/erts/configure b/erts/configure
index a84ffe4342..fbdb6baba8 100755
--- a/erts/configure
+++ b/erts/configure
@@ -13973,7 +13973,7 @@ int
main (void)
{
- __asm__ __volatile__("isb sy" : : : "memory");
+ __asm__ __volatile__("isb sy\n" : : : "memory");
;
return 0;
@@ -14007,7 +14007,7 @@ int
main (void)
{
- char data[512]; __asm__ __volatile__("dc cvau, %0" : "r" (data) : : "memory");
+ char data[512]; __asm__ __volatile__("dc cvau, %0\n" :: "r" (data) : "memory");
;
return 0;
@@ -14041,7 +14041,7 @@ int
main (void)
{
- char data[512]; __asm__ __volatile__("ic ivau, %0" : "r" (data) : : "memory");
+ char data[512]; __asm__ __volatile__("ic ivau, %0\n" :: "r" (data) : "memory");
;
return 0;
@@ -24313,7 +24313,27 @@ then :
JIT_ARCH=x86
;;
arm64)
- JIT_ARCH=arm
+ case "$OPSYS" in
+ win32|darwin)
+ # These platforms have dedicated system calls for clearing
+ # instruction cache, and don't require us to manually issue
+ # instruction barriers on all threads.
+ JIT_ARCH=arm
+ ;;
+ *)
+ # We need to use `DC CVAU`, `IC IVAU`, and `ISB SY` to clear
+ # instruction cache. These have already been tested as part of
+ # ETHR_CHK_GCC_ATOMIC_OPS([]).
+
+ if test "$ethr_arm_isb_sy_instr_val$ethr_arm_dc_cvau_instr_val$ethr_arm_ic_ivau_instr_val" = "111"; then
+ JIT_ARCH=arm
+ else
+ enable_jit=no
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: JIT disabled due to lack of cache-clearing instructions" >&5
+printf "%s\n" "$as_me: WARNING: JIT disabled due to lack of cache-clearing instructions" >&2;}
+ fi
+ ;;
+ esac
;;
*)
if test ${enable_jit} = yes; then
diff --git a/erts/configure.ac b/erts/configure.ac
index ab2ee78acd..307be5042d 100644
--- a/erts/configure.ac
+++ b/erts/configure.ac
@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. -*-Autoconf-*
dnl %CopyrightBegin%
dnl
-dnl Copyright Ericsson AB 1997-2022. All Rights Reserved.
+dnl Copyright Ericsson AB 1997-2023. 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.
@@ -2855,7 +2855,26 @@ AS_IF([test ${enable_jit} != no],
JIT_ARCH=x86
;;
arm64)
- JIT_ARCH=arm
+ case "$OPSYS" in
+ win32|darwin)
+ # These platforms have dedicated system calls for clearing
+ # instruction cache, and don't require us to manually issue
+ # instruction barriers on all threads.
+ JIT_ARCH=arm
+ ;;
+ *)
+ # We need to use `DC CVAU`, `IC IVAU`, and `ISB SY` to clear
+ # instruction cache. These have already been tested as part of
+ # ETHR_CHK_GCC_ATOMIC_OPS([]).
+
+ if test "$ethr_arm_isb_sy_instr_val$ethr_arm_dc_cvau_instr_val$ethr_arm_ic_ivau_instr_val" = "111"; then
+ JIT_ARCH=arm
+ else
+ enable_jit=no
+ AC_MSG_WARN([JIT disabled due to lack of cache-clearing instructions])
+ fi
+ ;;
+ esac
;;
*)
if test ${enable_jit} = yes; then
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml
index 7f74df820d..1f372823e8 100644
--- a/erts/doc/src/notes.xml
+++ b/erts/doc/src/notes.xml
@@ -31,6 +31,102 @@
</header>
<p>This document describes the changes made to the ERTS application.</p>
+<section><title>Erts 13.2.2</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ If a runtime system which was starting the distribution
+ already had existing pids, ports, or references referring
+ to a node with the same nodename/creation pair that the
+ runtime system was about to use, these already existing
+ pids, ports, or references would not work as expected in
+ various situations after the node had gone alive. This
+ could only occur if the runtime system was communicated
+ such pids, ports, or references prior to the distribution
+ was started. That is, it was extremely unlikely to happen
+ unless the distribution was started dynamically and was
+ even then very unlikely to happen. The runtime system now
+ checks for already existing pids, ports, and references
+ with the same nodename/creation pair that it is about to
+ use. If such are found another creation will be chosen in
+ order to avoid these issues.</p>
+ <p>
+ Own Id: OTP-18570 Aux Id: PR-7190 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>Erts 13.2.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>Fixed a bug in the loader that prevented certain
+ modules compiled with <c>no_ssa_opt</c> from being
+ loaded.</p>
+ <p>
+ Own Id: OTP-18519 Aux Id: GH-7024 </p>
+ </item>
+ <item>
+ <p>
+ Implementations of the <seecref
+ marker="erts:driver_entry#call"><c>call()</c></seecref>
+ driver callback that returned a faulty encoded result
+ could cause a memory leak and could cause invalid data on
+ the heap of the processes calling <seemfa
+ marker="erts:erlang#port_call/3"><c>erlang:port_call/3</c></seemfa>.</p>
+ <p>
+ Own Id: OTP-18525 Aux Id: PR-7049 </p>
+ </item>
+ <item>
+ <p>Fixed a memory corruption issue when upgrading code.
+ The bug was introduced in <c>OTP 25.3</c></p>
+ <p>
+ Own Id: OTP-18553</p>
+ </item>
+ <item>
+ <p>Fixed configure tests for a few ARM-specific
+ instructions, which prevented the emulator from being
+ built on some platforms.</p>
+ <p>
+ Own Id: OTP-18554</p>
+ </item>
+ <item>
+ <p>
+ Aliases created in combination with a monitor using the
+ <c>{alias, explicit_unalias}</c> option stopped working
+ from remote nodes when a <c>'DOWN'</c> signal had been
+ received due to the monitor or if the monitor was removed
+ using the <c>erlang:demonitor()</c> BIF.</p>
+ <p>
+ This bug was introduced in OTP 24.3.4.10 and OTP 25.3.</p>
+ <p>
+ Own Id: OTP-18557 Aux Id: PR-7131, OTP-18496 </p>
+ </item>
+ <item>
+ <p>In rare circumstances, bit syntax matching of an
+ invalid code point for a <c>utf32</c> would crash the
+ runtime system.</p>
+ <p>
+ Own Id: OTP-18560</p>
+ </item>
+ <item>
+ <p>
+ Building the runtime system failed when native atomic
+ support was missing. Note that execution on such systems
+ have only been rudimentary tested.</p>
+ <p>
+ Own Id: OTP-18563 Aux Id: GH-7114, PR-7159 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Erts 13.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
@@ -1392,6 +1488,80 @@
</section>
+<section><title>Erts 12.3.2.11</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Fix bug sometimes causing emulator crash at node shutdown
+ when there are pending connections. Only seen when
+ running duel distribution protocols, inet_drv and
+ inet_tls_dist.</p>
+ <p>
+ Own Id: OTP-18243 Aux Id: GH-6247, PR-6258 </p>
+ </item>
+ <item>
+ <p>Fix bug in <c>binary_to_term</c> (and distributed
+ receive) when decoding a large map (&gt;32 keys) with
+ unsorted small maps (&lt;= 32) as keys of the large
+ map.</p>
+ <p>This was only a problem if the term was encoded by
+ <c>erl_interface</c>, <c>jinterface</c> or otherwise, as
+ the VM itself always encodes small maps with sorted
+ keys.</p>
+ <p>The "binary_to_term" would appear as successful but
+ the created large map was internally inconsistent. The
+ smaller key-maps could not be found with maps:get and
+ friends. Other operations such as map compare and merge
+ could probably also give incorrect results.</p>
+ <p>
+ Own Id: OTP-18343 Aux Id: GH-6496 </p>
+ </item>
+ <item>
+ <p>
+ Implementations of the <seecref
+ marker="erts:driver_entry#call"><c>call()</c></seecref>
+ driver callback that returned a faulty encoded result
+ could cause a memory leak and could cause invalid data on
+ the heap of the processes calling <seemfa
+ marker="erts:erlang#port_call/3"><c>erlang:port_call/3</c></seemfa>.</p>
+ <p>
+ Own Id: OTP-18525 Aux Id: PR-7049 </p>
+ </item>
+ <item>
+ <p>
+ Aliases created in combination with a monitor using the
+ <c>{alias, explicit_unalias}</c> option stopped working
+ from remote nodes when a <c>'DOWN'</c> signal had been
+ received due to the monitor or if the monitor was removed
+ using the <c>erlang:demonitor()</c> BIF.</p>
+ <p>
+ This bug was introduced in OTP 24.3.4.10 and OTP 25.3.</p>
+ <p>
+ Own Id: OTP-18557 Aux Id: PR-7131, OTP-18496 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>Erts 12.3.2.10</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Active process aliases of a process at its termination
+ leaked memory.</p>
+ <p>
+ Own Id: OTP-18496 Aux Id: GH-6947, PR-6953 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Erts 12.3.2.9</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c
index c4687f04b8..808b23090d 100644
--- a/erts/emulator/beam/bif.c
+++ b/erts/emulator/beam/bif.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 1996-2022. All Rights Reserved.
+ * Copyright Ericsson AB 1996-2023. 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.
@@ -370,6 +370,7 @@ demonitor(Process *c_p, Eterm ref, Eterm *multip)
NIL,
THE_NON_VALUE);
amdp->origin.flags = mon->flags & ERTS_ML_STATE_ALIAS_MASK;
+ mon->flags &= ~ERTS_ML_STATE_ALIAS_MASK;
erts_monitor_tree_replace(&ERTS_P_MONITORS(c_p), mon, &amdp->origin);
break;
}
diff --git a/erts/emulator/beam/code_ix.c b/erts/emulator/beam/code_ix.c
index 607f3c82c6..8f393f92cf 100644
--- a/erts/emulator/beam/code_ix.c
+++ b/erts/emulator/beam/code_ix.c
@@ -347,7 +347,17 @@ static ErtsThrPrgrLaterOp global_code_barrier_lop;
static void decrement_blocking_code_barriers(void *ignored) {
(void)ignored;
- erts_atomic32_dec_nob(&outstanding_blocking_code_barriers);
+
+ if (erts_atomic32_dec_read_nob(&outstanding_blocking_code_barriers) > 0) {
+ /* We had more than one barrier in the same tick, and can't tell
+ * whether the later ones were issued before any of the managed threads
+ * were woken. Keep telling all managed threads to execute an
+ * instruction barrier on wake-up for one more tick. */
+ erts_atomic32_set_nob(&outstanding_blocking_code_barriers, 1);
+ erts_schedule_thr_prgr_later_op(decrement_blocking_code_barriers,
+ NULL,
+ &global_code_barrier_lop);
+ }
}
static void schedule_blocking_code_barriers(void *ignored) {
@@ -358,11 +368,12 @@ static void schedule_blocking_code_barriers(void *ignored) {
* counter.
*
* Note that we increment and decrement instead of setting and clearing
- * since we might execute several blocking barriers in the same tick. */
- erts_atomic32_inc_nob(&outstanding_blocking_code_barriers);
- erts_schedule_thr_prgr_later_op(decrement_blocking_code_barriers,
- NULL,
- &global_code_barrier_lop);
+ * since we might schedule several blocking barriers in the same tick. */
+ if (erts_atomic32_inc_read_nob(&outstanding_blocking_code_barriers) == 1) {
+ erts_schedule_thr_prgr_later_op(decrement_blocking_code_barriers,
+ NULL,
+ &global_code_barrier_lop);
+ }
}
#endif
diff --git a/erts/emulator/beam/dist.c b/erts/emulator/beam/dist.c
index 9a760fd97f..2a2c4fd31b 100644
--- a/erts/emulator/beam/dist.c
+++ b/erts/emulator/beam/dist.c
@@ -4906,6 +4906,19 @@ BIF_RETTYPE setnode_2(BIF_ALIST_2)
success = (!ERTS_PROC_IS_EXITING(net_kernel)
& !ERTS_PROC_GET_DIST_ENTRY(net_kernel));
if (success) {
+ /*
+ * Ensure we don't use a nodename-creation pair with
+ * external identifiers existing in the system.
+ */
+ while (!0) {
+ ErlNode *nep;
+ if (creation < 4)
+ creation = 4;
+ nep = erts_find_node(BIF_ARG_1, creation);
+ if (!nep || erts_node_refc(nep) == 0)
+ break;
+ creation++;
+ }
inc_no_nodes();
erts_set_this_node(BIF_ARG_1, (Uint32) creation);
erts_this_dist_entry->creation = creation;
@@ -6246,7 +6259,7 @@ nodes(Process *c_p, Eterm node_types, Eterm options)
}
}
else {
- Eterm ks[2], *hp, keys_tuple = THE_NON_VALUE;
+ Eterm ks[2], *hp;
Uint map_size = 0, el_xtra, xtra;
ErtsHeapFactory hfact;
@@ -6281,8 +6294,7 @@ nodes(Process *c_p, Eterm node_types, Eterm options)
vs[map_size++] = eni->type;
}
- info_map = erts_map_from_sorted_ks_and_vs(&hfact, ks, vs,
- map_size, &keys_tuple);
+ info_map = erts_map_from_sorted_ks_and_vs(&hfact, ks, vs, map_size);
hp = erts_produce_heap(&hfact, 3+2, xtra);
@@ -6868,8 +6880,7 @@ send_nodes_mon_msgs(Process *c_p, Eterm what, Eterm node,
map_size++;
}
- info = erts_map_from_sorted_ks_and_vs(&hfact, ks, vs,
- map_size, NULL);
+ info = erts_map_from_sorted_ks_and_vs(&hfact, ks, vs, map_size);
ASSERT(is_value(info));
}
else { /* Info list */
diff --git a/erts/emulator/beam/emu/ops.tab b/erts/emulator/beam/emu/ops.tab
index 814fd23b1b..c9d87f071b 100644
--- a/erts/emulator/beam/emu/ops.tab
+++ b/erts/emulator/beam/emu/ops.tab
@@ -1,7 +1,7 @@
#
# %CopyrightBegin%
#
-# Copyright Ericsson AB 1997-2022. All Rights Reserved.
+# Copyright Ericsson AB 1997-2023. 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.
@@ -1233,6 +1233,11 @@ bs_skip_utf16 Fail=f Ms=xy Unit=u Flags=u => bs_get_utf16 Fail Ms Unit Flags x
i_bs_get_utf16 xy f? t d
+bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst | equal(Ms, Dst) =>
+ bs_get_integer2 Fail Ms Live i=32 u=1 Flags x |
+ i_bs_validate_unicode_retract Fail x Ms |
+ move x Dst
+
bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst=d =>
bs_get_integer2 Fail Ms Live i=32 u=1 Flags Dst |
i_bs_validate_unicode_retract Fail Dst Ms
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c
index f340015661..a187646857 100644
--- a/erts/emulator/beam/erl_bif_info.c
+++ b/erts/emulator/beam/erl_bif_info.c
@@ -4292,6 +4292,13 @@ BIF_RETTYPE erts_debug_get_internal_state_1(BIF_ALIST_1)
BIF_RET(uword_to_big(size, hp));
}
}
+ else if (ERTS_IS_ATOM_STR("hashmap_collision_bonanza", BIF_ARG_1)) {
+#ifdef DBG_HASHMAP_COLLISION_BONANZA
+ return am_true;
+#else
+ return am_false;
+#endif
+ }
}
else if (is_tuple(BIF_ARG_1)) {
Eterm* tp = tuple_val(BIF_ARG_1);
diff --git a/erts/emulator/beam/erl_bif_unique.c b/erts/emulator/beam/erl_bif_unique.c
index 7b3b3746b1..e1686c6f93 100644
--- a/erts/emulator/beam/erl_bif_unique.c
+++ b/erts/emulator/beam/erl_bif_unique.c
@@ -591,14 +591,15 @@ erts_pid_ref_delete(Eterm ref)
erts_rwmtx_rwlock(&tblp->rwmtx);
tep = hash_remove(&tblp->hash, &tmpl);
- ASSERT(tep);
erts_rwmtx_rwunlock(&tblp->rwmtx);
- if (tblp != &pid_ref_table[0].u.table)
- erts_free(ERTS_ALC_T_PREF_NSCHED_ENT, (void *) tep);
- else
- erts_free(ERTS_ALC_T_PREF_ENT, (void *) tep);
+ if (tep) {
+ if (tblp != &pid_ref_table[0].u.table)
+ erts_free(ERTS_ALC_T_PREF_NSCHED_ENT, (void *) tep);
+ else
+ erts_free(ERTS_ALC_T_PREF_ENT, (void *) tep);
+ }
}
}
diff --git a/erts/emulator/beam/erl_db_util.c b/erts/emulator/beam/erl_db_util.c
index 8243ac1a73..a236a09791 100644
--- a/erts/emulator/beam/erl_db_util.c
+++ b/erts/emulator/beam/erl_db_util.c
@@ -898,8 +898,8 @@ static Eterm dmc_lookup_bif_reversed(void *f);
static int cmp_uint(void *a, void *b);
static int cmp_guard_bif(void *a, void *b);
static int match_compact(ErlHeapFragment *expr, DMCErrInfo *err_info);
-static Uint my_size_object(Eterm t);
-static Eterm my_copy_struct(Eterm t, Eterm **hp, ErlOffHeap* off_heap);
+static Uint my_size_object(Eterm t, int is_hashmap_node);
+static Eterm my_copy_struct(Eterm t, Eterm **hp, ErlOffHeap* off_heap, int);
/* Guard subroutines */
static void
@@ -3879,11 +3879,11 @@ static void do_emit_constant(DMCContext *context, DMC_STACK_TYPE(UWord) *text,
if (is_immed(t)) {
tmp = t;
} else {
- sz = my_size_object(t);
+ sz = my_size_object(t, 0);
if (sz) {
emb = new_message_buffer(sz);
hp = emb->mem;
- tmp = my_copy_struct(t,&hp,&(emb->off_heap));
+ tmp = my_copy_struct(t,&hp,&(emb->off_heap), 0);
emb->next = context->save;
context->save = emb;
}
@@ -5368,33 +5368,39 @@ static int match_compact(ErlHeapFragment *expr, DMCErrInfo *err_info)
/*
** Simple size object that takes care of function calls and constant tuples
*/
-static Uint my_size_object(Eterm t)
+static Uint my_size_object(Eterm t, int is_hashmap_node)
{
Uint sum = 0;
- Eterm tmp;
Eterm *p;
switch (t & _TAG_PRIMARY_MASK) {
case TAG_PRIMARY_LIST:
- sum += 2 + my_size_object(CAR(list_val(t))) +
- my_size_object(CDR(list_val(t)));
+ sum += 2 + my_size_object(CAR(list_val(t)), 0) +
+ my_size_object(CDR(list_val(t)), 0);
break;
case TAG_PRIMARY_BOXED:
if (is_tuple(t)) {
- if (tuple_val(t)[0] == make_arityval(1) && is_tuple(tmp = tuple_val(t)[1])) {
- Uint i,n;
- p = tuple_val(tmp);
- n = arityval(p[0]);
- sum += 1 + n;
- for (i = 1; i <= n; ++i)
- sum += my_size_object(p[i]);
- } else if (tuple_val(t)[0] == make_arityval(2) &&
- is_atom(tmp = tuple_val(t)[1]) &&
- tmp == am_const) {
+ Eterm* tpl = tuple_val(t);
+ Uint i,n;
+
+ if (is_hashmap_node) {
+ /* hashmap collision node, no matchspec syntax here */
+ }
+ else if (tpl[0] == make_arityval(1) && is_tuple(tpl[1])) {
+ tpl = tuple_val(tpl[1]);
+ }
+ else if (tpl[0] == make_arityval(2) && tpl[1] == am_const) {
sum += size_object(tuple_val(t)[2]);
- } else {
+ break;
+ }
+ else {
erts_exit(ERTS_ERROR_EXIT,"Internal error, sizing unrecognized object in "
"(d)ets:match compilation.");
}
+
+ n = arityval(tpl[0]);
+ sum += 1 + n;
+ for (i = 1; i <= n; ++i)
+ sum += my_size_object(tpl[i], 0);
break;
} else if (is_map(t)) {
if (is_flatmap(t)) {
@@ -5407,7 +5413,7 @@ static Uint my_size_object(Eterm t)
n = arityval(p[0]);
sum += 1 + n;
for (int i = 1; i <= n; ++i)
- sum += my_size_object(p[i]);
+ sum += my_size_object(p[i], 0);
/* Calculate size of values */
p = (Eterm *)mp;
@@ -5415,18 +5421,19 @@ static Uint my_size_object(Eterm t)
sum += n + 3;
p += 3; /* hdr + size + keys words */
while (n--) {
- sum += my_size_object(*p++);
+ sum += my_size_object(*p++, 0);
}
} else {
Eterm *head = (Eterm *)hashmap_val(t);
Eterm hdr = *head;
Uint sz;
+
sz = hashmap_bitcount(MAP_HEADER_VAL(hdr));
sum += 1 + sz + header_arity(hdr);
head += 1 + header_arity(hdr);
while(sz-- > 0) {
- sum += my_size_object(head[sz]);
+ sum += my_size_object(head[sz], 1);
}
}
break;
@@ -5439,46 +5446,54 @@ static Uint my_size_object(Eterm t)
return sum;
}
-static Eterm my_copy_struct(Eterm t, Eterm **hp, ErlOffHeap* off_heap)
+static Eterm my_copy_struct(Eterm t, Eterm **hp, ErlOffHeap* off_heap,
+ int is_hashmap_node)
{
Eterm ret = NIL, a, b;
Eterm *p;
Uint sz;
switch (t & _TAG_PRIMARY_MASK) {
case TAG_PRIMARY_LIST:
- a = my_copy_struct(CAR(list_val(t)), hp, off_heap);
- b = my_copy_struct(CDR(list_val(t)), hp, off_heap);
+ a = my_copy_struct(CAR(list_val(t)), hp, off_heap, 0);
+ b = my_copy_struct(CDR(list_val(t)), hp, off_heap, 0);
ret = CONS(*hp, a, b);
*hp += 2;
break;
case TAG_PRIMARY_BOXED:
if (is_tuple(t)) {
- if (tuple_val(t)[0] == make_arityval(1) &&
- is_tuple(a = tuple_val(t)[1])) {
- Uint i,n;
- p = tuple_val(a);
- n = arityval(p[0]);
- if (n == 0) {
- ret = ERTS_GLOBAL_LIT_EMPTY_TUPLE;
- } else {
- Eterm *savep = *hp;
- ret = make_tuple(savep);
- *hp += n + 1;
- *savep++ = make_arityval(n);
- for(i = 1; i <= n; ++i)
- *savep++ = my_copy_struct(p[i], hp, off_heap);
- }
+ Eterm* tpl = tuple_val(t);
+ Uint i,n;
+ Eterm *savep;
+
+ if (is_hashmap_node) {
+ /* hashmap collision node, no matchspec syntax here */
+ }
+ else if (tpl[0] == make_arityval(1) && is_tuple(tpl[1])) {
+ /* A {{...}} expression */
+ tpl = tuple_val(tpl[1]);
}
- else if (tuple_val(t)[0] == make_arityval(2) &&
- tuple_val(t)[1] == am_const) {
+ else if (tpl[0] == make_arityval(2) && tpl[1] == am_const) {
/* A {const, XXX} expression */
- b = tuple_val(t)[2];
+ b = tpl[2];
sz = size_object(b);
ret = copy_struct(b,sz,hp,off_heap);
+ break;
} else {
erts_exit(ERTS_ERROR_EXIT, "Trying to constant-copy non constant expression "
"0x%bex in (d)ets:match compilation.", t);
}
+ n = arityval(tpl[0]);
+ if (n == 0) {
+ ret = ERTS_GLOBAL_LIT_EMPTY_TUPLE;
+ } else {
+ savep = *hp;
+ ret = make_tuple(savep);
+ *hp += n + 1;
+ *savep++ = tpl[0];
+ for(i = 1; i <= n; ++i)
+ *savep++ = my_copy_struct(tpl[i], hp, off_heap, 0);
+ }
+
} else if (is_map(t)) {
if (is_flatmap(t)) {
Uint i,n;
@@ -5499,7 +5514,7 @@ static Eterm my_copy_struct(Eterm t, Eterm **hp, ErlOffHeap* off_heap)
*hp += n + 1;
*savep++ = make_arityval(n);
for(i = 1; i <= n; ++i)
- *savep++ = my_copy_struct(p[i], hp, off_heap);
+ *savep++ = my_copy_struct(p[i], hp, off_heap, 0);
}
savep = *hp;
ret = make_flatmap(savep);
@@ -5511,7 +5526,7 @@ static Eterm my_copy_struct(Eterm t, Eterm **hp, ErlOffHeap* off_heap)
*savep++ = keys;
p += 3; /* hdr + size + keys words */
for (i = 0; i < n; i++)
- *savep++ = my_copy_struct(p[i], hp, off_heap);
+ *savep++ = my_copy_struct(p[i], hp, off_heap, 0);
erts_usort_flatmap((flatmap_t*)flatmap_val(ret));
} else {
Eterm *head = hashmap_val(t);
@@ -5528,7 +5543,7 @@ static Eterm my_copy_struct(Eterm t, Eterm **hp, ErlOffHeap* off_heap)
*savep++ = *head++; /* map size */
for (int i = 0; i < sz; i++) {
- *savep++ = my_copy_struct(head[i],hp,off_heap);
+ *savep++ = my_copy_struct(head[i],hp,off_heap, 1);
}
}
} else {
diff --git a/erts/emulator/beam/erl_map.c b/erts/emulator/beam/erl_map.c
index e0b881db0a..8a336765f9 100644
--- a/erts/emulator/beam/erl_map.c
+++ b/erts/emulator/beam/erl_map.c
@@ -95,8 +95,8 @@ static Uint hashmap_subtree_size(Eterm node);
static Eterm hashmap_delete(Process *p, Uint32 hx, Eterm key, Eterm node, Eterm *value);
static Eterm flatmap_from_validated_list(Process *p, Eterm list, Eterm fill_value, Uint size);
static Eterm hashmap_from_unsorted_array(ErtsHeapFactory*, hxnode_t *hxns, Uint n, int reject_dupkeys, ErtsAlcType_t temp_memory_allocator);
-static Eterm hashmap_from_sorted_unique_array(ErtsHeapFactory*, hxnode_t *hxns, Uint n, int is_root, ErtsAlcType_t temp_memory_allocator);
-static Eterm hashmap_from_chunked_array(ErtsHeapFactory*, hxnode_t *hxns, Uint n, Uint size, int is_root, ErtsAlcType_t temp_memory_allocator);
+static Eterm hashmap_from_sorted_unique_array(ErtsHeapFactory*, hxnode_t *hxns, Uint n, ErtsAlcType_t temp_memory_allocator);
+static Eterm hashmap_from_chunked_array(ErtsHeapFactory*, hxnode_t *hxns, Uint n, Uint size, ErtsAlcType_t temp_memory_allocator);
static Eterm hashmap_info(Process *p, Eterm node);
static Eterm hashmap_bld_tuple_uint(Uint **hpp, Uint *szp, Uint n, Uint nums[]);
static int hxnodecmp(const void* a, const void* b);
@@ -112,8 +112,7 @@ static int hxnodecmpkey(const void* a, const void* b);
#define maskval(V,L) (((V) >> ((7 - (L))*4)) & 0xf)
#define DBG_PRINT(X)
/*erts_printf X*/
-#define HALLOC_EXTRA_HASHMAP_FROM_CHUNKED_ARRAY 200
-#define HALLOC_EXTRA HALLOC_EXTRA_HASHMAP_FROM_CHUNKED_ARRAY
+#define HALLOC_EXTRA 200
/* *******************************
* ** Yielding C Fun (YCF) Note **
* *******************************
@@ -135,7 +134,6 @@ static int hxnodecmpkey(const void* a, const void* b);
#include "erl_map.ycf.h"
#endif
#define NOT_YCF_YIELDING_VERSION 1
-#undef HALLOC_EXTRA
#define YCF_CONSUME_REDS(X) while(0){}
void erts_init_map(void) {
@@ -278,6 +276,7 @@ BIF_RETTYPE map_get_2(BIF_ALIST_2) {
* means that the code has to follow some restrictions. See note about
* YCF near the top of the file for more information.
*/
+
#ifdef INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS
static BIF_RETTYPE maps_from_keys_2_helper(Process* p, Eterm* bif_args) {
Eterm list = bif_args[0];
@@ -671,33 +670,20 @@ Eterm erts_hashmap_from_array(ErtsHeapFactory* factory, Eterm *leafs, Uint n,
static ERTS_INLINE Eterm
from_ks_and_vs(ErtsHeapFactory *factory, Eterm *ks, Eterm *vs,
- Uint n, Eterm *key_tuple, flatmap_t **fmpp)
+ Uint n, flatmap_t **fmpp)
{
if (n <= MAP_SMALL_MAP_LIMIT) {
Eterm *hp;
flatmap_t *fmp;
Eterm keys;
- if (key_tuple && is_value(*key_tuple)) {
- keys = *key_tuple;
- hp = erts_produce_heap(factory, MAP_HEADER_FLATMAP_SZ + n, 0);
- ASSERT(is_tuple_arity(keys, n));
- ASSERT(n == 0 || sys_memcmp((void *) (tuple_val(keys) + 1),
- (void *) ks,
- n * sizeof(Eterm)) == 0);
- }
- else if (n == 0) {
+ if (n == 0) {
keys = ERTS_GLOBAL_LIT_EMPTY_TUPLE;
- if (key_tuple)
- *key_tuple = keys;
hp = erts_produce_heap(factory, MAP_HEADER_FLATMAP_SZ + n, 0);
}
else {
hp = erts_produce_heap(factory, 1 + MAP_HEADER_FLATMAP_SZ + 2*n, 0);
keys = make_tuple(hp);
- if (key_tuple) {
- *key_tuple = keys;
- }
*hp++ = make_arityval(n);
sys_memcpy((void *) hp,
(void *) ks,
@@ -732,7 +718,7 @@ Eterm erts_map_from_ks_and_vs(ErtsHeapFactory *factory, Eterm *ks, Eterm *vs, Ui
Eterm res;
flatmap_t *fmp;
- res = from_ks_and_vs(factory, ks, vs, n, NULL, &fmp);
+ res = from_ks_and_vs(factory, ks, vs, n, &fmp);
if (fmp) {
if (erts_validate_and_sort_flatmap(fmp)) {
res = make_flatmap(fmp);
@@ -745,7 +731,7 @@ Eterm erts_map_from_ks_and_vs(ErtsHeapFactory *factory, Eterm *ks, Eterm *vs, Ui
}
Eterm erts_map_from_sorted_ks_and_vs(ErtsHeapFactory *factory, Eterm *ks, Eterm *vs,
- Uint n, Eterm *key_tuple)
+ Uint n)
{
#ifdef DEBUG
Uint i;
@@ -755,7 +741,7 @@ Eterm erts_map_from_sorted_ks_and_vs(ErtsHeapFactory *factory, Eterm *ks, Eterm
}
#endif
- return from_ks_and_vs(factory, ks, vs, n, key_tuple, NULL);
+ return from_ks_and_vs(factory, ks, vs, n, NULL);
}
@@ -832,7 +818,7 @@ static Eterm hashmap_from_unsorted_array(ErtsHeapFactory* factory,
if (hxns[ix].hx == hxns[ix+1].hx) {
/* find region of equal hash values */
- jx = ix + 1;
+ jx = ix + 2;
while(jx < n && hxns[ix].hx == hxns[jx].hx) { jx++; }
/* find all correct keys from region
* (last in list but now hash sorted so we check highest id instead) */
@@ -875,7 +861,8 @@ static Eterm hashmap_from_unsorted_array(ErtsHeapFactory* factory,
if (cx > 1) {
/* recursive decompose array */
- res = hashmap_from_sorted_unique_array(factory, hxns, cx, 0, temp_memory_allocator);
+ res = hashmap_from_sorted_unique_array(factory, hxns, cx,
+ temp_memory_allocator);
} else {
Eterm *hp;
@@ -902,51 +889,49 @@ static Eterm hashmap_from_unsorted_array(ErtsHeapFactory* factory,
* YCF near the top of the file for more information.
*/
static Eterm hashmap_from_sorted_unique_array(ErtsHeapFactory* factory,
- hxnode_t *hxns, Uint n, int lvl,
+ hxnode_t *hxns, Uint n,
ErtsAlcType_t temp_memory_allocator) {
Eterm res = NIL;
- Uint i;
Uint ix;
- Uint jx;
Uint elems;
- Uint32 sw;
- Uint32 hx;
- Eterm val;
hxnode_t *tmp = NULL;
- ASSERT(lvl < 32);
+
ix = 0;
elems = 1;
while (ix < n - 1) {
if (hxns[ix].hx == hxns[ix+1].hx) {
- jx = ix + 1;
- while (jx < n && hxns[ix].hx == hxns[jx].hx) { jx++; }
- tmp = (hxnode_t *)erts_alloc(temp_memory_allocator, ((jx - ix)) * sizeof(hxnode_t));
-
- for(i = 0; i < jx - ix; i++) {
- val = hxns[i + ix].val;
- hx = hashmap_restore_hash(lvl + 8, CAR(list_val(val)));
- swizzle32(sw,hx);
- tmp[i].hx = sw;
- tmp[i].val = val;
- tmp[i].i = i;
- tmp[i].skip = 1;
- }
+ Uint n_colliders;
+ Eterm* hp;
+ Eterm collision_node;
+ Uint jx = ix + 2;
+ Uint i;
+
+ while (jx < n && hxns[ix].hx == hxns[jx].hx)
+ jx++;
+
+ n_colliders = jx - ix;
+ hp = erts_produce_heap(factory, HAMT_COLLISION_NODE_SZ(n_colliders),
+ HALLOC_EXTRA);
+ collision_node = make_tuple(hp);
+
+ *hp++ = MAP_HEADER_HAMT_COLLISION_NODE(n_colliders);
+ for (i = 0; i < n_colliders; i++) {
+ *hp++ = hxns[ix + i].val;
+ ASSERT(i == 0
+ || CMP_TERM(CAR(list_val(hxns[ix+i-1].val)),
+ CAR(list_val(hxns[ix+i].val))) < 0);
+ }
- erts_qsort(tmp, jx - ix, sizeof(hxnode_t), hxnodecmp);
+ hxns[ix].val = collision_node;
+ hxns[ix].skip = n_colliders;
+ ix = jx;
- hxns[ix].skip = jx - ix;
- hxns[ix].val =
- hashmap_from_sorted_unique_array(factory, tmp, jx - ix, lvl + 8, temp_memory_allocator);
- erts_free(temp_memory_allocator, (void *) tmp);
- /* Memory management depend on the statement below */
- tmp = NULL;
- ix = jx;
- if (ix < n) { elems++; }
- continue;
+ if (ix < n) { elems++; }
+ continue;
}
- hxns[ix].skip = 1;
- elems++;
- ix++;
+ hxns[ix].skip = 1;
+ elems++;
+ ix++;
}
YCF_SPECIAL_CODE_START(ON_DESTROY_STATE);
{
@@ -957,14 +942,13 @@ static Eterm hashmap_from_sorted_unique_array(ErtsHeapFactory* factory,
}
}
YCF_SPECIAL_CODE_END();
- res = hashmap_from_chunked_array(factory, hxns, elems, n, !lvl, temp_memory_allocator);
+ res = hashmap_from_chunked_array(factory, hxns, elems, n, temp_memory_allocator);
ERTS_FACTORY_HOLE_CHECK(factory);
return res;
}
-#define HALLOC_EXTRA HALLOC_EXTRA_HASHMAP_FROM_CHUNKED_ARRAY
/* **Important Note**
*
* A yielding version of this function is generated with YCF. This
@@ -972,7 +956,7 @@ static Eterm hashmap_from_sorted_unique_array(ErtsHeapFactory* factory,
* YCF near the top of the file for more information.
*/
static Eterm hashmap_from_chunked_array(ErtsHeapFactory *factory, hxnode_t *hxns, Uint n,
- Uint size, int is_root,
+ Uint size,
ErtsAlcType_t temp_memory_allocator) {
Uint ix;
Uint d;
@@ -1024,16 +1008,11 @@ static Eterm hashmap_from_chunked_array(ErtsHeapFactory *factory, hxnode_t *hxns
}
slot = maskval(v,0);
- hp = erts_produce_heap(factory, (is_root ? 3 : 2), 0);
+ hp = erts_produce_heap(factory, 3, 0);
- if (is_root) {
- hp[0] = MAP_HEADER_HAMT_HEAD_BITMAP(1 << slot);
- hp[1] = size;
- hp[2] = res;
- } else {
- hp[0] = MAP_HEADER_HAMT_NODE_BITMAP(1 << slot);
- hp[1] = res;
- }
+ hp[0] = MAP_HEADER_HAMT_HEAD_BITMAP(1 << slot);
+ hp[1] = size;
+ hp[2] = res;
return make_hashmap(hp);
}
@@ -1195,15 +1174,11 @@ static Eterm hashmap_from_chunked_array(ErtsHeapFactory *factory, hxnode_t *hxns
bp = 1 << slot;
hdr |= bp;
sz = hashmap_bitcount(hdr);
- hp = erts_produce_heap(factory, sz + /* hdr + item */ (is_root ? 2 : 1), 0);
+ hp = erts_produce_heap(factory, sz + /* hdr + item */ 2, 0);
nhp = hp;
- if (is_root) {
- *hp++ = (hdr == 0xffff) ? MAP_HEADER_HAMT_HEAD_ARRAY : MAP_HEADER_HAMT_HEAD_BITMAP(hdr);
- *hp++ = size;
- } else {
- *hp++ = MAP_HEADER_HAMT_NODE_BITMAP(hdr);
- }
+ *hp++ = (hdr == 0xffff) ? MAP_HEADER_HAMT_HEAD_ARRAY : MAP_HEADER_HAMT_HEAD_BITMAP(hdr);
+ *hp++ = size;
*hp++ = res; sz--;
while (sz--) { *hp++ = ESTACK_POP(stack); }
@@ -1215,7 +1190,6 @@ static Eterm hashmap_from_chunked_array(ErtsHeapFactory *factory, hxnode_t *hxns
ERTS_FACTORY_HOLE_CHECK(factory);
return res;
}
-#undef HALLOC_EXTRA
static int hxnodecmpkey(const void *va, const void *vb) {
const hxnode_t *a = (const hxnode_t*) va;
@@ -1544,9 +1518,57 @@ BIF_RETTYPE maps_merge_trap_1(BIF_ALIST_1) {
(HashmapMergeContext*) ERTS_MAGIC_BIN_DATA(ctx_bin));
}
-#define HALLOC_EXTRA 200
#define MAP_MERGE_LOOP_FACTOR 8
+static Eterm merge_collision_node(Process* p,
+ Eterm* srcA, Uint szA,
+ Eterm* srcB, Uint szB,
+ Uint* map_sizep)
+{
+ Eterm *hp;
+ Eterm *hdr_ptr;
+ Eterm *hp_end;
+ Uint arity;
+
+ ERTS_ASSERT(szA >= 1 && szB >= 1);
+ arity = szA + szB;
+ hp = HAlloc(p, HAMT_COLLISION_NODE_SZ(arity));
+ hp_end = hp + HAMT_COLLISION_NODE_SZ(arity);
+ hdr_ptr = hp++;
+
+ while (szA && szB) {
+ Eterm keyA = CAR(list_val(*srcA));
+ Eterm keyB = CAR(list_val(*srcB));
+ const Sint key_cmp = CMP_TERM(keyA, keyB);
+
+ if (key_cmp < 0) {
+ *hp++ = *srcA++;
+ szA--;
+ }
+ else {
+ *hp++ = *srcB++;
+ szB--;
+ if (key_cmp == 0) {
+ srcA++;
+ szA--;
+ arity--;
+ (*map_sizep)--;
+ }
+ }
+ }
+ ASSERT(arity >= 2);
+
+ for ( ; szA; szA--)
+ *hp++ = *srcA++;
+ for ( ; szB; szB--)
+ *hp++ = *srcB++;
+
+ HRelease(p, hp_end, hp);
+ *hdr_ptr = make_arityval(arity);
+ return make_tuple(hdr_ptr);
+}
+
+
static BIF_RETTYPE hashmap_merge(Process *p, Eterm map_A, Eterm map_B,
int swap_args, HashmapMergeContext* ctx) {
#define PSTACK_TYPE struct HashmapMergePStackType
@@ -1560,6 +1582,7 @@ static BIF_RETTYPE hashmap_merge(Process *p, Eterm map_A, Eterm map_B,
Eterm trap_ret;
Sint initial_reds = (Sint) (ERTS_BIF_REDS_LEFT(p) * MAP_MERGE_LOOP_FACTOR);
Sint reds = initial_reds;
+ Uint coll_szA = 0, coll_szB = 0;
/*
* Strategy: Do depth-first traversal of both trees (at the same time)
@@ -1619,8 +1642,13 @@ recurse:
goto merge_nodes;
}
}
- hx = hashmap_restore_hash(ctx->lvl, keyA);
- sp->abm = 1 << hashmap_index(hx);
+ if (ctx->lvl < HAMT_MAX_LEVEL) {
+ hx = hashmap_restore_hash(ctx->lvl, keyA);
+ sp->abm = 1 << hashmap_index(hx);
+ }
+ else {
+ coll_szA = 1;
+ }
/* keep srcA pointing at the leaf */
}
else { /* A is NODE */
@@ -1629,25 +1657,35 @@ recurse:
ASSERT(is_header(hdrA));
switch (hdrA & _HEADER_MAP_SUBTAG_MASK) {
case HAMT_SUBTAG_HEAD_ARRAY: {
+ ASSERT(ctx->lvl < HAMT_MAX_LEVEL);
sp->srcA++;
sp->abm = 0xffff;
break;
}
case HAMT_SUBTAG_HEAD_BITMAP: sp->srcA++;
case HAMT_SUBTAG_NODE_BITMAP: {
+ ASSERT(ctx->lvl < HAMT_MAX_LEVEL);
sp->abm = MAP_HEADER_VAL(hdrA);
break;
}
- default:
- erts_exit(ERTS_ABORT_EXIT, "bad header %ld\r\n", hdrA);
+ default: /* collision node */
+ ERTS_ASSERT(is_arity_value(hdrA));
+ ASSERT(ctx->lvl == HAMT_MAX_LEVEL);
+ coll_szA = arityval(hdrA);
+ ASSERT(coll_szA >= 2);
}
}
if (is_list(sp->nodeB)) { /* B is LEAF */
Eterm keyB = CAR(list_val(sp->nodeB));
- hx = hashmap_restore_hash(ctx->lvl, keyB);
- sp->bbm = 1 << hashmap_index(hx);
+ if (ctx->lvl < HAMT_MAX_LEVEL) {
+ hx = hashmap_restore_hash(ctx->lvl, keyB);
+ sp->bbm = 1 << hashmap_index(hx);
+ }
+ else {
+ coll_szB = 1;
+ }
/* keep srcB pointing at the leaf */
}
else { /* B is NODE */
@@ -1656,17 +1694,22 @@ recurse:
ASSERT(is_header(hdrB));
switch (hdrB & _HEADER_MAP_SUBTAG_MASK) {
case HAMT_SUBTAG_HEAD_ARRAY: {
+ ASSERT(ctx->lvl < HAMT_MAX_LEVEL);
sp->srcB++;
sp->bbm = 0xffff;
break;
}
case HAMT_SUBTAG_HEAD_BITMAP: sp->srcB++;
case HAMT_SUBTAG_NODE_BITMAP: {
+ ASSERT(ctx->lvl < HAMT_MAX_LEVEL);
sp->bbm = MAP_HEADER_VAL(hdrB);
break;
}
- default:
- erts_exit(ERTS_ABORT_EXIT, "bad header %ld\r\n", hdrB);
+ default: /* collision node */
+ ERTS_ASSERT(is_arity_value(hdrB));
+ ASSERT(ctx->lvl == HAMT_MAX_LEVEL);
+ coll_szB = arityval(hdrB);
+ ASSERT(coll_szB >= 2);
}
}
}
@@ -1690,13 +1733,22 @@ merge_nodes:
sp->srcA++;
sp->srcB++;
}
- } else { /* Start build a node */
+ }
+ else if (ctx->lvl < HAMT_MAX_LEVEL) { /* Start build a node */
sp->ix = 0;
sp->rbm = sp->abm | sp->bbm;
ASSERT(!(sp->rbm == 0 && ctx->lvl > 0));
}
+ else {
+ res = merge_collision_node(p, sp->srcA, coll_szA,
+ sp->srcB, coll_szB, &ctx->size);
+ sp->mix = 3;
+ coll_szA = coll_szB = 0;
+ continue;
+ }
if (--reds <= 0) {
+ ASSERT(!coll_szA && !coll_szB);
goto trap;
}
resume_from_trap:
@@ -1840,21 +1892,14 @@ static int hash_cmp(Uint32 ha, Uint32 hb)
int hashmap_key_hash_cmp(Eterm* ap, Eterm* bp)
{
- unsigned int lvl = 0;
-
if (ap && bp) {
+ Uint32 ha, hb;
ASSERT(CMP_TERM(CAR(ap), CAR(bp)) != 0);
- for (;;) {
- Uint32 ha = hashmap_restore_hash(lvl, CAR(ap));
- Uint32 hb = hashmap_restore_hash(lvl, CAR(bp));
- int cmp = hash_cmp(ha, hb);
- if (cmp) {
- return cmp;
- }
- lvl += 8;
- }
+ ha = hashmap_make_hash(CAR(ap));
+ hb = hashmap_make_hash(CAR(bp));
+ return hash_cmp(ha, hb);
}
-
+ ASSERT(ap || bp);
return ap ? -1 : 1;
}
@@ -2289,7 +2334,9 @@ Uint hashmap_node_size(Eterm hdr, Eterm **nodep)
ASSERT(sz < 17);
break;
default:
- erts_exit(ERTS_ABORT_EXIT, "bad header");
+ ERTS_ASSERT(is_arity_value(hdr));
+ sz = arityval(hdr);
+ break;
}
return sz;
}
@@ -2383,7 +2430,7 @@ Eterm* hashmap_iterator_prev(ErtsWStack* s) {
const Eterm *
erts_hashmap_get(Uint32 hx, Eterm key, Eterm node)
{
- Eterm *ptr, hdr, *res;
+ Eterm *ptr, hdr;
Uint ix, lvl = 0;
Uint32 hval,bp;
@@ -2394,15 +2441,16 @@ erts_hashmap_get(Uint32 hx, Eterm key, Eterm node)
ASSERT(is_hashmap_header_head(hdr));
ptr++;
- for (;;) {
+ do {
+ ASSERT(lvl == 0 || is_hashmap_header_node(hdr));
+
hval = MAP_HEADER_VAL(hdr);
ix = hashmap_index(hx);
if (hval != 0xffff) {
bp = 1 << ix;
if (!(bp & hval)) {
/* not occupied */
- res = NULL;
- break;
+ return NULL;
}
ix = hashmap_bitcount(hval & (bp - 1));
}
@@ -2410,8 +2458,7 @@ erts_hashmap_get(Uint32 hx, Eterm key, Eterm node)
if (is_list(node)) { /* LEAF NODE [K|V] */
ptr = list_val(node);
- res = EQ(CAR(ptr), key) ? &(CDR(ptr)) : NULL;
- break;
+ return EQ(CAR(ptr), key) ? &(CDR(ptr)) : NULL;
}
hx = hashmap_shift_hash(hx,lvl,key);
@@ -2420,10 +2467,17 @@ erts_hashmap_get(Uint32 hx, Eterm key, Eterm node)
ptr = boxed_val(node);
hdr = *ptr;
ASSERT(is_header(hdr));
- ASSERT(!is_hashmap_header_head(hdr));
- }
+ } while (!is_arity_value(hdr));
- return res;
+ /* collision node */
+ ix = arityval(hdr);
+ ASSERT(ix > 1);
+ do {
+ Eterm* kv = list_val(*(++ptr));
+ if (EQ(CAR(kv), key))
+ return &(CDR(kv));
+ } while (--ix > 0);
+ return NULL;
}
Eterm erts_hashmap_insert(Process *p, Uint32 hx, Eterm key, Eterm value,
@@ -2437,6 +2491,8 @@ Eterm erts_hashmap_insert(Process *p, Uint32 hx, Eterm key, Eterm value,
/* We are putting a new value (under a new or existing key) */
hp = HAlloc(p, size);
res = erts_hashmap_insert_up(hp, key, value, upsz, &stack);
+ ASSERT(hashmap_val(res) + 2 + hashmap_bitcount(MAP_HEADER_VAL(*hashmap_val(res)))
+ == hp + size);
}
else {
/* We are putting the same key-value */
@@ -2544,9 +2600,34 @@ int erts_hashmap_insert_down(Uint32 hx, Eterm key, Eterm value, Eterm node, Uint
}
size += HAMT_HEAD_BITMAP_SZ(n+1);
goto unroll;
- default:
- erts_exit(ERTS_ERROR_EXIT, "bad header tag %ld\r\n", hdr & _HEADER_MAP_SUBTAG_MASK);
- break;
+ default:
+ ERTS_ASSERT(is_arity_value(hdr));
+ n = arityval(hdr);
+ ASSERT(n >= 2);
+ for (slot = 0; slot < n; slot++) {
+ Eterm* kv = list_val(ptr[1+slot]);
+ Sint c;
+ ckey = CAR(kv);
+ c = CMP_TERM(key, ckey);
+ if (c == 0) {
+ if (CDR(ptr) == value) {
+ *sz = 0;
+ return 1;
+ }
+ *update_size = 0;
+ size += HAMT_COLLISION_NODE_SZ(n);
+ ESTACK_PUSH3(*sp, slot, 0, node);
+ goto unroll;
+ }
+ if (c < 0)
+ break;
+ }
+ if (is_update) {
+ return 0;
+ }
+ size += HAMT_COLLISION_NODE_SZ(n+1);
+ ESTACK_PUSH3(*sp, slot, 1, node);
+ goto unroll;
}
break;
default:
@@ -2555,21 +2636,25 @@ int erts_hashmap_insert_down(Uint32 hx, Eterm key, Eterm value, Eterm node, Uint
}
}
insert_subnodes:
- clvl = lvl;
- chx = hashmap_restore_hash(clvl,ckey);
- size += HAMT_NODE_BITMAP_SZ(2);
- ix = hashmap_index(hx);
- cix = hashmap_index(chx);
-
- while (cix == ix) {
- ESTACK_PUSH4(*sp, 0, 1 << ix, 0, MAP_HEADER_HAMT_NODE_BITMAP(0));
- size += HAMT_NODE_BITMAP_SZ(1);
- hx = hashmap_shift_hash(hx,lvl,key);
- chx = hashmap_shift_hash(chx,clvl,ckey);
- ix = hashmap_index(hx);
- cix = hashmap_index(chx);
- }
- ESTACK_PUSH3(*sp, cix, ix, node);
+ if (lvl < HAMT_MAX_LEVEL) {
+ clvl = lvl;
+ chx = hashmap_restore_hash(clvl,ckey);
+ do {
+ ix = hashmap_index(hx);
+ cix = hashmap_index(chx);
+ if (cix != ix) {
+ size += HAMT_NODE_BITMAP_SZ(2);
+ ESTACK_PUSH4(*sp, cix, ix, 0, node);
+ goto unroll;
+ }
+ ESTACK_PUSH4(*sp, 0, 1 << ix, 0, MAP_HEADER_HAMT_NODE_BITMAP(0));
+ size += HAMT_NODE_BITMAP_SZ(1);
+ hx = hashmap_shift_hash(hx,lvl,key);
+ chx = hashmap_shift_hash(chx,clvl,ckey);
+ } while (lvl < HAMT_MAX_LEVEL);
+ }
+ size += HAMT_COLLISION_NODE_SZ(2);
+ ESTACK_PUSH2(*sp, 1, node);
unroll:
*sz = size + /* res cons */ 2;
@@ -2583,17 +2668,29 @@ Eterm erts_hashmap_insert_up(Eterm *hp, Eterm key, Eterm value,
Eterm *nhp = NULL;
Uint32 ix, cix, bp, hval;
Uint slot, n;
- /* Needed for halfword */
- DeclareTmpHeapNoproc(fake,1);
- UseTmpHeapNoproc(1);
+ Eterm fake;
res = CONS(hp, key, value); hp += 2;
do {
node = ESTACK_POP(*sp);
switch(primary_tag(node)) {
- case TAG_PRIMARY_LIST:
- ix = (Uint32) ESTACK_POP(*sp);
+ case TAG_PRIMARY_LIST: {
+ const int is_collision_node = (int) ESTACK_POP(*sp);
+ if (is_collision_node) {
+ nhp = hp;
+ *hp++ = MAP_HEADER_HAMT_COLLISION_NODE(2);
+ if (CMP_TERM(key, CAR(list_val(node))) < 0){
+ *hp++ = res;
+ *hp++ = node;
+ } else {
+ *hp++ = node;
+ *hp++ = res;
+ }
+ res = make_hashmap(nhp);
+ break;
+ }
+ ix = (Uint32)ESTACK_POP(*sp);
cix = (Uint32) ESTACK_POP(*sp);
nhp = hp;
@@ -2607,10 +2704,11 @@ Eterm erts_hashmap_insert_up(Eterm *hp, Eterm key, Eterm value,
}
res = make_hashmap(nhp);
break;
+ }
case TAG_PRIMARY_HEADER:
/* subnodes, fake it */
- *fake = node;
- node = make_boxed(fake);
+ fake = node;
+ node = make_boxed(&fake);
case TAG_PRIMARY_BOXED:
ptr = boxed_val(node);
hdr = *ptr;
@@ -2663,9 +2761,27 @@ Eterm erts_hashmap_insert_up(Eterm *hp, Eterm key, Eterm value,
}
res = make_hashmap(nhp);
break;
- default:
- erts_exit(ERTS_ERROR_EXIT, "bad header tag %x\r\n", hdr & _HEADER_MAP_SUBTAG_MASK);
- break;
+ default: {
+ int is_insert;
+ ERTS_ASSERT(is_arity_value(hdr));
+ n = arityval(hdr);
+ ASSERT(n >= 2);
+ is_insert = (int) ESTACK_POP(*sp);
+ slot = (Uint) ESTACK_POP(*sp);
+ nhp = hp;
+ n += is_insert;
+ *hp++ = MAP_HEADER_HAMT_COLLISION_NODE(n); ptr++;
+ ix = 0;
+ while (ix++ < slot)
+ *hp++ = *ptr++;
+ *hp++ = res;
+ if (!is_insert)
+ ptr++;
+ while (ix++ < n)
+ *hp++ = *ptr++;
+ res = make_hashmap(nhp);
+ break;
+ }
}
break;
default:
@@ -2844,9 +2960,22 @@ static Eterm hashmap_delete(Process *p, Uint32 hx, Eterm key,
/* not occupied */
res = THE_NON_VALUE;
goto not_found;
- default:
- erts_exit(ERTS_ERROR_EXIT, "bad header tag %ld\r\n", hdr & _HEADER_MAP_SUBTAG_MASK);
- break;
+ default: /* collision node */
+ ERTS_ASSERT(is_arity_value(hdr));
+ n = arityval(hdr);
+ ASSERT(n >= 2);
+ for (slot = 0; slot < n; slot++) {
+ Eterm* kv = list_val(ptr[1+slot]);
+ if (EQ(key, CAR(kv))) {
+ if (value)
+ *value = CDR(kv);
+ ESTACK_PUSH2(stack, slot, node);
+ size += HAMT_COLLISION_NODE_SZ(n);
+ goto unroll;
+ }
+ }
+ res = THE_NON_VALUE;
+ goto not_found;
}
break;
default:
@@ -3028,8 +3157,25 @@ unroll:
}
res = make_hashmap(nhp);
break;
- default:
- erts_exit(ERTS_ERROR_EXIT, "bad header tag %x\r\n", hdr & _HEADER_MAP_SUBTAG_MASK);
+ default: /* collision node */
+ ERTS_ASSERT(is_arity_value(hdr));
+ n = arityval(hdr);
+ ASSERT(n >= 2);
+ slot = (Uint) ESTACK_POP(stack);
+ ASSERT(slot < n);
+ if (n > 2) { /* Shrink collision node */
+ nhp = hp;
+ *hp++ = MAP_HEADER_HAMT_COLLISION_NODE(n-1); ptr++;
+ n -= slot + 1;
+ while (slot--) { *hp++ = *ptr++; }
+ ptr++;
+ while(n--) { *hp++ = *ptr++; }
+ res = make_hashmap(nhp);
+ }
+ else { /* Collapse collision node */
+ ASSERT(res == THE_NON_VALUE);
+ res = ptr[1 + (1-slot)];
+ }
break;
}
} while(!ESTACK_ISEMPTY(stack));
@@ -3304,8 +3450,10 @@ BIF_RETTYPE erts_internal_map_hashmap_children_1(BIF_ALIST_1) {
sz = 16;
ptr += 2;
break;
- default:
- erts_exit(ERTS_ERROR_EXIT, "bad header\r\n");
+ default: /* collision node */
+ ERTS_ASSERT(is_arity_value(hdr));
+ sz = arityval(hdr);
+ ASSERT(sz >= 2);
break;
}
ASSERT(sz < 17);
@@ -3327,15 +3475,17 @@ static Eterm hashmap_info(Process *p, Eterm node) {
DECL_AM(leafs);
DECL_AM(bitmaps);
DECL_AM(arrays);
- Uint nleaf=0, nbitmap=0, narray=0;
- Uint bitmap_usage[16], leaf_usage[16];
- Uint lvl = 0, clvl;
+ DECL_AM(collisions);
+ Uint nleaf=0, nbitmap=0, narray=0, ncollision = 0;
+ Uint bitmap_usage[16];
+ Uint collision_usage[16];
+ Uint leaf_usage[HAMT_MAX_LEVEL + 2];
+ Uint max_depth = 0, clvl;
DECLARE_ESTACK(stack);
- for (sz = 0; sz < 16; sz++) {
- bitmap_usage[sz] = 0;
- leaf_usage[sz] = 0;
- }
+ sys_memzero(bitmap_usage, sizeof(bitmap_usage));
+ sys_memzero(collision_usage, sizeof(collision_usage));
+ sys_memzero(leaf_usage, sizeof(leaf_usage));
ptr = boxed_val(node);
ESTACK_PUSH(stack, 0);
@@ -3343,8 +3493,6 @@ static Eterm hashmap_info(Process *p, Eterm node) {
do {
node = ESTACK_POP(stack);
clvl = ESTACK_POP(stack);
- if (lvl < clvl)
- lvl = clvl;
switch(primary_tag(node)) {
case TAG_PRIMARY_LIST:
nleaf++;
@@ -3360,45 +3508,49 @@ static Eterm hashmap_info(Process *p, Eterm node) {
sz = hashmap_bitcount(MAP_HEADER_VAL(hdr));
ASSERT(sz < 17);
bitmap_usage[sz-1] += 1;
- while(sz--) {
- ESTACK_PUSH(stack, clvl + 1);
- ESTACK_PUSH(stack, ptr[sz+1]);
- }
break;
case HAMT_SUBTAG_HEAD_BITMAP:
nbitmap++;
sz = hashmap_bitcount(MAP_HEADER_VAL(hdr));
bitmap_usage[sz-1] += 1;
- while(sz--) {
- ESTACK_PUSH(stack, clvl + 1);
- ESTACK_PUSH(stack, ptr[sz+2]);
- }
+ ptr++;
break;
case HAMT_SUBTAG_HEAD_ARRAY:
narray++;
sz = 16;
- while(sz--) {
- ESTACK_PUSH(stack, clvl + 1);
- ESTACK_PUSH(stack, ptr[sz+2]);
- }
- break;
- default:
- erts_exit(ERTS_ERROR_EXIT, "bad header\r\n");
+ ptr++;
break;
+ default: /* collision node */
+ ERTS_ASSERT(is_arity_value(hdr));
+ ncollision++;
+ sz = arityval(hdr);
+ ASSERT(sz >= 2);
+ collision_usage[(sz > 16 ? 16 : sz) - 1] += 1;
+ break;
}
+ ASSERT(sz >= 1);
+ clvl++;
+ ASSERT(clvl <= HAMT_MAX_LEVEL+1);
+ if (max_depth < clvl)
+ max_depth = clvl;
+ while(sz--) {
+ ESTACK_PUSH(stack, clvl);
+ ESTACK_PUSH(stack, ptr[sz+1]);
+ }
}
} while(!ESTACK_ISEMPTY(stack));
/* size */
sz = 0;
- hashmap_bld_tuple_uint(NULL,&sz,16,leaf_usage);
- hashmap_bld_tuple_uint(NULL,&sz,16,bitmap_usage);
+ hashmap_bld_tuple_uint(NULL, &sz, HAMT_MAX_LEVEL+2, leaf_usage);
+ hashmap_bld_tuple_uint(NULL, &sz, 16, bitmap_usage);
+ hashmap_bld_tuple_uint(NULL, &sz, 16, collision_usage);
/* alloc */
- hp = HAlloc(p, 2+3 + 3*(2+4) + sz);
+ hp = HAlloc(p, 2+3 + 4*(2+4) + sz);
- info = hashmap_bld_tuple_uint(&hp,NULL,16,leaf_usage);
+ info = hashmap_bld_tuple_uint(&hp, NULL, HAMT_MAX_LEVEL+2, leaf_usage);
tup = TUPLE3(hp, AM_leafs, make_small(nleaf),info); hp += 4;
res = CONS(hp, tup, res); hp += 2;
@@ -3406,10 +3558,14 @@ static Eterm hashmap_info(Process *p, Eterm node) {
tup = TUPLE3(hp, AM_bitmaps, make_small(nbitmap), info); hp += 4;
res = CONS(hp, tup, res); hp += 2;
+ info = hashmap_bld_tuple_uint(&hp, NULL, 16, collision_usage);
+ tup = TUPLE3(hp, AM_collisions, make_small(ncollision), info); hp += 4;
+ res = CONS(hp, tup, res); hp += 2;
+
tup = TUPLE3(hp, AM_arrays, make_small(narray),NIL); hp += 4;
res = CONS(hp, tup, res); hp += 2;
- tup = TUPLE2(hp, AM_depth, make_small(lvl)); hp += 3;
+ tup = TUPLE2(hp, AM_depth, make_small(max_depth)); hp += 3;
res = CONS(hp, tup, res); hp += 2;
DESTROY_ESTACK(stack);
@@ -3437,12 +3593,16 @@ static Eterm hashmap_bld_tuple_uint(Uint **hpp, Uint *szp, Uint n, Uint nums[])
* Since each hashmap node can only be up to 16 elements
* large we use 4 bits per level in the path.
*
- * So a Path with value 0x110 will first get the 0:th
+ * So a Path with value 0x210 will first get the 0:th
* slot in the head node, and then the 1:st slot in the
- * resulting node and then finally the 1:st slot in the
+ * resulting node and then finally the 2:st slot in the
* node beneath. If that slot is not a leaf, then the path
* continues down the 0:th slot until it finds a leaf.
*
+ * Collision nodes may (theoretically and in debug) have more
+ * than 16 elements. To not complicate the 4-bit path format
+ * we avoid yielding in collision nodes.
+ *
* Once the leaf has been found, the return value is created
* by traversing the tree using the stack that was built
* when searching for the first leaf to return.
@@ -3531,7 +3691,12 @@ BIF_RETTYPE erts_internal_map_next_3(BIF_ALIST_3) {
Uint path_length = 0;
Uint *path_rest = NULL;
int i, elems, orig_elems;
- Eterm node = map, res, *patch_ptr = NULL, *hp;
+ Eterm node = map, res, *patch_ptr = NULL;
+ Eterm *hp = NULL;
+ Eterm *hp_end;
+ Eterm *ptr;
+ Uint sz, words_per_elem;
+ Uint idx;
/* A stack WSTACK is used when traversing the hashmap.
* It contains: node, idx, sz, ptr
@@ -3589,61 +3754,29 @@ BIF_RETTYPE erts_internal_map_next_3(BIF_ALIST_3) {
BIF_ERROR(BIF_P, BADARG);
}
- if (type == iterator) {
- /*
- * Iterator uses the format {K1, V1, {K2, V2, {K3, V3, [Path | Map]}}},
- * so each element is 4 words large.
- * To make iteration order independent of input reductions
- * the KV-pairs are here built in DESTRUCTIVE non-reverse order.
- */
- hp = HAlloc(BIF_P, 4 * elems);
- } else {
- /*
- * List used the format [Path, Map, {K3,V3}, {K2,V2}, {K1,V1} | BIF_ARG_3],
- * so each element is 2+3 words large.
- * To make list order independent of input reductions
- * the KV-pairs are here built in FUNCTIONAL reverse order
- * as this is how the list as a whole is constructed.
- */
- hp = HAlloc(BIF_P, (2 + 3) * elems);
- }
-
- orig_elems = elems;
-
/* First we look for the leaf to start at using the
path given. While doing so, we push each map node
and the index onto the stack to use later. */
for (i = 1; ; i++) {
- Eterm *ptr = hashmap_val(node),
- hdr = *ptr++;
- Uint sz;
+ Eterm hdr;
+
+ ptr = hashmap_val(node);
+ hdr = *ptr++;
sz = hashmap_node_size(hdr, &ptr);
- if (PATH_ELEM(curr_path) >= sz)
+ idx = PATH_ELEM(curr_path);
+ if (idx >= sz)
goto badarg;
- WSTACK_PUSH4(stack, node, PATH_ELEM(curr_path)+1, sz, (UWord)ptr);
-
- /* We have found a leaf, return it and the next X elements */
- if (is_list(ptr[PATH_ELEM(curr_path)])) {
- Eterm *lst = list_val(ptr[PATH_ELEM(curr_path)]);
- if (type == iterator) {
- res = make_tuple(hp);
- hp[0] = make_arityval(3);
- hp[1] = CAR(lst);
- hp[2] = CDR(lst);
- patch_ptr = &hp[3];
- hp += 4;
- } else {
- Eterm tup = TUPLE2(hp, CAR(lst), CDR(lst)); hp += 3;
- res = CONS(hp, tup, BIF_ARG_3); hp += 2;
- }
- elems--;
+ if (is_list(ptr[idx])) {
+ /* We have found a leaf, return it and the next X elements */
break;
}
- node = ptr[PATH_ELEM(curr_path)];
+ WSTACK_PUSH4(stack, node, idx+1, sz, (UWord)ptr);
+
+ node = ptr[idx];
curr_path >>= PATH_ELEM_SIZE;
@@ -3661,12 +3794,50 @@ BIF_RETTYPE erts_internal_map_next_3(BIF_ALIST_3) {
}
}
+ if (type == iterator) {
+ /*
+ * Iterator uses the format {K1, V1, {K2, V2, {K3, V3, [Path | Map]}}},
+ * so each element is 4 words large.
+ * To make iteration order independent of input reductions
+ * the KV-pairs are here built in DESTRUCTIVE non-reverse order.
+ */
+ words_per_elem = 4;
+ patch_ptr = &res;
+ } else {
+ /*
+ * List used the format [Path, Map, {K3,V3}, {K2,V2}, {K1,V1} | BIF_ARG_3],
+ * so each element is 2+3 words large.
+ * To make list order independent of input reductions
+ * the KV-pairs are here built in FUNCTIONAL reverse order
+ * as this is how the list as a whole is constructed.
+ */
+ words_per_elem = 2 + 3;
+ res = BIF_ARG_3;
+ }
+ hp = HAlloc(BIF_P, words_per_elem * elems);
+ hp_end = hp + words_per_elem * elems;
+
+ orig_elems = elems;
+
/* We traverse the hashmap and return at most `elems` elements */
while(1) {
- Eterm *ptr = (Eterm*)WSTACK_POP(stack);
- Uint sz = (Uint)WSTACK_POP(stack);
- Uint idx = (Uint)WSTACK_POP(stack);
- Eterm node = (Eterm)WSTACK_POP(stack);
+
+ if (idx == 0) {
+ if (elems < sz && is_arity_value(*hashmap_val(node))) {
+ /*
+ * This is a collision node!
+ * Make sure 'elems' is large enough not to yield in the
+ * middle of it. Collision nodes may be larger than 16
+ * and that would complicate the 4-bit path format.
+ */
+ elems = sz;
+ HRelease(BIF_P, hp_end, hp);
+ hp = HAlloc(BIF_P, words_per_elem * elems);
+ hp_end = hp + words_per_elem * elems;
+ }
+ }
+ else
+ ASSERT(!is_arity_value(*hashmap_val(node)));
while (idx < sz && elems != 0 && is_list(ptr[idx])) {
Eterm *lst = list_val(ptr[idx]);
@@ -3685,6 +3856,8 @@ BIF_RETTYPE erts_internal_map_next_3(BIF_ALIST_3) {
idx++;
}
+ ASSERT(idx == sz || !is_arity_value(*hashmap_val(node)));
+
if (elems == 0) {
if (idx < sz) {
/* There are more elements in this node to explore */
@@ -3703,26 +3876,29 @@ BIF_RETTYPE erts_internal_map_next_3(BIF_ALIST_3) {
}
}
break;
- } else {
- if (idx < sz) {
- Eterm hdr;
- /* Push next idx in current node */
- WSTACK_PUSH4(stack, node, idx+1, sz, (UWord)ptr);
-
- /* Push first idx in child node */
- node = ptr[idx];
- ptr = hashmap_val(ptr[idx]);
- hdr = *ptr++;
- sz = hashmap_node_size(hdr, &ptr);
- WSTACK_PUSH4(stack, node, 0, sz, (UWord)ptr);
- }
}
-
- /* There are no more element in the hashmap */
- if (WSTACK_ISEMPTY(stack)) {
+ else if (idx < sz) {
+ Eterm hdr;
+ /* Push next idx in current node */
+ WSTACK_PUSH4(stack, node, idx+1, sz, (UWord)ptr);
+
+ /* Continue with first idx in child node */
+ node = ptr[idx];
+ ptr = hashmap_val(ptr[idx]);
+ hdr = *ptr++;
+ sz = hashmap_node_size(hdr, &ptr);
+ idx = 0;
+ }
+ else if (!WSTACK_ISEMPTY(stack)) {
+ ptr = (Eterm*)WSTACK_POP(stack);
+ sz = (Uint)WSTACK_POP(stack);
+ idx = (Uint)WSTACK_POP(stack);
+ node = (Eterm)WSTACK_POP(stack);
+ }
+ else {
+ /* There are no more element in the hashmap */
break;
}
-
}
if (!WSTACK_ISEMPTY(stack)) {
@@ -3781,24 +3957,16 @@ BIF_RETTYPE erts_internal_map_next_3(BIF_ALIST_3) {
res = CONS(hp, path, res); hp += 2;
}
} else {
- if (type == iterator) {
+ if (type == iterator)
*patch_ptr = am_none;
- HRelease(BIF_P, hp + 4 * elems, hp);
- } else {
- HRelease(BIF_P, hp + (2+3) * elems, hp);
- }
+ HRelease(BIF_P, hp_end, hp);
}
BIF_P->fcalls -= 4 * (orig_elems - elems);
DESTROY_WSTACK(stack);
BIF_RET(res);
badarg:
- if (type == iterator) {
- HRelease(BIF_P, hp + 4 * elems, hp);
- } else {
- HRelease(BIF_P, hp + (2+3) * elems, hp);
- }
- BIF_P->fcalls -= 4 * (orig_elems - elems);
+ ASSERT(hp == NULL);
DESTROY_WSTACK(stack);
BIF_ERROR(BIF_P, BADARG);
}
diff --git a/erts/emulator/beam/erl_map.h b/erts/emulator/beam/erl_map.h
index 3430ec6d7a..a8f9271e99 100644
--- a/erts/emulator/beam/erl_map.h
+++ b/erts/emulator/beam/erl_map.h
@@ -56,17 +56,15 @@ typedef struct flatmap_s {
/* the head-node is a bitmap or array with an untagged size */
#define hashmap_size(x) (((hashmap_head_t*) hashmap_val(x))->size)
-#define hashmap_make_hash(Key) make_map_hash(Key, 0)
+#define hashmap_make_hash(Key) make_map_hash(Key)
#define hashmap_restore_hash(Lvl, Key) \
- (((Lvl) < 8) ? \
- hashmap_make_hash(Key) >> (4*(Lvl)) : \
- make_map_hash(Key, ((Lvl) >> 3)) >> (4 * ((Lvl) & 7)))
+ (ASSERT(Lvl < 8), \
+ hashmap_make_hash(Key) >> (4*(Lvl)))
#define hashmap_shift_hash(Hx, Lvl, Key) \
- (((++(Lvl)) & 7) ? \
- (Hx) >> 4 : \
- make_map_hash(Key, ((Lvl) >> 3)))
+ (++(Lvl), ASSERT(Lvl <= HAMT_MAX_LEVEL), /* we allow one level too much */\
+ (Hx) >> 4)
/* erl_term.h stuff */
#define flatmap_get_values(x) (((Eterm *)(x)) + sizeof(flatmap_t)/sizeof(Eterm))
@@ -107,7 +105,7 @@ Eterm erts_hashmap_from_array(ErtsHeapFactory*, Eterm *leafs, Uint n, int rejec
Eterm erts_map_from_ks_and_vs(ErtsHeapFactory *factory, Eterm *ks, Eterm *vs, Uint n);
Eterm erts_map_from_sorted_ks_and_vs(ErtsHeapFactory *factory, Eterm *ks0, Eterm *vs0,
- Uint n, Eterm *key_tuple);
+ Uint n);
Eterm erts_hashmap_from_ks_and_vs_extra(ErtsHeapFactory *factory,
Eterm *ks, Eterm *vs, Uint n,
Eterm k, Eterm v);
@@ -151,7 +149,8 @@ typedef struct hashmap_head_s {
/* erl_map.h stuff */
-#define is_hashmap_header_head(x) ((MAP_HEADER_TYPE(x) & (0x2)))
+#define is_hashmap_header_head(x) (MAP_HEADER_TYPE(x) & (0x2))
+#define is_hashmap_header_node(x) (MAP_HEADER_TYPE(x) == 1)
#define MAKE_MAP_HEADER(Type,Arity,Val) \
(_make_header(((((Uint16)(Val)) << MAP_HEADER_ARITY_SZ) | (Arity)) << MAP_HEADER_TAG_SZ | (Type) , _TAG_HEADER_MAP))
@@ -168,12 +167,21 @@ typedef struct hashmap_head_s {
#define MAP_HEADER_HAMT_NODE_BITMAP(Bmp) \
MAKE_MAP_HEADER(MAP_HEADER_TAG_HAMT_NODE_BITMAP,0x0,Bmp)
+#define MAP_HEADER_HAMT_COLLISION_NODE(Arity) make_arityval(Arity)
+
#define MAP_HEADER_FLATMAP_SZ (sizeof(flatmap_t) / sizeof(Eterm))
#define HAMT_NODE_ARRAY_SZ (17)
#define HAMT_HEAD_ARRAY_SZ (18)
#define HAMT_NODE_BITMAP_SZ(n) (1 + n)
#define HAMT_HEAD_BITMAP_SZ(n) (2 + n)
+#define HAMT_COLLISION_NODE_SZ(n) (1 + n)
+/*
+ * Collision nodes are used when all hash bits have been exhausted.
+ * They are normal tuples of arity 2 or larger. The elements of a collision
+ * node tuple contain key-value cons cells like the other nodes,
+ * but they are sorted in map-key order.
+ */
/* 2 bits maps tag + 4 bits subtag + 2 ignore bits */
#define _HEADER_MAP_SUBTAG_MASK (0xfc)
@@ -187,11 +195,17 @@ typedef struct hashmap_head_s {
#define hashmap_index(hash) (((Uint32)hash) & 0xf)
+#define HAMT_MAX_LEVEL 8
+
/* hashmap heap size:
[one cons cell + one list term in parent node] per key
[one header + one boxed term in parent node] per inner node
[one header + one size word] for root node
Observed average number of nodes per key is about 0.35.
+
+ Amendment: This size estimation does not take collision nodes into account.
+ It should be good enough though, as collision nodes are rare
+ and only make the size smaller compared to unlimited HAMT depth.
*/
#define HASHMAP_WORDS_PER_KEY 3
#define HASHMAP_WORDS_PER_NODE 2
diff --git a/erts/emulator/beam/erl_monitor_link.c b/erts/emulator/beam/erl_monitor_link.c
index e103807940..c25ca8d5e5 100644
--- a/erts/emulator/beam/erl_monitor_link.c
+++ b/erts/emulator/beam/erl_monitor_link.c
@@ -703,10 +703,15 @@ erts_debug_monitor_tree_destroying_foreach(ErtsMonitor *root,
void *arg,
void *vysp)
{
- void *tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE,
- sizeof(ErtsMonLnkYieldState));
+ void *tmp_vysp;
Sint reds;
- sys_memcpy(tmp_vysp, tmp_vysp, sizeof(ErtsMonLnkYieldState));
+ if (!vysp)
+ tmp_vysp = NULL;
+ else {
+ tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE,
+ sizeof(ErtsMonLnkYieldState));
+ sys_memcpy(tmp_vysp, tmp_vysp, sizeof(ErtsMonLnkYieldState));
+ }
do {
reds = ml_rbt_foreach_yielding((ErtsMonLnkNode *) root,
(ErtsMonLnkNodeFunc) func,
@@ -1348,10 +1353,15 @@ erts_debug_link_tree_destroying_foreach(ErtsLink *root,
void *arg,
void *vysp)
{
- void *tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE,
- sizeof(ErtsMonLnkYieldState));
+ void *tmp_vysp;
Sint reds;
- sys_memcpy(tmp_vysp, vysp, sizeof(ErtsMonLnkYieldState));
+ if (!vysp)
+ tmp_vysp = NULL;
+ else {
+ tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE,
+ sizeof(ErtsMonLnkYieldState));
+ sys_memcpy(tmp_vysp, vysp, sizeof(ErtsMonLnkYieldState));
+ }
do {
reds = ml_rbt_foreach_yielding((ErtsMonLnkNode *) root,
(ErtsMonLnkNodeFunc) func,
diff --git a/erts/emulator/beam/erl_node_tables.c b/erts/emulator/beam/erl_node_tables.c
index 2bec8ff20e..dac24d0310 100644
--- a/erts/emulator/beam/erl_node_tables.c
+++ b/erts/emulator/beam/erl_node_tables.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2001-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2001-2023. 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.
@@ -885,6 +885,18 @@ erts_node_table_info(fmtfn_t to, void *to_arg)
erts_rwmtx_runlock(&erts_node_table_rwmtx);
}
+ErlNode *erts_find_node(Eterm sysname, Uint32 creation)
+{
+ ErlNode *res;
+ ErlNode ne;
+ ne.sysname = sysname;
+ ne.creation = creation;
+
+ erts_rwmtx_rlock(&erts_node_table_rwmtx);
+ res = hash_get(&erts_node_table, (void *) &ne);
+ erts_rwmtx_runlock(&erts_node_table_rwmtx);
+ return res;
+}
ErlNode *erts_find_or_insert_node(Eterm sysname, Uint32 creation, Eterm book)
{
diff --git a/erts/emulator/beam/erl_node_tables.h b/erts/emulator/beam/erl_node_tables.h
index c12198a23c..56696586c6 100644
--- a/erts/emulator/beam/erl_node_tables.h
+++ b/erts/emulator/beam/erl_node_tables.h
@@ -255,6 +255,7 @@ void erts_set_dist_entry_not_connected(DistEntry *);
void erts_set_dist_entry_pending(DistEntry *);
void erts_set_dist_entry_connected(DistEntry *, Eterm, Uint64);
ErlNode *erts_find_or_insert_node(Eterm, Uint32, Eterm);
+ErlNode *erts_find_node(Eterm, Uint32);
void erts_schedule_delete_node(ErlNode *);
void erts_set_this_node(Eterm, Uint32);
Uint erts_node_table_size(void);
@@ -282,6 +283,7 @@ ERTS_GLB_INLINE void erts_deref_node_entry__(ErlNode *np, Eterm term, char *file
ERTS_GLB_INLINE erts_aint_t erts_ref_node_entry(ErlNode *np, int min_val, Eterm term);
ERTS_GLB_INLINE void erts_deref_node_entry(ErlNode *np, Eterm term);
#endif
+ERTS_GLB_INLINE erts_aint_t erts_node_refc(ErlNode *np);
ERTS_GLB_INLINE void erts_de_rlock(DistEntry *dep);
ERTS_GLB_INLINE void erts_de_runlock(DistEntry *dep);
ERTS_GLB_INLINE void erts_de_rwlock(DistEntry *dep);
@@ -332,6 +334,12 @@ erts_deref_node_entry(ErlNode *np, Eterm term)
erts_schedule_delete_node(np);
}
+ERTS_GLB_INLINE erts_aint_t
+erts_node_refc(ErlNode *np)
+{
+ return erts_refc_read(&np->refc, 0);
+}
+
#endif
ERTS_GLB_INLINE void
diff --git a/erts/emulator/beam/erl_proc_sig_queue.c b/erts/emulator/beam/erl_proc_sig_queue.c
index d2799bdb91..79d661675e 100644
--- a/erts/emulator/beam/erl_proc_sig_queue.c
+++ b/erts/emulator/beam/erl_proc_sig_queue.c
@@ -5628,6 +5628,7 @@ erts_proc_sig_handle_incoming(Process *c_p, erts_aint32_t *statep,
mdp->ref, c_p->common.id,
NIL, NIL, THE_NON_VALUE);
amdp->origin.flags = ERTS_ML_STATE_ALIAS_UNALIAS;
+ omon->flags &= ~ERTS_ML_STATE_ALIAS_MASK;
erts_monitor_tree_replace(&ERTS_P_MONITORS(c_p),
omon,
&amdp->origin);
diff --git a/erts/emulator/beam/erl_process_lock.h b/erts/emulator/beam/erl_process_lock.h
index 3c8428c5b9..76e8616280 100644
--- a/erts/emulator/beam/erl_process_lock.h
+++ b/erts/emulator/beam/erl_process_lock.h
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2007-2021. All Rights Reserved.
+ * Copyright Ericsson AB 2007-2023. 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.
@@ -991,6 +991,7 @@ erts_proc_lock_wait_until_released(Process *p, ErtsProcLocks locks)
#if ERTS_PROC_LOCK_OWN_IMPL
#if !ERTS_PROC_LOCK_ATOMIC_IMPL
Uint32 was_locked;
+ erts_pix_lock_t *pix_lck = ERTS_PID2PIXLOCK(p->common.id);
erts_pix_lock(pix_lck);
was_locked = (ERTS_PROC_LOCK_FLGS_READ_(&p->lock) & locks);
erts_pix_unlock(pix_lck);
diff --git a/erts/emulator/beam/erl_term.h b/erts/emulator/beam/erl_term.h
index 5ec1d885e1..73c155ef27 100644
--- a/erts/emulator/beam/erl_term.h
+++ b/erts/emulator/beam/erl_term.h
@@ -330,7 +330,7 @@ _ET_DECLARE_CHECKED(Uint,header_arity,Eterm)
#define is_sane_arity_value(x) ((((x) & _TAG_HEADER_MASK) == _TAG_HEADER_ARITYVAL) && \
(((x) >> _HEADER_ARITY_OFFS) <= MAX_ARITYVAL))
#define is_not_arity_value(x) (!is_arity_value((x)))
-#define _unchecked_arityval(x) _unchecked_header_arity((x))
+#define _unchecked_arityval(x) ((x) >> _HEADER_ARITY_OFFS)
_ET_DECLARE_CHECKED(Uint,arityval,Eterm)
#define arityval(x) _ET_APPLY(arityval,(x))
diff --git a/erts/emulator/beam/erl_utils.h b/erts/emulator/beam/erl_utils.h
index e83881f52f..1585bbc6ec 100644
--- a/erts/emulator/beam/erl_utils.h
+++ b/erts/emulator/beam/erl_utils.h
@@ -71,9 +71,15 @@ Sint erts_list_length(Eterm);
int erts_is_builtin(Eterm, Eterm, int);
Uint32 make_hash2(Eterm);
Uint32 trapping_make_hash2(Eterm, Eterm*, struct process*);
+#ifdef DEBUG
+# define DBG_HASHMAP_COLLISION_BONANZA
+#endif
+#ifdef DBG_HASHMAP_COLLISION_BONANZA
+Uint32 erts_dbg_hashmap_collision_bonanza(Uint32 hash, Eterm key);
+#endif
Uint32 make_hash(Eterm);
Uint32 make_internal_hash(Eterm, Uint32 salt);
-Uint32 make_map_hash(Eterm key, int level);
+Uint32 make_map_hash(Eterm key);
void erts_save_emu_args(int argc, char **argv);
Eterm erts_get_emu_args(struct process *c_p);
diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c
index a95e098c59..d0a2c61834 100644
--- a/erts/emulator/beam/external.c
+++ b/erts/emulator/beam/external.c
@@ -3011,7 +3011,6 @@ dec_pid(ErtsDistExternal *edep, ErtsHeapFactory* factory, const byte* ep,
#define ENC_BIN_COPY ((Eterm) 3)
#define ENC_MAP_PAIR ((Eterm) 4)
#define ENC_HASHMAP_NODE ((Eterm) 5)
-#define ENC_STORE_MAP_ELEMENT ((Eterm) 6)
#define ENC_START_SORTING_MAP ((Eterm) 7)
#define ENC_CONTINUE_SORTING_MAP ((Eterm) 8)
#define ENC_PUSH_SORTED_MAP ((Eterm) 9)
@@ -3180,18 +3179,32 @@ enc_term_int(TTBEncodeContext* ctx, ErtsAtomCacheMap *acmp, Eterm obj, byte* ep,
case ENC_HASHMAP_NODE:
if (is_list(obj)) { /* leaf node [K|V] */
ptr = list_val(obj);
+ if (dflags & DFLAG_DETERMINISTIC) {
+ *next_map_element++ = CAR(ptr);
+ *next_map_element++ = CDR(ptr);
+ goto outer_loop;
+ }
WSTACK_PUSH2(s, ENC_TERM, CDR(ptr));
obj = CAR(ptr);
}
- break;
- case ENC_STORE_MAP_ELEMENT: /* option `deterministic` */
- if (is_list(obj)) { /* leaf node [K|V] */
- ptr = list_val(obj);
- *next_map_element++ = CAR(ptr);
- *next_map_element++ = CDR(ptr);
+ else if (is_tuple(obj)) { /* collision node */
+ Uint tpl_sz;
+ ptr = tuple_val(obj);
+ tpl_sz = arityval(*ptr);
+ ASSERT(tpl_sz >= 2);
+ ptr++;
+ WSTACK_RESERVE(s, tpl_sz * 2);
+ while(tpl_sz--) {
+ ASSERT(is_list(*ptr));
+ WSTACK_FAST_PUSH(s, ENC_HASHMAP_NODE);
+ WSTACK_FAST_PUSH(s, *ptr++);
+ }
goto outer_loop;
- }
- break;
+ }
+ else
+ ASSERT((*boxed_val(obj) & _HEADER_MAP_SUBTAG_MASK)
+ == HAMT_SUBTAG_NODE_BITMAP);
+ break;
case ENC_START_SORTING_MAP: /* option `deterministic` */
{
long num_reductions = r;
@@ -3474,7 +3487,6 @@ enc_term_int(TTBEncodeContext* ctx, ErtsAtomCacheMap *acmp, Eterm obj, byte* ep,
} else {
Eterm hdr;
Uint node_sz;
- Eterm node_processor;
ptr = boxed_val(obj);
hdr = *ptr;
ASSERT(is_header(hdr));
@@ -3515,17 +3527,14 @@ enc_term_int(TTBEncodeContext* ctx, ErtsAtomCacheMap *acmp, Eterm obj, byte* ep,
node_sz = hashmap_bitcount(MAP_HEADER_VAL(hdr));
ASSERT(node_sz < 17);
break;
- default:
- erts_exit(ERTS_ERROR_EXIT, "bad header\r\n");
- }
-
+ default:
+ erts_exit(ERTS_ERROR_EXIT, "bad header\r\n");
+ }
ptr++;
- node_processor = (dflags & DFLAG_DETERMINISTIC) ?
- ENC_STORE_MAP_ELEMENT : ENC_HASHMAP_NODE;
WSTACK_RESERVE(s, node_sz*2);
while(node_sz--) {
- WSTACK_FAST_PUSH(s, node_processor);
- WSTACK_FAST_PUSH(s, *ptr++);
+ WSTACK_FAST_PUSH(s, ENC_HASHMAP_NODE);
+ WSTACK_FAST_PUSH(s, *ptr++);
}
}
break;
@@ -5143,8 +5152,8 @@ encode_size_struct_int(TTBSizeContext* ctx, ErtsAtomCacheMap *acmp, Eterm obj,
node_sz = hashmap_bitcount(MAP_HEADER_VAL(hdr));
ASSERT(node_sz < 17);
break;
- default:
- erts_exit(ERTS_ERROR_EXIT, "bad header\r\n");
+ default:
+ erts_exit(ERTS_ERROR_EXIT, "bad header\r\n");
}
ptr++;
diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c
index dfdbe475b3..d0a42b71bb 100644
--- a/erts/emulator/beam/io.c
+++ b/erts/emulator/beam/io.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 1996-2022. All Rights Reserved.
+ * Copyright Ericsson AB 1996-2023. 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.
@@ -4659,6 +4659,7 @@ erts_port_call(Process* c_p,
unsigned ret_flags = 0U;
Eterm term;
Eterm* hp;
+ ErtsPortOpResult result;
res = call_driver_call(c_p->common.id,
prt,
@@ -4672,25 +4673,36 @@ erts_port_call(Process* c_p,
finalize_imm_drv_call(&try_call_state);
if (bufp != &input_buf[0])
erts_free(ERTS_ALC_T_TMP, bufp);
- if (res == ERTS_PORT_OP_BADARG)
- return ERTS_PORT_OP_BADARG;
- hsz = erts_decode_ext_size((byte *) resp_bufp, resp_size);
- if (hsz < 0)
- return ERTS_PORT_OP_BADARG;
- hsz += 3;
- erts_factory_proc_prealloc_init(&factory, c_p, hsz);
- endp = (byte *) resp_bufp;
- term = erts_decode_ext(&factory, (const byte**)&endp, 0);
- if (term == THE_NON_VALUE)
- return ERTS_PORT_OP_BADARG;
- hp = erts_produce_heap(&factory,3,0);
- *retvalp = TUPLE2(hp, am_ok, term);
- erts_factory_close(&factory);
+ if (res == ERTS_PORT_OP_BADARG) {
+ result = ERTS_PORT_OP_BADARG;
+ }
+ else {
+ hsz = erts_decode_ext_size((byte *) resp_bufp, resp_size);
+ if (hsz < 0) {
+ result = ERTS_PORT_OP_BADARG;
+ }
+ else {
+ hsz += 3;
+ erts_factory_proc_prealloc_init(&factory, c_p, hsz);
+ endp = (byte *) resp_bufp;
+ term = erts_decode_ext(&factory, (const byte**)&endp, 0);
+ if (term == THE_NON_VALUE) {
+ result = ERTS_PORT_OP_BADARG;
+ }
+ else {
+ hp = erts_produce_heap(&factory,3,0);
+ *retvalp = TUPLE2(hp, am_ok, term);
+ result = ERTS_PORT_OP_DONE;
+ }
+ erts_factory_close(&factory);
+ }
+ }
if (resp_bufp != &resp_buf[0]
- && !(ret_flags & DRIVER_CALL_KEEP_BUFFER))
+ && !(ret_flags & DRIVER_CALL_KEEP_BUFFER)) {
driver_free(resp_bufp);
+ }
BUMP_REDS(c_p, ERTS_PORT_REDS_CALL);
- return ERTS_PORT_OP_DONE;
+ return result;
}
case ERTS_TRY_IMM_DRV_CALL_INVALID_PORT:
if (bufp != &input_buf[0])
diff --git a/erts/emulator/beam/jit/arm/instr_map.cpp b/erts/emulator/beam/jit/arm/instr_map.cpp
index 36d0d95433..651461112d 100644
--- a/erts/emulator/beam/jit/arm/instr_map.cpp
+++ b/erts/emulator/beam/jit/arm/instr_map.cpp
@@ -29,13 +29,10 @@ extern "C"
}
static const Uint32 INTERNAL_HASH_SALT = 3432918353;
-static const Uint32 HCONST_22 = 0x98C475E6UL;
static const Uint32 HCONST = 0x9E3779B9;
-/* ARG3 = incoming hash
- * ARG6 = lower 32
+/* ARG6 = lower 32
* ARG7 = upper 32
- * ARG8 = type constant
*
* Helper function for calculating the internal hash of keys before looking
* them up in a map.
@@ -49,6 +46,9 @@ void BeamGlobalAssembler::emit_internal_hash_helper() {
a64::Gp hash = ARG3.w(), lower = ARG6.w(), upper = ARG7.w(),
constant = ARG8.w();
+ mov_imm(hash, INTERNAL_HASH_SALT);
+ mov_imm(constant, HCONST);
+
a.add(lower, lower, constant);
a.add(upper, upper, constant);
@@ -75,6 +75,24 @@ void BeamGlobalAssembler::emit_internal_hash_helper() {
}
}
+#ifdef DBG_HASHMAP_COLLISION_BONANZA
+ emit_enter_runtime_frame();
+ emit_enter_runtime();
+
+ a.stp(ARG1, ARG2, TMP_MEM1q);
+ a.str(ARG4, TMP_MEM3q);
+
+ a.mov(ARG1, ARG3);
+ runtime_call<2>(erts_dbg_hashmap_collision_bonanza);
+ a.mov(ARG3, ARG1);
+
+ a.ldp(ARG1, ARG2, TMP_MEM1q);
+ a.ldr(ARG4, TMP_MEM3q);
+
+ emit_leave_runtime();
+ emit_leave_runtime_frame();
+#endif
+
a.ret(a64::x30);
}
@@ -88,7 +106,7 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
Label node_loop = a.newLabel();
arm::Gp node = ARG1, key = ARG2, key_hash = ARG3, header_val = ARG4,
- depth = TMP4, index = TMP5, one = TMP6;
+ depth = TMP5, index = TMP6;
const int header_shift =
(_HEADER_ARITY_OFFS + MAP_HEADER_TAG_SZ + MAP_HEADER_ARITY_SZ);
@@ -100,8 +118,9 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
a.bind(node_loop);
{
- Label fail = a.newLabel(), leaf_node = a.newLabel(),
- skip_index_adjustment = a.newLabel(), update_hash = a.newLabel();
+ Label done = a.newLabel(), leaf_node = a.newLabel(),
+ skip_index_adjustment = a.newLabel(),
+ collision_node = a.newLabel();
/* Find out which child we should follow, and shift the hash for the
* next round. */
@@ -121,7 +140,7 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
* Note that we jump directly to the return sequence as ZF is clear
* at this point. */
a.lsr(TMP1, header_val, index);
- a.tbz(TMP1, imm(0), fail);
+ a.tbz(TMP1, imm(0), done);
/* The actual offset of our entry is the number of bits set (in
* essence "entries present") before our index in the bitmap. Clear
@@ -145,11 +164,11 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
* word. */
a.ldr(header_val, arm::Mem(node).post(sizeof(Eterm)));
- /* After 8 nodes we've run out of the 32 bits we started with, so we
- * need to update the hash to keep going. */
- a.tst(depth, imm(0x7));
- a.b_eq(update_hash);
- a.b(node_loop);
+ /* After 8 nodes we've run out of the 32 bits we started with
+ * and we end up in a collision node. */
+ a.cmp(depth, imm(HAMT_MAX_LEVEL));
+ a.b_ne(node_loop);
+ a.b(collision_node);
a.bind(leaf_node);
{
@@ -159,36 +178,33 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
a.cmp(TMP1, key);
/* See comment at the jump. */
- a.bind(fail);
+ a.bind(done);
a.ret(a64::x30);
}
- /* After 8 nodes we've run out of the 32 bits we started with, so we
- * must calculate a new hash to continue.
- *
- * This is a manual expansion `make_map_hash` from utils.c, and all
- * changes to that function must be mirrored here. */
- a.bind(update_hash);
+ /* A collision node is a tuple of leafs where we do linear search.*/
+ a.bind(collision_node);
{
- emit_enter_runtime_frame();
+ Label linear_loop = a.newLabel();
+
+ a.lsr(TMP1, header_val, imm(_HEADER_ARITY_OFFS - 3));
- /* NOTE: ARG3 (key_hash) is always 0 at this point. */
- a.lsr(ARG6, depth, imm(3));
- mov_imm(ARG7, 1);
- mov_imm(ARG8, HCONST_22);
- a.bl(labels[internal_hash_helper]);
+ a.bind(linear_loop);
+ {
+ a.sub(TMP1, TMP1, imm(8));
- mov_imm(TMP1, INTERNAL_HASH_SALT);
- a.eor(ARG3, ARG3, TMP1);
+ a.ldr(TMP2, arm::Mem(node, TMP1));
- a.mov(ARG6.w(), key.w());
- a.lsr(ARG7, key, imm(32));
- mov_imm(ARG8, HCONST);
- a.bl(labels[internal_hash_helper]);
+ emit_untag_ptr(TMP2, TMP2);
+ a.ldp(TMP3, TMP4, arm::Mem(TMP2));
+ a.cmp(key, TMP3);
+ a.csel(ARG1, node, TMP4, imm(arm::CondCode::kNE));
+ a.b_eq(done);
- emit_leave_runtime_frame();
+ a.cbnz(TMP1, linear_loop);
+ }
- a.b(node_loop);
+ a.ret(a64::x30);
}
}
}
@@ -336,10 +352,8 @@ void BeamGlobalAssembler::emit_i_get_map_element_shared() {
emit_enter_runtime_frame();
/* Calculate the internal hash of ARG2 before diving into the HAMT. */
- mov_imm(ARG3, INTERNAL_HASH_SALT);
a.mov(ARG6.w(), ARG2.w());
a.lsr(ARG7, ARG2, imm(32));
- mov_imm(ARG8, HCONST);
a.bl(labels[internal_hash_helper]);
emit_leave_runtime_frame();
diff --git a/erts/emulator/beam/jit/arm/ops.tab b/erts/emulator/beam/jit/arm/ops.tab
index cc0bfeccf0..9cd7a9d925 100644
--- a/erts/emulator/beam/jit/arm/ops.tab
+++ b/erts/emulator/beam/jit/arm/ops.tab
@@ -1,7 +1,7 @@
#
# %CopyrightBegin%
#
-# Copyright Ericsson AB 1997-2022. All Rights Reserved.
+# Copyright Ericsson AB 1997-2023. 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.
@@ -666,18 +666,14 @@ i_perf_counter
bif0 u$bif:erlang:self/0 Dst=d => self Dst
bif0 u$bif:erlang:node/0 Dst=d => node Dst
-bif1 Fail=f Bif=u$bif:erlang:hd/1 Src=n Dst =>
- jump Fail
-bif1 Fail=f Bif=u$bif:erlang:hd/1 Src Dst =>
+bif1 Fail=f Bif=u$bif:erlang:hd/1 Src=xy Dst =>
is_nonempty_list Fail Src | get_hd Src Dst
bif1 Fail=p Bif=u$bif:erlang:hd/1 Src Dst =>
bif_hd Src Dst
bif_hd s d
-bif1 Fail=f Bif=u$bif:erlang:tl/1 Src=n Dst =>
- jump Fail
-bif1 Fail=f Bif=u$bif:erlang:tl/1 Src Dst =>
+bif1 Fail=f Bif=u$bif:erlang:tl/1 Src=xy Dst =>
is_nonempty_list Fail Src | get_tl Src Dst
bif1 Fail=p Bif=u$bif:erlang:tl/1 Src Dst =>
bif_tl Src Dst
@@ -951,6 +947,10 @@ bs_skip_utf16 Fail=f Ms=xy u Flags=u => skip_utf16(Fail, Ms, Flags)
i_bs_get_utf16 S f t d
i_bs_skip_utf16 S f t
+bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst | equal(Ms, Dst) =>
+ bs_get_integer2 Fail Ms Live i=32 u=1 Flags x |
+ i_bs_validate_unicode_retract Fail x Ms |
+ move x Dst
bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst=d =>
bs_get_integer2 Fail Ms Live i=32 u=1 Flags Dst |
i_bs_validate_unicode_retract Fail Dst Ms
diff --git a/erts/emulator/beam/jit/beam_jit_main.cpp b/erts/emulator/beam/jit/beam_jit_main.cpp
index 2ddde35511..ef0ad6943a 100644
--- a/erts/emulator/beam/jit/beam_jit_main.cpp
+++ b/erts/emulator/beam/jit/beam_jit_main.cpp
@@ -377,9 +377,9 @@ extern "C"
/* Issues full memory/instruction barriers on all threads for us. */
sys_icache_invalidate((char *)address, size);
#elif defined(__aarch64__) && defined(__GNUC__) && \
- defined(ETHR_HAVE_GCC_ASM_ARM_IC_IVAU_INSTRUCTION) && \
- defined(ETHR_HAVE_GCC_ASM_ARM_DC_CVAU_INSTRUCTION) && \
- defined(ERTS_THR_INSTRUCTION_BARRIER)
+ defined(ERTS_THR_INSTRUCTION_BARRIER) && \
+ ETHR_HAVE_GCC_ASM_ARM_IC_IVAU_INSTRUCTION && \
+ ETHR_HAVE_GCC_ASM_ARM_DC_CVAU_INSTRUCTION
/* Note that we do not issue any barriers here, whether instruction or
* memory. This is on purpose as we must issue those on all schedulers
* and not just the calling thread, and the chances of us forgetting to
diff --git a/erts/emulator/beam/jit/x86/instr_guard_bifs.cpp b/erts/emulator/beam/jit/x86/instr_guard_bifs.cpp
index 4dfe39cb98..9ef5486568 100644
--- a/erts/emulator/beam/jit/x86/instr_guard_bifs.cpp
+++ b/erts/emulator/beam/jit/x86/instr_guard_bifs.cpp
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2020-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2020-2023. 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.
@@ -60,24 +60,22 @@ void BeamGlobalAssembler::emit_handle_hd_error() {
* The code size for this specialization of hd/1 is 21 bytes,
* while the code size for the bif1 instruction is 24 bytes.
*/
-void BeamModuleAssembler::emit_bif_hd(const ArgLabel &Fail,
- const ArgSource &Src,
+void BeamModuleAssembler::emit_bif_hd(const ArgSource &Src,
const ArgRegister &Hd) {
+ Label good_cons = a.newLabel();
+
mov_arg(RET, Src);
a.test(RETb, imm(_TAG_PRIMARY_MASK - TAG_PRIMARY_LIST));
- if (Fail.get() != 0) {
- a.jne(resolve_beam_label(Fail));
- } else {
- Label next = a.newLabel();
- a.short_().je(next);
- safe_fragment_call(ga->get_handle_hd_error());
- a.bind(next);
- }
+ a.short_().je(good_cons);
+ safe_fragment_call(ga->get_handle_hd_error());
- x86::Gp boxed_ptr = emit_ptr_val(RET, RET);
- a.mov(ARG2, getCARRef(boxed_ptr));
- mov_arg(Hd, ARG2);
+ a.bind(good_cons);
+ {
+ x86::Gp boxed_ptr = emit_ptr_val(RET, RET);
+ a.mov(ARG2, getCARRef(boxed_ptr));
+ mov_arg(Hd, ARG2);
+ }
}
void BeamGlobalAssembler::emit_handle_element_error() {
diff --git a/erts/emulator/beam/jit/x86/instr_map.cpp b/erts/emulator/beam/jit/x86/instr_map.cpp
index cf0063e967..4ead792fab 100644
--- a/erts/emulator/beam/jit/x86/instr_map.cpp
+++ b/erts/emulator/beam/jit/x86/instr_map.cpp
@@ -29,13 +29,11 @@ extern "C"
}
static const Uint32 INTERNAL_HASH_SALT = 3432918353;
-static const Uint32 HCONST_22 = 0x98C475E6UL;
static const Uint32 HCONST = 0x9E3779B9;
-/* ARG3 = incoming hash
+/*
* ARG4 = lower 32
* ARG5 = upper 32
- * ARG6 = type constant
*
* Helper function for calculating the internal hash of keys before looking
* them up in a map.
@@ -48,8 +46,9 @@ static const Uint32 HCONST = 0x9E3779B9;
void BeamGlobalAssembler::emit_internal_hash_helper() {
x86::Gp hash = ARG3d, lower = ARG4d, upper = ARG5d;
- a.add(lower, ARG6d);
- a.add(upper, ARG6d);
+ a.mov(hash, imm(INTERNAL_HASH_SALT));
+ a.add(lower, imm(HCONST));
+ a.add(upper, imm(HCONST));
using rounds =
std::initializer_list<std::tuple<x86::Gp, x86::Gp, x86::Gp, int>>;
@@ -80,6 +79,23 @@ void BeamGlobalAssembler::emit_internal_hash_helper() {
a.xor_(r_a, ARG6d);
}
+#ifdef DBG_HASHMAP_COLLISION_BONANZA
+ a.mov(TMP_MEM1q, ARG1);
+ a.mov(TMP_MEM2q, ARG2);
+ a.mov(TMP_MEM3q, RET);
+
+ a.mov(ARG1, ARG3);
+ emit_enter_runtime();
+ runtime_call<2>(erts_dbg_hashmap_collision_bonanza);
+ emit_leave_runtime();
+
+ a.mov(ARG3d, RETd);
+
+ a.mov(ARG1, TMP_MEM1q);
+ a.mov(ARG2, TMP_MEM2q);
+ a.mov(RET, TMP_MEM3q);
+#endif
+
a.ret();
}
@@ -101,8 +117,9 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
a.bind(node_loop);
{
- Label fail = a.newLabel(), leaf_node = a.newLabel(),
- skip_index_adjustment = a.newLabel(), update_hash = a.newLabel();
+ Label done = a.newLabel(), leaf_node = a.newLabel(),
+ skip_index_adjustment = a.newLabel(),
+ collision_node = a.newLabel();
/* Find out which child we should follow, and shift the hash for the
* next round. */
@@ -123,7 +140,7 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
* Note that we jump directly to a `RET` instruction, as `BT` only
* affects CF, and ZF ("not found") is clear at this point. */
a.bt(header_val, index);
- a.short_().jnc(fail);
+ a.short_().jnc(done);
/* The actual offset of our entry is the number of bits set (in
* essence "entries present") before our index in the bitmap. */
@@ -146,11 +163,11 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
/* Nope, we have to search another node. */
a.mov(header_val, emit_boxed_val(node, 0, sizeof(Uint32)));
- /* After 8 nodes we've run out of the 32 bits we started with, so we
- * need to update the hash to keep going. */
- a.test(depth, imm(0x7));
- a.short_().jz(update_hash);
- a.short_().jmp(node_loop);
+ /* After 8 nodes we've run out of the 32 bits we started with
+ * and we end up in a collision node. */
+ a.test(depth, imm(HAMT_MAX_LEVEL - 1));
+ a.short_().jnz(node_loop);
+ a.short_().jmp(collision_node);
a.bind(leaf_node);
{
@@ -160,36 +177,33 @@ void BeamGlobalAssembler::emit_hashmap_get_element() {
a.mov(RET, getCDRRef(node));
/* See comment at the jump. */
- a.bind(fail);
+ a.bind(done);
a.ret();
}
- /* After 8 nodes we've run out of the 32 bits we started with, so we
- * must calculate a new hash to continue.
- *
- * This is a manual expansion `make_map_hash` from utils.c, and all
- * changes to that function must be mirrored here. */
- a.bind(update_hash);
+ /* A collision node is a tuple of leafs where we do linear search.*/
+ a.bind(collision_node);
{
- a.mov(TMP_MEM1d, depth);
+ Label linear_loop = a.newLabel();
- /* NOTE: ARG3d is always 0 at this point. */
- a.mov(ARG4d, depth);
- a.shr(ARG4d, imm(3));
- mov_imm(ARG5d, 1);
- a.mov(ARG6d, imm(HCONST_22));
- a.call(labels[internal_hash_helper]);
+ a.shr(header_val, imm(_HEADER_ARITY_OFFS));
+ a.lea(ARG6d, x86::qword_ptr(header_val, -1));
- a.xor_(ARG3d, imm(INTERNAL_HASH_SALT));
- a.mov(ARG4d, key.r32());
- a.mov(ARG5, key);
- a.shr(ARG5, imm(32));
- a.mov(ARG6d, imm(HCONST));
- a.call(labels[internal_hash_helper]);
+ a.bind(linear_loop);
+ {
+ a.mov(ARG3,
+ x86::qword_ptr(node, ARG6, 3, 8 - TAG_PRIMARY_BOXED));
+
+ emit_ptr_val(ARG3, ARG3);
+ a.cmp(key, getCARRef(ARG3));
+ a.mov(RET, getCDRRef(ARG3));
+ a.short_().jz(done);
- a.mov(depth, TMP_MEM1d);
+ a.dec(ARG6d);
+ a.short_().jns(linear_loop);
+ }
- a.jmp(node_loop);
+ a.ret();
}
}
}
@@ -330,8 +344,6 @@ void BeamGlobalAssembler::emit_i_get_map_element_shared() {
a.shr(ARG5, imm(32));
a.mov(ARG4d, ARG2d);
- a.mov(ARG3d, imm(INTERNAL_HASH_SALT));
- a.mov(ARG6d, imm(HCONST));
a.call(labels[internal_hash_helper]);
emit_hashmap_get_element();
diff --git a/erts/emulator/beam/jit/x86/ops.tab b/erts/emulator/beam/jit/x86/ops.tab
index 1ce0d6f9c2..99cd96ac8b 100644
--- a/erts/emulator/beam/jit/x86/ops.tab
+++ b/erts/emulator/beam/jit/x86/ops.tab
@@ -1,7 +1,7 @@
#
# %CopyrightBegin%
#
-# Copyright Ericsson AB 1997-2022. All Rights Reserved.
+# Copyright Ericsson AB 1997-2023. 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.
@@ -660,18 +660,14 @@ i_perf_counter
bif0 u$bif:erlang:self/0 Dst=d => self Dst
bif0 u$bif:erlang:node/0 Dst=d => node Dst
-bif1 Fail=f Bif=u$bif:erlang:hd/1 Src=n Dst =>
- jump Fail
-bif1 Fail=f Bif=u$bif:erlang:hd/1 Src Dst =>
+bif1 Fail=f Bif=u$bif:erlang:hd/1 Src=xy Dst =>
is_nonempty_list Fail Src | get_hd Src Dst
-bif1 Fail Bif=u$bif:erlang:hd/1 Src Dst =>
- bif_hd Fail Src Dst
+bif1 Fail=p Bif=u$bif:erlang:hd/1 Src Dst =>
+ bif_hd Src Dst
-bif_hd j s d
+bif_hd s d
-bif1 Fail=f Bif=u$bif:erlang:tl/1 Src=n Dst =>
- jump Fail
-bif1 Fail=f Bif=u$bif:erlang:tl/1 Src Dst =>
+bif1 Fail=f Bif=u$bif:erlang:tl/1 Src=xy Dst =>
is_nonempty_list Fail Src | get_tl Src Dst
bif1 Fail Bif=u$bif:erlang:get/1 Src=s Dst=d => get(Src, Dst)
@@ -923,6 +919,11 @@ bs_skip_utf16 Fail=f Ms=xy u Flags=u => skip_utf16(Fail, Ms, Flags)
i_bs_get_utf16 S f t d
i_bs_skip_utf16 S f t
+bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst | equal(Ms, Dst) =>
+ bs_get_integer2 Fail Ms Live i=32 u=1 Flags x |
+ i_bs_validate_unicode_retract Fail x Ms |
+ move x Dst
+
bs_get_utf32 Fail=f Ms=xy Live=u Flags=u Dst=d =>
bs_get_integer2 Fail Ms Live i=32 u=1 Flags Dst |
i_bs_validate_unicode_retract Fail Dst Ms
diff --git a/erts/emulator/beam/utils.c b/erts/emulator/beam/utils.c
index 9feb3aab0e..1baeb44835 100644
--- a/erts/emulator/beam/utils.c
+++ b/erts/emulator/beam/utils.c
@@ -1640,15 +1640,12 @@ make_hash2_helper(Eterm term_param, const int can_trap, Eterm* state_mref_write_
* We therefore calculate context independent hashes for all .
* key-value pairs and then xor them together.
*/
- ESTACK_PUSH(s, hash_xor_pairs);
- ESTACK_PUSH(s, hash);
- ESTACK_PUSH(s, HASH_MAP_TAIL);
+ ESTACK_PUSH3(s, hash_xor_pairs, hash, HASH_MAP_TAIL);
hash = 0;
hash_xor_pairs = 0;
for (ctx.i = ctx.size - 1; ctx.i >= 0; ctx.i--) {
- ESTACK_PUSH(s, HASH_MAP_PAIR);
- ESTACK_PUSH(s, ctx.vs[ctx.i]);
- ESTACK_PUSH(s, ctx.ks[ctx.i]);
+ ESTACK_PUSH3(s, HASH_MAP_PAIR,
+ ctx.vs[ctx.i], ctx.ks[ctx.i]);
TRAP_LOCATION(hamt_subtag_head_flatmap);
}
goto hash2_common;
@@ -1660,9 +1657,7 @@ make_hash2_helper(Eterm term_param, const int can_trap, Eterm* state_mref_write_
UINT32_HASH(size, HCONST_16);
if (size == 0)
goto hash2_common;
- ESTACK_PUSH(s, hash_xor_pairs);
- ESTACK_PUSH(s, hash);
- ESTACK_PUSH(s, HASH_MAP_TAIL);
+ ESTACK_PUSH3(s, hash_xor_pairs, hash, HASH_MAP_TAIL);
hash = 0;
hash_xor_pairs = 0;
}
@@ -1680,13 +1675,22 @@ make_hash2_helper(Eterm term_param, const int can_trap, Eterm* state_mref_write_
while (ctx.i) {
if (is_list(*ctx.ptr)) {
Eterm* cons = list_val(*ctx.ptr);
- ESTACK_PUSH(s, HASH_MAP_PAIR);
- ESTACK_PUSH(s, CDR(cons));
- ESTACK_PUSH(s, CAR(cons));
+ ESTACK_PUSH3(s, HASH_MAP_PAIR, CDR(cons), CAR(cons));
}
else {
ASSERT(is_boxed(*ctx.ptr));
- ESTACK_PUSH(s, *ctx.ptr);
+ if (is_tuple(*ctx.ptr)) { /* collision node */
+ Eterm *coll_ptr = tuple_val(*ctx.ptr);
+ Uint n = arityval(*coll_ptr);
+ ASSERT(n >= 2);
+ coll_ptr++;
+ for (; n; n--, coll_ptr++) {
+ Eterm* cons = list_val(*coll_ptr);
+ ESTACK_PUSH3(s, HASH_MAP_PAIR, CDR(cons), CAR(cons));
+ }
+ }
+ else
+ ESTACK_PUSH(s, *ctx.ptr);
}
ctx.i--; ctx.ptr++;
TRAP_LOCATION(map_subtag);
@@ -2078,15 +2082,43 @@ trapping_make_hash2(Eterm term, Eterm* state_mref_write_back, Process* p)
return make_hash2_helper(term, 1, state_mref_write_back, p);
}
+#ifdef DBG_HASHMAP_COLLISION_BONANZA
+Uint32 erts_dbg_hashmap_collision_bonanza(Uint32 hash, Eterm key)
+{
+/*{
+ static Uint32 hashvec[7] = {
+ 0x02345678,
+ 0x12345678,
+ 0xe2345678,
+ 0xf2345678,
+ 0x12abcdef,
+ 0x13abcdef,
+ 0xcafebabe
+ };
+ hash = hashvec[hash % (sizeof(hashvec) / sizeof(hashvec[0]))];
+ }*/
+ const Uint32 bad_hash = (hash & 0x12482481) * 1442968193;
+ const Uint32 bad_bits = hash % 67;
+ if (bad_bits < 32) {
+ /* Mix in a number of high good bits to get "randomly" close
+ to the collision nodes */
+ const Uint32 bad_mask = (1 << bad_bits) - 1;
+ return (hash & ~bad_mask) | (bad_hash & bad_mask);
+ }
+ return bad_hash;
+}
+#endif
+
/* Term hash function for maps, with a separate depth parameter */
-Uint32 make_map_hash(Eterm key, int depth) {
+Uint32 make_map_hash(Eterm key) {
Uint32 hash = 0;
- if (depth > 0) {
- UINT32_HASH_2(depth, 1, HCONST_22);
- }
+ hash = make_internal_hash(key, hash);
- return make_internal_hash(key, hash);
+#ifdef DBG_HASHMAP_COLLISION_BONANZA
+ hash = erts_dbg_hashmap_collision_bonanza(hash, key);
+#endif
+ return hash;
}
/* Term hash function for internal use.
@@ -2099,12 +2131,10 @@ Uint32 make_map_hash(Eterm key, int depth) {
* with a new ErlNode struct, externals from that node will hash different than
* before.
*
- * One IMPORTANT property must hold (for hamt).
- * EVERY BIT of the term that is significant for equality (see EQ)
- * MUST BE USED AS INPUT FOR THE HASH. Two different terms must always have a
- * chance of hashing different when salted.
- *
- * This is why we cannot use cached hash values for atoms for example.
+ * The property "EVERY BIT of the term that is significant for equality
+ * MUST BE USED AS INPUT FOR THE HASH" is nice but no longer crucial for the
+ * hashmap implementation that now uses collision nodes at the bottom of
+ * the HAMT when all hash bits are exhausted.
*
*/
@@ -2250,6 +2280,8 @@ make_internal_hash(Eterm term, Uint32 salt)
}
else {
ASSERT(is_boxed(*ptr));
+ /* no special treatment of collision nodes needed,
+ hash them as the tuples they are */
ESTACK_PUSH(s, *ptr);
}
i--; ptr++;
@@ -3132,8 +3164,8 @@ tailrecur_ne:
sz = hashmap_bitcount(MAP_HEADER_VAL(hdr));
ASSERT(sz > 0 && sz < 17);
break;
- default:
- erts_exit(ERTS_ERROR_EXIT, "Unknown hashmap subsubtag\n");
+ default:
+ erts_exit(ERTS_ERROR_EXIT, "bad header");
}
goto term_array;
}
@@ -3496,6 +3528,11 @@ tailrecur_ne:
A minimal key can only be candidate as tie-breaker if we
have passed that hash value in the other tree (which means
the key did not exist in the other tree).
+
+ Collision node amendment:
+ The leafs in collision nodes are sorted in map-key order.
+ If keys are different but hashes are equal we advance the
+ one lagging behind key-wise.
*/
sp = PSTACK_PUSH(hmap_stack);
@@ -3905,12 +3942,19 @@ pop_next:
sp = PSTACK_TOP(hmap_stack);
if (j) {
/* Key diff found, enter phase 2 */
- if (hashmap_key_hash_cmp(sp->ap, sp->bp) < 0) {
+ int hash_cmp = hashmap_key_hash_cmp(sp->ap, sp->bp);
+ if (hash_cmp == 0) {
+ /* Hash collision. Collision nodes are sorted by map key
+ * order, so we advance the one with the lesser key */
+ hash_cmp = j;
+ }
+ if (hash_cmp < 0) {
sp->min_key = CAR(sp->ap);
sp->cmp_res = -1;
sp->ap = hashmap_iterator_next(&stack);
}
else {
+ ASSERT(hash_cmp > 0);
sp->min_key = CAR(sp->bp);
sp->cmp_res = 1;
sp->bp = hashmap_iterator_next(&b_stack);
@@ -3960,7 +4004,7 @@ pop_next:
sp->bp = hashmap_iterator_next(&b_stack);
if (!sp->ap) {
/* end of maps with identical keys */
- ASSERT(!sp->bp);
+ ASSERT(!sp->bp); /* as we assume indentical map sizes */
j = sp->cmp_res;
exact = sp->was_exact;
(void) PSTACK_POP(hmap_stack);
@@ -3995,14 +4039,21 @@ pop_next:
/* fall through */
case_HASHMAP_PHASE2_NEXT_STEP:
if (sp->ap || sp->bp) {
- if (hashmap_key_hash_cmp(sp->ap, sp->bp) < 0) {
+ int hash_cmp = hashmap_key_hash_cmp(sp->ap, sp->bp);
+ if (hash_cmp == 0) {
+ /* Hash collision. Collision nodes are sorted by map key
+ * order, so we advance the one with the lesser key */
+ hash_cmp = j;
+ }
+ if (hash_cmp < 0) {
ASSERT(sp->ap);
a = CAR(sp->ap);
b = sp->min_key;
ASSERT(exact);
WSTACK_PUSH(stack, OP_WORD(HASHMAP_PHASE2_IS_MIN_KEY_A));
}
- else { /* hash_cmp > 0 */
+ else {
+ ASSERT(hash_cmp > 0);
ASSERT(sp->bp);
a = CAR(sp->bp);
b = sp->min_key;
diff --git a/erts/emulator/test/bs_utf_SUITE.erl b/erts/emulator/test/bs_utf_SUITE.erl
index a344f5c456..68099c6f39 100644
--- a/erts/emulator/test/bs_utf_SUITE.erl
+++ b/erts/emulator/test/bs_utf_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2016. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -272,6 +272,10 @@ utf32_illegal_sequences(Config) when is_list(Config) ->
utf32_fail_range(16#10FFFF+1, 16#10FFFF+512), %Too large.
utf32_fail_range(16#D800, 16#DFFF), %Reserved for UTF-16.
utf32_fail_range(-100, -1),
+
+ <<>> = id(<< 0 || <<X/utf32>> <= <<"àxxx">>, _ = X >>),
+ <<>> = id(<< 0 || <<X/little-utf32>> <= <<"àxxx">>, _ = X >>),
+
ok.
utf32_fail_range(Char, End) when Char =< End ->
diff --git a/erts/emulator/test/distribution_SUITE.erl b/erts/emulator/test/distribution_SUITE.erl
index c1a31c6abf..7ed2b2b02d 100644
--- a/erts/emulator/test/distribution_SUITE.erl
+++ b/erts/emulator/test/distribution_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2022. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2023. 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.
@@ -84,7 +84,9 @@
dyn_node_name_monitor/1,
async_dist_flag/1,
async_dist_port_dctrlr/1,
- async_dist_proc_dctrlr/1]).
+ async_dist_proc_dctrlr/1,
+ creation_selection/1,
+ creation_selection_test/1]).
%% Internal exports.
-export([sender/3, receiver2/2, dummy_waiter/0, dead_process/0,
@@ -118,7 +120,7 @@ all() ->
start_epmd_false, no_epmd, epmd_module, system_limit,
hopefull_data_encoding, hopefull_export_fun_bug,
huge_iovec, is_alive, dyn_node_name_monitor_node, dyn_node_name_monitor,
- {group, async_dist}].
+ {group, async_dist}, creation_selection].
groups() ->
[{bulk_send, [], [bulk_send_small, bulk_send_big, bulk_send_bigbig]},
@@ -520,9 +522,6 @@ nodes2(Config) when is_list(Config) ->
end,
ok.
-id(X) ->
- X.
-
%% Test optimistic distribution flags toward pending connections (DFLAG_DIST_HOPEFULLY)
optimistic_dflags(Config) when is_list(Config) ->
{ok, PeerSender, _Sender} = ?CT_PEER(#{connection => 0, args => ["-setcookie", "NONE"]}),
@@ -3594,8 +3593,126 @@ async_dist_test(Node) ->
ok.
+creation_selection(Config) when is_list(Config) ->
+ register(creation_selection_test_supervisor, self()),
+ Name = atom_to_list(?FUNCTION_NAME) ++ "-"
+ ++ integer_to_list(erlang:system_time()),
+ Host = hostname(),
+ Cmd = lists:append(
+ [ct:get_progname(),
+ " -noshell",
+ " -setcookie ", atom_to_list(erlang:get_cookie()),
+ " -pa ", filename:dirname(code:which(?MODULE)),
+ " -s ", atom_to_list(?MODULE), " ",
+ " creation_selection_test ", atom_to_list(node()), " ",
+ atom_to_list(net_kernel:longnames()), " ", Name, " ", Host]),
+ ct:pal("Node command: ~p~n", [Cmd]),
+ Port = open_port({spawn, Cmd}, [exit_status]),
+ Node = list_to_atom(lists:append([Name, "@", Host])),
+ ok = receive_creation_selection_info(Port, Node).
+
+receive_creation_selection_info(Port, Node) ->
+ receive
+ {creation_selection_test, Node, Creations, InvalidCreation,
+ ClashResolvedCreation} = Msg ->
+ ct:log("Test result: ~p~n", [Msg]),
+ %% Verify that creation values are created as expected. The
+ %% list of creations is in reverse start order...
+ MaxC = (1 bsl 32) - 1,
+ MinC = 4,
+ StartOrderCreations = lists:reverse(Creations),
+ InvalidCreation = lists:foldl(fun (C, C) when is_integer(C),
+ MinC =< C,
+ C =< MaxC ->
+ %% Return next expected
+ %% creation...
+ if C == MaxC -> MinC;
+ true -> C+1
+ end
+ end,
+ hd(StartOrderCreations),
+ StartOrderCreations),
+ false = lists:member(ClashResolvedCreation, [InvalidCreation
+ | Creations]),
+ receive
+ {Port, {exit_status, 0}} ->
+ Port ! {self(), close},
+ ok;
+ {Port, {exit_status, EStat}} ->
+ ct:fail({"node exited abnormally: ", EStat})
+ end;
+ {Port, {exit_status, EStat}} ->
+ ct:fail({"node prematurely exited: ", EStat});
+ {Port, {data, Data}} ->
+ ct:log("~ts", [Data]),
+ receive_creation_selection_info(Port, Node)
+ end,
+ ok.
+
+creation_selection_test([TestSupNode, LongNames, Name, Host]) ->
+ try
+ StartArgs = [Name,
+ case LongNames of
+ true -> longnames;
+ false -> shortnames
+ end],
+ Node = list_to_atom(lists:append([atom_to_list(Name),
+ "@", atom_to_list(Host)])),
+ GoDistributed = fun (F) ->
+ {ok, _} = net_kernel:start(StartArgs),
+ Node = node(),
+ Creation = erlang:system_info(creation),
+ _ = F(Creation),
+ net_kernel:stop(),
+ Creation
+ end,
+ %% We start multiple times to verify that the creation values
+ %% we get from epmd are delivered in sequence. This is a
+ %% must for the test case such as it is written now, but can be
+ %% changed. If changed, this test case must be updated...
+ {Creations,
+ LastCreation} = lists:foldl(fun (_, {Cs, _LC}) ->
+ CFun = fun (X) -> X end,
+ C = GoDistributed(CFun),
+ {[C|Cs], C}
+ end, {[], 0}, lists:seq(1, 5)),
+ %% We create a pid with the creation that epmd will offer us the next
+ %% time we start the distribution and then start the distribution
+ %% once more. The node should avoid this creation, since this would
+ %% cause external identifiers in the system with same
+ %% nodename/creation pair as used by the local node, which in turn
+ %% would cause these identifers not to work as expected. That is, the
+ %% node should silently reject this creation and chose another one when
+ %% starting the distribution.
+ InvalidCreation = LastCreation+1,
+ Pid = erts_test_utils:mk_ext_pid({Node, InvalidCreation}, 4711, 0),
+ true = erts_debug:size(Pid) > 0, %% External pid
+ ResultFun = fun (ClashResolvedCreation) ->
+ pong = net_adm:ping(TestSupNode),
+ Msg = {creation_selection_test, node(), Creations,
+ InvalidCreation, ClashResolvedCreation},
+ {creation_selection_test_supervisor, TestSupNode}
+ ! Msg,
+ %% Wait a bit so the message have time to get
+ %% through before we take down the distribution...
+ receive after 500 -> ok end
+ end,
+ _ = GoDistributed(ResultFun),
+ %% Ensure Pid is not garbage collected before starting the
+ %% distribution...
+ _ = id(Pid),
+ erlang:halt(0)
+ catch
+ Class:Reason:StackTrace ->
+ erlang:display({Class, Reason, StackTrace}),
+ erlang:halt(17)
+ end.
+
%%% Utilities
+id(X) ->
+ X.
+
wait_until(Fun) ->
wait_until(Fun, 24*60*60*1000).
diff --git a/erts/emulator/test/map_SUITE.erl b/erts/emulator/test/map_SUITE.erl
index 23c072ce86..75dfb36cf6 100644
--- a/erts/emulator/test/map_SUITE.erl
+++ b/erts/emulator/test/map_SUITE.erl
@@ -270,6 +270,8 @@ t_build_and_match_literals_large(Config) when is_list(Config) ->
60 = map_size(M0),
60 = maps:size(M0),
+ 60 = apply(erlang, id(map_size), [M0]),
+ 60 = apply(maps, id(size), [M0]),
% with repeating
M1 = id(#{ 10=>a0,20=>b0,30=>"c0","40"=>"d0",<<"50">>=>"e0",{["00"]}=>"10",
@@ -306,6 +308,8 @@ t_build_and_match_literals_large(Config) when is_list(Config) ->
60 = map_size(M1),
60 = maps:size(M1),
+ 60 = apply(erlang, id(map_size), [M1]),
+ 60 = apply(maps, id(size), [M1]),
% with floats
@@ -359,6 +363,8 @@ t_build_and_match_literals_large(Config) when is_list(Config) ->
90 = map_size(M2),
90 = maps:size(M2),
+ 90 = apply(erlang, id(map_size), [M2]),
+ 90 = apply(maps, id(size), [M2]),
% with bignums
M3 = id(#{ 10=>a0,20=>b0,30=>"c0","40"=>"d0",<<"50">>=>"e0",{["00"]}=>"10",
@@ -422,6 +428,8 @@ t_build_and_match_literals_large(Config) when is_list(Config) ->
98 = map_size(M3),
98 = maps:size(M3),
+ 98 = apply(erlang, id(map_size), [M3]),
+ 98 = apply(maps, id(size), [M3]),
%% with maps
@@ -542,6 +550,8 @@ t_build_and_match_literals_large(Config) when is_list(Config) ->
95 = map_size(M4),
95 = maps:size(M4),
+ 95 = apply(erlang, id(map_size), [M4]),
+ 95 = apply(maps, id(size), [M4]),
% call for value
@@ -639,6 +649,8 @@ t_build_and_match_literals_large(Config) when is_list(Config) ->
95 = map_size(M5),
95 = maps:size(M5),
+ 95 = apply(erlang, id(map_size), [M5]),
+ 95 = apply(maps, id(size), [M5]),
%% remember
@@ -2077,6 +2089,10 @@ t_bif_map_merge(Config) when is_list(Config) ->
{'EXIT',{{badmap,T},[{maps,merge,_,_}|_]}} =
(catch maps:merge(T, #{})),
{'EXIT',{{badmap,T},[{maps,merge,_,_}|_]}} =
+ (catch maps:merge(M11, T)),
+ {'EXIT',{{badmap,T},[{maps,merge,_,_}|_]}} =
+ (catch maps:merge(T, M11)),
+ {'EXIT',{{badmap,T},[{maps,merge,_,_}|_]}} =
(catch maps:merge(T, T))
end),
ok.
@@ -2310,6 +2326,16 @@ t_bif_erlang_phash2() ->
70249457 = erlang:phash2(M0), % 118679416
59617982 = erlang:phash2(M1), % 51612236
70249457 = erlang:phash2(M2), % 118679416
+
+ M1000 = maps:from_list([{K,K} || K <- lists:seq(1,1000)]),
+ 66609305 = erlang:phash2(M1000),
+
+ Mnested1 = #{flatmap => M0, M0 => flatmap, hashmap => M1000, M1000 => hashmap},
+ 113689339 = erlang:phash2(Mnested1),
+
+ Mnested2 = maps:merge(Mnested1, M1000),
+ 29167443 = erlang:phash2(Mnested2),
+
ok.
t_bif_erlang_phash() ->
@@ -2330,6 +2356,16 @@ t_bif_erlang_phash() ->
2620391445 = erlang:phash(M0,Sz), % 3590546636
1670235874 = erlang:phash(M1,Sz), % 4066388227
2620391445 = erlang:phash(M2,Sz), % 3590546636
+
+ M1000 = maps:from_list([{K,K} || K <- lists:seq(1,1000)]),
+ 1945662653 = erlang:phash(M1000, Sz),
+
+ Mnested1 = #{flatmap => M0, M0 => flatmap, hashmap => M1000, M1000 => hashmap},
+ 113694495 = erlang:phash(Mnested1, Sz),
+
+ Mnested2 = maps:merge(Mnested1, M1000),
+ 431825783 = erlang:phash(Mnested2, Sz),
+
ok.
t_map_encode_decode(Config) when is_list(Config) ->
@@ -2805,25 +2841,31 @@ t_maps_without(_Config) ->
%% Verify that the the number of nodes in hashmaps
%% of different types and sizes does not deviate too
%% much from the theoretical model.
+%% For debug with DBG_HASHMAP_COLLISION_BONANZA the test will expect
+%% the hashmaps to NOT be well balanced.
t_hashmap_balance(_Config) ->
+ erts_debug:set_internal_state(available_internal_state, true),
+ ExpectBalance = not erts_debug:get_internal_state(hashmap_collision_bonanza),
+ hashmap_balance(ExpectBalance),
+ erts_debug:set_internal_state(available_internal_state, false),
+ ok.
+
+hashmap_balance(EB) ->
io:format("Integer keys\n", []),
- hashmap_balance(fun(I) -> I end),
+ hashmap_balance(fun(I) -> I end, EB),
io:format("Float keys\n", []),
- hashmap_balance(fun(I) -> float(I) end),
+ hashmap_balance(fun(I) -> float(I) end, EB),
io:format("String keys\n", []),
- hashmap_balance(fun(I) -> integer_to_list(I) end),
+ hashmap_balance(fun(I) -> integer_to_list(I) end, EB),
io:format("Binary (big) keys\n", []),
- hashmap_balance(fun(I) -> <<I:16/big>> end),
+ hashmap_balance(fun(I) -> <<I:16/big>> end, EB),
io:format("Binary (little) keys\n", []),
- hashmap_balance(fun(I) -> <<I:16/little>> end),
+ hashmap_balance(fun(I) -> <<I:16/little>> end, EB),
io:format("Atom keys\n", []),
- erts_debug:set_internal_state(available_internal_state, true),
- hashmap_balance(fun(I) -> erts_debug:get_internal_state({atom,I}) end),
- erts_debug:set_internal_state(available_internal_state, false),
-
+ hashmap_balance(fun(I) -> erts_debug:get_internal_state({atom,I}) end, EB),
ok.
-hashmap_balance(KeyFun) ->
+hashmap_balance(KeyFun, ExpectBalance) ->
%% For uniformly distributed hash values, the average number of nodes N
%% in a hashmap varies between 0.3*K and 0.4*K where K is number of keys.
%% The standard deviation of N is about sqrt(K)/3.
@@ -2867,9 +2909,10 @@ hashmap_balance(KeyFun) ->
erts_debug:flat_size(MaxMap)])
end,
- true = (MaxDiff < 6), % The probability of this line failing is about 0.000000001
- % for a uniform hash. I've set the probability this "high" for now
- % to detect flaws in our make_internal_hash.
+ %% The probability of this line failing is about 0.000000001
+ %% for a uniform hash. I've set the probability this "high" for now
+ %% to detect flaws in our make_internal_hash.
+ ExpectBalance = (MaxDiff < 6),
ok.
hashmap_nodes(M) ->
@@ -2878,6 +2921,7 @@ hashmap_nodes(M) ->
case element(1,Tpl) of
bitmaps -> Acc + element(2,Tpl);
arrays -> Acc + element(2,Tpl);
+ collisions -> Acc + element(2,Tpl);
_ -> Acc
end
end,
diff --git a/erts/emulator/test/process_SUITE.erl b/erts/emulator/test/process_SUITE.erl
index 114fa42da8..080b63c5f6 100644
--- a/erts/emulator/test/process_SUITE.erl
+++ b/erts/emulator/test/process_SUITE.erl
@@ -96,6 +96,8 @@
monitor_alias/1,
spawn_monitor_alias/1,
alias_process_exit/1,
+ demonitor_aliasmonitor/1,
+ down_aliasmonitor/1,
monitor_tag/1]).
-export([prio_server/2, prio_client/2, init/1, handle_event/2]).
@@ -183,7 +185,8 @@ groups() ->
gc_request_when_gc_disabled, gc_request_blast_when_gc_disabled,
otp_16436, otp_16642]},
{alias, [],
- [alias_bif, monitor_alias, spawn_monitor_alias, alias_process_exit]}].
+ [alias_bif, monitor_alias, spawn_monitor_alias, alias_process_exit,
+ demonitor_aliasmonitor, down_aliasmonitor]}].
init_per_suite(Config) ->
A0 = case application:start(sasl) of
@@ -5017,6 +5020,51 @@ alias_process_exit(Config) when is_list(Config) ->
check_pid_ref_table_size(PRTSz),
ok.
+demonitor_aliasmonitor(Config) when is_list(Config) ->
+ {ok, Peer, Node} = ?CT_PEER(),
+ Fun = fun () ->
+ receive
+ {alias, Alias} ->
+ Alias ! {alias_reply, Alias, self()}
+ end
+ end,
+ LPid = spawn(Fun),
+ RPid = spawn(Node, Fun),
+ AliasMonitor = erlang:monitor(process, LPid, [{alias, explicit_unalias}]),
+ erlang:demonitor(AliasMonitor),
+ LPid ! {alias, AliasMonitor},
+ receive {alias_reply, AliasMonitor, LPid} -> ok end,
+ %% Demonitor signal has been received and cleaned up. Cleanup of
+ %% it erroneously removed it from the alias table which caused
+ %% remote use of the alias to stop working...
+ RPid ! {alias, AliasMonitor},
+ receive {alias_reply, AliasMonitor, RPid} -> ok end,
+ exit(LPid, kill),
+ peer:stop(Peer),
+ false = is_process_alive(LPid),
+ ok.
+
+down_aliasmonitor(Config) when is_list(Config) ->
+ {ok, Peer, Node} = ?CT_PEER(),
+ LPid = spawn(fun () -> receive infinty -> ok end end),
+ RPid = spawn(Node,
+ fun () ->
+ receive
+ {alias, Alias} ->
+ Alias ! {alias_reply, Alias, self()}
+ end
+ end),
+ AliasMonitor = erlang:monitor(process, LPid, [{alias, explicit_unalias}]),
+ exit(LPid, bye),
+ receive {'DOWN', AliasMonitor, process, LPid, bye} -> ok end,
+ %% Down signal has been received and cleaned up. Cleanup of
+ %% it erroneously removed it from the alias table which caused
+ %% remote use of the alias to stop working...
+ RPid ! {alias, AliasMonitor},
+ receive {alias_reply, AliasMonitor, RPid} -> ok end,
+ peer:stop(Peer),
+ ok.
+
monitor_tag(Config) when is_list(Config) ->
%% Exit signals with immediate exit reasons are sent
%% in a different manner than compound exit reasons, and
diff --git a/erts/vsn.mk b/erts/vsn.mk
index c9cabd73d4..67df301d2e 100644
--- a/erts/vsn.mk
+++ b/erts/vsn.mk
@@ -18,7 +18,7 @@
# %CopyrightEnd%
#
-VSN = 13.2
+VSN = 13.2.2
# Port number 4365 in 4.2
# Port number 4366 in 4.3
diff --git a/lib/compiler/doc/src/notes.xml b/lib/compiler/doc/src/notes.xml
index af671ff7ba..f92505409c 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 8.2.6</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>Fixed type handling bugs that could cause an internal
+ error in the compiler for correct code.</p>
+ <p>
+ Own Id: OTP-18565 Aux Id: GH-7147 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>Compiler 8.2.5</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>When a map update such as <c>#{}#{key:=value}</c> that
+ should fail with an exception was unused, the exception
+ would be lost.</p>
+ <p>
+ Own Id: OTP-18497 Aux Id: GH-6960, PR-6965 </p>
+ </item>
+ <item>
+ <p>Fixed bug in the validator that made it reject valid
+ code.</p>
+ <p>
+ Own Id: OTP-18516 Aux Id: GH-6969 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Compiler 8.2.4</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/compiler/src/beam_ssa.erl b/lib/compiler/src/beam_ssa.erl
index 5037811614..194fab2242 100644
--- a/lib/compiler/src/beam_ssa.erl
+++ b/lib/compiler/src/beam_ssa.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2018-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2018-2023. 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.
@@ -372,13 +372,22 @@ successors(#b_blk{last=Terminator}) ->
-spec normalize(b_set() | terminator()) ->
b_set() | terminator().
-normalize(#b_set{op={bif,Bif},args=Args}=Set) ->
+normalize(#b_set{anno=Anno0,op={bif,Bif},args=Args}=Set) ->
case {is_commutative(Bif),Args} of
- {false,_} ->
- Set;
- {true,[#b_literal{}=Lit,#b_var{}=Var]} ->
- Set#b_set{args=[Var,Lit]};
- {true,_} ->
+ {true, [#b_literal{}=Lit,#b_var{}=Var]} ->
+ Anno = case Anno0 of
+ #{arg_types := ArgTypes0} ->
+ case ArgTypes0 of
+ #{1 := Type} ->
+ Anno0#{arg_types => #{0 => Type}};
+ #{} ->
+ Anno0
+ end;
+ #{} ->
+ Anno0
+ end,
+ Set#b_set{anno=Anno,args=[Var,Lit]};
+ {_, _} ->
Set
end;
normalize(#b_set{}=Set) ->
diff --git a/lib/compiler/src/beam_validator.erl b/lib/compiler/src/beam_validator.erl
index 98eacce0fc..413d246d4d 100644
--- a/lib/compiler/src/beam_validator.erl
+++ b/lib/compiler/src/beam_validator.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2004-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2004-2023. 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.
@@ -1463,7 +1463,7 @@ update_create_bin_list([], Vst) -> Vst.
update_create_bin_type(append) -> #t_bitstring{};
update_create_bin_type(private_append) -> #t_bitstring{};
update_create_bin_type(binary) -> #t_bitstring{};
-update_create_bin_type(float) -> #t_float{};
+update_create_bin_type(float) -> number;
update_create_bin_type(integer) -> #t_integer{};
update_create_bin_type(utf8) -> #t_integer{};
update_create_bin_type(utf16) -> #t_integer{};
@@ -2299,6 +2299,8 @@ update_type(Merge, With, #value_ref{}=Ref, Vst0) ->
case Merge(Current, With) of
none ->
throw({type_conflict, Current, With});
+ Current ->
+ Vst0;
Type ->
Vst = update_container_type(Type, Ref, Vst0),
set_type(Type, Ref, Vst)
diff --git a/lib/compiler/src/sys_core_fold.erl b/lib/compiler/src/sys_core_fold.erl
index d79753068f..fb23fd7d63 100644
--- a/lib/compiler/src/sys_core_fold.erl
+++ b/lib/compiler/src/sys_core_fold.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1999-2022. All Rights Reserved.
+%% Copyright Ericsson AB 1999-2023. 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.
@@ -215,15 +215,15 @@ expr(#c_tuple{anno=Anno,es=Es0}=Tuple, Ctxt, Sub) ->
ann_c_tuple(Anno, Es)
end;
expr(#c_map{anno=Anno,arg=V0,es=Es0}=Map, Ctxt, Sub) ->
- Es = pair_list(Es0, Ctxt, descend(Map, Sub)),
+ %% Warn for useless building, but always build the map
+ %% anyway to preserve a possible exception.
case Ctxt of
- effect ->
- warn_useless_building(Map, Sub),
- make_effect_seq(Es, Sub);
- value ->
- V = expr(V0, Ctxt, Sub),
- ann_c_map(Anno,V,Es)
- end;
+ effect -> warn_useless_building(Map, Sub);
+ value -> ok
+ end,
+ Es = pair_list(Es0, descend(Map, Sub)),
+ V = expr(V0, value, Sub),
+ ann_c_map(Anno, V, Es);
expr(#c_binary{segments=Ss}=Bin0, Ctxt, Sub) ->
%% Warn for useless building, but always build the binary
%% anyway to preserve a possible exception.
@@ -490,14 +490,12 @@ ifes_list(_FVar, [], _Safe) ->
expr_list(Es, Ctxt, Sub) ->
[expr(E, Ctxt, Sub) || E <- Es].
-pair_list(Es, Ctxt, Sub) ->
- [pair(E, Ctxt, Sub) || E <- Es].
+pair_list(Es, Sub) ->
+ [pair(E, Sub) || E <- Es].
-pair(#c_map_pair{key=K,val=V}, effect, Sub) ->
- make_effect_seq([K,V], Sub);
-pair(#c_map_pair{key=K0,val=V0}=Pair, value=Ctxt, Sub) ->
- K = expr(K0, Ctxt, Sub),
- V = expr(V0, Ctxt, Sub),
+pair(#c_map_pair{key=K0,val=V0}=Pair, Sub) ->
+ K = expr(K0, value, Sub),
+ V = expr(V0, value, Sub),
Pair#c_map_pair{key=K,val=V}.
bitstr_list(Es, Sub) ->
diff --git a/lib/compiler/test/beam_ssa_SUITE.erl b/lib/compiler/test/beam_ssa_SUITE.erl
index d1330b78bf..c64dc3ad5d 100644
--- a/lib/compiler/test/beam_ssa_SUITE.erl
+++ b/lib/compiler/test/beam_ssa_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2018-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2018-2023. 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.
@@ -26,7 +26,7 @@
beam_ssa_dead_crash/1,stack_init/1,
mapfoldl/0,mapfoldl/1,
grab_bag/1,redundant_br/1,
- coverage/1]).
+ coverage/1,normalize/1]).
suite() -> [{ct_hooks,[ts_install_cth]}].
@@ -47,7 +47,8 @@ groups() ->
stack_init,
grab_bag,
redundant_br,
- coverage
+ coverage,
+ normalize
]}].
init_per_suite(Config) ->
@@ -1178,5 +1179,90 @@ coverage_5() ->
error
end#coverage{name = whatever}.
+%% Test beam_ssa:normalize/1, especially that argument types are
+%% correctly updated when arguments are swapped.
+normalize(_Config) ->
+ normalize_commutative({bif,'band'}),
+ normalize_commutative({bif,'+'}),
+
+ normalize_noncommutative({bif,'div'}),
+
+ ok.
+
+-record(b_var, {name}).
+-record(b_literal, {val}).
+
+normalize_commutative(Op) ->
+ A = #b_var{name=a},
+ B = #b_var{name=b},
+ Lit = #b_literal{val=42},
+
+ normalize_same(Op, [A,B]),
+ normalize_same(Op, [A,Lit]),
+
+ normalize_swapped(Op, [Lit,A]),
+
+ ok.
+
+normalize_noncommutative(Op) ->
+ A = #b_var{name=a},
+ B = #b_var{name=b},
+ Lit = #b_literal{val=42},
+
+ normalize_same(Op, [A,B]),
+ normalize_same(Op, [A,Lit]),
+
+ ArgTypes0 = [{1,beam_types:make_integer(0, 1023)}],
+ I1 = make_bset(ArgTypes0, Op, [Lit,A]),
+ I1 = beam_ssa:normalize(I1),
+
+ ok.
+
+normalize_same(Op, Args) ->
+ I0 = make_bset(#{}, Op, Args),
+ I0 = beam_ssa:normalize(I0),
+
+ ArgTypes0 = [{0,beam_types:make_integer(0, 1023)}],
+ I1 = make_bset(ArgTypes0, Op, Args),
+ I1 = beam_ssa:normalize(I1),
+
+ case Args of
+ [#b_var{},#b_var{}] ->
+ ArgTypes1 = [{0,beam_types:make_integer(0, 1023)},
+ {1,beam_types:make_integer(42)}],
+ I2 = make_bset(ArgTypes1, Op, Args),
+ I2 = beam_ssa:normalize(I2);
+ [_,_] ->
+ ok
+ end,
+
+ ok.
+
+normalize_swapped(Op, [#b_literal{}=Lit,#b_var{}=Var]=Args) ->
+ EmptyAnno = #{},
+ I0 = make_bset(EmptyAnno, Op, Args),
+ {b_set,EmptyAnno,#b_var{name=1000},Op,[Var,Lit]} = beam_ssa:normalize(I0),
+
+ EmptyTypes = #{arg_types => #{}},
+ I1 = make_bset(EmptyTypes, Op, Args),
+ {b_set,EmptyTypes,#b_var{name=1000},Op,[Var,Lit]} = beam_ssa:normalize(I1),
+
+ IntRange = beam_types:make_integer(0, 1023),
+ ArgTypes0 = [{1,IntRange}],
+ I2 = make_bset(ArgTypes0, Op, Args),
+ {[{0,IntRange}],Op,[Var,Lit]} = unpack_bset(beam_ssa:normalize(I2)),
+
+ ok.
+
+make_bset(ArgTypes, Op, Args) when is_list(ArgTypes) ->
+ Anno = #{arg_types => maps:from_list(ArgTypes)},
+ {b_set,Anno,#b_var{name=1000},Op,Args};
+make_bset(Anno, Op, Args) when is_map(Anno) ->
+ {b_set,Anno,#b_var{name=1000},Op,Args}.
+
+unpack_bset({b_set,Anno,{b_var,1000},Op,Args}) ->
+ ArgTypes = maps:get(arg_types, Anno, #{}),
+ {lists:sort(maps:to_list(ArgTypes)),Op,Args}.
+
%% The identity function.
id(I) -> I.
diff --git a/lib/compiler/test/beam_type_SUITE.erl b/lib/compiler/test/beam_type_SUITE.erl
index ceb7ff07b3..aa8f5b5588 100644
--- a/lib/compiler/test/beam_type_SUITE.erl
+++ b/lib/compiler/test/beam_type_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2015-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2015-2023. 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.
@@ -499,11 +499,17 @@ record_float(R, N0) ->
binary_float(_Config) ->
<<-1/float>> = binary_negate_float(<<1/float>>),
+ {'EXIT',{badarg,_}} = catch binary_float_1(id(64.0), id(0)),
ok.
binary_negate_float(<<Float/float>>) ->
<<-Float/float>>.
+%% GH-7147.
+binary_float_1(X, Y) ->
+ _ = <<Y:(ceil(64.0 = X))/float, (binary_to_integer(ok))>>,
+ ceil(X) band Y.
+
float_compare(_Config) ->
false = do_float_compare(-42.0),
false = do_float_compare(-42),
diff --git a/lib/compiler/test/beam_validator_SUITE.erl b/lib/compiler/test/beam_validator_SUITE.erl
index 64a356c7e4..47970f3021 100644
--- a/lib/compiler/test/beam_validator_SUITE.erl
+++ b/lib/compiler/test/beam_validator_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2004-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2004-2023. 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.
@@ -41,7 +41,8 @@
missing_return_type/1,will_succeed/1,
bs_saved_position_units/1,parent_container/1,
container_performance/1,
- not_equal_inference/1]).
+ not_equal_inference/1,
+ inert_update_type/1]).
-include_lib("common_test/include/ct.hrl").
@@ -77,7 +78,8 @@ groups() ->
missing_return_type,will_succeed,
bs_saved_position_units,parent_container,
container_performance,
- not_equal_inference]}].
+ not_equal_inference,
+ inert_update_type]}].
init_per_suite(Config) ->
test_lib:recompile(?MODULE),
@@ -1045,5 +1047,18 @@ not_equal_inference(_Config) ->
not_equal_inference_1(X) when (X /= []) /= is_port(0 div 0) ->
[X || _ <- []].
+%% GH-6969: A type was made concrete even though that added no additional
+%% information.
+inert_update_type(_Config) ->
+ hello(<<"string">>, id(42)).
+
+hello(A, B) ->
+ mike([{sys_period, {A, B}}, {some_atom, B}]).
+
+mike([Head | _Rest]) -> joe(Head).
+
+joe({Name, 42}) -> Name;
+joe({sys_period, {A, _B}}) -> {41, 42, A}.
+
id(I) ->
I.
diff --git a/lib/compiler/test/bif_SUITE.erl b/lib/compiler/test/bif_SUITE.erl
index 8480569507..fc1d9ddfc0 100644
--- a/lib/compiler/test/bif_SUITE.erl
+++ b/lib/compiler/test/bif_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2016-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2016-2023. 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.
@@ -24,7 +24,8 @@
-export([all/0,suite/0,groups/0,init_per_suite/1,end_per_suite/1,
init_per_group/2,end_per_group/2,
beam_validator/1,trunc_and_friends/1,cover_safe_and_pure_bifs/1,
- cover_trim/1]).
+ cover_trim/1,
+ head_tail/1]).
suite() ->
[{ct_hooks,[ts_install_cth]}].
@@ -37,7 +38,8 @@ groups() ->
[beam_validator,
trunc_and_friends,
cover_safe_and_pure_bifs,
- cover_trim
+ cover_trim,
+ head_tail
]}].
init_per_suite(Config) ->
@@ -167,6 +169,28 @@ cover_trim_3(Header, N)->
false
end.
+%% GH-7024: The loader transformations for hd/1 and tl/1 were incorrect and
+%% failed when certain optimizations were turned off.
+head_tail(_Config) ->
+ {1, ok} = head_case(),
+ {1, ok} = tail_case(),
+
+ 1 = hd(id([1])),
+ [] = tl(id([1])),
+
+ ok.
+
+head_case() ->
+ case 1 of
+ X when hd(X) -> blurf;
+ X -> {X, ok}
+ end.
+
+tail_case() ->
+ case 1 of
+ X when tl(X) -> blurf;
+ X -> {X, ok}
+ end.
id(I) ->
I.
diff --git a/lib/compiler/test/core_fold_SUITE.erl b/lib/compiler/test/core_fold_SUITE.erl
index 4da55bed2e..8167ab517d 100644
--- a/lib/compiler/test/core_fold_SUITE.erl
+++ b/lib/compiler/test/core_fold_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2007-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2007-2023. 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.
@@ -29,7 +29,7 @@
no_no_file/1,configuration/1,supplies/1,
redundant_stack_frame/1,export_from_case/1,
empty_values/1,cover_letrec_effect/1,
- receive_effect/1]).
+ receive_effect/1,map_effect/1]).
-export([foo/0,foo/1,foo/2,foo/3]).
@@ -50,7 +50,7 @@ groups() ->
no_no_file,configuration,supplies,
redundant_stack_frame,export_from_case,
empty_values,cover_letrec_effect,
- receive_effect]}].
+ receive_effect,map_effect]}].
init_per_suite(Config) ->
@@ -700,4 +700,20 @@ receive_effect(_Config) ->
do_receive_effect() ->
{} = receive _ -> {} = {} end.
+map_effect(_Config) ->
+ {'EXIT',{{badkey,key},_}} = catch map_effect_1(),
+
+ {'EXIT',{{badkey,key},_}} = catch map_effect_2(#{}),
+ {'EXIT',{{badmap,no_map},_}} = catch map_effect_2(no_map),
+
+ ok.
+
+map_effect_1() ->
+ #{}#{key := value},
+ ok.
+
+map_effect_2(Map) ->
+ Map#{key := value},
+ ok.
+
id(I) -> I.
diff --git a/lib/compiler/vsn.mk b/lib/compiler/vsn.mk
index 0a39fcf419..fa46ea4097 100644
--- a/lib/compiler/vsn.mk
+++ b/lib/compiler/vsn.mk
@@ -1 +1 @@
-COMPILER_VSN = 8.2.4
+COMPILER_VSN = 8.2.6
diff --git a/lib/crypto/c_src/dh.c b/lib/crypto/c_src/dh.c
index 4bcab0ec6e..15a08470a6 100644
--- a/lib/crypto/c_src/dh.c
+++ b/lib/crypto/c_src/dh.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2010-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2010-2023. 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.
@@ -41,7 +41,7 @@ ERL_NIF_TERM dh_compute_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg
/* Has 3_0 */
ERL_NIF_TERM dh_generate_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{/* (PrivKey|undefined, DHParams=[P,G], 0, Len|0) */
- unsigned long len = 0;
+ ErlNifUInt64 len = 0;
int i = 0;
OSSL_PARAM params[8];
EVP_PKEY *pkey = NULL, *pkey_gen = NULL;
@@ -84,7 +84,7 @@ ERL_NIF_TERM dh_generate_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
*/
/* argv[3] is the length of the private key that is to be generated */
- if (!enif_get_ulong(env, argv[3], &len) ||
+ if (!enif_get_uint64(env, argv[3], &len) ||
(len > LONG_MAX) ) {
ret = EXCP_BADARG_N(env, 3, "Bad value of length element");
goto done;
diff --git a/lib/crypto/c_src/openssl_config.h b/lib/crypto/c_src/openssl_config.h
index 647ab25ad4..454902f266 100644
--- a/lib/crypto/c_src/openssl_config.h
+++ b/lib/crypto/c_src/openssl_config.h
@@ -127,6 +127,15 @@
# define HAS_EVP_PKEY_CTX
# define HAVE_EVP_CIPHER_CTX_COPY
# endif
+# if LIBRESSL_VERSION_NUMBER >= 0x3070200fL
+# define HAVE_PKEY_new_raw_private_key
+# endif
+# if LIBRESSL_VERSION_NUMBER >= 0x3030300fL
+# define HAVE_EVP_PKEY_new_CMAC_key
+# endif
+# if LIBRESSL_VERSION_NUMBER >= 0x3040100fL
+# define HAVE_DigestSign_as_single_op
+# endif
#endif
#if defined(HAS_EVP_PKEY_CTX) \
diff --git a/lib/crypto/doc/src/notes.xml b/lib/crypto/doc/src/notes.xml
index 954d5cd664..fa5e9d5bea 100644
--- a/lib/crypto/doc/src/notes.xml
+++ b/lib/crypto/doc/src/notes.xml
@@ -31,6 +31,22 @@
</header>
<p>This document describes the changes made to the Crypto application.</p>
+<section><title>Crypto 5.1.4</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ With this change, random errors are fixed for
+ crypto:generate_key calls with OpenSSL 3.</p>
+ <p>
+ Own Id: OTP-18555</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Crypto 5.1.3</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/crypto/vsn.mk b/lib/crypto/vsn.mk
index 41dfbaef97..56f5a0f48e 100644
--- a/lib/crypto/vsn.mk
+++ b/lib/crypto/vsn.mk
@@ -1 +1 @@
-CRYPTO_VSN = 5.1.3
+CRYPTO_VSN = 5.1.4
diff --git a/lib/eldap/doc/src/eldap.xml b/lib/eldap/doc/src/eldap.xml
index 4d9ec96a70..b97bdebd16 100644
--- a/lib/eldap/doc/src/eldap.xml
+++ b/lib/eldap/doc/src/eldap.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2012</year><year>2022</year>
+ <year>2012</year><year>2023</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -548,6 +548,18 @@ Control2 = eldap:paged_result_control(PageSize, Cookie1),
the series.</p>
</desc>
</func>
+ <func>
+ <name since="OTP 25.3.1">info(Handle) -> connection_info()</name>
+ <fsummary>Returns information about the LDAP connection.
+ </fsummary>
+ <type>
+ <v>connection_info() = #{socket := Socket, socket_type := tcp | ssl}</v>
+ <v>Socket = ssl:sslsocket() | gen_tcp:socket()</v>
+ </type>
+ <desc><p>Currently available information reveals the socket and the transport
+ protocol, TCP or TLS (SSL), used by the LDAP connection.</p>
+ </desc>
+ </func>
</funcs>
diff --git a/lib/eldap/doc/src/notes.xml b/lib/eldap/doc/src/notes.xml
index 563f75e827..881c1215b4 100644
--- a/lib/eldap/doc/src/notes.xml
+++ b/lib/eldap/doc/src/notes.xml
@@ -31,6 +31,22 @@
</header>
<p>This document describes the changes made to the Eldap application.</p>
+<section><title>Eldap 1.2.11</title>
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Added a new function eldap:info/1 that returns the socket
+ and the transport protocol for the eldap connection.</p>
+ <p>
+ Own Id: OTP-18480</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Eldap 1.2.10</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/eldap/src/eldap.erl b/lib/eldap/src/eldap.erl
index 22d816c8c8..7edd012263 100644
--- a/lib/eldap/src/eldap.erl
+++ b/lib/eldap/src/eldap.erl
@@ -30,7 +30,8 @@
parse_ldap_url/1,
paged_result_control/1,
paged_result_control/2,
- paged_result_cookie/1]).
+ paged_result_cookie/1,
+ info/1]).
-export([neverDerefAliases/0, derefInSearching/0,
derefFindingBaseObj/0, derefAlways/0]).
@@ -155,6 +156,13 @@ controlling_process(Handle, Pid) when is_pid(Handle), is_pid(Pid) ->
recv(Handle).
%%% --------------------------------------------------------------------
+%%% Return LDAP socket information
+%%% --------------------------------------------------------------------
+info(Handle) when is_pid(Handle) ->
+ send(Handle, info),
+ recv(Handle).
+
+%%% --------------------------------------------------------------------
%%% Authenticate ourselves to the Directory
%%% using simple authentication.
%%%
@@ -608,6 +616,18 @@ loop(Cpid, Data) ->
send(From, Result),
?MODULE:loop(Cpid, Data);
+ {From, info} ->
+ SocketType =
+ case Data#eldap.ldaps of
+ true ->
+ ssl;
+ false ->
+ tcp
+ end,
+ Res = #{socket => Data#eldap.fd, socket_type => SocketType},
+ send(From, Res),
+ ?MODULE:loop(Cpid, Data);
+
{Cpid, 'EXIT', Reason} ->
?PRINT("Got EXIT from Cpid, reason=~p~n",[Reason]),
exit(Reason);
@@ -618,7 +638,6 @@ loop(Cpid, Data) ->
end.
-
%%% --------------------------------------------------------------------
%%% startTLS Request
%%% --------------------------------------------------------------------
diff --git a/lib/eldap/test/eldap_basic_SUITE.erl b/lib/eldap/test/eldap_basic_SUITE.erl
index 5fa6d4ca69..8bc041f609 100644
--- a/lib/eldap/test/eldap_basic_SUITE.erl
+++ b/lib/eldap/test/eldap_basic_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2012-2021. All Rights Reserved.
+%% Copyright Ericsson AB 2012-2023. 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.
@@ -46,6 +46,7 @@
more_add/1,
open_ret_val_error/1,
open_ret_val_success/1,
+ plain_ldap_socket_info/1,
search_filter_and/1,
search_filter_and_not/1,
search_filter_equalityMatch/1,
@@ -63,6 +64,7 @@
search_extensible_match_without_dn/1,
search_paged_results/1,
ssl_connection/1,
+ ssl_conn_socket_info/1,
start_tls_on_ssl_should_fail/1,
start_tls_twice_should_fail/1,
tcp_connection/1,
@@ -81,8 +83,8 @@
suite/0
]).
-%%-include_lib("common_test/include/ct.hrl").
-include_lib("common_test/include/ct.hrl").
+-include_lib("stdlib/include/assert.hrl").
-include_lib("eldap/include/eldap.hrl").
-include_lib("eldap/ebin/ELDAPv3.hrl").
@@ -159,7 +161,9 @@ connection_tests() ->
client_side_bind_timeout,
client_side_add_timeout,
client_side_search_timeout,
- close_after_tcp_error
+ close_after_tcp_error,
+ ssl_conn_socket_info,
+ plain_ldap_socket_info
].
@@ -259,7 +263,7 @@ end_per_group(start_tls_api, Config) -> clear_db(Config);
end_per_group(_Group, Config) -> Config.
-init_per_testcase(ssl_connection, Config) ->
+init_per_testcase(TC, Config) when TC == ssl_connection; TC == ssl_conn_socket_info ->
case proplists:get_value(ssl_available,Config) of
true ->
SSL_Port = 9999,
@@ -423,6 +427,35 @@ ssl_connection(Config) ->
end.
%%%----------------------------------------------------------------
+ssl_conn_socket_info(Config) ->
+ Host = proplists:get_value(listen_host, Config),
+ Port = proplists:get_value(ssl_listen_port, Config),
+ Opts = proplists:get_value(tcp_connect_opts, Config),
+ SSLOpts = proplists:get_value(ssl_connect_opts, Config),
+ case eldap:open([Host], [{port,Port},
+ {ssl,true},
+ {timeout,5000},
+ {sslopts,SSLOpts}|Opts]) of
+ {ok,H} ->
+ #{socket := Socket, socket_type := ssl} = eldap:info(H),
+ ?assertMatch({ok, _Data}, ssl:connection_information(Socket));
+ Other -> ct:fail("eldap:open failed: ~p",[Other])
+ end.
+
+%%%----------------------------------------------------------------
+plain_ldap_socket_info(Config) ->
+ Host = proplists:get_value(listen_host, Config),
+ Port = proplists:get_value(listen_port, Config),
+ Opts = proplists:get_value(tcp_connect_opts, Config),
+ T = 1000,
+ case eldap:open([Host], [{timeout,T},{port,Port}|Opts]) of
+ {ok,H} ->
+ ?assertMatch(#{socket := _, socket_type := tcp},
+ eldap:info(H));
+ Other -> ct:fail("eldap:open failed: ~p",[Other])
+ end.
+
+%%%----------------------------------------------------------------
client_side_add_timeout(Config) ->
client_timeout(
fun(H) ->
diff --git a/lib/eldap/vsn.mk b/lib/eldap/vsn.mk
index 77d89248c9..a25f97cb89 100644
--- a/lib/eldap/vsn.mk
+++ b/lib/eldap/vsn.mk
@@ -1 +1 @@
-ELDAP_VSN = 1.2.10
+ELDAP_VSN = 1.2.11
diff --git a/lib/erl_interface/configure b/lib/erl_interface/configure
index acfd569e30..049c3371fc 100755
--- a/lib/erl_interface/configure
+++ b/lib/erl_interface/configure
@@ -8718,7 +8718,7 @@ int
main (void)
{
- __asm__ __volatile__("isb sy" : : : "memory");
+ __asm__ __volatile__("isb sy\n" : : : "memory");
;
return 0;
@@ -8752,7 +8752,7 @@ int
main (void)
{
- char data[512]; __asm__ __volatile__("dc cvau, %0" : "r" (data) : : "memory");
+ char data[512]; __asm__ __volatile__("dc cvau, %0\n" :: "r" (data) : "memory");
;
return 0;
@@ -8786,7 +8786,7 @@ int
main (void)
{
- char data[512]; __asm__ __volatile__("ic ivau, %0" : "r" (data) : : "memory");
+ char data[512]; __asm__ __volatile__("ic ivau, %0\n" :: "r" (data) : "memory");
;
return 0;
diff --git a/lib/erl_interface/doc/src/notes.xml b/lib/erl_interface/doc/src/notes.xml
index a1bb84f224..7bac4913ab 100644
--- a/lib/erl_interface/doc/src/notes.xml
+++ b/lib/erl_interface/doc/src/notes.xml
@@ -31,6 +31,22 @@
</header>
<p>This document describes the changes made to the Erl_interface application.</p>
+<section><title>Erl_Interface 5.3.2</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>Fixed configure tests for a few ARM-specific
+ instructions, which prevented the emulator from being
+ built on some platforms.</p>
+ <p>
+ Own Id: OTP-18554</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Erl_Interface 5.3.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/erl_interface/vsn.mk b/lib/erl_interface/vsn.mk
index badd74c6da..683e6643c7 100644
--- a/lib/erl_interface/vsn.mk
+++ b/lib/erl_interface/vsn.mk
@@ -1,2 +1,2 @@
-EI_VSN = 5.3.1
+EI_VSN = 5.3.2
ERL_INTERFACE_VSN = $(EI_VSN)
diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml
index d935ad2f11..a10ee19030 100644
--- a/lib/inets/doc/src/notes.xml
+++ b/lib/inets/doc/src/notes.xml
@@ -33,7 +33,33 @@
<file>notes.xml</file>
</header>
- <section><title>Inets 8.3</title>
+ <section><title>Inets 8.3.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Correct timing related pipelining/keepalive queue bug,
+ that could result in unexpected "socket_remotly_closed"
+ errors.</p>
+ <p>
+ Own Id: OTP-18509 Aux Id: OTP-18476 </p>
+ </item>
+ <item>
+ <p>
+ With this change, upon remote socket closure current
+ request is added to a retried queue (either pipeline or
+ keep_alive, but not both).</p>
+ <p>
+ Own Id: OTP-18545 Aux Id: OTP-18509, ERIERL-937,
+ ERIERL-928 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>Inets 8.3</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
@@ -276,6 +302,41 @@
</section>
+ <section><title>Inets 7.5.3.4</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ With this change, upon remote socket closure current
+ request is added to a retried queue (either pipeline or
+ keep_alive, but not both).</p>
+ <p>
+ Own Id: OTP-18545 Aux Id: OTP-18509, ERIERL-937,
+ ERIERL-928 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+ <section><title>Inets 7.5.3.3</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Correct timing related pipelining/keepalive queue bug,
+ that could result in unexpected "socket_remotly_closed"
+ errors.</p>
+ <p>
+ Own Id: OTP-18509 Aux Id: OTP-18476 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Inets 7.5.3.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/inets/vsn.mk b/lib/inets/vsn.mk
index 99285501c5..78efa696d8 100644
--- a/lib/inets/vsn.mk
+++ b/lib/inets/vsn.mk
@@ -19,6 +19,6 @@
# %CopyrightEnd%
APPLICATION = inets
-INETS_VSN = 8.3
+INETS_VSN = 8.3.1
PRE_VSN =
APP_VSN = "$(APPLICATION)-$(INETS_VSN)$(PRE_VSN)"
diff --git a/lib/os_mon/doc/src/notes.xml b/lib/os_mon/doc/src/notes.xml
index 1fac53d330..439c1e839a 100644
--- a/lib/os_mon/doc/src/notes.xml
+++ b/lib/os_mon/doc/src/notes.xml
@@ -31,6 +31,23 @@
</header>
<p>This document describes the changes made to the OS_Mon application.</p>
+<section><title>Os_Mon 2.8.2</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Avoid error report from failing <c>erlang:port_close</c>
+ at shutdown of <c>cpu_sup</c> and <c>memsup</c>. Bug
+ exists since OTP 25.3 (os_mon-2.8.1).</p>
+ <p>
+ Own Id: OTP-18559 Aux Id: ERIERL-942 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Os_Mon 2.8.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/os_mon/src/cpu_sup.erl b/lib/os_mon/src/cpu_sup.erl
index be917021e7..adf1f45265 100644
--- a/lib/os_mon/src/cpu_sup.erl
+++ b/lib/os_mon/src/cpu_sup.erl
@@ -613,8 +613,8 @@ port_server_loop(Port, Timeout) ->
% Close port and this server
{Pid, ?quit} ->
- port_command(Port, ?quit),
- port_close(Port),
+ Port ! {self(), {command, ?quit}},
+ Port ! {self(), close},
Pid ! {self(), {data, quit}},
ok;
diff --git a/lib/os_mon/src/memsup.erl b/lib/os_mon/src/memsup.erl
index 1c93bfbae4..c467adc2e5 100644
--- a/lib/os_mon/src/memsup.erl
+++ b/lib/os_mon/src/memsup.erl
@@ -653,7 +653,7 @@ start_portprogram() ->
port_shutdown(Port) ->
Port ! {self(), {command, [?EXIT]}},
- port_close(Port).
+ Port ! {self(), close}.
%% The connected process loops are a bit awkward (several different
%% functions doing almost the same thing) as
diff --git a/lib/os_mon/vsn.mk b/lib/os_mon/vsn.mk
index 9e64a83612..d6878e6773 100644
--- a/lib/os_mon/vsn.mk
+++ b/lib/os_mon/vsn.mk
@@ -1 +1 @@
-OS_MON_VSN = 2.8.1
+OS_MON_VSN = 2.8.2
diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml
index e692ca99bb..01cff8fa4b 100644
--- a/lib/snmp/doc/src/notes.xml
+++ b/lib/snmp/doc/src/notes.xml
@@ -34,7 +34,23 @@
</header>
- <section><title>SNMP 5.13.4</title>
+ <section><title>SNMP 5.13.5</title>
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Attempts to minimize the number of the error reports
+ during a failed agent init.</p>
+ <p>
+ Own Id: OTP-18422 Aux Id: ERIERL-873 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>SNMP 5.13.4</title>
<section><title>Improvements and New Features</title>
<list>
@@ -163,6 +179,22 @@
</section>
+ <section><title>SNMP 5.12.0.3</title>
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Attempts to minimize the number of the error reports
+ during a failed agent init.</p>
+ <p>
+ Own Id: OTP-18422 Aux Id: ERIERL-873 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>SNMP 5.12.0.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/snmp/doc/src/snmp_app.xml b/lib/snmp/doc/src/snmp_app.xml
index 0613de3158..1400e7bf32 100644
--- a/lib/snmp/doc/src/snmp_app.xml
+++ b/lib/snmp/doc/src/snmp_app.xml
@@ -4,7 +4,7 @@
<appref>
<header>
<copyright>
- <year>1997</year><year>2021</year>
+ <year>1997</year><year>2023</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -295,14 +295,15 @@ in the snmp_config file!
<c><![CDATA[agent_net_if_options() = [agent_net_if_option()] <optional>]]></c></tag>
<item>
<p><c>agent_net_if_option() =
- {bind_to, bind_to()} |
- {sndbuf, sndbuf()} |
- {recbuf, recbuf()} |
- {no_reuse, no_reuse()} |
- {req_limit, req_limit()} |
- {filter, agent_net_if_filter_options()} |
- {extra_sock_opts, extra_socket_options()} |
- {inet_backend, inet | socket}</c></p>
+ {bind_to, bind_to()} |
+ {sndbuf, sndbuf()} |
+ {recbuf, recbuf()} |
+ {no_reuse, no_reuse()} |
+ {req_limit, req_limit()} |
+ {filter, agent_net_if_filter_options()} |
+ {open_err_filters, agent_net_if_open_err_filters()} |
+ {extra_sock_opts, extra_socket_options()} |
+ {inet_backend, inet | socket}</c></p>
<p>These options are actually specific to the used module.
The ones shown here are applicable to the default
<c>agent_net_if_module()</c>.</p>
@@ -343,6 +344,25 @@ in the snmp_config file!
<p>Default is <c>snmpa_net_if_filter</c>.</p>
</item>
+ <tag><marker id="agent_ni_open_err_filters"></marker>
+ <c><![CDATA[agent_net_if_open_err_filters() = [agent_net_if_open_err_filter()] <optional>]]></c></tag>
+ <item>
+ <p><c>agent_net_if_open_err_filter() = atom()</c></p>
+ <p>During agent initiation, the transports UDP sockets are opened.
+ If this operation fails, the net-if (and the agent) fails to start
+ (crash). This (filter) list contains error (reasons) that will
+ make net-if fail "nicely".
+ This (filter) list, is supposed to contain errors that can be
+ returned by
+ <seemfa marker="kernel:gen_udp#open/1">gen_udp:open/1,2</seemfa>.
+ The effect is that any error returned by
+ <seemfa marker="kernel:gen_udp#open/1">gen_udp:open</seemfa>
+ which *are* in this list, will be considered
+ "non-fatal" and will only result in an info message, rather than
+ an error message. Net If, and the agent, will still crash,
+ but will produce a less obnoxious message. </p>
+ </item>
+
<tag><marker id="agent_mibs"></marker>
<c><![CDATA[agent_mibs() = [string()] <optional>]]></c></tag>
<item>
diff --git a/lib/snmp/doc/src/snmp_config.xml b/lib/snmp/doc/src/snmp_config.xml
index 0b8d786a2d..99324ed400 100644
--- a/lib/snmp/doc/src/snmp_config.xml
+++ b/lib/snmp/doc/src/snmp_config.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>1997</year><year>2021</year>
+ <year>1997</year><year>2023</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -281,14 +281,15 @@
<c><![CDATA[agent_net_if_options() = [agent_net_if_option()] <optional>]]></c></tag>
<item>
<p><c>agent_net_if_option() =
- {bind_to, bind_to()} |
- {sndbuf, sndbuf()} |
- {recbuf, recbuf()} |
- {no_reuse, no_reuse()} |
- {req_limit, req_limit()} |
- {filter, agent_net_if_filter_options()} |
- {extra_sock_opts, extra_socket_options()} |
- {inet_backend, inet | socket}</c></p>
+ {bind_to, bind_to()} |
+ {sndbuf, sndbuf()} |
+ {recbuf, recbuf()} |
+ {no_reuse, no_reuse()} |
+ {req_limit, req_limit()} |
+ {filter, agent_net_if_filter_options()} |
+ {extra_sock_opts, extra_socket_options()} |
+ {open_err_filters, agent_net_if_open_err_filters()} |
+ {inet_backend, inet | socket}</c></p>
<p>These options are actually specific to the used module.
The ones shown here are applicable to the default
<c>agent_net_if_module()</c>.</p>
@@ -329,6 +330,25 @@
<p>Default is <c>snmpa_net_if_filter</c>.</p>
</item>
+ <tag><marker id="agent_ni_open_err_filters"></marker>
+ <c><![CDATA[agent_net_if_open_err_filters() = [agent_net_if_open_err_filter()] <optional>]]></c></tag>
+ <item>
+ <p><c>agent_net_if_open_err_filter() = atom()</c></p>
+ <p>During agent initiation, the transports UDP sockets are opened.
+ If this operation fails, the net-if (and the agent) fails to start
+ (crash). This (filter) list contains error (reasons) that will
+ make net-if fail "nicely".
+ This (filter) list, is supposed to contain errors that can be
+ returned by
+ <seemfa marker="kernel:gen_udp#open/1">gen_udp:open/1,2</seemfa>.
+ The effect is that any error returned by
+ <seemfa marker="kernel:gen_udp#open/1">gen_udp:open</seemfa>
+ which *are* in this list, will be considered
+ "non-fatal" and will only result in an info message, rather than
+ an error message. Net If, and the agent, will still crash,
+ but will produce a less obnoxious message. </p>
+ </item>
+
<tag><marker id="agent_mibs"></marker>
<c><![CDATA[agent_mibs() = [string()] <optional>]]></c></tag>
<item>
diff --git a/lib/snmp/src/agent/snmpa_agent.erl b/lib/snmp/src/agent/snmpa_agent.erl
index 736b2907fa..8c24440efc 100644
--- a/lib/snmp/src/agent/snmpa_agent.erl
+++ b/lib/snmp/src/agent/snmpa_agent.erl
@@ -340,10 +340,16 @@ init([Prio, Parent, Ref, Options]) ->
"~n Options: ~p", [Prio, Parent, Ref, Options]),
case (catch do_init(Prio, Parent, Ref, Options)) of
{ok, State} ->
- ?vdebug("started",[]),
+ ?vdebug("started"),
{ok, State};
+ {error, {net_if, info, Reason}} ->
+ info_msg("Failed starting agent: "
+ "~n Net If error: ~p", [Reason]),
+ %% {shutdown, Reason};
+ exit(Reason);
{error, Reason} ->
- config_err("failed starting agent: ~n~p", [Reason]),
+ config_err("Failed starting agent: "
+ "~n ~p", [Reason]),
{stop, Reason}
end.
@@ -410,15 +416,18 @@ start_note_store(Prio, Ref, Options) ->
{ok, Pid} ->
?vdebug("start_note_store -> Pid: ~p", [Pid]),
Pid;
- {error, Reason} ->
- ?vinfo("error starting note store: ~n~p",[Reason]),
- throw({error, {note_store_error, Reason}});
- {'EXIT', Reason} ->
- ?vinfo("exit starting note store: ~n~p",[Reason]),
- throw({error, {note_store_exit, Reason}});
+ {error, {Reason, _ChildSpec}} ->
+ ?vinfo("error starting note store: "
+ "~n ~p", [Reason]),
+ throw({error, {note_store, error, Reason}});
+ {'EXIT', {Reason, _ChildSpec}} ->
+ ?vinfo("exit starting note store: "
+ "~n ~p", [Reason]),
+ throw({error, {note_store, exit, Reason}});
Error ->
- ?vinfo("failed starting note store: ~n~p",[Error]),
- throw({error, {note_store_failed, Error}})
+ ?vinfo("failed starting note store: "
+ "~n ~p", [Error]),
+ throw({error, {note_store, failed, Error}})
end.
@@ -437,18 +446,25 @@ start_net_if(none, Prio, Ref, Vsns, NoteStore, Options) ->
case (catch snmpa_misc_sup:start_net_if(Prio, NoteStore, Ref, self(),
Mod, NiOpts)) of
- {ok, Pid} ->
+ {ok, Pid} ->
?vdebug("start_net_if -> Pid: ~p", [Pid]),
{master_agent, Pid, Mod};
- {error, Reason} ->
- ?vinfo("error starting net if: ~n~p",[Reason]),
- throw({error, {net_if_error, Reason}});
+ {error, {{Class, udp_open, PortNo, Reason}, _ChildSpec}} ->
+ ?vinfo("error starting net if: "
+ "~n ~p", [Reason]),
+ throw({error, {net_if, Class, {udp_open, PortNo, Reason}}});
+ {error, {Reason, _ChildSpec}} ->
+ ?vinfo("error starting net if: "
+ "~n ~p", [Reason]),
+ throw({error, {net_if, error, Reason}});
{'EXIT', Reason} ->
- ?vinfo("exit starting net if: ~n~p",[Reason]),
- throw({error, {net_if_exit, Reason}});
+ ?vinfo("exit starting net if: "
+ "~n ~p", [Reason]),
+ throw({error, {net_if, exit, Reason}});
Error ->
- ?vinfo("failed starting net if: ~n~p",[Error]),
- throw({error, {net_if_failed, Error}})
+ ?vinfo("failed starting net if: "
+ "~n ~p", [Error]),
+ throw({error, {net_if, failed, Error}})
end;
start_net_if(Parent, _Prio, _Ref, _Vsns, _NoteStore, _Options)
when is_pid(Parent) ->
@@ -470,15 +486,18 @@ start_mib_server(Prio, Ref, Mibs, Options) ->
{ok, Pid} ->
?vdebug("start_mib_server -> Pid: ~p", [Pid]),
Pid;
- {error, Reason} ->
- ?vinfo("error starting mib server: ~n~p",[Reason]),
- throw({error, {mib_server_error, Reason}});
+ {error, {Reason, _ChildSpec}} ->
+ ?vinfo("error starting mib server: "
+ "~n ~p", [Reason]),
+ throw({error, {mib_server, error, Reason}});
{'EXIT', Reason} ->
- ?vinfo("exit starting mib server: ~n~p",[Reason]),
- throw({error, {mib_server_exit, Reason}});
+ ?vinfo("exit starting mib server: "
+ "~n ~p", [Reason]),
+ throw({error, {mib_server, exit, Reason}});
Error ->
- ?vinfo("failed starting mib server: ~n~p",[Error]),
- throw({error, {mib_server_failed, Error}})
+ ?vinfo("failed starting mib server: "
+ "~n ~p", [Error]),
+ throw({error, {mib_server, failed, Error}})
end.
@@ -3204,8 +3223,8 @@ get_stats_counters([Counter|Counters], Acc) ->
%% ---------------------------------------------------------------------
-%% info_msg(F, A) ->
-%% ?snmpa_info(F, A).
+info_msg(F, A) ->
+ ?snmpa_info(F, A).
warning_msg(F, A) ->
?snmpa_warning(F, A).
diff --git a/lib/snmp/src/agent/snmpa_agent_sup.erl b/lib/snmp/src/agent/snmpa_agent_sup.erl
index 0a5116b2d0..b1eeaba988 100644
--- a/lib/snmp/src/agent/snmpa_agent_sup.erl
+++ b/lib/snmp/src/agent/snmpa_agent_sup.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2016. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2023. 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.
@@ -24,7 +24,9 @@
-behaviour(supervisor).
%% External exports
--export([start_link/0, start_link/1, start_subagent/3, stop_subagent/1]).
+-export([start_link/0, start_link/1,
+ start_master_agent/1,
+ start_subagent/3, stop_subagent/1]).
%% Internal exports
-export([init/1]).
@@ -40,8 +42,7 @@
%%%-----------------------------------------------------------------
-%%% This is a supervisor for the mib processes. Each agent has one
-%%% mib process.
+%%% This is a supervisor for the agent processes (master and sub).
%%%-----------------------------------------------------------------
start_link() ->
?d("start_link -> entry", []),
@@ -52,6 +53,9 @@ start_link(AgentSpec) ->
"~n AgentSpec: ~p", [AgentSpec]),
supervisor:start_link({local, ?SERVER}, ?MODULE, [[AgentSpec]]).
+start_master_agent(MasterAgentSpec) ->
+ supervisor:start_child(snmpa_agent_sup, MasterAgentSpec).
+
start_subagent(ParentAgent, Subtree, Mibs) ->
?d("start_subagent -> entry with"
"~n ParentAgent: ~p"
diff --git a/lib/snmp/src/agent/snmpa_net_if.erl b/lib/snmp/src/agent/snmpa_net_if.erl
index d37aa6c28a..72e3ac3e41 100644
--- a/lib/snmp/src/agent/snmpa_net_if.erl
+++ b/lib/snmp/src/agent/snmpa_net_if.erl
@@ -235,11 +235,21 @@ init(Prio, NoteStore, MasterAgent, Parent, Opts) ->
end,
erlang:raise(C, E, S)
end;
- {error, Reason} ->
- config_err("failed starting net-if: ~n~p", [Reason]),
- proc_lib:init_ack({error, Reason});
+ {error, {udp_open, {open, PortNo, Reason}}} ->
+ OEFilters = get_open_err_filters(Opts),
+ Class =
+ case lists:member(Reason, OEFilters) of
+ false ->
+ error;
+ true ->
+ info
+ end,
+ proc_lib:init_ack({error, {Class, udp_open, PortNo, Reason}});
+ {error, Reason} ->
+ %% config_err("failed starting net-if: ~n~p", [Reason]),
+ proc_lib:init_ack({error, Reason});
Error ->
- config_err("failed starting net-if: ~n~p", [Error]),
+ %% config_err("failed starting net-if: ~n~p", [Error]),
proc_lib:init_ack({error, Error})
end.
@@ -256,7 +266,7 @@ do_init(Prio, NoteStore, MasterAgent, Parent, Opts) ->
Vsns = get_vsns(Opts),
?vdebug("vsns: ~w",[Vsns]),
- %% Flow control --
+ %% -- Flow control --
Limit = get_req_limit(Opts),
?vdebug("Limit: ~w", [Limit]),
FilterOpts = get_filter_opts(Opts),
@@ -475,7 +485,7 @@ gen_udp_open(system, Opts) ->
throw({udp_open, {port, PReason}})
end;
{error, OReason} ->
- throw({udp_open, {open, OReason}})
+ throw({udp_open, {open, 0, OReason}})
end;
%% This is for "future compat" since we cannot actually config '0'...
gen_udp_open(IpPort, Opts) when (IpPort =:= 0) ->
@@ -533,7 +543,7 @@ gen_udp_range_open(Min, Max, Opts) ->
gen_udp_range_open(Min+1, Max, Opts);
{error, Reason} ->
?vdebug("gen_udp_range_open(~w,~w) -> ~w", [Reason]),
- throw({udp_open, {open, Reason}})
+ throw({udp_open, {open, Min, Reason}})
catch
C:E:S ->
?vinfo("gen_udp_range_open(~w,~w) -> failed open socket: "
@@ -2101,6 +2111,16 @@ get_filter_opts(O) ->
get_filter_module(O) ->
snmp_misc:get_option(module, O, ?DEFAULT_FILTER_MODULE).
+get_open_err_filters(O) ->
+ case snmp_misc:get_option(open_err_filters, O, []) of
+ Filters when is_list(Filters) ->
+ Filters;
+ Filter when is_atom(Filter) ->
+ [Filter];
+ _ ->
+ []
+ end.
+
get_recbuf(Opts, DefaultOpts) ->
get_socket_opt(recbuf, Opts, DefaultOpts, use_default).
@@ -2153,8 +2173,8 @@ info_msg(F,A) ->
user_err(F, A) ->
snmpa_error:user_err(F, A).
-config_err(F, A) ->
- snmpa_error:config_err(F, A).
+%% config_err(F, A) ->
+%% snmpa_error:config_err(F, A).
%% ----------------------------------------------------------------
diff --git a/lib/snmp/src/agent/snmpa_supervisor.erl b/lib/snmp/src/agent/snmpa_supervisor.erl
index 215851f23c..26c61579d5 100644
--- a/lib/snmp/src/agent/snmpa_supervisor.erl
+++ b/lib/snmp/src/agent/snmpa_supervisor.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2022. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2023. 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.
@@ -29,6 +29,7 @@
%% Internal exports
-export([init/1, config/2]).
+-compile({no_auto_import,[erase/1]}).
-define(SERVER, ?MODULE).
@@ -41,6 +42,10 @@
%% Process structure
%% =================
%%
+%% "application"
+%% |
+%% app-sup
+%% |
%% ___________________ supervisor __________________
%% / | | \ \
%% ___misc_sup___ target_cache symbolic_store local_db agent_sup
@@ -176,7 +181,23 @@ start_master_sup(Opts) ->
do_start_master_sup(Opts) ->
verify_mandatory([db_dir], Opts),
- supervisor:start_link({local, ?SERVER}, ?MODULE, [master, Opts]).
+ case supervisor:start_link({local, ?SERVER}, ?MODULE, [master, Opts]) of
+ {ok, Pid} = OK ->
+ %% <HACKETI-HACK-HACK>
+ Key = master_agent_child_spec,
+ MasterAgentSpec = lookup(Key),
+ case snmpa_agent_sup:start_master_agent(MasterAgentSpec) of
+ {ok, MPid} when is_pid(MPid) ->
+ erase(Key),
+ OK;
+ {error, {Reason, _ChildSpec}} ->
+ stop(Pid, 0),
+ {error, Reason}
+ end;
+ %% </HACKETI-HACK-HACK>
+ Else ->
+ Else
+ end.
verify_mandatory([], _) ->
ok;
@@ -503,9 +524,18 @@ init([AgentType, Opts]) ->
worker_spec(snmpa_agent,
[Prio, snmp_master_agent, none, Ref, AgentOpts],
Restart, 15000),
+ %% <HACKETI-HACK-HACK>
+ %% The point is to make start failure more quiet
+ %% Often the failure happens in the master agent,
+ %% so we move the start of that out of this function
+ %% and into the 'do_start_master_sup' function.
+ %% At some point we should rewrite this. Maybe start all
+ %% children the same way (explicitly).
+ store(master_agent_child_spec, AgentSpec),
AgentSupSpec =
- sup_spec(snmpa_agent_sup, [AgentSpec],
+ sup_spec(snmpa_agent_sup, [],
Restart, infinity),
+ %% </HACKETI-HACK-HACK>
[ConfigSpec, AgentSupSpec];
_ ->
?vdebug("[sub agent] spec for the agent supervisor",[]),
@@ -521,6 +551,13 @@ init([AgentType, Opts]) ->
store(Key, Value) ->
ets:insert(snmp_agent_table, {Key, Value}).
+lookup(Key) ->
+ [{Key, Value}] = ets:lookup(snmp_agent_table, Key),
+ Value.
+
+erase(Key) ->
+ ets:delete(snmp_agent_table, Key).
+
get_mibs(Mibs, Vsns) ->
MibDir = filename:join(code:priv_dir(snmp), "mibs"),
StdMib =
diff --git a/lib/snmp/src/app/snmp_app.erl b/lib/snmp/src/app/snmp_app.erl
index 486b276383..7ba3c659f0 100644
--- a/lib/snmp/src/app/snmp_app.erl
+++ b/lib/snmp/src/app/snmp_app.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2003-2021. All Rights Reserved.
+%% Copyright Ericsson AB 2003-2023. 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.
@@ -38,8 +38,13 @@ start(Type, []) ->
%% First start the (new) central supervisor,
{ok, Pid} = snmp_app_sup:start_link(),
Entities = entities(),
- ok = start_entities(Type, Entities),
- {ok, Pid}.
+ case start_entities(Type, Entities) of
+ ok ->
+ {ok, Pid};
+ Error ->
+ snmp_app_sup:stop(),
+ Error
+ end.
entities() ->
entities([agent, manager], []).
diff --git a/lib/snmp/src/app/snmp_app_sup.erl b/lib/snmp/src/app/snmp_app_sup.erl
index eb89cc5b6d..bb6faa18cb 100644
--- a/lib/snmp/src/app/snmp_app_sup.erl
+++ b/lib/snmp/src/app/snmp_app_sup.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2003-2016. All Rights Reserved.
+%% Copyright Ericsson AB 2003-2023. 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.
@@ -64,7 +64,12 @@ start_agent(Type, Opts) ->
"~n Type: ~p"
"~n Opts: ~p", [Type, Opts]),
Restart = get_restart(Opts, permanent),
- start_sup_child(snmpa_supervisor, Restart, [Type, Opts]).
+ case start_sup_child(snmpa_supervisor, Restart, [Type, Opts]) of
+ {ok, Pid} = OK when is_pid(Pid) ->
+ OK;
+ {error, {Reason, _ChildSpec}} ->
+ {error, Reason}
+ end.
start_manager(Type, Opts) ->
@@ -72,7 +77,12 @@ start_manager(Type, Opts) ->
"~n Type: ~p"
"~n Opts: ~p", [Type, Opts]),
Restart = get_restart(Opts, transient),
- start_sup_child(snmpm_supervisor, Restart, [Type, Opts]).
+ case start_sup_child(snmpm_supervisor, Restart, [Type, Opts]) of
+ {ok, Pid} = OK when is_pid(Pid) ->
+ OK;
+ {error, {Reason, _ChildSpec}} ->
+ {error, Reason}
+ end.
%%%-------------------------------------------------------------------
diff --git a/lib/snmp/vsn.mk b/lib/snmp/vsn.mk
index 4c11344234..13c7e9790e 100644
--- a/lib/snmp/vsn.mk
+++ b/lib/snmp/vsn.mk
@@ -19,6 +19,6 @@
# %CopyrightEnd%
APPLICATION = snmp
-SNMP_VSN = 5.13.4
+SNMP_VSN = 5.13.5
PRE_VSN =
APP_VSN = "$(APPLICATION)-$(SNMP_VSN)$(PRE_VSN)"
diff --git a/lib/ssl/doc/src/notes.xml b/lib/ssl/doc/src/notes.xml
index a36ac8d78d..911055d742 100644
--- a/lib/ssl/doc/src/notes.xml
+++ b/lib/ssl/doc/src/notes.xml
@@ -27,6 +27,30 @@
</header>
<p>This document describes the changes made to the SSL application.</p>
+<section><title>SSL 10.9.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ With this change, ssl:connection_information/2 returns
+ correct keylog data after TLS1.3 key update.</p>
+ <p>
+ Own Id: OTP-18489</p>
+ </item>
+ <item>
+ <p>
+ Client signature algorithm list input order is now
+ honored again , it was accidently reversed by a previous
+ fix.</p>
+ <p>
+ Own Id: OTP-18550</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>SSL 10.9</title>
<section><title>Fixed Bugs and Malfunctions</title>
@@ -444,6 +468,23 @@
</section>
+<section><title>SSL 10.7.3.7</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Client signature algorithm list input order is now
+ honored again , it was accidently reversed by a previous
+ fix.</p>
+ <p>
+ Own Id: OTP-18550</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>SSL 10.7.3.6</title>
<section><title>Improvements and New Features</title>
diff --git a/lib/ssl/src/ssl_cipher.erl b/lib/ssl/src/ssl_cipher.erl
index 87dd624306..6e952a4584 100644
--- a/lib/ssl/src/ssl_cipher.erl
+++ b/lib/ssl/src/ssl_cipher.erl
@@ -647,7 +647,7 @@ signature_scheme(SignAlgo) when is_integer(SignAlgo) ->
signature_scheme(_) -> unassigned.
signature_schemes_1_2(SigAlgs) ->
- lists:foldl(fun(Alg, Acc) when is_atom(Alg) ->
+ lists:reverse(lists:foldl(fun(Alg, Acc) when is_atom(Alg) ->
case scheme_to_components(Alg) of
{Hash, Sign = rsa_pss_pss,_} ->
[{Hash, Sign} | Acc];
@@ -658,7 +658,7 @@ signature_schemes_1_2(SigAlgs) ->
end;
(Alg, Acc) ->
[Alg| Acc]
- end, [], SigAlgs).
+ end, [], SigAlgs)).
%% TODO: reserved code points?
diff --git a/lib/ssl/src/ssl_gen_statem.erl b/lib/ssl/src/ssl_gen_statem.erl
index 36768ab6c7..eed0025ad7 100644
--- a/lib/ssl/src/ssl_gen_statem.erl
+++ b/lib/ssl/src/ssl_gen_statem.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2007-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2007-2023. 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.
@@ -1897,7 +1897,8 @@ connection_info(#state{handshake_env = #handshake_env{sni_hostname = SNIHostname
security_info(#state{connection_states = ConnectionStates,
static_env = #static_env{role = Role},
- ssl_options = #{keep_secrets := KeepSecrets}}) ->
+ ssl_options = #{keep_secrets := KeepSecrets},
+ protocol_specific = ProtocolSpecific}) ->
ReadState = ssl_record:current_connection_state(ConnectionStates, read),
#{security_parameters :=
#security_parameters{client_random = ClientRand,
@@ -1911,10 +1912,12 @@ security_info(#state{connection_states = ConnectionStates,
BaseSecurityInfo;
true ->
#{security_parameters :=
- #security_parameters{application_traffic_secret = AppTrafSecretWrite,
- client_early_data_secret = ClientEarlyData
- }} =
+ #security_parameters{
+ application_traffic_secret = AppTrafSecretWrite0,
+ client_early_data_secret = ClientEarlyData}} =
ssl_record:current_connection_state(ConnectionStates, write),
+ Sender = maps:get(sender, ProtocolSpecific, undefined),
+ AppTrafSecretWrite = {Sender, AppTrafSecretWrite0},
if Role == server ->
if ServerEarlyData =/= undefined ->
[{server_traffic_secret_0, AppTrafSecretWrite},
@@ -2118,8 +2121,25 @@ maybe_add_keylog({_, 'tlsv1.2'}, Info) ->
maybe_add_keylog({_, 'tlsv1.3'}, Info) ->
try
{client_random, ClientRandomBin} = lists:keyfind(client_random, 1, Info),
- {client_traffic_secret_0, ClientTrafficSecret0Bin} = lists:keyfind(client_traffic_secret_0, 1, Info),
- {server_traffic_secret_0, ServerTrafficSecret0Bin} = lists:keyfind(server_traffic_secret_0, 1, Info),
+ %% after traffic key update current traffic secret
+ %% is stored in tls_sender process state
+ MaybeUpdateTrafficSecret =
+ fun({Direction, {Sender, TrafficSecret0}}) ->
+ TrafficSecret =
+ case call(Sender, get_application_traffic_secret) of
+ {ok, SenderAppTrafSecretWrite} ->
+ SenderAppTrafSecretWrite;
+ _ ->
+ TrafficSecret0
+ end,
+ {Direction, TrafficSecret};
+ (TrafficSecret0) ->
+ TrafficSecret0
+ end,
+ {client_traffic_secret_0, ClientTrafficSecret0Bin} =
+ MaybeUpdateTrafficSecret(lists:keyfind(client_traffic_secret_0, 1, Info)),
+ {server_traffic_secret_0, ServerTrafficSecret0Bin} =
+ MaybeUpdateTrafficSecret(lists:keyfind(server_traffic_secret_0, 1, Info)),
{client_handshake_traffic_secret, ClientHSecretBin} = lists:keyfind(client_handshake_traffic_secret, 1, Info),
{server_handshake_traffic_secret, ServerHSecretBin} = lists:keyfind(server_handshake_traffic_secret, 1, Info),
{selected_cipher_suite, #{prf := Prf}} = lists:keyfind(selected_cipher_suite, 1, Info),
diff --git a/lib/ssl/src/tls_sender.erl b/lib/ssl/src/tls_sender.erl
index b53a801b90..3b1ceeca8a 100644
--- a/lib/ssl/src/tls_sender.erl
+++ b/lib/ssl/src/tls_sender.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2018-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2018-2023. 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.
@@ -313,6 +313,13 @@ connection({call, From}, {dist_handshake_complete, _Node, DHandle},
{next_event, internal,
{application_packets, {self(),undefined}, Data}}]}
end;
+connection({call, From}, get_application_traffic_secret, State) ->
+ CurrentWrite = maps:get(current_write, State#data.connection_states),
+ SecurityParams = maps:get(security_parameters, CurrentWrite),
+ ApplicationTrafficSecret =
+ SecurityParams#security_parameters.application_traffic_secret,
+ hibernate_after(?FUNCTION_NAME, State,
+ [{reply, From, {ok, ApplicationTrafficSecret}}]);
connection(internal, {application_packets, From, Data}, StateData) ->
send_application_data(Data, From, ?FUNCTION_NAME, StateData);
connection(internal, {post_handshake_data, From, HSData}, StateData) ->
diff --git a/lib/ssl/test/ssl_cipher_SUITE.erl b/lib/ssl/test/ssl_cipher_SUITE.erl
index def13d0860..442cc5f790 100644
--- a/lib/ssl/test/ssl_cipher_SUITE.erl
+++ b/lib/ssl/test/ssl_cipher_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -41,7 +41,8 @@
aes_decipher_good/1,
aes_decipher_fail/0,
aes_decipher_fail/1,
- padding_test/1
+ padding_test/1,
+ sign_algorithms/1
]).
@@ -49,7 +50,7 @@
%% Common Test interface functions -----------------------------------
%%--------------------------------------------------------------------
all() ->
- [aes_decipher_good, aes_decipher_fail, padding_test].
+ [aes_decipher_good, aes_decipher_fail, padding_test, sign_algorithms].
groups() ->
[].
@@ -122,6 +123,10 @@ padding_test(Config) when is_list(Config) ->
pad_test(HashSz, CipherState, {3,2}),
pad_test(HashSz, CipherState, {3,3}).
+%%--------------------------------------------------------------------
+sign_algorithms(Config) when is_list(Config) ->
+ [{sha256,rsa_pss_pss},{rsa,sha256}] = ssl_cipher:signature_schemes_1_2([rsa_pss_pss_sha256, {rsa, sha256}]).
+
%%--------------------------------------------------------------------
% Internal functions --------------------------------------------------------
%%--------------------------------------------------------------------
diff --git a/lib/ssl/test/ssl_key_update_SUITE.erl b/lib/ssl/test/ssl_key_update_SUITE.erl
index baa408dbc5..542674159c 100644
--- a/lib/ssl/test/ssl_key_update_SUITE.erl
+++ b/lib/ssl/test/ssl_key_update_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2020-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2020-2023. 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.
@@ -42,7 +42,6 @@
-include_lib("common_test/include/ct.hrl").
-include_lib("ssl/src/ssl_api.hrl").
-include_lib("ssl/src/ssl_connection.hrl").
-
all() ->
[{group, 'tlsv1.3'}].
@@ -107,24 +106,22 @@ key_update_at_server(Config) ->
key_update_at(Config, Role) ->
Data = "123456789012345", %% 15 bytes
Server = ssl_test_lib:start_server(erlang,
- [{options, [{key_update_at, 14}]}],
+ [{options, [{keep_secrets, true},
+ {key_update_at, 14}]}],
Config),
Port = ssl_test_lib:inet_port(Server),
- {Client,
- #sslsocket{pid =
- [ClientReceiverPid, ClientSenderPid]}} =
- ssl_test_lib:start_client(erlang,
- [return_socket, {port, Port},
- {options, [{key_update_at, 14}]}],
- Config),
+ ClientResult = ssl_test_lib:start_client(erlang,
+ [return_socket, {port, Port},
+ {options, [{keep_secrets, true},
+ {key_update_at, 14}]}],
+ Config),
+ {Client, ClientSocket} = ClientResult,
Server ! get_socket,
- #sslsocket{pid =
- [ServerReceiverPid, ServerSenderPid]} =
- receive
- {Server, {socket, S}} -> S
- end,
- Keys0 = get_keys(ClientReceiverPid, ClientSenderPid,
- ServerReceiverPid, ServerSenderPid),
+ ServerSocket = receive
+ {Server, {socket, S}} -> S
+ end,
+ Keys0 = get_traffic_secrets(ClientSocket, ServerSocket),
+ ct:log("connected", []),
{Sender, Receiver} = case Role of
client -> {Client, Server};
server -> {Server, Client}
@@ -134,53 +131,67 @@ key_update_at(Config, Role) ->
Data = ssl_test_lib:check_active_receive(Receiver, Data),
%% TODO check if key has been updated (needs debug logging of secrets)
ct:sleep(500),
- Keys1 = get_keys(ClientReceiverPid, ClientSenderPid,
- ServerReceiverPid, ServerSenderPid),
+ ct:log("sent and waited", []),
+ Keys1 = get_traffic_secrets(ClientSocket, ServerSocket),
verify_key_update(Keys0, Keys1),
%% Test mechanism to prevent infinite loop of key updates
BigData = binary:copy(<<"1234567890">>, 10), %% 100 bytes
ok = ssl_test_lib:send(Sender, BigData),
ct:sleep(500),
- Keys2 = get_keys(ClientReceiverPid, ClientSenderPid,
- ServerReceiverPid, ServerSenderPid),
+ ct:log("sent and waited 2", []),
+ Keys2 = get_traffic_secrets(ClientSocket, ServerSocket),
verify_key_update(Keys1, Keys2),
ssl_test_lib:close(Server),
ssl_test_lib:close(Client).
-get_keys(ClientReceiverPid, ClientSenderPid,
- ServerReceiverPid, ServerSenderPid) ->
- F = fun(Pid) ->
- {connection, D} = sys:get_state(Pid),
- M0 = element(3, D),
- Cr = maps:get(current_write, M0),
- {Pid, {maps:get(security_parameters, Cr),
- maps:get(cipher_state, Cr)}}
+get_traffic_secrets(ClientSocket, ServerSocket) ->
+ ProcessSocket =
+ fun(Socket, Role) ->
+ {ok, [{keylog, KeyLog}]} = ssl:connection_information(Socket, [keylog]),
+ Interesting =
+ fun(S) ->
+ Patterns = ["CLIENT_TRAFFIC_SECRET", "SERVER_TRAFFIC_SECRET"],
+ SearchResults = [string:find(S, P) || P <- Patterns],
+ lists:any(fun(I) -> I /= nomatch end, SearchResults)
+ end,
+ TrafficSecrets = lists:filter(Interesting, KeyLog),
+ Print = fun(Secret) ->
+ [Name, _A, B] = string:lexemes(Secret, " "),
+ [Key] = io_lib:format("~s", [B]),
+ {Name, {Role, Key}}
+ end,
+ [Print(Scr) || Scr <- TrafficSecrets]
end,
- SendersKeys = [F(P) || P <- [ClientSenderPid, ServerSenderPid]],
-
- G = fun(Pid) ->
- {connection, D} = sys:get_state(Pid),
- #state{connection_states = Cs} = D,
- Cr = maps:get(current_read, Cs),
- {Pid, {maps:get(security_parameters,Cr),
- maps:get(cipher_state, Cr)}}
+ Secrets = lists:flatten(
+ [ProcessSocket(S, R) ||
+ {S, R} <-
+ [{ClientSocket, client}, {ServerSocket, server}]]),
+ P = fun(Direction) ->
+ Vals = proplists:get_all_values(Direction, Secrets),
+ ct:log("~30s ~10s(c) ~10s(s)",
+ [Direction, proplists:get_value(client, Vals),
+ proplists:get_value(server, Vals)]),
+ {Direction, [proplists:get_value(client, Vals),
+ proplists:get_value(server, Vals)]}
end,
- ReceiversKeys = [G(P) || P <- [ClientReceiverPid, ServerReceiverPid]],
- maps:from_list(SendersKeys ++ ReceiversKeys).
+ [P(Direction) ||
+ Direction <-
+ ["CLIENT_TRAFFIC_SECRET_0", "SERVER_TRAFFIC_SECRET_0"]].
verify_key_update(Keys0, Keys1) ->
- V = fun(Pid, CurrentKeys) ->
- BaseKeys = maps:get(Pid, Keys0),
- ct:log("Pid = ~p~nBaseKeys = ~p~nCurrentKeys = ~p",
- [Pid, BaseKeys, CurrentKeys], [esc_chars]),
- case BaseKeys == CurrentKeys of
- true ->
- ct:fail("Keys don't differ for ~w", [Pid]);
- false ->
- ok
- end
- end,
- maps:foreach(V, Keys1).
+ CTS0 = proplists:get_value("CLIENT_TRAFFIC_SECRET_0", Keys0),
+ CTS1 = proplists:get_value("CLIENT_TRAFFIC_SECRET_0", Keys1),
+ STS0 = proplists:get_value("SERVER_TRAFFIC_SECRET_0", Keys0),
+ STS1 = proplists:get_value("SERVER_TRAFFIC_SECRET_0", Keys1),
+ CTS = lists:zip(CTS0, CTS1),
+ STS = lists:zip(STS0, STS1),
+ Pred = fun({A, B}) when A == B ->
+ ct:fail(no_key_update),
+ false;
+ (_) ->
+ true
+ end,
+ [true = lists:all(Pred, X) || X <- [CTS, STS]].
explicit_key_update() ->
[{doc,"Test ssl:update_key/2 between erlang client and erlang server."}].
diff --git a/lib/ssl/test/ssl_session_SUITE.erl b/lib/ssl/test/ssl_session_SUITE.erl
index 40fff3bbbd..b1f093351e 100644
--- a/lib/ssl/test/ssl_session_SUITE.erl
+++ b/lib/ssl/test/ssl_session_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2007-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2007-2023. 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.
@@ -464,8 +464,11 @@ no_reuses_session_server_restart_new_cert() ->
no_reuses_session_server_restart_new_cert(Config) when is_list(Config) ->
ClientOpts = ssl_test_lib:ssl_options(client_rsa_der_opts, Config),
ServerOpts = ssl_test_lib:ssl_options(server_rsa_der_verify_opts, Config),
- RSA1024ServerOpts = ssl_test_lib:ssl_options(server_rsa_1024_der_opts, Config),
- RSA1024ClientOpts = ssl_test_lib:ssl_options(client_rsa_1024_der_opts, Config),
+ #{client_config := NewCOpts,
+ server_config := NewSOpts} = ssl_test_lib:make_cert_chains_der(rsa,
+ [[{key, ssl_test_lib:hardcode_rsa_key(4)}],
+ [{key, ssl_test_lib:hardcode_rsa_key(5)}],
+ [{key, ssl_test_lib:hardcode_rsa_key(6)}]]),
{ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config),
@@ -490,12 +493,12 @@ no_reuses_session_server_restart_new_cert(Config) when is_list(Config) ->
Server1 = ssl_test_lib:start_server([{node, ServerNode}, {port, Port},
{from, self()},
{mfa, {ssl_test_lib, session_info_result, []}},
- {options, [{reuseaddr, true} | RSA1024ServerOpts]}]),
+ {options, [{reuseaddr, true} | NewSOpts]}]),
Client1 = ssl_test_lib:start_client([{node, ClientNode},
{port, Port}, {host, Hostname},
{mfa, {ssl_test_lib, session_info_result, []}},
- {from, self()}, {options, RSA1024ClientOpts}]),
+ {from, self()}, {options, NewCOpts}]),
Info1 = receive {Server1, Info10} -> Info10 end,
receive
@@ -517,7 +520,12 @@ no_reuses_session_server_restart_new_cert_file() ->
no_reuses_session_server_restart_new_cert_file(Config) when is_list(Config) ->
ClientOpts = ssl_test_lib:ssl_options(client_rsa_opts, Config),
ServerOpts = ssl_test_lib:ssl_options(server_rsa_verify_opts, Config),
- RSA1024ServerOpts = ssl_test_lib:ssl_options(server_rsa_1024_verify_opts, Config),
+ #{client_config := NewCOpts,
+ server_config := NewSOpts} = ssl_test_lib:make_cert_chains_pem(rsa,
+ [[{key, ssl_test_lib:hardcode_rsa_key(4)}],
+ [{key, ssl_test_lib:hardcode_rsa_key(5)}],
+ [{key, ssl_test_lib:hardcode_rsa_key(6)}]],
+ Config, "ssl_session_new_rsa"),
PrivDir = proplists:get_value(priv_dir, Config),
NewServerOpts0 = ssl_test_lib:new_config(PrivDir, ServerOpts),
@@ -548,7 +556,7 @@ no_reuses_session_server_restart_new_cert_file(Config) when is_list(Config) ->
ssl:clear_pem_cache(),
- NewServerOpts1 = ssl_test_lib:new_config(PrivDir, RSA1024ServerOpts),
+ NewServerOpts1 = ssl_test_lib:new_config(PrivDir, NewSOpts),
Server1 =
ssl_test_lib:start_server([{node, ServerNode}, {port, Port},
@@ -559,7 +567,7 @@ no_reuses_session_server_restart_new_cert_file(Config) when is_list(Config) ->
ssl_test_lib:start_client([{node, ClientNode},
{port, Port}, {host, Hostname},
{mfa, {ssl_test_lib, session_info_result, []}},
- {from, self()}, {options, ClientOpts}]),
+ {from, self()}, {options, NewCOpts}]),
receive
{Client1, SessionInfo} ->
ct:fail(session_reused_when_server_has_new_cert);
diff --git a/lib/ssl/vsn.mk b/lib/ssl/vsn.mk
index 7b821e2bc8..db6de41e50 100644
--- a/lib/ssl/vsn.mk
+++ b/lib/ssl/vsn.mk
@@ -1 +1 @@
-SSL_VSN = 10.9
+SSL_VSN = 10.9.1
diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml
index 403abf2be8..0906db1359 100644
--- a/lib/stdlib/doc/src/notes.xml
+++ b/lib/stdlib/doc/src/notes.xml
@@ -31,6 +31,22 @@
</header>
<p>This document describes the changes made to the STDLIB application.</p>
+<section><title>STDLIB 4.3.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>The type specs in the <c>erl_parse</c> module has been
+ updated to include the <c>maybe</c> construct and the
+ <c>!</c> operator.</p>
+ <p>
+ Own Id: OTP-18506 Aux Id: GH-6956 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>STDLIB 4.3</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/stdlib/src/erl_parse.yrl b/lib/stdlib/src/erl_parse.yrl
index f97ea99e60..505a6b1af8 100644
--- a/lib/stdlib/src/erl_parse.yrl
+++ b/lib/stdlib/src/erl_parse.yrl
@@ -2,7 +2,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2022. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2023. 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.
@@ -661,6 +661,7 @@ Erlang code.
-type abstract_expr() :: af_literal()
| af_match(abstract_expr())
+ | af_maybe_match()
| af_variable()
| af_tuple(abstract_expr())
| af_nil()
@@ -687,7 +688,9 @@ Erlang code.
| af_local_fun()
| af_remote_fun()
| af_fun()
- | af_named_fun().
+ | af_named_fun()
+ | af_maybe()
+ | af_maybe_else().
-type af_record_update(T) :: {'record',
anno(),
@@ -830,6 +833,9 @@ Erlang code.
-type af_map_pattern() ::
{'map', anno(), [af_assoc_exact(af_pattern())]}.
+-type af_maybe() :: {'maybe', anno(), af_body()}.
+-type af_maybe_else() :: {'maybe', anno(), af_body(), {'else', anno(), af_clause_seq()}}.
+
-type abstract_type() :: af_annotated_type()
| af_atom()
| af_bitstring_type()
@@ -940,6 +946,8 @@ Erlang code.
-type af_match(T) :: {'match', anno(), af_pattern(), T}.
+-type af_maybe_match() :: {'maybe_match', anno(), af_pattern(), abstract_expr()}.
+
-type af_variable() :: {'var', anno(), atom()}. % | af_anon_variable()
%-type af_anon_variable() :: {'var', anno(), '_'}.
@@ -965,7 +973,7 @@ Erlang code.
-type binary_op() :: '/' | '*' | 'div' | 'rem' | 'band' | 'and' | '+' | '-'
| 'bor' | 'bxor' | 'bsl' | 'bsr' | 'or' | 'xor' | '++'
| '--' | '==' | '/=' | '=<' | '<' | '>=' | '>' | '=:='
- | '=/='.
+ | '=/=' | '!'.
-type af_unary_op(T) :: {'op', anno(), unary_op(), T}.
diff --git a/lib/stdlib/src/stdlib.appup.src b/lib/stdlib/src/stdlib.appup.src
index 0cb84fd3dc..13efc74d85 100644
--- a/lib/stdlib/src/stdlib.appup.src
+++ b/lib/stdlib/src/stdlib.appup.src
@@ -54,7 +54,9 @@
{<<"^4\\.1\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]},
{<<"^4\\.1\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]},
{<<"^4\\.2$">>,[restart_new_emulator]},
- {<<"^4\\.2\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}],
+ {<<"^4\\.2\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]},
+ {<<"^4\\.3$">>,[restart_new_emulator]},
+ {<<"^4\\.3\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}],
[{<<"^3\\.13$">>,[restart_new_emulator]},
{<<"^3\\.13\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]},
{<<"^3\\.13\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]},
@@ -81,4 +83,6 @@
{<<"^4\\.1\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]},
{<<"^4\\.1\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]},
{<<"^4\\.2$">>,[restart_new_emulator]},
- {<<"^4\\.2\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}]}.
+ {<<"^4\\.2\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]},
+ {<<"^4\\.3$">>,[restart_new_emulator]},
+ {<<"^4\\.3\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}]}.
diff --git a/lib/stdlib/vsn.mk b/lib/stdlib/vsn.mk
index cd81d52182..d6706e69bf 100644
--- a/lib/stdlib/vsn.mk
+++ b/lib/stdlib/vsn.mk
@@ -1 +1 @@
-STDLIB_VSN = 4.3
+STDLIB_VSN = 4.3.1
diff --git a/lib/wx/api_gen/gl_gen.erl b/lib/wx/api_gen/gl_gen.erl
index 7a609158c7..eef715b83a 100644
--- a/lib/wx/api_gen/gl_gen.erl
+++ b/lib/wx/api_gen/gl_gen.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2021. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -358,7 +358,10 @@ handle_arg_opt({c_only,Opt},P) -> P#arg{where=c, alt=Opt};
handle_arg_opt(list_binary, P) -> P#arg{alt=list_binary};
handle_arg_opt(string, P=#arg{type=T}) -> P#arg{type=T#type{base=string}};
handle_arg_opt({string,Max,Sz}, P=#arg{type=T}) ->
- P#arg{type=T#type{base=string, size={Max,Sz}}}.
+ P#arg{type=T#type{base=string, size={Max,Sz}}};
+handle_arg_opt({size, Sz}, P=#arg{type=T}) ->
+ P#arg{type=T#type{size={Sz,Sz}}}.
+
parse_type([], _Os) -> void;
parse_type(C, Os) ->
diff --git a/lib/wx/api_gen/gl_gen_erl.erl b/lib/wx/api_gen/gl_gen_erl.erl
index b2c3ae2112..06fc6c9e58 100644
--- a/lib/wx/api_gen/gl_gen_erl.erl
+++ b/lib/wx/api_gen/gl_gen_erl.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -88,8 +88,8 @@ gl_api(Fs, _GluNifs) ->
w("-on_load(init_nif/0).~n",[]),
w("~n-export([~s]).~n~n", [args(fun(EF) -> EF end, ",", ExportList, 60)]),
- w("-export([get_interface/0, rec/1, lookup_func/0]).\n",[]),
- w("-nifs([lookup_func/0]).\n",[]),
+ w("-export([get_interface/0, rec/1, lookup_func/1]).\n",[]),
+ w("-nifs([lookup_func_nif/1]).\n",[]),
w("-define(nif_stub,nif_stub_error(?LINE)).~n", []),
w("%% @hidden~n", []),
w("nif_stub_error(Line) ->~n"
@@ -118,7 +118,9 @@ gl_api(Fs, _GluNifs) ->
w(" error_logger:error_report([{gl, error}, {message, lists:flatten(Err)}]),~n", []),
w(" rec(Op)~n", []),
w(" end.~n~n", []),
- w("lookup_func() -> ?nif_stub.\n\n",[]),
+ w("lookup_func(functions) -> lookup_func_nif(1);\n",[]),
+ w("lookup_func(function_names) -> lookup_func_nif(2).\n\n",[]),
+ w("lookup_func_nif(_Func) -> ?nif_stub.\n\n",[]),
w("~n", []),
w("~n", []),
@@ -380,6 +382,8 @@ spec_arg_type2(T=#type{single={list, _Max}}) ->
"[" ++ spec_arg_type3(T) ++ "]";
spec_arg_type2(T=#type{single={list,_,_}}) ->
"[" ++ spec_arg_type3(T) ++ "]";
+spec_arg_type2(T=#type{single={list,_,_,_}}) ->
+ "[" ++ spec_arg_type3(T) ++ "]";
spec_arg_type2(T=#type{single={tuple_list,Sz}}) ->
"[{" ++ args(fun spec_arg_type3/1, ",", lists:duplicate(Sz,T)) ++ "}]".
diff --git a/lib/wx/api_gen/gl_gen_nif.erl b/lib/wx/api_gen/gl_gen_nif.erl
index cd8fdba7cd..a84bf454a5 100644
--- a/lib/wx/api_gen/gl_gen_nif.erl
+++ b/lib/wx/api_gen/gl_gen_nif.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2021. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -422,8 +422,8 @@ decode_var(P=#arg{name=Name, in=true, alt=Alt,
decode_var(P=#arg{name=Name, in=false,
- type=#type{name=T, base=Base, size=Szs}}, Argc)
- when Base =:= binary; Base =:= string ->
+ type=#type{name=T, base=Base, size=Szs, single=Single}}, Argc)
+ when not is_tuple(Single), (Base =:= binary orelse Base =:= string) ->
Sz = case Szs of
{Max,_} when is_integer(Max) -> integer_to_list(Max);
{Max,_} -> Max;
@@ -454,6 +454,19 @@ decode_var(P=#arg{name=Name, in=false, type=#type{name=T,single={list,Sz,_}}}, A
w(" std::vector <~s> ~s (~s);\n", [T, Name, Sz]),
w(" std::vector <ERL_NIF_TERM> ~s_ts (~s);\n", [Name, Sz]),
{P,Argc};
+decode_var(P=#arg{name=Name, in=false,
+ type=#type{base=Base, name=T,single={list,Sz,_,_}, size=Size}}, Argc) ->
+ case Base of
+ string ->
+ {BinSize, _} = Size,
+ w(" ~s = (unsigned char *) enif_alloc((int) ~s*sizeof(~s));\n", [Name,BinSize,T]),
+ w(" unsigned char *~s_ptr = ~s;\n", [Name,Name]),
+ store_free(Name ++ "_ptr");
+ _ ->
+ exit({?LINE, Base, P})
+ end,
+ w(" std::vector <ERL_NIF_TERM> ~s_ts (~s);\n", [Name, Sz]),
+ {P,Argc};
decode_var(P=#arg{name=Name, in=true, type=#type{name="GLUquadric"}}, Argc) ->
w(" if(!egl_get_ptr(env, argv[~w], (void **) &~s)) Badarg(~w,\"~s\");~n",
[Argc, Name,?OP,Name]),
@@ -576,10 +589,6 @@ build_ret(Name,_Q,#type{name=T,base=Base,size=Sz,single=true})
Ptr -> io_lib:format(" enif_make_uint64(env, (egl_uint64_t) ~s)", [Name]);
true -> io_lib:format(" enif_make_int64(env, (egl_int64_t) ~s)", [Name])
end;
-build_ret(Name,_Q,#type{base=string,single=true}) ->
- io_lib:format(" enif_make_string(env, (const char *) ~s, ERL_NIF_LATIN1)",[Name]);
-build_ret(Name,_Q,#type{base=string,size={_,_OutSz}}) ->
- io_lib:format(" enif_make_string(env, (const char *) ~s, ERL_NIF_LATIN1)",[Name]);
build_ret(Name,_Q,#type{name=_T,base=float,size=Sz,single=true}) ->
if Sz =< 4 -> io_lib:format(" enif_make_double(env, (double) ~s)", [Name]);
true -> io_lib:format(" enif_make_double(env, ~s)", [Name])
@@ -602,6 +611,12 @@ build_ret(Name,false,#type{single={list,Sz}}) when Sz >= 10, is_integer(Sz) ->
io_lib:format(" enif_make_list_from_array(env, ~s_ts, ~w)",[Name, Sz]);
build_ret(Name,false,#type{single={list,_,Sz}}) ->
io_lib:format(" enif_make_list_from_array(env, ~s_ts.data(), ~s)",[Name, Sz]);
+build_ret(Name,false,#type{single={list,_,Sz,_}}) ->
+ io_lib:format(" enif_make_list_from_array(env, ~s_ts.data(), ~s)",[Name, Sz]);
+build_ret(Name,_Q,#type{base=string,single=true}) ->
+ io_lib:format(" enif_make_string(env, (const char *) ~s, ERL_NIF_LATIN1)",[Name]);
+build_ret(Name,_Q,#type{base=string,size={_,_OutSz}}) ->
+ io_lib:format(" enif_make_string(env, (const char *) ~s, ERL_NIF_LATIN1)",[Name]);
build_ret(Name,_Q,T=#type{}) ->
io:format("{~p, {~p, {single,{tuple,X}}}}.~n", [get(current_func),Name]),
io:format(" ~p~n",[T]).
@@ -615,6 +630,12 @@ prepare_ret(#arg{name=Name, type=#type{single={list,_,Sz}}=T}) ->
Fetch = build_ret(Name ++ "[ri]", false, T#type{single=true}),
w(" for(int ri=0; ri < (int) ~s; ri++)\n"
" ~s_ts[ri] = ~s;\n",[Sz, Name, Fetch]);
+prepare_ret(#arg{name=Name, type=#type{single={list,_,Sz,Lengths}}=T}) ->
+ Fetch = build_ret(Name, false, T#type{single=true}),
+ w(" for(int ri=0; ri < (int) ~s; ri++) {\n"
+ " ~s_ts[ri] = ~s;\n",[Sz, Name, Fetch]),
+ w(" ~s += ~s[ri];\n"
+ " }\n", [Name, Lengths]);
prepare_ret(_) ->
ok.
diff --git a/lib/wx/api_gen/glapi.conf b/lib/wx/api_gen/glapi.conf
index e8304c31fe..b7b8ede1b7 100644
--- a/lib/wx/api_gen/glapi.conf
+++ b/lib/wx/api_gen/glapi.conf
@@ -483,24 +483,16 @@
{"glDebugMessageControl", [{"count", {c_only, {length, "ids"}}},
{"ids", {single, list}}]}.
-{"glDebugMessageInsertARB", {"length", {c_only, {size, "buf"}}}}.
-
-{"glGetDebugMessageLogARB", [{"sources", {single, {list, "count", "result"}}},
- {"types", {single, {list, "count", "result"}}},
- {"ids", {single, {list, "count", "result"}}},
- {"severities", {single, {list, "count", "result"}}},
- {"lengths", [{c_only, undefined}, {single, {list, "count", "result"}}]},
- {"messageLog", [{string, "bufSize", "result"}
- %%,{single, {list, "bufsize", "result"}}
- ]}]}.
+{"glDebugMessageInsert", {"length", {c_only, {size, "buf"}}}}.
{"glGetDebugMessageLog", [{"sources", {single, {list, "count", "result"}}},
{"types", {single, {list, "count", "result"}}},
{"ids", {single, {list, "count", "result"}}},
{"severities", {single, {list, "count", "result"}}},
{"lengths", [{c_only, undefined}, {single, {list, "count", "result"}}]},
- {"messageLog", [{string, "bufSize", "result"}
- %%,{single, {list, "bufsize", "result"}}
+ {"messageLog", [
+ {single, {list, "count", "result", "lengths"}},
+ {size, "bufSize"}
]}]}.
diff --git a/lib/wx/api_gen/wx_extra/added_func.h b/lib/wx/api_gen/wx_extra/added_func.h
index d3d8527976..bf18a16c6c 100644
--- a/lib/wx/api_gen/wx_extra/added_func.h
+++ b/lib/wx/api_gen/wx_extra/added_func.h
@@ -95,3 +95,9 @@ public:
void SetDragSource(wxAuiNotebook* s) { m_dragSource = s; }
wxAuiNotebook* GetDragSource() const { return m_dragSource; }
};
+
+class wxGLCanvas : public wxWindow
+{
+public:
+ bool CreateSurface();
+};
diff --git a/lib/wx/api_gen/wx_gen_nif.erl b/lib/wx/api_gen/wx_gen_nif.erl
index ab4850c6a9..e768f483fe 100644
--- a/lib/wx/api_gen/wx_gen_nif.erl
+++ b/lib/wx/api_gen/wx_gen_nif.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -1460,7 +1460,9 @@ gen_macros() ->
w("#if wxUSE_WEBVIEW && wxUSE_WEBVIEW_IE~n"),
w("#include <wx/msw/webview_ie.h>~n"),
w("#endif~n"),
-
+ w("#if wxUSE_GLCANVAS_EGL && !wxCHECK_VERSION(3,2,3)~n"),
+ w("#include <EGL/egl.h>~n"),
+ w("#endif~n"),
w("~n~n", []),
w("#ifndef wxICON_DEFAULT_BITMAP_TYPE~n",[]),
diff --git a/lib/wx/api_gen/wxapi.conf b/lib/wx/api_gen/wxapi.conf
index 5d0365da5d..be9529d40c 100644
--- a/lib/wx/api_gen/wxapi.conf
+++ b/lib/wx/api_gen/wxapi.conf
@@ -2,7 +2,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -109,7 +109,10 @@
{'WXK_BROWSER', {test_if, "wxCHECK_VERSION(3,1,0)"}},
{'WXK_VOLUME', {test_if, "wxCHECK_VERSION(3,1,0)"}},
{'WXK_MEDIA', {test_if, "wxCHECK_VERSION(3,1,0)"}},
- {'WXK_LAUNCH', {test_if, "wxCHECK_VERSION(3,1,0)"}},
+ {'WXK_LAUNCH', {test_if, "wxCHECK_VERSION(3,2,0)"}},
+
+ %% Varies in 3.1 and 3.2
+ wxDF_MAX,
{wxTOUCH, {test_if, "wxCHECK_VERSION(3,1,1)"}},
@@ -1439,11 +1442,23 @@
{pre_hook, [{erl, "{ok, _} = wxe_master:init_opengl(),"}]}
]},
{'SetCurrent', [{post_hook,[{c, "setActiveGL(memenv, Ecmd.caller, This, context)"}]}]},
+ {'CreateSurface', [{test_if, "wxUSE_GLCANVAS_EGL"},
+ {pre_hook,
+ [{c, %% Workaround for EGL and 3.2.* crashes
+ "\n#if !wxCHECK_VERSION(3,2,3)\n"
+ " if(!This) throw wxe_badarg(0);\n"
+ " if(This->GetEGLSurface() != EGL_NO_SURFACE)\n"
+ " eglDestroySurface(This->GetEGLDisplay(), This->GetEGLSurface());\n"
+ "#endif\n"
+ }]}
+ ]},
+ 'IsDisplaySupported',
'SwapBuffers']}.
{class, wxGLContext, object, [{ifdef, wxUSE_GLCANVAS}],
[{'wxGLContext', [{"ctxAttrs", nowhere}]},
- {'SetCurrent', [{post_hook,[{c, "setActiveGL(memenv, Ecmd.caller, win, This)"}]}]}
+ {'SetCurrent', [{post_hook,[{c, "setActiveGL(memenv, Ecmd.caller, win, This)"}]}]},
+ {'IsOK', [{test_if, "wxCHECK_VERSION(3,1,0)"}]}
]}.
{class, wxAuiManager, wxEvtHandler, [{ifdef, wxUSE_AUI}],
diff --git a/lib/wx/c_src/egl_impl.c b/lib/wx/c_src/egl_impl.c
index 7fe58a040d..868b32ab79 100644
--- a/lib/wx/c_src/egl_impl.c
+++ b/lib/wx/c_src/egl_impl.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2011-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2011-2023. 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.
@@ -51,7 +51,7 @@ ERL_NIF_TERM EGL_ATOM_BADARG;
static ErlNifFunc egl_funcs[] =
{
- {"lookup_func", 0, egl_lookup_func_func}
+ {"lookup_func_nif", 1, egl_lookup_func_func}
};
static int egl_init(ErlNifEnv *env, void **priv_data, ERL_NIF_TERM arg)
{
@@ -142,9 +142,22 @@ void * egl_lookup_func(int op)
return gl_fns[op-GLE_LIB_START].nif_cb;
}
+const char * egl_lookup_func_desc(int op)
+{
+ return gl_fns[op-GLE_LIB_START].name;
+}
+
+
ERL_NIF_TERM egl_lookup_func_func(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{
- egl_uword func = (egl_uword) egl_lookup_func;
+ egl_uword func = 0;
+ unsigned int which;
+ if(!(enif_get_uint(env, argv[0], &which)) && !(which == 1 || which == 2))
+ return enif_make_badarg(env);
+ if(which == 1)
+ func = (egl_uword) egl_lookup_func;
+ if(which == 2)
+ func = (egl_uword) egl_lookup_func_desc;
if(sizeof(void *) == sizeof(unsigned int))
return enif_make_uint(env, (unsigned int) func);
else
diff --git a/lib/wx/c_src/gen/gl_nif.cpp b/lib/wx/c_src/gen/gl_nif.cpp
index 57e3196d98..efe09af3f7 100644
--- a/lib/wx/c_src/gen/gl_nif.cpp
+++ b/lib/wx/c_src/gen/gl_nif.cpp
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2021. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -11518,15 +11518,13 @@ void ecb_glDebugMessageInsert(ErlNifEnv* env, ErlNifPid *self, ERL_NIF_TERM argv
GLenum type;
GLuint id;
GLenum severity;
- GLsizei length;
ErlNifBinary buf;
if(!enif_get_uint(env, argv[0], &source)) Badarg(5803,"source");
if(!enif_get_uint(env, argv[1], &type)) Badarg(5803,"type");
if(!enif_get_uint(env, argv[2], &id)) Badarg(5803,"id");
if(!enif_get_uint(env, argv[3], &severity)) Badarg(5803,"severity");
- if(!enif_get_int(env, argv[4], &length)) Badarg(5803,"length");
- if(!enif_inspect_binary(env, argv[5], &buf)) Badarg(5803,"buf");
- weglDebugMessageInsert(source,type,id,severity,length,(GLchar *) buf.data);
+ if(!enif_inspect_binary(env, argv[4], &buf)) Badarg(5803,"buf");
+ weglDebugMessageInsert(source,type,id,severity,(GLsizei) buf.size,(GLchar *) buf.data);
}
void ecb_glGetDebugMessageLog(ErlNifEnv* env, ErlNifPid *self, ERL_NIF_TERM argv[])
@@ -11549,6 +11547,8 @@ void ecb_glGetDebugMessageLog(ErlNifEnv* env, ErlNifPid *self, ERL_NIF_TERM argv
std::vector <GLsizei> lengths (count);
std::vector <ERL_NIF_TERM> lengths_ts (count);
messageLog = (unsigned char *) enif_alloc((int) bufSize*sizeof(GLchar));
+ unsigned char *messageLog_ptr = messageLog;
+ std::vector <ERL_NIF_TERM> messageLog_ts (count);
result = weglGetDebugMessageLog(count,bufSize,sources.data(),types.data(),ids.data(),severities.data(),lengths.data(),(GLchar *) messageLog);
for(int ri=0; ri < (int) result; ri++)
sources_ts[ri] = enif_make_int(env, sources[ri]);
@@ -11558,16 +11558,20 @@ void ecb_glGetDebugMessageLog(ErlNifEnv* env, ErlNifPid *self, ERL_NIF_TERM argv
ids_ts[ri] = enif_make_int(env, ids[ri]);
for(int ri=0; ri < (int) result; ri++)
severities_ts[ri] = enif_make_int(env, severities[ri]);
+ for(int ri=0; ri < (int) result; ri++) {
+ messageLog_ts[ri] = enif_make_string(env, (const char *) messageLog, ERL_NIF_LATIN1);
+ messageLog += lengths[ri];
+ }
reply = enif_make_tuple6(env,
enif_make_int(env, result),
enif_make_list_from_array(env, sources_ts.data(), result),
enif_make_list_from_array(env, types_ts.data(), result),
enif_make_list_from_array(env, ids_ts.data(), result),
enif_make_list_from_array(env, severities_ts.data(), result),
- enif_make_string(env, (const char *) messageLog, ERL_NIF_LATIN1) );
+ enif_make_list_from_array(env, messageLog_ts.data(), result) );
enif_send(NULL, self, env,
enif_make_tuple2(env, EGL_ATOM_REPLY, reply));
- enif_free(messageLog);
+ enif_free(messageLog_ptr);
}
void ecb_glPushDebugGroup(ErlNifEnv* env, ErlNifPid *self, ERL_NIF_TERM argv[])
diff --git a/lib/wx/c_src/gen/wxe_func_table.cpp b/lib/wx/c_src/gen/wxe_func_table.cpp
index 3a1d343c53..a044031472 100644
--- a/lib/wx/c_src/gen/wxe_func_table.cpp
+++ b/lib/wx/c_src/gen/wxe_func_table.cpp
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -2455,6 +2455,12 @@ extern void wxGLCanvas_new(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd);
#if wxUSE_GLCANVAS
extern void wxGLCanvas_SetCurrent(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd);
#endif // wxUSE_GLCANVAS
+#if wxUSE_GLCANVAS && wxUSE_GLCANVAS_EGL
+extern void wxGLCanvas_CreateSurface(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd);
+#endif // wxUSE_GLCANVAS && wxUSE_GLCANVAS_EGL
+#if wxUSE_GLCANVAS
+extern void wxGLCanvas_IsDisplaySupported(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd);
+#endif // wxUSE_GLCANVAS
#if wxUSE_GLCANVAS
extern void wxGLCanvas_SwapBuffers(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd);
#endif // wxUSE_GLCANVAS
@@ -2466,6 +2472,9 @@ extern void wxGLContext_new(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd);
#if wxUSE_GLCANVAS
extern void wxGLContext_SetCurrent(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd);
#endif // wxUSE_GLCANVAS
+#if wxUSE_GLCANVAS && wxCHECK_VERSION(3,1,0)
+extern void wxGLContext_IsOK(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd);
+#endif // wxUSE_GLCANVAS && wxCHECK_VERSION(3,1,0)
#if wxUSE_GLCANVAS
#endif // wxUSE_GLCANVAS
#if wxUSE_AUI
@@ -7019,2085 +7028,2100 @@ wxe_fns_t wxe_fns[] =
#else
{NULL, "wxGLCanvas", "setCurrent", 0}, // 2494
#endif // wxUSE_GLCANVAS
+#if wxUSE_GLCANVAS && wxUSE_GLCANVAS_EGL
+ {wxGLCanvas_CreateSurface, "wxGLCanvas", "createSurface", 1}, // 2495
+#else
+ {NULL, "wxGLCanvas", "createSurface", 0}, // 2495
+#endif // wxUSE_GLCANVAS && wxUSE_GLCANVAS_EGL
#if wxUSE_GLCANVAS
- {wxGLCanvas_SwapBuffers, "wxGLCanvas", "swapBuffers", 1}, // 2495
+ {wxGLCanvas_IsDisplaySupported, "wxGLCanvas", "isDisplaySupported", 1}, // 2496
#else
- {NULL, "wxGLCanvas", "swapBuffers", 0}, // 2495
+ {NULL, "wxGLCanvas", "isDisplaySupported", 0}, // 2496
#endif // wxUSE_GLCANVAS
#if wxUSE_GLCANVAS
- {NULL, "wxGLCanvas", "'Destroy'", 1}, // 2496 obj destructor wxGLCanvas_destroy
+ {wxGLCanvas_SwapBuffers, "wxGLCanvas", "swapBuffers", 1}, // 2497
#else
- {NULL, "wxGLCanvas", "'Destroy'", 0}, // 2496
+ {NULL, "wxGLCanvas", "swapBuffers", 0}, // 2497
#endif // wxUSE_GLCANVAS
#if wxUSE_GLCANVAS
- {wxGLContext_new, "wxGLContext", "new", 2}, // 2497
+ {NULL, "wxGLCanvas", "'Destroy'", 1}, // 2498 obj destructor wxGLCanvas_destroy
#else
- {NULL, "wxGLContext", "new", 0}, // 2497
+ {NULL, "wxGLCanvas", "'Destroy'", 0}, // 2498
#endif // wxUSE_GLCANVAS
#if wxUSE_GLCANVAS
- {wxGLContext_SetCurrent, "wxGLContext", "setCurrent", 2}, // 2498
+ {wxGLContext_new, "wxGLContext", "new", 2}, // 2499
#else
- {NULL, "wxGLContext", "setCurrent", 0}, // 2498
+ {NULL, "wxGLContext", "new", 0}, // 2499
#endif // wxUSE_GLCANVAS
#if wxUSE_GLCANVAS
- {NULL, "wxGLContext", "'Destroy'", 1}, // 2499 obj destructor wxGLContext_destroy
+ {wxGLContext_SetCurrent, "wxGLContext", "setCurrent", 2}, // 2500
#else
- {NULL, "wxGLContext", "'Destroy'", 0}, // 2499
+ {NULL, "wxGLContext", "setCurrent", 0}, // 2500
+#endif // wxUSE_GLCANVAS
+#if wxUSE_GLCANVAS && wxCHECK_VERSION(3,1,0)
+ {wxGLContext_IsOK, "wxGLContext", "isOK", 1}, // 2501
+#else
+ {NULL, "wxGLContext", "isOK", 0}, // 2501
+#endif // wxUSE_GLCANVAS && wxCHECK_VERSION(3,1,0)
+#if wxUSE_GLCANVAS
+ {NULL, "wxGLContext", "'Destroy'", 1}, // 2502 obj destructor wxGLContext_destroy
+#else
+ {NULL, "wxGLContext", "'Destroy'", 0}, // 2502
#endif // wxUSE_GLCANVAS
#if wxUSE_AUI
- {wxAuiManager_new, "wxAuiManager", "new", 1}, // 2500
+ {wxAuiManager_new, "wxAuiManager", "new", 1}, // 2503
#else
- {NULL, "wxAuiManager", "new", 0}, // 2500
+ {NULL, "wxAuiManager", "new", 0}, // 2503
#endif // wxUSE_AUI
#if wxUSE_AUI
- {NULL, "wxAuiManager", "destroy", 1}, // 2501 obj destructor wxAuiManager_destruct
+ {NULL, "wxAuiManager", "destroy", 1}, // 2504 obj destructor wxAuiManager_destruct
#else
- {NULL, "wxAuiManager", "destroy", 0}, // 2501
+ {NULL, "wxAuiManager", "destroy", 0}, // 2504
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_AddPane_2_1, "wxAuiManager", "addPane", 3}, // 2502
+ {wxAuiManager_AddPane_2_1, "wxAuiManager", "addPane", 3}, // 2505
#else
- {NULL, "wxAuiManager", "addPane", 0}, // 2502
+ {NULL, "wxAuiManager", "addPane", 0}, // 2505
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_AddPane_2_0, "wxAuiManager", "addPane", 3}, // 2503
+ {wxAuiManager_AddPane_2_0, "wxAuiManager", "addPane", 3}, // 2506
#else
- {NULL, "wxAuiManager", "addPane", 0}, // 2503
+ {NULL, "wxAuiManager", "addPane", 0}, // 2506
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_AddPane_3, "wxAuiManager", "addPane", 4}, // 2504
+ {wxAuiManager_AddPane_3, "wxAuiManager", "addPane", 4}, // 2507
#else
- {NULL, "wxAuiManager", "addPane", 0}, // 2504
+ {NULL, "wxAuiManager", "addPane", 0}, // 2507
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_DetachPane, "wxAuiManager", "detachPane", 2}, // 2505
+ {wxAuiManager_DetachPane, "wxAuiManager", "detachPane", 2}, // 2508
#else
- {NULL, "wxAuiManager", "detachPane", 0}, // 2505
+ {NULL, "wxAuiManager", "detachPane", 0}, // 2508
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_GetAllPanes, "wxAuiManager", "getAllPanes", 1}, // 2506
+ {wxAuiManager_GetAllPanes, "wxAuiManager", "getAllPanes", 1}, // 2509
#else
- {NULL, "wxAuiManager", "getAllPanes", 0}, // 2506
+ {NULL, "wxAuiManager", "getAllPanes", 0}, // 2509
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_GetArtProvider, "wxAuiManager", "getArtProvider", 1}, // 2507
+ {wxAuiManager_GetArtProvider, "wxAuiManager", "getArtProvider", 1}, // 2510
#else
- {NULL, "wxAuiManager", "getArtProvider", 0}, // 2507
+ {NULL, "wxAuiManager", "getArtProvider", 0}, // 2510
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_GetDockSizeConstraint, "wxAuiManager", "getDockSizeConstraint", 1}, // 2508
+ {wxAuiManager_GetDockSizeConstraint, "wxAuiManager", "getDockSizeConstraint", 1}, // 2511
#else
- {NULL, "wxAuiManager", "getDockSizeConstraint", 0}, // 2508
+ {NULL, "wxAuiManager", "getDockSizeConstraint", 0}, // 2511
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_GetFlags, "wxAuiManager", "getFlags", 1}, // 2509
+ {wxAuiManager_GetFlags, "wxAuiManager", "getFlags", 1}, // 2512
#else
- {NULL, "wxAuiManager", "getFlags", 0}, // 2509
+ {NULL, "wxAuiManager", "getFlags", 0}, // 2512
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_GetManagedWindow, "wxAuiManager", "getManagedWindow", 1}, // 2510
+ {wxAuiManager_GetManagedWindow, "wxAuiManager", "getManagedWindow", 1}, // 2513
#else
- {NULL, "wxAuiManager", "getManagedWindow", 0}, // 2510
+ {NULL, "wxAuiManager", "getManagedWindow", 0}, // 2513
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_GetManager, "wxAuiManager", "getManager", 1}, // 2511
+ {wxAuiManager_GetManager, "wxAuiManager", "getManager", 1}, // 2514
#else
- {NULL, "wxAuiManager", "getManager", 0}, // 2511
+ {NULL, "wxAuiManager", "getManager", 0}, // 2514
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_GetPane_1_1, "wxAuiManager", "getPane", 2}, // 2512
+ {wxAuiManager_GetPane_1_1, "wxAuiManager", "getPane", 2}, // 2515
#else
- {NULL, "wxAuiManager", "getPane", 0}, // 2512
+ {NULL, "wxAuiManager", "getPane", 0}, // 2515
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_GetPane_1_0, "wxAuiManager", "getPane", 2}, // 2513
+ {wxAuiManager_GetPane_1_0, "wxAuiManager", "getPane", 2}, // 2516
#else
- {NULL, "wxAuiManager", "getPane", 0}, // 2513
+ {NULL, "wxAuiManager", "getPane", 0}, // 2516
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_HideHint, "wxAuiManager", "hideHint", 1}, // 2514
+ {wxAuiManager_HideHint, "wxAuiManager", "hideHint", 1}, // 2517
#else
- {NULL, "wxAuiManager", "hideHint", 0}, // 2514
+ {NULL, "wxAuiManager", "hideHint", 0}, // 2517
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_InsertPane, "wxAuiManager", "insertPane", 4}, // 2515
+ {wxAuiManager_InsertPane, "wxAuiManager", "insertPane", 4}, // 2518
#else
- {NULL, "wxAuiManager", "insertPane", 0}, // 2515
+ {NULL, "wxAuiManager", "insertPane", 0}, // 2518
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_LoadPaneInfo, "wxAuiManager", "loadPaneInfo", 3}, // 2516
+ {wxAuiManager_LoadPaneInfo, "wxAuiManager", "loadPaneInfo", 3}, // 2519
#else
- {NULL, "wxAuiManager", "loadPaneInfo", 0}, // 2516
+ {NULL, "wxAuiManager", "loadPaneInfo", 0}, // 2519
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_LoadPerspective, "wxAuiManager", "loadPerspective", 3}, // 2517
+ {wxAuiManager_LoadPerspective, "wxAuiManager", "loadPerspective", 3}, // 2520
#else
- {NULL, "wxAuiManager", "loadPerspective", 0}, // 2517
+ {NULL, "wxAuiManager", "loadPerspective", 0}, // 2520
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_SavePaneInfo, "wxAuiManager", "savePaneInfo", 2}, // 2518
+ {wxAuiManager_SavePaneInfo, "wxAuiManager", "savePaneInfo", 2}, // 2521
#else
- {NULL, "wxAuiManager", "savePaneInfo", 0}, // 2518
+ {NULL, "wxAuiManager", "savePaneInfo", 0}, // 2521
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_SavePerspective, "wxAuiManager", "savePerspective", 1}, // 2519
+ {wxAuiManager_SavePerspective, "wxAuiManager", "savePerspective", 1}, // 2522
#else
- {NULL, "wxAuiManager", "savePerspective", 0}, // 2519
+ {NULL, "wxAuiManager", "savePerspective", 0}, // 2522
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_SetArtProvider, "wxAuiManager", "setArtProvider", 2}, // 2520
+ {wxAuiManager_SetArtProvider, "wxAuiManager", "setArtProvider", 2}, // 2523
#else
- {NULL, "wxAuiManager", "setArtProvider", 0}, // 2520
+ {NULL, "wxAuiManager", "setArtProvider", 0}, // 2523
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_SetDockSizeConstraint, "wxAuiManager", "setDockSizeConstraint", 3}, // 2521
+ {wxAuiManager_SetDockSizeConstraint, "wxAuiManager", "setDockSizeConstraint", 3}, // 2524
#else
- {NULL, "wxAuiManager", "setDockSizeConstraint", 0}, // 2521
+ {NULL, "wxAuiManager", "setDockSizeConstraint", 0}, // 2524
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_SetFlags, "wxAuiManager", "setFlags", 2}, // 2522
+ {wxAuiManager_SetFlags, "wxAuiManager", "setFlags", 2}, // 2525
#else
- {NULL, "wxAuiManager", "setFlags", 0}, // 2522
+ {NULL, "wxAuiManager", "setFlags", 0}, // 2525
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_SetManagedWindow, "wxAuiManager", "setManagedWindow", 2}, // 2523
+ {wxAuiManager_SetManagedWindow, "wxAuiManager", "setManagedWindow", 2}, // 2526
#else
- {NULL, "wxAuiManager", "setManagedWindow", 0}, // 2523
+ {NULL, "wxAuiManager", "setManagedWindow", 0}, // 2526
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_ShowHint, "wxAuiManager", "showHint", 2}, // 2524
+ {wxAuiManager_ShowHint, "wxAuiManager", "showHint", 2}, // 2527
#else
- {NULL, "wxAuiManager", "showHint", 0}, // 2524
+ {NULL, "wxAuiManager", "showHint", 0}, // 2527
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_UnInit, "wxAuiManager", "unInit", 1}, // 2525
+ {wxAuiManager_UnInit, "wxAuiManager", "unInit", 1}, // 2528
#else
- {NULL, "wxAuiManager", "unInit", 0}, // 2525
+ {NULL, "wxAuiManager", "unInit", 0}, // 2528
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiManager_Update, "wxAuiManager", "update", 1}, // 2526
+ {wxAuiManager_Update, "wxAuiManager", "update", 1}, // 2529
#else
- {NULL, "wxAuiManager", "update", 0}, // 2526
+ {NULL, "wxAuiManager", "update", 0}, // 2529
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_new_0, "wxAuiPaneInfo", "new", 0}, // 2527
+ {wxAuiPaneInfo_new_0, "wxAuiPaneInfo", "new", 0}, // 2530
#else
- {NULL, "wxAuiPaneInfo", "new", 0}, // 2527
+ {NULL, "wxAuiPaneInfo", "new", 0}, // 2530
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_new_1, "wxAuiPaneInfo", "new", 1}, // 2528
+ {wxAuiPaneInfo_new_1, "wxAuiPaneInfo", "new", 1}, // 2531
#else
- {NULL, "wxAuiPaneInfo", "new", 0}, // 2528
+ {NULL, "wxAuiPaneInfo", "new", 0}, // 2531
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_BestSize_1, "wxAuiPaneInfo", "bestSize", 2}, // 2529
+ {wxAuiPaneInfo_BestSize_1, "wxAuiPaneInfo", "bestSize", 2}, // 2532
#else
- {NULL, "wxAuiPaneInfo", "bestSize", 0}, // 2529
+ {NULL, "wxAuiPaneInfo", "bestSize", 0}, // 2532
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_BestSize_2, "wxAuiPaneInfo", "bestSize", 3}, // 2530
+ {wxAuiPaneInfo_BestSize_2, "wxAuiPaneInfo", "bestSize", 3}, // 2533
#else
- {NULL, "wxAuiPaneInfo", "bestSize", 0}, // 2530
+ {NULL, "wxAuiPaneInfo", "bestSize", 0}, // 2533
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Bottom, "wxAuiPaneInfo", "bottom", 1}, // 2531
+ {wxAuiPaneInfo_Bottom, "wxAuiPaneInfo", "bottom", 1}, // 2534
#else
- {NULL, "wxAuiPaneInfo", "bottom", 0}, // 2531
+ {NULL, "wxAuiPaneInfo", "bottom", 0}, // 2534
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_BottomDockable, "wxAuiPaneInfo", "bottomDockable", 2}, // 2532
+ {wxAuiPaneInfo_BottomDockable, "wxAuiPaneInfo", "bottomDockable", 2}, // 2535
#else
- {NULL, "wxAuiPaneInfo", "bottomDockable", 0}, // 2532
+ {NULL, "wxAuiPaneInfo", "bottomDockable", 0}, // 2535
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Caption, "wxAuiPaneInfo", "caption", 2}, // 2533
+ {wxAuiPaneInfo_Caption, "wxAuiPaneInfo", "caption", 2}, // 2536
#else
- {NULL, "wxAuiPaneInfo", "caption", 0}, // 2533
+ {NULL, "wxAuiPaneInfo", "caption", 0}, // 2536
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_CaptionVisible, "wxAuiPaneInfo", "captionVisible", 2}, // 2534
+ {wxAuiPaneInfo_CaptionVisible, "wxAuiPaneInfo", "captionVisible", 2}, // 2537
#else
- {NULL, "wxAuiPaneInfo", "captionVisible", 0}, // 2534
+ {NULL, "wxAuiPaneInfo", "captionVisible", 0}, // 2537
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Centre, "wxAuiPaneInfo", "centre", 1}, // 2535
+ {wxAuiPaneInfo_Centre, "wxAuiPaneInfo", "centre", 1}, // 2538
#else
- {NULL, "wxAuiPaneInfo", "centre", 0}, // 2535
+ {NULL, "wxAuiPaneInfo", "centre", 0}, // 2538
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_CentrePane, "wxAuiPaneInfo", "centrePane", 1}, // 2536
+ {wxAuiPaneInfo_CentrePane, "wxAuiPaneInfo", "centrePane", 1}, // 2539
#else
- {NULL, "wxAuiPaneInfo", "centrePane", 0}, // 2536
+ {NULL, "wxAuiPaneInfo", "centrePane", 0}, // 2539
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_CloseButton, "wxAuiPaneInfo", "closeButton", 2}, // 2537
+ {wxAuiPaneInfo_CloseButton, "wxAuiPaneInfo", "closeButton", 2}, // 2540
#else
- {NULL, "wxAuiPaneInfo", "closeButton", 0}, // 2537
+ {NULL, "wxAuiPaneInfo", "closeButton", 0}, // 2540
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_DefaultPane, "wxAuiPaneInfo", "defaultPane", 1}, // 2538
+ {wxAuiPaneInfo_DefaultPane, "wxAuiPaneInfo", "defaultPane", 1}, // 2541
#else
- {NULL, "wxAuiPaneInfo", "defaultPane", 0}, // 2538
+ {NULL, "wxAuiPaneInfo", "defaultPane", 0}, // 2541
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_DestroyOnClose, "wxAuiPaneInfo", "destroyOnClose", 2}, // 2539
+ {wxAuiPaneInfo_DestroyOnClose, "wxAuiPaneInfo", "destroyOnClose", 2}, // 2542
#else
- {NULL, "wxAuiPaneInfo", "destroyOnClose", 0}, // 2539
+ {NULL, "wxAuiPaneInfo", "destroyOnClose", 0}, // 2542
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Direction, "wxAuiPaneInfo", "direction", 2}, // 2540
+ {wxAuiPaneInfo_Direction, "wxAuiPaneInfo", "direction", 2}, // 2543
#else
- {NULL, "wxAuiPaneInfo", "direction", 0}, // 2540
+ {NULL, "wxAuiPaneInfo", "direction", 0}, // 2543
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Dock, "wxAuiPaneInfo", "dock", 1}, // 2541
+ {wxAuiPaneInfo_Dock, "wxAuiPaneInfo", "dock", 1}, // 2544
#else
- {NULL, "wxAuiPaneInfo", "dock", 0}, // 2541
+ {NULL, "wxAuiPaneInfo", "dock", 0}, // 2544
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Dockable, "wxAuiPaneInfo", "dockable", 2}, // 2542
+ {wxAuiPaneInfo_Dockable, "wxAuiPaneInfo", "dockable", 2}, // 2545
#else
- {NULL, "wxAuiPaneInfo", "dockable", 0}, // 2542
+ {NULL, "wxAuiPaneInfo", "dockable", 0}, // 2545
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Fixed, "wxAuiPaneInfo", "fixed", 1}, // 2543
+ {wxAuiPaneInfo_Fixed, "wxAuiPaneInfo", "fixed", 1}, // 2546
#else
- {NULL, "wxAuiPaneInfo", "fixed", 0}, // 2543
+ {NULL, "wxAuiPaneInfo", "fixed", 0}, // 2546
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Float, "wxAuiPaneInfo", "float", 1}, // 2544
+ {wxAuiPaneInfo_Float, "wxAuiPaneInfo", "float", 1}, // 2547
#else
- {NULL, "wxAuiPaneInfo", "float", 0}, // 2544
+ {NULL, "wxAuiPaneInfo", "float", 0}, // 2547
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Floatable, "wxAuiPaneInfo", "floatable", 2}, // 2545
+ {wxAuiPaneInfo_Floatable, "wxAuiPaneInfo", "floatable", 2}, // 2548
#else
- {NULL, "wxAuiPaneInfo", "floatable", 0}, // 2545
+ {NULL, "wxAuiPaneInfo", "floatable", 0}, // 2548
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_FloatingPosition_1, "wxAuiPaneInfo", "floatingPosition", 2}, // 2546
+ {wxAuiPaneInfo_FloatingPosition_1, "wxAuiPaneInfo", "floatingPosition", 2}, // 2549
#else
- {NULL, "wxAuiPaneInfo", "floatingPosition", 0}, // 2546
+ {NULL, "wxAuiPaneInfo", "floatingPosition", 0}, // 2549
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_FloatingPosition_2, "wxAuiPaneInfo", "floatingPosition", 3}, // 2547
+ {wxAuiPaneInfo_FloatingPosition_2, "wxAuiPaneInfo", "floatingPosition", 3}, // 2550
#else
- {NULL, "wxAuiPaneInfo", "floatingPosition", 0}, // 2547
+ {NULL, "wxAuiPaneInfo", "floatingPosition", 0}, // 2550
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_FloatingSize_1, "wxAuiPaneInfo", "floatingSize", 2}, // 2548
+ {wxAuiPaneInfo_FloatingSize_1, "wxAuiPaneInfo", "floatingSize", 2}, // 2551
#else
- {NULL, "wxAuiPaneInfo", "floatingSize", 0}, // 2548
+ {NULL, "wxAuiPaneInfo", "floatingSize", 0}, // 2551
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_FloatingSize_2, "wxAuiPaneInfo", "floatingSize", 3}, // 2549
+ {wxAuiPaneInfo_FloatingSize_2, "wxAuiPaneInfo", "floatingSize", 3}, // 2552
#else
- {NULL, "wxAuiPaneInfo", "floatingSize", 0}, // 2549
+ {NULL, "wxAuiPaneInfo", "floatingSize", 0}, // 2552
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Gripper, "wxAuiPaneInfo", "gripper", 2}, // 2550
+ {wxAuiPaneInfo_Gripper, "wxAuiPaneInfo", "gripper", 2}, // 2553
#else
- {NULL, "wxAuiPaneInfo", "gripper", 0}, // 2550
+ {NULL, "wxAuiPaneInfo", "gripper", 0}, // 2553
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GripperTop, "wxAuiPaneInfo", "gripperTop", 2}, // 2551
+ {wxAuiPaneInfo_GripperTop, "wxAuiPaneInfo", "gripperTop", 2}, // 2554
#else
- {NULL, "wxAuiPaneInfo", "gripperTop", 0}, // 2551
+ {NULL, "wxAuiPaneInfo", "gripperTop", 0}, // 2554
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasBorder, "wxAuiPaneInfo", "hasBorder", 1}, // 2552
+ {wxAuiPaneInfo_HasBorder, "wxAuiPaneInfo", "hasBorder", 1}, // 2555
#else
- {NULL, "wxAuiPaneInfo", "hasBorder", 0}, // 2552
+ {NULL, "wxAuiPaneInfo", "hasBorder", 0}, // 2555
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasCaption, "wxAuiPaneInfo", "hasCaption", 1}, // 2553
+ {wxAuiPaneInfo_HasCaption, "wxAuiPaneInfo", "hasCaption", 1}, // 2556
#else
- {NULL, "wxAuiPaneInfo", "hasCaption", 0}, // 2553
+ {NULL, "wxAuiPaneInfo", "hasCaption", 0}, // 2556
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasCloseButton, "wxAuiPaneInfo", "hasCloseButton", 1}, // 2554
+ {wxAuiPaneInfo_HasCloseButton, "wxAuiPaneInfo", "hasCloseButton", 1}, // 2557
#else
- {NULL, "wxAuiPaneInfo", "hasCloseButton", 0}, // 2554
+ {NULL, "wxAuiPaneInfo", "hasCloseButton", 0}, // 2557
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasFlag, "wxAuiPaneInfo", "hasFlag", 2}, // 2555
+ {wxAuiPaneInfo_HasFlag, "wxAuiPaneInfo", "hasFlag", 2}, // 2558
#else
- {NULL, "wxAuiPaneInfo", "hasFlag", 0}, // 2555
+ {NULL, "wxAuiPaneInfo", "hasFlag", 0}, // 2558
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasGripper, "wxAuiPaneInfo", "hasGripper", 1}, // 2556
+ {wxAuiPaneInfo_HasGripper, "wxAuiPaneInfo", "hasGripper", 1}, // 2559
#else
- {NULL, "wxAuiPaneInfo", "hasGripper", 0}, // 2556
+ {NULL, "wxAuiPaneInfo", "hasGripper", 0}, // 2559
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasGripperTop, "wxAuiPaneInfo", "hasGripperTop", 1}, // 2557
+ {wxAuiPaneInfo_HasGripperTop, "wxAuiPaneInfo", "hasGripperTop", 1}, // 2560
#else
- {NULL, "wxAuiPaneInfo", "hasGripperTop", 0}, // 2557
+ {NULL, "wxAuiPaneInfo", "hasGripperTop", 0}, // 2560
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasMaximizeButton, "wxAuiPaneInfo", "hasMaximizeButton", 1}, // 2558
+ {wxAuiPaneInfo_HasMaximizeButton, "wxAuiPaneInfo", "hasMaximizeButton", 1}, // 2561
#else
- {NULL, "wxAuiPaneInfo", "hasMaximizeButton", 0}, // 2558
+ {NULL, "wxAuiPaneInfo", "hasMaximizeButton", 0}, // 2561
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasMinimizeButton, "wxAuiPaneInfo", "hasMinimizeButton", 1}, // 2559
+ {wxAuiPaneInfo_HasMinimizeButton, "wxAuiPaneInfo", "hasMinimizeButton", 1}, // 2562
#else
- {NULL, "wxAuiPaneInfo", "hasMinimizeButton", 0}, // 2559
+ {NULL, "wxAuiPaneInfo", "hasMinimizeButton", 0}, // 2562
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_HasPinButton, "wxAuiPaneInfo", "hasPinButton", 1}, // 2560
+ {wxAuiPaneInfo_HasPinButton, "wxAuiPaneInfo", "hasPinButton", 1}, // 2563
#else
- {NULL, "wxAuiPaneInfo", "hasPinButton", 0}, // 2560
+ {NULL, "wxAuiPaneInfo", "hasPinButton", 0}, // 2563
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Hide, "wxAuiPaneInfo", "hide", 1}, // 2561
+ {wxAuiPaneInfo_Hide, "wxAuiPaneInfo", "hide", 1}, // 2564
#else
- {NULL, "wxAuiPaneInfo", "hide", 0}, // 2561
+ {NULL, "wxAuiPaneInfo", "hide", 0}, // 2564
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsBottomDockable, "wxAuiPaneInfo", "isBottomDockable", 1}, // 2562
+ {wxAuiPaneInfo_IsBottomDockable, "wxAuiPaneInfo", "isBottomDockable", 1}, // 2565
#else
- {NULL, "wxAuiPaneInfo", "isBottomDockable", 0}, // 2562
+ {NULL, "wxAuiPaneInfo", "isBottomDockable", 0}, // 2565
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsDocked, "wxAuiPaneInfo", "isDocked", 1}, // 2563
+ {wxAuiPaneInfo_IsDocked, "wxAuiPaneInfo", "isDocked", 1}, // 2566
#else
- {NULL, "wxAuiPaneInfo", "isDocked", 0}, // 2563
+ {NULL, "wxAuiPaneInfo", "isDocked", 0}, // 2566
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsFixed, "wxAuiPaneInfo", "isFixed", 1}, // 2564
+ {wxAuiPaneInfo_IsFixed, "wxAuiPaneInfo", "isFixed", 1}, // 2567
#else
- {NULL, "wxAuiPaneInfo", "isFixed", 0}, // 2564
+ {NULL, "wxAuiPaneInfo", "isFixed", 0}, // 2567
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsFloatable, "wxAuiPaneInfo", "isFloatable", 1}, // 2565
+ {wxAuiPaneInfo_IsFloatable, "wxAuiPaneInfo", "isFloatable", 1}, // 2568
#else
- {NULL, "wxAuiPaneInfo", "isFloatable", 0}, // 2565
+ {NULL, "wxAuiPaneInfo", "isFloatable", 0}, // 2568
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsFloating, "wxAuiPaneInfo", "isFloating", 1}, // 2566
+ {wxAuiPaneInfo_IsFloating, "wxAuiPaneInfo", "isFloating", 1}, // 2569
#else
- {NULL, "wxAuiPaneInfo", "isFloating", 0}, // 2566
+ {NULL, "wxAuiPaneInfo", "isFloating", 0}, // 2569
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsLeftDockable, "wxAuiPaneInfo", "isLeftDockable", 1}, // 2567
+ {wxAuiPaneInfo_IsLeftDockable, "wxAuiPaneInfo", "isLeftDockable", 1}, // 2570
#else
- {NULL, "wxAuiPaneInfo", "isLeftDockable", 0}, // 2567
+ {NULL, "wxAuiPaneInfo", "isLeftDockable", 0}, // 2570
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsMovable, "wxAuiPaneInfo", "isMovable", 1}, // 2568
+ {wxAuiPaneInfo_IsMovable, "wxAuiPaneInfo", "isMovable", 1}, // 2571
#else
- {NULL, "wxAuiPaneInfo", "isMovable", 0}, // 2568
+ {NULL, "wxAuiPaneInfo", "isMovable", 0}, // 2571
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsOk, "wxAuiPaneInfo", "isOk", 1}, // 2569
+ {wxAuiPaneInfo_IsOk, "wxAuiPaneInfo", "isOk", 1}, // 2572
#else
- {NULL, "wxAuiPaneInfo", "isOk", 0}, // 2569
+ {NULL, "wxAuiPaneInfo", "isOk", 0}, // 2572
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsResizable, "wxAuiPaneInfo", "isResizable", 1}, // 2570
+ {wxAuiPaneInfo_IsResizable, "wxAuiPaneInfo", "isResizable", 1}, // 2573
#else
- {NULL, "wxAuiPaneInfo", "isResizable", 0}, // 2570
+ {NULL, "wxAuiPaneInfo", "isResizable", 0}, // 2573
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsRightDockable, "wxAuiPaneInfo", "isRightDockable", 1}, // 2571
+ {wxAuiPaneInfo_IsRightDockable, "wxAuiPaneInfo", "isRightDockable", 1}, // 2574
#else
- {NULL, "wxAuiPaneInfo", "isRightDockable", 0}, // 2571
+ {NULL, "wxAuiPaneInfo", "isRightDockable", 0}, // 2574
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsShown, "wxAuiPaneInfo", "isShown", 1}, // 2572
+ {wxAuiPaneInfo_IsShown, "wxAuiPaneInfo", "isShown", 1}, // 2575
#else
- {NULL, "wxAuiPaneInfo", "isShown", 0}, // 2572
+ {NULL, "wxAuiPaneInfo", "isShown", 0}, // 2575
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsToolbar, "wxAuiPaneInfo", "isToolbar", 1}, // 2573
+ {wxAuiPaneInfo_IsToolbar, "wxAuiPaneInfo", "isToolbar", 1}, // 2576
#else
- {NULL, "wxAuiPaneInfo", "isToolbar", 0}, // 2573
+ {NULL, "wxAuiPaneInfo", "isToolbar", 0}, // 2576
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_IsTopDockable, "wxAuiPaneInfo", "isTopDockable", 1}, // 2574
+ {wxAuiPaneInfo_IsTopDockable, "wxAuiPaneInfo", "isTopDockable", 1}, // 2577
#else
- {NULL, "wxAuiPaneInfo", "isTopDockable", 0}, // 2574
+ {NULL, "wxAuiPaneInfo", "isTopDockable", 0}, // 2577
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Layer, "wxAuiPaneInfo", "layer", 2}, // 2575
+ {wxAuiPaneInfo_Layer, "wxAuiPaneInfo", "layer", 2}, // 2578
#else
- {NULL, "wxAuiPaneInfo", "layer", 0}, // 2575
+ {NULL, "wxAuiPaneInfo", "layer", 0}, // 2578
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Left, "wxAuiPaneInfo", "left", 1}, // 2576
+ {wxAuiPaneInfo_Left, "wxAuiPaneInfo", "left", 1}, // 2579
#else
- {NULL, "wxAuiPaneInfo", "left", 0}, // 2576
+ {NULL, "wxAuiPaneInfo", "left", 0}, // 2579
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_LeftDockable, "wxAuiPaneInfo", "leftDockable", 2}, // 2577
+ {wxAuiPaneInfo_LeftDockable, "wxAuiPaneInfo", "leftDockable", 2}, // 2580
#else
- {NULL, "wxAuiPaneInfo", "leftDockable", 0}, // 2577
+ {NULL, "wxAuiPaneInfo", "leftDockable", 0}, // 2580
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_MaxSize_1, "wxAuiPaneInfo", "maxSize", 2}, // 2578
+ {wxAuiPaneInfo_MaxSize_1, "wxAuiPaneInfo", "maxSize", 2}, // 2581
#else
- {NULL, "wxAuiPaneInfo", "maxSize", 0}, // 2578
+ {NULL, "wxAuiPaneInfo", "maxSize", 0}, // 2581
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_MaxSize_2, "wxAuiPaneInfo", "maxSize", 3}, // 2579
+ {wxAuiPaneInfo_MaxSize_2, "wxAuiPaneInfo", "maxSize", 3}, // 2582
#else
- {NULL, "wxAuiPaneInfo", "maxSize", 0}, // 2579
+ {NULL, "wxAuiPaneInfo", "maxSize", 0}, // 2582
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_MaximizeButton, "wxAuiPaneInfo", "maximizeButton", 2}, // 2580
+ {wxAuiPaneInfo_MaximizeButton, "wxAuiPaneInfo", "maximizeButton", 2}, // 2583
#else
- {NULL, "wxAuiPaneInfo", "maximizeButton", 0}, // 2580
+ {NULL, "wxAuiPaneInfo", "maximizeButton", 0}, // 2583
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_MinSize_1, "wxAuiPaneInfo", "minSize", 2}, // 2581
+ {wxAuiPaneInfo_MinSize_1, "wxAuiPaneInfo", "minSize", 2}, // 2584
#else
- {NULL, "wxAuiPaneInfo", "minSize", 0}, // 2581
+ {NULL, "wxAuiPaneInfo", "minSize", 0}, // 2584
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_MinSize_2, "wxAuiPaneInfo", "minSize", 3}, // 2582
+ {wxAuiPaneInfo_MinSize_2, "wxAuiPaneInfo", "minSize", 3}, // 2585
#else
- {NULL, "wxAuiPaneInfo", "minSize", 0}, // 2582
+ {NULL, "wxAuiPaneInfo", "minSize", 0}, // 2585
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_MinimizeButton, "wxAuiPaneInfo", "minimizeButton", 2}, // 2583
+ {wxAuiPaneInfo_MinimizeButton, "wxAuiPaneInfo", "minimizeButton", 2}, // 2586
#else
- {NULL, "wxAuiPaneInfo", "minimizeButton", 0}, // 2583
+ {NULL, "wxAuiPaneInfo", "minimizeButton", 0}, // 2586
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Movable, "wxAuiPaneInfo", "movable", 2}, // 2584
+ {wxAuiPaneInfo_Movable, "wxAuiPaneInfo", "movable", 2}, // 2587
#else
- {NULL, "wxAuiPaneInfo", "movable", 0}, // 2584
+ {NULL, "wxAuiPaneInfo", "movable", 0}, // 2587
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Name, "wxAuiPaneInfo", "name", 2}, // 2585
+ {wxAuiPaneInfo_Name, "wxAuiPaneInfo", "name", 2}, // 2588
#else
- {NULL, "wxAuiPaneInfo", "name", 0}, // 2585
+ {NULL, "wxAuiPaneInfo", "name", 0}, // 2588
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_PaneBorder, "wxAuiPaneInfo", "paneBorder", 2}, // 2586
+ {wxAuiPaneInfo_PaneBorder, "wxAuiPaneInfo", "paneBorder", 2}, // 2589
#else
- {NULL, "wxAuiPaneInfo", "paneBorder", 0}, // 2586
+ {NULL, "wxAuiPaneInfo", "paneBorder", 0}, // 2589
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_PinButton, "wxAuiPaneInfo", "pinButton", 2}, // 2587
+ {wxAuiPaneInfo_PinButton, "wxAuiPaneInfo", "pinButton", 2}, // 2590
#else
- {NULL, "wxAuiPaneInfo", "pinButton", 0}, // 2587
+ {NULL, "wxAuiPaneInfo", "pinButton", 0}, // 2590
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Position, "wxAuiPaneInfo", "position", 2}, // 2588
+ {wxAuiPaneInfo_Position, "wxAuiPaneInfo", "position", 2}, // 2591
#else
- {NULL, "wxAuiPaneInfo", "position", 0}, // 2588
+ {NULL, "wxAuiPaneInfo", "position", 0}, // 2591
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Resizable, "wxAuiPaneInfo", "resizable", 2}, // 2589
+ {wxAuiPaneInfo_Resizable, "wxAuiPaneInfo", "resizable", 2}, // 2592
#else
- {NULL, "wxAuiPaneInfo", "resizable", 0}, // 2589
+ {NULL, "wxAuiPaneInfo", "resizable", 0}, // 2592
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Right, "wxAuiPaneInfo", "right", 1}, // 2590
+ {wxAuiPaneInfo_Right, "wxAuiPaneInfo", "right", 1}, // 2593
#else
- {NULL, "wxAuiPaneInfo", "right", 0}, // 2590
+ {NULL, "wxAuiPaneInfo", "right", 0}, // 2593
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_RightDockable, "wxAuiPaneInfo", "rightDockable", 2}, // 2591
+ {wxAuiPaneInfo_RightDockable, "wxAuiPaneInfo", "rightDockable", 2}, // 2594
#else
- {NULL, "wxAuiPaneInfo", "rightDockable", 0}, // 2591
+ {NULL, "wxAuiPaneInfo", "rightDockable", 0}, // 2594
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Row, "wxAuiPaneInfo", "row", 2}, // 2592
+ {wxAuiPaneInfo_Row, "wxAuiPaneInfo", "row", 2}, // 2595
#else
- {NULL, "wxAuiPaneInfo", "row", 0}, // 2592
+ {NULL, "wxAuiPaneInfo", "row", 0}, // 2595
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_SafeSet, "wxAuiPaneInfo", "safeSet", 2}, // 2593
+ {wxAuiPaneInfo_SafeSet, "wxAuiPaneInfo", "safeSet", 2}, // 2596
#else
- {NULL, "wxAuiPaneInfo", "safeSet", 0}, // 2593
+ {NULL, "wxAuiPaneInfo", "safeSet", 0}, // 2596
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_SetFlag, "wxAuiPaneInfo", "setFlag", 3}, // 2594
+ {wxAuiPaneInfo_SetFlag, "wxAuiPaneInfo", "setFlag", 3}, // 2597
#else
- {NULL, "wxAuiPaneInfo", "setFlag", 0}, // 2594
+ {NULL, "wxAuiPaneInfo", "setFlag", 0}, // 2597
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Show, "wxAuiPaneInfo", "show", 2}, // 2595
+ {wxAuiPaneInfo_Show, "wxAuiPaneInfo", "show", 2}, // 2598
#else
- {NULL, "wxAuiPaneInfo", "show", 0}, // 2595
+ {NULL, "wxAuiPaneInfo", "show", 0}, // 2598
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_ToolbarPane, "wxAuiPaneInfo", "toolbarPane", 1}, // 2596
+ {wxAuiPaneInfo_ToolbarPane, "wxAuiPaneInfo", "toolbarPane", 1}, // 2599
#else
- {NULL, "wxAuiPaneInfo", "toolbarPane", 0}, // 2596
+ {NULL, "wxAuiPaneInfo", "toolbarPane", 0}, // 2599
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Top, "wxAuiPaneInfo", "top", 1}, // 2597
+ {wxAuiPaneInfo_Top, "wxAuiPaneInfo", "top", 1}, // 2600
#else
- {NULL, "wxAuiPaneInfo", "top", 0}, // 2597
+ {NULL, "wxAuiPaneInfo", "top", 0}, // 2600
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_TopDockable, "wxAuiPaneInfo", "topDockable", 2}, // 2598
+ {wxAuiPaneInfo_TopDockable, "wxAuiPaneInfo", "topDockable", 2}, // 2601
#else
- {NULL, "wxAuiPaneInfo", "topDockable", 0}, // 2598
+ {NULL, "wxAuiPaneInfo", "topDockable", 0}, // 2601
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_Window, "wxAuiPaneInfo", "window", 2}, // 2599
+ {wxAuiPaneInfo_Window, "wxAuiPaneInfo", "window", 2}, // 2602
#else
- {NULL, "wxAuiPaneInfo", "window", 0}, // 2599
+ {NULL, "wxAuiPaneInfo", "window", 0}, // 2602
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GetWindow, "wxAuiPaneInfo", "getWindow", 1}, // 2600
+ {wxAuiPaneInfo_GetWindow, "wxAuiPaneInfo", "getWindow", 1}, // 2603
#else
- {NULL, "wxAuiPaneInfo", "getWindow", 0}, // 2600
+ {NULL, "wxAuiPaneInfo", "getWindow", 0}, // 2603
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GetFrame, "wxAuiPaneInfo", "getFrame", 1}, // 2601
+ {wxAuiPaneInfo_GetFrame, "wxAuiPaneInfo", "getFrame", 1}, // 2604
#else
- {NULL, "wxAuiPaneInfo", "getFrame", 0}, // 2601
+ {NULL, "wxAuiPaneInfo", "getFrame", 0}, // 2604
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GetDirection, "wxAuiPaneInfo", "getDirection", 1}, // 2602
+ {wxAuiPaneInfo_GetDirection, "wxAuiPaneInfo", "getDirection", 1}, // 2605
#else
- {NULL, "wxAuiPaneInfo", "getDirection", 0}, // 2602
+ {NULL, "wxAuiPaneInfo", "getDirection", 0}, // 2605
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GetLayer, "wxAuiPaneInfo", "getLayer", 1}, // 2603
+ {wxAuiPaneInfo_GetLayer, "wxAuiPaneInfo", "getLayer", 1}, // 2606
#else
- {NULL, "wxAuiPaneInfo", "getLayer", 0}, // 2603
+ {NULL, "wxAuiPaneInfo", "getLayer", 0}, // 2606
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GetRow, "wxAuiPaneInfo", "getRow", 1}, // 2604
+ {wxAuiPaneInfo_GetRow, "wxAuiPaneInfo", "getRow", 1}, // 2607
#else
- {NULL, "wxAuiPaneInfo", "getRow", 0}, // 2604
+ {NULL, "wxAuiPaneInfo", "getRow", 0}, // 2607
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GetPosition, "wxAuiPaneInfo", "getPosition", 1}, // 2605
+ {wxAuiPaneInfo_GetPosition, "wxAuiPaneInfo", "getPosition", 1}, // 2608
#else
- {NULL, "wxAuiPaneInfo", "getPosition", 0}, // 2605
+ {NULL, "wxAuiPaneInfo", "getPosition", 0}, // 2608
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GetFloatingPosition, "wxAuiPaneInfo", "getFloatingPosition", 1}, // 2606
+ {wxAuiPaneInfo_GetFloatingPosition, "wxAuiPaneInfo", "getFloatingPosition", 1}, // 2609
#else
- {NULL, "wxAuiPaneInfo", "getFloatingPosition", 0}, // 2606
+ {NULL, "wxAuiPaneInfo", "getFloatingPosition", 0}, // 2609
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_GetFloatingSize, "wxAuiPaneInfo", "getFloatingSize", 1}, // 2607
+ {wxAuiPaneInfo_GetFloatingSize, "wxAuiPaneInfo", "getFloatingSize", 1}, // 2610
#else
- {NULL, "wxAuiPaneInfo", "getFloatingSize", 0}, // 2607
+ {NULL, "wxAuiPaneInfo", "getFloatingSize", 0}, // 2610
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiPaneInfo_destroy, "wxAuiPaneInfo", "'Destroy'", 1}, // 2608
+ {wxAuiPaneInfo_destroy, "wxAuiPaneInfo", "'Destroy'", 1}, // 2611
#else
- {NULL, "wxAuiPaneInfo", "'Destroy'", 0}, // 2608
+ {NULL, "wxAuiPaneInfo", "'Destroy'", 0}, // 2611
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_new_0, "wxAuiNotebook", "new", 0}, // 2609
+ {wxAuiNotebook_new_0, "wxAuiNotebook", "new", 0}, // 2612
#else
- {NULL, "wxAuiNotebook", "new", 0}, // 2609
+ {NULL, "wxAuiNotebook", "new", 0}, // 2612
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_new_2, "wxAuiNotebook", "new", 2}, // 2610
+ {wxAuiNotebook_new_2, "wxAuiNotebook", "new", 2}, // 2613
#else
- {NULL, "wxAuiNotebook", "new", 0}, // 2610
+ {NULL, "wxAuiNotebook", "new", 0}, // 2613
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_AddPage_3, "wxAuiNotebook", "addPage", 4}, // 2611
+ {wxAuiNotebook_AddPage_3, "wxAuiNotebook", "addPage", 4}, // 2614
#else
- {NULL, "wxAuiNotebook", "addPage", 0}, // 2611
+ {NULL, "wxAuiNotebook", "addPage", 0}, // 2614
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_AddPage_4, "wxAuiNotebook", "addPage", 5}, // 2612
+ {wxAuiNotebook_AddPage_4, "wxAuiNotebook", "addPage", 5}, // 2615
#else
- {NULL, "wxAuiNotebook", "addPage", 0}, // 2612
+ {NULL, "wxAuiNotebook", "addPage", 0}, // 2615
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_Create_2, "wxAuiNotebook", "create", 3}, // 2613
+ {wxAuiNotebook_Create_2, "wxAuiNotebook", "create", 3}, // 2616
#else
- {NULL, "wxAuiNotebook", "create", 0}, // 2613
+ {NULL, "wxAuiNotebook", "create", 0}, // 2616
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_Create_3, "wxAuiNotebook", "create", 4}, // 2614
+ {wxAuiNotebook_Create_3, "wxAuiNotebook", "create", 4}, // 2617
#else
- {NULL, "wxAuiNotebook", "create", 0}, // 2614
+ {NULL, "wxAuiNotebook", "create", 0}, // 2617
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_DeletePage, "wxAuiNotebook", "deletePage", 2}, // 2615
+ {wxAuiNotebook_DeletePage, "wxAuiNotebook", "deletePage", 2}, // 2618
#else
- {NULL, "wxAuiNotebook", "deletePage", 0}, // 2615
+ {NULL, "wxAuiNotebook", "deletePage", 0}, // 2618
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_GetArtProvider, "wxAuiNotebook", "getArtProvider", 1}, // 2616
+ {wxAuiNotebook_GetArtProvider, "wxAuiNotebook", "getArtProvider", 1}, // 2619
#else
- {NULL, "wxAuiNotebook", "getArtProvider", 0}, // 2616
+ {NULL, "wxAuiNotebook", "getArtProvider", 0}, // 2619
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_GetPage, "wxAuiNotebook", "getPage", 2}, // 2617
+ {wxAuiNotebook_GetPage, "wxAuiNotebook", "getPage", 2}, // 2620
#else
- {NULL, "wxAuiNotebook", "getPage", 0}, // 2617
+ {NULL, "wxAuiNotebook", "getPage", 0}, // 2620
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_GetPageBitmap, "wxAuiNotebook", "getPageBitmap", 2}, // 2618
+ {wxAuiNotebook_GetPageBitmap, "wxAuiNotebook", "getPageBitmap", 2}, // 2621
#else
- {NULL, "wxAuiNotebook", "getPageBitmap", 0}, // 2618
+ {NULL, "wxAuiNotebook", "getPageBitmap", 0}, // 2621
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_GetPageCount, "wxAuiNotebook", "getPageCount", 1}, // 2619
+ {wxAuiNotebook_GetPageCount, "wxAuiNotebook", "getPageCount", 1}, // 2622
#else
- {NULL, "wxAuiNotebook", "getPageCount", 0}, // 2619
+ {NULL, "wxAuiNotebook", "getPageCount", 0}, // 2622
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_GetPageIndex, "wxAuiNotebook", "getPageIndex", 2}, // 2620
+ {wxAuiNotebook_GetPageIndex, "wxAuiNotebook", "getPageIndex", 2}, // 2623
#else
- {NULL, "wxAuiNotebook", "getPageIndex", 0}, // 2620
+ {NULL, "wxAuiNotebook", "getPageIndex", 0}, // 2623
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_GetPageText, "wxAuiNotebook", "getPageText", 2}, // 2621
+ {wxAuiNotebook_GetPageText, "wxAuiNotebook", "getPageText", 2}, // 2624
#else
- {NULL, "wxAuiNotebook", "getPageText", 0}, // 2621
+ {NULL, "wxAuiNotebook", "getPageText", 0}, // 2624
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_GetSelection, "wxAuiNotebook", "getSelection", 1}, // 2622
+ {wxAuiNotebook_GetSelection, "wxAuiNotebook", "getSelection", 1}, // 2625
#else
- {NULL, "wxAuiNotebook", "getSelection", 0}, // 2622
+ {NULL, "wxAuiNotebook", "getSelection", 0}, // 2625
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_InsertPage_4, "wxAuiNotebook", "insertPage", 5}, // 2623
+ {wxAuiNotebook_InsertPage_4, "wxAuiNotebook", "insertPage", 5}, // 2626
#else
- {NULL, "wxAuiNotebook", "insertPage", 0}, // 2623
+ {NULL, "wxAuiNotebook", "insertPage", 0}, // 2626
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_InsertPage_5, "wxAuiNotebook", "insertPage", 6}, // 2624
+ {wxAuiNotebook_InsertPage_5, "wxAuiNotebook", "insertPage", 6}, // 2627
#else
- {NULL, "wxAuiNotebook", "insertPage", 0}, // 2624
+ {NULL, "wxAuiNotebook", "insertPage", 0}, // 2627
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_RemovePage, "wxAuiNotebook", "removePage", 2}, // 2625
+ {wxAuiNotebook_RemovePage, "wxAuiNotebook", "removePage", 2}, // 2628
#else
- {NULL, "wxAuiNotebook", "removePage", 0}, // 2625
+ {NULL, "wxAuiNotebook", "removePage", 0}, // 2628
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_SetArtProvider, "wxAuiNotebook", "setArtProvider", 2}, // 2626
+ {wxAuiNotebook_SetArtProvider, "wxAuiNotebook", "setArtProvider", 2}, // 2629
#else
- {NULL, "wxAuiNotebook", "setArtProvider", 0}, // 2626
+ {NULL, "wxAuiNotebook", "setArtProvider", 0}, // 2629
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_SetFont, "wxAuiNotebook", "setFont", 2}, // 2627
+ {wxAuiNotebook_SetFont, "wxAuiNotebook", "setFont", 2}, // 2630
#else
- {NULL, "wxAuiNotebook", "setFont", 0}, // 2627
+ {NULL, "wxAuiNotebook", "setFont", 0}, // 2630
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_SetPageBitmap, "wxAuiNotebook", "setPageBitmap", 3}, // 2628
+ {wxAuiNotebook_SetPageBitmap, "wxAuiNotebook", "setPageBitmap", 3}, // 2631
#else
- {NULL, "wxAuiNotebook", "setPageBitmap", 0}, // 2628
+ {NULL, "wxAuiNotebook", "setPageBitmap", 0}, // 2631
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_SetPageText, "wxAuiNotebook", "setPageText", 3}, // 2629
+ {wxAuiNotebook_SetPageText, "wxAuiNotebook", "setPageText", 3}, // 2632
#else
- {NULL, "wxAuiNotebook", "setPageText", 0}, // 2629
+ {NULL, "wxAuiNotebook", "setPageText", 0}, // 2632
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_SetSelection, "wxAuiNotebook", "setSelection", 2}, // 2630
+ {wxAuiNotebook_SetSelection, "wxAuiNotebook", "setSelection", 2}, // 2633
#else
- {NULL, "wxAuiNotebook", "setSelection", 0}, // 2630
+ {NULL, "wxAuiNotebook", "setSelection", 0}, // 2633
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_SetTabCtrlHeight, "wxAuiNotebook", "setTabCtrlHeight", 2}, // 2631
+ {wxAuiNotebook_SetTabCtrlHeight, "wxAuiNotebook", "setTabCtrlHeight", 2}, // 2634
#else
- {NULL, "wxAuiNotebook", "setTabCtrlHeight", 0}, // 2631
+ {NULL, "wxAuiNotebook", "setTabCtrlHeight", 0}, // 2634
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiNotebook_SetUniformBitmapSize, "wxAuiNotebook", "setUniformBitmapSize", 2}, // 2632
+ {wxAuiNotebook_SetUniformBitmapSize, "wxAuiNotebook", "setUniformBitmapSize", 2}, // 2635
#else
- {NULL, "wxAuiNotebook", "setUniformBitmapSize", 0}, // 2632
+ {NULL, "wxAuiNotebook", "setUniformBitmapSize", 0}, // 2635
#endif // wxUSE_AUI
#if wxUSE_AUI
- {NULL, "wxAuiNotebook", "'Destroy'", 1}, // 2633 obj destructor wxAuiNotebook_destroy
+ {NULL, "wxAuiNotebook", "'Destroy'", 1}, // 2636 obj destructor wxAuiNotebook_destroy
#else
- {NULL, "wxAuiNotebook", "'Destroy'", 0}, // 2633
+ {NULL, "wxAuiNotebook", "'Destroy'", 0}, // 2636
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiTabArt_SetFlags, "wxAuiTabArt", "setFlags", 2}, // 2634
+ {wxAuiTabArt_SetFlags, "wxAuiTabArt", "setFlags", 2}, // 2637
#else
- {NULL, "wxAuiTabArt", "setFlags", 0}, // 2634
+ {NULL, "wxAuiTabArt", "setFlags", 0}, // 2637
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiTabArt_SetMeasuringFont, "wxAuiTabArt", "setMeasuringFont", 2}, // 2635
+ {wxAuiTabArt_SetMeasuringFont, "wxAuiTabArt", "setMeasuringFont", 2}, // 2638
#else
- {NULL, "wxAuiTabArt", "setMeasuringFont", 0}, // 2635
+ {NULL, "wxAuiTabArt", "setMeasuringFont", 0}, // 2638
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiTabArt_SetNormalFont, "wxAuiTabArt", "setNormalFont", 2}, // 2636
+ {wxAuiTabArt_SetNormalFont, "wxAuiTabArt", "setNormalFont", 2}, // 2639
#else
- {NULL, "wxAuiTabArt", "setNormalFont", 0}, // 2636
+ {NULL, "wxAuiTabArt", "setNormalFont", 0}, // 2639
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiTabArt_SetSelectedFont, "wxAuiTabArt", "setSelectedFont", 2}, // 2637
+ {wxAuiTabArt_SetSelectedFont, "wxAuiTabArt", "setSelectedFont", 2}, // 2640
#else
- {NULL, "wxAuiTabArt", "setSelectedFont", 0}, // 2637
+ {NULL, "wxAuiTabArt", "setSelectedFont", 0}, // 2640
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiTabArt_SetColour, "wxAuiTabArt", "setColour", 2}, // 2638
+ {wxAuiTabArt_SetColour, "wxAuiTabArt", "setColour", 2}, // 2641
#else
- {NULL, "wxAuiTabArt", "setColour", 0}, // 2638
+ {NULL, "wxAuiTabArt", "setColour", 0}, // 2641
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiTabArt_SetActiveColour, "wxAuiTabArt", "setActiveColour", 2}, // 2639
+ {wxAuiTabArt_SetActiveColour, "wxAuiTabArt", "setActiveColour", 2}, // 2642
#else
- {NULL, "wxAuiTabArt", "setActiveColour", 0}, // 2639
+ {NULL, "wxAuiTabArt", "setActiveColour", 0}, // 2642
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiDockArt_GetColour, "wxAuiDockArt", "getColour", 2}, // 2640
+ {wxAuiDockArt_GetColour, "wxAuiDockArt", "getColour", 2}, // 2643
#else
- {NULL, "wxAuiDockArt", "getColour", 0}, // 2640
+ {NULL, "wxAuiDockArt", "getColour", 0}, // 2643
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiDockArt_GetFont, "wxAuiDockArt", "getFont", 2}, // 2641
+ {wxAuiDockArt_GetFont, "wxAuiDockArt", "getFont", 2}, // 2644
#else
- {NULL, "wxAuiDockArt", "getFont", 0}, // 2641
+ {NULL, "wxAuiDockArt", "getFont", 0}, // 2644
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiDockArt_GetMetric, "wxAuiDockArt", "getMetric", 2}, // 2642
+ {wxAuiDockArt_GetMetric, "wxAuiDockArt", "getMetric", 2}, // 2645
#else
- {NULL, "wxAuiDockArt", "getMetric", 0}, // 2642
+ {NULL, "wxAuiDockArt", "getMetric", 0}, // 2645
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiDockArt_SetColour, "wxAuiDockArt", "setColour", 3}, // 2643
+ {wxAuiDockArt_SetColour, "wxAuiDockArt", "setColour", 3}, // 2646
#else
- {NULL, "wxAuiDockArt", "setColour", 0}, // 2643
+ {NULL, "wxAuiDockArt", "setColour", 0}, // 2646
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiDockArt_SetFont, "wxAuiDockArt", "setFont", 3}, // 2644
+ {wxAuiDockArt_SetFont, "wxAuiDockArt", "setFont", 3}, // 2647
#else
- {NULL, "wxAuiDockArt", "setFont", 0}, // 2644
+ {NULL, "wxAuiDockArt", "setFont", 0}, // 2647
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiDockArt_SetMetric, "wxAuiDockArt", "setMetric", 3}, // 2645
+ {wxAuiDockArt_SetMetric, "wxAuiDockArt", "setMetric", 3}, // 2648
#else
- {NULL, "wxAuiDockArt", "setMetric", 0}, // 2645
+ {NULL, "wxAuiDockArt", "setMetric", 0}, // 2648
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiSimpleTabArt_new, "wxAuiSimpleTabArt", "new", 0}, // 2646
+ {wxAuiSimpleTabArt_new, "wxAuiSimpleTabArt", "new", 0}, // 2649
#else
- {NULL, "wxAuiSimpleTabArt", "new", 0}, // 2646
+ {NULL, "wxAuiSimpleTabArt", "new", 0}, // 2649
#endif // wxUSE_AUI
#if wxUSE_AUI
- {wxAuiSimpleTabArt_destroy, "wxAuiSimpleTabArt", "'Destroy'", 1}, // 2647
+ {wxAuiSimpleTabArt_destroy, "wxAuiSimpleTabArt", "'Destroy'", 1}, // 2650
#else
- {NULL, "wxAuiSimpleTabArt", "'Destroy'", 0}, // 2647
+ {NULL, "wxAuiSimpleTabArt", "'Destroy'", 0}, // 2650
#endif // wxUSE_AUI
- {wxMDIParentFrame_new_0, "wxMDIParentFrame", "new", 0}, // 2648
- {wxMDIParentFrame_new_4, "wxMDIParentFrame", "new", 4}, // 2649
- {NULL, "wxMDIParentFrame", "destroy", 1}, // 2650 obj destructor wxMDIParentFrame_destruct
- {wxMDIParentFrame_ActivateNext, "wxMDIParentFrame", "activateNext", 1}, // 2651
- {wxMDIParentFrame_ActivatePrevious, "wxMDIParentFrame", "activatePrevious", 1}, // 2652
- {wxMDIParentFrame_ArrangeIcons, "wxMDIParentFrame", "arrangeIcons", 1}, // 2653
- {wxMDIParentFrame_Cascade, "wxMDIParentFrame", "cascade", 1}, // 2654
- {wxMDIParentFrame_Create, "wxMDIParentFrame", "create", 5}, // 2655
- {wxMDIParentFrame_GetActiveChild, "wxMDIParentFrame", "getActiveChild", 1}, // 2656
- {wxMDIParentFrame_GetClientWindow, "wxMDIParentFrame", "getClientWindow", 1}, // 2657
- {wxMDIParentFrame_Tile, "wxMDIParentFrame", "tile", 2}, // 2658
- {wxMDIChildFrame_new_0, "wxMDIChildFrame", "new", 0}, // 2659
- {wxMDIChildFrame_new_4, "wxMDIChildFrame", "new", 4}, // 2660
- {NULL, "wxMDIChildFrame", "destroy", 1}, // 2661 obj destructor wxMDIChildFrame_destruct
- {wxMDIChildFrame_Activate, "wxMDIChildFrame", "activate", 1}, // 2662
- {wxMDIChildFrame_Create, "wxMDIChildFrame", "create", 5}, // 2663
- {wxMDIChildFrame_Maximize, "wxMDIChildFrame", "maximize", 2}, // 2664
- {wxMDIChildFrame_Restore, "wxMDIChildFrame", "restore", 1}, // 2665
- {wxMDIClientWindow_new, "wxMDIClientWindow", "new", 0}, // 2666
- {wxMDIClientWindow_CreateClient, "wxMDIClientWindow", "createClient", 3}, // 2667
- {NULL, "wxMDIClientWindow", "'Destroy'", 1}, // 2668 obj destructor wxMDIClientWindow_destroy
- {wxLayoutAlgorithm_new, "wxLayoutAlgorithm", "new", 0}, // 2669
- {NULL, "wxLayoutAlgorithm", "destroy", 1}, // 2670 obj destructor wxLayoutAlgorithm_destruct
- {wxLayoutAlgorithm_LayoutFrame, "wxLayoutAlgorithm", "layoutFrame", 3}, // 2671
- {wxLayoutAlgorithm_LayoutMDIFrame, "wxLayoutAlgorithm", "layoutMDIFrame", 3}, // 2672
- {wxLayoutAlgorithm_LayoutWindow, "wxLayoutAlgorithm", "layoutWindow", 3}, // 2673
- {wxEvent_GetId, "wxEvent", "getId", 1}, // 2674
- {wxEvent_GetSkipped, "wxEvent", "getSkipped", 1}, // 2675
- {wxEvent_GetTimestamp, "wxEvent", "getTimestamp", 1}, // 2676
- {wxEvent_IsCommandEvent, "wxEvent", "isCommandEvent", 1}, // 2677
- {wxEvent_ResumePropagation, "wxEvent", "resumePropagation", 2}, // 2678
- {wxEvent_ShouldPropagate, "wxEvent", "shouldPropagate", 1}, // 2679
- {wxEvent_Skip, "wxEvent", "skip", 2}, // 2680
- {wxEvent_StopPropagation, "wxEvent", "stopPropagation", 1}, // 2681
- {wxCommandEvent_getClientData, "wxCommandEvent", "getClientData", 1}, // 2682
- {wxCommandEvent_GetExtraLong, "wxCommandEvent", "getExtraLong", 1}, // 2683
- {wxCommandEvent_GetInt, "wxCommandEvent", "getInt", 1}, // 2684
- {wxCommandEvent_GetSelection, "wxCommandEvent", "getSelection", 1}, // 2685
- {wxCommandEvent_GetString, "wxCommandEvent", "getString", 1}, // 2686
- {wxCommandEvent_IsChecked, "wxCommandEvent", "isChecked", 1}, // 2687
- {wxCommandEvent_IsSelection, "wxCommandEvent", "isSelection", 1}, // 2688
- {wxCommandEvent_SetInt, "wxCommandEvent", "setInt", 2}, // 2689
- {wxCommandEvent_SetString, "wxCommandEvent", "setString", 2}, // 2690
- {wxScrollEvent_GetOrientation, "wxScrollEvent", "getOrientation", 1}, // 2691
- {wxScrollEvent_GetPosition, "wxScrollEvent", "getPosition", 1}, // 2692
- {wxScrollWinEvent_GetOrientation, "wxScrollWinEvent", "getOrientation", 1}, // 2693
- {wxScrollWinEvent_GetPosition, "wxScrollWinEvent", "getPosition", 1}, // 2694
- {wxMouseEvent_AltDown, "wxMouseEvent", "altDown", 1}, // 2695
- {wxMouseEvent_Button, "wxMouseEvent", "button", 2}, // 2696
- {wxMouseEvent_ButtonDClick, "wxMouseEvent", "buttonDClick", 2}, // 2697
- {wxMouseEvent_ButtonDown, "wxMouseEvent", "buttonDown", 2}, // 2698
- {wxMouseEvent_ButtonUp, "wxMouseEvent", "buttonUp", 2}, // 2699
- {wxMouseEvent_CmdDown, "wxMouseEvent", "cmdDown", 1}, // 2700
- {wxMouseEvent_ControlDown, "wxMouseEvent", "controlDown", 1}, // 2701
- {wxMouseEvent_Dragging, "wxMouseEvent", "dragging", 1}, // 2702
- {wxMouseEvent_Entering, "wxMouseEvent", "entering", 1}, // 2703
- {wxMouseEvent_GetButton, "wxMouseEvent", "getButton", 1}, // 2704
- {wxMouseEvent_GetPosition, "wxMouseEvent", "getPosition", 1}, // 2705
- {NULL, "", "", 0}, // 2706
- {wxMouseEvent_GetLogicalPosition, "wxMouseEvent", "getLogicalPosition", 2}, // 2707
- {wxMouseEvent_GetLinesPerAction, "wxMouseEvent", "getLinesPerAction", 1}, // 2708
- {wxMouseEvent_GetWheelRotation, "wxMouseEvent", "getWheelRotation", 1}, // 2709
- {wxMouseEvent_GetWheelDelta, "wxMouseEvent", "getWheelDelta", 1}, // 2710
- {wxMouseEvent_GetX, "wxMouseEvent", "getX", 1}, // 2711
- {wxMouseEvent_GetY, "wxMouseEvent", "getY", 1}, // 2712
- {wxMouseEvent_IsButton, "wxMouseEvent", "isButton", 1}, // 2713
- {wxMouseEvent_IsPageScroll, "wxMouseEvent", "isPageScroll", 1}, // 2714
- {wxMouseEvent_Leaving, "wxMouseEvent", "leaving", 1}, // 2715
- {wxMouseEvent_LeftDClick, "wxMouseEvent", "leftDClick", 1}, // 2716
- {wxMouseEvent_LeftDown, "wxMouseEvent", "leftDown", 1}, // 2717
- {wxMouseEvent_LeftIsDown, "wxMouseEvent", "leftIsDown", 1}, // 2718
- {wxMouseEvent_LeftUp, "wxMouseEvent", "leftUp", 1}, // 2719
- {wxMouseEvent_MetaDown, "wxMouseEvent", "metaDown", 1}, // 2720
- {wxMouseEvent_MiddleDClick, "wxMouseEvent", "middleDClick", 1}, // 2721
- {wxMouseEvent_MiddleDown, "wxMouseEvent", "middleDown", 1}, // 2722
- {wxMouseEvent_MiddleIsDown, "wxMouseEvent", "middleIsDown", 1}, // 2723
- {wxMouseEvent_MiddleUp, "wxMouseEvent", "middleUp", 1}, // 2724
- {wxMouseEvent_Moving, "wxMouseEvent", "moving", 1}, // 2725
- {wxMouseEvent_RightDClick, "wxMouseEvent", "rightDClick", 1}, // 2726
- {wxMouseEvent_RightDown, "wxMouseEvent", "rightDown", 1}, // 2727
- {wxMouseEvent_RightIsDown, "wxMouseEvent", "rightIsDown", 1}, // 2728
- {wxMouseEvent_RightUp, "wxMouseEvent", "rightUp", 1}, // 2729
- {wxMouseEvent_ShiftDown, "wxMouseEvent", "shiftDown", 1}, // 2730
- {wxMouseEvent_GetWheelAxis, "wxMouseEvent", "getWheelAxis", 1}, // 2731
- {wxMouseEvent_Aux1DClick, "wxMouseEvent", "aux1DClick", 1}, // 2732
- {wxMouseEvent_Aux1Down, "wxMouseEvent", "aux1Down", 1}, // 2733
- {wxMouseEvent_Aux1Up, "wxMouseEvent", "aux1Up", 1}, // 2734
- {wxMouseEvent_Aux2DClick, "wxMouseEvent", "aux2DClick", 1}, // 2735
- {wxMouseEvent_Aux2Down, "wxMouseEvent", "aux2Down", 1}, // 2736
- {wxMouseEvent_Aux2Up, "wxMouseEvent", "aux2Up", 1}, // 2737
- {wxSetCursorEvent_GetCursor, "wxSetCursorEvent", "getCursor", 1}, // 2738
- {wxSetCursorEvent_GetX, "wxSetCursorEvent", "getX", 1}, // 2739
- {wxSetCursorEvent_GetY, "wxSetCursorEvent", "getY", 1}, // 2740
- {wxSetCursorEvent_HasCursor, "wxSetCursorEvent", "hasCursor", 1}, // 2741
- {wxSetCursorEvent_SetCursor, "wxSetCursorEvent", "setCursor", 2}, // 2742
- {wxKeyEvent_AltDown, "wxKeyEvent", "altDown", 1}, // 2743
- {wxKeyEvent_CmdDown, "wxKeyEvent", "cmdDown", 1}, // 2744
- {wxKeyEvent_ControlDown, "wxKeyEvent", "controlDown", 1}, // 2745
- {wxKeyEvent_GetKeyCode, "wxKeyEvent", "getKeyCode", 1}, // 2746
- {wxKeyEvent_GetModifiers, "wxKeyEvent", "getModifiers", 1}, // 2747
- {wxKeyEvent_GetPosition, "wxKeyEvent", "getPosition", 1}, // 2748
- {NULL, "", "", 0}, // 2749
- {wxKeyEvent_GetRawKeyCode, "wxKeyEvent", "getRawKeyCode", 1}, // 2750
- {wxKeyEvent_GetRawKeyFlags, "wxKeyEvent", "getRawKeyFlags", 1}, // 2751
- {wxKeyEvent_GetUnicodeKey, "wxKeyEvent", "getUnicodeKey", 1}, // 2752
- {wxKeyEvent_GetX, "wxKeyEvent", "getX", 1}, // 2753
- {wxKeyEvent_GetY, "wxKeyEvent", "getY", 1}, // 2754
- {wxKeyEvent_HasModifiers, "wxKeyEvent", "hasModifiers", 1}, // 2755
- {wxKeyEvent_MetaDown, "wxKeyEvent", "metaDown", 1}, // 2756
- {wxKeyEvent_ShiftDown, "wxKeyEvent", "shiftDown", 1}, // 2757
- {wxSizeEvent_GetSize, "wxSizeEvent", "getSize", 1}, // 2758
- {wxSizeEvent_GetRect, "wxSizeEvent", "getRect", 1}, // 2759
- {wxMoveEvent_GetPosition, "wxMoveEvent", "getPosition", 1}, // 2760
- {wxMoveEvent_GetRect, "wxMoveEvent", "getRect", 1}, // 2761
- {wxEraseEvent_GetDC, "wxEraseEvent", "getDC", 1}, // 2762
- {wxFocusEvent_GetWindow, "wxFocusEvent", "getWindow", 1}, // 2763
- {wxChildFocusEvent_GetWindow, "wxChildFocusEvent", "getWindow", 1}, // 2764
- {wxMenuEvent_GetMenu, "wxMenuEvent", "getMenu", 1}, // 2765
- {wxMenuEvent_GetMenuId, "wxMenuEvent", "getMenuId", 1}, // 2766
- {wxMenuEvent_IsPopup, "wxMenuEvent", "isPopup", 1}, // 2767
- {wxCloseEvent_CanVeto, "wxCloseEvent", "canVeto", 1}, // 2768
- {wxCloseEvent_GetLoggingOff, "wxCloseEvent", "getLoggingOff", 1}, // 2769
- {wxCloseEvent_SetCanVeto, "wxCloseEvent", "setCanVeto", 2}, // 2770
- {wxCloseEvent_SetLoggingOff, "wxCloseEvent", "setLoggingOff", 2}, // 2771
- {wxCloseEvent_Veto, "wxCloseEvent", "veto", 2}, // 2772
- {wxShowEvent_SetShow, "wxShowEvent", "setShow", 2}, // 2773
- {wxShowEvent_IsShown, "wxShowEvent", "isShown", 1}, // 2774
- {wxIconizeEvent_IsIconized, "wxIconizeEvent", "isIconized", 1}, // 2775
- {wxJoystickEvent_ButtonDown, "wxJoystickEvent", "buttonDown", 2}, // 2776
- {wxJoystickEvent_ButtonIsDown, "wxJoystickEvent", "buttonIsDown", 2}, // 2777
- {wxJoystickEvent_ButtonUp, "wxJoystickEvent", "buttonUp", 2}, // 2778
- {wxJoystickEvent_GetButtonChange, "wxJoystickEvent", "getButtonChange", 1}, // 2779
- {wxJoystickEvent_GetButtonState, "wxJoystickEvent", "getButtonState", 1}, // 2780
- {wxJoystickEvent_GetJoystick, "wxJoystickEvent", "getJoystick", 1}, // 2781
- {wxJoystickEvent_GetPosition, "wxJoystickEvent", "getPosition", 1}, // 2782
- {wxJoystickEvent_GetZPosition, "wxJoystickEvent", "getZPosition", 1}, // 2783
- {wxJoystickEvent_IsButton, "wxJoystickEvent", "isButton", 1}, // 2784
- {wxJoystickEvent_IsMove, "wxJoystickEvent", "isMove", 1}, // 2785
- {wxJoystickEvent_IsZMove, "wxJoystickEvent", "isZMove", 1}, // 2786
- {wxUpdateUIEvent_CanUpdate, "wxUpdateUIEvent", "canUpdate", 1}, // 2787
- {wxUpdateUIEvent_Check, "wxUpdateUIEvent", "check", 2}, // 2788
- {wxUpdateUIEvent_Enable, "wxUpdateUIEvent", "enable", 2}, // 2789
- {wxUpdateUIEvent_Show, "wxUpdateUIEvent", "show", 2}, // 2790
- {wxUpdateUIEvent_GetChecked, "wxUpdateUIEvent", "getChecked", 1}, // 2791
- {wxUpdateUIEvent_GetEnabled, "wxUpdateUIEvent", "getEnabled", 1}, // 2792
- {wxUpdateUIEvent_GetShown, "wxUpdateUIEvent", "getShown", 1}, // 2793
- {wxUpdateUIEvent_GetSetChecked, "wxUpdateUIEvent", "getSetChecked", 1}, // 2794
- {wxUpdateUIEvent_GetSetEnabled, "wxUpdateUIEvent", "getSetEnabled", 1}, // 2795
- {wxUpdateUIEvent_GetSetShown, "wxUpdateUIEvent", "getSetShown", 1}, // 2796
- {wxUpdateUIEvent_GetSetText, "wxUpdateUIEvent", "getSetText", 1}, // 2797
- {wxUpdateUIEvent_GetText, "wxUpdateUIEvent", "getText", 1}, // 2798
- {wxUpdateUIEvent_GetMode, "wxUpdateUIEvent", "getMode", 0}, // 2799
- {wxUpdateUIEvent_GetUpdateInterval, "wxUpdateUIEvent", "getUpdateInterval", 0}, // 2800
- {wxUpdateUIEvent_ResetUpdateTime, "wxUpdateUIEvent", "resetUpdateTime", 0}, // 2801
- {wxUpdateUIEvent_SetMode, "wxUpdateUIEvent", "setMode", 1}, // 2802
- {wxUpdateUIEvent_SetText, "wxUpdateUIEvent", "setText", 2}, // 2803
- {wxUpdateUIEvent_SetUpdateInterval, "wxUpdateUIEvent", "setUpdateInterval", 1}, // 2804
- {wxMouseCaptureChangedEvent_GetCapturedWindow, "wxMouseCaptureChangedEvent", "getCapturedWindow", 1}, // 2805
- {wxPaletteChangedEvent_SetChangedWindow, "wxPaletteChangedEvent", "setChangedWindow", 2}, // 2806
- {wxPaletteChangedEvent_GetChangedWindow, "wxPaletteChangedEvent", "getChangedWindow", 1}, // 2807
- {wxQueryNewPaletteEvent_SetPaletteRealized, "wxQueryNewPaletteEvent", "setPaletteRealized", 2}, // 2808
- {wxQueryNewPaletteEvent_GetPaletteRealized, "wxQueryNewPaletteEvent", "getPaletteRealized", 1}, // 2809
- {wxNavigationKeyEvent_GetDirection, "wxNavigationKeyEvent", "getDirection", 1}, // 2810
- {wxNavigationKeyEvent_SetDirection, "wxNavigationKeyEvent", "setDirection", 2}, // 2811
- {wxNavigationKeyEvent_IsWindowChange, "wxNavigationKeyEvent", "isWindowChange", 1}, // 2812
- {wxNavigationKeyEvent_SetWindowChange, "wxNavigationKeyEvent", "setWindowChange", 2}, // 2813
- {wxNavigationKeyEvent_IsFromTab, "wxNavigationKeyEvent", "isFromTab", 1}, // 2814
- {wxNavigationKeyEvent_SetFromTab, "wxNavigationKeyEvent", "setFromTab", 2}, // 2815
- {wxNavigationKeyEvent_GetCurrentFocus, "wxNavigationKeyEvent", "getCurrentFocus", 1}, // 2816
- {wxNavigationKeyEvent_SetCurrentFocus, "wxNavigationKeyEvent", "setCurrentFocus", 2}, // 2817
- {wxHelpEvent_GetOrigin, "wxHelpEvent", "getOrigin", 1}, // 2818
- {wxHelpEvent_GetPosition, "wxHelpEvent", "getPosition", 1}, // 2819
- {wxHelpEvent_SetOrigin, "wxHelpEvent", "setOrigin", 2}, // 2820
- {wxHelpEvent_SetPosition, "wxHelpEvent", "setPosition", 2}, // 2821
- {wxContextMenuEvent_GetPosition, "wxContextMenuEvent", "getPosition", 1}, // 2822
- {wxContextMenuEvent_SetPosition, "wxContextMenuEvent", "setPosition", 2}, // 2823
- {wxIdleEvent_GetMode, "wxIdleEvent", "getMode", 0}, // 2824
- {wxIdleEvent_RequestMore, "wxIdleEvent", "requestMore", 2}, // 2825
- {wxIdleEvent_MoreRequested, "wxIdleEvent", "moreRequested", 1}, // 2826
- {wxIdleEvent_SetMode, "wxIdleEvent", "setMode", 1}, // 2827
- {wxGridEvent_AltDown, "wxGridEvent", "altDown", 1}, // 2828
- {wxGridEvent_ControlDown, "wxGridEvent", "controlDown", 1}, // 2829
- {wxGridEvent_GetCol, "wxGridEvent", "getCol", 1}, // 2830
- {wxGridEvent_GetPosition, "wxGridEvent", "getPosition", 1}, // 2831
- {wxGridEvent_GetRow, "wxGridEvent", "getRow", 1}, // 2832
- {wxGridEvent_MetaDown, "wxGridEvent", "metaDown", 1}, // 2833
- {wxGridEvent_Selecting, "wxGridEvent", "selecting", 1}, // 2834
- {wxGridEvent_ShiftDown, "wxGridEvent", "shiftDown", 1}, // 2835
- {wxNotifyEvent_Allow, "wxNotifyEvent", "allow", 1}, // 2836
- {wxNotifyEvent_IsAllowed, "wxNotifyEvent", "isAllowed", 1}, // 2837
- {wxNotifyEvent_Veto, "wxNotifyEvent", "veto", 1}, // 2838
- {wxSashEvent_GetEdge, "wxSashEvent", "getEdge", 1}, // 2839
- {wxSashEvent_GetDragRect, "wxSashEvent", "getDragRect", 1}, // 2840
- {wxSashEvent_GetDragStatus, "wxSashEvent", "getDragStatus", 1}, // 2841
- {wxListEvent_GetCacheFrom, "wxListEvent", "getCacheFrom", 1}, // 2842
- {wxListEvent_GetCacheTo, "wxListEvent", "getCacheTo", 1}, // 2843
- {wxListEvent_GetKeyCode, "wxListEvent", "getKeyCode", 1}, // 2844
- {wxListEvent_GetIndex, "wxListEvent", "getIndex", 1}, // 2845
- {wxListEvent_GetColumn, "wxListEvent", "getColumn", 1}, // 2846
- {wxListEvent_GetPoint, "wxListEvent", "getPoint", 1}, // 2847
- {wxListEvent_GetLabel, "wxListEvent", "getLabel", 1}, // 2848
- {wxListEvent_GetText, "wxListEvent", "getText", 1}, // 2849
- {wxListEvent_GetImage, "wxListEvent", "getImage", 1}, // 2850
- {wxListEvent_GetData, "wxListEvent", "getData", 1}, // 2851
- {wxListEvent_GetMask, "wxListEvent", "getMask", 1}, // 2852
- {wxListEvent_GetItem, "wxListEvent", "getItem", 1}, // 2853
- {wxListEvent_IsEditCancelled, "wxListEvent", "isEditCancelled", 1}, // 2854
- {wxDateEvent_GetDate, "wxDateEvent", "getDate", 1}, // 2855
- {wxCalendarEvent_GetWeekDay, "wxCalendarEvent", "getWeekDay", 1}, // 2856
- {wxCalendarEvent_GetDate, "wxCalendarEvent", "getDate", 1}, // 2857
- {wxFileDirPickerEvent_GetPath, "wxFileDirPickerEvent", "getPath", 1}, // 2858
- {wxColourPickerEvent_GetColour, "wxColourPickerEvent", "getColour", 1}, // 2859
- {wxFontPickerEvent_GetFont, "wxFontPickerEvent", "getFont", 1}, // 2860
- {wxStyledTextEvent_GetPosition, "wxStyledTextEvent", "getPosition", 1}, // 2861
- {wxStyledTextEvent_GetKey, "wxStyledTextEvent", "getKey", 1}, // 2862
- {wxStyledTextEvent_GetModifiers, "wxStyledTextEvent", "getModifiers", 1}, // 2863
- {wxStyledTextEvent_GetModificationType, "wxStyledTextEvent", "getModificationType", 1}, // 2864
- {wxStyledTextEvent_GetText, "wxStyledTextEvent", "getText", 1}, // 2865
- {wxStyledTextEvent_GetLength, "wxStyledTextEvent", "getLength", 1}, // 2866
- {wxStyledTextEvent_GetLinesAdded, "wxStyledTextEvent", "getLinesAdded", 1}, // 2867
- {wxStyledTextEvent_GetLine, "wxStyledTextEvent", "getLine", 1}, // 2868
- {wxStyledTextEvent_GetFoldLevelNow, "wxStyledTextEvent", "getFoldLevelNow", 1}, // 2869
- {wxStyledTextEvent_GetFoldLevelPrev, "wxStyledTextEvent", "getFoldLevelPrev", 1}, // 2870
- {wxStyledTextEvent_GetMargin, "wxStyledTextEvent", "getMargin", 1}, // 2871
- {wxStyledTextEvent_GetMessage, "wxStyledTextEvent", "getMessage", 1}, // 2872
- {wxStyledTextEvent_GetWParam, "wxStyledTextEvent", "getWParam", 1}, // 2873
- {wxStyledTextEvent_GetLParam, "wxStyledTextEvent", "getLParam", 1}, // 2874
- {wxStyledTextEvent_GetListType, "wxStyledTextEvent", "getListType", 1}, // 2875
- {wxStyledTextEvent_GetX, "wxStyledTextEvent", "getX", 1}, // 2876
- {wxStyledTextEvent_GetY, "wxStyledTextEvent", "getY", 1}, // 2877
- {wxStyledTextEvent_GetDragText, "wxStyledTextEvent", "getDragText", 1}, // 2878
- {wxStyledTextEvent_GetDragAllowMove, "wxStyledTextEvent", "getDragAllowMove", 1}, // 2879
- {wxStyledTextEvent_GetDragResult, "wxStyledTextEvent", "getDragResult", 1}, // 2880
- {wxStyledTextEvent_GetShift, "wxStyledTextEvent", "getShift", 1}, // 2881
- {wxStyledTextEvent_GetControl, "wxStyledTextEvent", "getControl", 1}, // 2882
- {wxStyledTextEvent_GetAlt, "wxStyledTextEvent", "getAlt", 1}, // 2883
- {utils_wxGetKeyState, "utils", "getKeyState", 1}, // 2884
- {utils_wxGetMousePosition, "utils", "getMousePosition", 0}, // 2885
- {utils_wxGetMouseState, "utils", "getMouseState", 0}, // 2886
- {utils_wxSetDetectableAutoRepeat, "utils", "setDetectableAutoRepeat", 1}, // 2887
- {utils_wxBell, "utils", "bell", 0}, // 2888
- {utils_wxFindMenuItemId, "utils", "findMenuItemId", 3}, // 2889
- {utils_wxFindWindowAtPoint, "utils", "findWindowAtPoint", 1}, // 2890
- {utils_wxBeginBusyCursor, "utils", "beginBusyCursor", 1}, // 2891
- {utils_wxEndBusyCursor, "utils", "endBusyCursor", 0}, // 2892
- {utils_wxIsBusy, "utils", "isBusy", 0}, // 2893
- {utils_wxShutdown, "utils", "shutdown", 1}, // 2894
- {utils_wxShell, "utils", "shell", 1}, // 2895
- {utils_wxLaunchDefaultBrowser, "utils", "launchDefaultBrowser", 2}, // 2896
- {utils_wxGetEmailAddress, "utils", "getEmailAddress", 0}, // 2897
- {utils_wxGetUserId, "utils", "getUserId", 0}, // 2898
- {utils_wxGetHomeDir, "utils", "getHomeDir", 0}, // 2899
- {utils_wxNewId, "utils", "newId", 0}, // 2900
- {utils_wxRegisterId, "utils", "registerId", 1}, // 2901
- {utils_wxGetCurrentId, "utils", "getCurrentId", 0}, // 2902
- {utils_wxGetOsDescription, "utils", "getOsDescription", 0}, // 2903
- {utils_wxIsPlatformLittleEndian, "utils", "isPlatformLittleEndian", 0}, // 2904
- {utils_wxIsPlatform64Bit, "utils", "isPlatform64Bit", 0}, // 2905
- {gdicmn_wxDisplaySize, "gdicmn", "displaySize", 0}, // 2906
- {gdicmn_wxSetCursor, "gdicmn", "setCursor", 1}, // 2907
- {wxPrintout_new, "wxPrintout", "new", 3}, // 2908
- {NULL, "wxPrintout", "destroy", 1}, // 2909 obj destructor wxPrintout_destruct
- {wxPrintout_GetDC, "wxPrintout", "getDC", 1}, // 2910
- {wxPrintout_GetPageSizeMM, "wxPrintout", "getPageSizeMM", 1}, // 2911
- {wxPrintout_GetPageSizePixels, "wxPrintout", "getPageSizePixels", 1}, // 2912
- {wxPrintout_GetPaperRectPixels, "wxPrintout", "getPaperRectPixels", 1}, // 2913
- {wxPrintout_GetPPIPrinter, "wxPrintout", "getPPIPrinter", 1}, // 2914
- {wxPrintout_GetPPIScreen, "wxPrintout", "getPPIScreen", 1}, // 2915
- {wxPrintout_GetTitle, "wxPrintout", "getTitle", 1}, // 2916
- {wxPrintout_IsPreview, "wxPrintout", "isPreview", 1}, // 2917
- {wxPrintout_FitThisSizeToPaper, "wxPrintout", "fitThisSizeToPaper", 2}, // 2918
- {wxPrintout_FitThisSizeToPage, "wxPrintout", "fitThisSizeToPage", 2}, // 2919
- {wxPrintout_FitThisSizeToPageMargins, "wxPrintout", "fitThisSizeToPageMargins", 3}, // 2920
- {wxPrintout_MapScreenSizeToPaper, "wxPrintout", "mapScreenSizeToPaper", 1}, // 2921
- {wxPrintout_MapScreenSizeToPage, "wxPrintout", "mapScreenSizeToPage", 1}, // 2922
- {wxPrintout_MapScreenSizeToPageMargins, "wxPrintout", "mapScreenSizeToPageMargins", 2}, // 2923
- {wxPrintout_MapScreenSizeToDevice, "wxPrintout", "mapScreenSizeToDevice", 1}, // 2924
- {wxPrintout_GetLogicalPaperRect, "wxPrintout", "getLogicalPaperRect", 1}, // 2925
- {wxPrintout_GetLogicalPageRect, "wxPrintout", "getLogicalPageRect", 1}, // 2926
- {wxPrintout_GetLogicalPageMarginsRect, "wxPrintout", "getLogicalPageMarginsRect", 2}, // 2927
- {wxPrintout_SetLogicalOrigin, "wxPrintout", "setLogicalOrigin", 3}, // 2928
- {wxPrintout_OffsetLogicalOrigin, "wxPrintout", "offsetLogicalOrigin", 3}, // 2929
- {wxStyledTextCtrl_new_2, "wxStyledTextCtrl", "new", 2}, // 2930
- {wxStyledTextCtrl_new_0, "wxStyledTextCtrl", "new", 0}, // 2931
- {NULL, "wxStyledTextCtrl", "destroy", 1}, // 2932 obj destructor wxStyledTextCtrl_destruct
- {wxStyledTextCtrl_Create, "wxStyledTextCtrl", "create", 3}, // 2933
- {wxStyledTextCtrl_AddText, "wxStyledTextCtrl", "addText", 2}, // 2934
- {wxStyledTextCtrl_InsertText, "wxStyledTextCtrl", "insertText", 3}, // 2935
- {wxStyledTextCtrl_ClearAll, "wxStyledTextCtrl", "clearAll", 1}, // 2936
- {wxStyledTextCtrl_ClearDocumentStyle, "wxStyledTextCtrl", "clearDocumentStyle", 1}, // 2937
- {wxStyledTextCtrl_GetLength, "wxStyledTextCtrl", "getLength", 1}, // 2938
- {wxStyledTextCtrl_GetCharAt, "wxStyledTextCtrl", "getCharAt", 2}, // 2939
- {wxStyledTextCtrl_GetCurrentPos, "wxStyledTextCtrl", "getCurrentPos", 1}, // 2940
- {wxStyledTextCtrl_GetAnchor, "wxStyledTextCtrl", "getAnchor", 1}, // 2941
- {wxStyledTextCtrl_GetStyleAt, "wxStyledTextCtrl", "getStyleAt", 2}, // 2942
- {wxStyledTextCtrl_Redo, "wxStyledTextCtrl", "redo", 1}, // 2943
- {wxStyledTextCtrl_SetUndoCollection, "wxStyledTextCtrl", "setUndoCollection", 2}, // 2944
- {wxStyledTextCtrl_SelectAll, "wxStyledTextCtrl", "selectAll", 1}, // 2945
- {wxStyledTextCtrl_SetSavePoint, "wxStyledTextCtrl", "setSavePoint", 1}, // 2946
- {wxStyledTextCtrl_CanRedo, "wxStyledTextCtrl", "canRedo", 1}, // 2947
- {wxStyledTextCtrl_MarkerLineFromHandle, "wxStyledTextCtrl", "markerLineFromHandle", 2}, // 2948
- {wxStyledTextCtrl_MarkerDeleteHandle, "wxStyledTextCtrl", "markerDeleteHandle", 2}, // 2949
- {wxStyledTextCtrl_GetUndoCollection, "wxStyledTextCtrl", "getUndoCollection", 1}, // 2950
- {wxStyledTextCtrl_GetViewWhiteSpace, "wxStyledTextCtrl", "getViewWhiteSpace", 1}, // 2951
- {wxStyledTextCtrl_SetViewWhiteSpace, "wxStyledTextCtrl", "setViewWhiteSpace", 2}, // 2952
- {wxStyledTextCtrl_PositionFromPoint, "wxStyledTextCtrl", "positionFromPoint", 2}, // 2953
- {wxStyledTextCtrl_PositionFromPointClose, "wxStyledTextCtrl", "positionFromPointClose", 3}, // 2954
- {wxStyledTextCtrl_GotoLine, "wxStyledTextCtrl", "gotoLine", 2}, // 2955
- {wxStyledTextCtrl_GotoPos, "wxStyledTextCtrl", "gotoPos", 2}, // 2956
- {wxStyledTextCtrl_SetAnchor, "wxStyledTextCtrl", "setAnchor", 2}, // 2957
- {wxStyledTextCtrl_GetCurLine, "wxStyledTextCtrl", "getCurLine", 1}, // 2958
- {wxStyledTextCtrl_GetEndStyled, "wxStyledTextCtrl", "getEndStyled", 1}, // 2959
- {wxStyledTextCtrl_ConvertEOLs, "wxStyledTextCtrl", "convertEOLs", 2}, // 2960
- {wxStyledTextCtrl_GetEOLMode, "wxStyledTextCtrl", "getEOLMode", 1}, // 2961
- {wxStyledTextCtrl_SetEOLMode, "wxStyledTextCtrl", "setEOLMode", 2}, // 2962
- {wxStyledTextCtrl_StartStyling, "wxStyledTextCtrl", "startStyling", 2}, // 2963
- {wxStyledTextCtrl_SetStyling, "wxStyledTextCtrl", "setStyling", 3}, // 2964
- {wxStyledTextCtrl_GetBufferedDraw, "wxStyledTextCtrl", "getBufferedDraw", 1}, // 2965
- {wxStyledTextCtrl_SetBufferedDraw, "wxStyledTextCtrl", "setBufferedDraw", 2}, // 2966
- {wxStyledTextCtrl_SetTabWidth, "wxStyledTextCtrl", "setTabWidth", 2}, // 2967
- {wxStyledTextCtrl_GetTabWidth, "wxStyledTextCtrl", "getTabWidth", 1}, // 2968
- {wxStyledTextCtrl_SetCodePage, "wxStyledTextCtrl", "setCodePage", 2}, // 2969
- {wxStyledTextCtrl_MarkerDefine, "wxStyledTextCtrl", "markerDefine", 4}, // 2970
- {wxStyledTextCtrl_MarkerSetForeground, "wxStyledTextCtrl", "markerSetForeground", 3}, // 2971
- {wxStyledTextCtrl_MarkerSetBackground, "wxStyledTextCtrl", "markerSetBackground", 3}, // 2972
- {wxStyledTextCtrl_MarkerAdd, "wxStyledTextCtrl", "markerAdd", 3}, // 2973
- {wxStyledTextCtrl_MarkerDelete, "wxStyledTextCtrl", "markerDelete", 3}, // 2974
- {wxStyledTextCtrl_MarkerDeleteAll, "wxStyledTextCtrl", "markerDeleteAll", 2}, // 2975
- {wxStyledTextCtrl_MarkerGet, "wxStyledTextCtrl", "markerGet", 2}, // 2976
- {wxStyledTextCtrl_MarkerNext, "wxStyledTextCtrl", "markerNext", 3}, // 2977
- {wxStyledTextCtrl_MarkerPrevious, "wxStyledTextCtrl", "markerPrevious", 3}, // 2978
- {wxStyledTextCtrl_MarkerDefineBitmap, "wxStyledTextCtrl", "markerDefineBitmap", 3}, // 2979
- {wxStyledTextCtrl_MarkerAddSet, "wxStyledTextCtrl", "markerAddSet", 3}, // 2980
- {wxStyledTextCtrl_MarkerSetAlpha, "wxStyledTextCtrl", "markerSetAlpha", 3}, // 2981
- {wxStyledTextCtrl_SetMarginType, "wxStyledTextCtrl", "setMarginType", 3}, // 2982
- {wxStyledTextCtrl_GetMarginType, "wxStyledTextCtrl", "getMarginType", 2}, // 2983
- {wxStyledTextCtrl_SetMarginWidth, "wxStyledTextCtrl", "setMarginWidth", 3}, // 2984
- {wxStyledTextCtrl_GetMarginWidth, "wxStyledTextCtrl", "getMarginWidth", 2}, // 2985
- {wxStyledTextCtrl_SetMarginMask, "wxStyledTextCtrl", "setMarginMask", 3}, // 2986
- {wxStyledTextCtrl_GetMarginMask, "wxStyledTextCtrl", "getMarginMask", 2}, // 2987
- {wxStyledTextCtrl_SetMarginSensitive, "wxStyledTextCtrl", "setMarginSensitive", 3}, // 2988
- {wxStyledTextCtrl_GetMarginSensitive, "wxStyledTextCtrl", "getMarginSensitive", 2}, // 2989
- {wxStyledTextCtrl_StyleClearAll, "wxStyledTextCtrl", "styleClearAll", 1}, // 2990
- {wxStyledTextCtrl_StyleSetForeground, "wxStyledTextCtrl", "styleSetForeground", 3}, // 2991
- {wxStyledTextCtrl_StyleSetBackground, "wxStyledTextCtrl", "styleSetBackground", 3}, // 2992
- {wxStyledTextCtrl_StyleSetBold, "wxStyledTextCtrl", "styleSetBold", 3}, // 2993
- {wxStyledTextCtrl_StyleSetItalic, "wxStyledTextCtrl", "styleSetItalic", 3}, // 2994
- {wxStyledTextCtrl_StyleSetSize, "wxStyledTextCtrl", "styleSetSize", 3}, // 2995
- {wxStyledTextCtrl_StyleSetFaceName, "wxStyledTextCtrl", "styleSetFaceName", 3}, // 2996
- {wxStyledTextCtrl_StyleSetEOLFilled, "wxStyledTextCtrl", "styleSetEOLFilled", 3}, // 2997
- {wxStyledTextCtrl_StyleResetDefault, "wxStyledTextCtrl", "styleResetDefault", 1}, // 2998
- {wxStyledTextCtrl_StyleSetUnderline, "wxStyledTextCtrl", "styleSetUnderline", 3}, // 2999
- {wxStyledTextCtrl_StyleSetCase, "wxStyledTextCtrl", "styleSetCase", 3}, // 3000
- {wxStyledTextCtrl_StyleSetHotSpot, "wxStyledTextCtrl", "styleSetHotSpot", 3}, // 3001
- {wxStyledTextCtrl_SetSelForeground, "wxStyledTextCtrl", "setSelForeground", 3}, // 3002
- {wxStyledTextCtrl_SetSelBackground, "wxStyledTextCtrl", "setSelBackground", 3}, // 3003
- {wxStyledTextCtrl_GetSelAlpha, "wxStyledTextCtrl", "getSelAlpha", 1}, // 3004
- {wxStyledTextCtrl_SetSelAlpha, "wxStyledTextCtrl", "setSelAlpha", 2}, // 3005
- {wxStyledTextCtrl_SetCaretForeground, "wxStyledTextCtrl", "setCaretForeground", 2}, // 3006
- {wxStyledTextCtrl_CmdKeyAssign, "wxStyledTextCtrl", "cmdKeyAssign", 4}, // 3007
- {wxStyledTextCtrl_CmdKeyClear, "wxStyledTextCtrl", "cmdKeyClear", 3}, // 3008
- {wxStyledTextCtrl_CmdKeyClearAll, "wxStyledTextCtrl", "cmdKeyClearAll", 1}, // 3009
- {wxStyledTextCtrl_SetStyleBytes, "wxStyledTextCtrl", "setStyleBytes", 2}, // 3010
- {wxStyledTextCtrl_StyleSetVisible, "wxStyledTextCtrl", "styleSetVisible", 3}, // 3011
- {wxStyledTextCtrl_GetCaretPeriod, "wxStyledTextCtrl", "getCaretPeriod", 1}, // 3012
- {wxStyledTextCtrl_SetCaretPeriod, "wxStyledTextCtrl", "setCaretPeriod", 2}, // 3013
- {wxStyledTextCtrl_SetWordChars, "wxStyledTextCtrl", "setWordChars", 2}, // 3014
- {wxStyledTextCtrl_BeginUndoAction, "wxStyledTextCtrl", "beginUndoAction", 1}, // 3015
- {wxStyledTextCtrl_EndUndoAction, "wxStyledTextCtrl", "endUndoAction", 1}, // 3016
- {wxStyledTextCtrl_IndicatorSetStyle, "wxStyledTextCtrl", "indicatorSetStyle", 3}, // 3017
- {wxStyledTextCtrl_IndicatorGetStyle, "wxStyledTextCtrl", "indicatorGetStyle", 2}, // 3018
- {wxStyledTextCtrl_IndicatorSetForeground, "wxStyledTextCtrl", "indicatorSetForeground", 3}, // 3019
- {wxStyledTextCtrl_IndicatorGetForeground, "wxStyledTextCtrl", "indicatorGetForeground", 2}, // 3020
- {wxStyledTextCtrl_SetWhitespaceForeground, "wxStyledTextCtrl", "setWhitespaceForeground", 3}, // 3021
- {wxStyledTextCtrl_SetWhitespaceBackground, "wxStyledTextCtrl", "setWhitespaceBackground", 3}, // 3022
- {wxStyledTextCtrl_GetStyleBits, "wxStyledTextCtrl", "getStyleBits", 1}, // 3023
- {wxStyledTextCtrl_SetLineState, "wxStyledTextCtrl", "setLineState", 3}, // 3024
- {wxStyledTextCtrl_GetLineState, "wxStyledTextCtrl", "getLineState", 2}, // 3025
- {wxStyledTextCtrl_GetMaxLineState, "wxStyledTextCtrl", "getMaxLineState", 1}, // 3026
- {wxStyledTextCtrl_GetCaretLineVisible, "wxStyledTextCtrl", "getCaretLineVisible", 1}, // 3027
- {wxStyledTextCtrl_SetCaretLineVisible, "wxStyledTextCtrl", "setCaretLineVisible", 2}, // 3028
- {wxStyledTextCtrl_GetCaretLineBackground, "wxStyledTextCtrl", "getCaretLineBackground", 1}, // 3029
- {wxStyledTextCtrl_SetCaretLineBackground, "wxStyledTextCtrl", "setCaretLineBackground", 2}, // 3030
- {wxStyledTextCtrl_AutoCompShow, "wxStyledTextCtrl", "autoCompShow", 3}, // 3031
- {wxStyledTextCtrl_AutoCompCancel, "wxStyledTextCtrl", "autoCompCancel", 1}, // 3032
- {wxStyledTextCtrl_AutoCompActive, "wxStyledTextCtrl", "autoCompActive", 1}, // 3033
- {wxStyledTextCtrl_AutoCompPosStart, "wxStyledTextCtrl", "autoCompPosStart", 1}, // 3034
- {wxStyledTextCtrl_AutoCompComplete, "wxStyledTextCtrl", "autoCompComplete", 1}, // 3035
- {wxStyledTextCtrl_AutoCompStops, "wxStyledTextCtrl", "autoCompStops", 2}, // 3036
- {wxStyledTextCtrl_AutoCompSetSeparator, "wxStyledTextCtrl", "autoCompSetSeparator", 2}, // 3037
- {wxStyledTextCtrl_AutoCompGetSeparator, "wxStyledTextCtrl", "autoCompGetSeparator", 1}, // 3038
- {wxStyledTextCtrl_AutoCompSelect, "wxStyledTextCtrl", "autoCompSelect", 2}, // 3039
- {wxStyledTextCtrl_AutoCompSetCancelAtStart, "wxStyledTextCtrl", "autoCompSetCancelAtStart", 2}, // 3040
- {wxStyledTextCtrl_AutoCompGetCancelAtStart, "wxStyledTextCtrl", "autoCompGetCancelAtStart", 1}, // 3041
- {wxStyledTextCtrl_AutoCompSetFillUps, "wxStyledTextCtrl", "autoCompSetFillUps", 2}, // 3042
- {wxStyledTextCtrl_AutoCompSetChooseSingle, "wxStyledTextCtrl", "autoCompSetChooseSingle", 2}, // 3043
- {wxStyledTextCtrl_AutoCompGetChooseSingle, "wxStyledTextCtrl", "autoCompGetChooseSingle", 1}, // 3044
- {wxStyledTextCtrl_AutoCompSetIgnoreCase, "wxStyledTextCtrl", "autoCompSetIgnoreCase", 2}, // 3045
- {wxStyledTextCtrl_AutoCompGetIgnoreCase, "wxStyledTextCtrl", "autoCompGetIgnoreCase", 1}, // 3046
- {wxStyledTextCtrl_UserListShow, "wxStyledTextCtrl", "userListShow", 3}, // 3047
- {wxStyledTextCtrl_AutoCompSetAutoHide, "wxStyledTextCtrl", "autoCompSetAutoHide", 2}, // 3048
- {wxStyledTextCtrl_AutoCompGetAutoHide, "wxStyledTextCtrl", "autoCompGetAutoHide", 1}, // 3049
- {wxStyledTextCtrl_AutoCompSetDropRestOfWord, "wxStyledTextCtrl", "autoCompSetDropRestOfWord", 2}, // 3050
- {wxStyledTextCtrl_AutoCompGetDropRestOfWord, "wxStyledTextCtrl", "autoCompGetDropRestOfWord", 1}, // 3051
- {wxStyledTextCtrl_RegisterImage, "wxStyledTextCtrl", "registerImage", 3}, // 3052
- {wxStyledTextCtrl_ClearRegisteredImages, "wxStyledTextCtrl", "clearRegisteredImages", 1}, // 3053
- {wxStyledTextCtrl_AutoCompGetTypeSeparator, "wxStyledTextCtrl", "autoCompGetTypeSeparator", 1}, // 3054
- {wxStyledTextCtrl_AutoCompSetTypeSeparator, "wxStyledTextCtrl", "autoCompSetTypeSeparator", 2}, // 3055
- {wxStyledTextCtrl_AutoCompSetMaxWidth, "wxStyledTextCtrl", "autoCompSetMaxWidth", 2}, // 3056
- {wxStyledTextCtrl_AutoCompGetMaxWidth, "wxStyledTextCtrl", "autoCompGetMaxWidth", 1}, // 3057
- {wxStyledTextCtrl_AutoCompSetMaxHeight, "wxStyledTextCtrl", "autoCompSetMaxHeight", 2}, // 3058
- {wxStyledTextCtrl_AutoCompGetMaxHeight, "wxStyledTextCtrl", "autoCompGetMaxHeight", 1}, // 3059
- {wxStyledTextCtrl_SetIndent, "wxStyledTextCtrl", "setIndent", 2}, // 3060
- {wxStyledTextCtrl_GetIndent, "wxStyledTextCtrl", "getIndent", 1}, // 3061
- {wxStyledTextCtrl_SetUseTabs, "wxStyledTextCtrl", "setUseTabs", 2}, // 3062
- {wxStyledTextCtrl_GetUseTabs, "wxStyledTextCtrl", "getUseTabs", 1}, // 3063
- {wxStyledTextCtrl_SetLineIndentation, "wxStyledTextCtrl", "setLineIndentation", 3}, // 3064
- {wxStyledTextCtrl_GetLineIndentation, "wxStyledTextCtrl", "getLineIndentation", 2}, // 3065
- {wxStyledTextCtrl_GetLineIndentPosition, "wxStyledTextCtrl", "getLineIndentPosition", 2}, // 3066
- {wxStyledTextCtrl_GetColumn, "wxStyledTextCtrl", "getColumn", 2}, // 3067
- {wxStyledTextCtrl_SetUseHorizontalScrollBar, "wxStyledTextCtrl", "setUseHorizontalScrollBar", 2}, // 3068
- {wxStyledTextCtrl_GetUseHorizontalScrollBar, "wxStyledTextCtrl", "getUseHorizontalScrollBar", 1}, // 3069
- {wxStyledTextCtrl_SetIndentationGuides, "wxStyledTextCtrl", "setIndentationGuides", 2}, // 3070
- {wxStyledTextCtrl_GetIndentationGuides, "wxStyledTextCtrl", "getIndentationGuides", 1}, // 3071
- {wxStyledTextCtrl_SetHighlightGuide, "wxStyledTextCtrl", "setHighlightGuide", 2}, // 3072
- {wxStyledTextCtrl_GetHighlightGuide, "wxStyledTextCtrl", "getHighlightGuide", 1}, // 3073
- {wxStyledTextCtrl_GetLineEndPosition, "wxStyledTextCtrl", "getLineEndPosition", 2}, // 3074
- {wxStyledTextCtrl_GetCodePage, "wxStyledTextCtrl", "getCodePage", 1}, // 3075
- {wxStyledTextCtrl_GetCaretForeground, "wxStyledTextCtrl", "getCaretForeground", 1}, // 3076
- {wxStyledTextCtrl_GetReadOnly, "wxStyledTextCtrl", "getReadOnly", 1}, // 3077
- {wxStyledTextCtrl_SetCurrentPos, "wxStyledTextCtrl", "setCurrentPos", 2}, // 3078
- {wxStyledTextCtrl_SetSelectionStart, "wxStyledTextCtrl", "setSelectionStart", 2}, // 3079
- {wxStyledTextCtrl_GetSelectionStart, "wxStyledTextCtrl", "getSelectionStart", 1}, // 3080
- {wxStyledTextCtrl_SetSelectionEnd, "wxStyledTextCtrl", "setSelectionEnd", 2}, // 3081
- {wxStyledTextCtrl_GetSelectionEnd, "wxStyledTextCtrl", "getSelectionEnd", 1}, // 3082
- {wxStyledTextCtrl_SetPrintMagnification, "wxStyledTextCtrl", "setPrintMagnification", 2}, // 3083
- {wxStyledTextCtrl_GetPrintMagnification, "wxStyledTextCtrl", "getPrintMagnification", 1}, // 3084
- {wxStyledTextCtrl_SetPrintColourMode, "wxStyledTextCtrl", "setPrintColourMode", 2}, // 3085
- {wxStyledTextCtrl_GetPrintColourMode, "wxStyledTextCtrl", "getPrintColourMode", 1}, // 3086
- {wxStyledTextCtrl_FindText, "wxStyledTextCtrl", "findText", 5}, // 3087
- {wxStyledTextCtrl_FormatRange, "wxStyledTextCtrl", "formatRange", 8}, // 3088
- {wxStyledTextCtrl_GetFirstVisibleLine, "wxStyledTextCtrl", "getFirstVisibleLine", 1}, // 3089
- {wxStyledTextCtrl_GetLine, "wxStyledTextCtrl", "getLine", 2}, // 3090
- {wxStyledTextCtrl_GetLineCount, "wxStyledTextCtrl", "getLineCount", 1}, // 3091
- {wxStyledTextCtrl_SetMarginLeft, "wxStyledTextCtrl", "setMarginLeft", 2}, // 3092
- {wxStyledTextCtrl_GetMarginLeft, "wxStyledTextCtrl", "getMarginLeft", 1}, // 3093
- {wxStyledTextCtrl_SetMarginRight, "wxStyledTextCtrl", "setMarginRight", 2}, // 3094
- {wxStyledTextCtrl_GetMarginRight, "wxStyledTextCtrl", "getMarginRight", 1}, // 3095
- {wxStyledTextCtrl_GetModify, "wxStyledTextCtrl", "getModify", 1}, // 3096
- {wxStyledTextCtrl_SetSelection, "wxStyledTextCtrl", "setSelection", 3}, // 3097
- {wxStyledTextCtrl_GetSelectedText, "wxStyledTextCtrl", "getSelectedText", 1}, // 3098
- {wxStyledTextCtrl_GetTextRange, "wxStyledTextCtrl", "getTextRange", 3}, // 3099
- {wxStyledTextCtrl_HideSelection, "wxStyledTextCtrl", "hideSelection", 2}, // 3100
- {wxStyledTextCtrl_LineFromPosition, "wxStyledTextCtrl", "lineFromPosition", 2}, // 3101
- {wxStyledTextCtrl_PositionFromLine, "wxStyledTextCtrl", "positionFromLine", 2}, // 3102
- {wxStyledTextCtrl_LineScroll, "wxStyledTextCtrl", "lineScroll", 3}, // 3103
- {wxStyledTextCtrl_EnsureCaretVisible, "wxStyledTextCtrl", "ensureCaretVisible", 1}, // 3104
- {wxStyledTextCtrl_ReplaceSelection, "wxStyledTextCtrl", "replaceSelection", 2}, // 3105
- {wxStyledTextCtrl_SetReadOnly, "wxStyledTextCtrl", "setReadOnly", 2}, // 3106
- {wxStyledTextCtrl_CanPaste, "wxStyledTextCtrl", "canPaste", 1}, // 3107
- {wxStyledTextCtrl_CanUndo, "wxStyledTextCtrl", "canUndo", 1}, // 3108
- {wxStyledTextCtrl_EmptyUndoBuffer, "wxStyledTextCtrl", "emptyUndoBuffer", 1}, // 3109
- {wxStyledTextCtrl_Undo, "wxStyledTextCtrl", "undo", 1}, // 3110
- {wxStyledTextCtrl_Cut, "wxStyledTextCtrl", "cut", 1}, // 3111
- {wxStyledTextCtrl_Copy, "wxStyledTextCtrl", "copy", 1}, // 3112
- {wxStyledTextCtrl_Paste, "wxStyledTextCtrl", "paste", 1}, // 3113
- {wxStyledTextCtrl_Clear, "wxStyledTextCtrl", "clear", 1}, // 3114
- {wxStyledTextCtrl_SetText, "wxStyledTextCtrl", "setText", 2}, // 3115
- {wxStyledTextCtrl_GetText, "wxStyledTextCtrl", "getText", 1}, // 3116
- {wxStyledTextCtrl_GetTextLength, "wxStyledTextCtrl", "getTextLength", 1}, // 3117
- {wxStyledTextCtrl_GetOvertype, "wxStyledTextCtrl", "getOvertype", 1}, // 3118
- {wxStyledTextCtrl_SetCaretWidth, "wxStyledTextCtrl", "setCaretWidth", 2}, // 3119
- {wxStyledTextCtrl_GetCaretWidth, "wxStyledTextCtrl", "getCaretWidth", 1}, // 3120
- {wxStyledTextCtrl_SetTargetStart, "wxStyledTextCtrl", "setTargetStart", 2}, // 3121
- {wxStyledTextCtrl_GetTargetStart, "wxStyledTextCtrl", "getTargetStart", 1}, // 3122
- {wxStyledTextCtrl_SetTargetEnd, "wxStyledTextCtrl", "setTargetEnd", 2}, // 3123
- {wxStyledTextCtrl_GetTargetEnd, "wxStyledTextCtrl", "getTargetEnd", 1}, // 3124
- {wxStyledTextCtrl_ReplaceTarget, "wxStyledTextCtrl", "replaceTarget", 2}, // 3125
- {wxStyledTextCtrl_SearchInTarget, "wxStyledTextCtrl", "searchInTarget", 2}, // 3126
- {wxStyledTextCtrl_SetSearchFlags, "wxStyledTextCtrl", "setSearchFlags", 2}, // 3127
- {wxStyledTextCtrl_GetSearchFlags, "wxStyledTextCtrl", "getSearchFlags", 1}, // 3128
- {wxStyledTextCtrl_CallTipShow, "wxStyledTextCtrl", "callTipShow", 3}, // 3129
- {wxStyledTextCtrl_CallTipCancel, "wxStyledTextCtrl", "callTipCancel", 1}, // 3130
- {wxStyledTextCtrl_CallTipActive, "wxStyledTextCtrl", "callTipActive", 1}, // 3131
- {wxStyledTextCtrl_CallTipPosAtStart, "wxStyledTextCtrl", "callTipPosAtStart", 1}, // 3132
- {wxStyledTextCtrl_CallTipSetHighlight, "wxStyledTextCtrl", "callTipSetHighlight", 3}, // 3133
- {wxStyledTextCtrl_CallTipSetBackground, "wxStyledTextCtrl", "callTipSetBackground", 2}, // 3134
- {wxStyledTextCtrl_CallTipSetForeground, "wxStyledTextCtrl", "callTipSetForeground", 2}, // 3135
- {wxStyledTextCtrl_CallTipSetForegroundHighlight, "wxStyledTextCtrl", "callTipSetForegroundHighlight", 2}, // 3136
- {wxStyledTextCtrl_CallTipUseStyle, "wxStyledTextCtrl", "callTipUseStyle", 2}, // 3137
- {wxStyledTextCtrl_VisibleFromDocLine, "wxStyledTextCtrl", "visibleFromDocLine", 2}, // 3138
- {wxStyledTextCtrl_DocLineFromVisible, "wxStyledTextCtrl", "docLineFromVisible", 2}, // 3139
- {wxStyledTextCtrl_WrapCount, "wxStyledTextCtrl", "wrapCount", 2}, // 3140
- {wxStyledTextCtrl_SetFoldLevel, "wxStyledTextCtrl", "setFoldLevel", 3}, // 3141
- {wxStyledTextCtrl_GetFoldLevel, "wxStyledTextCtrl", "getFoldLevel", 2}, // 3142
- {wxStyledTextCtrl_GetLastChild, "wxStyledTextCtrl", "getLastChild", 3}, // 3143
- {wxStyledTextCtrl_GetFoldParent, "wxStyledTextCtrl", "getFoldParent", 2}, // 3144
- {wxStyledTextCtrl_ShowLines, "wxStyledTextCtrl", "showLines", 3}, // 3145
- {wxStyledTextCtrl_HideLines, "wxStyledTextCtrl", "hideLines", 3}, // 3146
- {wxStyledTextCtrl_GetLineVisible, "wxStyledTextCtrl", "getLineVisible", 2}, // 3147
- {wxStyledTextCtrl_SetFoldExpanded, "wxStyledTextCtrl", "setFoldExpanded", 3}, // 3148
- {wxStyledTextCtrl_GetFoldExpanded, "wxStyledTextCtrl", "getFoldExpanded", 2}, // 3149
- {wxStyledTextCtrl_ToggleFold, "wxStyledTextCtrl", "toggleFold", 2}, // 3150
- {wxStyledTextCtrl_EnsureVisible, "wxStyledTextCtrl", "ensureVisible", 2}, // 3151
- {wxStyledTextCtrl_SetFoldFlags, "wxStyledTextCtrl", "setFoldFlags", 2}, // 3152
- {wxStyledTextCtrl_EnsureVisibleEnforcePolicy, "wxStyledTextCtrl", "ensureVisibleEnforcePolicy", 2}, // 3153
- {wxStyledTextCtrl_SetTabIndents, "wxStyledTextCtrl", "setTabIndents", 2}, // 3154
- {wxStyledTextCtrl_GetTabIndents, "wxStyledTextCtrl", "getTabIndents", 1}, // 3155
- {wxStyledTextCtrl_SetBackSpaceUnIndents, "wxStyledTextCtrl", "setBackSpaceUnIndents", 2}, // 3156
- {wxStyledTextCtrl_GetBackSpaceUnIndents, "wxStyledTextCtrl", "getBackSpaceUnIndents", 1}, // 3157
- {wxStyledTextCtrl_SetMouseDwellTime, "wxStyledTextCtrl", "setMouseDwellTime", 2}, // 3158
- {wxStyledTextCtrl_GetMouseDwellTime, "wxStyledTextCtrl", "getMouseDwellTime", 1}, // 3159
- {wxStyledTextCtrl_WordStartPosition, "wxStyledTextCtrl", "wordStartPosition", 3}, // 3160
- {wxStyledTextCtrl_WordEndPosition, "wxStyledTextCtrl", "wordEndPosition", 3}, // 3161
- {wxStyledTextCtrl_SetWrapMode, "wxStyledTextCtrl", "setWrapMode", 2}, // 3162
- {wxStyledTextCtrl_GetWrapMode, "wxStyledTextCtrl", "getWrapMode", 1}, // 3163
- {wxStyledTextCtrl_SetWrapVisualFlags, "wxStyledTextCtrl", "setWrapVisualFlags", 2}, // 3164
- {wxStyledTextCtrl_GetWrapVisualFlags, "wxStyledTextCtrl", "getWrapVisualFlags", 1}, // 3165
- {wxStyledTextCtrl_SetWrapVisualFlagsLocation, "wxStyledTextCtrl", "setWrapVisualFlagsLocation", 2}, // 3166
- {wxStyledTextCtrl_GetWrapVisualFlagsLocation, "wxStyledTextCtrl", "getWrapVisualFlagsLocation", 1}, // 3167
- {wxStyledTextCtrl_SetWrapStartIndent, "wxStyledTextCtrl", "setWrapStartIndent", 2}, // 3168
- {wxStyledTextCtrl_GetWrapStartIndent, "wxStyledTextCtrl", "getWrapStartIndent", 1}, // 3169
- {wxStyledTextCtrl_SetLayoutCache, "wxStyledTextCtrl", "setLayoutCache", 2}, // 3170
- {wxStyledTextCtrl_GetLayoutCache, "wxStyledTextCtrl", "getLayoutCache", 1}, // 3171
- {wxStyledTextCtrl_SetScrollWidth, "wxStyledTextCtrl", "setScrollWidth", 2}, // 3172
- {wxStyledTextCtrl_GetScrollWidth, "wxStyledTextCtrl", "getScrollWidth", 1}, // 3173
- {wxStyledTextCtrl_TextWidth, "wxStyledTextCtrl", "textWidth", 3}, // 3174
- {wxStyledTextCtrl_GetEndAtLastLine, "wxStyledTextCtrl", "getEndAtLastLine", 1}, // 3175
- {wxStyledTextCtrl_TextHeight, "wxStyledTextCtrl", "textHeight", 2}, // 3176
- {wxStyledTextCtrl_SetUseVerticalScrollBar, "wxStyledTextCtrl", "setUseVerticalScrollBar", 2}, // 3177
- {wxStyledTextCtrl_GetUseVerticalScrollBar, "wxStyledTextCtrl", "getUseVerticalScrollBar", 1}, // 3178
- {wxStyledTextCtrl_AppendText, "wxStyledTextCtrl", "appendText", 2}, // 3179
- {wxStyledTextCtrl_GetTwoPhaseDraw, "wxStyledTextCtrl", "getTwoPhaseDraw", 1}, // 3180
- {wxStyledTextCtrl_SetTwoPhaseDraw, "wxStyledTextCtrl", "setTwoPhaseDraw", 2}, // 3181
- {wxStyledTextCtrl_TargetFromSelection, "wxStyledTextCtrl", "targetFromSelection", 1}, // 3182
- {wxStyledTextCtrl_LinesJoin, "wxStyledTextCtrl", "linesJoin", 1}, // 3183
- {wxStyledTextCtrl_LinesSplit, "wxStyledTextCtrl", "linesSplit", 2}, // 3184
- {wxStyledTextCtrl_SetFoldMarginColour, "wxStyledTextCtrl", "setFoldMarginColour", 3}, // 3185
- {wxStyledTextCtrl_SetFoldMarginHiColour, "wxStyledTextCtrl", "setFoldMarginHiColour", 3}, // 3186
- {wxStyledTextCtrl_LineDown, "wxStyledTextCtrl", "lineDown", 1}, // 3187
- {wxStyledTextCtrl_LineDownExtend, "wxStyledTextCtrl", "lineDownExtend", 1}, // 3188
- {wxStyledTextCtrl_LineUp, "wxStyledTextCtrl", "lineUp", 1}, // 3189
- {wxStyledTextCtrl_LineUpExtend, "wxStyledTextCtrl", "lineUpExtend", 1}, // 3190
- {wxStyledTextCtrl_CharLeft, "wxStyledTextCtrl", "charLeft", 1}, // 3191
- {wxStyledTextCtrl_CharLeftExtend, "wxStyledTextCtrl", "charLeftExtend", 1}, // 3192
- {wxStyledTextCtrl_CharRight, "wxStyledTextCtrl", "charRight", 1}, // 3193
- {wxStyledTextCtrl_CharRightExtend, "wxStyledTextCtrl", "charRightExtend", 1}, // 3194
- {wxStyledTextCtrl_WordLeft, "wxStyledTextCtrl", "wordLeft", 1}, // 3195
- {wxStyledTextCtrl_WordLeftExtend, "wxStyledTextCtrl", "wordLeftExtend", 1}, // 3196
- {wxStyledTextCtrl_WordRight, "wxStyledTextCtrl", "wordRight", 1}, // 3197
- {wxStyledTextCtrl_WordRightExtend, "wxStyledTextCtrl", "wordRightExtend", 1}, // 3198
- {wxStyledTextCtrl_Home, "wxStyledTextCtrl", "home", 1}, // 3199
- {wxStyledTextCtrl_HomeExtend, "wxStyledTextCtrl", "homeExtend", 1}, // 3200
- {wxStyledTextCtrl_LineEnd, "wxStyledTextCtrl", "lineEnd", 1}, // 3201
- {wxStyledTextCtrl_LineEndExtend, "wxStyledTextCtrl", "lineEndExtend", 1}, // 3202
- {wxStyledTextCtrl_DocumentStart, "wxStyledTextCtrl", "documentStart", 1}, // 3203
- {wxStyledTextCtrl_DocumentStartExtend, "wxStyledTextCtrl", "documentStartExtend", 1}, // 3204
- {wxStyledTextCtrl_DocumentEnd, "wxStyledTextCtrl", "documentEnd", 1}, // 3205
- {wxStyledTextCtrl_DocumentEndExtend, "wxStyledTextCtrl", "documentEndExtend", 1}, // 3206
- {wxStyledTextCtrl_PageUp, "wxStyledTextCtrl", "pageUp", 1}, // 3207
- {wxStyledTextCtrl_PageUpExtend, "wxStyledTextCtrl", "pageUpExtend", 1}, // 3208
- {wxStyledTextCtrl_PageDown, "wxStyledTextCtrl", "pageDown", 1}, // 3209
- {wxStyledTextCtrl_PageDownExtend, "wxStyledTextCtrl", "pageDownExtend", 1}, // 3210
- {wxStyledTextCtrl_EditToggleOvertype, "wxStyledTextCtrl", "editToggleOvertype", 1}, // 3211
- {wxStyledTextCtrl_Cancel, "wxStyledTextCtrl", "cancel", 1}, // 3212
- {wxStyledTextCtrl_DeleteBack, "wxStyledTextCtrl", "deleteBack", 1}, // 3213
- {wxStyledTextCtrl_Tab, "wxStyledTextCtrl", "tab", 1}, // 3214
- {wxStyledTextCtrl_BackTab, "wxStyledTextCtrl", "backTab", 1}, // 3215
- {wxStyledTextCtrl_NewLine, "wxStyledTextCtrl", "newLine", 1}, // 3216
- {wxStyledTextCtrl_FormFeed, "wxStyledTextCtrl", "formFeed", 1}, // 3217
- {wxStyledTextCtrl_VCHome, "wxStyledTextCtrl", "vCHome", 1}, // 3218
- {wxStyledTextCtrl_VCHomeExtend, "wxStyledTextCtrl", "vCHomeExtend", 1}, // 3219
- {wxStyledTextCtrl_ZoomIn, "wxStyledTextCtrl", "zoomIn", 1}, // 3220
- {wxStyledTextCtrl_ZoomOut, "wxStyledTextCtrl", "zoomOut", 1}, // 3221
- {wxStyledTextCtrl_DelWordLeft, "wxStyledTextCtrl", "delWordLeft", 1}, // 3222
- {wxStyledTextCtrl_DelWordRight, "wxStyledTextCtrl", "delWordRight", 1}, // 3223
- {wxStyledTextCtrl_LineCut, "wxStyledTextCtrl", "lineCut", 1}, // 3224
- {wxStyledTextCtrl_LineDelete, "wxStyledTextCtrl", "lineDelete", 1}, // 3225
- {wxStyledTextCtrl_LineTranspose, "wxStyledTextCtrl", "lineTranspose", 1}, // 3226
- {wxStyledTextCtrl_LineDuplicate, "wxStyledTextCtrl", "lineDuplicate", 1}, // 3227
- {wxStyledTextCtrl_LowerCase, "wxStyledTextCtrl", "lowerCase", 1}, // 3228
- {wxStyledTextCtrl_UpperCase, "wxStyledTextCtrl", "upperCase", 1}, // 3229
- {wxStyledTextCtrl_LineScrollDown, "wxStyledTextCtrl", "lineScrollDown", 1}, // 3230
- {wxStyledTextCtrl_LineScrollUp, "wxStyledTextCtrl", "lineScrollUp", 1}, // 3231
- {wxStyledTextCtrl_DeleteBackNotLine, "wxStyledTextCtrl", "deleteBackNotLine", 1}, // 3232
- {wxStyledTextCtrl_HomeDisplay, "wxStyledTextCtrl", "homeDisplay", 1}, // 3233
- {wxStyledTextCtrl_HomeDisplayExtend, "wxStyledTextCtrl", "homeDisplayExtend", 1}, // 3234
- {wxStyledTextCtrl_LineEndDisplay, "wxStyledTextCtrl", "lineEndDisplay", 1}, // 3235
- {wxStyledTextCtrl_LineEndDisplayExtend, "wxStyledTextCtrl", "lineEndDisplayExtend", 1}, // 3236
- {wxStyledTextCtrl_HomeWrapExtend, "wxStyledTextCtrl", "homeWrapExtend", 1}, // 3237
- {wxStyledTextCtrl_LineEndWrap, "wxStyledTextCtrl", "lineEndWrap", 1}, // 3238
- {wxStyledTextCtrl_LineEndWrapExtend, "wxStyledTextCtrl", "lineEndWrapExtend", 1}, // 3239
- {wxStyledTextCtrl_VCHomeWrap, "wxStyledTextCtrl", "vCHomeWrap", 1}, // 3240
- {wxStyledTextCtrl_VCHomeWrapExtend, "wxStyledTextCtrl", "vCHomeWrapExtend", 1}, // 3241
- {wxStyledTextCtrl_LineCopy, "wxStyledTextCtrl", "lineCopy", 1}, // 3242
- {wxStyledTextCtrl_MoveCaretInsideView, "wxStyledTextCtrl", "moveCaretInsideView", 1}, // 3243
- {wxStyledTextCtrl_LineLength, "wxStyledTextCtrl", "lineLength", 2}, // 3244
- {wxStyledTextCtrl_BraceHighlight, "wxStyledTextCtrl", "braceHighlight", 3}, // 3245
- {wxStyledTextCtrl_BraceBadLight, "wxStyledTextCtrl", "braceBadLight", 2}, // 3246
- {wxStyledTextCtrl_BraceMatch, "wxStyledTextCtrl", "braceMatch", 2}, // 3247
- {wxStyledTextCtrl_GetViewEOL, "wxStyledTextCtrl", "getViewEOL", 1}, // 3248
- {wxStyledTextCtrl_SetViewEOL, "wxStyledTextCtrl", "setViewEOL", 2}, // 3249
- {wxStyledTextCtrl_SetModEventMask, "wxStyledTextCtrl", "setModEventMask", 2}, // 3250
- {wxStyledTextCtrl_GetEdgeColumn, "wxStyledTextCtrl", "getEdgeColumn", 1}, // 3251
- {wxStyledTextCtrl_SetEdgeColumn, "wxStyledTextCtrl", "setEdgeColumn", 2}, // 3252
- {wxStyledTextCtrl_SetEdgeMode, "wxStyledTextCtrl", "setEdgeMode", 2}, // 3253
- {wxStyledTextCtrl_GetEdgeMode, "wxStyledTextCtrl", "getEdgeMode", 1}, // 3254
- {wxStyledTextCtrl_GetEdgeColour, "wxStyledTextCtrl", "getEdgeColour", 1}, // 3255
- {wxStyledTextCtrl_SetEdgeColour, "wxStyledTextCtrl", "setEdgeColour", 2}, // 3256
- {wxStyledTextCtrl_SearchAnchor, "wxStyledTextCtrl", "searchAnchor", 1}, // 3257
- {wxStyledTextCtrl_SearchNext, "wxStyledTextCtrl", "searchNext", 3}, // 3258
- {wxStyledTextCtrl_SearchPrev, "wxStyledTextCtrl", "searchPrev", 3}, // 3259
- {wxStyledTextCtrl_LinesOnScreen, "wxStyledTextCtrl", "linesOnScreen", 1}, // 3260
- {wxStyledTextCtrl_UsePopUp, "wxStyledTextCtrl", "usePopUp", 2}, // 3261
- {wxStyledTextCtrl_SelectionIsRectangle, "wxStyledTextCtrl", "selectionIsRectangle", 1}, // 3262
- {wxStyledTextCtrl_SetZoom, "wxStyledTextCtrl", "setZoom", 2}, // 3263
- {wxStyledTextCtrl_GetZoom, "wxStyledTextCtrl", "getZoom", 1}, // 3264
- {wxStyledTextCtrl_GetModEventMask, "wxStyledTextCtrl", "getModEventMask", 1}, // 3265
- {wxStyledTextCtrl_SetSTCFocus, "wxStyledTextCtrl", "setSTCFocus", 2}, // 3266
- {wxStyledTextCtrl_GetSTCFocus, "wxStyledTextCtrl", "getSTCFocus", 1}, // 3267
- {wxStyledTextCtrl_SetStatus, "wxStyledTextCtrl", "setStatus", 2}, // 3268
- {wxStyledTextCtrl_GetStatus, "wxStyledTextCtrl", "getStatus", 1}, // 3269
- {wxStyledTextCtrl_SetMouseDownCaptures, "wxStyledTextCtrl", "setMouseDownCaptures", 2}, // 3270
- {wxStyledTextCtrl_GetMouseDownCaptures, "wxStyledTextCtrl", "getMouseDownCaptures", 1}, // 3271
- {wxStyledTextCtrl_SetSTCCursor, "wxStyledTextCtrl", "setSTCCursor", 2}, // 3272
- {wxStyledTextCtrl_GetSTCCursor, "wxStyledTextCtrl", "getSTCCursor", 1}, // 3273
- {wxStyledTextCtrl_SetControlCharSymbol, "wxStyledTextCtrl", "setControlCharSymbol", 2}, // 3274
- {wxStyledTextCtrl_GetControlCharSymbol, "wxStyledTextCtrl", "getControlCharSymbol", 1}, // 3275
- {wxStyledTextCtrl_WordPartLeft, "wxStyledTextCtrl", "wordPartLeft", 1}, // 3276
- {wxStyledTextCtrl_WordPartLeftExtend, "wxStyledTextCtrl", "wordPartLeftExtend", 1}, // 3277
- {wxStyledTextCtrl_WordPartRight, "wxStyledTextCtrl", "wordPartRight", 1}, // 3278
- {wxStyledTextCtrl_WordPartRightExtend, "wxStyledTextCtrl", "wordPartRightExtend", 1}, // 3279
- {wxStyledTextCtrl_SetVisiblePolicy, "wxStyledTextCtrl", "setVisiblePolicy", 3}, // 3280
- {wxStyledTextCtrl_DelLineLeft, "wxStyledTextCtrl", "delLineLeft", 1}, // 3281
- {wxStyledTextCtrl_DelLineRight, "wxStyledTextCtrl", "delLineRight", 1}, // 3282
- {wxStyledTextCtrl_GetXOffset, "wxStyledTextCtrl", "getXOffset", 1}, // 3283
- {wxStyledTextCtrl_ChooseCaretX, "wxStyledTextCtrl", "chooseCaretX", 1}, // 3284
- {wxStyledTextCtrl_SetXCaretPolicy, "wxStyledTextCtrl", "setXCaretPolicy", 3}, // 3285
- {wxStyledTextCtrl_SetYCaretPolicy, "wxStyledTextCtrl", "setYCaretPolicy", 3}, // 3286
- {wxStyledTextCtrl_GetPrintWrapMode, "wxStyledTextCtrl", "getPrintWrapMode", 1}, // 3287
- {wxStyledTextCtrl_SetHotspotActiveForeground, "wxStyledTextCtrl", "setHotspotActiveForeground", 3}, // 3288
- {wxStyledTextCtrl_SetHotspotActiveBackground, "wxStyledTextCtrl", "setHotspotActiveBackground", 3}, // 3289
- {wxStyledTextCtrl_SetHotspotActiveUnderline, "wxStyledTextCtrl", "setHotspotActiveUnderline", 2}, // 3290
- {wxStyledTextCtrl_SetHotspotSingleLine, "wxStyledTextCtrl", "setHotspotSingleLine", 2}, // 3291
- {wxStyledTextCtrl_ParaDownExtend, "wxStyledTextCtrl", "paraDownExtend", 1}, // 3292
- {wxStyledTextCtrl_ParaUp, "wxStyledTextCtrl", "paraUp", 1}, // 3293
- {wxStyledTextCtrl_ParaUpExtend, "wxStyledTextCtrl", "paraUpExtend", 1}, // 3294
- {wxStyledTextCtrl_PositionBefore, "wxStyledTextCtrl", "positionBefore", 2}, // 3295
- {wxStyledTextCtrl_PositionAfter, "wxStyledTextCtrl", "positionAfter", 2}, // 3296
- {wxStyledTextCtrl_CopyRange, "wxStyledTextCtrl", "copyRange", 3}, // 3297
- {wxStyledTextCtrl_CopyText, "wxStyledTextCtrl", "copyText", 3}, // 3298
- {wxStyledTextCtrl_SetSelectionMode, "wxStyledTextCtrl", "setSelectionMode", 2}, // 3299
- {wxStyledTextCtrl_GetSelectionMode, "wxStyledTextCtrl", "getSelectionMode", 1}, // 3300
- {wxStyledTextCtrl_LineDownRectExtend, "wxStyledTextCtrl", "lineDownRectExtend", 1}, // 3301
- {wxStyledTextCtrl_LineUpRectExtend, "wxStyledTextCtrl", "lineUpRectExtend", 1}, // 3302
- {wxStyledTextCtrl_CharLeftRectExtend, "wxStyledTextCtrl", "charLeftRectExtend", 1}, // 3303
- {wxStyledTextCtrl_CharRightRectExtend, "wxStyledTextCtrl", "charRightRectExtend", 1}, // 3304
- {wxStyledTextCtrl_HomeRectExtend, "wxStyledTextCtrl", "homeRectExtend", 1}, // 3305
- {wxStyledTextCtrl_VCHomeRectExtend, "wxStyledTextCtrl", "vCHomeRectExtend", 1}, // 3306
- {wxStyledTextCtrl_LineEndRectExtend, "wxStyledTextCtrl", "lineEndRectExtend", 1}, // 3307
- {wxStyledTextCtrl_PageUpRectExtend, "wxStyledTextCtrl", "pageUpRectExtend", 1}, // 3308
- {wxStyledTextCtrl_PageDownRectExtend, "wxStyledTextCtrl", "pageDownRectExtend", 1}, // 3309
- {wxStyledTextCtrl_StutteredPageUp, "wxStyledTextCtrl", "stutteredPageUp", 1}, // 3310
- {wxStyledTextCtrl_StutteredPageUpExtend, "wxStyledTextCtrl", "stutteredPageUpExtend", 1}, // 3311
- {wxStyledTextCtrl_StutteredPageDown, "wxStyledTextCtrl", "stutteredPageDown", 1}, // 3312
- {wxStyledTextCtrl_StutteredPageDownExtend, "wxStyledTextCtrl", "stutteredPageDownExtend", 1}, // 3313
- {wxStyledTextCtrl_WordLeftEnd, "wxStyledTextCtrl", "wordLeftEnd", 1}, // 3314
- {wxStyledTextCtrl_WordLeftEndExtend, "wxStyledTextCtrl", "wordLeftEndExtend", 1}, // 3315
- {wxStyledTextCtrl_WordRightEnd, "wxStyledTextCtrl", "wordRightEnd", 1}, // 3316
- {wxStyledTextCtrl_WordRightEndExtend, "wxStyledTextCtrl", "wordRightEndExtend", 1}, // 3317
- {wxStyledTextCtrl_SetWhitespaceChars, "wxStyledTextCtrl", "setWhitespaceChars", 2}, // 3318
- {wxStyledTextCtrl_SetCharsDefault, "wxStyledTextCtrl", "setCharsDefault", 1}, // 3319
- {wxStyledTextCtrl_AutoCompGetCurrent, "wxStyledTextCtrl", "autoCompGetCurrent", 1}, // 3320
- {wxStyledTextCtrl_Allocate, "wxStyledTextCtrl", "allocate", 2}, // 3321
- {wxStyledTextCtrl_FindColumn, "wxStyledTextCtrl", "findColumn", 3}, // 3322
- {wxStyledTextCtrl_GetCaretSticky, "wxStyledTextCtrl", "getCaretSticky", 1}, // 3323
- {wxStyledTextCtrl_SetCaretSticky, "wxStyledTextCtrl", "setCaretSticky", 2}, // 3324
- {wxStyledTextCtrl_ToggleCaretSticky, "wxStyledTextCtrl", "toggleCaretSticky", 1}, // 3325
- {wxStyledTextCtrl_SetPasteConvertEndings, "wxStyledTextCtrl", "setPasteConvertEndings", 2}, // 3326
- {wxStyledTextCtrl_GetPasteConvertEndings, "wxStyledTextCtrl", "getPasteConvertEndings", 1}, // 3327
- {wxStyledTextCtrl_SelectionDuplicate, "wxStyledTextCtrl", "selectionDuplicate", 1}, // 3328
- {wxStyledTextCtrl_SetCaretLineBackAlpha, "wxStyledTextCtrl", "setCaretLineBackAlpha", 2}, // 3329
- {wxStyledTextCtrl_GetCaretLineBackAlpha, "wxStyledTextCtrl", "getCaretLineBackAlpha", 1}, // 3330
- {wxStyledTextCtrl_StartRecord, "wxStyledTextCtrl", "startRecord", 1}, // 3331
- {wxStyledTextCtrl_StopRecord, "wxStyledTextCtrl", "stopRecord", 1}, // 3332
- {wxStyledTextCtrl_SetLexer, "wxStyledTextCtrl", "setLexer", 2}, // 3333
- {wxStyledTextCtrl_GetLexer, "wxStyledTextCtrl", "getLexer", 1}, // 3334
- {wxStyledTextCtrl_Colourise, "wxStyledTextCtrl", "colourise", 3}, // 3335
- {wxStyledTextCtrl_SetProperty, "wxStyledTextCtrl", "setProperty", 3}, // 3336
- {wxStyledTextCtrl_SetKeyWords, "wxStyledTextCtrl", "setKeyWords", 3}, // 3337
- {wxStyledTextCtrl_SetLexerLanguage, "wxStyledTextCtrl", "setLexerLanguage", 2}, // 3338
- {wxStyledTextCtrl_GetProperty, "wxStyledTextCtrl", "getProperty", 2}, // 3339
- {wxStyledTextCtrl_GetStyleBitsNeeded, "wxStyledTextCtrl", "getStyleBitsNeeded", 1}, // 3340
- {wxStyledTextCtrl_GetCurrentLine, "wxStyledTextCtrl", "getCurrentLine", 1}, // 3341
- {wxStyledTextCtrl_StyleSetSpec, "wxStyledTextCtrl", "styleSetSpec", 3}, // 3342
- {wxStyledTextCtrl_StyleSetFont, "wxStyledTextCtrl", "styleSetFont", 3}, // 3343
- {wxStyledTextCtrl_StyleSetFontAttr, "wxStyledTextCtrl", "styleSetFontAttr", 8}, // 3344
- {wxStyledTextCtrl_StyleSetCharacterSet, "wxStyledTextCtrl", "styleSetCharacterSet", 3}, // 3345
- {wxStyledTextCtrl_StyleSetFontEncoding, "wxStyledTextCtrl", "styleSetFontEncoding", 3}, // 3346
- {wxStyledTextCtrl_CmdKeyExecute, "wxStyledTextCtrl", "cmdKeyExecute", 2}, // 3347
- {wxStyledTextCtrl_SetMargins, "wxStyledTextCtrl", "setMargins", 3}, // 3348
- {wxStyledTextCtrl_GetSelection, "wxStyledTextCtrl", "getSelection", 1}, // 3349
- {wxStyledTextCtrl_PointFromPosition, "wxStyledTextCtrl", "pointFromPosition", 2}, // 3350
- {wxStyledTextCtrl_ScrollToLine, "wxStyledTextCtrl", "scrollToLine", 2}, // 3351
- {wxStyledTextCtrl_ScrollToColumn, "wxStyledTextCtrl", "scrollToColumn", 2}, // 3352
- {wxStyledTextCtrl_SetVScrollBar, "wxStyledTextCtrl", "setVScrollBar", 2}, // 3353
- {wxStyledTextCtrl_SetHScrollBar, "wxStyledTextCtrl", "setHScrollBar", 2}, // 3354
- {wxStyledTextCtrl_GetLastKeydownProcessed, "wxStyledTextCtrl", "getLastKeydownProcessed", 1}, // 3355
- {wxStyledTextCtrl_SetLastKeydownProcessed, "wxStyledTextCtrl", "setLastKeydownProcessed", 2}, // 3356
- {wxStyledTextCtrl_SaveFile, "wxStyledTextCtrl", "saveFile", 2}, // 3357
- {wxStyledTextCtrl_LoadFile, "wxStyledTextCtrl", "loadFile", 2}, // 3358
- {wxStyledTextCtrl_DoDragOver, "wxStyledTextCtrl", "doDragOver", 4}, // 3359
- {wxStyledTextCtrl_DoDropText, "wxStyledTextCtrl", "doDropText", 4}, // 3360
- {wxStyledTextCtrl_GetUseAntiAliasing, "wxStyledTextCtrl", "getUseAntiAliasing", 1}, // 3361
- {wxStyledTextCtrl_AddTextRaw, "wxStyledTextCtrl", "addTextRaw", 3}, // 3362
- {wxStyledTextCtrl_InsertTextRaw, "wxStyledTextCtrl", "insertTextRaw", 3}, // 3363
- {wxStyledTextCtrl_GetCurLineRaw, "wxStyledTextCtrl", "getCurLineRaw", 1}, // 3364
- {wxStyledTextCtrl_GetLineRaw, "wxStyledTextCtrl", "getLineRaw", 2}, // 3365
- {wxStyledTextCtrl_GetSelectedTextRaw, "wxStyledTextCtrl", "getSelectedTextRaw", 1}, // 3366
- {wxStyledTextCtrl_GetTextRangeRaw, "wxStyledTextCtrl", "getTextRangeRaw", 3}, // 3367
- {wxStyledTextCtrl_SetTextRaw, "wxStyledTextCtrl", "setTextRaw", 2}, // 3368
- {wxStyledTextCtrl_GetTextRaw, "wxStyledTextCtrl", "getTextRaw", 1}, // 3369
- {wxStyledTextCtrl_AppendTextRaw, "wxStyledTextCtrl", "appendTextRaw", 3}, // 3370
- {wxArtProvider_GetBitmap, "wxArtProvider", "getBitmap", 2}, // 3371
- {wxArtProvider_GetIcon, "wxArtProvider", "getIcon", 2}, // 3372
- {wxTreeEvent_GetKeyCode, "wxTreeEvent", "getKeyCode", 1}, // 3373
- {wxTreeEvent_GetItem, "wxTreeEvent", "getItem", 1}, // 3374
- {wxTreeEvent_GetKeyEvent, "wxTreeEvent", "getKeyEvent", 1}, // 3375
- {wxTreeEvent_GetLabel, "wxTreeEvent", "getLabel", 1}, // 3376
- {wxTreeEvent_GetOldItem, "wxTreeEvent", "getOldItem", 1}, // 3377
- {wxTreeEvent_GetPoint, "wxTreeEvent", "getPoint", 1}, // 3378
- {wxTreeEvent_IsEditCancelled, "wxTreeEvent", "isEditCancelled", 1}, // 3379
- {wxTreeEvent_SetToolTip, "wxTreeEvent", "setToolTip", 2}, // 3380
- {wxBookCtrlEvent_GetOldSelection, "wxBookCtrlEvent", "getOldSelection", 1}, // 3381
- {wxBookCtrlEvent_GetSelection, "wxBookCtrlEvent", "getSelection", 1}, // 3382
- {wxBookCtrlEvent_SetOldSelection, "wxBookCtrlEvent", "setOldSelection", 2}, // 3383
- {wxBookCtrlEvent_SetSelection, "wxBookCtrlEvent", "setSelection", 2}, // 3384
- {wxFileDataObject_new, "wxFileDataObject", "new", 0}, // 3385
- {wxFileDataObject_AddFile, "wxFileDataObject", "addFile", 2}, // 3386
- {wxFileDataObject_GetFilenames, "wxFileDataObject", "getFilenames", 1}, // 3387
- {wxFileDataObject_destroy, "wxFileDataObject", "'Destroy'", 1}, // 3388
- {wxTextDataObject_new, "wxTextDataObject", "new", 1}, // 3389
- {wxTextDataObject_GetTextLength, "wxTextDataObject", "getTextLength", 1}, // 3390
- {wxTextDataObject_GetText, "wxTextDataObject", "getText", 1}, // 3391
- {wxTextDataObject_SetText, "wxTextDataObject", "setText", 2}, // 3392
- {wxTextDataObject_destroy, "wxTextDataObject", "'Destroy'", 1}, // 3393
- {wxBitmapDataObject_new_1_1, "wxBitmapDataObject", "new", 1}, // 3394
- {wxBitmapDataObject_new_1_0, "wxBitmapDataObject", "new", 1}, // 3395
- {wxBitmapDataObject_GetBitmap, "wxBitmapDataObject", "getBitmap", 1}, // 3396
- {wxBitmapDataObject_SetBitmap, "wxBitmapDataObject", "setBitmap", 2}, // 3397
- {wxBitmapDataObject_destroy, "wxBitmapDataObject", "'Destroy'", 1}, // 3398
- {wxClipboard_new, "wxClipboard", "new", 0}, // 3399
- {NULL, "wxClipboard", "destroy", 1}, // 3400 obj destructor wxClipboard_destruct
- {wxClipboard_AddData, "wxClipboard", "addData", 2}, // 3401
- {wxClipboard_Clear, "wxClipboard", "clear", 1}, // 3402
- {wxClipboard_Close, "wxClipboard", "close", 1}, // 3403
- {wxClipboard_Flush, "wxClipboard", "flush", 1}, // 3404
- {wxClipboard_GetData, "wxClipboard", "getData", 2}, // 3405
- {wxClipboard_IsOpened, "wxClipboard", "isOpened", 1}, // 3406
- {wxClipboard_Open, "wxClipboard", "open", 1}, // 3407
- {wxClipboard_SetData, "wxClipboard", "setData", 2}, // 3408
- {wxClipboard_UsePrimarySelection, "wxClipboard", "usePrimarySelection", 2}, // 3409
- {wxClipboard_IsSupported, "wxClipboard", "isSupported", 2}, // 3410
- {wxClipboard_Get, "wxClipboard", "get", 0}, // 3411
- {wxSpinEvent_GetPosition, "wxSpinEvent", "getPosition", 1}, // 3412
- {wxSpinEvent_SetPosition, "wxSpinEvent", "setPosition", 2}, // 3413
- {wxSplitterWindow_new_0, "wxSplitterWindow", "new", 0}, // 3414
- {wxSplitterWindow_new_2, "wxSplitterWindow", "new", 2}, // 3415
- {NULL, "wxSplitterWindow", "destroy", 1}, // 3416 obj destructor wxSplitterWindow_destruct
- {wxSplitterWindow_Create, "wxSplitterWindow", "create", 3}, // 3417
- {wxSplitterWindow_GetMinimumPaneSize, "wxSplitterWindow", "getMinimumPaneSize", 1}, // 3418
- {wxSplitterWindow_GetSashGravity, "wxSplitterWindow", "getSashGravity", 1}, // 3419
- {wxSplitterWindow_GetSashPosition, "wxSplitterWindow", "getSashPosition", 1}, // 3420
- {wxSplitterWindow_GetSplitMode, "wxSplitterWindow", "getSplitMode", 1}, // 3421
- {wxSplitterWindow_GetWindow1, "wxSplitterWindow", "getWindow1", 1}, // 3422
- {wxSplitterWindow_GetWindow2, "wxSplitterWindow", "getWindow2", 1}, // 3423
- {wxSplitterWindow_Initialize, "wxSplitterWindow", "initialize", 2}, // 3424
- {wxSplitterWindow_IsSplit, "wxSplitterWindow", "isSplit", 1}, // 3425
- {wxSplitterWindow_ReplaceWindow, "wxSplitterWindow", "replaceWindow", 3}, // 3426
- {wxSplitterWindow_SetSashGravity, "wxSplitterWindow", "setSashGravity", 2}, // 3427
- {wxSplitterWindow_SetSashPosition, "wxSplitterWindow", "setSashPosition", 3}, // 3428
- {wxSplitterWindow_SetMinimumPaneSize, "wxSplitterWindow", "setMinimumPaneSize", 2}, // 3429
- {wxSplitterWindow_SetSplitMode, "wxSplitterWindow", "setSplitMode", 2}, // 3430
- {wxSplitterWindow_SplitHorizontally, "wxSplitterWindow", "splitHorizontally", 4}, // 3431
- {wxSplitterWindow_SplitVertically, "wxSplitterWindow", "splitVertically", 4}, // 3432
- {wxSplitterWindow_Unsplit, "wxSplitterWindow", "unsplit", 2}, // 3433
- {wxSplitterWindow_UpdateSize, "wxSplitterWindow", "updateSize", 1}, // 3434
- {wxSplitterEvent_GetSashPosition, "wxSplitterEvent", "getSashPosition", 1}, // 3435
- {wxSplitterEvent_GetX, "wxSplitterEvent", "getX", 1}, // 3436
- {wxSplitterEvent_GetY, "wxSplitterEvent", "getY", 1}, // 3437
- {wxSplitterEvent_GetWindowBeingRemoved, "wxSplitterEvent", "getWindowBeingRemoved", 1}, // 3438
- {wxSplitterEvent_SetSashPosition, "wxSplitterEvent", "setSashPosition", 2}, // 3439
- {wxHtmlWindow_new_0, "wxHtmlWindow", "new", 0}, // 3440
- {wxHtmlWindow_new_2, "wxHtmlWindow", "new", 2}, // 3441
- {wxHtmlWindow_AppendToPage, "wxHtmlWindow", "appendToPage", 2}, // 3442
- {wxHtmlWindow_GetOpenedAnchor, "wxHtmlWindow", "getOpenedAnchor", 1}, // 3443
- {wxHtmlWindow_GetOpenedPage, "wxHtmlWindow", "getOpenedPage", 1}, // 3444
- {wxHtmlWindow_GetOpenedPageTitle, "wxHtmlWindow", "getOpenedPageTitle", 1}, // 3445
- {wxHtmlWindow_GetRelatedFrame, "wxHtmlWindow", "getRelatedFrame", 1}, // 3446
- {wxHtmlWindow_HistoryBack, "wxHtmlWindow", "historyBack", 1}, // 3447
- {wxHtmlWindow_HistoryCanBack, "wxHtmlWindow", "historyCanBack", 1}, // 3448
- {wxHtmlWindow_HistoryCanForward, "wxHtmlWindow", "historyCanForward", 1}, // 3449
- {wxHtmlWindow_HistoryClear, "wxHtmlWindow", "historyClear", 1}, // 3450
- {wxHtmlWindow_HistoryForward, "wxHtmlWindow", "historyForward", 1}, // 3451
- {wxHtmlWindow_LoadFile, "wxHtmlWindow", "loadFile", 2}, // 3452
- {wxHtmlWindow_LoadPage, "wxHtmlWindow", "loadPage", 2}, // 3453
- {wxHtmlWindow_SelectAll, "wxHtmlWindow", "selectAll", 1}, // 3454
- {wxHtmlWindow_SelectionToText, "wxHtmlWindow", "selectionToText", 1}, // 3455
- {wxHtmlWindow_SelectLine, "wxHtmlWindow", "selectLine", 2}, // 3456
- {wxHtmlWindow_SelectWord, "wxHtmlWindow", "selectWord", 2}, // 3457
- {wxHtmlWindow_SetBorders, "wxHtmlWindow", "setBorders", 2}, // 3458
- {wxHtmlWindow_SetFonts, "wxHtmlWindow", "setFonts", 4}, // 3459
- {wxHtmlWindow_SetPage, "wxHtmlWindow", "setPage", 2}, // 3460
- {wxHtmlWindow_SetRelatedFrame, "wxHtmlWindow", "setRelatedFrame", 3}, // 3461
- {wxHtmlWindow_SetRelatedStatusBar_1, "wxHtmlWindow", "setRelatedStatusBar", 2}, // 3462
- {wxHtmlWindow_SetRelatedStatusBar_2, "wxHtmlWindow", "setRelatedStatusBar", 3}, // 3463
- {wxHtmlWindow_ToText, "wxHtmlWindow", "toText", 1}, // 3464
- {NULL, "wxHtmlWindow", "'Destroy'", 1}, // 3465 obj destructor wxHtmlWindow_destroy
- {wxHtmlLinkEvent_GetLinkInfo, "wxHtmlLinkEvent", "getLinkInfo", 1}, // 3466
- {wxSystemSettings_GetColour, "wxSystemSettings", "getColour", 1}, // 3467
- {wxSystemSettings_GetFont, "wxSystemSettings", "getFont", 1}, // 3468
- {wxSystemSettings_GetMetric, "wxSystemSettings", "getMetric", 2}, // 3469
- {wxSystemSettings_GetScreenType, "wxSystemSettings", "getScreenType", 0}, // 3470
- {wxSystemOptions_GetOption, "wxSystemOptions", "getOption", 1}, // 3471
- {wxSystemOptions_GetOptionInt, "wxSystemOptions", "getOptionInt", 1}, // 3472
- {wxSystemOptions_HasOption, "wxSystemOptions", "hasOption", 1}, // 3473
- {wxSystemOptions_IsFalse, "wxSystemOptions", "isFalse", 1}, // 3474
- {wxSystemOptions_SetOption_2_1, "wxSystemOptions", "setOption", 2}, // 3475
- {wxSystemOptions_SetOption_2_0, "wxSystemOptions", "setOption", 2}, // 3476
- {wxAuiNotebookEvent_SetSelection, "wxAuiNotebookEvent", "setSelection", 2}, // 3477
- {wxAuiNotebookEvent_GetSelection, "wxAuiNotebookEvent", "getSelection", 1}, // 3478
- {wxAuiNotebookEvent_SetOldSelection, "wxAuiNotebookEvent", "setOldSelection", 2}, // 3479
- {wxAuiNotebookEvent_GetOldSelection, "wxAuiNotebookEvent", "getOldSelection", 1}, // 3480
- {wxAuiNotebookEvent_SetDragSource, "wxAuiNotebookEvent", "setDragSource", 2}, // 3481
- {wxAuiNotebookEvent_GetDragSource, "wxAuiNotebookEvent", "getDragSource", 1}, // 3482
- {wxAuiManagerEvent_SetManager, "wxAuiManagerEvent", "setManager", 2}, // 3483
- {wxAuiManagerEvent_GetManager, "wxAuiManagerEvent", "getManager", 1}, // 3484
- {wxAuiManagerEvent_SetPane, "wxAuiManagerEvent", "setPane", 2}, // 3485
- {wxAuiManagerEvent_GetPane, "wxAuiManagerEvent", "getPane", 1}, // 3486
- {wxAuiManagerEvent_SetButton, "wxAuiManagerEvent", "setButton", 2}, // 3487
- {wxAuiManagerEvent_GetButton, "wxAuiManagerEvent", "getButton", 1}, // 3488
- {wxAuiManagerEvent_SetDC, "wxAuiManagerEvent", "setDC", 2}, // 3489
- {wxAuiManagerEvent_GetDC, "wxAuiManagerEvent", "getDC", 1}, // 3490
- {wxAuiManagerEvent_Veto, "wxAuiManagerEvent", "veto", 2}, // 3491
- {wxAuiManagerEvent_GetVeto, "wxAuiManagerEvent", "getVeto", 1}, // 3492
- {wxAuiManagerEvent_SetCanVeto, "wxAuiManagerEvent", "setCanVeto", 2}, // 3493
- {wxAuiManagerEvent_CanVeto, "wxAuiManagerEvent", "canVeto", 1}, // 3494
- {wxLogNull_new, "wxLogNull", "new", 0}, // 3495
- {wxLogNull_destruct, "wxLogNull", "destroy", 1}, // 3496
- {wxTaskBarIcon_new, "wxTaskBarIcon", "new", 1}, // 3497
- {NULL, "wxTaskBarIcon", "destroy", 1}, // 3498 obj destructor wxTaskBarIcon_destruct
- {wxTaskBarIcon_PopupMenu, "wxTaskBarIcon", "popupMenu", 2}, // 3499
- {wxTaskBarIcon_RemoveIcon, "wxTaskBarIcon", "removeIcon", 1}, // 3500
- {wxTaskBarIcon_SetIcon, "wxTaskBarIcon", "setIcon", 3}, // 3501
- {wxLocale_new_0, "wxLocale", "new", 0}, // 3502
- {wxLocale_new_2_0, "wxLocale", "new", 2}, // 3503
- {wxLocale_new_2_1, "wxLocale", "new", 2}, // 3504
- {wxLocale_destruct, "wxLocale", "destroy", 1}, // 3505
- {wxLocale_Init_1, "wxLocale", "init", 2}, // 3506
- {wxLocale_Init_2, "wxLocale", "init", 3}, // 3507
- {wxLocale_AddCatalog_1, "wxLocale", "addCatalog", 2}, // 3508
- {wxLocale_AddCatalog_2, "wxLocale", "addCatalog", 3}, // 3509
- {wxLocale_AddCatalog_3, "wxLocale", "addCatalog", 4}, // 3510
- {wxLocale_AddCatalogLookupPathPrefix, "wxLocale", "addCatalogLookupPathPrefix", 1}, // 3511
- {wxLocale_GetCanonicalName, "wxLocale", "getCanonicalName", 1}, // 3512
- {wxLocale_GetLanguage, "wxLocale", "getLanguage", 1}, // 3513
- {wxLocale_GetLanguageName, "wxLocale", "getLanguageName", 1}, // 3514
- {wxLocale_GetLocale, "wxLocale", "getLocale", 1}, // 3515
- {wxLocale_GetName, "wxLocale", "getName", 1}, // 3516
- {wxLocale_GetString_2, "wxLocale", "getString", 3}, // 3517
- {wxLocale_GetString_4, "wxLocale", "getString", 5}, // 3518
- {wxLocale_GetHeaderValue, "wxLocale", "getHeaderValue", 3}, // 3519
- {wxLocale_GetSysName, "wxLocale", "getSysName", 1}, // 3520
- {wxLocale_GetSystemEncoding, "wxLocale", "getSystemEncoding", 0}, // 3521
- {wxLocale_GetSystemEncodingName, "wxLocale", "getSystemEncodingName", 0}, // 3522
- {wxLocale_GetSystemLanguage, "wxLocale", "getSystemLanguage", 0}, // 3523
- {wxLocale_IsLoaded, "wxLocale", "isLoaded", 2}, // 3524
- {wxLocale_IsOk, "wxLocale", "isOk", 1}, // 3525
- {wxActivateEvent_GetActive, "wxActivateEvent", "getActive", 1}, // 3526
+ {wxMDIParentFrame_new_0, "wxMDIParentFrame", "new", 0}, // 2651
+ {wxMDIParentFrame_new_4, "wxMDIParentFrame", "new", 4}, // 2652
+ {NULL, "wxMDIParentFrame", "destroy", 1}, // 2653 obj destructor wxMDIParentFrame_destruct
+ {wxMDIParentFrame_ActivateNext, "wxMDIParentFrame", "activateNext", 1}, // 2654
+ {wxMDIParentFrame_ActivatePrevious, "wxMDIParentFrame", "activatePrevious", 1}, // 2655
+ {wxMDIParentFrame_ArrangeIcons, "wxMDIParentFrame", "arrangeIcons", 1}, // 2656
+ {wxMDIParentFrame_Cascade, "wxMDIParentFrame", "cascade", 1}, // 2657
+ {wxMDIParentFrame_Create, "wxMDIParentFrame", "create", 5}, // 2658
+ {wxMDIParentFrame_GetActiveChild, "wxMDIParentFrame", "getActiveChild", 1}, // 2659
+ {wxMDIParentFrame_GetClientWindow, "wxMDIParentFrame", "getClientWindow", 1}, // 2660
+ {wxMDIParentFrame_Tile, "wxMDIParentFrame", "tile", 2}, // 2661
+ {wxMDIChildFrame_new_0, "wxMDIChildFrame", "new", 0}, // 2662
+ {wxMDIChildFrame_new_4, "wxMDIChildFrame", "new", 4}, // 2663
+ {NULL, "wxMDIChildFrame", "destroy", 1}, // 2664 obj destructor wxMDIChildFrame_destruct
+ {wxMDIChildFrame_Activate, "wxMDIChildFrame", "activate", 1}, // 2665
+ {wxMDIChildFrame_Create, "wxMDIChildFrame", "create", 5}, // 2666
+ {wxMDIChildFrame_Maximize, "wxMDIChildFrame", "maximize", 2}, // 2667
+ {wxMDIChildFrame_Restore, "wxMDIChildFrame", "restore", 1}, // 2668
+ {wxMDIClientWindow_new, "wxMDIClientWindow", "new", 0}, // 2669
+ {wxMDIClientWindow_CreateClient, "wxMDIClientWindow", "createClient", 3}, // 2670
+ {NULL, "wxMDIClientWindow", "'Destroy'", 1}, // 2671 obj destructor wxMDIClientWindow_destroy
+ {wxLayoutAlgorithm_new, "wxLayoutAlgorithm", "new", 0}, // 2672
+ {NULL, "wxLayoutAlgorithm", "destroy", 1}, // 2673 obj destructor wxLayoutAlgorithm_destruct
+ {wxLayoutAlgorithm_LayoutFrame, "wxLayoutAlgorithm", "layoutFrame", 3}, // 2674
+ {wxLayoutAlgorithm_LayoutMDIFrame, "wxLayoutAlgorithm", "layoutMDIFrame", 3}, // 2675
+ {wxLayoutAlgorithm_LayoutWindow, "wxLayoutAlgorithm", "layoutWindow", 3}, // 2676
+ {wxEvent_GetId, "wxEvent", "getId", 1}, // 2677
+ {wxEvent_GetSkipped, "wxEvent", "getSkipped", 1}, // 2678
+ {wxEvent_GetTimestamp, "wxEvent", "getTimestamp", 1}, // 2679
+ {wxEvent_IsCommandEvent, "wxEvent", "isCommandEvent", 1}, // 2680
+ {wxEvent_ResumePropagation, "wxEvent", "resumePropagation", 2}, // 2681
+ {wxEvent_ShouldPropagate, "wxEvent", "shouldPropagate", 1}, // 2682
+ {wxEvent_Skip, "wxEvent", "skip", 2}, // 2683
+ {wxEvent_StopPropagation, "wxEvent", "stopPropagation", 1}, // 2684
+ {wxCommandEvent_getClientData, "wxCommandEvent", "getClientData", 1}, // 2685
+ {wxCommandEvent_GetExtraLong, "wxCommandEvent", "getExtraLong", 1}, // 2686
+ {wxCommandEvent_GetInt, "wxCommandEvent", "getInt", 1}, // 2687
+ {wxCommandEvent_GetSelection, "wxCommandEvent", "getSelection", 1}, // 2688
+ {wxCommandEvent_GetString, "wxCommandEvent", "getString", 1}, // 2689
+ {wxCommandEvent_IsChecked, "wxCommandEvent", "isChecked", 1}, // 2690
+ {wxCommandEvent_IsSelection, "wxCommandEvent", "isSelection", 1}, // 2691
+ {wxCommandEvent_SetInt, "wxCommandEvent", "setInt", 2}, // 2692
+ {wxCommandEvent_SetString, "wxCommandEvent", "setString", 2}, // 2693
+ {wxScrollEvent_GetOrientation, "wxScrollEvent", "getOrientation", 1}, // 2694
+ {wxScrollEvent_GetPosition, "wxScrollEvent", "getPosition", 1}, // 2695
+ {wxScrollWinEvent_GetOrientation, "wxScrollWinEvent", "getOrientation", 1}, // 2696
+ {wxScrollWinEvent_GetPosition, "wxScrollWinEvent", "getPosition", 1}, // 2697
+ {wxMouseEvent_AltDown, "wxMouseEvent", "altDown", 1}, // 2698
+ {wxMouseEvent_Button, "wxMouseEvent", "button", 2}, // 2699
+ {wxMouseEvent_ButtonDClick, "wxMouseEvent", "buttonDClick", 2}, // 2700
+ {wxMouseEvent_ButtonDown, "wxMouseEvent", "buttonDown", 2}, // 2701
+ {wxMouseEvent_ButtonUp, "wxMouseEvent", "buttonUp", 2}, // 2702
+ {wxMouseEvent_CmdDown, "wxMouseEvent", "cmdDown", 1}, // 2703
+ {wxMouseEvent_ControlDown, "wxMouseEvent", "controlDown", 1}, // 2704
+ {wxMouseEvent_Dragging, "wxMouseEvent", "dragging", 1}, // 2705
+ {wxMouseEvent_Entering, "wxMouseEvent", "entering", 1}, // 2706
+ {wxMouseEvent_GetButton, "wxMouseEvent", "getButton", 1}, // 2707
+ {wxMouseEvent_GetPosition, "wxMouseEvent", "getPosition", 1}, // 2708
+ {NULL, "", "", 0}, // 2709
+ {wxMouseEvent_GetLogicalPosition, "wxMouseEvent", "getLogicalPosition", 2}, // 2710
+ {wxMouseEvent_GetLinesPerAction, "wxMouseEvent", "getLinesPerAction", 1}, // 2711
+ {wxMouseEvent_GetWheelRotation, "wxMouseEvent", "getWheelRotation", 1}, // 2712
+ {wxMouseEvent_GetWheelDelta, "wxMouseEvent", "getWheelDelta", 1}, // 2713
+ {wxMouseEvent_GetX, "wxMouseEvent", "getX", 1}, // 2714
+ {wxMouseEvent_GetY, "wxMouseEvent", "getY", 1}, // 2715
+ {wxMouseEvent_IsButton, "wxMouseEvent", "isButton", 1}, // 2716
+ {wxMouseEvent_IsPageScroll, "wxMouseEvent", "isPageScroll", 1}, // 2717
+ {wxMouseEvent_Leaving, "wxMouseEvent", "leaving", 1}, // 2718
+ {wxMouseEvent_LeftDClick, "wxMouseEvent", "leftDClick", 1}, // 2719
+ {wxMouseEvent_LeftDown, "wxMouseEvent", "leftDown", 1}, // 2720
+ {wxMouseEvent_LeftIsDown, "wxMouseEvent", "leftIsDown", 1}, // 2721
+ {wxMouseEvent_LeftUp, "wxMouseEvent", "leftUp", 1}, // 2722
+ {wxMouseEvent_MetaDown, "wxMouseEvent", "metaDown", 1}, // 2723
+ {wxMouseEvent_MiddleDClick, "wxMouseEvent", "middleDClick", 1}, // 2724
+ {wxMouseEvent_MiddleDown, "wxMouseEvent", "middleDown", 1}, // 2725
+ {wxMouseEvent_MiddleIsDown, "wxMouseEvent", "middleIsDown", 1}, // 2726
+ {wxMouseEvent_MiddleUp, "wxMouseEvent", "middleUp", 1}, // 2727
+ {wxMouseEvent_Moving, "wxMouseEvent", "moving", 1}, // 2728
+ {wxMouseEvent_RightDClick, "wxMouseEvent", "rightDClick", 1}, // 2729
+ {wxMouseEvent_RightDown, "wxMouseEvent", "rightDown", 1}, // 2730
+ {wxMouseEvent_RightIsDown, "wxMouseEvent", "rightIsDown", 1}, // 2731
+ {wxMouseEvent_RightUp, "wxMouseEvent", "rightUp", 1}, // 2732
+ {wxMouseEvent_ShiftDown, "wxMouseEvent", "shiftDown", 1}, // 2733
+ {wxMouseEvent_GetWheelAxis, "wxMouseEvent", "getWheelAxis", 1}, // 2734
+ {wxMouseEvent_Aux1DClick, "wxMouseEvent", "aux1DClick", 1}, // 2735
+ {wxMouseEvent_Aux1Down, "wxMouseEvent", "aux1Down", 1}, // 2736
+ {wxMouseEvent_Aux1Up, "wxMouseEvent", "aux1Up", 1}, // 2737
+ {wxMouseEvent_Aux2DClick, "wxMouseEvent", "aux2DClick", 1}, // 2738
+ {wxMouseEvent_Aux2Down, "wxMouseEvent", "aux2Down", 1}, // 2739
+ {wxMouseEvent_Aux2Up, "wxMouseEvent", "aux2Up", 1}, // 2740
+ {wxSetCursorEvent_GetCursor, "wxSetCursorEvent", "getCursor", 1}, // 2741
+ {wxSetCursorEvent_GetX, "wxSetCursorEvent", "getX", 1}, // 2742
+ {wxSetCursorEvent_GetY, "wxSetCursorEvent", "getY", 1}, // 2743
+ {wxSetCursorEvent_HasCursor, "wxSetCursorEvent", "hasCursor", 1}, // 2744
+ {wxSetCursorEvent_SetCursor, "wxSetCursorEvent", "setCursor", 2}, // 2745
+ {wxKeyEvent_AltDown, "wxKeyEvent", "altDown", 1}, // 2746
+ {wxKeyEvent_CmdDown, "wxKeyEvent", "cmdDown", 1}, // 2747
+ {wxKeyEvent_ControlDown, "wxKeyEvent", "controlDown", 1}, // 2748
+ {wxKeyEvent_GetKeyCode, "wxKeyEvent", "getKeyCode", 1}, // 2749
+ {wxKeyEvent_GetModifiers, "wxKeyEvent", "getModifiers", 1}, // 2750
+ {wxKeyEvent_GetPosition, "wxKeyEvent", "getPosition", 1}, // 2751
+ {NULL, "", "", 0}, // 2752
+ {wxKeyEvent_GetRawKeyCode, "wxKeyEvent", "getRawKeyCode", 1}, // 2753
+ {wxKeyEvent_GetRawKeyFlags, "wxKeyEvent", "getRawKeyFlags", 1}, // 2754
+ {wxKeyEvent_GetUnicodeKey, "wxKeyEvent", "getUnicodeKey", 1}, // 2755
+ {wxKeyEvent_GetX, "wxKeyEvent", "getX", 1}, // 2756
+ {wxKeyEvent_GetY, "wxKeyEvent", "getY", 1}, // 2757
+ {wxKeyEvent_HasModifiers, "wxKeyEvent", "hasModifiers", 1}, // 2758
+ {wxKeyEvent_MetaDown, "wxKeyEvent", "metaDown", 1}, // 2759
+ {wxKeyEvent_ShiftDown, "wxKeyEvent", "shiftDown", 1}, // 2760
+ {wxSizeEvent_GetSize, "wxSizeEvent", "getSize", 1}, // 2761
+ {wxSizeEvent_GetRect, "wxSizeEvent", "getRect", 1}, // 2762
+ {wxMoveEvent_GetPosition, "wxMoveEvent", "getPosition", 1}, // 2763
+ {wxMoveEvent_GetRect, "wxMoveEvent", "getRect", 1}, // 2764
+ {wxEraseEvent_GetDC, "wxEraseEvent", "getDC", 1}, // 2765
+ {wxFocusEvent_GetWindow, "wxFocusEvent", "getWindow", 1}, // 2766
+ {wxChildFocusEvent_GetWindow, "wxChildFocusEvent", "getWindow", 1}, // 2767
+ {wxMenuEvent_GetMenu, "wxMenuEvent", "getMenu", 1}, // 2768
+ {wxMenuEvent_GetMenuId, "wxMenuEvent", "getMenuId", 1}, // 2769
+ {wxMenuEvent_IsPopup, "wxMenuEvent", "isPopup", 1}, // 2770
+ {wxCloseEvent_CanVeto, "wxCloseEvent", "canVeto", 1}, // 2771
+ {wxCloseEvent_GetLoggingOff, "wxCloseEvent", "getLoggingOff", 1}, // 2772
+ {wxCloseEvent_SetCanVeto, "wxCloseEvent", "setCanVeto", 2}, // 2773
+ {wxCloseEvent_SetLoggingOff, "wxCloseEvent", "setLoggingOff", 2}, // 2774
+ {wxCloseEvent_Veto, "wxCloseEvent", "veto", 2}, // 2775
+ {wxShowEvent_SetShow, "wxShowEvent", "setShow", 2}, // 2776
+ {wxShowEvent_IsShown, "wxShowEvent", "isShown", 1}, // 2777
+ {wxIconizeEvent_IsIconized, "wxIconizeEvent", "isIconized", 1}, // 2778
+ {wxJoystickEvent_ButtonDown, "wxJoystickEvent", "buttonDown", 2}, // 2779
+ {wxJoystickEvent_ButtonIsDown, "wxJoystickEvent", "buttonIsDown", 2}, // 2780
+ {wxJoystickEvent_ButtonUp, "wxJoystickEvent", "buttonUp", 2}, // 2781
+ {wxJoystickEvent_GetButtonChange, "wxJoystickEvent", "getButtonChange", 1}, // 2782
+ {wxJoystickEvent_GetButtonState, "wxJoystickEvent", "getButtonState", 1}, // 2783
+ {wxJoystickEvent_GetJoystick, "wxJoystickEvent", "getJoystick", 1}, // 2784
+ {wxJoystickEvent_GetPosition, "wxJoystickEvent", "getPosition", 1}, // 2785
+ {wxJoystickEvent_GetZPosition, "wxJoystickEvent", "getZPosition", 1}, // 2786
+ {wxJoystickEvent_IsButton, "wxJoystickEvent", "isButton", 1}, // 2787
+ {wxJoystickEvent_IsMove, "wxJoystickEvent", "isMove", 1}, // 2788
+ {wxJoystickEvent_IsZMove, "wxJoystickEvent", "isZMove", 1}, // 2789
+ {wxUpdateUIEvent_CanUpdate, "wxUpdateUIEvent", "canUpdate", 1}, // 2790
+ {wxUpdateUIEvent_Check, "wxUpdateUIEvent", "check", 2}, // 2791
+ {wxUpdateUIEvent_Enable, "wxUpdateUIEvent", "enable", 2}, // 2792
+ {wxUpdateUIEvent_Show, "wxUpdateUIEvent", "show", 2}, // 2793
+ {wxUpdateUIEvent_GetChecked, "wxUpdateUIEvent", "getChecked", 1}, // 2794
+ {wxUpdateUIEvent_GetEnabled, "wxUpdateUIEvent", "getEnabled", 1}, // 2795
+ {wxUpdateUIEvent_GetShown, "wxUpdateUIEvent", "getShown", 1}, // 2796
+ {wxUpdateUIEvent_GetSetChecked, "wxUpdateUIEvent", "getSetChecked", 1}, // 2797
+ {wxUpdateUIEvent_GetSetEnabled, "wxUpdateUIEvent", "getSetEnabled", 1}, // 2798
+ {wxUpdateUIEvent_GetSetShown, "wxUpdateUIEvent", "getSetShown", 1}, // 2799
+ {wxUpdateUIEvent_GetSetText, "wxUpdateUIEvent", "getSetText", 1}, // 2800
+ {wxUpdateUIEvent_GetText, "wxUpdateUIEvent", "getText", 1}, // 2801
+ {wxUpdateUIEvent_GetMode, "wxUpdateUIEvent", "getMode", 0}, // 2802
+ {wxUpdateUIEvent_GetUpdateInterval, "wxUpdateUIEvent", "getUpdateInterval", 0}, // 2803
+ {wxUpdateUIEvent_ResetUpdateTime, "wxUpdateUIEvent", "resetUpdateTime", 0}, // 2804
+ {wxUpdateUIEvent_SetMode, "wxUpdateUIEvent", "setMode", 1}, // 2805
+ {wxUpdateUIEvent_SetText, "wxUpdateUIEvent", "setText", 2}, // 2806
+ {wxUpdateUIEvent_SetUpdateInterval, "wxUpdateUIEvent", "setUpdateInterval", 1}, // 2807
+ {wxMouseCaptureChangedEvent_GetCapturedWindow, "wxMouseCaptureChangedEvent", "getCapturedWindow", 1}, // 2808
+ {wxPaletteChangedEvent_SetChangedWindow, "wxPaletteChangedEvent", "setChangedWindow", 2}, // 2809
+ {wxPaletteChangedEvent_GetChangedWindow, "wxPaletteChangedEvent", "getChangedWindow", 1}, // 2810
+ {wxQueryNewPaletteEvent_SetPaletteRealized, "wxQueryNewPaletteEvent", "setPaletteRealized", 2}, // 2811
+ {wxQueryNewPaletteEvent_GetPaletteRealized, "wxQueryNewPaletteEvent", "getPaletteRealized", 1}, // 2812
+ {wxNavigationKeyEvent_GetDirection, "wxNavigationKeyEvent", "getDirection", 1}, // 2813
+ {wxNavigationKeyEvent_SetDirection, "wxNavigationKeyEvent", "setDirection", 2}, // 2814
+ {wxNavigationKeyEvent_IsWindowChange, "wxNavigationKeyEvent", "isWindowChange", 1}, // 2815
+ {wxNavigationKeyEvent_SetWindowChange, "wxNavigationKeyEvent", "setWindowChange", 2}, // 2816
+ {wxNavigationKeyEvent_IsFromTab, "wxNavigationKeyEvent", "isFromTab", 1}, // 2817
+ {wxNavigationKeyEvent_SetFromTab, "wxNavigationKeyEvent", "setFromTab", 2}, // 2818
+ {wxNavigationKeyEvent_GetCurrentFocus, "wxNavigationKeyEvent", "getCurrentFocus", 1}, // 2819
+ {wxNavigationKeyEvent_SetCurrentFocus, "wxNavigationKeyEvent", "setCurrentFocus", 2}, // 2820
+ {wxHelpEvent_GetOrigin, "wxHelpEvent", "getOrigin", 1}, // 2821
+ {wxHelpEvent_GetPosition, "wxHelpEvent", "getPosition", 1}, // 2822
+ {wxHelpEvent_SetOrigin, "wxHelpEvent", "setOrigin", 2}, // 2823
+ {wxHelpEvent_SetPosition, "wxHelpEvent", "setPosition", 2}, // 2824
+ {wxContextMenuEvent_GetPosition, "wxContextMenuEvent", "getPosition", 1}, // 2825
+ {wxContextMenuEvent_SetPosition, "wxContextMenuEvent", "setPosition", 2}, // 2826
+ {wxIdleEvent_GetMode, "wxIdleEvent", "getMode", 0}, // 2827
+ {wxIdleEvent_RequestMore, "wxIdleEvent", "requestMore", 2}, // 2828
+ {wxIdleEvent_MoreRequested, "wxIdleEvent", "moreRequested", 1}, // 2829
+ {wxIdleEvent_SetMode, "wxIdleEvent", "setMode", 1}, // 2830
+ {wxGridEvent_AltDown, "wxGridEvent", "altDown", 1}, // 2831
+ {wxGridEvent_ControlDown, "wxGridEvent", "controlDown", 1}, // 2832
+ {wxGridEvent_GetCol, "wxGridEvent", "getCol", 1}, // 2833
+ {wxGridEvent_GetPosition, "wxGridEvent", "getPosition", 1}, // 2834
+ {wxGridEvent_GetRow, "wxGridEvent", "getRow", 1}, // 2835
+ {wxGridEvent_MetaDown, "wxGridEvent", "metaDown", 1}, // 2836
+ {wxGridEvent_Selecting, "wxGridEvent", "selecting", 1}, // 2837
+ {wxGridEvent_ShiftDown, "wxGridEvent", "shiftDown", 1}, // 2838
+ {wxNotifyEvent_Allow, "wxNotifyEvent", "allow", 1}, // 2839
+ {wxNotifyEvent_IsAllowed, "wxNotifyEvent", "isAllowed", 1}, // 2840
+ {wxNotifyEvent_Veto, "wxNotifyEvent", "veto", 1}, // 2841
+ {wxSashEvent_GetEdge, "wxSashEvent", "getEdge", 1}, // 2842
+ {wxSashEvent_GetDragRect, "wxSashEvent", "getDragRect", 1}, // 2843
+ {wxSashEvent_GetDragStatus, "wxSashEvent", "getDragStatus", 1}, // 2844
+ {wxListEvent_GetCacheFrom, "wxListEvent", "getCacheFrom", 1}, // 2845
+ {wxListEvent_GetCacheTo, "wxListEvent", "getCacheTo", 1}, // 2846
+ {wxListEvent_GetKeyCode, "wxListEvent", "getKeyCode", 1}, // 2847
+ {wxListEvent_GetIndex, "wxListEvent", "getIndex", 1}, // 2848
+ {wxListEvent_GetColumn, "wxListEvent", "getColumn", 1}, // 2849
+ {wxListEvent_GetPoint, "wxListEvent", "getPoint", 1}, // 2850
+ {wxListEvent_GetLabel, "wxListEvent", "getLabel", 1}, // 2851
+ {wxListEvent_GetText, "wxListEvent", "getText", 1}, // 2852
+ {wxListEvent_GetImage, "wxListEvent", "getImage", 1}, // 2853
+ {wxListEvent_GetData, "wxListEvent", "getData", 1}, // 2854
+ {wxListEvent_GetMask, "wxListEvent", "getMask", 1}, // 2855
+ {wxListEvent_GetItem, "wxListEvent", "getItem", 1}, // 2856
+ {wxListEvent_IsEditCancelled, "wxListEvent", "isEditCancelled", 1}, // 2857
+ {wxDateEvent_GetDate, "wxDateEvent", "getDate", 1}, // 2858
+ {wxCalendarEvent_GetWeekDay, "wxCalendarEvent", "getWeekDay", 1}, // 2859
+ {wxCalendarEvent_GetDate, "wxCalendarEvent", "getDate", 1}, // 2860
+ {wxFileDirPickerEvent_GetPath, "wxFileDirPickerEvent", "getPath", 1}, // 2861
+ {wxColourPickerEvent_GetColour, "wxColourPickerEvent", "getColour", 1}, // 2862
+ {wxFontPickerEvent_GetFont, "wxFontPickerEvent", "getFont", 1}, // 2863
+ {wxStyledTextEvent_GetPosition, "wxStyledTextEvent", "getPosition", 1}, // 2864
+ {wxStyledTextEvent_GetKey, "wxStyledTextEvent", "getKey", 1}, // 2865
+ {wxStyledTextEvent_GetModifiers, "wxStyledTextEvent", "getModifiers", 1}, // 2866
+ {wxStyledTextEvent_GetModificationType, "wxStyledTextEvent", "getModificationType", 1}, // 2867
+ {wxStyledTextEvent_GetText, "wxStyledTextEvent", "getText", 1}, // 2868
+ {wxStyledTextEvent_GetLength, "wxStyledTextEvent", "getLength", 1}, // 2869
+ {wxStyledTextEvent_GetLinesAdded, "wxStyledTextEvent", "getLinesAdded", 1}, // 2870
+ {wxStyledTextEvent_GetLine, "wxStyledTextEvent", "getLine", 1}, // 2871
+ {wxStyledTextEvent_GetFoldLevelNow, "wxStyledTextEvent", "getFoldLevelNow", 1}, // 2872
+ {wxStyledTextEvent_GetFoldLevelPrev, "wxStyledTextEvent", "getFoldLevelPrev", 1}, // 2873
+ {wxStyledTextEvent_GetMargin, "wxStyledTextEvent", "getMargin", 1}, // 2874
+ {wxStyledTextEvent_GetMessage, "wxStyledTextEvent", "getMessage", 1}, // 2875
+ {wxStyledTextEvent_GetWParam, "wxStyledTextEvent", "getWParam", 1}, // 2876
+ {wxStyledTextEvent_GetLParam, "wxStyledTextEvent", "getLParam", 1}, // 2877
+ {wxStyledTextEvent_GetListType, "wxStyledTextEvent", "getListType", 1}, // 2878
+ {wxStyledTextEvent_GetX, "wxStyledTextEvent", "getX", 1}, // 2879
+ {wxStyledTextEvent_GetY, "wxStyledTextEvent", "getY", 1}, // 2880
+ {wxStyledTextEvent_GetDragText, "wxStyledTextEvent", "getDragText", 1}, // 2881
+ {wxStyledTextEvent_GetDragAllowMove, "wxStyledTextEvent", "getDragAllowMove", 1}, // 2882
+ {wxStyledTextEvent_GetDragResult, "wxStyledTextEvent", "getDragResult", 1}, // 2883
+ {wxStyledTextEvent_GetShift, "wxStyledTextEvent", "getShift", 1}, // 2884
+ {wxStyledTextEvent_GetControl, "wxStyledTextEvent", "getControl", 1}, // 2885
+ {wxStyledTextEvent_GetAlt, "wxStyledTextEvent", "getAlt", 1}, // 2886
+ {utils_wxGetKeyState, "utils", "getKeyState", 1}, // 2887
+ {utils_wxGetMousePosition, "utils", "getMousePosition", 0}, // 2888
+ {utils_wxGetMouseState, "utils", "getMouseState", 0}, // 2889
+ {utils_wxSetDetectableAutoRepeat, "utils", "setDetectableAutoRepeat", 1}, // 2890
+ {utils_wxBell, "utils", "bell", 0}, // 2891
+ {utils_wxFindMenuItemId, "utils", "findMenuItemId", 3}, // 2892
+ {utils_wxFindWindowAtPoint, "utils", "findWindowAtPoint", 1}, // 2893
+ {utils_wxBeginBusyCursor, "utils", "beginBusyCursor", 1}, // 2894
+ {utils_wxEndBusyCursor, "utils", "endBusyCursor", 0}, // 2895
+ {utils_wxIsBusy, "utils", "isBusy", 0}, // 2896
+ {utils_wxShutdown, "utils", "shutdown", 1}, // 2897
+ {utils_wxShell, "utils", "shell", 1}, // 2898
+ {utils_wxLaunchDefaultBrowser, "utils", "launchDefaultBrowser", 2}, // 2899
+ {utils_wxGetEmailAddress, "utils", "getEmailAddress", 0}, // 2900
+ {utils_wxGetUserId, "utils", "getUserId", 0}, // 2901
+ {utils_wxGetHomeDir, "utils", "getHomeDir", 0}, // 2902
+ {utils_wxNewId, "utils", "newId", 0}, // 2903
+ {utils_wxRegisterId, "utils", "registerId", 1}, // 2904
+ {utils_wxGetCurrentId, "utils", "getCurrentId", 0}, // 2905
+ {utils_wxGetOsDescription, "utils", "getOsDescription", 0}, // 2906
+ {utils_wxIsPlatformLittleEndian, "utils", "isPlatformLittleEndian", 0}, // 2907
+ {utils_wxIsPlatform64Bit, "utils", "isPlatform64Bit", 0}, // 2908
+ {gdicmn_wxDisplaySize, "gdicmn", "displaySize", 0}, // 2909
+ {gdicmn_wxSetCursor, "gdicmn", "setCursor", 1}, // 2910
+ {wxPrintout_new, "wxPrintout", "new", 3}, // 2911
+ {NULL, "wxPrintout", "destroy", 1}, // 2912 obj destructor wxPrintout_destruct
+ {wxPrintout_GetDC, "wxPrintout", "getDC", 1}, // 2913
+ {wxPrintout_GetPageSizeMM, "wxPrintout", "getPageSizeMM", 1}, // 2914
+ {wxPrintout_GetPageSizePixels, "wxPrintout", "getPageSizePixels", 1}, // 2915
+ {wxPrintout_GetPaperRectPixels, "wxPrintout", "getPaperRectPixels", 1}, // 2916
+ {wxPrintout_GetPPIPrinter, "wxPrintout", "getPPIPrinter", 1}, // 2917
+ {wxPrintout_GetPPIScreen, "wxPrintout", "getPPIScreen", 1}, // 2918
+ {wxPrintout_GetTitle, "wxPrintout", "getTitle", 1}, // 2919
+ {wxPrintout_IsPreview, "wxPrintout", "isPreview", 1}, // 2920
+ {wxPrintout_FitThisSizeToPaper, "wxPrintout", "fitThisSizeToPaper", 2}, // 2921
+ {wxPrintout_FitThisSizeToPage, "wxPrintout", "fitThisSizeToPage", 2}, // 2922
+ {wxPrintout_FitThisSizeToPageMargins, "wxPrintout", "fitThisSizeToPageMargins", 3}, // 2923
+ {wxPrintout_MapScreenSizeToPaper, "wxPrintout", "mapScreenSizeToPaper", 1}, // 2924
+ {wxPrintout_MapScreenSizeToPage, "wxPrintout", "mapScreenSizeToPage", 1}, // 2925
+ {wxPrintout_MapScreenSizeToPageMargins, "wxPrintout", "mapScreenSizeToPageMargins", 2}, // 2926
+ {wxPrintout_MapScreenSizeToDevice, "wxPrintout", "mapScreenSizeToDevice", 1}, // 2927
+ {wxPrintout_GetLogicalPaperRect, "wxPrintout", "getLogicalPaperRect", 1}, // 2928
+ {wxPrintout_GetLogicalPageRect, "wxPrintout", "getLogicalPageRect", 1}, // 2929
+ {wxPrintout_GetLogicalPageMarginsRect, "wxPrintout", "getLogicalPageMarginsRect", 2}, // 2930
+ {wxPrintout_SetLogicalOrigin, "wxPrintout", "setLogicalOrigin", 3}, // 2931
+ {wxPrintout_OffsetLogicalOrigin, "wxPrintout", "offsetLogicalOrigin", 3}, // 2932
+ {wxStyledTextCtrl_new_2, "wxStyledTextCtrl", "new", 2}, // 2933
+ {wxStyledTextCtrl_new_0, "wxStyledTextCtrl", "new", 0}, // 2934
+ {NULL, "wxStyledTextCtrl", "destroy", 1}, // 2935 obj destructor wxStyledTextCtrl_destruct
+ {wxStyledTextCtrl_Create, "wxStyledTextCtrl", "create", 3}, // 2936
+ {wxStyledTextCtrl_AddText, "wxStyledTextCtrl", "addText", 2}, // 2937
+ {wxStyledTextCtrl_InsertText, "wxStyledTextCtrl", "insertText", 3}, // 2938
+ {wxStyledTextCtrl_ClearAll, "wxStyledTextCtrl", "clearAll", 1}, // 2939
+ {wxStyledTextCtrl_ClearDocumentStyle, "wxStyledTextCtrl", "clearDocumentStyle", 1}, // 2940
+ {wxStyledTextCtrl_GetLength, "wxStyledTextCtrl", "getLength", 1}, // 2941
+ {wxStyledTextCtrl_GetCharAt, "wxStyledTextCtrl", "getCharAt", 2}, // 2942
+ {wxStyledTextCtrl_GetCurrentPos, "wxStyledTextCtrl", "getCurrentPos", 1}, // 2943
+ {wxStyledTextCtrl_GetAnchor, "wxStyledTextCtrl", "getAnchor", 1}, // 2944
+ {wxStyledTextCtrl_GetStyleAt, "wxStyledTextCtrl", "getStyleAt", 2}, // 2945
+ {wxStyledTextCtrl_Redo, "wxStyledTextCtrl", "redo", 1}, // 2946
+ {wxStyledTextCtrl_SetUndoCollection, "wxStyledTextCtrl", "setUndoCollection", 2}, // 2947
+ {wxStyledTextCtrl_SelectAll, "wxStyledTextCtrl", "selectAll", 1}, // 2948
+ {wxStyledTextCtrl_SetSavePoint, "wxStyledTextCtrl", "setSavePoint", 1}, // 2949
+ {wxStyledTextCtrl_CanRedo, "wxStyledTextCtrl", "canRedo", 1}, // 2950
+ {wxStyledTextCtrl_MarkerLineFromHandle, "wxStyledTextCtrl", "markerLineFromHandle", 2}, // 2951
+ {wxStyledTextCtrl_MarkerDeleteHandle, "wxStyledTextCtrl", "markerDeleteHandle", 2}, // 2952
+ {wxStyledTextCtrl_GetUndoCollection, "wxStyledTextCtrl", "getUndoCollection", 1}, // 2953
+ {wxStyledTextCtrl_GetViewWhiteSpace, "wxStyledTextCtrl", "getViewWhiteSpace", 1}, // 2954
+ {wxStyledTextCtrl_SetViewWhiteSpace, "wxStyledTextCtrl", "setViewWhiteSpace", 2}, // 2955
+ {wxStyledTextCtrl_PositionFromPoint, "wxStyledTextCtrl", "positionFromPoint", 2}, // 2956
+ {wxStyledTextCtrl_PositionFromPointClose, "wxStyledTextCtrl", "positionFromPointClose", 3}, // 2957
+ {wxStyledTextCtrl_GotoLine, "wxStyledTextCtrl", "gotoLine", 2}, // 2958
+ {wxStyledTextCtrl_GotoPos, "wxStyledTextCtrl", "gotoPos", 2}, // 2959
+ {wxStyledTextCtrl_SetAnchor, "wxStyledTextCtrl", "setAnchor", 2}, // 2960
+ {wxStyledTextCtrl_GetCurLine, "wxStyledTextCtrl", "getCurLine", 1}, // 2961
+ {wxStyledTextCtrl_GetEndStyled, "wxStyledTextCtrl", "getEndStyled", 1}, // 2962
+ {wxStyledTextCtrl_ConvertEOLs, "wxStyledTextCtrl", "convertEOLs", 2}, // 2963
+ {wxStyledTextCtrl_GetEOLMode, "wxStyledTextCtrl", "getEOLMode", 1}, // 2964
+ {wxStyledTextCtrl_SetEOLMode, "wxStyledTextCtrl", "setEOLMode", 2}, // 2965
+ {wxStyledTextCtrl_StartStyling, "wxStyledTextCtrl", "startStyling", 2}, // 2966
+ {wxStyledTextCtrl_SetStyling, "wxStyledTextCtrl", "setStyling", 3}, // 2967
+ {wxStyledTextCtrl_GetBufferedDraw, "wxStyledTextCtrl", "getBufferedDraw", 1}, // 2968
+ {wxStyledTextCtrl_SetBufferedDraw, "wxStyledTextCtrl", "setBufferedDraw", 2}, // 2969
+ {wxStyledTextCtrl_SetTabWidth, "wxStyledTextCtrl", "setTabWidth", 2}, // 2970
+ {wxStyledTextCtrl_GetTabWidth, "wxStyledTextCtrl", "getTabWidth", 1}, // 2971
+ {wxStyledTextCtrl_SetCodePage, "wxStyledTextCtrl", "setCodePage", 2}, // 2972
+ {wxStyledTextCtrl_MarkerDefine, "wxStyledTextCtrl", "markerDefine", 4}, // 2973
+ {wxStyledTextCtrl_MarkerSetForeground, "wxStyledTextCtrl", "markerSetForeground", 3}, // 2974
+ {wxStyledTextCtrl_MarkerSetBackground, "wxStyledTextCtrl", "markerSetBackground", 3}, // 2975
+ {wxStyledTextCtrl_MarkerAdd, "wxStyledTextCtrl", "markerAdd", 3}, // 2976
+ {wxStyledTextCtrl_MarkerDelete, "wxStyledTextCtrl", "markerDelete", 3}, // 2977
+ {wxStyledTextCtrl_MarkerDeleteAll, "wxStyledTextCtrl", "markerDeleteAll", 2}, // 2978
+ {wxStyledTextCtrl_MarkerGet, "wxStyledTextCtrl", "markerGet", 2}, // 2979
+ {wxStyledTextCtrl_MarkerNext, "wxStyledTextCtrl", "markerNext", 3}, // 2980
+ {wxStyledTextCtrl_MarkerPrevious, "wxStyledTextCtrl", "markerPrevious", 3}, // 2981
+ {wxStyledTextCtrl_MarkerDefineBitmap, "wxStyledTextCtrl", "markerDefineBitmap", 3}, // 2982
+ {wxStyledTextCtrl_MarkerAddSet, "wxStyledTextCtrl", "markerAddSet", 3}, // 2983
+ {wxStyledTextCtrl_MarkerSetAlpha, "wxStyledTextCtrl", "markerSetAlpha", 3}, // 2984
+ {wxStyledTextCtrl_SetMarginType, "wxStyledTextCtrl", "setMarginType", 3}, // 2985
+ {wxStyledTextCtrl_GetMarginType, "wxStyledTextCtrl", "getMarginType", 2}, // 2986
+ {wxStyledTextCtrl_SetMarginWidth, "wxStyledTextCtrl", "setMarginWidth", 3}, // 2987
+ {wxStyledTextCtrl_GetMarginWidth, "wxStyledTextCtrl", "getMarginWidth", 2}, // 2988
+ {wxStyledTextCtrl_SetMarginMask, "wxStyledTextCtrl", "setMarginMask", 3}, // 2989
+ {wxStyledTextCtrl_GetMarginMask, "wxStyledTextCtrl", "getMarginMask", 2}, // 2990
+ {wxStyledTextCtrl_SetMarginSensitive, "wxStyledTextCtrl", "setMarginSensitive", 3}, // 2991
+ {wxStyledTextCtrl_GetMarginSensitive, "wxStyledTextCtrl", "getMarginSensitive", 2}, // 2992
+ {wxStyledTextCtrl_StyleClearAll, "wxStyledTextCtrl", "styleClearAll", 1}, // 2993
+ {wxStyledTextCtrl_StyleSetForeground, "wxStyledTextCtrl", "styleSetForeground", 3}, // 2994
+ {wxStyledTextCtrl_StyleSetBackground, "wxStyledTextCtrl", "styleSetBackground", 3}, // 2995
+ {wxStyledTextCtrl_StyleSetBold, "wxStyledTextCtrl", "styleSetBold", 3}, // 2996
+ {wxStyledTextCtrl_StyleSetItalic, "wxStyledTextCtrl", "styleSetItalic", 3}, // 2997
+ {wxStyledTextCtrl_StyleSetSize, "wxStyledTextCtrl", "styleSetSize", 3}, // 2998
+ {wxStyledTextCtrl_StyleSetFaceName, "wxStyledTextCtrl", "styleSetFaceName", 3}, // 2999
+ {wxStyledTextCtrl_StyleSetEOLFilled, "wxStyledTextCtrl", "styleSetEOLFilled", 3}, // 3000
+ {wxStyledTextCtrl_StyleResetDefault, "wxStyledTextCtrl", "styleResetDefault", 1}, // 3001
+ {wxStyledTextCtrl_StyleSetUnderline, "wxStyledTextCtrl", "styleSetUnderline", 3}, // 3002
+ {wxStyledTextCtrl_StyleSetCase, "wxStyledTextCtrl", "styleSetCase", 3}, // 3003
+ {wxStyledTextCtrl_StyleSetHotSpot, "wxStyledTextCtrl", "styleSetHotSpot", 3}, // 3004
+ {wxStyledTextCtrl_SetSelForeground, "wxStyledTextCtrl", "setSelForeground", 3}, // 3005
+ {wxStyledTextCtrl_SetSelBackground, "wxStyledTextCtrl", "setSelBackground", 3}, // 3006
+ {wxStyledTextCtrl_GetSelAlpha, "wxStyledTextCtrl", "getSelAlpha", 1}, // 3007
+ {wxStyledTextCtrl_SetSelAlpha, "wxStyledTextCtrl", "setSelAlpha", 2}, // 3008
+ {wxStyledTextCtrl_SetCaretForeground, "wxStyledTextCtrl", "setCaretForeground", 2}, // 3009
+ {wxStyledTextCtrl_CmdKeyAssign, "wxStyledTextCtrl", "cmdKeyAssign", 4}, // 3010
+ {wxStyledTextCtrl_CmdKeyClear, "wxStyledTextCtrl", "cmdKeyClear", 3}, // 3011
+ {wxStyledTextCtrl_CmdKeyClearAll, "wxStyledTextCtrl", "cmdKeyClearAll", 1}, // 3012
+ {wxStyledTextCtrl_SetStyleBytes, "wxStyledTextCtrl", "setStyleBytes", 2}, // 3013
+ {wxStyledTextCtrl_StyleSetVisible, "wxStyledTextCtrl", "styleSetVisible", 3}, // 3014
+ {wxStyledTextCtrl_GetCaretPeriod, "wxStyledTextCtrl", "getCaretPeriod", 1}, // 3015
+ {wxStyledTextCtrl_SetCaretPeriod, "wxStyledTextCtrl", "setCaretPeriod", 2}, // 3016
+ {wxStyledTextCtrl_SetWordChars, "wxStyledTextCtrl", "setWordChars", 2}, // 3017
+ {wxStyledTextCtrl_BeginUndoAction, "wxStyledTextCtrl", "beginUndoAction", 1}, // 3018
+ {wxStyledTextCtrl_EndUndoAction, "wxStyledTextCtrl", "endUndoAction", 1}, // 3019
+ {wxStyledTextCtrl_IndicatorSetStyle, "wxStyledTextCtrl", "indicatorSetStyle", 3}, // 3020
+ {wxStyledTextCtrl_IndicatorGetStyle, "wxStyledTextCtrl", "indicatorGetStyle", 2}, // 3021
+ {wxStyledTextCtrl_IndicatorSetForeground, "wxStyledTextCtrl", "indicatorSetForeground", 3}, // 3022
+ {wxStyledTextCtrl_IndicatorGetForeground, "wxStyledTextCtrl", "indicatorGetForeground", 2}, // 3023
+ {wxStyledTextCtrl_SetWhitespaceForeground, "wxStyledTextCtrl", "setWhitespaceForeground", 3}, // 3024
+ {wxStyledTextCtrl_SetWhitespaceBackground, "wxStyledTextCtrl", "setWhitespaceBackground", 3}, // 3025
+ {wxStyledTextCtrl_GetStyleBits, "wxStyledTextCtrl", "getStyleBits", 1}, // 3026
+ {wxStyledTextCtrl_SetLineState, "wxStyledTextCtrl", "setLineState", 3}, // 3027
+ {wxStyledTextCtrl_GetLineState, "wxStyledTextCtrl", "getLineState", 2}, // 3028
+ {wxStyledTextCtrl_GetMaxLineState, "wxStyledTextCtrl", "getMaxLineState", 1}, // 3029
+ {wxStyledTextCtrl_GetCaretLineVisible, "wxStyledTextCtrl", "getCaretLineVisible", 1}, // 3030
+ {wxStyledTextCtrl_SetCaretLineVisible, "wxStyledTextCtrl", "setCaretLineVisible", 2}, // 3031
+ {wxStyledTextCtrl_GetCaretLineBackground, "wxStyledTextCtrl", "getCaretLineBackground", 1}, // 3032
+ {wxStyledTextCtrl_SetCaretLineBackground, "wxStyledTextCtrl", "setCaretLineBackground", 2}, // 3033
+ {wxStyledTextCtrl_AutoCompShow, "wxStyledTextCtrl", "autoCompShow", 3}, // 3034
+ {wxStyledTextCtrl_AutoCompCancel, "wxStyledTextCtrl", "autoCompCancel", 1}, // 3035
+ {wxStyledTextCtrl_AutoCompActive, "wxStyledTextCtrl", "autoCompActive", 1}, // 3036
+ {wxStyledTextCtrl_AutoCompPosStart, "wxStyledTextCtrl", "autoCompPosStart", 1}, // 3037
+ {wxStyledTextCtrl_AutoCompComplete, "wxStyledTextCtrl", "autoCompComplete", 1}, // 3038
+ {wxStyledTextCtrl_AutoCompStops, "wxStyledTextCtrl", "autoCompStops", 2}, // 3039
+ {wxStyledTextCtrl_AutoCompSetSeparator, "wxStyledTextCtrl", "autoCompSetSeparator", 2}, // 3040
+ {wxStyledTextCtrl_AutoCompGetSeparator, "wxStyledTextCtrl", "autoCompGetSeparator", 1}, // 3041
+ {wxStyledTextCtrl_AutoCompSelect, "wxStyledTextCtrl", "autoCompSelect", 2}, // 3042
+ {wxStyledTextCtrl_AutoCompSetCancelAtStart, "wxStyledTextCtrl", "autoCompSetCancelAtStart", 2}, // 3043
+ {wxStyledTextCtrl_AutoCompGetCancelAtStart, "wxStyledTextCtrl", "autoCompGetCancelAtStart", 1}, // 3044
+ {wxStyledTextCtrl_AutoCompSetFillUps, "wxStyledTextCtrl", "autoCompSetFillUps", 2}, // 3045
+ {wxStyledTextCtrl_AutoCompSetChooseSingle, "wxStyledTextCtrl", "autoCompSetChooseSingle", 2}, // 3046
+ {wxStyledTextCtrl_AutoCompGetChooseSingle, "wxStyledTextCtrl", "autoCompGetChooseSingle", 1}, // 3047
+ {wxStyledTextCtrl_AutoCompSetIgnoreCase, "wxStyledTextCtrl", "autoCompSetIgnoreCase", 2}, // 3048
+ {wxStyledTextCtrl_AutoCompGetIgnoreCase, "wxStyledTextCtrl", "autoCompGetIgnoreCase", 1}, // 3049
+ {wxStyledTextCtrl_UserListShow, "wxStyledTextCtrl", "userListShow", 3}, // 3050
+ {wxStyledTextCtrl_AutoCompSetAutoHide, "wxStyledTextCtrl", "autoCompSetAutoHide", 2}, // 3051
+ {wxStyledTextCtrl_AutoCompGetAutoHide, "wxStyledTextCtrl", "autoCompGetAutoHide", 1}, // 3052
+ {wxStyledTextCtrl_AutoCompSetDropRestOfWord, "wxStyledTextCtrl", "autoCompSetDropRestOfWord", 2}, // 3053
+ {wxStyledTextCtrl_AutoCompGetDropRestOfWord, "wxStyledTextCtrl", "autoCompGetDropRestOfWord", 1}, // 3054
+ {wxStyledTextCtrl_RegisterImage, "wxStyledTextCtrl", "registerImage", 3}, // 3055
+ {wxStyledTextCtrl_ClearRegisteredImages, "wxStyledTextCtrl", "clearRegisteredImages", 1}, // 3056
+ {wxStyledTextCtrl_AutoCompGetTypeSeparator, "wxStyledTextCtrl", "autoCompGetTypeSeparator", 1}, // 3057
+ {wxStyledTextCtrl_AutoCompSetTypeSeparator, "wxStyledTextCtrl", "autoCompSetTypeSeparator", 2}, // 3058
+ {wxStyledTextCtrl_AutoCompSetMaxWidth, "wxStyledTextCtrl", "autoCompSetMaxWidth", 2}, // 3059
+ {wxStyledTextCtrl_AutoCompGetMaxWidth, "wxStyledTextCtrl", "autoCompGetMaxWidth", 1}, // 3060
+ {wxStyledTextCtrl_AutoCompSetMaxHeight, "wxStyledTextCtrl", "autoCompSetMaxHeight", 2}, // 3061
+ {wxStyledTextCtrl_AutoCompGetMaxHeight, "wxStyledTextCtrl", "autoCompGetMaxHeight", 1}, // 3062
+ {wxStyledTextCtrl_SetIndent, "wxStyledTextCtrl", "setIndent", 2}, // 3063
+ {wxStyledTextCtrl_GetIndent, "wxStyledTextCtrl", "getIndent", 1}, // 3064
+ {wxStyledTextCtrl_SetUseTabs, "wxStyledTextCtrl", "setUseTabs", 2}, // 3065
+ {wxStyledTextCtrl_GetUseTabs, "wxStyledTextCtrl", "getUseTabs", 1}, // 3066
+ {wxStyledTextCtrl_SetLineIndentation, "wxStyledTextCtrl", "setLineIndentation", 3}, // 3067
+ {wxStyledTextCtrl_GetLineIndentation, "wxStyledTextCtrl", "getLineIndentation", 2}, // 3068
+ {wxStyledTextCtrl_GetLineIndentPosition, "wxStyledTextCtrl", "getLineIndentPosition", 2}, // 3069
+ {wxStyledTextCtrl_GetColumn, "wxStyledTextCtrl", "getColumn", 2}, // 3070
+ {wxStyledTextCtrl_SetUseHorizontalScrollBar, "wxStyledTextCtrl", "setUseHorizontalScrollBar", 2}, // 3071
+ {wxStyledTextCtrl_GetUseHorizontalScrollBar, "wxStyledTextCtrl", "getUseHorizontalScrollBar", 1}, // 3072
+ {wxStyledTextCtrl_SetIndentationGuides, "wxStyledTextCtrl", "setIndentationGuides", 2}, // 3073
+ {wxStyledTextCtrl_GetIndentationGuides, "wxStyledTextCtrl", "getIndentationGuides", 1}, // 3074
+ {wxStyledTextCtrl_SetHighlightGuide, "wxStyledTextCtrl", "setHighlightGuide", 2}, // 3075
+ {wxStyledTextCtrl_GetHighlightGuide, "wxStyledTextCtrl", "getHighlightGuide", 1}, // 3076
+ {wxStyledTextCtrl_GetLineEndPosition, "wxStyledTextCtrl", "getLineEndPosition", 2}, // 3077
+ {wxStyledTextCtrl_GetCodePage, "wxStyledTextCtrl", "getCodePage", 1}, // 3078
+ {wxStyledTextCtrl_GetCaretForeground, "wxStyledTextCtrl", "getCaretForeground", 1}, // 3079
+ {wxStyledTextCtrl_GetReadOnly, "wxStyledTextCtrl", "getReadOnly", 1}, // 3080
+ {wxStyledTextCtrl_SetCurrentPos, "wxStyledTextCtrl", "setCurrentPos", 2}, // 3081
+ {wxStyledTextCtrl_SetSelectionStart, "wxStyledTextCtrl", "setSelectionStart", 2}, // 3082
+ {wxStyledTextCtrl_GetSelectionStart, "wxStyledTextCtrl", "getSelectionStart", 1}, // 3083
+ {wxStyledTextCtrl_SetSelectionEnd, "wxStyledTextCtrl", "setSelectionEnd", 2}, // 3084
+ {wxStyledTextCtrl_GetSelectionEnd, "wxStyledTextCtrl", "getSelectionEnd", 1}, // 3085
+ {wxStyledTextCtrl_SetPrintMagnification, "wxStyledTextCtrl", "setPrintMagnification", 2}, // 3086
+ {wxStyledTextCtrl_GetPrintMagnification, "wxStyledTextCtrl", "getPrintMagnification", 1}, // 3087
+ {wxStyledTextCtrl_SetPrintColourMode, "wxStyledTextCtrl", "setPrintColourMode", 2}, // 3088
+ {wxStyledTextCtrl_GetPrintColourMode, "wxStyledTextCtrl", "getPrintColourMode", 1}, // 3089
+ {wxStyledTextCtrl_FindText, "wxStyledTextCtrl", "findText", 5}, // 3090
+ {wxStyledTextCtrl_FormatRange, "wxStyledTextCtrl", "formatRange", 8}, // 3091
+ {wxStyledTextCtrl_GetFirstVisibleLine, "wxStyledTextCtrl", "getFirstVisibleLine", 1}, // 3092
+ {wxStyledTextCtrl_GetLine, "wxStyledTextCtrl", "getLine", 2}, // 3093
+ {wxStyledTextCtrl_GetLineCount, "wxStyledTextCtrl", "getLineCount", 1}, // 3094
+ {wxStyledTextCtrl_SetMarginLeft, "wxStyledTextCtrl", "setMarginLeft", 2}, // 3095
+ {wxStyledTextCtrl_GetMarginLeft, "wxStyledTextCtrl", "getMarginLeft", 1}, // 3096
+ {wxStyledTextCtrl_SetMarginRight, "wxStyledTextCtrl", "setMarginRight", 2}, // 3097
+ {wxStyledTextCtrl_GetMarginRight, "wxStyledTextCtrl", "getMarginRight", 1}, // 3098
+ {wxStyledTextCtrl_GetModify, "wxStyledTextCtrl", "getModify", 1}, // 3099
+ {wxStyledTextCtrl_SetSelection, "wxStyledTextCtrl", "setSelection", 3}, // 3100
+ {wxStyledTextCtrl_GetSelectedText, "wxStyledTextCtrl", "getSelectedText", 1}, // 3101
+ {wxStyledTextCtrl_GetTextRange, "wxStyledTextCtrl", "getTextRange", 3}, // 3102
+ {wxStyledTextCtrl_HideSelection, "wxStyledTextCtrl", "hideSelection", 2}, // 3103
+ {wxStyledTextCtrl_LineFromPosition, "wxStyledTextCtrl", "lineFromPosition", 2}, // 3104
+ {wxStyledTextCtrl_PositionFromLine, "wxStyledTextCtrl", "positionFromLine", 2}, // 3105
+ {wxStyledTextCtrl_LineScroll, "wxStyledTextCtrl", "lineScroll", 3}, // 3106
+ {wxStyledTextCtrl_EnsureCaretVisible, "wxStyledTextCtrl", "ensureCaretVisible", 1}, // 3107
+ {wxStyledTextCtrl_ReplaceSelection, "wxStyledTextCtrl", "replaceSelection", 2}, // 3108
+ {wxStyledTextCtrl_SetReadOnly, "wxStyledTextCtrl", "setReadOnly", 2}, // 3109
+ {wxStyledTextCtrl_CanPaste, "wxStyledTextCtrl", "canPaste", 1}, // 3110
+ {wxStyledTextCtrl_CanUndo, "wxStyledTextCtrl", "canUndo", 1}, // 3111
+ {wxStyledTextCtrl_EmptyUndoBuffer, "wxStyledTextCtrl", "emptyUndoBuffer", 1}, // 3112
+ {wxStyledTextCtrl_Undo, "wxStyledTextCtrl", "undo", 1}, // 3113
+ {wxStyledTextCtrl_Cut, "wxStyledTextCtrl", "cut", 1}, // 3114
+ {wxStyledTextCtrl_Copy, "wxStyledTextCtrl", "copy", 1}, // 3115
+ {wxStyledTextCtrl_Paste, "wxStyledTextCtrl", "paste", 1}, // 3116
+ {wxStyledTextCtrl_Clear, "wxStyledTextCtrl", "clear", 1}, // 3117
+ {wxStyledTextCtrl_SetText, "wxStyledTextCtrl", "setText", 2}, // 3118
+ {wxStyledTextCtrl_GetText, "wxStyledTextCtrl", "getText", 1}, // 3119
+ {wxStyledTextCtrl_GetTextLength, "wxStyledTextCtrl", "getTextLength", 1}, // 3120
+ {wxStyledTextCtrl_GetOvertype, "wxStyledTextCtrl", "getOvertype", 1}, // 3121
+ {wxStyledTextCtrl_SetCaretWidth, "wxStyledTextCtrl", "setCaretWidth", 2}, // 3122
+ {wxStyledTextCtrl_GetCaretWidth, "wxStyledTextCtrl", "getCaretWidth", 1}, // 3123
+ {wxStyledTextCtrl_SetTargetStart, "wxStyledTextCtrl", "setTargetStart", 2}, // 3124
+ {wxStyledTextCtrl_GetTargetStart, "wxStyledTextCtrl", "getTargetStart", 1}, // 3125
+ {wxStyledTextCtrl_SetTargetEnd, "wxStyledTextCtrl", "setTargetEnd", 2}, // 3126
+ {wxStyledTextCtrl_GetTargetEnd, "wxStyledTextCtrl", "getTargetEnd", 1}, // 3127
+ {wxStyledTextCtrl_ReplaceTarget, "wxStyledTextCtrl", "replaceTarget", 2}, // 3128
+ {wxStyledTextCtrl_SearchInTarget, "wxStyledTextCtrl", "searchInTarget", 2}, // 3129
+ {wxStyledTextCtrl_SetSearchFlags, "wxStyledTextCtrl", "setSearchFlags", 2}, // 3130
+ {wxStyledTextCtrl_GetSearchFlags, "wxStyledTextCtrl", "getSearchFlags", 1}, // 3131
+ {wxStyledTextCtrl_CallTipShow, "wxStyledTextCtrl", "callTipShow", 3}, // 3132
+ {wxStyledTextCtrl_CallTipCancel, "wxStyledTextCtrl", "callTipCancel", 1}, // 3133
+ {wxStyledTextCtrl_CallTipActive, "wxStyledTextCtrl", "callTipActive", 1}, // 3134
+ {wxStyledTextCtrl_CallTipPosAtStart, "wxStyledTextCtrl", "callTipPosAtStart", 1}, // 3135
+ {wxStyledTextCtrl_CallTipSetHighlight, "wxStyledTextCtrl", "callTipSetHighlight", 3}, // 3136
+ {wxStyledTextCtrl_CallTipSetBackground, "wxStyledTextCtrl", "callTipSetBackground", 2}, // 3137
+ {wxStyledTextCtrl_CallTipSetForeground, "wxStyledTextCtrl", "callTipSetForeground", 2}, // 3138
+ {wxStyledTextCtrl_CallTipSetForegroundHighlight, "wxStyledTextCtrl", "callTipSetForegroundHighlight", 2}, // 3139
+ {wxStyledTextCtrl_CallTipUseStyle, "wxStyledTextCtrl", "callTipUseStyle", 2}, // 3140
+ {wxStyledTextCtrl_VisibleFromDocLine, "wxStyledTextCtrl", "visibleFromDocLine", 2}, // 3141
+ {wxStyledTextCtrl_DocLineFromVisible, "wxStyledTextCtrl", "docLineFromVisible", 2}, // 3142
+ {wxStyledTextCtrl_WrapCount, "wxStyledTextCtrl", "wrapCount", 2}, // 3143
+ {wxStyledTextCtrl_SetFoldLevel, "wxStyledTextCtrl", "setFoldLevel", 3}, // 3144
+ {wxStyledTextCtrl_GetFoldLevel, "wxStyledTextCtrl", "getFoldLevel", 2}, // 3145
+ {wxStyledTextCtrl_GetLastChild, "wxStyledTextCtrl", "getLastChild", 3}, // 3146
+ {wxStyledTextCtrl_GetFoldParent, "wxStyledTextCtrl", "getFoldParent", 2}, // 3147
+ {wxStyledTextCtrl_ShowLines, "wxStyledTextCtrl", "showLines", 3}, // 3148
+ {wxStyledTextCtrl_HideLines, "wxStyledTextCtrl", "hideLines", 3}, // 3149
+ {wxStyledTextCtrl_GetLineVisible, "wxStyledTextCtrl", "getLineVisible", 2}, // 3150
+ {wxStyledTextCtrl_SetFoldExpanded, "wxStyledTextCtrl", "setFoldExpanded", 3}, // 3151
+ {wxStyledTextCtrl_GetFoldExpanded, "wxStyledTextCtrl", "getFoldExpanded", 2}, // 3152
+ {wxStyledTextCtrl_ToggleFold, "wxStyledTextCtrl", "toggleFold", 2}, // 3153
+ {wxStyledTextCtrl_EnsureVisible, "wxStyledTextCtrl", "ensureVisible", 2}, // 3154
+ {wxStyledTextCtrl_SetFoldFlags, "wxStyledTextCtrl", "setFoldFlags", 2}, // 3155
+ {wxStyledTextCtrl_EnsureVisibleEnforcePolicy, "wxStyledTextCtrl", "ensureVisibleEnforcePolicy", 2}, // 3156
+ {wxStyledTextCtrl_SetTabIndents, "wxStyledTextCtrl", "setTabIndents", 2}, // 3157
+ {wxStyledTextCtrl_GetTabIndents, "wxStyledTextCtrl", "getTabIndents", 1}, // 3158
+ {wxStyledTextCtrl_SetBackSpaceUnIndents, "wxStyledTextCtrl", "setBackSpaceUnIndents", 2}, // 3159
+ {wxStyledTextCtrl_GetBackSpaceUnIndents, "wxStyledTextCtrl", "getBackSpaceUnIndents", 1}, // 3160
+ {wxStyledTextCtrl_SetMouseDwellTime, "wxStyledTextCtrl", "setMouseDwellTime", 2}, // 3161
+ {wxStyledTextCtrl_GetMouseDwellTime, "wxStyledTextCtrl", "getMouseDwellTime", 1}, // 3162
+ {wxStyledTextCtrl_WordStartPosition, "wxStyledTextCtrl", "wordStartPosition", 3}, // 3163
+ {wxStyledTextCtrl_WordEndPosition, "wxStyledTextCtrl", "wordEndPosition", 3}, // 3164
+ {wxStyledTextCtrl_SetWrapMode, "wxStyledTextCtrl", "setWrapMode", 2}, // 3165
+ {wxStyledTextCtrl_GetWrapMode, "wxStyledTextCtrl", "getWrapMode", 1}, // 3166
+ {wxStyledTextCtrl_SetWrapVisualFlags, "wxStyledTextCtrl", "setWrapVisualFlags", 2}, // 3167
+ {wxStyledTextCtrl_GetWrapVisualFlags, "wxStyledTextCtrl", "getWrapVisualFlags", 1}, // 3168
+ {wxStyledTextCtrl_SetWrapVisualFlagsLocation, "wxStyledTextCtrl", "setWrapVisualFlagsLocation", 2}, // 3169
+ {wxStyledTextCtrl_GetWrapVisualFlagsLocation, "wxStyledTextCtrl", "getWrapVisualFlagsLocation", 1}, // 3170
+ {wxStyledTextCtrl_SetWrapStartIndent, "wxStyledTextCtrl", "setWrapStartIndent", 2}, // 3171
+ {wxStyledTextCtrl_GetWrapStartIndent, "wxStyledTextCtrl", "getWrapStartIndent", 1}, // 3172
+ {wxStyledTextCtrl_SetLayoutCache, "wxStyledTextCtrl", "setLayoutCache", 2}, // 3173
+ {wxStyledTextCtrl_GetLayoutCache, "wxStyledTextCtrl", "getLayoutCache", 1}, // 3174
+ {wxStyledTextCtrl_SetScrollWidth, "wxStyledTextCtrl", "setScrollWidth", 2}, // 3175
+ {wxStyledTextCtrl_GetScrollWidth, "wxStyledTextCtrl", "getScrollWidth", 1}, // 3176
+ {wxStyledTextCtrl_TextWidth, "wxStyledTextCtrl", "textWidth", 3}, // 3177
+ {wxStyledTextCtrl_GetEndAtLastLine, "wxStyledTextCtrl", "getEndAtLastLine", 1}, // 3178
+ {wxStyledTextCtrl_TextHeight, "wxStyledTextCtrl", "textHeight", 2}, // 3179
+ {wxStyledTextCtrl_SetUseVerticalScrollBar, "wxStyledTextCtrl", "setUseVerticalScrollBar", 2}, // 3180
+ {wxStyledTextCtrl_GetUseVerticalScrollBar, "wxStyledTextCtrl", "getUseVerticalScrollBar", 1}, // 3181
+ {wxStyledTextCtrl_AppendText, "wxStyledTextCtrl", "appendText", 2}, // 3182
+ {wxStyledTextCtrl_GetTwoPhaseDraw, "wxStyledTextCtrl", "getTwoPhaseDraw", 1}, // 3183
+ {wxStyledTextCtrl_SetTwoPhaseDraw, "wxStyledTextCtrl", "setTwoPhaseDraw", 2}, // 3184
+ {wxStyledTextCtrl_TargetFromSelection, "wxStyledTextCtrl", "targetFromSelection", 1}, // 3185
+ {wxStyledTextCtrl_LinesJoin, "wxStyledTextCtrl", "linesJoin", 1}, // 3186
+ {wxStyledTextCtrl_LinesSplit, "wxStyledTextCtrl", "linesSplit", 2}, // 3187
+ {wxStyledTextCtrl_SetFoldMarginColour, "wxStyledTextCtrl", "setFoldMarginColour", 3}, // 3188
+ {wxStyledTextCtrl_SetFoldMarginHiColour, "wxStyledTextCtrl", "setFoldMarginHiColour", 3}, // 3189
+ {wxStyledTextCtrl_LineDown, "wxStyledTextCtrl", "lineDown", 1}, // 3190
+ {wxStyledTextCtrl_LineDownExtend, "wxStyledTextCtrl", "lineDownExtend", 1}, // 3191
+ {wxStyledTextCtrl_LineUp, "wxStyledTextCtrl", "lineUp", 1}, // 3192
+ {wxStyledTextCtrl_LineUpExtend, "wxStyledTextCtrl", "lineUpExtend", 1}, // 3193
+ {wxStyledTextCtrl_CharLeft, "wxStyledTextCtrl", "charLeft", 1}, // 3194
+ {wxStyledTextCtrl_CharLeftExtend, "wxStyledTextCtrl", "charLeftExtend", 1}, // 3195
+ {wxStyledTextCtrl_CharRight, "wxStyledTextCtrl", "charRight", 1}, // 3196
+ {wxStyledTextCtrl_CharRightExtend, "wxStyledTextCtrl", "charRightExtend", 1}, // 3197
+ {wxStyledTextCtrl_WordLeft, "wxStyledTextCtrl", "wordLeft", 1}, // 3198
+ {wxStyledTextCtrl_WordLeftExtend, "wxStyledTextCtrl", "wordLeftExtend", 1}, // 3199
+ {wxStyledTextCtrl_WordRight, "wxStyledTextCtrl", "wordRight", 1}, // 3200
+ {wxStyledTextCtrl_WordRightExtend, "wxStyledTextCtrl", "wordRightExtend", 1}, // 3201
+ {wxStyledTextCtrl_Home, "wxStyledTextCtrl", "home", 1}, // 3202
+ {wxStyledTextCtrl_HomeExtend, "wxStyledTextCtrl", "homeExtend", 1}, // 3203
+ {wxStyledTextCtrl_LineEnd, "wxStyledTextCtrl", "lineEnd", 1}, // 3204
+ {wxStyledTextCtrl_LineEndExtend, "wxStyledTextCtrl", "lineEndExtend", 1}, // 3205
+ {wxStyledTextCtrl_DocumentStart, "wxStyledTextCtrl", "documentStart", 1}, // 3206
+ {wxStyledTextCtrl_DocumentStartExtend, "wxStyledTextCtrl", "documentStartExtend", 1}, // 3207
+ {wxStyledTextCtrl_DocumentEnd, "wxStyledTextCtrl", "documentEnd", 1}, // 3208
+ {wxStyledTextCtrl_DocumentEndExtend, "wxStyledTextCtrl", "documentEndExtend", 1}, // 3209
+ {wxStyledTextCtrl_PageUp, "wxStyledTextCtrl", "pageUp", 1}, // 3210
+ {wxStyledTextCtrl_PageUpExtend, "wxStyledTextCtrl", "pageUpExtend", 1}, // 3211
+ {wxStyledTextCtrl_PageDown, "wxStyledTextCtrl", "pageDown", 1}, // 3212
+ {wxStyledTextCtrl_PageDownExtend, "wxStyledTextCtrl", "pageDownExtend", 1}, // 3213
+ {wxStyledTextCtrl_EditToggleOvertype, "wxStyledTextCtrl", "editToggleOvertype", 1}, // 3214
+ {wxStyledTextCtrl_Cancel, "wxStyledTextCtrl", "cancel", 1}, // 3215
+ {wxStyledTextCtrl_DeleteBack, "wxStyledTextCtrl", "deleteBack", 1}, // 3216
+ {wxStyledTextCtrl_Tab, "wxStyledTextCtrl", "tab", 1}, // 3217
+ {wxStyledTextCtrl_BackTab, "wxStyledTextCtrl", "backTab", 1}, // 3218
+ {wxStyledTextCtrl_NewLine, "wxStyledTextCtrl", "newLine", 1}, // 3219
+ {wxStyledTextCtrl_FormFeed, "wxStyledTextCtrl", "formFeed", 1}, // 3220
+ {wxStyledTextCtrl_VCHome, "wxStyledTextCtrl", "vCHome", 1}, // 3221
+ {wxStyledTextCtrl_VCHomeExtend, "wxStyledTextCtrl", "vCHomeExtend", 1}, // 3222
+ {wxStyledTextCtrl_ZoomIn, "wxStyledTextCtrl", "zoomIn", 1}, // 3223
+ {wxStyledTextCtrl_ZoomOut, "wxStyledTextCtrl", "zoomOut", 1}, // 3224
+ {wxStyledTextCtrl_DelWordLeft, "wxStyledTextCtrl", "delWordLeft", 1}, // 3225
+ {wxStyledTextCtrl_DelWordRight, "wxStyledTextCtrl", "delWordRight", 1}, // 3226
+ {wxStyledTextCtrl_LineCut, "wxStyledTextCtrl", "lineCut", 1}, // 3227
+ {wxStyledTextCtrl_LineDelete, "wxStyledTextCtrl", "lineDelete", 1}, // 3228
+ {wxStyledTextCtrl_LineTranspose, "wxStyledTextCtrl", "lineTranspose", 1}, // 3229
+ {wxStyledTextCtrl_LineDuplicate, "wxStyledTextCtrl", "lineDuplicate", 1}, // 3230
+ {wxStyledTextCtrl_LowerCase, "wxStyledTextCtrl", "lowerCase", 1}, // 3231
+ {wxStyledTextCtrl_UpperCase, "wxStyledTextCtrl", "upperCase", 1}, // 3232
+ {wxStyledTextCtrl_LineScrollDown, "wxStyledTextCtrl", "lineScrollDown", 1}, // 3233
+ {wxStyledTextCtrl_LineScrollUp, "wxStyledTextCtrl", "lineScrollUp", 1}, // 3234
+ {wxStyledTextCtrl_DeleteBackNotLine, "wxStyledTextCtrl", "deleteBackNotLine", 1}, // 3235
+ {wxStyledTextCtrl_HomeDisplay, "wxStyledTextCtrl", "homeDisplay", 1}, // 3236
+ {wxStyledTextCtrl_HomeDisplayExtend, "wxStyledTextCtrl", "homeDisplayExtend", 1}, // 3237
+ {wxStyledTextCtrl_LineEndDisplay, "wxStyledTextCtrl", "lineEndDisplay", 1}, // 3238
+ {wxStyledTextCtrl_LineEndDisplayExtend, "wxStyledTextCtrl", "lineEndDisplayExtend", 1}, // 3239
+ {wxStyledTextCtrl_HomeWrapExtend, "wxStyledTextCtrl", "homeWrapExtend", 1}, // 3240
+ {wxStyledTextCtrl_LineEndWrap, "wxStyledTextCtrl", "lineEndWrap", 1}, // 3241
+ {wxStyledTextCtrl_LineEndWrapExtend, "wxStyledTextCtrl", "lineEndWrapExtend", 1}, // 3242
+ {wxStyledTextCtrl_VCHomeWrap, "wxStyledTextCtrl", "vCHomeWrap", 1}, // 3243
+ {wxStyledTextCtrl_VCHomeWrapExtend, "wxStyledTextCtrl", "vCHomeWrapExtend", 1}, // 3244
+ {wxStyledTextCtrl_LineCopy, "wxStyledTextCtrl", "lineCopy", 1}, // 3245
+ {wxStyledTextCtrl_MoveCaretInsideView, "wxStyledTextCtrl", "moveCaretInsideView", 1}, // 3246
+ {wxStyledTextCtrl_LineLength, "wxStyledTextCtrl", "lineLength", 2}, // 3247
+ {wxStyledTextCtrl_BraceHighlight, "wxStyledTextCtrl", "braceHighlight", 3}, // 3248
+ {wxStyledTextCtrl_BraceBadLight, "wxStyledTextCtrl", "braceBadLight", 2}, // 3249
+ {wxStyledTextCtrl_BraceMatch, "wxStyledTextCtrl", "braceMatch", 2}, // 3250
+ {wxStyledTextCtrl_GetViewEOL, "wxStyledTextCtrl", "getViewEOL", 1}, // 3251
+ {wxStyledTextCtrl_SetViewEOL, "wxStyledTextCtrl", "setViewEOL", 2}, // 3252
+ {wxStyledTextCtrl_SetModEventMask, "wxStyledTextCtrl", "setModEventMask", 2}, // 3253
+ {wxStyledTextCtrl_GetEdgeColumn, "wxStyledTextCtrl", "getEdgeColumn", 1}, // 3254
+ {wxStyledTextCtrl_SetEdgeColumn, "wxStyledTextCtrl", "setEdgeColumn", 2}, // 3255
+ {wxStyledTextCtrl_SetEdgeMode, "wxStyledTextCtrl", "setEdgeMode", 2}, // 3256
+ {wxStyledTextCtrl_GetEdgeMode, "wxStyledTextCtrl", "getEdgeMode", 1}, // 3257
+ {wxStyledTextCtrl_GetEdgeColour, "wxStyledTextCtrl", "getEdgeColour", 1}, // 3258
+ {wxStyledTextCtrl_SetEdgeColour, "wxStyledTextCtrl", "setEdgeColour", 2}, // 3259
+ {wxStyledTextCtrl_SearchAnchor, "wxStyledTextCtrl", "searchAnchor", 1}, // 3260
+ {wxStyledTextCtrl_SearchNext, "wxStyledTextCtrl", "searchNext", 3}, // 3261
+ {wxStyledTextCtrl_SearchPrev, "wxStyledTextCtrl", "searchPrev", 3}, // 3262
+ {wxStyledTextCtrl_LinesOnScreen, "wxStyledTextCtrl", "linesOnScreen", 1}, // 3263
+ {wxStyledTextCtrl_UsePopUp, "wxStyledTextCtrl", "usePopUp", 2}, // 3264
+ {wxStyledTextCtrl_SelectionIsRectangle, "wxStyledTextCtrl", "selectionIsRectangle", 1}, // 3265
+ {wxStyledTextCtrl_SetZoom, "wxStyledTextCtrl", "setZoom", 2}, // 3266
+ {wxStyledTextCtrl_GetZoom, "wxStyledTextCtrl", "getZoom", 1}, // 3267
+ {wxStyledTextCtrl_GetModEventMask, "wxStyledTextCtrl", "getModEventMask", 1}, // 3268
+ {wxStyledTextCtrl_SetSTCFocus, "wxStyledTextCtrl", "setSTCFocus", 2}, // 3269
+ {wxStyledTextCtrl_GetSTCFocus, "wxStyledTextCtrl", "getSTCFocus", 1}, // 3270
+ {wxStyledTextCtrl_SetStatus, "wxStyledTextCtrl", "setStatus", 2}, // 3271
+ {wxStyledTextCtrl_GetStatus, "wxStyledTextCtrl", "getStatus", 1}, // 3272
+ {wxStyledTextCtrl_SetMouseDownCaptures, "wxStyledTextCtrl", "setMouseDownCaptures", 2}, // 3273
+ {wxStyledTextCtrl_GetMouseDownCaptures, "wxStyledTextCtrl", "getMouseDownCaptures", 1}, // 3274
+ {wxStyledTextCtrl_SetSTCCursor, "wxStyledTextCtrl", "setSTCCursor", 2}, // 3275
+ {wxStyledTextCtrl_GetSTCCursor, "wxStyledTextCtrl", "getSTCCursor", 1}, // 3276
+ {wxStyledTextCtrl_SetControlCharSymbol, "wxStyledTextCtrl", "setControlCharSymbol", 2}, // 3277
+ {wxStyledTextCtrl_GetControlCharSymbol, "wxStyledTextCtrl", "getControlCharSymbol", 1}, // 3278
+ {wxStyledTextCtrl_WordPartLeft, "wxStyledTextCtrl", "wordPartLeft", 1}, // 3279
+ {wxStyledTextCtrl_WordPartLeftExtend, "wxStyledTextCtrl", "wordPartLeftExtend", 1}, // 3280
+ {wxStyledTextCtrl_WordPartRight, "wxStyledTextCtrl", "wordPartRight", 1}, // 3281
+ {wxStyledTextCtrl_WordPartRightExtend, "wxStyledTextCtrl", "wordPartRightExtend", 1}, // 3282
+ {wxStyledTextCtrl_SetVisiblePolicy, "wxStyledTextCtrl", "setVisiblePolicy", 3}, // 3283
+ {wxStyledTextCtrl_DelLineLeft, "wxStyledTextCtrl", "delLineLeft", 1}, // 3284
+ {wxStyledTextCtrl_DelLineRight, "wxStyledTextCtrl", "delLineRight", 1}, // 3285
+ {wxStyledTextCtrl_GetXOffset, "wxStyledTextCtrl", "getXOffset", 1}, // 3286
+ {wxStyledTextCtrl_ChooseCaretX, "wxStyledTextCtrl", "chooseCaretX", 1}, // 3287
+ {wxStyledTextCtrl_SetXCaretPolicy, "wxStyledTextCtrl", "setXCaretPolicy", 3}, // 3288
+ {wxStyledTextCtrl_SetYCaretPolicy, "wxStyledTextCtrl", "setYCaretPolicy", 3}, // 3289
+ {wxStyledTextCtrl_GetPrintWrapMode, "wxStyledTextCtrl", "getPrintWrapMode", 1}, // 3290
+ {wxStyledTextCtrl_SetHotspotActiveForeground, "wxStyledTextCtrl", "setHotspotActiveForeground", 3}, // 3291
+ {wxStyledTextCtrl_SetHotspotActiveBackground, "wxStyledTextCtrl", "setHotspotActiveBackground", 3}, // 3292
+ {wxStyledTextCtrl_SetHotspotActiveUnderline, "wxStyledTextCtrl", "setHotspotActiveUnderline", 2}, // 3293
+ {wxStyledTextCtrl_SetHotspotSingleLine, "wxStyledTextCtrl", "setHotspotSingleLine", 2}, // 3294
+ {wxStyledTextCtrl_ParaDownExtend, "wxStyledTextCtrl", "paraDownExtend", 1}, // 3295
+ {wxStyledTextCtrl_ParaUp, "wxStyledTextCtrl", "paraUp", 1}, // 3296
+ {wxStyledTextCtrl_ParaUpExtend, "wxStyledTextCtrl", "paraUpExtend", 1}, // 3297
+ {wxStyledTextCtrl_PositionBefore, "wxStyledTextCtrl", "positionBefore", 2}, // 3298
+ {wxStyledTextCtrl_PositionAfter, "wxStyledTextCtrl", "positionAfter", 2}, // 3299
+ {wxStyledTextCtrl_CopyRange, "wxStyledTextCtrl", "copyRange", 3}, // 3300
+ {wxStyledTextCtrl_CopyText, "wxStyledTextCtrl", "copyText", 3}, // 3301
+ {wxStyledTextCtrl_SetSelectionMode, "wxStyledTextCtrl", "setSelectionMode", 2}, // 3302
+ {wxStyledTextCtrl_GetSelectionMode, "wxStyledTextCtrl", "getSelectionMode", 1}, // 3303
+ {wxStyledTextCtrl_LineDownRectExtend, "wxStyledTextCtrl", "lineDownRectExtend", 1}, // 3304
+ {wxStyledTextCtrl_LineUpRectExtend, "wxStyledTextCtrl", "lineUpRectExtend", 1}, // 3305
+ {wxStyledTextCtrl_CharLeftRectExtend, "wxStyledTextCtrl", "charLeftRectExtend", 1}, // 3306
+ {wxStyledTextCtrl_CharRightRectExtend, "wxStyledTextCtrl", "charRightRectExtend", 1}, // 3307
+ {wxStyledTextCtrl_HomeRectExtend, "wxStyledTextCtrl", "homeRectExtend", 1}, // 3308
+ {wxStyledTextCtrl_VCHomeRectExtend, "wxStyledTextCtrl", "vCHomeRectExtend", 1}, // 3309
+ {wxStyledTextCtrl_LineEndRectExtend, "wxStyledTextCtrl", "lineEndRectExtend", 1}, // 3310
+ {wxStyledTextCtrl_PageUpRectExtend, "wxStyledTextCtrl", "pageUpRectExtend", 1}, // 3311
+ {wxStyledTextCtrl_PageDownRectExtend, "wxStyledTextCtrl", "pageDownRectExtend", 1}, // 3312
+ {wxStyledTextCtrl_StutteredPageUp, "wxStyledTextCtrl", "stutteredPageUp", 1}, // 3313
+ {wxStyledTextCtrl_StutteredPageUpExtend, "wxStyledTextCtrl", "stutteredPageUpExtend", 1}, // 3314
+ {wxStyledTextCtrl_StutteredPageDown, "wxStyledTextCtrl", "stutteredPageDown", 1}, // 3315
+ {wxStyledTextCtrl_StutteredPageDownExtend, "wxStyledTextCtrl", "stutteredPageDownExtend", 1}, // 3316
+ {wxStyledTextCtrl_WordLeftEnd, "wxStyledTextCtrl", "wordLeftEnd", 1}, // 3317
+ {wxStyledTextCtrl_WordLeftEndExtend, "wxStyledTextCtrl", "wordLeftEndExtend", 1}, // 3318
+ {wxStyledTextCtrl_WordRightEnd, "wxStyledTextCtrl", "wordRightEnd", 1}, // 3319
+ {wxStyledTextCtrl_WordRightEndExtend, "wxStyledTextCtrl", "wordRightEndExtend", 1}, // 3320
+ {wxStyledTextCtrl_SetWhitespaceChars, "wxStyledTextCtrl", "setWhitespaceChars", 2}, // 3321
+ {wxStyledTextCtrl_SetCharsDefault, "wxStyledTextCtrl", "setCharsDefault", 1}, // 3322
+ {wxStyledTextCtrl_AutoCompGetCurrent, "wxStyledTextCtrl", "autoCompGetCurrent", 1}, // 3323
+ {wxStyledTextCtrl_Allocate, "wxStyledTextCtrl", "allocate", 2}, // 3324
+ {wxStyledTextCtrl_FindColumn, "wxStyledTextCtrl", "findColumn", 3}, // 3325
+ {wxStyledTextCtrl_GetCaretSticky, "wxStyledTextCtrl", "getCaretSticky", 1}, // 3326
+ {wxStyledTextCtrl_SetCaretSticky, "wxStyledTextCtrl", "setCaretSticky", 2}, // 3327
+ {wxStyledTextCtrl_ToggleCaretSticky, "wxStyledTextCtrl", "toggleCaretSticky", 1}, // 3328
+ {wxStyledTextCtrl_SetPasteConvertEndings, "wxStyledTextCtrl", "setPasteConvertEndings", 2}, // 3329
+ {wxStyledTextCtrl_GetPasteConvertEndings, "wxStyledTextCtrl", "getPasteConvertEndings", 1}, // 3330
+ {wxStyledTextCtrl_SelectionDuplicate, "wxStyledTextCtrl", "selectionDuplicate", 1}, // 3331
+ {wxStyledTextCtrl_SetCaretLineBackAlpha, "wxStyledTextCtrl", "setCaretLineBackAlpha", 2}, // 3332
+ {wxStyledTextCtrl_GetCaretLineBackAlpha, "wxStyledTextCtrl", "getCaretLineBackAlpha", 1}, // 3333
+ {wxStyledTextCtrl_StartRecord, "wxStyledTextCtrl", "startRecord", 1}, // 3334
+ {wxStyledTextCtrl_StopRecord, "wxStyledTextCtrl", "stopRecord", 1}, // 3335
+ {wxStyledTextCtrl_SetLexer, "wxStyledTextCtrl", "setLexer", 2}, // 3336
+ {wxStyledTextCtrl_GetLexer, "wxStyledTextCtrl", "getLexer", 1}, // 3337
+ {wxStyledTextCtrl_Colourise, "wxStyledTextCtrl", "colourise", 3}, // 3338
+ {wxStyledTextCtrl_SetProperty, "wxStyledTextCtrl", "setProperty", 3}, // 3339
+ {wxStyledTextCtrl_SetKeyWords, "wxStyledTextCtrl", "setKeyWords", 3}, // 3340
+ {wxStyledTextCtrl_SetLexerLanguage, "wxStyledTextCtrl", "setLexerLanguage", 2}, // 3341
+ {wxStyledTextCtrl_GetProperty, "wxStyledTextCtrl", "getProperty", 2}, // 3342
+ {wxStyledTextCtrl_GetStyleBitsNeeded, "wxStyledTextCtrl", "getStyleBitsNeeded", 1}, // 3343
+ {wxStyledTextCtrl_GetCurrentLine, "wxStyledTextCtrl", "getCurrentLine", 1}, // 3344
+ {wxStyledTextCtrl_StyleSetSpec, "wxStyledTextCtrl", "styleSetSpec", 3}, // 3345
+ {wxStyledTextCtrl_StyleSetFont, "wxStyledTextCtrl", "styleSetFont", 3}, // 3346
+ {wxStyledTextCtrl_StyleSetFontAttr, "wxStyledTextCtrl", "styleSetFontAttr", 8}, // 3347
+ {wxStyledTextCtrl_StyleSetCharacterSet, "wxStyledTextCtrl", "styleSetCharacterSet", 3}, // 3348
+ {wxStyledTextCtrl_StyleSetFontEncoding, "wxStyledTextCtrl", "styleSetFontEncoding", 3}, // 3349
+ {wxStyledTextCtrl_CmdKeyExecute, "wxStyledTextCtrl", "cmdKeyExecute", 2}, // 3350
+ {wxStyledTextCtrl_SetMargins, "wxStyledTextCtrl", "setMargins", 3}, // 3351
+ {wxStyledTextCtrl_GetSelection, "wxStyledTextCtrl", "getSelection", 1}, // 3352
+ {wxStyledTextCtrl_PointFromPosition, "wxStyledTextCtrl", "pointFromPosition", 2}, // 3353
+ {wxStyledTextCtrl_ScrollToLine, "wxStyledTextCtrl", "scrollToLine", 2}, // 3354
+ {wxStyledTextCtrl_ScrollToColumn, "wxStyledTextCtrl", "scrollToColumn", 2}, // 3355
+ {wxStyledTextCtrl_SetVScrollBar, "wxStyledTextCtrl", "setVScrollBar", 2}, // 3356
+ {wxStyledTextCtrl_SetHScrollBar, "wxStyledTextCtrl", "setHScrollBar", 2}, // 3357
+ {wxStyledTextCtrl_GetLastKeydownProcessed, "wxStyledTextCtrl", "getLastKeydownProcessed", 1}, // 3358
+ {wxStyledTextCtrl_SetLastKeydownProcessed, "wxStyledTextCtrl", "setLastKeydownProcessed", 2}, // 3359
+ {wxStyledTextCtrl_SaveFile, "wxStyledTextCtrl", "saveFile", 2}, // 3360
+ {wxStyledTextCtrl_LoadFile, "wxStyledTextCtrl", "loadFile", 2}, // 3361
+ {wxStyledTextCtrl_DoDragOver, "wxStyledTextCtrl", "doDragOver", 4}, // 3362
+ {wxStyledTextCtrl_DoDropText, "wxStyledTextCtrl", "doDropText", 4}, // 3363
+ {wxStyledTextCtrl_GetUseAntiAliasing, "wxStyledTextCtrl", "getUseAntiAliasing", 1}, // 3364
+ {wxStyledTextCtrl_AddTextRaw, "wxStyledTextCtrl", "addTextRaw", 3}, // 3365
+ {wxStyledTextCtrl_InsertTextRaw, "wxStyledTextCtrl", "insertTextRaw", 3}, // 3366
+ {wxStyledTextCtrl_GetCurLineRaw, "wxStyledTextCtrl", "getCurLineRaw", 1}, // 3367
+ {wxStyledTextCtrl_GetLineRaw, "wxStyledTextCtrl", "getLineRaw", 2}, // 3368
+ {wxStyledTextCtrl_GetSelectedTextRaw, "wxStyledTextCtrl", "getSelectedTextRaw", 1}, // 3369
+ {wxStyledTextCtrl_GetTextRangeRaw, "wxStyledTextCtrl", "getTextRangeRaw", 3}, // 3370
+ {wxStyledTextCtrl_SetTextRaw, "wxStyledTextCtrl", "setTextRaw", 2}, // 3371
+ {wxStyledTextCtrl_GetTextRaw, "wxStyledTextCtrl", "getTextRaw", 1}, // 3372
+ {wxStyledTextCtrl_AppendTextRaw, "wxStyledTextCtrl", "appendTextRaw", 3}, // 3373
+ {wxArtProvider_GetBitmap, "wxArtProvider", "getBitmap", 2}, // 3374
+ {wxArtProvider_GetIcon, "wxArtProvider", "getIcon", 2}, // 3375
+ {wxTreeEvent_GetKeyCode, "wxTreeEvent", "getKeyCode", 1}, // 3376
+ {wxTreeEvent_GetItem, "wxTreeEvent", "getItem", 1}, // 3377
+ {wxTreeEvent_GetKeyEvent, "wxTreeEvent", "getKeyEvent", 1}, // 3378
+ {wxTreeEvent_GetLabel, "wxTreeEvent", "getLabel", 1}, // 3379
+ {wxTreeEvent_GetOldItem, "wxTreeEvent", "getOldItem", 1}, // 3380
+ {wxTreeEvent_GetPoint, "wxTreeEvent", "getPoint", 1}, // 3381
+ {wxTreeEvent_IsEditCancelled, "wxTreeEvent", "isEditCancelled", 1}, // 3382
+ {wxTreeEvent_SetToolTip, "wxTreeEvent", "setToolTip", 2}, // 3383
+ {wxBookCtrlEvent_GetOldSelection, "wxBookCtrlEvent", "getOldSelection", 1}, // 3384
+ {wxBookCtrlEvent_GetSelection, "wxBookCtrlEvent", "getSelection", 1}, // 3385
+ {wxBookCtrlEvent_SetOldSelection, "wxBookCtrlEvent", "setOldSelection", 2}, // 3386
+ {wxBookCtrlEvent_SetSelection, "wxBookCtrlEvent", "setSelection", 2}, // 3387
+ {wxFileDataObject_new, "wxFileDataObject", "new", 0}, // 3388
+ {wxFileDataObject_AddFile, "wxFileDataObject", "addFile", 2}, // 3389
+ {wxFileDataObject_GetFilenames, "wxFileDataObject", "getFilenames", 1}, // 3390
+ {wxFileDataObject_destroy, "wxFileDataObject", "'Destroy'", 1}, // 3391
+ {wxTextDataObject_new, "wxTextDataObject", "new", 1}, // 3392
+ {wxTextDataObject_GetTextLength, "wxTextDataObject", "getTextLength", 1}, // 3393
+ {wxTextDataObject_GetText, "wxTextDataObject", "getText", 1}, // 3394
+ {wxTextDataObject_SetText, "wxTextDataObject", "setText", 2}, // 3395
+ {wxTextDataObject_destroy, "wxTextDataObject", "'Destroy'", 1}, // 3396
+ {wxBitmapDataObject_new_1_1, "wxBitmapDataObject", "new", 1}, // 3397
+ {wxBitmapDataObject_new_1_0, "wxBitmapDataObject", "new", 1}, // 3398
+ {wxBitmapDataObject_GetBitmap, "wxBitmapDataObject", "getBitmap", 1}, // 3399
+ {wxBitmapDataObject_SetBitmap, "wxBitmapDataObject", "setBitmap", 2}, // 3400
+ {wxBitmapDataObject_destroy, "wxBitmapDataObject", "'Destroy'", 1}, // 3401
+ {wxClipboard_new, "wxClipboard", "new", 0}, // 3402
+ {NULL, "wxClipboard", "destroy", 1}, // 3403 obj destructor wxClipboard_destruct
+ {wxClipboard_AddData, "wxClipboard", "addData", 2}, // 3404
+ {wxClipboard_Clear, "wxClipboard", "clear", 1}, // 3405
+ {wxClipboard_Close, "wxClipboard", "close", 1}, // 3406
+ {wxClipboard_Flush, "wxClipboard", "flush", 1}, // 3407
+ {wxClipboard_GetData, "wxClipboard", "getData", 2}, // 3408
+ {wxClipboard_IsOpened, "wxClipboard", "isOpened", 1}, // 3409
+ {wxClipboard_Open, "wxClipboard", "open", 1}, // 3410
+ {wxClipboard_SetData, "wxClipboard", "setData", 2}, // 3411
+ {wxClipboard_UsePrimarySelection, "wxClipboard", "usePrimarySelection", 2}, // 3412
+ {wxClipboard_IsSupported, "wxClipboard", "isSupported", 2}, // 3413
+ {wxClipboard_Get, "wxClipboard", "get", 0}, // 3414
+ {wxSpinEvent_GetPosition, "wxSpinEvent", "getPosition", 1}, // 3415
+ {wxSpinEvent_SetPosition, "wxSpinEvent", "setPosition", 2}, // 3416
+ {wxSplitterWindow_new_0, "wxSplitterWindow", "new", 0}, // 3417
+ {wxSplitterWindow_new_2, "wxSplitterWindow", "new", 2}, // 3418
+ {NULL, "wxSplitterWindow", "destroy", 1}, // 3419 obj destructor wxSplitterWindow_destruct
+ {wxSplitterWindow_Create, "wxSplitterWindow", "create", 3}, // 3420
+ {wxSplitterWindow_GetMinimumPaneSize, "wxSplitterWindow", "getMinimumPaneSize", 1}, // 3421
+ {wxSplitterWindow_GetSashGravity, "wxSplitterWindow", "getSashGravity", 1}, // 3422
+ {wxSplitterWindow_GetSashPosition, "wxSplitterWindow", "getSashPosition", 1}, // 3423
+ {wxSplitterWindow_GetSplitMode, "wxSplitterWindow", "getSplitMode", 1}, // 3424
+ {wxSplitterWindow_GetWindow1, "wxSplitterWindow", "getWindow1", 1}, // 3425
+ {wxSplitterWindow_GetWindow2, "wxSplitterWindow", "getWindow2", 1}, // 3426
+ {wxSplitterWindow_Initialize, "wxSplitterWindow", "initialize", 2}, // 3427
+ {wxSplitterWindow_IsSplit, "wxSplitterWindow", "isSplit", 1}, // 3428
+ {wxSplitterWindow_ReplaceWindow, "wxSplitterWindow", "replaceWindow", 3}, // 3429
+ {wxSplitterWindow_SetSashGravity, "wxSplitterWindow", "setSashGravity", 2}, // 3430
+ {wxSplitterWindow_SetSashPosition, "wxSplitterWindow", "setSashPosition", 3}, // 3431
+ {wxSplitterWindow_SetMinimumPaneSize, "wxSplitterWindow", "setMinimumPaneSize", 2}, // 3432
+ {wxSplitterWindow_SetSplitMode, "wxSplitterWindow", "setSplitMode", 2}, // 3433
+ {wxSplitterWindow_SplitHorizontally, "wxSplitterWindow", "splitHorizontally", 4}, // 3434
+ {wxSplitterWindow_SplitVertically, "wxSplitterWindow", "splitVertically", 4}, // 3435
+ {wxSplitterWindow_Unsplit, "wxSplitterWindow", "unsplit", 2}, // 3436
+ {wxSplitterWindow_UpdateSize, "wxSplitterWindow", "updateSize", 1}, // 3437
+ {wxSplitterEvent_GetSashPosition, "wxSplitterEvent", "getSashPosition", 1}, // 3438
+ {wxSplitterEvent_GetX, "wxSplitterEvent", "getX", 1}, // 3439
+ {wxSplitterEvent_GetY, "wxSplitterEvent", "getY", 1}, // 3440
+ {wxSplitterEvent_GetWindowBeingRemoved, "wxSplitterEvent", "getWindowBeingRemoved", 1}, // 3441
+ {wxSplitterEvent_SetSashPosition, "wxSplitterEvent", "setSashPosition", 2}, // 3442
+ {wxHtmlWindow_new_0, "wxHtmlWindow", "new", 0}, // 3443
+ {wxHtmlWindow_new_2, "wxHtmlWindow", "new", 2}, // 3444
+ {wxHtmlWindow_AppendToPage, "wxHtmlWindow", "appendToPage", 2}, // 3445
+ {wxHtmlWindow_GetOpenedAnchor, "wxHtmlWindow", "getOpenedAnchor", 1}, // 3446
+ {wxHtmlWindow_GetOpenedPage, "wxHtmlWindow", "getOpenedPage", 1}, // 3447
+ {wxHtmlWindow_GetOpenedPageTitle, "wxHtmlWindow", "getOpenedPageTitle", 1}, // 3448
+ {wxHtmlWindow_GetRelatedFrame, "wxHtmlWindow", "getRelatedFrame", 1}, // 3449
+ {wxHtmlWindow_HistoryBack, "wxHtmlWindow", "historyBack", 1}, // 3450
+ {wxHtmlWindow_HistoryCanBack, "wxHtmlWindow", "historyCanBack", 1}, // 3451
+ {wxHtmlWindow_HistoryCanForward, "wxHtmlWindow", "historyCanForward", 1}, // 3452
+ {wxHtmlWindow_HistoryClear, "wxHtmlWindow", "historyClear", 1}, // 3453
+ {wxHtmlWindow_HistoryForward, "wxHtmlWindow", "historyForward", 1}, // 3454
+ {wxHtmlWindow_LoadFile, "wxHtmlWindow", "loadFile", 2}, // 3455
+ {wxHtmlWindow_LoadPage, "wxHtmlWindow", "loadPage", 2}, // 3456
+ {wxHtmlWindow_SelectAll, "wxHtmlWindow", "selectAll", 1}, // 3457
+ {wxHtmlWindow_SelectionToText, "wxHtmlWindow", "selectionToText", 1}, // 3458
+ {wxHtmlWindow_SelectLine, "wxHtmlWindow", "selectLine", 2}, // 3459
+ {wxHtmlWindow_SelectWord, "wxHtmlWindow", "selectWord", 2}, // 3460
+ {wxHtmlWindow_SetBorders, "wxHtmlWindow", "setBorders", 2}, // 3461
+ {wxHtmlWindow_SetFonts, "wxHtmlWindow", "setFonts", 4}, // 3462
+ {wxHtmlWindow_SetPage, "wxHtmlWindow", "setPage", 2}, // 3463
+ {wxHtmlWindow_SetRelatedFrame, "wxHtmlWindow", "setRelatedFrame", 3}, // 3464
+ {wxHtmlWindow_SetRelatedStatusBar_1, "wxHtmlWindow", "setRelatedStatusBar", 2}, // 3465
+ {wxHtmlWindow_SetRelatedStatusBar_2, "wxHtmlWindow", "setRelatedStatusBar", 3}, // 3466
+ {wxHtmlWindow_ToText, "wxHtmlWindow", "toText", 1}, // 3467
+ {NULL, "wxHtmlWindow", "'Destroy'", 1}, // 3468 obj destructor wxHtmlWindow_destroy
+ {wxHtmlLinkEvent_GetLinkInfo, "wxHtmlLinkEvent", "getLinkInfo", 1}, // 3469
+ {wxSystemSettings_GetColour, "wxSystemSettings", "getColour", 1}, // 3470
+ {wxSystemSettings_GetFont, "wxSystemSettings", "getFont", 1}, // 3471
+ {wxSystemSettings_GetMetric, "wxSystemSettings", "getMetric", 2}, // 3472
+ {wxSystemSettings_GetScreenType, "wxSystemSettings", "getScreenType", 0}, // 3473
+ {wxSystemOptions_GetOption, "wxSystemOptions", "getOption", 1}, // 3474
+ {wxSystemOptions_GetOptionInt, "wxSystemOptions", "getOptionInt", 1}, // 3475
+ {wxSystemOptions_HasOption, "wxSystemOptions", "hasOption", 1}, // 3476
+ {wxSystemOptions_IsFalse, "wxSystemOptions", "isFalse", 1}, // 3477
+ {wxSystemOptions_SetOption_2_1, "wxSystemOptions", "setOption", 2}, // 3478
+ {wxSystemOptions_SetOption_2_0, "wxSystemOptions", "setOption", 2}, // 3479
+ {wxAuiNotebookEvent_SetSelection, "wxAuiNotebookEvent", "setSelection", 2}, // 3480
+ {wxAuiNotebookEvent_GetSelection, "wxAuiNotebookEvent", "getSelection", 1}, // 3481
+ {wxAuiNotebookEvent_SetOldSelection, "wxAuiNotebookEvent", "setOldSelection", 2}, // 3482
+ {wxAuiNotebookEvent_GetOldSelection, "wxAuiNotebookEvent", "getOldSelection", 1}, // 3483
+ {wxAuiNotebookEvent_SetDragSource, "wxAuiNotebookEvent", "setDragSource", 2}, // 3484
+ {wxAuiNotebookEvent_GetDragSource, "wxAuiNotebookEvent", "getDragSource", 1}, // 3485
+ {wxAuiManagerEvent_SetManager, "wxAuiManagerEvent", "setManager", 2}, // 3486
+ {wxAuiManagerEvent_GetManager, "wxAuiManagerEvent", "getManager", 1}, // 3487
+ {wxAuiManagerEvent_SetPane, "wxAuiManagerEvent", "setPane", 2}, // 3488
+ {wxAuiManagerEvent_GetPane, "wxAuiManagerEvent", "getPane", 1}, // 3489
+ {wxAuiManagerEvent_SetButton, "wxAuiManagerEvent", "setButton", 2}, // 3490
+ {wxAuiManagerEvent_GetButton, "wxAuiManagerEvent", "getButton", 1}, // 3491
+ {wxAuiManagerEvent_SetDC, "wxAuiManagerEvent", "setDC", 2}, // 3492
+ {wxAuiManagerEvent_GetDC, "wxAuiManagerEvent", "getDC", 1}, // 3493
+ {wxAuiManagerEvent_Veto, "wxAuiManagerEvent", "veto", 2}, // 3494
+ {wxAuiManagerEvent_GetVeto, "wxAuiManagerEvent", "getVeto", 1}, // 3495
+ {wxAuiManagerEvent_SetCanVeto, "wxAuiManagerEvent", "setCanVeto", 2}, // 3496
+ {wxAuiManagerEvent_CanVeto, "wxAuiManagerEvent", "canVeto", 1}, // 3497
+ {wxLogNull_new, "wxLogNull", "new", 0}, // 3498
+ {wxLogNull_destruct, "wxLogNull", "destroy", 1}, // 3499
+ {wxTaskBarIcon_new, "wxTaskBarIcon", "new", 1}, // 3500
+ {NULL, "wxTaskBarIcon", "destroy", 1}, // 3501 obj destructor wxTaskBarIcon_destruct
+ {wxTaskBarIcon_PopupMenu, "wxTaskBarIcon", "popupMenu", 2}, // 3502
+ {wxTaskBarIcon_RemoveIcon, "wxTaskBarIcon", "removeIcon", 1}, // 3503
+ {wxTaskBarIcon_SetIcon, "wxTaskBarIcon", "setIcon", 3}, // 3504
+ {wxLocale_new_0, "wxLocale", "new", 0}, // 3505
+ {wxLocale_new_2_0, "wxLocale", "new", 2}, // 3506
+ {wxLocale_new_2_1, "wxLocale", "new", 2}, // 3507
+ {wxLocale_destruct, "wxLocale", "destroy", 1}, // 3508
+ {wxLocale_Init_1, "wxLocale", "init", 2}, // 3509
+ {wxLocale_Init_2, "wxLocale", "init", 3}, // 3510
+ {wxLocale_AddCatalog_1, "wxLocale", "addCatalog", 2}, // 3511
+ {wxLocale_AddCatalog_2, "wxLocale", "addCatalog", 3}, // 3512
+ {wxLocale_AddCatalog_3, "wxLocale", "addCatalog", 4}, // 3513
+ {wxLocale_AddCatalogLookupPathPrefix, "wxLocale", "addCatalogLookupPathPrefix", 1}, // 3514
+ {wxLocale_GetCanonicalName, "wxLocale", "getCanonicalName", 1}, // 3515
+ {wxLocale_GetLanguage, "wxLocale", "getLanguage", 1}, // 3516
+ {wxLocale_GetLanguageName, "wxLocale", "getLanguageName", 1}, // 3517
+ {wxLocale_GetLocale, "wxLocale", "getLocale", 1}, // 3518
+ {wxLocale_GetName, "wxLocale", "getName", 1}, // 3519
+ {wxLocale_GetString_2, "wxLocale", "getString", 3}, // 3520
+ {wxLocale_GetString_4, "wxLocale", "getString", 5}, // 3521
+ {wxLocale_GetHeaderValue, "wxLocale", "getHeaderValue", 3}, // 3522
+ {wxLocale_GetSysName, "wxLocale", "getSysName", 1}, // 3523
+ {wxLocale_GetSystemEncoding, "wxLocale", "getSystemEncoding", 0}, // 3524
+ {wxLocale_GetSystemEncodingName, "wxLocale", "getSystemEncodingName", 0}, // 3525
+ {wxLocale_GetSystemLanguage, "wxLocale", "getSystemLanguage", 0}, // 3526
+ {wxLocale_IsLoaded, "wxLocale", "isLoaded", 2}, // 3527
+ {wxLocale_IsOk, "wxLocale", "isOk", 1}, // 3528
+ {wxActivateEvent_GetActive, "wxActivateEvent", "getActive", 1}, // 3529
#if wxUSE_POPUPWIN
- {wxPopupWindow_new_0, "wxPopupWindow", "new", 0}, // 3527
+ {wxPopupWindow_new_0, "wxPopupWindow", "new", 0}, // 3530
#else
- {NULL, "wxPopupWindow", "new", 0}, // 3527
+ {NULL, "wxPopupWindow", "new", 0}, // 3530
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {wxPopupWindow_new_2, "wxPopupWindow", "new", 2}, // 3528
+ {wxPopupWindow_new_2, "wxPopupWindow", "new", 2}, // 3531
#else
- {NULL, "wxPopupWindow", "new", 0}, // 3528
+ {NULL, "wxPopupWindow", "new", 0}, // 3531
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {wxPopupWindow_Create, "wxPopupWindow", "create", 3}, // 3529
+ {wxPopupWindow_Create, "wxPopupWindow", "create", 3}, // 3532
#else
- {NULL, "wxPopupWindow", "create", 0}, // 3529
+ {NULL, "wxPopupWindow", "create", 0}, // 3532
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {wxPopupWindow_Position, "wxPopupWindow", "position", 3}, // 3530
+ {wxPopupWindow_Position, "wxPopupWindow", "position", 3}, // 3533
#else
- {NULL, "wxPopupWindow", "position", 0}, // 3530
+ {NULL, "wxPopupWindow", "position", 0}, // 3533
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {NULL, "wxPopupWindow", "'Destroy'", 1}, // 3531 obj destructor wxPopupWindow_destroy
+ {NULL, "wxPopupWindow", "'Destroy'", 1}, // 3534 obj destructor wxPopupWindow_destroy
#else
- {NULL, "wxPopupWindow", "'Destroy'", 0}, // 3531
+ {NULL, "wxPopupWindow", "'Destroy'", 0}, // 3534
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {wxPopupTransientWindow_new_0, "wxPopupTransientWindow", "new", 0}, // 3532
+ {wxPopupTransientWindow_new_0, "wxPopupTransientWindow", "new", 0}, // 3535
#else
- {NULL, "wxPopupTransientWindow", "new", 0}, // 3532
+ {NULL, "wxPopupTransientWindow", "new", 0}, // 3535
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {wxPopupTransientWindow_new_2, "wxPopupTransientWindow", "new", 2}, // 3533
+ {wxPopupTransientWindow_new_2, "wxPopupTransientWindow", "new", 2}, // 3536
#else
- {NULL, "wxPopupTransientWindow", "new", 0}, // 3533
+ {NULL, "wxPopupTransientWindow", "new", 0}, // 3536
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {wxPopupTransientWindow_Popup, "wxPopupTransientWindow", "popup", 2}, // 3534
+ {wxPopupTransientWindow_Popup, "wxPopupTransientWindow", "popup", 2}, // 3537
#else
- {NULL, "wxPopupTransientWindow", "popup", 0}, // 3534
+ {NULL, "wxPopupTransientWindow", "popup", 0}, // 3537
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {wxPopupTransientWindow_Dismiss, "wxPopupTransientWindow", "dismiss", 1}, // 3535
+ {wxPopupTransientWindow_Dismiss, "wxPopupTransientWindow", "dismiss", 1}, // 3538
#else
- {NULL, "wxPopupTransientWindow", "dismiss", 0}, // 3535
+ {NULL, "wxPopupTransientWindow", "dismiss", 0}, // 3538
#endif // wxUSE_POPUPWIN
#if wxUSE_POPUPWIN
- {NULL, "wxPopupTransientWindow", "'Destroy'", 1}, // 3536 obj destructor wxPopupTransientWindow_destroy
+ {NULL, "wxPopupTransientWindow", "'Destroy'", 1}, // 3539 obj destructor wxPopupTransientWindow_destroy
#else
- {NULL, "wxPopupTransientWindow", "'Destroy'", 0}, // 3536
+ {NULL, "wxPopupTransientWindow", "'Destroy'", 0}, // 3539
#endif // wxUSE_POPUPWIN
- {wxOverlay_new, "wxOverlay", "new", 0}, // 3537
- {wxOverlay_destruct, "wxOverlay", "destroy", 1}, // 3538
- {wxOverlay_Reset, "wxOverlay", "reset", 1}, // 3539
- {wxDCOverlay_new_6, "wxDCOverlay", "new", 6}, // 3540
- {wxDCOverlay_new_2, "wxDCOverlay", "new", 2}, // 3541
- {wxDCOverlay_destruct, "wxDCOverlay", "destroy", 1}, // 3542
- {wxDCOverlay_Clear, "wxDCOverlay", "clear", 1}, // 3543
- {wxDropFilesEvent_GetPosition, "wxDropFilesEvent", "getPosition", 1}, // 3544
- {wxDropFilesEvent_GetNumberOfFiles, "wxDropFilesEvent", "getNumberOfFiles", 1}, // 3545
- {wxDropFilesEvent_GetFiles, "wxDropFilesEvent", "getFiles", 1}, // 3546
+ {wxOverlay_new, "wxOverlay", "new", 0}, // 3540
+ {wxOverlay_destruct, "wxOverlay", "destroy", 1}, // 3541
+ {wxOverlay_Reset, "wxOverlay", "reset", 1}, // 3542
+ {wxDCOverlay_new_6, "wxDCOverlay", "new", 6}, // 3543
+ {wxDCOverlay_new_2, "wxDCOverlay", "new", 2}, // 3544
+ {wxDCOverlay_destruct, "wxDCOverlay", "destroy", 1}, // 3545
+ {wxDCOverlay_Clear, "wxDCOverlay", "clear", 1}, // 3546
+ {wxDropFilesEvent_GetPosition, "wxDropFilesEvent", "getPosition", 1}, // 3547
+ {wxDropFilesEvent_GetNumberOfFiles, "wxDropFilesEvent", "getNumberOfFiles", 1}, // 3548
+ {wxDropFilesEvent_GetFiles, "wxDropFilesEvent", "getFiles", 1}, // 3549
#if wxUSE_DISPLAY
- {wxDisplay_new_0, "wxDisplay", "new", 0}, // 3547
+ {wxDisplay_new_0, "wxDisplay", "new", 0}, // 3550
#else
- {NULL, "wxDisplay", "new", 0}, // 3547
+ {NULL, "wxDisplay", "new", 0}, // 3550
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_new_1_0, "wxDisplay", "new", 1}, // 3548
+ {wxDisplay_new_1_0, "wxDisplay", "new", 1}, // 3551
#else
- {NULL, "wxDisplay", "new", 0}, // 3548
+ {NULL, "wxDisplay", "new", 0}, // 3551
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY && wxCHECK_VERSION(3,1,3)
- {wxDisplay_new_1_1, "wxDisplay", "new", 1}, // 3549
+ {wxDisplay_new_1_1, "wxDisplay", "new", 1}, // 3552
#else
- {NULL, "wxDisplay", "new", 0}, // 3549
+ {NULL, "wxDisplay", "new", 0}, // 3552
#endif // wxUSE_DISPLAY && wxCHECK_VERSION(3,1,3)
#if wxUSE_DISPLAY
- {wxDisplay_destruct, "wxDisplay", "destroy", 1}, // 3550
+ {wxDisplay_destruct, "wxDisplay", "destroy", 1}, // 3553
#else
- {NULL, "wxDisplay", "destroy", 0}, // 3550
+ {NULL, "wxDisplay", "destroy", 0}, // 3553
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_IsOk, "wxDisplay", "isOk", 1}, // 3551
+ {wxDisplay_IsOk, "wxDisplay", "isOk", 1}, // 3554
#else
- {NULL, "wxDisplay", "isOk", 0}, // 3551
+ {NULL, "wxDisplay", "isOk", 0}, // 3554
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_GetClientArea, "wxDisplay", "getClientArea", 1}, // 3552
+ {wxDisplay_GetClientArea, "wxDisplay", "getClientArea", 1}, // 3555
#else
- {NULL, "wxDisplay", "getClientArea", 0}, // 3552
+ {NULL, "wxDisplay", "getClientArea", 0}, // 3555
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_GetGeometry, "wxDisplay", "getGeometry", 1}, // 3553
+ {wxDisplay_GetGeometry, "wxDisplay", "getGeometry", 1}, // 3556
#else
- {NULL, "wxDisplay", "getGeometry", 0}, // 3553
+ {NULL, "wxDisplay", "getGeometry", 0}, // 3556
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_GetName, "wxDisplay", "getName", 1}, // 3554
+ {wxDisplay_GetName, "wxDisplay", "getName", 1}, // 3557
#else
- {NULL, "wxDisplay", "getName", 0}, // 3554
+ {NULL, "wxDisplay", "getName", 0}, // 3557
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_IsPrimary, "wxDisplay", "isPrimary", 1}, // 3555
+ {wxDisplay_IsPrimary, "wxDisplay", "isPrimary", 1}, // 3558
#else
- {NULL, "wxDisplay", "isPrimary", 0}, // 3555
+ {NULL, "wxDisplay", "isPrimary", 0}, // 3558
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_GetCount, "wxDisplay", "getCount", 0}, // 3556
+ {wxDisplay_GetCount, "wxDisplay", "getCount", 0}, // 3559
#else
- {NULL, "wxDisplay", "getCount", 0}, // 3556
+ {NULL, "wxDisplay", "getCount", 0}, // 3559
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_GetFromPoint, "wxDisplay", "getFromPoint", 1}, // 3557
+ {wxDisplay_GetFromPoint, "wxDisplay", "getFromPoint", 1}, // 3560
#else
- {NULL, "wxDisplay", "getFromPoint", 0}, // 3557
+ {NULL, "wxDisplay", "getFromPoint", 0}, // 3560
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY
- {wxDisplay_GetFromWindow, "wxDisplay", "getFromWindow", 1}, // 3558
+ {wxDisplay_GetFromWindow, "wxDisplay", "getFromWindow", 1}, // 3561
#else
- {NULL, "wxDisplay", "getFromWindow", 0}, // 3558
+ {NULL, "wxDisplay", "getFromWindow", 0}, // 3561
#endif // wxUSE_DISPLAY
#if wxUSE_DISPLAY && wxCHECK_VERSION(3,1,2)
- {wxDisplay_GetPPI, "wxDisplay", "getPPI", 1}, // 3559
+ {wxDisplay_GetPPI, "wxDisplay", "getPPI", 1}, // 3562
#else
- {NULL, "wxDisplay", "getPPI", 0}, // 3559
+ {NULL, "wxDisplay", "getPPI", 0}, // 3562
#endif // wxUSE_DISPLAY && wxCHECK_VERSION(3,1,2)
#if wxUSE_GRAPHICS_CONTEXT
- {wxGCDC_new_1, "wxGCDC", "new", 1}, // 3560
+ {wxGCDC_new_1, "wxGCDC", "new", 1}, // 3563
#else
- {NULL, "wxGCDC", "new", 0}, // 3560
+ {NULL, "wxGCDC", "new", 0}, // 3563
#endif // wxUSE_GRAPHICS_CONTEXT
- {NULL, "", "", 0}, // 3561
- {NULL, "", "", 0}, // 3562
+ {NULL, "", "", 0}, // 3564
+ {NULL, "", "", 0}, // 3565
#if wxUSE_GRAPHICS_CONTEXT
- {wxGCDC_new_0, "wxGCDC", "new", 0}, // 3563
+ {wxGCDC_new_0, "wxGCDC", "new", 0}, // 3566
#else
- {NULL, "wxGCDC", "new", 0}, // 3563
+ {NULL, "wxGCDC", "new", 0}, // 3566
#endif // wxUSE_GRAPHICS_CONTEXT
#if wxUSE_GRAPHICS_CONTEXT
- {NULL, "wxGCDC", "destroy", 1}, // 3564 obj destructor wxGCDC_destruct
+ {NULL, "wxGCDC", "destroy", 1}, // 3567 obj destructor wxGCDC_destruct
#else
- {NULL, "wxGCDC", "destroy", 0}, // 3564
+ {NULL, "wxGCDC", "destroy", 0}, // 3567
#endif // wxUSE_GRAPHICS_CONTEXT
#if wxUSE_GRAPHICS_CONTEXT
- {wxGCDC_GetGraphicsContext, "wxGCDC", "getGraphicsContext", 1}, // 3565
+ {wxGCDC_GetGraphicsContext, "wxGCDC", "getGraphicsContext", 1}, // 3568
#else
- {NULL, "wxGCDC", "getGraphicsContext", 0}, // 3565
+ {NULL, "wxGCDC", "getGraphicsContext", 0}, // 3568
#endif // wxUSE_GRAPHICS_CONTEXT
#if wxUSE_GRAPHICS_CONTEXT
- {wxGCDC_SetGraphicsContext, "wxGCDC", "setGraphicsContext", 2}, // 3566
+ {wxGCDC_SetGraphicsContext, "wxGCDC", "setGraphicsContext", 2}, // 3569
#else
- {NULL, "wxGCDC", "setGraphicsContext", 0}, // 3566
+ {NULL, "wxGCDC", "setGraphicsContext", 0}, // 3569
#endif // wxUSE_GRAPHICS_CONTEXT
- {wxNotificationMessage_new_0, "wxNotificationMessage", "new", 0}, // 3567
- {wxNotificationMessage_new_2, "wxNotificationMessage", "new", 2}, // 3568
- {NULL, "wxNotificationMessage", "destroy", 1}, // 3569 obj destructor wxNotificationMessage_destruct
+ {wxNotificationMessage_new_0, "wxNotificationMessage", "new", 0}, // 3570
+ {wxNotificationMessage_new_2, "wxNotificationMessage", "new", 2}, // 3571
+ {NULL, "wxNotificationMessage", "destroy", 1}, // 3572 obj destructor wxNotificationMessage_destruct
#if wxCHECK_VERSION(3,1,0)
- {wxNotificationMessage_AddAction, "wxNotificationMessage", "addAction", 3}, // 3570
+ {wxNotificationMessage_AddAction, "wxNotificationMessage", "addAction", 3}, // 3573
#else
- {NULL, "wxNotificationMessage", "addAction", 0}, // 3570
+ {NULL, "wxNotificationMessage", "addAction", 0}, // 3573
#endif // wxCHECK_VERSION(3,1,0)
- {wxNotificationMessage_Close, "wxNotificationMessage", "close", 1}, // 3571
- {wxNotificationMessage_SetFlags, "wxNotificationMessage", "setFlags", 2}, // 3572
+ {wxNotificationMessage_Close, "wxNotificationMessage", "close", 1}, // 3574
+ {wxNotificationMessage_SetFlags, "wxNotificationMessage", "setFlags", 2}, // 3575
#if wxCHECK_VERSION(3,1,0)
- {wxNotificationMessage_SetIcon, "wxNotificationMessage", "setIcon", 2}, // 3573
+ {wxNotificationMessage_SetIcon, "wxNotificationMessage", "setIcon", 2}, // 3576
#else
- {NULL, "wxNotificationMessage", "setIcon", 0}, // 3573
+ {NULL, "wxNotificationMessage", "setIcon", 0}, // 3576
#endif // wxCHECK_VERSION(3,1,0)
- {wxNotificationMessage_SetMessage, "wxNotificationMessage", "setMessage", 2}, // 3574
- {wxNotificationMessage_SetParent, "wxNotificationMessage", "setParent", 2}, // 3575
- {wxNotificationMessage_SetTitle, "wxNotificationMessage", "setTitle", 2}, // 3576
- {wxNotificationMessage_Show, "wxNotificationMessage", "show", 2}, // 3577
+ {wxNotificationMessage_SetMessage, "wxNotificationMessage", "setMessage", 2}, // 3577
+ {wxNotificationMessage_SetParent, "wxNotificationMessage", "setParent", 2}, // 3578
+ {wxNotificationMessage_SetTitle, "wxNotificationMessage", "setTitle", 2}, // 3579
+ {wxNotificationMessage_Show, "wxNotificationMessage", "show", 2}, // 3580
#if __WXMSW__
- {wxNotificationMessage_UseTaskBarIcon, "wxNotificationMessage", "useTaskBarIcon", 1}, // 3578
+ {wxNotificationMessage_UseTaskBarIcon, "wxNotificationMessage", "useTaskBarIcon", 1}, // 3581
#else
- {NULL, "wxNotificationMessage", "useTaskBarIcon", 0}, // 3578
+ {NULL, "wxNotificationMessage", "useTaskBarIcon", 0}, // 3581
#endif // __WXMSW__
#if __WXMSW__ && wxCHECK_VERSION(3,1,0)
- {wxNotificationMessage_MSWUseToasts, "wxNotificationMessage", "mSWUseToasts", 1}, // 3579
+ {wxNotificationMessage_MSWUseToasts, "wxNotificationMessage", "mSWUseToasts", 1}, // 3582
#else
- {NULL, "wxNotificationMessage", "mSWUseToasts", 0}, // 3579
+ {NULL, "wxNotificationMessage", "mSWUseToasts", 0}, // 3582
#endif // __WXMSW__ && wxCHECK_VERSION(3,1,0)
- {NULL, "", "", 0}, // 3580
+ {NULL, "", "", 0}, // 3583
#if WXE_WEBVIEW
- {wxWebView_New, "wxWebView", "new", 3}, // 3581
+ {wxWebView_New, "wxWebView", "new", 3}, // 3584
#else
- {NULL, "wxWebView", "new", 0}, // 3581
+ {NULL, "wxWebView", "new", 0}, // 3584
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GetCurrentTitle, "wxWebView", "getCurrentTitle", 1}, // 3582
+ {wxWebView_GetCurrentTitle, "wxWebView", "getCurrentTitle", 1}, // 3585
#else
- {NULL, "wxWebView", "getCurrentTitle", 0}, // 3582
+ {NULL, "wxWebView", "getCurrentTitle", 0}, // 3585
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GetCurrentURL, "wxWebView", "getCurrentURL", 1}, // 3583
+ {wxWebView_GetCurrentURL, "wxWebView", "getCurrentURL", 1}, // 3586
#else
- {NULL, "wxWebView", "getCurrentURL", 0}, // 3583
+ {NULL, "wxWebView", "getCurrentURL", 0}, // 3586
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GetPageSource, "wxWebView", "getPageSource", 1}, // 3584
+ {wxWebView_GetPageSource, "wxWebView", "getPageSource", 1}, // 3587
#else
- {NULL, "wxWebView", "getPageSource", 0}, // 3584
+ {NULL, "wxWebView", "getPageSource", 0}, // 3587
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GetPageText, "wxWebView", "getPageText", 1}, // 3585
+ {wxWebView_GetPageText, "wxWebView", "getPageText", 1}, // 3588
#else
- {NULL, "wxWebView", "getPageText", 0}, // 3585
+ {NULL, "wxWebView", "getPageText", 0}, // 3588
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_IsBusy, "wxWebView", "isBusy", 1}, // 3586
+ {wxWebView_IsBusy, "wxWebView", "isBusy", 1}, // 3589
#else
- {NULL, "wxWebView", "isBusy", 0}, // 3586
+ {NULL, "wxWebView", "isBusy", 0}, // 3589
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_IsEditable, "wxWebView", "isEditable", 1}, // 3587
+ {wxWebView_IsEditable, "wxWebView", "isEditable", 1}, // 3590
#else
- {NULL, "wxWebView", "isEditable", 0}, // 3587
+ {NULL, "wxWebView", "isEditable", 0}, // 3590
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_LoadURL, "wxWebView", "loadURL", 2}, // 3588
+ {wxWebView_LoadURL, "wxWebView", "loadURL", 2}, // 3591
#else
- {NULL, "wxWebView", "loadURL", 0}, // 3588
+ {NULL, "wxWebView", "loadURL", 0}, // 3591
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Print, "wxWebView", "print", 1}, // 3589
+ {wxWebView_Print, "wxWebView", "print", 1}, // 3592
#else
- {NULL, "wxWebView", "print", 0}, // 3589
+ {NULL, "wxWebView", "print", 0}, // 3592
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Reload, "wxWebView", "reload", 2}, // 3590
+ {wxWebView_Reload, "wxWebView", "reload", 2}, // 3593
#else
- {NULL, "wxWebView", "reload", 0}, // 3590
+ {NULL, "wxWebView", "reload", 0}, // 3593
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW && wxCHECK_VERSION(3,1,1)
- {wxWebView_RunScript, "wxWebView", "runScript", 2}, // 3591
+ {wxWebView_RunScript, "wxWebView", "runScript", 2}, // 3594
#else
- {NULL, "wxWebView", "runScript", 0}, // 3591
+ {NULL, "wxWebView", "runScript", 0}, // 3594
#endif // WXE_WEBVIEW && wxCHECK_VERSION(3,1,1)
#if WXE_WEBVIEW
- {wxWebView_SetEditable, "wxWebView", "setEditable", 2}, // 3592
+ {wxWebView_SetEditable, "wxWebView", "setEditable", 2}, // 3595
#else
- {NULL, "wxWebView", "setEditable", 0}, // 3592
+ {NULL, "wxWebView", "setEditable", 0}, // 3595
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_SetPage, "wxWebView", "setPage", 3}, // 3593
+ {wxWebView_SetPage, "wxWebView", "setPage", 3}, // 3596
#else
- {NULL, "wxWebView", "setPage", 0}, // 3593
+ {NULL, "wxWebView", "setPage", 0}, // 3596
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Stop, "wxWebView", "stop", 1}, // 3594
+ {wxWebView_Stop, "wxWebView", "stop", 1}, // 3597
#else
- {NULL, "wxWebView", "stop", 0}, // 3594
+ {NULL, "wxWebView", "stop", 0}, // 3597
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_CanCopy, "wxWebView", "canCopy", 1}, // 3595
+ {wxWebView_CanCopy, "wxWebView", "canCopy", 1}, // 3598
#else
- {NULL, "wxWebView", "canCopy", 0}, // 3595
+ {NULL, "wxWebView", "canCopy", 0}, // 3598
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_CanCut, "wxWebView", "canCut", 1}, // 3596
+ {wxWebView_CanCut, "wxWebView", "canCut", 1}, // 3599
#else
- {NULL, "wxWebView", "canCut", 0}, // 3596
+ {NULL, "wxWebView", "canCut", 0}, // 3599
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_CanPaste, "wxWebView", "canPaste", 1}, // 3597
+ {wxWebView_CanPaste, "wxWebView", "canPaste", 1}, // 3600
#else
- {NULL, "wxWebView", "canPaste", 0}, // 3597
+ {NULL, "wxWebView", "canPaste", 0}, // 3600
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Copy, "wxWebView", "copy", 1}, // 3598
+ {wxWebView_Copy, "wxWebView", "copy", 1}, // 3601
#else
- {NULL, "wxWebView", "copy", 0}, // 3598
+ {NULL, "wxWebView", "copy", 0}, // 3601
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Cut, "wxWebView", "cut", 1}, // 3599
+ {wxWebView_Cut, "wxWebView", "cut", 1}, // 3602
#else
- {NULL, "wxWebView", "cut", 0}, // 3599
+ {NULL, "wxWebView", "cut", 0}, // 3602
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Paste, "wxWebView", "paste", 1}, // 3600
+ {wxWebView_Paste, "wxWebView", "paste", 1}, // 3603
#else
- {NULL, "wxWebView", "paste", 0}, // 3600
+ {NULL, "wxWebView", "paste", 0}, // 3603
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_EnableContextMenu, "wxWebView", "enableContextMenu", 2}, // 3601
+ {wxWebView_EnableContextMenu, "wxWebView", "enableContextMenu", 2}, // 3604
#else
- {NULL, "wxWebView", "enableContextMenu", 0}, // 3601
+ {NULL, "wxWebView", "enableContextMenu", 0}, // 3604
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_IsContextMenuEnabled, "wxWebView", "isContextMenuEnabled", 1}, // 3602
+ {wxWebView_IsContextMenuEnabled, "wxWebView", "isContextMenuEnabled", 1}, // 3605
#else
- {NULL, "wxWebView", "isContextMenuEnabled", 0}, // 3602
+ {NULL, "wxWebView", "isContextMenuEnabled", 0}, // 3605
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_CanGoBack, "wxWebView", "canGoBack", 1}, // 3603
+ {wxWebView_CanGoBack, "wxWebView", "canGoBack", 1}, // 3606
#else
- {NULL, "wxWebView", "canGoBack", 0}, // 3603
+ {NULL, "wxWebView", "canGoBack", 0}, // 3606
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_CanGoForward, "wxWebView", "canGoForward", 1}, // 3604
+ {wxWebView_CanGoForward, "wxWebView", "canGoForward", 1}, // 3607
#else
- {NULL, "wxWebView", "canGoForward", 0}, // 3604
+ {NULL, "wxWebView", "canGoForward", 0}, // 3607
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_ClearHistory, "wxWebView", "clearHistory", 1}, // 3605
+ {wxWebView_ClearHistory, "wxWebView", "clearHistory", 1}, // 3608
#else
- {NULL, "wxWebView", "clearHistory", 0}, // 3605
+ {NULL, "wxWebView", "clearHistory", 0}, // 3608
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_EnableHistory, "wxWebView", "enableHistory", 2}, // 3606
+ {wxWebView_EnableHistory, "wxWebView", "enableHistory", 2}, // 3609
#else
- {NULL, "wxWebView", "enableHistory", 0}, // 3606
+ {NULL, "wxWebView", "enableHistory", 0}, // 3609
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GoBack, "wxWebView", "goBack", 1}, // 3607
+ {wxWebView_GoBack, "wxWebView", "goBack", 1}, // 3610
#else
- {NULL, "wxWebView", "goBack", 0}, // 3607
+ {NULL, "wxWebView", "goBack", 0}, // 3610
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GoForward, "wxWebView", "goForward", 1}, // 3608
+ {wxWebView_GoForward, "wxWebView", "goForward", 1}, // 3611
#else
- {NULL, "wxWebView", "goForward", 0}, // 3608
+ {NULL, "wxWebView", "goForward", 0}, // 3611
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_ClearSelection, "wxWebView", "clearSelection", 1}, // 3609
+ {wxWebView_ClearSelection, "wxWebView", "clearSelection", 1}, // 3612
#else
- {NULL, "wxWebView", "clearSelection", 0}, // 3609
+ {NULL, "wxWebView", "clearSelection", 0}, // 3612
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_DeleteSelection, "wxWebView", "deleteSelection", 1}, // 3610
+ {wxWebView_DeleteSelection, "wxWebView", "deleteSelection", 1}, // 3613
#else
- {NULL, "wxWebView", "deleteSelection", 0}, // 3610
+ {NULL, "wxWebView", "deleteSelection", 0}, // 3613
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GetSelectedSource, "wxWebView", "getSelectedSource", 1}, // 3611
+ {wxWebView_GetSelectedSource, "wxWebView", "getSelectedSource", 1}, // 3614
#else
- {NULL, "wxWebView", "getSelectedSource", 0}, // 3611
+ {NULL, "wxWebView", "getSelectedSource", 0}, // 3614
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GetSelectedText, "wxWebView", "getSelectedText", 1}, // 3612
+ {wxWebView_GetSelectedText, "wxWebView", "getSelectedText", 1}, // 3615
#else
- {NULL, "wxWebView", "getSelectedText", 0}, // 3612
+ {NULL, "wxWebView", "getSelectedText", 0}, // 3615
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_HasSelection, "wxWebView", "hasSelection", 1}, // 3613
+ {wxWebView_HasSelection, "wxWebView", "hasSelection", 1}, // 3616
#else
- {NULL, "wxWebView", "hasSelection", 0}, // 3613
+ {NULL, "wxWebView", "hasSelection", 0}, // 3616
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_SelectAll, "wxWebView", "selectAll", 1}, // 3614
+ {wxWebView_SelectAll, "wxWebView", "selectAll", 1}, // 3617
#else
- {NULL, "wxWebView", "selectAll", 0}, // 3614
+ {NULL, "wxWebView", "selectAll", 0}, // 3617
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_CanRedo, "wxWebView", "canRedo", 1}, // 3615
+ {wxWebView_CanRedo, "wxWebView", "canRedo", 1}, // 3618
#else
- {NULL, "wxWebView", "canRedo", 0}, // 3615
+ {NULL, "wxWebView", "canRedo", 0}, // 3618
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_CanUndo, "wxWebView", "canUndo", 1}, // 3616
+ {wxWebView_CanUndo, "wxWebView", "canUndo", 1}, // 3619
#else
- {NULL, "wxWebView", "canUndo", 0}, // 3616
+ {NULL, "wxWebView", "canUndo", 0}, // 3619
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Redo, "wxWebView", "redo", 1}, // 3617
+ {wxWebView_Redo, "wxWebView", "redo", 1}, // 3620
#else
- {NULL, "wxWebView", "redo", 0}, // 3617
+ {NULL, "wxWebView", "redo", 0}, // 3620
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Undo, "wxWebView", "undo", 1}, // 3618
+ {wxWebView_Undo, "wxWebView", "undo", 1}, // 3621
#else
- {NULL, "wxWebView", "undo", 0}, // 3618
+ {NULL, "wxWebView", "undo", 0}, // 3621
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_Find, "wxWebView", "find", 3}, // 3619
+ {wxWebView_Find, "wxWebView", "find", 3}, // 3622
#else
- {NULL, "wxWebView", "find", 0}, // 3619
+ {NULL, "wxWebView", "find", 0}, // 3622
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_CanSetZoomType, "wxWebView", "canSetZoomType", 2}, // 3620
+ {wxWebView_CanSetZoomType, "wxWebView", "canSetZoomType", 2}, // 3623
#else
- {NULL, "wxWebView", "canSetZoomType", 0}, // 3620
+ {NULL, "wxWebView", "canSetZoomType", 0}, // 3623
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GetZoom, "wxWebView", "getZoom", 1}, // 3621
+ {wxWebView_GetZoom, "wxWebView", "getZoom", 1}, // 3624
#else
- {NULL, "wxWebView", "getZoom", 0}, // 3621
+ {NULL, "wxWebView", "getZoom", 0}, // 3624
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_GetZoomType, "wxWebView", "getZoomType", 1}, // 3622
+ {wxWebView_GetZoomType, "wxWebView", "getZoomType", 1}, // 3625
#else
- {NULL, "wxWebView", "getZoomType", 0}, // 3622
+ {NULL, "wxWebView", "getZoomType", 0}, // 3625
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_SetZoom, "wxWebView", "setZoom", 2}, // 3623
+ {wxWebView_SetZoom, "wxWebView", "setZoom", 2}, // 3626
#else
- {NULL, "wxWebView", "setZoom", 0}, // 3623
+ {NULL, "wxWebView", "setZoom", 0}, // 3626
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebView_SetZoomType, "wxWebView", "setZoomType", 2}, // 3624
+ {wxWebView_SetZoomType, "wxWebView", "setZoomType", 2}, // 3627
#else
- {NULL, "wxWebView", "setZoomType", 0}, // 3624
+ {NULL, "wxWebView", "setZoomType", 0}, // 3627
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW && wxCHECK_VERSION(3,1,4)
- {wxWebView_GetZoomFactor, "wxWebView", "getZoomFactor", 1}, // 3625
+ {wxWebView_GetZoomFactor, "wxWebView", "getZoomFactor", 1}, // 3628
#else
- {NULL, "wxWebView", "getZoomFactor", 0}, // 3625
+ {NULL, "wxWebView", "getZoomFactor", 0}, // 3628
#endif // WXE_WEBVIEW && wxCHECK_VERSION(3,1,4)
#if WXE_WEBVIEW && wxCHECK_VERSION(3,1,4)
- {wxWebView_SetZoomFactor, "wxWebView", "setZoomFactor", 2}, // 3626
+ {wxWebView_SetZoomFactor, "wxWebView", "setZoomFactor", 2}, // 3629
#else
- {NULL, "wxWebView", "setZoomFactor", 0}, // 3626
+ {NULL, "wxWebView", "setZoomFactor", 0}, // 3629
#endif // WXE_WEBVIEW && wxCHECK_VERSION(3,1,4)
#if WXE_WEBVIEW && wxCHECK_VERSION(3,1,4)
- {wxWebView_IsBackendAvailable, "wxWebView", "isBackendAvailable", 1}, // 3627
+ {wxWebView_IsBackendAvailable, "wxWebView", "isBackendAvailable", 1}, // 3630
#else
- {NULL, "wxWebView", "isBackendAvailable", 0}, // 3627
+ {NULL, "wxWebView", "isBackendAvailable", 0}, // 3630
#endif // WXE_WEBVIEW && wxCHECK_VERSION(3,1,4)
#if WXE_WEBVIEW
- {wxWebViewEvent_GetString, "wxWebViewEvent", "getString", 1}, // 3628
+ {wxWebViewEvent_GetString, "wxWebViewEvent", "getString", 1}, // 3631
#else
- {NULL, "wxWebViewEvent", "getString", 0}, // 3628
+ {NULL, "wxWebViewEvent", "getString", 0}, // 3631
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebViewEvent_GetInt, "wxWebViewEvent", "getInt", 1}, // 3629
+ {wxWebViewEvent_GetInt, "wxWebViewEvent", "getInt", 1}, // 3632
#else
- {NULL, "wxWebViewEvent", "getInt", 0}, // 3629
+ {NULL, "wxWebViewEvent", "getInt", 0}, // 3632
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebViewEvent_GetTarget, "wxWebViewEvent", "getTarget", 1}, // 3630
+ {wxWebViewEvent_GetTarget, "wxWebViewEvent", "getTarget", 1}, // 3633
#else
- {NULL, "wxWebViewEvent", "getTarget", 0}, // 3630
+ {NULL, "wxWebViewEvent", "getTarget", 0}, // 3633
#endif // WXE_WEBVIEW
#if WXE_WEBVIEW
- {wxWebViewEvent_GetURL, "wxWebViewEvent", "getURL", 1}, // 3631
+ {wxWebViewEvent_GetURL, "wxWebViewEvent", "getURL", 1}, // 3634
#else
- {NULL, "wxWebViewEvent", "getURL", 0}, // 3631
+ {NULL, "wxWebViewEvent", "getURL", 0}, // 3634
#endif // WXE_WEBVIEW
};
diff --git a/lib/wx/c_src/gen/wxe_init.cpp b/lib/wx/c_src/gen/wxe_init.cpp
index 4153f1e2b9..d29e8cb19a 100644
--- a/lib/wx/c_src/gen/wxe_init.cpp
+++ b/lib/wx/c_src/gen/wxe_init.cpp
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -5895,17 +5895,17 @@ void WxeApp::init_consts(wxeMetaCommand& event) {
#else
{ enif_make_atom(rt.env,"wxKeyCode"), "wxk_MEDIA_PLAY_PAUSE", WXE_ATOM_undefined },
#endif
-#if wxCHECK_VERSION(3,1,0)
+#if wxCHECK_VERSION(3,2,0)
{ enif_make_atom(rt.env,"wxKeyCode"), "wxk_LAUNCH_MAIL", rt.make_int(WXK_LAUNCH_MAIL) },
#else
{ enif_make_atom(rt.env,"wxKeyCode"), "wxk_LAUNCH_MAIL", WXE_ATOM_undefined },
#endif
-#if wxCHECK_VERSION(3,1,0)
+#if wxCHECK_VERSION(3,2,0)
{ enif_make_atom(rt.env,"wxKeyCode"), "wxk_LAUNCH_APP1", rt.make_int(WXK_LAUNCH_APP1) },
#else
{ enif_make_atom(rt.env,"wxKeyCode"), "wxk_LAUNCH_APP1", WXE_ATOM_undefined },
#endif
-#if wxCHECK_VERSION(3,1,0)
+#if wxCHECK_VERSION(3,2,0)
{ enif_make_atom(rt.env,"wxKeyCode"), "wxk_LAUNCH_APP2", rt.make_int(WXK_LAUNCH_APP2) },
#else
{ enif_make_atom(rt.env,"wxKeyCode"), "wxk_LAUNCH_APP2", WXE_ATOM_undefined },
diff --git a/lib/wx/c_src/gen/wxe_macros.h b/lib/wx/c_src/gen/wxe_macros.h
index d8e8a0f7ea..0d514a1709 100644
--- a/lib/wx/c_src/gen/wxe_macros.h
+++ b/lib/wx/c_src/gen/wxe_macros.h
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2021. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -73,6 +73,9 @@
#if wxUSE_WEBVIEW && wxUSE_WEBVIEW_IE
#include <wx/msw/webview_ie.h>
#endif
+#if wxUSE_GLCANVAS_EGL && !wxCHECK_VERSION(3,2,3)
+#include <EGL/egl.h>
+#endif
#ifndef wxICON_DEFAULT_BITMAP_TYPE
diff --git a/lib/wx/c_src/gen/wxe_wrapper_3.cpp b/lib/wx/c_src/gen/wxe_wrapper_3.cpp
index e2e063fd31..4f6fe807a5 100644
--- a/lib/wx/c_src/gen/wxe_wrapper_3.cpp
+++ b/lib/wx/c_src/gen/wxe_wrapper_3.cpp
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2021. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -2620,6 +2620,51 @@ void wxGLCanvas_SetCurrent(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
}
+#if wxUSE_GLCANVAS_EGL
+// wxGLCanvas::CreateSurface
+void wxGLCanvas_CreateSurface(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
+{
+ ErlNifEnv *env = Ecmd.env;
+ ERL_NIF_TERM * argv = Ecmd.args;
+ wxGLCanvas *This;
+ This = (wxGLCanvas *) memenv->getPtr(env, argv[0], "This");
+
+#if !wxCHECK_VERSION(3,2,3)
+ if(!This) throw wxe_badarg(0);
+ if(This->GetEGLSurface() != EGL_NO_SURFACE)
+ eglDestroySurface(This->GetEGLDisplay(), This->GetEGLSurface());
+#endif
+;
+ if(!This) throw wxe_badarg("This");
+ bool Result = This->CreateSurface();
+ wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
+ rt.send( rt.make_bool(Result));
+
+}
+
+#endif
+// wxGLCanvas::IsDisplaySupported
+void wxGLCanvas_IsDisplaySupported(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
+{
+ ErlNifEnv *env = Ecmd.env;
+ ERL_NIF_TERM * argv = Ecmd.args;
+ int attribList_tmp;
+ unsigned int attribListLen;
+ ERL_NIF_TERM attribListHead, attribListTail;
+ if(!enif_get_list_length(env, argv[0], &attribListLen)) Badarg("attribList");
+ std::vector <int> attribList;
+ attribListTail = argv[0];
+ while(!enif_is_empty_list(env, attribListTail)) {
+ if(!enif_get_list_cell(env, attribListTail, &attribListHead, &attribListTail)) Badarg("attribList");
+ if(!enif_get_int(env, attribListHead, &attribList_tmp)) Badarg("attribList");
+ attribList.push_back( (int) attribList_tmp);
+ };
+ bool Result = wxGLCanvas::IsDisplaySupported(attribList.data());
+ wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
+ rt.send( rt.make_bool(Result));
+
+}
+
// wxGLCanvas::SwapBuffers
void wxGLCanvas_SwapBuffers(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
{
@@ -2680,6 +2725,22 @@ void wxGLContext_SetCurrent(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
}
+#if wxCHECK_VERSION(3,1,0)
+// wxGLContext::IsOK
+void wxGLContext_IsOK(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
+{
+ ErlNifEnv *env = Ecmd.env;
+ ERL_NIF_TERM * argv = Ecmd.args;
+ wxGLContext *This;
+ This = (wxGLContext *) memenv->getPtr(env, argv[0], "This");
+ if(!This) throw wxe_badarg("This");
+ bool Result = This->IsOK();
+ wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
+ rt.send( rt.make_bool(Result));
+
+}
+
+#endif
#endif // wxUSE_GLCANVAS
// wxGauge::wxGauge
void wxGauge_new_0(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
diff --git a/lib/wx/c_src/wxe_gl.cpp b/lib/wx/c_src/wxe_gl.cpp
index 46c4cc7679..e2327cfb54 100644
--- a/lib/wx/c_src/wxe_gl.cpp
+++ b/lib/wx/c_src/wxe_gl.cpp
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -44,16 +44,25 @@ int egl_initiated = 0;
wxeGLC glc;
typedef void * (*WXE_GL_LOOKUP) (int);
-WXE_GL_LOOKUP wxe_gl_lookup_func = NULL;
+void * wxe_not_loaded(int x);
+WXE_GL_LOOKUP wxe_gl_lookup_func = (WXE_GL_LOOKUP) wxe_not_loaded;
typedef void * (*WXE_GL_FUNC) (ErlNifEnv*, ErlNifPid*, const ERL_NIF_TERM argv[]);
+typedef const char * (*WXE_GL_FUNC_NAME) (int);
+WXE_GL_FUNC_NAME wxe_gl_lookup_func_name;
+
extern "C" {
-void wxe_initOpenGL(void * fptr) {
+void wxe_initOpenGL(void * fptr, void *name_fptr) {
wxe_gl_lookup_func = (WXE_GL_LOOKUP) fptr;
+ wxe_gl_lookup_func_name = (WXE_GL_FUNC_NAME) name_fptr;
enif_set_pid_undefined(&gl_active_pid);
}
}
+void * wxe_not_loaded(int x) {
+ return NULL;
+}
+
ErlNifUInt64 wxe_make_hash(ErlNifEnv *env, ErlNifPid *pid)
{
ERL_NIF_TERM term = enif_make_pid(env, pid);
@@ -113,9 +122,23 @@ void no_context(wxeCommand *event) {
enif_clear_env(event->env);
}
-void gl_dispatch(wxeCommand *event) {
+void gl_print_cmd(wxeCommand *event)
+{
+ int i;
+ const char *func = wxe_gl_lookup_func_name(event->op);
+ enif_fprintf(stderr, " %T %d %s(", event->caller, event->op, func);
+ for(i=0; i < event->argc; i++) {
+ wx_print_term(event->env, event->args[i]);
+ if(i < event->argc - 1)
+ enif_fprintf(stderr, ", ");
+ }
+ enif_fprintf(stderr, ")\r\n");
+}
+
+void gl_dispatch(wxeCommand *event)
+{
WXE_GL_FUNC fptr;
- if(egl_initiated) {
+ if((fptr = (WXE_GL_FUNC) wxe_gl_lookup_func(event->op))) {
if(enif_compare_pids(&(event->caller),&gl_active_pid) != 0) {
ErlNifUInt64 caller_index = wxe_make_hash(event->env, &(event->caller));
wxe_glc * current = glc[caller_index];
@@ -131,12 +154,10 @@ void gl_dispatch(wxeCommand *event) {
return;
}
}
- } else {
- no_context(event);
- return;
- }
- if((fptr = (WXE_GL_FUNC) wxe_gl_lookup_func(event->op))) {
// enif_fprintf(stderr, "GL: caller %T gl_active %T %d\r\n", event->caller, gl_active_pid, event->op);
+ if(wxe_debug) {
+ gl_print_cmd(event);
+ }
fptr(event->env, &event->caller, event->args);
} else {
enif_send(NULL, &event->caller, event->env,
diff --git a/lib/wx/c_src/wxe_gl.h b/lib/wx/c_src/wxe_gl.h
index 6c57e1b645..12aea9bb8c 100644
--- a/lib/wx/c_src/wxe_gl.h
+++ b/lib/wx/c_src/wxe_gl.h
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2021. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -27,7 +27,7 @@ void setActiveGL(wxeMemEnv *memenv, ErlNifPid caller, wxGLCanvas *canvas, wxGLCo
void deleteActiveGL(wxGLCanvas *canvas);
void gl_dispatch(wxeCommand *);
extern "C" {
- void wxe_initOpenGL(void * fptr);
+ void wxe_initOpenGL(void * fptr, void *name_fptr);
}
diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp
index a32e09db01..5ea1371524 100644
--- a/lib/wx/c_src/wxe_impl.cpp
+++ b/lib/wx/c_src/wxe_impl.cpp
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -113,27 +113,46 @@ void meta_command(ErlNifEnv *env, int what, wxe_me_ref *mp) {
void send_msg(const char * type, const wxString * msg) {
WxeApp * app = (WxeApp *) wxTheApp;
wxeReturn rt = wxeReturn(app->global_me, init_caller);
+ ErlNifEnv *env = enif_alloc_env();
+ rt.env = env;
ERL_NIF_TERM emsg = enif_make_tuple3(rt.env,
rt.make_atom((char *) "wxe_driver"),
rt.make_atom((char *) type),
rt.make(msg));
rt.send(emsg);
+ enif_free_env(env);
}
+void wx_print_term(ErlNifEnv * env, ERL_NIF_TERM t)
+{
+ if(enif_is_binary(env, t)) {
+ ErlNifBinary bin;
+ enif_inspect_binary(env, t, &bin);
+ if(bin.size > 128) {
+ enif_fprintf(stderr, "<<...LARGE BIN>");
+ } else {
+ enif_fprintf(stderr, "%T", t);
+ }
+ } else {
+ enif_fprintf(stderr, "%T", t);
+ }
+}
+
+
+
void print_cmd(wxeCommand& event)
{
int i;
wxe_fns_t *func = &wxe_fns[event.op];
enif_fprintf(stderr, " %T %d %s::%s(", event.caller, event.op, func->cname, func->fname);
- for(i=0; i < event.argc-1; i++) {
- enif_fprintf(stderr, "%T,", event.args[i]);
- }
- if(i > 0) {
- enif_fprintf(stderr, "%T)\r\n", event.args[i]);
- } else {
- enif_fprintf(stderr, ")\r\n");
+ for(i=0; i < event.argc; i++) {
+ wx_print_term(event.env, event.args[i]);
+ if(i < event.argc - 1)
+ enif_fprintf(stderr, ", ");
}
+ enif_fprintf(stderr, ")\r\n");
}
+
/* ************************************************************
* Init WxeApp the application emulator
diff --git a/lib/wx/c_src/wxe_impl.h b/lib/wx/c_src/wxe_impl.h
index ee8654d1ef..a99c30a254 100644
--- a/lib/wx/c_src/wxe_impl.h
+++ b/lib/wx/c_src/wxe_impl.h
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -115,4 +115,7 @@ typedef struct {
extern wxe_fns_t wxe_fns[];
+void wx_print_term(ErlNifEnv * env, ERL_NIF_TERM t);
+
+
#endif //_WXE_IMPL_H
diff --git a/lib/wx/c_src/wxe_nif.c b/lib/wx/c_src/wxe_nif.c
index 6f6251e482..a7d3fea885 100644
--- a/lib/wx/c_src/wxe_nif.c
+++ b/lib/wx/c_src/wxe_nif.c
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2017-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2017-2023. 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.
@@ -65,7 +65,7 @@ ERL_NIF_TERM WXE_ATOM_wxPrintDialogData;
ErlNifResourceType* wxeMemEnvRt = NULL;
int wxe_debug = 0;
-extern void wxe_initOpenGL(void * fptr);
+extern void wxe_initOpenGL(void * fptr, void *debug);
// void destroyMemEnv(wxeMemEnv *memenv);
@@ -127,9 +127,13 @@ static ERL_NIF_TERM wx_setup_cmd(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
static ERL_NIF_TERM wx_init_opengl(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{
void * fptr;
+ void * debug;
if(!get_ptr(env, argv[0], &fptr))
return enif_make_badarg(env);
- wxe_initOpenGL(fptr);
+ if(!get_ptr(env, argv[1], &debug))
+ return enif_make_badarg(env);
+
+ wxe_initOpenGL(fptr, debug);
return WXE_ATOM_ok;
}
@@ -198,7 +202,7 @@ static ErlNifFunc nif_funcs[] =
{"queue_cmd",13, wx_setup_cmd},
{"queue_cmd",14, wx_setup_cmd},
{"queue_cmd",15, wx_setup_cmd},
- {"init_opengl", 1, wx_init_opengl},
+ {"init_opengl", 2, wx_init_opengl},
{"make_env", 0, wxe_make_env},
{"delete_env", 1, wxe_delete_env},
{"debug_driver", 1, wxe_debug_driver},
diff --git a/lib/wx/c_src/wxe_return.cpp b/lib/wx/c_src/wxe_return.cpp
index 7d2e072561..8728dafcf9 100644
--- a/lib/wx/c_src/wxe_return.cpp
+++ b/lib/wx/c_src/wxe_return.cpp
@@ -1,7 +1,7 @@
/*
* %CopyrightBegin%
*
- * Copyright Ericsson AB 2008-2022. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2023. 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.
@@ -43,8 +43,11 @@ wxeReturn::~wxeReturn () {
int wxeReturn::send(ERL_NIF_TERM msg) {
int res;
if(wxe_debug) {
- if(isResult)
- enif_fprintf(stderr, "return to %T: %T\r\n", caller, msg);
+ if(isResult) {
+ enif_fprintf(stderr, "return to %T: ", caller);
+ wx_print_term(env, msg);
+ enif_fprintf(stderr, "\r\n");
+ }
}
if(isResult) {
res = enif_send(NULL, &caller, env,
diff --git a/lib/wx/doc/src/gl.xml b/lib/wx/doc/src/gl.xml
index 224c9d90f3..1f35f8fa89 100644
--- a/lib/wx/doc/src/gl.xml
+++ b/lib/wx/doc/src/gl.xml
@@ -7,7 +7,7 @@
<erlref>
<header>
<copyright>
- <year>2020</year><year>2021</year>
+ <year>2020</year><year>2023</year>
<holder>Ericsson AB. All Rights Reserved.</holder></copyright>
<legalnotice>
Licensed under the Apache License, Version 2.0 (the "License");
@@ -928,10 +928,10 @@
<p><url href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml">External documentation.</url></p></desc>
</func>
<func>
- <name name="debugMessageInsert" arity="6" clause_i="1" since=""/>
+ <name name="debugMessageInsert" arity="5" clause_i="1" since=""/>
<fsummary>inject an application-supplied message into the debug message queue</fsummary>
<desc>
- <p><seemfa marker="gl#debugMessageInsert/6"><c>gl:debugMessageInsert/6</c></seemfa> inserts a user-supplied message into the debug output queue. <c>Source</c> specifies the source that will be used to classify the message and must be <c>?GL_DEBUG_SOURCE_APPLICATION</c> or <c>?GL_DEBUG_SOURCE_THIRD_PARTY</c>. All other sources are reserved for use by the GL implementation. <c>Type</c> indicates the type of the message to be inserted and may be one of <c>?GL_DEBUG_TYPE_ERROR</c>, <c>?GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR</c>, <c>?GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR</c>, <c>?GL_DEBUG_TYPE_PORTABILITY</c>, <c>?GL_DEBUG_TYPE_PERFORMANCE</c>, <c>?GL_DEBUG_TYPE_MARKER</c>, <c>?GL_DEBUG_TYPE_PUSH_GROUP</c>, <c>?GL_DEBUG_TYPE_POP_GROUP</c>, or <c>?GL_DEBUG_TYPE_OTHER</c>. <c>Severity</c> indicates the severity of the message and may be <c>?GL_DEBUG_SEVERITY_LOW</c>, <c>?GL_DEBUG_SEVERITY_MEDIUM</c>, <c>?GL_DEBUG_SEVERITY_HIGH</c> or <c>?GL_DEBUG_SEVERITY_NOTIFICATION</c>. <c>Id</c> is available for application defined use and may be any value. This value will be recorded and used to identify the message. </p>
+ <p><seemfa marker="gl#debugMessageInsert/5"><c>gl:debugMessageInsert/5</c></seemfa> inserts a user-supplied message into the debug output queue. <c>Source</c> specifies the source that will be used to classify the message and must be <c>?GL_DEBUG_SOURCE_APPLICATION</c> or <c>?GL_DEBUG_SOURCE_THIRD_PARTY</c>. All other sources are reserved for use by the GL implementation. <c>Type</c> indicates the type of the message to be inserted and may be one of <c>?GL_DEBUG_TYPE_ERROR</c>, <c>?GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR</c>, <c>?GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR</c>, <c>?GL_DEBUG_TYPE_PORTABILITY</c>, <c>?GL_DEBUG_TYPE_PERFORMANCE</c>, <c>?GL_DEBUG_TYPE_MARKER</c>, <c>?GL_DEBUG_TYPE_PUSH_GROUP</c>, <c>?GL_DEBUG_TYPE_POP_GROUP</c>, or <c>?GL_DEBUG_TYPE_OTHER</c>. <c>Severity</c> indicates the severity of the message and may be <c>?GL_DEBUG_SEVERITY_LOW</c>, <c>?GL_DEBUG_SEVERITY_MEDIUM</c>, <c>?GL_DEBUG_SEVERITY_HIGH</c> or <c>?GL_DEBUG_SEVERITY_NOTIFICATION</c>. <c>Id</c> is available for application defined use and may be any value. This value will be recorded and used to identify the message. </p>
<p><url href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDebugMessageInsert.xhtml">External documentation.</url></p></desc>
</func>
@@ -1798,11 +1798,8 @@
<func>
<name name="getInternalformati64v" arity="4" clause_i="1" since=""/>
<name name="getInternalformativ" arity="4" clause_i="1" since=""/>
- <fsummary>retrieve information about implementation-dependent support for internal formats</fsummary>
- <desc>
- <p><seemfa marker="gl#getInternalformativ/4"><c>gl:getInternalformativ/4</c></seemfa> and <seemfa marker="gl#getInternalformativ/4"><c>gl:getInternalformati64v/4</c></seemfa> retrieve information about implementation-dependent support for internal formats. <c>Target</c> indicates the target with which the internal format will be used and must be one of <c>?GL_RENDERBUFFER</c>, <c>?GL_TEXTURE_2D_MULTISAMPLE</c>, or <c>?GL_TEXTURE_2D_MULTISAMPLE_ARRAY</c>, corresponding to usage as a renderbuffer, two-dimensional multisample texture or two-dimensional multisample array texture, respectively. </p>
-
- <p><url href="https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetInternalFormat.xhtml">External documentation.</url></p></desc>
+ <fsummary/>
+ <desc><p>No documentation available.</p></desc>
</func>
<func>
<name name="getLightfv" arity="2" clause_i="1" since=""/>
diff --git a/lib/wx/doc/src/notes.xml b/lib/wx/doc/src/notes.xml
index f155b7a551..08e339e097 100644
--- a/lib/wx/doc/src/notes.xml
+++ b/lib/wx/doc/src/notes.xml
@@ -32,6 +32,22 @@
<p>This document describes the changes made to the wxErlang
application.</p>
+<section><title>Wx 2.2.2</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Improve debug prints from the nifs. Some minor fixes for
+ wxWidgets-3.2. Fixed OpenGL debug functions.</p>
+ <p>
+ Own Id: OTP-18512</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Wx 2.2.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/lib/wx/doc/src/wxGLCanvas.xml b/lib/wx/doc/src/wxGLCanvas.xml
index 2ccfb6e137..00c10cd1f1 100644
--- a/lib/wx/doc/src/wxGLCanvas.xml
+++ b/lib/wx/doc/src/wxGLCanvas.xml
@@ -7,7 +7,7 @@
<erlref>
<header>
<copyright>
- <year>2020</year><year>2021</year>
+ <year>2020</year><year>2023</year>
<holder>wxWidgets team.</holder></copyright>
<legalnotice>Licensed under the wxWindows Free Documentation Licence, Version 3
</legalnotice>
@@ -57,6 +57,21 @@
</func>
<func>
+ <name name="createSurface" arity="1" clause_i="1" since=""/>
+ <fsummary/>
+ <desc/>
+ </func>
+
+ <func>
+ <name name="isDisplaySupported" arity="1" clause_i="1" since=""/>
+ <fsummary>Determines if a canvas having the specified attributes is available. </fsummary>
+ <desc><p>Determines if a canvas having the specified attributes is available.
+ </p><p>This only applies for visual attributes, not rendering context attributes. Please, use the new form of this method, using <c>wxGLAttributes</c> (not implemented in wx).
+ </p><p>Return: true if attributes are supported.
+ </p></desc>
+ </func>
+
+ <func>
<name name="swapBuffers" arity="1" clause_i="1" since=""/>
<fsummary>Swaps the double-buffer of this window, making the back-buffer the front-buffer and vice versa, so that the output of the previous OpenGL commands is displayed on the window. </fsummary>
<desc><p>Swaps the double-buffer of this window, making the back-buffer the front-buffer and vice versa, so that the output of the previous OpenGL commands is displayed on the window.
diff --git a/lib/wx/doc/src/wxGLContext.xml b/lib/wx/doc/src/wxGLContext.xml
index 60214ff35b..8aa99999f8 100644
--- a/lib/wx/doc/src/wxGLContext.xml
+++ b/lib/wx/doc/src/wxGLContext.xml
@@ -7,7 +7,7 @@
<erlref>
<header>
<copyright>
- <year>2020</year><year>2021</year>
+ <year>2020</year><year>2023</year>
<holder>wxWidgets team.</holder></copyright>
<legalnotice>Licensed under the wxWindows Free Documentation Licence, Version 3
</legalnotice>
@@ -21,7 +21,7 @@
</p><p>Binding (making current) a rendering context with another instance of a <seeerl marker="wxGLCanvas"><c>wxGLCanvas</c></seeerl> however works only if the both <seeerl marker="wxGLCanvas"><c>wxGLCanvas</c></seeerl> instances were created with the same attributes.
</p><p>OpenGL version 3 introduced a new type of specification profile, the modern core profile. The old compatibility profile maintains all legacy features. Since wxWidgets 3.1.0 you can choose the type of context and even ask for a specified OGL version number. However, its advised to use only core profile as the compatibility profile may run a bit slower.
</p><p>OpenGL core profile specification defines several flags at context creation that determine not only the type of context but also some features. Some of these flags can be set in the list of attributes used at <seeerl marker="wxGLCanvas"><c>wxGLCanvas</c></seeerl> ctor. But since wxWidgets 3.1.0 it is strongly encouraged to use the new mechanism: setting the context attributes with a <c>wxGLContextAttrs</c> (not implemented in wx) object and the canvas attributes with a <c>wxGLAttributes</c> (not implemented in wx) object.
- </p><p>The best way of knowing if your OpenGL environment supports a specific type of context is creating a <seeerl marker="wxGLContext"><c>wxGLContext</c></seeerl> instance and checking <c>wxGLContext::IsOK()</c> (not implemented in wx). If it returns false, then simply delete that instance and create a new one with other attributes.
+ </p><p>The best way of knowing if your OpenGL environment supports a specific type of context is creating a <seeerl marker="wxGLContext"><c>wxGLContext</c></seeerl> instance and checking <seemfa marker="#isOK/1"><c>isOK/1</c></seemfa>. If it returns false, then simply delete that instance and create a new one with other attributes.
</p><p>wxHAS_OPENGL_ES is defined on platforms that only have this implementation available (e.g. the iPhone) and don't support the full specification.
</p><p>See: <seeerl marker="wxGLCanvas"><c>wxGLCanvas</c></seeerl>, <c>wxGLContextAttrs</c> (not implemented in wx), <c>wxGLAttributes</c> (not implemented in wx)
</p>
@@ -51,6 +51,15 @@
</func>
<func>
+ <name name="isOK" arity="1" clause_i="1" since=""/>
+ <fsummary>Checks if the underlying OpenGL rendering context was correctly created by the system with the requested attributes. </fsummary>
+ <desc><p>Checks if the underlying OpenGL rendering context was correctly created by the system with the requested attributes.
+ </p><p>If this function returns false then the <seeerl marker="wxGLContext"><c>wxGLContext</c></seeerl> object is useless and should be deleted and recreated with different attributes.
+ </p><p>Since: 3.1.0
+ </p></desc>
+ </func>
+
+ <func>
<name name="destroy" arity="1" clause_i="1" since=""/>
<fsummary>Destructor</fsummary>
<desc><p>Destroys the object.</p></desc>
diff --git a/lib/wx/include/wx.hrl b/lib/wx/include/wx.hrl
index 38ba71c5f7..1b61fb4390 100644
--- a/lib/wx/include/wx.hrl
+++ b/lib/wx/include/wx.hrl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -903,7 +903,7 @@
-define(wxDF_LOCALE, 16).
-define(wxDF_PRIVATE, 20).
-define(wxDF_HTML, 30).
--define(wxDF_MAX, 31).
+-define(wxDF_MAX, wxe_util:get_const(wxDF_MAX)).
%%% From "defs.h": wxDeprecatedGUIConstants
-define(wxDEFAULT, 70).
-define(wxDECORATIVE, 71).
diff --git a/lib/wx/src/gen/gl.erl b/lib/wx/src/gen/gl.erl
index d1c6e76937..283af4a869 100644
--- a/lib/wx/src/gen/gl.erl
+++ b/lib/wx/src/gen/gl.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -238,7 +238,7 @@
texStorage2DMultisample/6,texStorage3DMultisample/7,textureView/8,
bindVertexBuffer/4,vertexAttribFormat/5,vertexAttribIFormat/4,vertexAttribLFormat/4,
vertexAttribBinding/2,vertexBindingDivisor/2,debugMessageControl/5,
- debugMessageInsert/6,getDebugMessageLog/2,pushDebugGroup/4,popDebugGroup/0,
+ debugMessageInsert/5,getDebugMessageLog/2,pushDebugGroup/4,popDebugGroup/0,
objectPtrLabel/3,bufferStorage/4,clearTexImage/5,clearTexSubImage/11,
bindBuffersBase/3,bindBuffersRange/5,bindTextures/2,bindSamplers/2,
bindImageTextures/2,bindVertexBuffers/4,clipControl/2,createTransformFeedbacks/1,
@@ -299,8 +299,8 @@
bindAttribLocationARB/3,getActiveAttribARB/3,getAttribLocationARB/2,
blendBarrierKHR/0,maxShaderCompilerThreadsKHR/1,depthBoundsEXT/2]).
--export([get_interface/0, rec/1, lookup_func/0]).
--nifs([lookup_func/0]).
+-export([get_interface/0, rec/1, lookup_func/1]).
+-nifs([lookup_func_nif/1]).
-define(nif_stub,nif_stub_error(?LINE)).
%% @hidden
nif_stub_error(Line) ->
@@ -332,7 +332,10 @@ rec(Op) ->
rec(Op)
end.
-lookup_func() -> ?nif_stub.
+lookup_func(functions) -> lookup_func_nif(1);
+lookup_func(function_names) -> lookup_func_nif(2).
+
+lookup_func_nif(_Func) -> ?nif_stub.
@@ -5116,15 +5119,14 @@ debugMessageControl(Source,Type,Severity,Ids,Enabled) when is_integer(Source),is
IF:queue_cmd(Source,Type,Severity,Count,Ids,Enabled,5802),
ok.
--spec debugMessageInsert(Source, Type, Id, Severity, Length, Buf) -> 'ok'
- when Source::enum(), Type::enum(), Id::i(), Severity::enum(), Length::i(), Buf::string().
-debugMessageInsert(Source,Type,Id,Severity,Length,Buf) when is_integer(Source),is_integer(Type),is_integer(Id),is_integer(Severity),is_integer(Length),is_list(Buf) ->
+-spec debugMessageInsert(Source::enum(), Type::enum(), Id::i(), Severity::enum(), Buf::string()) -> 'ok'.
+debugMessageInsert(Source,Type,Id,Severity,Buf) when is_integer(Source),is_integer(Type),is_integer(Id),is_integer(Severity),is_list(Buf) ->
IF = get_interface(),
BufBin = unicode:characters_to_binary([Buf|[0]]),
- IF:queue_cmd(Source,Type,Id,Severity,Length,BufBin,5803),
+ IF:queue_cmd(Source,Type,Id,Severity,BufBin,5803),
ok.
--spec getDebugMessageLog(Count::i(), BufSize::i()) -> {i(),Sources::[enum()],Types::[enum()],Ids::[i()],Severities::[enum()],MessageLog::string()}.
+-spec getDebugMessageLog(Count::i(), BufSize::i()) -> {i(),Sources::[enum()],Types::[enum()],Ids::[i()],Severities::[enum()],MessageLog::[string()]}.
getDebugMessageLog(Count,BufSize) when is_integer(Count),is_integer(BufSize) ->
IF = get_interface(),
IF:queue_cmd(Count,BufSize,5804),
diff --git a/lib/wx/src/gen/wxGLCanvas.erl b/lib/wx/src/gen/wxGLCanvas.erl
index 29a54f527d..3a6cc682be 100644
--- a/lib/wx/src/gen/wxGLCanvas.erl
+++ b/lib/wx/src/gen/wxGLCanvas.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2020. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -20,7 +20,8 @@
-module(wxGLCanvas).
-include("wxe.hrl").
--export([destroy/1,new/1,new/2,setCurrent/2,swapBuffers/1]).
+-export([createSurface/1,destroy/1,isDisplaySupported/1,new/1,new/2,setCurrent/2,
+ swapBuffers/1]).
%% inherited exports
-export([cacheBestSize/2,canSetTransparent/1,captureMouse/1,center/1,center/2,
@@ -112,6 +113,22 @@ setCurrent(#wx_ref{type=ThisT}=This,#wx_ref{type=ContextT}=Context) ->
wxe_util:queue_cmd(This,Context,?get_env(),?wxGLCanvas_SetCurrent),
wxe_util:rec(?wxGLCanvas_SetCurrent).
+%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxglcanvas.html#wxglcanvascreatesurface">external documentation</a>.
+-spec createSurface(This) -> boolean() when
+ This::wxGLCanvas().
+createSurface(#wx_ref{type=ThisT}=This) ->
+ ?CLASS(ThisT,wxGLCanvas),
+ wxe_util:queue_cmd(This,?get_env(),?wxGLCanvas_CreateSurface),
+ wxe_util:rec(?wxGLCanvas_CreateSurface).
+
+%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxglcanvas.html#wxglcanvasisdisplaysupported">external documentation</a>.
+-spec isDisplaySupported(AttribList) -> boolean() when
+ AttribList::[integer()].
+isDisplaySupported(AttribList)
+ when is_list(AttribList) ->
+ wxe_util:queue_cmd(AttribList,?get_env(),?wxGLCanvas_IsDisplaySupported),
+ wxe_util:rec(?wxGLCanvas_IsDisplaySupported).
+
%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxglcanvas.html#wxglcanvasswapbuffers">external documentation</a>.
-spec swapBuffers(This) -> boolean() when
This::wxGLCanvas().
diff --git a/lib/wx/src/gen/wxGLContext.erl b/lib/wx/src/gen/wxGLContext.erl
index 2308c658ef..00016ee6b6 100644
--- a/lib/wx/src/gen/wxGLContext.erl
+++ b/lib/wx/src/gen/wxGLContext.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2020. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -20,7 +20,7 @@
-module(wxGLContext).
-include("wxe.hrl").
--export([destroy/1,new/1,new/2,setCurrent/2]).
+-export([destroy/1,isOK/1,new/1,new/2,setCurrent/2]).
%% inherited exports
-export([parent_class/1]).
@@ -60,6 +60,14 @@ setCurrent(#wx_ref{type=ThisT}=This,#wx_ref{type=WinT}=Win) ->
wxe_util:queue_cmd(This,Win,?get_env(),?wxGLContext_SetCurrent),
wxe_util:rec(?wxGLContext_SetCurrent).
+%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxglcontext.html#wxglcontextisok">external documentation</a>.
+-spec isOK(This) -> boolean() when
+ This::wxGLContext().
+isOK(#wx_ref{type=ThisT}=This) ->
+ ?CLASS(ThisT,wxGLContext),
+ wxe_util:queue_cmd(This,?get_env(),?wxGLContext_IsOK),
+ wxe_util:rec(?wxGLContext_IsOK).
+
%% @doc Destroys this object, do not use object again
-spec destroy(This::wxGLContext()) -> 'ok'.
destroy(Obj=#wx_ref{type=Type}) ->
diff --git a/lib/wx/src/gen/wxe_funcs.hrl b/lib/wx/src/gen/wxe_funcs.hrl
index e20f2699f7..86b9114b09 100644
--- a/lib/wx/src/gen/wxe_funcs.hrl
+++ b/lib/wx/src/gen/wxe_funcs.hrl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -2322,1135 +2322,1138 @@
-define(wxHtmlEasyPrinting_destroy, 2492).
-define(wxGLCanvas_new, 2493).
-define(wxGLCanvas_SetCurrent, 2494).
--define(wxGLCanvas_SwapBuffers, 2495).
--define(wxGLCanvas_destroy, 2496).
--define(wxGLContext_new, 2497).
--define(wxGLContext_SetCurrent, 2498).
--define(wxGLContext_destroy, 2499).
--define(wxAuiManager_new, 2500).
--define(wxAuiManager_destruct, 2501).
--define(wxAuiManager_AddPane_2_1, 2502).
--define(wxAuiManager_AddPane_2_0, 2503).
--define(wxAuiManager_AddPane_3, 2504).
--define(wxAuiManager_DetachPane, 2505).
--define(wxAuiManager_GetAllPanes, 2506).
--define(wxAuiManager_GetArtProvider, 2507).
--define(wxAuiManager_GetDockSizeConstraint, 2508).
--define(wxAuiManager_GetFlags, 2509).
--define(wxAuiManager_GetManagedWindow, 2510).
--define(wxAuiManager_GetManager, 2511).
--define(wxAuiManager_GetPane_1_1, 2512).
--define(wxAuiManager_GetPane_1_0, 2513).
--define(wxAuiManager_HideHint, 2514).
--define(wxAuiManager_InsertPane, 2515).
--define(wxAuiManager_LoadPaneInfo, 2516).
--define(wxAuiManager_LoadPerspective, 2517).
--define(wxAuiManager_SavePaneInfo, 2518).
--define(wxAuiManager_SavePerspective, 2519).
--define(wxAuiManager_SetArtProvider, 2520).
--define(wxAuiManager_SetDockSizeConstraint, 2521).
--define(wxAuiManager_SetFlags, 2522).
--define(wxAuiManager_SetManagedWindow, 2523).
--define(wxAuiManager_ShowHint, 2524).
--define(wxAuiManager_UnInit, 2525).
--define(wxAuiManager_Update, 2526).
--define(wxAuiPaneInfo_new_0, 2527).
--define(wxAuiPaneInfo_new_1, 2528).
--define(wxAuiPaneInfo_BestSize_1, 2529).
--define(wxAuiPaneInfo_BestSize_2, 2530).
--define(wxAuiPaneInfo_Bottom, 2531).
--define(wxAuiPaneInfo_BottomDockable, 2532).
--define(wxAuiPaneInfo_Caption, 2533).
--define(wxAuiPaneInfo_CaptionVisible, 2534).
--define(wxAuiPaneInfo_Centre, 2535).
--define(wxAuiPaneInfo_CentrePane, 2536).
--define(wxAuiPaneInfo_CloseButton, 2537).
--define(wxAuiPaneInfo_DefaultPane, 2538).
--define(wxAuiPaneInfo_DestroyOnClose, 2539).
--define(wxAuiPaneInfo_Direction, 2540).
--define(wxAuiPaneInfo_Dock, 2541).
--define(wxAuiPaneInfo_Dockable, 2542).
--define(wxAuiPaneInfo_Fixed, 2543).
--define(wxAuiPaneInfo_Float, 2544).
--define(wxAuiPaneInfo_Floatable, 2545).
--define(wxAuiPaneInfo_FloatingPosition_1, 2546).
--define(wxAuiPaneInfo_FloatingPosition_2, 2547).
--define(wxAuiPaneInfo_FloatingSize_1, 2548).
--define(wxAuiPaneInfo_FloatingSize_2, 2549).
--define(wxAuiPaneInfo_Gripper, 2550).
--define(wxAuiPaneInfo_GripperTop, 2551).
--define(wxAuiPaneInfo_HasBorder, 2552).
--define(wxAuiPaneInfo_HasCaption, 2553).
--define(wxAuiPaneInfo_HasCloseButton, 2554).
--define(wxAuiPaneInfo_HasFlag, 2555).
--define(wxAuiPaneInfo_HasGripper, 2556).
--define(wxAuiPaneInfo_HasGripperTop, 2557).
--define(wxAuiPaneInfo_HasMaximizeButton, 2558).
--define(wxAuiPaneInfo_HasMinimizeButton, 2559).
--define(wxAuiPaneInfo_HasPinButton, 2560).
--define(wxAuiPaneInfo_Hide, 2561).
--define(wxAuiPaneInfo_IsBottomDockable, 2562).
--define(wxAuiPaneInfo_IsDocked, 2563).
--define(wxAuiPaneInfo_IsFixed, 2564).
--define(wxAuiPaneInfo_IsFloatable, 2565).
--define(wxAuiPaneInfo_IsFloating, 2566).
--define(wxAuiPaneInfo_IsLeftDockable, 2567).
--define(wxAuiPaneInfo_IsMovable, 2568).
--define(wxAuiPaneInfo_IsOk, 2569).
--define(wxAuiPaneInfo_IsResizable, 2570).
--define(wxAuiPaneInfo_IsRightDockable, 2571).
--define(wxAuiPaneInfo_IsShown, 2572).
--define(wxAuiPaneInfo_IsToolbar, 2573).
--define(wxAuiPaneInfo_IsTopDockable, 2574).
--define(wxAuiPaneInfo_Layer, 2575).
--define(wxAuiPaneInfo_Left, 2576).
--define(wxAuiPaneInfo_LeftDockable, 2577).
--define(wxAuiPaneInfo_MaxSize_1, 2578).
--define(wxAuiPaneInfo_MaxSize_2, 2579).
--define(wxAuiPaneInfo_MaximizeButton, 2580).
--define(wxAuiPaneInfo_MinSize_1, 2581).
--define(wxAuiPaneInfo_MinSize_2, 2582).
--define(wxAuiPaneInfo_MinimizeButton, 2583).
--define(wxAuiPaneInfo_Movable, 2584).
--define(wxAuiPaneInfo_Name, 2585).
--define(wxAuiPaneInfo_PaneBorder, 2586).
--define(wxAuiPaneInfo_PinButton, 2587).
--define(wxAuiPaneInfo_Position, 2588).
--define(wxAuiPaneInfo_Resizable, 2589).
--define(wxAuiPaneInfo_Right, 2590).
--define(wxAuiPaneInfo_RightDockable, 2591).
--define(wxAuiPaneInfo_Row, 2592).
--define(wxAuiPaneInfo_SafeSet, 2593).
--define(wxAuiPaneInfo_SetFlag, 2594).
--define(wxAuiPaneInfo_Show, 2595).
--define(wxAuiPaneInfo_ToolbarPane, 2596).
--define(wxAuiPaneInfo_Top, 2597).
--define(wxAuiPaneInfo_TopDockable, 2598).
--define(wxAuiPaneInfo_Window, 2599).
--define(wxAuiPaneInfo_GetWindow, 2600).
--define(wxAuiPaneInfo_GetFrame, 2601).
--define(wxAuiPaneInfo_GetDirection, 2602).
--define(wxAuiPaneInfo_GetLayer, 2603).
--define(wxAuiPaneInfo_GetRow, 2604).
--define(wxAuiPaneInfo_GetPosition, 2605).
--define(wxAuiPaneInfo_GetFloatingPosition, 2606).
--define(wxAuiPaneInfo_GetFloatingSize, 2607).
--define(wxAuiPaneInfo_destroy, 2608).
--define(wxAuiNotebook_new_0, 2609).
--define(wxAuiNotebook_new_2, 2610).
--define(wxAuiNotebook_AddPage_3, 2611).
--define(wxAuiNotebook_AddPage_4, 2612).
--define(wxAuiNotebook_Create_2, 2613).
--define(wxAuiNotebook_Create_3, 2614).
--define(wxAuiNotebook_DeletePage, 2615).
--define(wxAuiNotebook_GetArtProvider, 2616).
--define(wxAuiNotebook_GetPage, 2617).
--define(wxAuiNotebook_GetPageBitmap, 2618).
--define(wxAuiNotebook_GetPageCount, 2619).
--define(wxAuiNotebook_GetPageIndex, 2620).
--define(wxAuiNotebook_GetPageText, 2621).
--define(wxAuiNotebook_GetSelection, 2622).
--define(wxAuiNotebook_InsertPage_4, 2623).
--define(wxAuiNotebook_InsertPage_5, 2624).
--define(wxAuiNotebook_RemovePage, 2625).
--define(wxAuiNotebook_SetArtProvider, 2626).
--define(wxAuiNotebook_SetFont, 2627).
--define(wxAuiNotebook_SetPageBitmap, 2628).
--define(wxAuiNotebook_SetPageText, 2629).
--define(wxAuiNotebook_SetSelection, 2630).
--define(wxAuiNotebook_SetTabCtrlHeight, 2631).
--define(wxAuiNotebook_SetUniformBitmapSize, 2632).
--define(wxAuiNotebook_destroy, 2633).
--define(wxAuiTabArt_SetFlags, 2634).
--define(wxAuiTabArt_SetMeasuringFont, 2635).
--define(wxAuiTabArt_SetNormalFont, 2636).
--define(wxAuiTabArt_SetSelectedFont, 2637).
--define(wxAuiTabArt_SetColour, 2638).
--define(wxAuiTabArt_SetActiveColour, 2639).
--define(wxAuiDockArt_GetColour, 2640).
--define(wxAuiDockArt_GetFont, 2641).
--define(wxAuiDockArt_GetMetric, 2642).
--define(wxAuiDockArt_SetColour, 2643).
--define(wxAuiDockArt_SetFont, 2644).
--define(wxAuiDockArt_SetMetric, 2645).
--define(wxAuiSimpleTabArt_new, 2646).
--define(wxAuiSimpleTabArt_destroy, 2647).
--define(wxMDIParentFrame_new_0, 2648).
--define(wxMDIParentFrame_new_4, 2649).
--define(wxMDIParentFrame_destruct, 2650).
--define(wxMDIParentFrame_ActivateNext, 2651).
--define(wxMDIParentFrame_ActivatePrevious, 2652).
--define(wxMDIParentFrame_ArrangeIcons, 2653).
--define(wxMDIParentFrame_Cascade, 2654).
--define(wxMDIParentFrame_Create, 2655).
--define(wxMDIParentFrame_GetActiveChild, 2656).
--define(wxMDIParentFrame_GetClientWindow, 2657).
--define(wxMDIParentFrame_Tile, 2658).
--define(wxMDIChildFrame_new_0, 2659).
--define(wxMDIChildFrame_new_4, 2660).
--define(wxMDIChildFrame_destruct, 2661).
--define(wxMDIChildFrame_Activate, 2662).
--define(wxMDIChildFrame_Create, 2663).
--define(wxMDIChildFrame_Maximize, 2664).
--define(wxMDIChildFrame_Restore, 2665).
--define(wxMDIClientWindow_new, 2666).
--define(wxMDIClientWindow_CreateClient, 2667).
--define(wxMDIClientWindow_destroy, 2668).
--define(wxLayoutAlgorithm_new, 2669).
--define(wxLayoutAlgorithm_destruct, 2670).
--define(wxLayoutAlgorithm_LayoutFrame, 2671).
--define(wxLayoutAlgorithm_LayoutMDIFrame, 2672).
--define(wxLayoutAlgorithm_LayoutWindow, 2673).
--define(wxEvent_GetId, 2674).
--define(wxEvent_GetSkipped, 2675).
--define(wxEvent_GetTimestamp, 2676).
--define(wxEvent_IsCommandEvent, 2677).
--define(wxEvent_ResumePropagation, 2678).
--define(wxEvent_ShouldPropagate, 2679).
--define(wxEvent_Skip, 2680).
--define(wxEvent_StopPropagation, 2681).
--define(wxCommandEvent_getClientData, 2682).
--define(wxCommandEvent_GetExtraLong, 2683).
--define(wxCommandEvent_GetInt, 2684).
--define(wxCommandEvent_GetSelection, 2685).
--define(wxCommandEvent_GetString, 2686).
--define(wxCommandEvent_IsChecked, 2687).
--define(wxCommandEvent_IsSelection, 2688).
--define(wxCommandEvent_SetInt, 2689).
--define(wxCommandEvent_SetString, 2690).
--define(wxScrollEvent_GetOrientation, 2691).
--define(wxScrollEvent_GetPosition, 2692).
--define(wxScrollWinEvent_GetOrientation, 2693).
--define(wxScrollWinEvent_GetPosition, 2694).
--define(wxMouseEvent_AltDown, 2695).
--define(wxMouseEvent_Button, 2696).
--define(wxMouseEvent_ButtonDClick, 2697).
--define(wxMouseEvent_ButtonDown, 2698).
--define(wxMouseEvent_ButtonUp, 2699).
--define(wxMouseEvent_CmdDown, 2700).
--define(wxMouseEvent_ControlDown, 2701).
--define(wxMouseEvent_Dragging, 2702).
--define(wxMouseEvent_Entering, 2703).
--define(wxMouseEvent_GetButton, 2704).
--define(wxMouseEvent_GetPosition, 2705).
--define(wxMouseEvent_GetLogicalPosition, 2707).
--define(wxMouseEvent_GetLinesPerAction, 2708).
--define(wxMouseEvent_GetWheelRotation, 2709).
--define(wxMouseEvent_GetWheelDelta, 2710).
--define(wxMouseEvent_GetX, 2711).
--define(wxMouseEvent_GetY, 2712).
--define(wxMouseEvent_IsButton, 2713).
--define(wxMouseEvent_IsPageScroll, 2714).
--define(wxMouseEvent_Leaving, 2715).
--define(wxMouseEvent_LeftDClick, 2716).
--define(wxMouseEvent_LeftDown, 2717).
--define(wxMouseEvent_LeftIsDown, 2718).
--define(wxMouseEvent_LeftUp, 2719).
--define(wxMouseEvent_MetaDown, 2720).
--define(wxMouseEvent_MiddleDClick, 2721).
--define(wxMouseEvent_MiddleDown, 2722).
--define(wxMouseEvent_MiddleIsDown, 2723).
--define(wxMouseEvent_MiddleUp, 2724).
--define(wxMouseEvent_Moving, 2725).
--define(wxMouseEvent_RightDClick, 2726).
--define(wxMouseEvent_RightDown, 2727).
--define(wxMouseEvent_RightIsDown, 2728).
--define(wxMouseEvent_RightUp, 2729).
--define(wxMouseEvent_ShiftDown, 2730).
--define(wxMouseEvent_GetWheelAxis, 2731).
--define(wxMouseEvent_Aux1DClick, 2732).
--define(wxMouseEvent_Aux1Down, 2733).
--define(wxMouseEvent_Aux1Up, 2734).
--define(wxMouseEvent_Aux2DClick, 2735).
--define(wxMouseEvent_Aux2Down, 2736).
--define(wxMouseEvent_Aux2Up, 2737).
--define(wxSetCursorEvent_GetCursor, 2738).
--define(wxSetCursorEvent_GetX, 2739).
--define(wxSetCursorEvent_GetY, 2740).
--define(wxSetCursorEvent_HasCursor, 2741).
--define(wxSetCursorEvent_SetCursor, 2742).
--define(wxKeyEvent_AltDown, 2743).
--define(wxKeyEvent_CmdDown, 2744).
--define(wxKeyEvent_ControlDown, 2745).
--define(wxKeyEvent_GetKeyCode, 2746).
--define(wxKeyEvent_GetModifiers, 2747).
--define(wxKeyEvent_GetPosition, 2748).
--define(wxKeyEvent_GetRawKeyCode, 2750).
--define(wxKeyEvent_GetRawKeyFlags, 2751).
--define(wxKeyEvent_GetUnicodeKey, 2752).
--define(wxKeyEvent_GetX, 2753).
--define(wxKeyEvent_GetY, 2754).
--define(wxKeyEvent_HasModifiers, 2755).
--define(wxKeyEvent_MetaDown, 2756).
--define(wxKeyEvent_ShiftDown, 2757).
--define(wxSizeEvent_GetSize, 2758).
--define(wxSizeEvent_GetRect, 2759).
--define(wxMoveEvent_GetPosition, 2760).
--define(wxMoveEvent_GetRect, 2761).
--define(wxEraseEvent_GetDC, 2762).
--define(wxFocusEvent_GetWindow, 2763).
--define(wxChildFocusEvent_GetWindow, 2764).
--define(wxMenuEvent_GetMenu, 2765).
--define(wxMenuEvent_GetMenuId, 2766).
--define(wxMenuEvent_IsPopup, 2767).
--define(wxCloseEvent_CanVeto, 2768).
--define(wxCloseEvent_GetLoggingOff, 2769).
--define(wxCloseEvent_SetCanVeto, 2770).
--define(wxCloseEvent_SetLoggingOff, 2771).
--define(wxCloseEvent_Veto, 2772).
--define(wxShowEvent_SetShow, 2773).
--define(wxShowEvent_IsShown, 2774).
--define(wxIconizeEvent_IsIconized, 2775).
--define(wxJoystickEvent_ButtonDown, 2776).
--define(wxJoystickEvent_ButtonIsDown, 2777).
--define(wxJoystickEvent_ButtonUp, 2778).
--define(wxJoystickEvent_GetButtonChange, 2779).
--define(wxJoystickEvent_GetButtonState, 2780).
--define(wxJoystickEvent_GetJoystick, 2781).
--define(wxJoystickEvent_GetPosition, 2782).
--define(wxJoystickEvent_GetZPosition, 2783).
--define(wxJoystickEvent_IsButton, 2784).
--define(wxJoystickEvent_IsMove, 2785).
--define(wxJoystickEvent_IsZMove, 2786).
--define(wxUpdateUIEvent_CanUpdate, 2787).
--define(wxUpdateUIEvent_Check, 2788).
--define(wxUpdateUIEvent_Enable, 2789).
--define(wxUpdateUIEvent_Show, 2790).
--define(wxUpdateUIEvent_GetChecked, 2791).
--define(wxUpdateUIEvent_GetEnabled, 2792).
--define(wxUpdateUIEvent_GetShown, 2793).
--define(wxUpdateUIEvent_GetSetChecked, 2794).
--define(wxUpdateUIEvent_GetSetEnabled, 2795).
--define(wxUpdateUIEvent_GetSetShown, 2796).
--define(wxUpdateUIEvent_GetSetText, 2797).
--define(wxUpdateUIEvent_GetText, 2798).
--define(wxUpdateUIEvent_GetMode, 2799).
--define(wxUpdateUIEvent_GetUpdateInterval, 2800).
--define(wxUpdateUIEvent_ResetUpdateTime, 2801).
--define(wxUpdateUIEvent_SetMode, 2802).
--define(wxUpdateUIEvent_SetText, 2803).
--define(wxUpdateUIEvent_SetUpdateInterval, 2804).
--define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2805).
--define(wxPaletteChangedEvent_SetChangedWindow, 2806).
--define(wxPaletteChangedEvent_GetChangedWindow, 2807).
--define(wxQueryNewPaletteEvent_SetPaletteRealized, 2808).
--define(wxQueryNewPaletteEvent_GetPaletteRealized, 2809).
--define(wxNavigationKeyEvent_GetDirection, 2810).
--define(wxNavigationKeyEvent_SetDirection, 2811).
--define(wxNavigationKeyEvent_IsWindowChange, 2812).
--define(wxNavigationKeyEvent_SetWindowChange, 2813).
--define(wxNavigationKeyEvent_IsFromTab, 2814).
--define(wxNavigationKeyEvent_SetFromTab, 2815).
--define(wxNavigationKeyEvent_GetCurrentFocus, 2816).
--define(wxNavigationKeyEvent_SetCurrentFocus, 2817).
--define(wxHelpEvent_GetOrigin, 2818).
--define(wxHelpEvent_GetPosition, 2819).
--define(wxHelpEvent_SetOrigin, 2820).
--define(wxHelpEvent_SetPosition, 2821).
--define(wxContextMenuEvent_GetPosition, 2822).
--define(wxContextMenuEvent_SetPosition, 2823).
--define(wxIdleEvent_GetMode, 2824).
--define(wxIdleEvent_RequestMore, 2825).
--define(wxIdleEvent_MoreRequested, 2826).
--define(wxIdleEvent_SetMode, 2827).
--define(wxGridEvent_AltDown, 2828).
--define(wxGridEvent_ControlDown, 2829).
--define(wxGridEvent_GetCol, 2830).
--define(wxGridEvent_GetPosition, 2831).
--define(wxGridEvent_GetRow, 2832).
--define(wxGridEvent_MetaDown, 2833).
--define(wxGridEvent_Selecting, 2834).
--define(wxGridEvent_ShiftDown, 2835).
--define(wxNotifyEvent_Allow, 2836).
--define(wxNotifyEvent_IsAllowed, 2837).
--define(wxNotifyEvent_Veto, 2838).
--define(wxSashEvent_GetEdge, 2839).
--define(wxSashEvent_GetDragRect, 2840).
--define(wxSashEvent_GetDragStatus, 2841).
--define(wxListEvent_GetCacheFrom, 2842).
--define(wxListEvent_GetCacheTo, 2843).
--define(wxListEvent_GetKeyCode, 2844).
--define(wxListEvent_GetIndex, 2845).
--define(wxListEvent_GetColumn, 2846).
--define(wxListEvent_GetPoint, 2847).
--define(wxListEvent_GetLabel, 2848).
--define(wxListEvent_GetText, 2849).
--define(wxListEvent_GetImage, 2850).
--define(wxListEvent_GetData, 2851).
--define(wxListEvent_GetMask, 2852).
--define(wxListEvent_GetItem, 2853).
--define(wxListEvent_IsEditCancelled, 2854).
--define(wxDateEvent_GetDate, 2855).
--define(wxCalendarEvent_GetWeekDay, 2856).
--define(wxCalendarEvent_GetDate, 2857).
--define(wxFileDirPickerEvent_GetPath, 2858).
--define(wxColourPickerEvent_GetColour, 2859).
--define(wxFontPickerEvent_GetFont, 2860).
--define(wxStyledTextEvent_GetPosition, 2861).
--define(wxStyledTextEvent_GetKey, 2862).
--define(wxStyledTextEvent_GetModifiers, 2863).
--define(wxStyledTextEvent_GetModificationType, 2864).
--define(wxStyledTextEvent_GetText, 2865).
--define(wxStyledTextEvent_GetLength, 2866).
--define(wxStyledTextEvent_GetLinesAdded, 2867).
--define(wxStyledTextEvent_GetLine, 2868).
--define(wxStyledTextEvent_GetFoldLevelNow, 2869).
--define(wxStyledTextEvent_GetFoldLevelPrev, 2870).
--define(wxStyledTextEvent_GetMargin, 2871).
--define(wxStyledTextEvent_GetMessage, 2872).
--define(wxStyledTextEvent_GetWParam, 2873).
--define(wxStyledTextEvent_GetLParam, 2874).
--define(wxStyledTextEvent_GetListType, 2875).
--define(wxStyledTextEvent_GetX, 2876).
--define(wxStyledTextEvent_GetY, 2877).
--define(wxStyledTextEvent_GetDragText, 2878).
--define(wxStyledTextEvent_GetDragAllowMove, 2879).
--define(wxStyledTextEvent_GetDragResult, 2880).
--define(wxStyledTextEvent_GetShift, 2881).
--define(wxStyledTextEvent_GetControl, 2882).
--define(wxStyledTextEvent_GetAlt, 2883).
--define(utils_wxGetKeyState, 2884).
--define(utils_wxGetMousePosition, 2885).
--define(utils_wxGetMouseState, 2886).
--define(utils_wxSetDetectableAutoRepeat, 2887).
--define(utils_wxBell, 2888).
--define(utils_wxFindMenuItemId, 2889).
--define(utils_wxFindWindowAtPoint, 2890).
--define(utils_wxBeginBusyCursor, 2891).
--define(utils_wxEndBusyCursor, 2892).
--define(utils_wxIsBusy, 2893).
--define(utils_wxShutdown, 2894).
--define(utils_wxShell, 2895).
--define(utils_wxLaunchDefaultBrowser, 2896).
--define(utils_wxGetEmailAddress, 2897).
--define(utils_wxGetUserId, 2898).
--define(utils_wxGetHomeDir, 2899).
--define(utils_wxNewId, 2900).
--define(utils_wxRegisterId, 2901).
--define(utils_wxGetCurrentId, 2902).
--define(utils_wxGetOsDescription, 2903).
--define(utils_wxIsPlatformLittleEndian, 2904).
--define(utils_wxIsPlatform64Bit, 2905).
--define(gdicmn_wxDisplaySize, 2906).
--define(gdicmn_wxSetCursor, 2907).
--define(wxPrintout_new, 2908).
--define(wxPrintout_destruct, 2909).
--define(wxPrintout_GetDC, 2910).
--define(wxPrintout_GetPageSizeMM, 2911).
--define(wxPrintout_GetPageSizePixels, 2912).
--define(wxPrintout_GetPaperRectPixels, 2913).
--define(wxPrintout_GetPPIPrinter, 2914).
--define(wxPrintout_GetPPIScreen, 2915).
--define(wxPrintout_GetTitle, 2916).
--define(wxPrintout_IsPreview, 2917).
--define(wxPrintout_FitThisSizeToPaper, 2918).
--define(wxPrintout_FitThisSizeToPage, 2919).
--define(wxPrintout_FitThisSizeToPageMargins, 2920).
--define(wxPrintout_MapScreenSizeToPaper, 2921).
--define(wxPrintout_MapScreenSizeToPage, 2922).
--define(wxPrintout_MapScreenSizeToPageMargins, 2923).
--define(wxPrintout_MapScreenSizeToDevice, 2924).
--define(wxPrintout_GetLogicalPaperRect, 2925).
--define(wxPrintout_GetLogicalPageRect, 2926).
--define(wxPrintout_GetLogicalPageMarginsRect, 2927).
--define(wxPrintout_SetLogicalOrigin, 2928).
--define(wxPrintout_OffsetLogicalOrigin, 2929).
--define(wxStyledTextCtrl_new_2, 2930).
--define(wxStyledTextCtrl_new_0, 2931).
--define(wxStyledTextCtrl_destruct, 2932).
--define(wxStyledTextCtrl_Create, 2933).
--define(wxStyledTextCtrl_AddText, 2934).
--define(wxStyledTextCtrl_InsertText, 2935).
--define(wxStyledTextCtrl_ClearAll, 2936).
--define(wxStyledTextCtrl_ClearDocumentStyle, 2937).
--define(wxStyledTextCtrl_GetLength, 2938).
--define(wxStyledTextCtrl_GetCharAt, 2939).
--define(wxStyledTextCtrl_GetCurrentPos, 2940).
--define(wxStyledTextCtrl_GetAnchor, 2941).
--define(wxStyledTextCtrl_GetStyleAt, 2942).
--define(wxStyledTextCtrl_Redo, 2943).
--define(wxStyledTextCtrl_SetUndoCollection, 2944).
--define(wxStyledTextCtrl_SelectAll, 2945).
--define(wxStyledTextCtrl_SetSavePoint, 2946).
--define(wxStyledTextCtrl_CanRedo, 2947).
--define(wxStyledTextCtrl_MarkerLineFromHandle, 2948).
--define(wxStyledTextCtrl_MarkerDeleteHandle, 2949).
--define(wxStyledTextCtrl_GetUndoCollection, 2950).
--define(wxStyledTextCtrl_GetViewWhiteSpace, 2951).
--define(wxStyledTextCtrl_SetViewWhiteSpace, 2952).
--define(wxStyledTextCtrl_PositionFromPoint, 2953).
--define(wxStyledTextCtrl_PositionFromPointClose, 2954).
--define(wxStyledTextCtrl_GotoLine, 2955).
--define(wxStyledTextCtrl_GotoPos, 2956).
--define(wxStyledTextCtrl_SetAnchor, 2957).
--define(wxStyledTextCtrl_GetCurLine, 2958).
--define(wxStyledTextCtrl_GetEndStyled, 2959).
--define(wxStyledTextCtrl_ConvertEOLs, 2960).
--define(wxStyledTextCtrl_GetEOLMode, 2961).
--define(wxStyledTextCtrl_SetEOLMode, 2962).
--define(wxStyledTextCtrl_StartStyling, 2963).
--define(wxStyledTextCtrl_SetStyling, 2964).
--define(wxStyledTextCtrl_GetBufferedDraw, 2965).
--define(wxStyledTextCtrl_SetBufferedDraw, 2966).
--define(wxStyledTextCtrl_SetTabWidth, 2967).
--define(wxStyledTextCtrl_GetTabWidth, 2968).
--define(wxStyledTextCtrl_SetCodePage, 2969).
--define(wxStyledTextCtrl_MarkerDefine, 2970).
--define(wxStyledTextCtrl_MarkerSetForeground, 2971).
--define(wxStyledTextCtrl_MarkerSetBackground, 2972).
--define(wxStyledTextCtrl_MarkerAdd, 2973).
--define(wxStyledTextCtrl_MarkerDelete, 2974).
--define(wxStyledTextCtrl_MarkerDeleteAll, 2975).
--define(wxStyledTextCtrl_MarkerGet, 2976).
--define(wxStyledTextCtrl_MarkerNext, 2977).
--define(wxStyledTextCtrl_MarkerPrevious, 2978).
--define(wxStyledTextCtrl_MarkerDefineBitmap, 2979).
--define(wxStyledTextCtrl_MarkerAddSet, 2980).
--define(wxStyledTextCtrl_MarkerSetAlpha, 2981).
--define(wxStyledTextCtrl_SetMarginType, 2982).
--define(wxStyledTextCtrl_GetMarginType, 2983).
--define(wxStyledTextCtrl_SetMarginWidth, 2984).
--define(wxStyledTextCtrl_GetMarginWidth, 2985).
--define(wxStyledTextCtrl_SetMarginMask, 2986).
--define(wxStyledTextCtrl_GetMarginMask, 2987).
--define(wxStyledTextCtrl_SetMarginSensitive, 2988).
--define(wxStyledTextCtrl_GetMarginSensitive, 2989).
--define(wxStyledTextCtrl_StyleClearAll, 2990).
--define(wxStyledTextCtrl_StyleSetForeground, 2991).
--define(wxStyledTextCtrl_StyleSetBackground, 2992).
--define(wxStyledTextCtrl_StyleSetBold, 2993).
--define(wxStyledTextCtrl_StyleSetItalic, 2994).
--define(wxStyledTextCtrl_StyleSetSize, 2995).
--define(wxStyledTextCtrl_StyleSetFaceName, 2996).
--define(wxStyledTextCtrl_StyleSetEOLFilled, 2997).
--define(wxStyledTextCtrl_StyleResetDefault, 2998).
--define(wxStyledTextCtrl_StyleSetUnderline, 2999).
--define(wxStyledTextCtrl_StyleSetCase, 3000).
--define(wxStyledTextCtrl_StyleSetHotSpot, 3001).
--define(wxStyledTextCtrl_SetSelForeground, 3002).
--define(wxStyledTextCtrl_SetSelBackground, 3003).
--define(wxStyledTextCtrl_GetSelAlpha, 3004).
--define(wxStyledTextCtrl_SetSelAlpha, 3005).
--define(wxStyledTextCtrl_SetCaretForeground, 3006).
--define(wxStyledTextCtrl_CmdKeyAssign, 3007).
--define(wxStyledTextCtrl_CmdKeyClear, 3008).
--define(wxStyledTextCtrl_CmdKeyClearAll, 3009).
--define(wxStyledTextCtrl_SetStyleBytes, 3010).
--define(wxStyledTextCtrl_StyleSetVisible, 3011).
--define(wxStyledTextCtrl_GetCaretPeriod, 3012).
--define(wxStyledTextCtrl_SetCaretPeriod, 3013).
--define(wxStyledTextCtrl_SetWordChars, 3014).
--define(wxStyledTextCtrl_BeginUndoAction, 3015).
--define(wxStyledTextCtrl_EndUndoAction, 3016).
--define(wxStyledTextCtrl_IndicatorSetStyle, 3017).
--define(wxStyledTextCtrl_IndicatorGetStyle, 3018).
--define(wxStyledTextCtrl_IndicatorSetForeground, 3019).
--define(wxStyledTextCtrl_IndicatorGetForeground, 3020).
--define(wxStyledTextCtrl_SetWhitespaceForeground, 3021).
--define(wxStyledTextCtrl_SetWhitespaceBackground, 3022).
--define(wxStyledTextCtrl_GetStyleBits, 3023).
--define(wxStyledTextCtrl_SetLineState, 3024).
--define(wxStyledTextCtrl_GetLineState, 3025).
--define(wxStyledTextCtrl_GetMaxLineState, 3026).
--define(wxStyledTextCtrl_GetCaretLineVisible, 3027).
--define(wxStyledTextCtrl_SetCaretLineVisible, 3028).
--define(wxStyledTextCtrl_GetCaretLineBackground, 3029).
--define(wxStyledTextCtrl_SetCaretLineBackground, 3030).
--define(wxStyledTextCtrl_AutoCompShow, 3031).
--define(wxStyledTextCtrl_AutoCompCancel, 3032).
--define(wxStyledTextCtrl_AutoCompActive, 3033).
--define(wxStyledTextCtrl_AutoCompPosStart, 3034).
--define(wxStyledTextCtrl_AutoCompComplete, 3035).
--define(wxStyledTextCtrl_AutoCompStops, 3036).
--define(wxStyledTextCtrl_AutoCompSetSeparator, 3037).
--define(wxStyledTextCtrl_AutoCompGetSeparator, 3038).
--define(wxStyledTextCtrl_AutoCompSelect, 3039).
--define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3040).
--define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3041).
--define(wxStyledTextCtrl_AutoCompSetFillUps, 3042).
--define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3043).
--define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3044).
--define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3045).
--define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3046).
--define(wxStyledTextCtrl_UserListShow, 3047).
--define(wxStyledTextCtrl_AutoCompSetAutoHide, 3048).
--define(wxStyledTextCtrl_AutoCompGetAutoHide, 3049).
--define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3050).
--define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3051).
--define(wxStyledTextCtrl_RegisterImage, 3052).
--define(wxStyledTextCtrl_ClearRegisteredImages, 3053).
--define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3054).
--define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3055).
--define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3056).
--define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3057).
--define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3058).
--define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3059).
--define(wxStyledTextCtrl_SetIndent, 3060).
--define(wxStyledTextCtrl_GetIndent, 3061).
--define(wxStyledTextCtrl_SetUseTabs, 3062).
--define(wxStyledTextCtrl_GetUseTabs, 3063).
--define(wxStyledTextCtrl_SetLineIndentation, 3064).
--define(wxStyledTextCtrl_GetLineIndentation, 3065).
--define(wxStyledTextCtrl_GetLineIndentPosition, 3066).
--define(wxStyledTextCtrl_GetColumn, 3067).
--define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3068).
--define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3069).
--define(wxStyledTextCtrl_SetIndentationGuides, 3070).
--define(wxStyledTextCtrl_GetIndentationGuides, 3071).
--define(wxStyledTextCtrl_SetHighlightGuide, 3072).
--define(wxStyledTextCtrl_GetHighlightGuide, 3073).
--define(wxStyledTextCtrl_GetLineEndPosition, 3074).
--define(wxStyledTextCtrl_GetCodePage, 3075).
--define(wxStyledTextCtrl_GetCaretForeground, 3076).
--define(wxStyledTextCtrl_GetReadOnly, 3077).
--define(wxStyledTextCtrl_SetCurrentPos, 3078).
--define(wxStyledTextCtrl_SetSelectionStart, 3079).
--define(wxStyledTextCtrl_GetSelectionStart, 3080).
--define(wxStyledTextCtrl_SetSelectionEnd, 3081).
--define(wxStyledTextCtrl_GetSelectionEnd, 3082).
--define(wxStyledTextCtrl_SetPrintMagnification, 3083).
--define(wxStyledTextCtrl_GetPrintMagnification, 3084).
--define(wxStyledTextCtrl_SetPrintColourMode, 3085).
--define(wxStyledTextCtrl_GetPrintColourMode, 3086).
--define(wxStyledTextCtrl_FindText, 3087).
--define(wxStyledTextCtrl_FormatRange, 3088).
--define(wxStyledTextCtrl_GetFirstVisibleLine, 3089).
--define(wxStyledTextCtrl_GetLine, 3090).
--define(wxStyledTextCtrl_GetLineCount, 3091).
--define(wxStyledTextCtrl_SetMarginLeft, 3092).
--define(wxStyledTextCtrl_GetMarginLeft, 3093).
--define(wxStyledTextCtrl_SetMarginRight, 3094).
--define(wxStyledTextCtrl_GetMarginRight, 3095).
--define(wxStyledTextCtrl_GetModify, 3096).
--define(wxStyledTextCtrl_SetSelection, 3097).
--define(wxStyledTextCtrl_GetSelectedText, 3098).
--define(wxStyledTextCtrl_GetTextRange, 3099).
--define(wxStyledTextCtrl_HideSelection, 3100).
--define(wxStyledTextCtrl_LineFromPosition, 3101).
--define(wxStyledTextCtrl_PositionFromLine, 3102).
--define(wxStyledTextCtrl_LineScroll, 3103).
--define(wxStyledTextCtrl_EnsureCaretVisible, 3104).
--define(wxStyledTextCtrl_ReplaceSelection, 3105).
--define(wxStyledTextCtrl_SetReadOnly, 3106).
--define(wxStyledTextCtrl_CanPaste, 3107).
--define(wxStyledTextCtrl_CanUndo, 3108).
--define(wxStyledTextCtrl_EmptyUndoBuffer, 3109).
--define(wxStyledTextCtrl_Undo, 3110).
--define(wxStyledTextCtrl_Cut, 3111).
--define(wxStyledTextCtrl_Copy, 3112).
--define(wxStyledTextCtrl_Paste, 3113).
--define(wxStyledTextCtrl_Clear, 3114).
--define(wxStyledTextCtrl_SetText, 3115).
--define(wxStyledTextCtrl_GetText, 3116).
--define(wxStyledTextCtrl_GetTextLength, 3117).
--define(wxStyledTextCtrl_GetOvertype, 3118).
--define(wxStyledTextCtrl_SetCaretWidth, 3119).
--define(wxStyledTextCtrl_GetCaretWidth, 3120).
--define(wxStyledTextCtrl_SetTargetStart, 3121).
--define(wxStyledTextCtrl_GetTargetStart, 3122).
--define(wxStyledTextCtrl_SetTargetEnd, 3123).
--define(wxStyledTextCtrl_GetTargetEnd, 3124).
--define(wxStyledTextCtrl_ReplaceTarget, 3125).
--define(wxStyledTextCtrl_SearchInTarget, 3126).
--define(wxStyledTextCtrl_SetSearchFlags, 3127).
--define(wxStyledTextCtrl_GetSearchFlags, 3128).
--define(wxStyledTextCtrl_CallTipShow, 3129).
--define(wxStyledTextCtrl_CallTipCancel, 3130).
--define(wxStyledTextCtrl_CallTipActive, 3131).
--define(wxStyledTextCtrl_CallTipPosAtStart, 3132).
--define(wxStyledTextCtrl_CallTipSetHighlight, 3133).
--define(wxStyledTextCtrl_CallTipSetBackground, 3134).
--define(wxStyledTextCtrl_CallTipSetForeground, 3135).
--define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3136).
--define(wxStyledTextCtrl_CallTipUseStyle, 3137).
--define(wxStyledTextCtrl_VisibleFromDocLine, 3138).
--define(wxStyledTextCtrl_DocLineFromVisible, 3139).
--define(wxStyledTextCtrl_WrapCount, 3140).
--define(wxStyledTextCtrl_SetFoldLevel, 3141).
--define(wxStyledTextCtrl_GetFoldLevel, 3142).
--define(wxStyledTextCtrl_GetLastChild, 3143).
--define(wxStyledTextCtrl_GetFoldParent, 3144).
--define(wxStyledTextCtrl_ShowLines, 3145).
--define(wxStyledTextCtrl_HideLines, 3146).
--define(wxStyledTextCtrl_GetLineVisible, 3147).
--define(wxStyledTextCtrl_SetFoldExpanded, 3148).
--define(wxStyledTextCtrl_GetFoldExpanded, 3149).
--define(wxStyledTextCtrl_ToggleFold, 3150).
--define(wxStyledTextCtrl_EnsureVisible, 3151).
--define(wxStyledTextCtrl_SetFoldFlags, 3152).
--define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3153).
--define(wxStyledTextCtrl_SetTabIndents, 3154).
--define(wxStyledTextCtrl_GetTabIndents, 3155).
--define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3156).
--define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3157).
--define(wxStyledTextCtrl_SetMouseDwellTime, 3158).
--define(wxStyledTextCtrl_GetMouseDwellTime, 3159).
--define(wxStyledTextCtrl_WordStartPosition, 3160).
--define(wxStyledTextCtrl_WordEndPosition, 3161).
--define(wxStyledTextCtrl_SetWrapMode, 3162).
--define(wxStyledTextCtrl_GetWrapMode, 3163).
--define(wxStyledTextCtrl_SetWrapVisualFlags, 3164).
--define(wxStyledTextCtrl_GetWrapVisualFlags, 3165).
--define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3166).
--define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3167).
--define(wxStyledTextCtrl_SetWrapStartIndent, 3168).
--define(wxStyledTextCtrl_GetWrapStartIndent, 3169).
--define(wxStyledTextCtrl_SetLayoutCache, 3170).
--define(wxStyledTextCtrl_GetLayoutCache, 3171).
--define(wxStyledTextCtrl_SetScrollWidth, 3172).
--define(wxStyledTextCtrl_GetScrollWidth, 3173).
--define(wxStyledTextCtrl_TextWidth, 3174).
--define(wxStyledTextCtrl_GetEndAtLastLine, 3175).
--define(wxStyledTextCtrl_TextHeight, 3176).
--define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3177).
--define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3178).
--define(wxStyledTextCtrl_AppendText, 3179).
--define(wxStyledTextCtrl_GetTwoPhaseDraw, 3180).
--define(wxStyledTextCtrl_SetTwoPhaseDraw, 3181).
--define(wxStyledTextCtrl_TargetFromSelection, 3182).
--define(wxStyledTextCtrl_LinesJoin, 3183).
--define(wxStyledTextCtrl_LinesSplit, 3184).
--define(wxStyledTextCtrl_SetFoldMarginColour, 3185).
--define(wxStyledTextCtrl_SetFoldMarginHiColour, 3186).
--define(wxStyledTextCtrl_LineDown, 3187).
--define(wxStyledTextCtrl_LineDownExtend, 3188).
--define(wxStyledTextCtrl_LineUp, 3189).
--define(wxStyledTextCtrl_LineUpExtend, 3190).
--define(wxStyledTextCtrl_CharLeft, 3191).
--define(wxStyledTextCtrl_CharLeftExtend, 3192).
--define(wxStyledTextCtrl_CharRight, 3193).
--define(wxStyledTextCtrl_CharRightExtend, 3194).
--define(wxStyledTextCtrl_WordLeft, 3195).
--define(wxStyledTextCtrl_WordLeftExtend, 3196).
--define(wxStyledTextCtrl_WordRight, 3197).
--define(wxStyledTextCtrl_WordRightExtend, 3198).
--define(wxStyledTextCtrl_Home, 3199).
--define(wxStyledTextCtrl_HomeExtend, 3200).
--define(wxStyledTextCtrl_LineEnd, 3201).
--define(wxStyledTextCtrl_LineEndExtend, 3202).
--define(wxStyledTextCtrl_DocumentStart, 3203).
--define(wxStyledTextCtrl_DocumentStartExtend, 3204).
--define(wxStyledTextCtrl_DocumentEnd, 3205).
--define(wxStyledTextCtrl_DocumentEndExtend, 3206).
--define(wxStyledTextCtrl_PageUp, 3207).
--define(wxStyledTextCtrl_PageUpExtend, 3208).
--define(wxStyledTextCtrl_PageDown, 3209).
--define(wxStyledTextCtrl_PageDownExtend, 3210).
--define(wxStyledTextCtrl_EditToggleOvertype, 3211).
--define(wxStyledTextCtrl_Cancel, 3212).
--define(wxStyledTextCtrl_DeleteBack, 3213).
--define(wxStyledTextCtrl_Tab, 3214).
--define(wxStyledTextCtrl_BackTab, 3215).
--define(wxStyledTextCtrl_NewLine, 3216).
--define(wxStyledTextCtrl_FormFeed, 3217).
--define(wxStyledTextCtrl_VCHome, 3218).
--define(wxStyledTextCtrl_VCHomeExtend, 3219).
--define(wxStyledTextCtrl_ZoomIn, 3220).
--define(wxStyledTextCtrl_ZoomOut, 3221).
--define(wxStyledTextCtrl_DelWordLeft, 3222).
--define(wxStyledTextCtrl_DelWordRight, 3223).
--define(wxStyledTextCtrl_LineCut, 3224).
--define(wxStyledTextCtrl_LineDelete, 3225).
--define(wxStyledTextCtrl_LineTranspose, 3226).
--define(wxStyledTextCtrl_LineDuplicate, 3227).
--define(wxStyledTextCtrl_LowerCase, 3228).
--define(wxStyledTextCtrl_UpperCase, 3229).
--define(wxStyledTextCtrl_LineScrollDown, 3230).
--define(wxStyledTextCtrl_LineScrollUp, 3231).
--define(wxStyledTextCtrl_DeleteBackNotLine, 3232).
--define(wxStyledTextCtrl_HomeDisplay, 3233).
--define(wxStyledTextCtrl_HomeDisplayExtend, 3234).
--define(wxStyledTextCtrl_LineEndDisplay, 3235).
--define(wxStyledTextCtrl_LineEndDisplayExtend, 3236).
--define(wxStyledTextCtrl_HomeWrapExtend, 3237).
--define(wxStyledTextCtrl_LineEndWrap, 3238).
--define(wxStyledTextCtrl_LineEndWrapExtend, 3239).
--define(wxStyledTextCtrl_VCHomeWrap, 3240).
--define(wxStyledTextCtrl_VCHomeWrapExtend, 3241).
--define(wxStyledTextCtrl_LineCopy, 3242).
--define(wxStyledTextCtrl_MoveCaretInsideView, 3243).
--define(wxStyledTextCtrl_LineLength, 3244).
--define(wxStyledTextCtrl_BraceHighlight, 3245).
--define(wxStyledTextCtrl_BraceBadLight, 3246).
--define(wxStyledTextCtrl_BraceMatch, 3247).
--define(wxStyledTextCtrl_GetViewEOL, 3248).
--define(wxStyledTextCtrl_SetViewEOL, 3249).
--define(wxStyledTextCtrl_SetModEventMask, 3250).
--define(wxStyledTextCtrl_GetEdgeColumn, 3251).
--define(wxStyledTextCtrl_SetEdgeColumn, 3252).
--define(wxStyledTextCtrl_SetEdgeMode, 3253).
--define(wxStyledTextCtrl_GetEdgeMode, 3254).
--define(wxStyledTextCtrl_GetEdgeColour, 3255).
--define(wxStyledTextCtrl_SetEdgeColour, 3256).
--define(wxStyledTextCtrl_SearchAnchor, 3257).
--define(wxStyledTextCtrl_SearchNext, 3258).
--define(wxStyledTextCtrl_SearchPrev, 3259).
--define(wxStyledTextCtrl_LinesOnScreen, 3260).
--define(wxStyledTextCtrl_UsePopUp, 3261).
--define(wxStyledTextCtrl_SelectionIsRectangle, 3262).
--define(wxStyledTextCtrl_SetZoom, 3263).
--define(wxStyledTextCtrl_GetZoom, 3264).
--define(wxStyledTextCtrl_GetModEventMask, 3265).
--define(wxStyledTextCtrl_SetSTCFocus, 3266).
--define(wxStyledTextCtrl_GetSTCFocus, 3267).
--define(wxStyledTextCtrl_SetStatus, 3268).
--define(wxStyledTextCtrl_GetStatus, 3269).
--define(wxStyledTextCtrl_SetMouseDownCaptures, 3270).
--define(wxStyledTextCtrl_GetMouseDownCaptures, 3271).
--define(wxStyledTextCtrl_SetSTCCursor, 3272).
--define(wxStyledTextCtrl_GetSTCCursor, 3273).
--define(wxStyledTextCtrl_SetControlCharSymbol, 3274).
--define(wxStyledTextCtrl_GetControlCharSymbol, 3275).
--define(wxStyledTextCtrl_WordPartLeft, 3276).
--define(wxStyledTextCtrl_WordPartLeftExtend, 3277).
--define(wxStyledTextCtrl_WordPartRight, 3278).
--define(wxStyledTextCtrl_WordPartRightExtend, 3279).
--define(wxStyledTextCtrl_SetVisiblePolicy, 3280).
--define(wxStyledTextCtrl_DelLineLeft, 3281).
--define(wxStyledTextCtrl_DelLineRight, 3282).
--define(wxStyledTextCtrl_GetXOffset, 3283).
--define(wxStyledTextCtrl_ChooseCaretX, 3284).
--define(wxStyledTextCtrl_SetXCaretPolicy, 3285).
--define(wxStyledTextCtrl_SetYCaretPolicy, 3286).
--define(wxStyledTextCtrl_GetPrintWrapMode, 3287).
--define(wxStyledTextCtrl_SetHotspotActiveForeground, 3288).
--define(wxStyledTextCtrl_SetHotspotActiveBackground, 3289).
--define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3290).
--define(wxStyledTextCtrl_SetHotspotSingleLine, 3291).
--define(wxStyledTextCtrl_ParaDownExtend, 3292).
--define(wxStyledTextCtrl_ParaUp, 3293).
--define(wxStyledTextCtrl_ParaUpExtend, 3294).
--define(wxStyledTextCtrl_PositionBefore, 3295).
--define(wxStyledTextCtrl_PositionAfter, 3296).
--define(wxStyledTextCtrl_CopyRange, 3297).
--define(wxStyledTextCtrl_CopyText, 3298).
--define(wxStyledTextCtrl_SetSelectionMode, 3299).
--define(wxStyledTextCtrl_GetSelectionMode, 3300).
--define(wxStyledTextCtrl_LineDownRectExtend, 3301).
--define(wxStyledTextCtrl_LineUpRectExtend, 3302).
--define(wxStyledTextCtrl_CharLeftRectExtend, 3303).
--define(wxStyledTextCtrl_CharRightRectExtend, 3304).
--define(wxStyledTextCtrl_HomeRectExtend, 3305).
--define(wxStyledTextCtrl_VCHomeRectExtend, 3306).
--define(wxStyledTextCtrl_LineEndRectExtend, 3307).
--define(wxStyledTextCtrl_PageUpRectExtend, 3308).
--define(wxStyledTextCtrl_PageDownRectExtend, 3309).
--define(wxStyledTextCtrl_StutteredPageUp, 3310).
--define(wxStyledTextCtrl_StutteredPageUpExtend, 3311).
--define(wxStyledTextCtrl_StutteredPageDown, 3312).
--define(wxStyledTextCtrl_StutteredPageDownExtend, 3313).
--define(wxStyledTextCtrl_WordLeftEnd, 3314).
--define(wxStyledTextCtrl_WordLeftEndExtend, 3315).
--define(wxStyledTextCtrl_WordRightEnd, 3316).
--define(wxStyledTextCtrl_WordRightEndExtend, 3317).
--define(wxStyledTextCtrl_SetWhitespaceChars, 3318).
--define(wxStyledTextCtrl_SetCharsDefault, 3319).
--define(wxStyledTextCtrl_AutoCompGetCurrent, 3320).
--define(wxStyledTextCtrl_Allocate, 3321).
--define(wxStyledTextCtrl_FindColumn, 3322).
--define(wxStyledTextCtrl_GetCaretSticky, 3323).
--define(wxStyledTextCtrl_SetCaretSticky, 3324).
--define(wxStyledTextCtrl_ToggleCaretSticky, 3325).
--define(wxStyledTextCtrl_SetPasteConvertEndings, 3326).
--define(wxStyledTextCtrl_GetPasteConvertEndings, 3327).
--define(wxStyledTextCtrl_SelectionDuplicate, 3328).
--define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3329).
--define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3330).
--define(wxStyledTextCtrl_StartRecord, 3331).
--define(wxStyledTextCtrl_StopRecord, 3332).
--define(wxStyledTextCtrl_SetLexer, 3333).
--define(wxStyledTextCtrl_GetLexer, 3334).
--define(wxStyledTextCtrl_Colourise, 3335).
--define(wxStyledTextCtrl_SetProperty, 3336).
--define(wxStyledTextCtrl_SetKeyWords, 3337).
--define(wxStyledTextCtrl_SetLexerLanguage, 3338).
--define(wxStyledTextCtrl_GetProperty, 3339).
--define(wxStyledTextCtrl_GetStyleBitsNeeded, 3340).
--define(wxStyledTextCtrl_GetCurrentLine, 3341).
--define(wxStyledTextCtrl_StyleSetSpec, 3342).
--define(wxStyledTextCtrl_StyleSetFont, 3343).
--define(wxStyledTextCtrl_StyleSetFontAttr, 3344).
--define(wxStyledTextCtrl_StyleSetCharacterSet, 3345).
--define(wxStyledTextCtrl_StyleSetFontEncoding, 3346).
--define(wxStyledTextCtrl_CmdKeyExecute, 3347).
--define(wxStyledTextCtrl_SetMargins, 3348).
--define(wxStyledTextCtrl_GetSelection, 3349).
--define(wxStyledTextCtrl_PointFromPosition, 3350).
--define(wxStyledTextCtrl_ScrollToLine, 3351).
--define(wxStyledTextCtrl_ScrollToColumn, 3352).
--define(wxStyledTextCtrl_SetVScrollBar, 3353).
--define(wxStyledTextCtrl_SetHScrollBar, 3354).
--define(wxStyledTextCtrl_GetLastKeydownProcessed, 3355).
--define(wxStyledTextCtrl_SetLastKeydownProcessed, 3356).
--define(wxStyledTextCtrl_SaveFile, 3357).
--define(wxStyledTextCtrl_LoadFile, 3358).
--define(wxStyledTextCtrl_DoDragOver, 3359).
--define(wxStyledTextCtrl_DoDropText, 3360).
--define(wxStyledTextCtrl_GetUseAntiAliasing, 3361).
--define(wxStyledTextCtrl_AddTextRaw, 3362).
--define(wxStyledTextCtrl_InsertTextRaw, 3363).
--define(wxStyledTextCtrl_GetCurLineRaw, 3364).
--define(wxStyledTextCtrl_GetLineRaw, 3365).
--define(wxStyledTextCtrl_GetSelectedTextRaw, 3366).
--define(wxStyledTextCtrl_GetTextRangeRaw, 3367).
--define(wxStyledTextCtrl_SetTextRaw, 3368).
--define(wxStyledTextCtrl_GetTextRaw, 3369).
--define(wxStyledTextCtrl_AppendTextRaw, 3370).
--define(wxArtProvider_GetBitmap, 3371).
--define(wxArtProvider_GetIcon, 3372).
--define(wxTreeEvent_GetKeyCode, 3373).
--define(wxTreeEvent_GetItem, 3374).
--define(wxTreeEvent_GetKeyEvent, 3375).
--define(wxTreeEvent_GetLabel, 3376).
--define(wxTreeEvent_GetOldItem, 3377).
--define(wxTreeEvent_GetPoint, 3378).
--define(wxTreeEvent_IsEditCancelled, 3379).
--define(wxTreeEvent_SetToolTip, 3380).
--define(wxBookCtrlEvent_GetOldSelection, 3381).
--define(wxBookCtrlEvent_GetSelection, 3382).
--define(wxBookCtrlEvent_SetOldSelection, 3383).
--define(wxBookCtrlEvent_SetSelection, 3384).
--define(wxFileDataObject_new, 3385).
--define(wxFileDataObject_AddFile, 3386).
--define(wxFileDataObject_GetFilenames, 3387).
--define(wxFileDataObject_destroy, 3388).
--define(wxTextDataObject_new, 3389).
--define(wxTextDataObject_GetTextLength, 3390).
--define(wxTextDataObject_GetText, 3391).
--define(wxTextDataObject_SetText, 3392).
--define(wxTextDataObject_destroy, 3393).
--define(wxBitmapDataObject_new_1_1, 3394).
--define(wxBitmapDataObject_new_1_0, 3395).
--define(wxBitmapDataObject_GetBitmap, 3396).
--define(wxBitmapDataObject_SetBitmap, 3397).
--define(wxBitmapDataObject_destroy, 3398).
--define(wxClipboard_new, 3399).
--define(wxClipboard_destruct, 3400).
--define(wxClipboard_AddData, 3401).
--define(wxClipboard_Clear, 3402).
--define(wxClipboard_Close, 3403).
--define(wxClipboard_Flush, 3404).
--define(wxClipboard_GetData, 3405).
--define(wxClipboard_IsOpened, 3406).
--define(wxClipboard_Open, 3407).
--define(wxClipboard_SetData, 3408).
--define(wxClipboard_UsePrimarySelection, 3409).
--define(wxClipboard_IsSupported, 3410).
--define(wxClipboard_Get, 3411).
--define(wxSpinEvent_GetPosition, 3412).
--define(wxSpinEvent_SetPosition, 3413).
--define(wxSplitterWindow_new_0, 3414).
--define(wxSplitterWindow_new_2, 3415).
--define(wxSplitterWindow_destruct, 3416).
--define(wxSplitterWindow_Create, 3417).
--define(wxSplitterWindow_GetMinimumPaneSize, 3418).
--define(wxSplitterWindow_GetSashGravity, 3419).
--define(wxSplitterWindow_GetSashPosition, 3420).
--define(wxSplitterWindow_GetSplitMode, 3421).
--define(wxSplitterWindow_GetWindow1, 3422).
--define(wxSplitterWindow_GetWindow2, 3423).
--define(wxSplitterWindow_Initialize, 3424).
--define(wxSplitterWindow_IsSplit, 3425).
--define(wxSplitterWindow_ReplaceWindow, 3426).
--define(wxSplitterWindow_SetSashGravity, 3427).
--define(wxSplitterWindow_SetSashPosition, 3428).
--define(wxSplitterWindow_SetMinimumPaneSize, 3429).
--define(wxSplitterWindow_SetSplitMode, 3430).
--define(wxSplitterWindow_SplitHorizontally, 3431).
--define(wxSplitterWindow_SplitVertically, 3432).
--define(wxSplitterWindow_Unsplit, 3433).
--define(wxSplitterWindow_UpdateSize, 3434).
--define(wxSplitterEvent_GetSashPosition, 3435).
--define(wxSplitterEvent_GetX, 3436).
--define(wxSplitterEvent_GetY, 3437).
--define(wxSplitterEvent_GetWindowBeingRemoved, 3438).
--define(wxSplitterEvent_SetSashPosition, 3439).
--define(wxHtmlWindow_new_0, 3440).
--define(wxHtmlWindow_new_2, 3441).
--define(wxHtmlWindow_AppendToPage, 3442).
--define(wxHtmlWindow_GetOpenedAnchor, 3443).
--define(wxHtmlWindow_GetOpenedPage, 3444).
--define(wxHtmlWindow_GetOpenedPageTitle, 3445).
--define(wxHtmlWindow_GetRelatedFrame, 3446).
--define(wxHtmlWindow_HistoryBack, 3447).
--define(wxHtmlWindow_HistoryCanBack, 3448).
--define(wxHtmlWindow_HistoryCanForward, 3449).
--define(wxHtmlWindow_HistoryClear, 3450).
--define(wxHtmlWindow_HistoryForward, 3451).
--define(wxHtmlWindow_LoadFile, 3452).
--define(wxHtmlWindow_LoadPage, 3453).
--define(wxHtmlWindow_SelectAll, 3454).
--define(wxHtmlWindow_SelectionToText, 3455).
--define(wxHtmlWindow_SelectLine, 3456).
--define(wxHtmlWindow_SelectWord, 3457).
--define(wxHtmlWindow_SetBorders, 3458).
--define(wxHtmlWindow_SetFonts, 3459).
--define(wxHtmlWindow_SetPage, 3460).
--define(wxHtmlWindow_SetRelatedFrame, 3461).
--define(wxHtmlWindow_SetRelatedStatusBar_1, 3462).
--define(wxHtmlWindow_SetRelatedStatusBar_2, 3463).
--define(wxHtmlWindow_ToText, 3464).
--define(wxHtmlWindow_destroy, 3465).
--define(wxHtmlLinkEvent_GetLinkInfo, 3466).
--define(wxSystemSettings_GetColour, 3467).
--define(wxSystemSettings_GetFont, 3468).
--define(wxSystemSettings_GetMetric, 3469).
--define(wxSystemSettings_GetScreenType, 3470).
--define(wxSystemOptions_GetOption, 3471).
--define(wxSystemOptions_GetOptionInt, 3472).
--define(wxSystemOptions_HasOption, 3473).
--define(wxSystemOptions_IsFalse, 3474).
--define(wxSystemOptions_SetOption_2_1, 3475).
--define(wxSystemOptions_SetOption_2_0, 3476).
--define(wxAuiNotebookEvent_SetSelection, 3477).
--define(wxAuiNotebookEvent_GetSelection, 3478).
--define(wxAuiNotebookEvent_SetOldSelection, 3479).
--define(wxAuiNotebookEvent_GetOldSelection, 3480).
--define(wxAuiNotebookEvent_SetDragSource, 3481).
--define(wxAuiNotebookEvent_GetDragSource, 3482).
--define(wxAuiManagerEvent_SetManager, 3483).
--define(wxAuiManagerEvent_GetManager, 3484).
--define(wxAuiManagerEvent_SetPane, 3485).
--define(wxAuiManagerEvent_GetPane, 3486).
--define(wxAuiManagerEvent_SetButton, 3487).
--define(wxAuiManagerEvent_GetButton, 3488).
--define(wxAuiManagerEvent_SetDC, 3489).
--define(wxAuiManagerEvent_GetDC, 3490).
--define(wxAuiManagerEvent_Veto, 3491).
--define(wxAuiManagerEvent_GetVeto, 3492).
--define(wxAuiManagerEvent_SetCanVeto, 3493).
--define(wxAuiManagerEvent_CanVeto, 3494).
--define(wxLogNull_new, 3495).
--define(wxLogNull_destruct, 3496).
--define(wxTaskBarIcon_new, 3497).
--define(wxTaskBarIcon_destruct, 3498).
--define(wxTaskBarIcon_PopupMenu, 3499).
--define(wxTaskBarIcon_RemoveIcon, 3500).
--define(wxTaskBarIcon_SetIcon, 3501).
--define(wxLocale_new_0, 3502).
--define(wxLocale_new_2_0, 3503).
--define(wxLocale_new_2_1, 3504).
--define(wxLocale_destruct, 3505).
--define(wxLocale_Init_1, 3506).
--define(wxLocale_Init_2, 3507).
--define(wxLocale_AddCatalog_1, 3508).
--define(wxLocale_AddCatalog_2, 3509).
--define(wxLocale_AddCatalog_3, 3510).
--define(wxLocale_AddCatalogLookupPathPrefix, 3511).
--define(wxLocale_GetCanonicalName, 3512).
--define(wxLocale_GetLanguage, 3513).
--define(wxLocale_GetLanguageName, 3514).
--define(wxLocale_GetLocale, 3515).
--define(wxLocale_GetName, 3516).
--define(wxLocale_GetString_2, 3517).
--define(wxLocale_GetString_4, 3518).
--define(wxLocale_GetHeaderValue, 3519).
--define(wxLocale_GetSysName, 3520).
--define(wxLocale_GetSystemEncoding, 3521).
--define(wxLocale_GetSystemEncodingName, 3522).
--define(wxLocale_GetSystemLanguage, 3523).
--define(wxLocale_IsLoaded, 3524).
--define(wxLocale_IsOk, 3525).
--define(wxActivateEvent_GetActive, 3526).
--define(wxPopupWindow_new_0, 3527).
--define(wxPopupWindow_new_2, 3528).
--define(wxPopupWindow_Create, 3529).
--define(wxPopupWindow_Position, 3530).
--define(wxPopupWindow_destroy, 3531).
--define(wxPopupTransientWindow_new_0, 3532).
--define(wxPopupTransientWindow_new_2, 3533).
--define(wxPopupTransientWindow_Popup, 3534).
--define(wxPopupTransientWindow_Dismiss, 3535).
--define(wxPopupTransientWindow_destroy, 3536).
--define(wxOverlay_new, 3537).
--define(wxOverlay_destruct, 3538).
--define(wxOverlay_Reset, 3539).
--define(wxDCOverlay_new_6, 3540).
--define(wxDCOverlay_new_2, 3541).
--define(wxDCOverlay_destruct, 3542).
--define(wxDCOverlay_Clear, 3543).
--define(wxDropFilesEvent_GetPosition, 3544).
--define(wxDropFilesEvent_GetNumberOfFiles, 3545).
--define(wxDropFilesEvent_GetFiles, 3546).
--define(wxDisplay_new_0, 3547).
--define(wxDisplay_new_1_0, 3548).
--define(wxDisplay_new_1_1, 3549).
--define(wxDisplay_destruct, 3550).
--define(wxDisplay_IsOk, 3551).
--define(wxDisplay_GetClientArea, 3552).
--define(wxDisplay_GetGeometry, 3553).
--define(wxDisplay_GetName, 3554).
--define(wxDisplay_IsPrimary, 3555).
--define(wxDisplay_GetCount, 3556).
--define(wxDisplay_GetFromPoint, 3557).
--define(wxDisplay_GetFromWindow, 3558).
--define(wxDisplay_GetPPI, 3559).
--define(wxGCDC_new_1, 3560).
--define(wxGCDC_new_0, 3563).
--define(wxGCDC_destruct, 3564).
--define(wxGCDC_GetGraphicsContext, 3565).
--define(wxGCDC_SetGraphicsContext, 3566).
--define(wxNotificationMessage_new_0, 3567).
--define(wxNotificationMessage_new_2, 3568).
--define(wxNotificationMessage_destruct, 3569).
--define(wxNotificationMessage_AddAction, 3570).
--define(wxNotificationMessage_Close, 3571).
--define(wxNotificationMessage_SetFlags, 3572).
--define(wxNotificationMessage_SetIcon, 3573).
--define(wxNotificationMessage_SetMessage, 3574).
--define(wxNotificationMessage_SetParent, 3575).
--define(wxNotificationMessage_SetTitle, 3576).
--define(wxNotificationMessage_Show, 3577).
--define(wxNotificationMessage_UseTaskBarIcon, 3578).
--define(wxNotificationMessage_MSWUseToasts, 3579).
--define(wxWebView_New, 3581).
--define(wxWebView_GetCurrentTitle, 3582).
--define(wxWebView_GetCurrentURL, 3583).
--define(wxWebView_GetPageSource, 3584).
--define(wxWebView_GetPageText, 3585).
--define(wxWebView_IsBusy, 3586).
--define(wxWebView_IsEditable, 3587).
--define(wxWebView_LoadURL, 3588).
--define(wxWebView_Print, 3589).
--define(wxWebView_Reload, 3590).
--define(wxWebView_RunScript, 3591).
--define(wxWebView_SetEditable, 3592).
--define(wxWebView_SetPage, 3593).
--define(wxWebView_Stop, 3594).
--define(wxWebView_CanCopy, 3595).
--define(wxWebView_CanCut, 3596).
--define(wxWebView_CanPaste, 3597).
--define(wxWebView_Copy, 3598).
--define(wxWebView_Cut, 3599).
--define(wxWebView_Paste, 3600).
--define(wxWebView_EnableContextMenu, 3601).
--define(wxWebView_IsContextMenuEnabled, 3602).
--define(wxWebView_CanGoBack, 3603).
--define(wxWebView_CanGoForward, 3604).
--define(wxWebView_ClearHistory, 3605).
--define(wxWebView_EnableHistory, 3606).
--define(wxWebView_GoBack, 3607).
--define(wxWebView_GoForward, 3608).
--define(wxWebView_ClearSelection, 3609).
--define(wxWebView_DeleteSelection, 3610).
--define(wxWebView_GetSelectedSource, 3611).
--define(wxWebView_GetSelectedText, 3612).
--define(wxWebView_HasSelection, 3613).
--define(wxWebView_SelectAll, 3614).
--define(wxWebView_CanRedo, 3615).
--define(wxWebView_CanUndo, 3616).
--define(wxWebView_Redo, 3617).
--define(wxWebView_Undo, 3618).
--define(wxWebView_Find, 3619).
--define(wxWebView_CanSetZoomType, 3620).
--define(wxWebView_GetZoom, 3621).
--define(wxWebView_GetZoomType, 3622).
--define(wxWebView_SetZoom, 3623).
--define(wxWebView_SetZoomType, 3624).
--define(wxWebView_GetZoomFactor, 3625).
--define(wxWebView_SetZoomFactor, 3626).
--define(wxWebView_IsBackendAvailable, 3627).
--define(wxWebViewEvent_GetString, 3628).
--define(wxWebViewEvent_GetInt, 3629).
--define(wxWebViewEvent_GetTarget, 3630).
--define(wxWebViewEvent_GetURL, 3631).
+-define(wxGLCanvas_CreateSurface, 2495).
+-define(wxGLCanvas_IsDisplaySupported, 2496).
+-define(wxGLCanvas_SwapBuffers, 2497).
+-define(wxGLCanvas_destroy, 2498).
+-define(wxGLContext_new, 2499).
+-define(wxGLContext_SetCurrent, 2500).
+-define(wxGLContext_IsOK, 2501).
+-define(wxGLContext_destroy, 2502).
+-define(wxAuiManager_new, 2503).
+-define(wxAuiManager_destruct, 2504).
+-define(wxAuiManager_AddPane_2_1, 2505).
+-define(wxAuiManager_AddPane_2_0, 2506).
+-define(wxAuiManager_AddPane_3, 2507).
+-define(wxAuiManager_DetachPane, 2508).
+-define(wxAuiManager_GetAllPanes, 2509).
+-define(wxAuiManager_GetArtProvider, 2510).
+-define(wxAuiManager_GetDockSizeConstraint, 2511).
+-define(wxAuiManager_GetFlags, 2512).
+-define(wxAuiManager_GetManagedWindow, 2513).
+-define(wxAuiManager_GetManager, 2514).
+-define(wxAuiManager_GetPane_1_1, 2515).
+-define(wxAuiManager_GetPane_1_0, 2516).
+-define(wxAuiManager_HideHint, 2517).
+-define(wxAuiManager_InsertPane, 2518).
+-define(wxAuiManager_LoadPaneInfo, 2519).
+-define(wxAuiManager_LoadPerspective, 2520).
+-define(wxAuiManager_SavePaneInfo, 2521).
+-define(wxAuiManager_SavePerspective, 2522).
+-define(wxAuiManager_SetArtProvider, 2523).
+-define(wxAuiManager_SetDockSizeConstraint, 2524).
+-define(wxAuiManager_SetFlags, 2525).
+-define(wxAuiManager_SetManagedWindow, 2526).
+-define(wxAuiManager_ShowHint, 2527).
+-define(wxAuiManager_UnInit, 2528).
+-define(wxAuiManager_Update, 2529).
+-define(wxAuiPaneInfo_new_0, 2530).
+-define(wxAuiPaneInfo_new_1, 2531).
+-define(wxAuiPaneInfo_BestSize_1, 2532).
+-define(wxAuiPaneInfo_BestSize_2, 2533).
+-define(wxAuiPaneInfo_Bottom, 2534).
+-define(wxAuiPaneInfo_BottomDockable, 2535).
+-define(wxAuiPaneInfo_Caption, 2536).
+-define(wxAuiPaneInfo_CaptionVisible, 2537).
+-define(wxAuiPaneInfo_Centre, 2538).
+-define(wxAuiPaneInfo_CentrePane, 2539).
+-define(wxAuiPaneInfo_CloseButton, 2540).
+-define(wxAuiPaneInfo_DefaultPane, 2541).
+-define(wxAuiPaneInfo_DestroyOnClose, 2542).
+-define(wxAuiPaneInfo_Direction, 2543).
+-define(wxAuiPaneInfo_Dock, 2544).
+-define(wxAuiPaneInfo_Dockable, 2545).
+-define(wxAuiPaneInfo_Fixed, 2546).
+-define(wxAuiPaneInfo_Float, 2547).
+-define(wxAuiPaneInfo_Floatable, 2548).
+-define(wxAuiPaneInfo_FloatingPosition_1, 2549).
+-define(wxAuiPaneInfo_FloatingPosition_2, 2550).
+-define(wxAuiPaneInfo_FloatingSize_1, 2551).
+-define(wxAuiPaneInfo_FloatingSize_2, 2552).
+-define(wxAuiPaneInfo_Gripper, 2553).
+-define(wxAuiPaneInfo_GripperTop, 2554).
+-define(wxAuiPaneInfo_HasBorder, 2555).
+-define(wxAuiPaneInfo_HasCaption, 2556).
+-define(wxAuiPaneInfo_HasCloseButton, 2557).
+-define(wxAuiPaneInfo_HasFlag, 2558).
+-define(wxAuiPaneInfo_HasGripper, 2559).
+-define(wxAuiPaneInfo_HasGripperTop, 2560).
+-define(wxAuiPaneInfo_HasMaximizeButton, 2561).
+-define(wxAuiPaneInfo_HasMinimizeButton, 2562).
+-define(wxAuiPaneInfo_HasPinButton, 2563).
+-define(wxAuiPaneInfo_Hide, 2564).
+-define(wxAuiPaneInfo_IsBottomDockable, 2565).
+-define(wxAuiPaneInfo_IsDocked, 2566).
+-define(wxAuiPaneInfo_IsFixed, 2567).
+-define(wxAuiPaneInfo_IsFloatable, 2568).
+-define(wxAuiPaneInfo_IsFloating, 2569).
+-define(wxAuiPaneInfo_IsLeftDockable, 2570).
+-define(wxAuiPaneInfo_IsMovable, 2571).
+-define(wxAuiPaneInfo_IsOk, 2572).
+-define(wxAuiPaneInfo_IsResizable, 2573).
+-define(wxAuiPaneInfo_IsRightDockable, 2574).
+-define(wxAuiPaneInfo_IsShown, 2575).
+-define(wxAuiPaneInfo_IsToolbar, 2576).
+-define(wxAuiPaneInfo_IsTopDockable, 2577).
+-define(wxAuiPaneInfo_Layer, 2578).
+-define(wxAuiPaneInfo_Left, 2579).
+-define(wxAuiPaneInfo_LeftDockable, 2580).
+-define(wxAuiPaneInfo_MaxSize_1, 2581).
+-define(wxAuiPaneInfo_MaxSize_2, 2582).
+-define(wxAuiPaneInfo_MaximizeButton, 2583).
+-define(wxAuiPaneInfo_MinSize_1, 2584).
+-define(wxAuiPaneInfo_MinSize_2, 2585).
+-define(wxAuiPaneInfo_MinimizeButton, 2586).
+-define(wxAuiPaneInfo_Movable, 2587).
+-define(wxAuiPaneInfo_Name, 2588).
+-define(wxAuiPaneInfo_PaneBorder, 2589).
+-define(wxAuiPaneInfo_PinButton, 2590).
+-define(wxAuiPaneInfo_Position, 2591).
+-define(wxAuiPaneInfo_Resizable, 2592).
+-define(wxAuiPaneInfo_Right, 2593).
+-define(wxAuiPaneInfo_RightDockable, 2594).
+-define(wxAuiPaneInfo_Row, 2595).
+-define(wxAuiPaneInfo_SafeSet, 2596).
+-define(wxAuiPaneInfo_SetFlag, 2597).
+-define(wxAuiPaneInfo_Show, 2598).
+-define(wxAuiPaneInfo_ToolbarPane, 2599).
+-define(wxAuiPaneInfo_Top, 2600).
+-define(wxAuiPaneInfo_TopDockable, 2601).
+-define(wxAuiPaneInfo_Window, 2602).
+-define(wxAuiPaneInfo_GetWindow, 2603).
+-define(wxAuiPaneInfo_GetFrame, 2604).
+-define(wxAuiPaneInfo_GetDirection, 2605).
+-define(wxAuiPaneInfo_GetLayer, 2606).
+-define(wxAuiPaneInfo_GetRow, 2607).
+-define(wxAuiPaneInfo_GetPosition, 2608).
+-define(wxAuiPaneInfo_GetFloatingPosition, 2609).
+-define(wxAuiPaneInfo_GetFloatingSize, 2610).
+-define(wxAuiPaneInfo_destroy, 2611).
+-define(wxAuiNotebook_new_0, 2612).
+-define(wxAuiNotebook_new_2, 2613).
+-define(wxAuiNotebook_AddPage_3, 2614).
+-define(wxAuiNotebook_AddPage_4, 2615).
+-define(wxAuiNotebook_Create_2, 2616).
+-define(wxAuiNotebook_Create_3, 2617).
+-define(wxAuiNotebook_DeletePage, 2618).
+-define(wxAuiNotebook_GetArtProvider, 2619).
+-define(wxAuiNotebook_GetPage, 2620).
+-define(wxAuiNotebook_GetPageBitmap, 2621).
+-define(wxAuiNotebook_GetPageCount, 2622).
+-define(wxAuiNotebook_GetPageIndex, 2623).
+-define(wxAuiNotebook_GetPageText, 2624).
+-define(wxAuiNotebook_GetSelection, 2625).
+-define(wxAuiNotebook_InsertPage_4, 2626).
+-define(wxAuiNotebook_InsertPage_5, 2627).
+-define(wxAuiNotebook_RemovePage, 2628).
+-define(wxAuiNotebook_SetArtProvider, 2629).
+-define(wxAuiNotebook_SetFont, 2630).
+-define(wxAuiNotebook_SetPageBitmap, 2631).
+-define(wxAuiNotebook_SetPageText, 2632).
+-define(wxAuiNotebook_SetSelection, 2633).
+-define(wxAuiNotebook_SetTabCtrlHeight, 2634).
+-define(wxAuiNotebook_SetUniformBitmapSize, 2635).
+-define(wxAuiNotebook_destroy, 2636).
+-define(wxAuiTabArt_SetFlags, 2637).
+-define(wxAuiTabArt_SetMeasuringFont, 2638).
+-define(wxAuiTabArt_SetNormalFont, 2639).
+-define(wxAuiTabArt_SetSelectedFont, 2640).
+-define(wxAuiTabArt_SetColour, 2641).
+-define(wxAuiTabArt_SetActiveColour, 2642).
+-define(wxAuiDockArt_GetColour, 2643).
+-define(wxAuiDockArt_GetFont, 2644).
+-define(wxAuiDockArt_GetMetric, 2645).
+-define(wxAuiDockArt_SetColour, 2646).
+-define(wxAuiDockArt_SetFont, 2647).
+-define(wxAuiDockArt_SetMetric, 2648).
+-define(wxAuiSimpleTabArt_new, 2649).
+-define(wxAuiSimpleTabArt_destroy, 2650).
+-define(wxMDIParentFrame_new_0, 2651).
+-define(wxMDIParentFrame_new_4, 2652).
+-define(wxMDIParentFrame_destruct, 2653).
+-define(wxMDIParentFrame_ActivateNext, 2654).
+-define(wxMDIParentFrame_ActivatePrevious, 2655).
+-define(wxMDIParentFrame_ArrangeIcons, 2656).
+-define(wxMDIParentFrame_Cascade, 2657).
+-define(wxMDIParentFrame_Create, 2658).
+-define(wxMDIParentFrame_GetActiveChild, 2659).
+-define(wxMDIParentFrame_GetClientWindow, 2660).
+-define(wxMDIParentFrame_Tile, 2661).
+-define(wxMDIChildFrame_new_0, 2662).
+-define(wxMDIChildFrame_new_4, 2663).
+-define(wxMDIChildFrame_destruct, 2664).
+-define(wxMDIChildFrame_Activate, 2665).
+-define(wxMDIChildFrame_Create, 2666).
+-define(wxMDIChildFrame_Maximize, 2667).
+-define(wxMDIChildFrame_Restore, 2668).
+-define(wxMDIClientWindow_new, 2669).
+-define(wxMDIClientWindow_CreateClient, 2670).
+-define(wxMDIClientWindow_destroy, 2671).
+-define(wxLayoutAlgorithm_new, 2672).
+-define(wxLayoutAlgorithm_destruct, 2673).
+-define(wxLayoutAlgorithm_LayoutFrame, 2674).
+-define(wxLayoutAlgorithm_LayoutMDIFrame, 2675).
+-define(wxLayoutAlgorithm_LayoutWindow, 2676).
+-define(wxEvent_GetId, 2677).
+-define(wxEvent_GetSkipped, 2678).
+-define(wxEvent_GetTimestamp, 2679).
+-define(wxEvent_IsCommandEvent, 2680).
+-define(wxEvent_ResumePropagation, 2681).
+-define(wxEvent_ShouldPropagate, 2682).
+-define(wxEvent_Skip, 2683).
+-define(wxEvent_StopPropagation, 2684).
+-define(wxCommandEvent_getClientData, 2685).
+-define(wxCommandEvent_GetExtraLong, 2686).
+-define(wxCommandEvent_GetInt, 2687).
+-define(wxCommandEvent_GetSelection, 2688).
+-define(wxCommandEvent_GetString, 2689).
+-define(wxCommandEvent_IsChecked, 2690).
+-define(wxCommandEvent_IsSelection, 2691).
+-define(wxCommandEvent_SetInt, 2692).
+-define(wxCommandEvent_SetString, 2693).
+-define(wxScrollEvent_GetOrientation, 2694).
+-define(wxScrollEvent_GetPosition, 2695).
+-define(wxScrollWinEvent_GetOrientation, 2696).
+-define(wxScrollWinEvent_GetPosition, 2697).
+-define(wxMouseEvent_AltDown, 2698).
+-define(wxMouseEvent_Button, 2699).
+-define(wxMouseEvent_ButtonDClick, 2700).
+-define(wxMouseEvent_ButtonDown, 2701).
+-define(wxMouseEvent_ButtonUp, 2702).
+-define(wxMouseEvent_CmdDown, 2703).
+-define(wxMouseEvent_ControlDown, 2704).
+-define(wxMouseEvent_Dragging, 2705).
+-define(wxMouseEvent_Entering, 2706).
+-define(wxMouseEvent_GetButton, 2707).
+-define(wxMouseEvent_GetPosition, 2708).
+-define(wxMouseEvent_GetLogicalPosition, 2710).
+-define(wxMouseEvent_GetLinesPerAction, 2711).
+-define(wxMouseEvent_GetWheelRotation, 2712).
+-define(wxMouseEvent_GetWheelDelta, 2713).
+-define(wxMouseEvent_GetX, 2714).
+-define(wxMouseEvent_GetY, 2715).
+-define(wxMouseEvent_IsButton, 2716).
+-define(wxMouseEvent_IsPageScroll, 2717).
+-define(wxMouseEvent_Leaving, 2718).
+-define(wxMouseEvent_LeftDClick, 2719).
+-define(wxMouseEvent_LeftDown, 2720).
+-define(wxMouseEvent_LeftIsDown, 2721).
+-define(wxMouseEvent_LeftUp, 2722).
+-define(wxMouseEvent_MetaDown, 2723).
+-define(wxMouseEvent_MiddleDClick, 2724).
+-define(wxMouseEvent_MiddleDown, 2725).
+-define(wxMouseEvent_MiddleIsDown, 2726).
+-define(wxMouseEvent_MiddleUp, 2727).
+-define(wxMouseEvent_Moving, 2728).
+-define(wxMouseEvent_RightDClick, 2729).
+-define(wxMouseEvent_RightDown, 2730).
+-define(wxMouseEvent_RightIsDown, 2731).
+-define(wxMouseEvent_RightUp, 2732).
+-define(wxMouseEvent_ShiftDown, 2733).
+-define(wxMouseEvent_GetWheelAxis, 2734).
+-define(wxMouseEvent_Aux1DClick, 2735).
+-define(wxMouseEvent_Aux1Down, 2736).
+-define(wxMouseEvent_Aux1Up, 2737).
+-define(wxMouseEvent_Aux2DClick, 2738).
+-define(wxMouseEvent_Aux2Down, 2739).
+-define(wxMouseEvent_Aux2Up, 2740).
+-define(wxSetCursorEvent_GetCursor, 2741).
+-define(wxSetCursorEvent_GetX, 2742).
+-define(wxSetCursorEvent_GetY, 2743).
+-define(wxSetCursorEvent_HasCursor, 2744).
+-define(wxSetCursorEvent_SetCursor, 2745).
+-define(wxKeyEvent_AltDown, 2746).
+-define(wxKeyEvent_CmdDown, 2747).
+-define(wxKeyEvent_ControlDown, 2748).
+-define(wxKeyEvent_GetKeyCode, 2749).
+-define(wxKeyEvent_GetModifiers, 2750).
+-define(wxKeyEvent_GetPosition, 2751).
+-define(wxKeyEvent_GetRawKeyCode, 2753).
+-define(wxKeyEvent_GetRawKeyFlags, 2754).
+-define(wxKeyEvent_GetUnicodeKey, 2755).
+-define(wxKeyEvent_GetX, 2756).
+-define(wxKeyEvent_GetY, 2757).
+-define(wxKeyEvent_HasModifiers, 2758).
+-define(wxKeyEvent_MetaDown, 2759).
+-define(wxKeyEvent_ShiftDown, 2760).
+-define(wxSizeEvent_GetSize, 2761).
+-define(wxSizeEvent_GetRect, 2762).
+-define(wxMoveEvent_GetPosition, 2763).
+-define(wxMoveEvent_GetRect, 2764).
+-define(wxEraseEvent_GetDC, 2765).
+-define(wxFocusEvent_GetWindow, 2766).
+-define(wxChildFocusEvent_GetWindow, 2767).
+-define(wxMenuEvent_GetMenu, 2768).
+-define(wxMenuEvent_GetMenuId, 2769).
+-define(wxMenuEvent_IsPopup, 2770).
+-define(wxCloseEvent_CanVeto, 2771).
+-define(wxCloseEvent_GetLoggingOff, 2772).
+-define(wxCloseEvent_SetCanVeto, 2773).
+-define(wxCloseEvent_SetLoggingOff, 2774).
+-define(wxCloseEvent_Veto, 2775).
+-define(wxShowEvent_SetShow, 2776).
+-define(wxShowEvent_IsShown, 2777).
+-define(wxIconizeEvent_IsIconized, 2778).
+-define(wxJoystickEvent_ButtonDown, 2779).
+-define(wxJoystickEvent_ButtonIsDown, 2780).
+-define(wxJoystickEvent_ButtonUp, 2781).
+-define(wxJoystickEvent_GetButtonChange, 2782).
+-define(wxJoystickEvent_GetButtonState, 2783).
+-define(wxJoystickEvent_GetJoystick, 2784).
+-define(wxJoystickEvent_GetPosition, 2785).
+-define(wxJoystickEvent_GetZPosition, 2786).
+-define(wxJoystickEvent_IsButton, 2787).
+-define(wxJoystickEvent_IsMove, 2788).
+-define(wxJoystickEvent_IsZMove, 2789).
+-define(wxUpdateUIEvent_CanUpdate, 2790).
+-define(wxUpdateUIEvent_Check, 2791).
+-define(wxUpdateUIEvent_Enable, 2792).
+-define(wxUpdateUIEvent_Show, 2793).
+-define(wxUpdateUIEvent_GetChecked, 2794).
+-define(wxUpdateUIEvent_GetEnabled, 2795).
+-define(wxUpdateUIEvent_GetShown, 2796).
+-define(wxUpdateUIEvent_GetSetChecked, 2797).
+-define(wxUpdateUIEvent_GetSetEnabled, 2798).
+-define(wxUpdateUIEvent_GetSetShown, 2799).
+-define(wxUpdateUIEvent_GetSetText, 2800).
+-define(wxUpdateUIEvent_GetText, 2801).
+-define(wxUpdateUIEvent_GetMode, 2802).
+-define(wxUpdateUIEvent_GetUpdateInterval, 2803).
+-define(wxUpdateUIEvent_ResetUpdateTime, 2804).
+-define(wxUpdateUIEvent_SetMode, 2805).
+-define(wxUpdateUIEvent_SetText, 2806).
+-define(wxUpdateUIEvent_SetUpdateInterval, 2807).
+-define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2808).
+-define(wxPaletteChangedEvent_SetChangedWindow, 2809).
+-define(wxPaletteChangedEvent_GetChangedWindow, 2810).
+-define(wxQueryNewPaletteEvent_SetPaletteRealized, 2811).
+-define(wxQueryNewPaletteEvent_GetPaletteRealized, 2812).
+-define(wxNavigationKeyEvent_GetDirection, 2813).
+-define(wxNavigationKeyEvent_SetDirection, 2814).
+-define(wxNavigationKeyEvent_IsWindowChange, 2815).
+-define(wxNavigationKeyEvent_SetWindowChange, 2816).
+-define(wxNavigationKeyEvent_IsFromTab, 2817).
+-define(wxNavigationKeyEvent_SetFromTab, 2818).
+-define(wxNavigationKeyEvent_GetCurrentFocus, 2819).
+-define(wxNavigationKeyEvent_SetCurrentFocus, 2820).
+-define(wxHelpEvent_GetOrigin, 2821).
+-define(wxHelpEvent_GetPosition, 2822).
+-define(wxHelpEvent_SetOrigin, 2823).
+-define(wxHelpEvent_SetPosition, 2824).
+-define(wxContextMenuEvent_GetPosition, 2825).
+-define(wxContextMenuEvent_SetPosition, 2826).
+-define(wxIdleEvent_GetMode, 2827).
+-define(wxIdleEvent_RequestMore, 2828).
+-define(wxIdleEvent_MoreRequested, 2829).
+-define(wxIdleEvent_SetMode, 2830).
+-define(wxGridEvent_AltDown, 2831).
+-define(wxGridEvent_ControlDown, 2832).
+-define(wxGridEvent_GetCol, 2833).
+-define(wxGridEvent_GetPosition, 2834).
+-define(wxGridEvent_GetRow, 2835).
+-define(wxGridEvent_MetaDown, 2836).
+-define(wxGridEvent_Selecting, 2837).
+-define(wxGridEvent_ShiftDown, 2838).
+-define(wxNotifyEvent_Allow, 2839).
+-define(wxNotifyEvent_IsAllowed, 2840).
+-define(wxNotifyEvent_Veto, 2841).
+-define(wxSashEvent_GetEdge, 2842).
+-define(wxSashEvent_GetDragRect, 2843).
+-define(wxSashEvent_GetDragStatus, 2844).
+-define(wxListEvent_GetCacheFrom, 2845).
+-define(wxListEvent_GetCacheTo, 2846).
+-define(wxListEvent_GetKeyCode, 2847).
+-define(wxListEvent_GetIndex, 2848).
+-define(wxListEvent_GetColumn, 2849).
+-define(wxListEvent_GetPoint, 2850).
+-define(wxListEvent_GetLabel, 2851).
+-define(wxListEvent_GetText, 2852).
+-define(wxListEvent_GetImage, 2853).
+-define(wxListEvent_GetData, 2854).
+-define(wxListEvent_GetMask, 2855).
+-define(wxListEvent_GetItem, 2856).
+-define(wxListEvent_IsEditCancelled, 2857).
+-define(wxDateEvent_GetDate, 2858).
+-define(wxCalendarEvent_GetWeekDay, 2859).
+-define(wxCalendarEvent_GetDate, 2860).
+-define(wxFileDirPickerEvent_GetPath, 2861).
+-define(wxColourPickerEvent_GetColour, 2862).
+-define(wxFontPickerEvent_GetFont, 2863).
+-define(wxStyledTextEvent_GetPosition, 2864).
+-define(wxStyledTextEvent_GetKey, 2865).
+-define(wxStyledTextEvent_GetModifiers, 2866).
+-define(wxStyledTextEvent_GetModificationType, 2867).
+-define(wxStyledTextEvent_GetText, 2868).
+-define(wxStyledTextEvent_GetLength, 2869).
+-define(wxStyledTextEvent_GetLinesAdded, 2870).
+-define(wxStyledTextEvent_GetLine, 2871).
+-define(wxStyledTextEvent_GetFoldLevelNow, 2872).
+-define(wxStyledTextEvent_GetFoldLevelPrev, 2873).
+-define(wxStyledTextEvent_GetMargin, 2874).
+-define(wxStyledTextEvent_GetMessage, 2875).
+-define(wxStyledTextEvent_GetWParam, 2876).
+-define(wxStyledTextEvent_GetLParam, 2877).
+-define(wxStyledTextEvent_GetListType, 2878).
+-define(wxStyledTextEvent_GetX, 2879).
+-define(wxStyledTextEvent_GetY, 2880).
+-define(wxStyledTextEvent_GetDragText, 2881).
+-define(wxStyledTextEvent_GetDragAllowMove, 2882).
+-define(wxStyledTextEvent_GetDragResult, 2883).
+-define(wxStyledTextEvent_GetShift, 2884).
+-define(wxStyledTextEvent_GetControl, 2885).
+-define(wxStyledTextEvent_GetAlt, 2886).
+-define(utils_wxGetKeyState, 2887).
+-define(utils_wxGetMousePosition, 2888).
+-define(utils_wxGetMouseState, 2889).
+-define(utils_wxSetDetectableAutoRepeat, 2890).
+-define(utils_wxBell, 2891).
+-define(utils_wxFindMenuItemId, 2892).
+-define(utils_wxFindWindowAtPoint, 2893).
+-define(utils_wxBeginBusyCursor, 2894).
+-define(utils_wxEndBusyCursor, 2895).
+-define(utils_wxIsBusy, 2896).
+-define(utils_wxShutdown, 2897).
+-define(utils_wxShell, 2898).
+-define(utils_wxLaunchDefaultBrowser, 2899).
+-define(utils_wxGetEmailAddress, 2900).
+-define(utils_wxGetUserId, 2901).
+-define(utils_wxGetHomeDir, 2902).
+-define(utils_wxNewId, 2903).
+-define(utils_wxRegisterId, 2904).
+-define(utils_wxGetCurrentId, 2905).
+-define(utils_wxGetOsDescription, 2906).
+-define(utils_wxIsPlatformLittleEndian, 2907).
+-define(utils_wxIsPlatform64Bit, 2908).
+-define(gdicmn_wxDisplaySize, 2909).
+-define(gdicmn_wxSetCursor, 2910).
+-define(wxPrintout_new, 2911).
+-define(wxPrintout_destruct, 2912).
+-define(wxPrintout_GetDC, 2913).
+-define(wxPrintout_GetPageSizeMM, 2914).
+-define(wxPrintout_GetPageSizePixels, 2915).
+-define(wxPrintout_GetPaperRectPixels, 2916).
+-define(wxPrintout_GetPPIPrinter, 2917).
+-define(wxPrintout_GetPPIScreen, 2918).
+-define(wxPrintout_GetTitle, 2919).
+-define(wxPrintout_IsPreview, 2920).
+-define(wxPrintout_FitThisSizeToPaper, 2921).
+-define(wxPrintout_FitThisSizeToPage, 2922).
+-define(wxPrintout_FitThisSizeToPageMargins, 2923).
+-define(wxPrintout_MapScreenSizeToPaper, 2924).
+-define(wxPrintout_MapScreenSizeToPage, 2925).
+-define(wxPrintout_MapScreenSizeToPageMargins, 2926).
+-define(wxPrintout_MapScreenSizeToDevice, 2927).
+-define(wxPrintout_GetLogicalPaperRect, 2928).
+-define(wxPrintout_GetLogicalPageRect, 2929).
+-define(wxPrintout_GetLogicalPageMarginsRect, 2930).
+-define(wxPrintout_SetLogicalOrigin, 2931).
+-define(wxPrintout_OffsetLogicalOrigin, 2932).
+-define(wxStyledTextCtrl_new_2, 2933).
+-define(wxStyledTextCtrl_new_0, 2934).
+-define(wxStyledTextCtrl_destruct, 2935).
+-define(wxStyledTextCtrl_Create, 2936).
+-define(wxStyledTextCtrl_AddText, 2937).
+-define(wxStyledTextCtrl_InsertText, 2938).
+-define(wxStyledTextCtrl_ClearAll, 2939).
+-define(wxStyledTextCtrl_ClearDocumentStyle, 2940).
+-define(wxStyledTextCtrl_GetLength, 2941).
+-define(wxStyledTextCtrl_GetCharAt, 2942).
+-define(wxStyledTextCtrl_GetCurrentPos, 2943).
+-define(wxStyledTextCtrl_GetAnchor, 2944).
+-define(wxStyledTextCtrl_GetStyleAt, 2945).
+-define(wxStyledTextCtrl_Redo, 2946).
+-define(wxStyledTextCtrl_SetUndoCollection, 2947).
+-define(wxStyledTextCtrl_SelectAll, 2948).
+-define(wxStyledTextCtrl_SetSavePoint, 2949).
+-define(wxStyledTextCtrl_CanRedo, 2950).
+-define(wxStyledTextCtrl_MarkerLineFromHandle, 2951).
+-define(wxStyledTextCtrl_MarkerDeleteHandle, 2952).
+-define(wxStyledTextCtrl_GetUndoCollection, 2953).
+-define(wxStyledTextCtrl_GetViewWhiteSpace, 2954).
+-define(wxStyledTextCtrl_SetViewWhiteSpace, 2955).
+-define(wxStyledTextCtrl_PositionFromPoint, 2956).
+-define(wxStyledTextCtrl_PositionFromPointClose, 2957).
+-define(wxStyledTextCtrl_GotoLine, 2958).
+-define(wxStyledTextCtrl_GotoPos, 2959).
+-define(wxStyledTextCtrl_SetAnchor, 2960).
+-define(wxStyledTextCtrl_GetCurLine, 2961).
+-define(wxStyledTextCtrl_GetEndStyled, 2962).
+-define(wxStyledTextCtrl_ConvertEOLs, 2963).
+-define(wxStyledTextCtrl_GetEOLMode, 2964).
+-define(wxStyledTextCtrl_SetEOLMode, 2965).
+-define(wxStyledTextCtrl_StartStyling, 2966).
+-define(wxStyledTextCtrl_SetStyling, 2967).
+-define(wxStyledTextCtrl_GetBufferedDraw, 2968).
+-define(wxStyledTextCtrl_SetBufferedDraw, 2969).
+-define(wxStyledTextCtrl_SetTabWidth, 2970).
+-define(wxStyledTextCtrl_GetTabWidth, 2971).
+-define(wxStyledTextCtrl_SetCodePage, 2972).
+-define(wxStyledTextCtrl_MarkerDefine, 2973).
+-define(wxStyledTextCtrl_MarkerSetForeground, 2974).
+-define(wxStyledTextCtrl_MarkerSetBackground, 2975).
+-define(wxStyledTextCtrl_MarkerAdd, 2976).
+-define(wxStyledTextCtrl_MarkerDelete, 2977).
+-define(wxStyledTextCtrl_MarkerDeleteAll, 2978).
+-define(wxStyledTextCtrl_MarkerGet, 2979).
+-define(wxStyledTextCtrl_MarkerNext, 2980).
+-define(wxStyledTextCtrl_MarkerPrevious, 2981).
+-define(wxStyledTextCtrl_MarkerDefineBitmap, 2982).
+-define(wxStyledTextCtrl_MarkerAddSet, 2983).
+-define(wxStyledTextCtrl_MarkerSetAlpha, 2984).
+-define(wxStyledTextCtrl_SetMarginType, 2985).
+-define(wxStyledTextCtrl_GetMarginType, 2986).
+-define(wxStyledTextCtrl_SetMarginWidth, 2987).
+-define(wxStyledTextCtrl_GetMarginWidth, 2988).
+-define(wxStyledTextCtrl_SetMarginMask, 2989).
+-define(wxStyledTextCtrl_GetMarginMask, 2990).
+-define(wxStyledTextCtrl_SetMarginSensitive, 2991).
+-define(wxStyledTextCtrl_GetMarginSensitive, 2992).
+-define(wxStyledTextCtrl_StyleClearAll, 2993).
+-define(wxStyledTextCtrl_StyleSetForeground, 2994).
+-define(wxStyledTextCtrl_StyleSetBackground, 2995).
+-define(wxStyledTextCtrl_StyleSetBold, 2996).
+-define(wxStyledTextCtrl_StyleSetItalic, 2997).
+-define(wxStyledTextCtrl_StyleSetSize, 2998).
+-define(wxStyledTextCtrl_StyleSetFaceName, 2999).
+-define(wxStyledTextCtrl_StyleSetEOLFilled, 3000).
+-define(wxStyledTextCtrl_StyleResetDefault, 3001).
+-define(wxStyledTextCtrl_StyleSetUnderline, 3002).
+-define(wxStyledTextCtrl_StyleSetCase, 3003).
+-define(wxStyledTextCtrl_StyleSetHotSpot, 3004).
+-define(wxStyledTextCtrl_SetSelForeground, 3005).
+-define(wxStyledTextCtrl_SetSelBackground, 3006).
+-define(wxStyledTextCtrl_GetSelAlpha, 3007).
+-define(wxStyledTextCtrl_SetSelAlpha, 3008).
+-define(wxStyledTextCtrl_SetCaretForeground, 3009).
+-define(wxStyledTextCtrl_CmdKeyAssign, 3010).
+-define(wxStyledTextCtrl_CmdKeyClear, 3011).
+-define(wxStyledTextCtrl_CmdKeyClearAll, 3012).
+-define(wxStyledTextCtrl_SetStyleBytes, 3013).
+-define(wxStyledTextCtrl_StyleSetVisible, 3014).
+-define(wxStyledTextCtrl_GetCaretPeriod, 3015).
+-define(wxStyledTextCtrl_SetCaretPeriod, 3016).
+-define(wxStyledTextCtrl_SetWordChars, 3017).
+-define(wxStyledTextCtrl_BeginUndoAction, 3018).
+-define(wxStyledTextCtrl_EndUndoAction, 3019).
+-define(wxStyledTextCtrl_IndicatorSetStyle, 3020).
+-define(wxStyledTextCtrl_IndicatorGetStyle, 3021).
+-define(wxStyledTextCtrl_IndicatorSetForeground, 3022).
+-define(wxStyledTextCtrl_IndicatorGetForeground, 3023).
+-define(wxStyledTextCtrl_SetWhitespaceForeground, 3024).
+-define(wxStyledTextCtrl_SetWhitespaceBackground, 3025).
+-define(wxStyledTextCtrl_GetStyleBits, 3026).
+-define(wxStyledTextCtrl_SetLineState, 3027).
+-define(wxStyledTextCtrl_GetLineState, 3028).
+-define(wxStyledTextCtrl_GetMaxLineState, 3029).
+-define(wxStyledTextCtrl_GetCaretLineVisible, 3030).
+-define(wxStyledTextCtrl_SetCaretLineVisible, 3031).
+-define(wxStyledTextCtrl_GetCaretLineBackground, 3032).
+-define(wxStyledTextCtrl_SetCaretLineBackground, 3033).
+-define(wxStyledTextCtrl_AutoCompShow, 3034).
+-define(wxStyledTextCtrl_AutoCompCancel, 3035).
+-define(wxStyledTextCtrl_AutoCompActive, 3036).
+-define(wxStyledTextCtrl_AutoCompPosStart, 3037).
+-define(wxStyledTextCtrl_AutoCompComplete, 3038).
+-define(wxStyledTextCtrl_AutoCompStops, 3039).
+-define(wxStyledTextCtrl_AutoCompSetSeparator, 3040).
+-define(wxStyledTextCtrl_AutoCompGetSeparator, 3041).
+-define(wxStyledTextCtrl_AutoCompSelect, 3042).
+-define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3043).
+-define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3044).
+-define(wxStyledTextCtrl_AutoCompSetFillUps, 3045).
+-define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3046).
+-define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3047).
+-define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3048).
+-define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3049).
+-define(wxStyledTextCtrl_UserListShow, 3050).
+-define(wxStyledTextCtrl_AutoCompSetAutoHide, 3051).
+-define(wxStyledTextCtrl_AutoCompGetAutoHide, 3052).
+-define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3053).
+-define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3054).
+-define(wxStyledTextCtrl_RegisterImage, 3055).
+-define(wxStyledTextCtrl_ClearRegisteredImages, 3056).
+-define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3057).
+-define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3058).
+-define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3059).
+-define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3060).
+-define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3061).
+-define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3062).
+-define(wxStyledTextCtrl_SetIndent, 3063).
+-define(wxStyledTextCtrl_GetIndent, 3064).
+-define(wxStyledTextCtrl_SetUseTabs, 3065).
+-define(wxStyledTextCtrl_GetUseTabs, 3066).
+-define(wxStyledTextCtrl_SetLineIndentation, 3067).
+-define(wxStyledTextCtrl_GetLineIndentation, 3068).
+-define(wxStyledTextCtrl_GetLineIndentPosition, 3069).
+-define(wxStyledTextCtrl_GetColumn, 3070).
+-define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3071).
+-define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3072).
+-define(wxStyledTextCtrl_SetIndentationGuides, 3073).
+-define(wxStyledTextCtrl_GetIndentationGuides, 3074).
+-define(wxStyledTextCtrl_SetHighlightGuide, 3075).
+-define(wxStyledTextCtrl_GetHighlightGuide, 3076).
+-define(wxStyledTextCtrl_GetLineEndPosition, 3077).
+-define(wxStyledTextCtrl_GetCodePage, 3078).
+-define(wxStyledTextCtrl_GetCaretForeground, 3079).
+-define(wxStyledTextCtrl_GetReadOnly, 3080).
+-define(wxStyledTextCtrl_SetCurrentPos, 3081).
+-define(wxStyledTextCtrl_SetSelectionStart, 3082).
+-define(wxStyledTextCtrl_GetSelectionStart, 3083).
+-define(wxStyledTextCtrl_SetSelectionEnd, 3084).
+-define(wxStyledTextCtrl_GetSelectionEnd, 3085).
+-define(wxStyledTextCtrl_SetPrintMagnification, 3086).
+-define(wxStyledTextCtrl_GetPrintMagnification, 3087).
+-define(wxStyledTextCtrl_SetPrintColourMode, 3088).
+-define(wxStyledTextCtrl_GetPrintColourMode, 3089).
+-define(wxStyledTextCtrl_FindText, 3090).
+-define(wxStyledTextCtrl_FormatRange, 3091).
+-define(wxStyledTextCtrl_GetFirstVisibleLine, 3092).
+-define(wxStyledTextCtrl_GetLine, 3093).
+-define(wxStyledTextCtrl_GetLineCount, 3094).
+-define(wxStyledTextCtrl_SetMarginLeft, 3095).
+-define(wxStyledTextCtrl_GetMarginLeft, 3096).
+-define(wxStyledTextCtrl_SetMarginRight, 3097).
+-define(wxStyledTextCtrl_GetMarginRight, 3098).
+-define(wxStyledTextCtrl_GetModify, 3099).
+-define(wxStyledTextCtrl_SetSelection, 3100).
+-define(wxStyledTextCtrl_GetSelectedText, 3101).
+-define(wxStyledTextCtrl_GetTextRange, 3102).
+-define(wxStyledTextCtrl_HideSelection, 3103).
+-define(wxStyledTextCtrl_LineFromPosition, 3104).
+-define(wxStyledTextCtrl_PositionFromLine, 3105).
+-define(wxStyledTextCtrl_LineScroll, 3106).
+-define(wxStyledTextCtrl_EnsureCaretVisible, 3107).
+-define(wxStyledTextCtrl_ReplaceSelection, 3108).
+-define(wxStyledTextCtrl_SetReadOnly, 3109).
+-define(wxStyledTextCtrl_CanPaste, 3110).
+-define(wxStyledTextCtrl_CanUndo, 3111).
+-define(wxStyledTextCtrl_EmptyUndoBuffer, 3112).
+-define(wxStyledTextCtrl_Undo, 3113).
+-define(wxStyledTextCtrl_Cut, 3114).
+-define(wxStyledTextCtrl_Copy, 3115).
+-define(wxStyledTextCtrl_Paste, 3116).
+-define(wxStyledTextCtrl_Clear, 3117).
+-define(wxStyledTextCtrl_SetText, 3118).
+-define(wxStyledTextCtrl_GetText, 3119).
+-define(wxStyledTextCtrl_GetTextLength, 3120).
+-define(wxStyledTextCtrl_GetOvertype, 3121).
+-define(wxStyledTextCtrl_SetCaretWidth, 3122).
+-define(wxStyledTextCtrl_GetCaretWidth, 3123).
+-define(wxStyledTextCtrl_SetTargetStart, 3124).
+-define(wxStyledTextCtrl_GetTargetStart, 3125).
+-define(wxStyledTextCtrl_SetTargetEnd, 3126).
+-define(wxStyledTextCtrl_GetTargetEnd, 3127).
+-define(wxStyledTextCtrl_ReplaceTarget, 3128).
+-define(wxStyledTextCtrl_SearchInTarget, 3129).
+-define(wxStyledTextCtrl_SetSearchFlags, 3130).
+-define(wxStyledTextCtrl_GetSearchFlags, 3131).
+-define(wxStyledTextCtrl_CallTipShow, 3132).
+-define(wxStyledTextCtrl_CallTipCancel, 3133).
+-define(wxStyledTextCtrl_CallTipActive, 3134).
+-define(wxStyledTextCtrl_CallTipPosAtStart, 3135).
+-define(wxStyledTextCtrl_CallTipSetHighlight, 3136).
+-define(wxStyledTextCtrl_CallTipSetBackground, 3137).
+-define(wxStyledTextCtrl_CallTipSetForeground, 3138).
+-define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3139).
+-define(wxStyledTextCtrl_CallTipUseStyle, 3140).
+-define(wxStyledTextCtrl_VisibleFromDocLine, 3141).
+-define(wxStyledTextCtrl_DocLineFromVisible, 3142).
+-define(wxStyledTextCtrl_WrapCount, 3143).
+-define(wxStyledTextCtrl_SetFoldLevel, 3144).
+-define(wxStyledTextCtrl_GetFoldLevel, 3145).
+-define(wxStyledTextCtrl_GetLastChild, 3146).
+-define(wxStyledTextCtrl_GetFoldParent, 3147).
+-define(wxStyledTextCtrl_ShowLines, 3148).
+-define(wxStyledTextCtrl_HideLines, 3149).
+-define(wxStyledTextCtrl_GetLineVisible, 3150).
+-define(wxStyledTextCtrl_SetFoldExpanded, 3151).
+-define(wxStyledTextCtrl_GetFoldExpanded, 3152).
+-define(wxStyledTextCtrl_ToggleFold, 3153).
+-define(wxStyledTextCtrl_EnsureVisible, 3154).
+-define(wxStyledTextCtrl_SetFoldFlags, 3155).
+-define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3156).
+-define(wxStyledTextCtrl_SetTabIndents, 3157).
+-define(wxStyledTextCtrl_GetTabIndents, 3158).
+-define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3159).
+-define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3160).
+-define(wxStyledTextCtrl_SetMouseDwellTime, 3161).
+-define(wxStyledTextCtrl_GetMouseDwellTime, 3162).
+-define(wxStyledTextCtrl_WordStartPosition, 3163).
+-define(wxStyledTextCtrl_WordEndPosition, 3164).
+-define(wxStyledTextCtrl_SetWrapMode, 3165).
+-define(wxStyledTextCtrl_GetWrapMode, 3166).
+-define(wxStyledTextCtrl_SetWrapVisualFlags, 3167).
+-define(wxStyledTextCtrl_GetWrapVisualFlags, 3168).
+-define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3169).
+-define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3170).
+-define(wxStyledTextCtrl_SetWrapStartIndent, 3171).
+-define(wxStyledTextCtrl_GetWrapStartIndent, 3172).
+-define(wxStyledTextCtrl_SetLayoutCache, 3173).
+-define(wxStyledTextCtrl_GetLayoutCache, 3174).
+-define(wxStyledTextCtrl_SetScrollWidth, 3175).
+-define(wxStyledTextCtrl_GetScrollWidth, 3176).
+-define(wxStyledTextCtrl_TextWidth, 3177).
+-define(wxStyledTextCtrl_GetEndAtLastLine, 3178).
+-define(wxStyledTextCtrl_TextHeight, 3179).
+-define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3180).
+-define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3181).
+-define(wxStyledTextCtrl_AppendText, 3182).
+-define(wxStyledTextCtrl_GetTwoPhaseDraw, 3183).
+-define(wxStyledTextCtrl_SetTwoPhaseDraw, 3184).
+-define(wxStyledTextCtrl_TargetFromSelection, 3185).
+-define(wxStyledTextCtrl_LinesJoin, 3186).
+-define(wxStyledTextCtrl_LinesSplit, 3187).
+-define(wxStyledTextCtrl_SetFoldMarginColour, 3188).
+-define(wxStyledTextCtrl_SetFoldMarginHiColour, 3189).
+-define(wxStyledTextCtrl_LineDown, 3190).
+-define(wxStyledTextCtrl_LineDownExtend, 3191).
+-define(wxStyledTextCtrl_LineUp, 3192).
+-define(wxStyledTextCtrl_LineUpExtend, 3193).
+-define(wxStyledTextCtrl_CharLeft, 3194).
+-define(wxStyledTextCtrl_CharLeftExtend, 3195).
+-define(wxStyledTextCtrl_CharRight, 3196).
+-define(wxStyledTextCtrl_CharRightExtend, 3197).
+-define(wxStyledTextCtrl_WordLeft, 3198).
+-define(wxStyledTextCtrl_WordLeftExtend, 3199).
+-define(wxStyledTextCtrl_WordRight, 3200).
+-define(wxStyledTextCtrl_WordRightExtend, 3201).
+-define(wxStyledTextCtrl_Home, 3202).
+-define(wxStyledTextCtrl_HomeExtend, 3203).
+-define(wxStyledTextCtrl_LineEnd, 3204).
+-define(wxStyledTextCtrl_LineEndExtend, 3205).
+-define(wxStyledTextCtrl_DocumentStart, 3206).
+-define(wxStyledTextCtrl_DocumentStartExtend, 3207).
+-define(wxStyledTextCtrl_DocumentEnd, 3208).
+-define(wxStyledTextCtrl_DocumentEndExtend, 3209).
+-define(wxStyledTextCtrl_PageUp, 3210).
+-define(wxStyledTextCtrl_PageUpExtend, 3211).
+-define(wxStyledTextCtrl_PageDown, 3212).
+-define(wxStyledTextCtrl_PageDownExtend, 3213).
+-define(wxStyledTextCtrl_EditToggleOvertype, 3214).
+-define(wxStyledTextCtrl_Cancel, 3215).
+-define(wxStyledTextCtrl_DeleteBack, 3216).
+-define(wxStyledTextCtrl_Tab, 3217).
+-define(wxStyledTextCtrl_BackTab, 3218).
+-define(wxStyledTextCtrl_NewLine, 3219).
+-define(wxStyledTextCtrl_FormFeed, 3220).
+-define(wxStyledTextCtrl_VCHome, 3221).
+-define(wxStyledTextCtrl_VCHomeExtend, 3222).
+-define(wxStyledTextCtrl_ZoomIn, 3223).
+-define(wxStyledTextCtrl_ZoomOut, 3224).
+-define(wxStyledTextCtrl_DelWordLeft, 3225).
+-define(wxStyledTextCtrl_DelWordRight, 3226).
+-define(wxStyledTextCtrl_LineCut, 3227).
+-define(wxStyledTextCtrl_LineDelete, 3228).
+-define(wxStyledTextCtrl_LineTranspose, 3229).
+-define(wxStyledTextCtrl_LineDuplicate, 3230).
+-define(wxStyledTextCtrl_LowerCase, 3231).
+-define(wxStyledTextCtrl_UpperCase, 3232).
+-define(wxStyledTextCtrl_LineScrollDown, 3233).
+-define(wxStyledTextCtrl_LineScrollUp, 3234).
+-define(wxStyledTextCtrl_DeleteBackNotLine, 3235).
+-define(wxStyledTextCtrl_HomeDisplay, 3236).
+-define(wxStyledTextCtrl_HomeDisplayExtend, 3237).
+-define(wxStyledTextCtrl_LineEndDisplay, 3238).
+-define(wxStyledTextCtrl_LineEndDisplayExtend, 3239).
+-define(wxStyledTextCtrl_HomeWrapExtend, 3240).
+-define(wxStyledTextCtrl_LineEndWrap, 3241).
+-define(wxStyledTextCtrl_LineEndWrapExtend, 3242).
+-define(wxStyledTextCtrl_VCHomeWrap, 3243).
+-define(wxStyledTextCtrl_VCHomeWrapExtend, 3244).
+-define(wxStyledTextCtrl_LineCopy, 3245).
+-define(wxStyledTextCtrl_MoveCaretInsideView, 3246).
+-define(wxStyledTextCtrl_LineLength, 3247).
+-define(wxStyledTextCtrl_BraceHighlight, 3248).
+-define(wxStyledTextCtrl_BraceBadLight, 3249).
+-define(wxStyledTextCtrl_BraceMatch, 3250).
+-define(wxStyledTextCtrl_GetViewEOL, 3251).
+-define(wxStyledTextCtrl_SetViewEOL, 3252).
+-define(wxStyledTextCtrl_SetModEventMask, 3253).
+-define(wxStyledTextCtrl_GetEdgeColumn, 3254).
+-define(wxStyledTextCtrl_SetEdgeColumn, 3255).
+-define(wxStyledTextCtrl_SetEdgeMode, 3256).
+-define(wxStyledTextCtrl_GetEdgeMode, 3257).
+-define(wxStyledTextCtrl_GetEdgeColour, 3258).
+-define(wxStyledTextCtrl_SetEdgeColour, 3259).
+-define(wxStyledTextCtrl_SearchAnchor, 3260).
+-define(wxStyledTextCtrl_SearchNext, 3261).
+-define(wxStyledTextCtrl_SearchPrev, 3262).
+-define(wxStyledTextCtrl_LinesOnScreen, 3263).
+-define(wxStyledTextCtrl_UsePopUp, 3264).
+-define(wxStyledTextCtrl_SelectionIsRectangle, 3265).
+-define(wxStyledTextCtrl_SetZoom, 3266).
+-define(wxStyledTextCtrl_GetZoom, 3267).
+-define(wxStyledTextCtrl_GetModEventMask, 3268).
+-define(wxStyledTextCtrl_SetSTCFocus, 3269).
+-define(wxStyledTextCtrl_GetSTCFocus, 3270).
+-define(wxStyledTextCtrl_SetStatus, 3271).
+-define(wxStyledTextCtrl_GetStatus, 3272).
+-define(wxStyledTextCtrl_SetMouseDownCaptures, 3273).
+-define(wxStyledTextCtrl_GetMouseDownCaptures, 3274).
+-define(wxStyledTextCtrl_SetSTCCursor, 3275).
+-define(wxStyledTextCtrl_GetSTCCursor, 3276).
+-define(wxStyledTextCtrl_SetControlCharSymbol, 3277).
+-define(wxStyledTextCtrl_GetControlCharSymbol, 3278).
+-define(wxStyledTextCtrl_WordPartLeft, 3279).
+-define(wxStyledTextCtrl_WordPartLeftExtend, 3280).
+-define(wxStyledTextCtrl_WordPartRight, 3281).
+-define(wxStyledTextCtrl_WordPartRightExtend, 3282).
+-define(wxStyledTextCtrl_SetVisiblePolicy, 3283).
+-define(wxStyledTextCtrl_DelLineLeft, 3284).
+-define(wxStyledTextCtrl_DelLineRight, 3285).
+-define(wxStyledTextCtrl_GetXOffset, 3286).
+-define(wxStyledTextCtrl_ChooseCaretX, 3287).
+-define(wxStyledTextCtrl_SetXCaretPolicy, 3288).
+-define(wxStyledTextCtrl_SetYCaretPolicy, 3289).
+-define(wxStyledTextCtrl_GetPrintWrapMode, 3290).
+-define(wxStyledTextCtrl_SetHotspotActiveForeground, 3291).
+-define(wxStyledTextCtrl_SetHotspotActiveBackground, 3292).
+-define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3293).
+-define(wxStyledTextCtrl_SetHotspotSingleLine, 3294).
+-define(wxStyledTextCtrl_ParaDownExtend, 3295).
+-define(wxStyledTextCtrl_ParaUp, 3296).
+-define(wxStyledTextCtrl_ParaUpExtend, 3297).
+-define(wxStyledTextCtrl_PositionBefore, 3298).
+-define(wxStyledTextCtrl_PositionAfter, 3299).
+-define(wxStyledTextCtrl_CopyRange, 3300).
+-define(wxStyledTextCtrl_CopyText, 3301).
+-define(wxStyledTextCtrl_SetSelectionMode, 3302).
+-define(wxStyledTextCtrl_GetSelectionMode, 3303).
+-define(wxStyledTextCtrl_LineDownRectExtend, 3304).
+-define(wxStyledTextCtrl_LineUpRectExtend, 3305).
+-define(wxStyledTextCtrl_CharLeftRectExtend, 3306).
+-define(wxStyledTextCtrl_CharRightRectExtend, 3307).
+-define(wxStyledTextCtrl_HomeRectExtend, 3308).
+-define(wxStyledTextCtrl_VCHomeRectExtend, 3309).
+-define(wxStyledTextCtrl_LineEndRectExtend, 3310).
+-define(wxStyledTextCtrl_PageUpRectExtend, 3311).
+-define(wxStyledTextCtrl_PageDownRectExtend, 3312).
+-define(wxStyledTextCtrl_StutteredPageUp, 3313).
+-define(wxStyledTextCtrl_StutteredPageUpExtend, 3314).
+-define(wxStyledTextCtrl_StutteredPageDown, 3315).
+-define(wxStyledTextCtrl_StutteredPageDownExtend, 3316).
+-define(wxStyledTextCtrl_WordLeftEnd, 3317).
+-define(wxStyledTextCtrl_WordLeftEndExtend, 3318).
+-define(wxStyledTextCtrl_WordRightEnd, 3319).
+-define(wxStyledTextCtrl_WordRightEndExtend, 3320).
+-define(wxStyledTextCtrl_SetWhitespaceChars, 3321).
+-define(wxStyledTextCtrl_SetCharsDefault, 3322).
+-define(wxStyledTextCtrl_AutoCompGetCurrent, 3323).
+-define(wxStyledTextCtrl_Allocate, 3324).
+-define(wxStyledTextCtrl_FindColumn, 3325).
+-define(wxStyledTextCtrl_GetCaretSticky, 3326).
+-define(wxStyledTextCtrl_SetCaretSticky, 3327).
+-define(wxStyledTextCtrl_ToggleCaretSticky, 3328).
+-define(wxStyledTextCtrl_SetPasteConvertEndings, 3329).
+-define(wxStyledTextCtrl_GetPasteConvertEndings, 3330).
+-define(wxStyledTextCtrl_SelectionDuplicate, 3331).
+-define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3332).
+-define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3333).
+-define(wxStyledTextCtrl_StartRecord, 3334).
+-define(wxStyledTextCtrl_StopRecord, 3335).
+-define(wxStyledTextCtrl_SetLexer, 3336).
+-define(wxStyledTextCtrl_GetLexer, 3337).
+-define(wxStyledTextCtrl_Colourise, 3338).
+-define(wxStyledTextCtrl_SetProperty, 3339).
+-define(wxStyledTextCtrl_SetKeyWords, 3340).
+-define(wxStyledTextCtrl_SetLexerLanguage, 3341).
+-define(wxStyledTextCtrl_GetProperty, 3342).
+-define(wxStyledTextCtrl_GetStyleBitsNeeded, 3343).
+-define(wxStyledTextCtrl_GetCurrentLine, 3344).
+-define(wxStyledTextCtrl_StyleSetSpec, 3345).
+-define(wxStyledTextCtrl_StyleSetFont, 3346).
+-define(wxStyledTextCtrl_StyleSetFontAttr, 3347).
+-define(wxStyledTextCtrl_StyleSetCharacterSet, 3348).
+-define(wxStyledTextCtrl_StyleSetFontEncoding, 3349).
+-define(wxStyledTextCtrl_CmdKeyExecute, 3350).
+-define(wxStyledTextCtrl_SetMargins, 3351).
+-define(wxStyledTextCtrl_GetSelection, 3352).
+-define(wxStyledTextCtrl_PointFromPosition, 3353).
+-define(wxStyledTextCtrl_ScrollToLine, 3354).
+-define(wxStyledTextCtrl_ScrollToColumn, 3355).
+-define(wxStyledTextCtrl_SetVScrollBar, 3356).
+-define(wxStyledTextCtrl_SetHScrollBar, 3357).
+-define(wxStyledTextCtrl_GetLastKeydownProcessed, 3358).
+-define(wxStyledTextCtrl_SetLastKeydownProcessed, 3359).
+-define(wxStyledTextCtrl_SaveFile, 3360).
+-define(wxStyledTextCtrl_LoadFile, 3361).
+-define(wxStyledTextCtrl_DoDragOver, 3362).
+-define(wxStyledTextCtrl_DoDropText, 3363).
+-define(wxStyledTextCtrl_GetUseAntiAliasing, 3364).
+-define(wxStyledTextCtrl_AddTextRaw, 3365).
+-define(wxStyledTextCtrl_InsertTextRaw, 3366).
+-define(wxStyledTextCtrl_GetCurLineRaw, 3367).
+-define(wxStyledTextCtrl_GetLineRaw, 3368).
+-define(wxStyledTextCtrl_GetSelectedTextRaw, 3369).
+-define(wxStyledTextCtrl_GetTextRangeRaw, 3370).
+-define(wxStyledTextCtrl_SetTextRaw, 3371).
+-define(wxStyledTextCtrl_GetTextRaw, 3372).
+-define(wxStyledTextCtrl_AppendTextRaw, 3373).
+-define(wxArtProvider_GetBitmap, 3374).
+-define(wxArtProvider_GetIcon, 3375).
+-define(wxTreeEvent_GetKeyCode, 3376).
+-define(wxTreeEvent_GetItem, 3377).
+-define(wxTreeEvent_GetKeyEvent, 3378).
+-define(wxTreeEvent_GetLabel, 3379).
+-define(wxTreeEvent_GetOldItem, 3380).
+-define(wxTreeEvent_GetPoint, 3381).
+-define(wxTreeEvent_IsEditCancelled, 3382).
+-define(wxTreeEvent_SetToolTip, 3383).
+-define(wxBookCtrlEvent_GetOldSelection, 3384).
+-define(wxBookCtrlEvent_GetSelection, 3385).
+-define(wxBookCtrlEvent_SetOldSelection, 3386).
+-define(wxBookCtrlEvent_SetSelection, 3387).
+-define(wxFileDataObject_new, 3388).
+-define(wxFileDataObject_AddFile, 3389).
+-define(wxFileDataObject_GetFilenames, 3390).
+-define(wxFileDataObject_destroy, 3391).
+-define(wxTextDataObject_new, 3392).
+-define(wxTextDataObject_GetTextLength, 3393).
+-define(wxTextDataObject_GetText, 3394).
+-define(wxTextDataObject_SetText, 3395).
+-define(wxTextDataObject_destroy, 3396).
+-define(wxBitmapDataObject_new_1_1, 3397).
+-define(wxBitmapDataObject_new_1_0, 3398).
+-define(wxBitmapDataObject_GetBitmap, 3399).
+-define(wxBitmapDataObject_SetBitmap, 3400).
+-define(wxBitmapDataObject_destroy, 3401).
+-define(wxClipboard_new, 3402).
+-define(wxClipboard_destruct, 3403).
+-define(wxClipboard_AddData, 3404).
+-define(wxClipboard_Clear, 3405).
+-define(wxClipboard_Close, 3406).
+-define(wxClipboard_Flush, 3407).
+-define(wxClipboard_GetData, 3408).
+-define(wxClipboard_IsOpened, 3409).
+-define(wxClipboard_Open, 3410).
+-define(wxClipboard_SetData, 3411).
+-define(wxClipboard_UsePrimarySelection, 3412).
+-define(wxClipboard_IsSupported, 3413).
+-define(wxClipboard_Get, 3414).
+-define(wxSpinEvent_GetPosition, 3415).
+-define(wxSpinEvent_SetPosition, 3416).
+-define(wxSplitterWindow_new_0, 3417).
+-define(wxSplitterWindow_new_2, 3418).
+-define(wxSplitterWindow_destruct, 3419).
+-define(wxSplitterWindow_Create, 3420).
+-define(wxSplitterWindow_GetMinimumPaneSize, 3421).
+-define(wxSplitterWindow_GetSashGravity, 3422).
+-define(wxSplitterWindow_GetSashPosition, 3423).
+-define(wxSplitterWindow_GetSplitMode, 3424).
+-define(wxSplitterWindow_GetWindow1, 3425).
+-define(wxSplitterWindow_GetWindow2, 3426).
+-define(wxSplitterWindow_Initialize, 3427).
+-define(wxSplitterWindow_IsSplit, 3428).
+-define(wxSplitterWindow_ReplaceWindow, 3429).
+-define(wxSplitterWindow_SetSashGravity, 3430).
+-define(wxSplitterWindow_SetSashPosition, 3431).
+-define(wxSplitterWindow_SetMinimumPaneSize, 3432).
+-define(wxSplitterWindow_SetSplitMode, 3433).
+-define(wxSplitterWindow_SplitHorizontally, 3434).
+-define(wxSplitterWindow_SplitVertically, 3435).
+-define(wxSplitterWindow_Unsplit, 3436).
+-define(wxSplitterWindow_UpdateSize, 3437).
+-define(wxSplitterEvent_GetSashPosition, 3438).
+-define(wxSplitterEvent_GetX, 3439).
+-define(wxSplitterEvent_GetY, 3440).
+-define(wxSplitterEvent_GetWindowBeingRemoved, 3441).
+-define(wxSplitterEvent_SetSashPosition, 3442).
+-define(wxHtmlWindow_new_0, 3443).
+-define(wxHtmlWindow_new_2, 3444).
+-define(wxHtmlWindow_AppendToPage, 3445).
+-define(wxHtmlWindow_GetOpenedAnchor, 3446).
+-define(wxHtmlWindow_GetOpenedPage, 3447).
+-define(wxHtmlWindow_GetOpenedPageTitle, 3448).
+-define(wxHtmlWindow_GetRelatedFrame, 3449).
+-define(wxHtmlWindow_HistoryBack, 3450).
+-define(wxHtmlWindow_HistoryCanBack, 3451).
+-define(wxHtmlWindow_HistoryCanForward, 3452).
+-define(wxHtmlWindow_HistoryClear, 3453).
+-define(wxHtmlWindow_HistoryForward, 3454).
+-define(wxHtmlWindow_LoadFile, 3455).
+-define(wxHtmlWindow_LoadPage, 3456).
+-define(wxHtmlWindow_SelectAll, 3457).
+-define(wxHtmlWindow_SelectionToText, 3458).
+-define(wxHtmlWindow_SelectLine, 3459).
+-define(wxHtmlWindow_SelectWord, 3460).
+-define(wxHtmlWindow_SetBorders, 3461).
+-define(wxHtmlWindow_SetFonts, 3462).
+-define(wxHtmlWindow_SetPage, 3463).
+-define(wxHtmlWindow_SetRelatedFrame, 3464).
+-define(wxHtmlWindow_SetRelatedStatusBar_1, 3465).
+-define(wxHtmlWindow_SetRelatedStatusBar_2, 3466).
+-define(wxHtmlWindow_ToText, 3467).
+-define(wxHtmlWindow_destroy, 3468).
+-define(wxHtmlLinkEvent_GetLinkInfo, 3469).
+-define(wxSystemSettings_GetColour, 3470).
+-define(wxSystemSettings_GetFont, 3471).
+-define(wxSystemSettings_GetMetric, 3472).
+-define(wxSystemSettings_GetScreenType, 3473).
+-define(wxSystemOptions_GetOption, 3474).
+-define(wxSystemOptions_GetOptionInt, 3475).
+-define(wxSystemOptions_HasOption, 3476).
+-define(wxSystemOptions_IsFalse, 3477).
+-define(wxSystemOptions_SetOption_2_1, 3478).
+-define(wxSystemOptions_SetOption_2_0, 3479).
+-define(wxAuiNotebookEvent_SetSelection, 3480).
+-define(wxAuiNotebookEvent_GetSelection, 3481).
+-define(wxAuiNotebookEvent_SetOldSelection, 3482).
+-define(wxAuiNotebookEvent_GetOldSelection, 3483).
+-define(wxAuiNotebookEvent_SetDragSource, 3484).
+-define(wxAuiNotebookEvent_GetDragSource, 3485).
+-define(wxAuiManagerEvent_SetManager, 3486).
+-define(wxAuiManagerEvent_GetManager, 3487).
+-define(wxAuiManagerEvent_SetPane, 3488).
+-define(wxAuiManagerEvent_GetPane, 3489).
+-define(wxAuiManagerEvent_SetButton, 3490).
+-define(wxAuiManagerEvent_GetButton, 3491).
+-define(wxAuiManagerEvent_SetDC, 3492).
+-define(wxAuiManagerEvent_GetDC, 3493).
+-define(wxAuiManagerEvent_Veto, 3494).
+-define(wxAuiManagerEvent_GetVeto, 3495).
+-define(wxAuiManagerEvent_SetCanVeto, 3496).
+-define(wxAuiManagerEvent_CanVeto, 3497).
+-define(wxLogNull_new, 3498).
+-define(wxLogNull_destruct, 3499).
+-define(wxTaskBarIcon_new, 3500).
+-define(wxTaskBarIcon_destruct, 3501).
+-define(wxTaskBarIcon_PopupMenu, 3502).
+-define(wxTaskBarIcon_RemoveIcon, 3503).
+-define(wxTaskBarIcon_SetIcon, 3504).
+-define(wxLocale_new_0, 3505).
+-define(wxLocale_new_2_0, 3506).
+-define(wxLocale_new_2_1, 3507).
+-define(wxLocale_destruct, 3508).
+-define(wxLocale_Init_1, 3509).
+-define(wxLocale_Init_2, 3510).
+-define(wxLocale_AddCatalog_1, 3511).
+-define(wxLocale_AddCatalog_2, 3512).
+-define(wxLocale_AddCatalog_3, 3513).
+-define(wxLocale_AddCatalogLookupPathPrefix, 3514).
+-define(wxLocale_GetCanonicalName, 3515).
+-define(wxLocale_GetLanguage, 3516).
+-define(wxLocale_GetLanguageName, 3517).
+-define(wxLocale_GetLocale, 3518).
+-define(wxLocale_GetName, 3519).
+-define(wxLocale_GetString_2, 3520).
+-define(wxLocale_GetString_4, 3521).
+-define(wxLocale_GetHeaderValue, 3522).
+-define(wxLocale_GetSysName, 3523).
+-define(wxLocale_GetSystemEncoding, 3524).
+-define(wxLocale_GetSystemEncodingName, 3525).
+-define(wxLocale_GetSystemLanguage, 3526).
+-define(wxLocale_IsLoaded, 3527).
+-define(wxLocale_IsOk, 3528).
+-define(wxActivateEvent_GetActive, 3529).
+-define(wxPopupWindow_new_0, 3530).
+-define(wxPopupWindow_new_2, 3531).
+-define(wxPopupWindow_Create, 3532).
+-define(wxPopupWindow_Position, 3533).
+-define(wxPopupWindow_destroy, 3534).
+-define(wxPopupTransientWindow_new_0, 3535).
+-define(wxPopupTransientWindow_new_2, 3536).
+-define(wxPopupTransientWindow_Popup, 3537).
+-define(wxPopupTransientWindow_Dismiss, 3538).
+-define(wxPopupTransientWindow_destroy, 3539).
+-define(wxOverlay_new, 3540).
+-define(wxOverlay_destruct, 3541).
+-define(wxOverlay_Reset, 3542).
+-define(wxDCOverlay_new_6, 3543).
+-define(wxDCOverlay_new_2, 3544).
+-define(wxDCOverlay_destruct, 3545).
+-define(wxDCOverlay_Clear, 3546).
+-define(wxDropFilesEvent_GetPosition, 3547).
+-define(wxDropFilesEvent_GetNumberOfFiles, 3548).
+-define(wxDropFilesEvent_GetFiles, 3549).
+-define(wxDisplay_new_0, 3550).
+-define(wxDisplay_new_1_0, 3551).
+-define(wxDisplay_new_1_1, 3552).
+-define(wxDisplay_destruct, 3553).
+-define(wxDisplay_IsOk, 3554).
+-define(wxDisplay_GetClientArea, 3555).
+-define(wxDisplay_GetGeometry, 3556).
+-define(wxDisplay_GetName, 3557).
+-define(wxDisplay_IsPrimary, 3558).
+-define(wxDisplay_GetCount, 3559).
+-define(wxDisplay_GetFromPoint, 3560).
+-define(wxDisplay_GetFromWindow, 3561).
+-define(wxDisplay_GetPPI, 3562).
+-define(wxGCDC_new_1, 3563).
+-define(wxGCDC_new_0, 3566).
+-define(wxGCDC_destruct, 3567).
+-define(wxGCDC_GetGraphicsContext, 3568).
+-define(wxGCDC_SetGraphicsContext, 3569).
+-define(wxNotificationMessage_new_0, 3570).
+-define(wxNotificationMessage_new_2, 3571).
+-define(wxNotificationMessage_destruct, 3572).
+-define(wxNotificationMessage_AddAction, 3573).
+-define(wxNotificationMessage_Close, 3574).
+-define(wxNotificationMessage_SetFlags, 3575).
+-define(wxNotificationMessage_SetIcon, 3576).
+-define(wxNotificationMessage_SetMessage, 3577).
+-define(wxNotificationMessage_SetParent, 3578).
+-define(wxNotificationMessage_SetTitle, 3579).
+-define(wxNotificationMessage_Show, 3580).
+-define(wxNotificationMessage_UseTaskBarIcon, 3581).
+-define(wxNotificationMessage_MSWUseToasts, 3582).
+-define(wxWebView_New, 3584).
+-define(wxWebView_GetCurrentTitle, 3585).
+-define(wxWebView_GetCurrentURL, 3586).
+-define(wxWebView_GetPageSource, 3587).
+-define(wxWebView_GetPageText, 3588).
+-define(wxWebView_IsBusy, 3589).
+-define(wxWebView_IsEditable, 3590).
+-define(wxWebView_LoadURL, 3591).
+-define(wxWebView_Print, 3592).
+-define(wxWebView_Reload, 3593).
+-define(wxWebView_RunScript, 3594).
+-define(wxWebView_SetEditable, 3595).
+-define(wxWebView_SetPage, 3596).
+-define(wxWebView_Stop, 3597).
+-define(wxWebView_CanCopy, 3598).
+-define(wxWebView_CanCut, 3599).
+-define(wxWebView_CanPaste, 3600).
+-define(wxWebView_Copy, 3601).
+-define(wxWebView_Cut, 3602).
+-define(wxWebView_Paste, 3603).
+-define(wxWebView_EnableContextMenu, 3604).
+-define(wxWebView_IsContextMenuEnabled, 3605).
+-define(wxWebView_CanGoBack, 3606).
+-define(wxWebView_CanGoForward, 3607).
+-define(wxWebView_ClearHistory, 3608).
+-define(wxWebView_EnableHistory, 3609).
+-define(wxWebView_GoBack, 3610).
+-define(wxWebView_GoForward, 3611).
+-define(wxWebView_ClearSelection, 3612).
+-define(wxWebView_DeleteSelection, 3613).
+-define(wxWebView_GetSelectedSource, 3614).
+-define(wxWebView_GetSelectedText, 3615).
+-define(wxWebView_HasSelection, 3616).
+-define(wxWebView_SelectAll, 3617).
+-define(wxWebView_CanRedo, 3618).
+-define(wxWebView_CanUndo, 3619).
+-define(wxWebView_Redo, 3620).
+-define(wxWebView_Undo, 3621).
+-define(wxWebView_Find, 3622).
+-define(wxWebView_CanSetZoomType, 3623).
+-define(wxWebView_GetZoom, 3624).
+-define(wxWebView_GetZoomType, 3625).
+-define(wxWebView_SetZoom, 3626).
+-define(wxWebView_SetZoomType, 3627).
+-define(wxWebView_GetZoomFactor, 3628).
+-define(wxWebView_SetZoomFactor, 3629).
+-define(wxWebView_IsBackendAvailable, 3630).
+-define(wxWebViewEvent_GetString, 3631).
+-define(wxWebViewEvent_GetInt, 3632).
+-define(wxWebViewEvent_GetTarget, 3633).
+-define(wxWebViewEvent_GetURL, 3634).
diff --git a/lib/wx/src/wxe_master.erl b/lib/wx/src/wxe_master.erl
index 5724457ae7..f0bb1e64e7 100644
--- a/lib/wx/src/wxe_master.erl
+++ b/lib/wx/src/wxe_master.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -80,8 +80,9 @@ init_opengl() ->
case get(wx_init_opengl) of
true -> {ok, "already initialized"};
_ ->
- Opaque = gl:lookup_func(),
- {ok, wxe_util:init_opengl(Opaque)}
+ Opaque = gl:lookup_func(functions),
+ Debug = gl:lookup_func(function_names),
+ {ok, wxe_util:init_opengl(Opaque, Debug)}
end.
%%--------------------------------------------------------------------
diff --git a/lib/wx/src/wxe_util.erl b/lib/wx/src/wxe_util.erl
index 1d5f15f131..217e7118ff 100644
--- a/lib/wx/src/wxe_util.erl
+++ b/lib/wx/src/wxe_util.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -37,14 +37,14 @@
queue_cmd/11,queue_cmd/12,queue_cmd/13,queue_cmd/14,queue_cmd/15,
make_env/0, delete_env/1, get_consts/0,
debug_ping/0, debug_driver/1,
- init_opengl/1
+ init_opengl/2
]).
-nifs([queue_cmd/1,queue_cmd/2,queue_cmd/3,queue_cmd/4,queue_cmd/5,
queue_cmd/6,queue_cmd/7,queue_cmd/8,queue_cmd/9,queue_cmd/10,
queue_cmd/11,queue_cmd/12,queue_cmd/13,queue_cmd/14,queue_cmd/15,
make_env/0, delete_env/1, debug_driver/1, get_consts_impl/0,
- init_opengl/1
+ init_opengl/2
]).
-export([priv_dir/2, opt_error_log/3, init_nif/1]).
@@ -85,7 +85,7 @@ get_consts() ->
get_consts_impl(),
rec(?WXE_GET_CONSTS).
-init_opengl(_) -> ?NIF_ERROR.
+init_opengl(_,_) -> ?NIF_ERROR.
get_consts_impl() -> ?NIF_ERROR.
debug_ping() -> queue_cmd(?WXE_DEBUG_PING).
diff --git a/lib/wx/test/wx_class_SUITE.erl b/lib/wx/test/wx_class_SUITE.erl
index 7cab2d85fa..5275defce6 100644
--- a/lib/wx/test/wx_class_SUITE.erl
+++ b/lib/wx/test/wx_class_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -244,6 +244,8 @@ clipboard(Config) ->
wxTextCtrl:connect(Ctrl, command_text_paste, [{skip, true}]),
wxWindow:show(Frame),
+ BlockWxDialogs = wxLogNull:new(),
+
CB = ?mt(wxClipboard, wxClipboard:get()),
wxClipboard:usePrimarySelection(CB),
?m(false, wx:is_null(CB)),
@@ -271,7 +273,10 @@ clipboard(Config) ->
Paste = ?mt(wxTextDataObject, wxTextDataObject:new([{text,"From Erlang"}])),
case wxClipboard:addData(CB,Paste) of
true ->
- ?log("Put text on clipboard~n", []);
+ ?log("Put text on clipboard~n", []),
+ ?log("Flushing ~n",[]),
+ wxClipboard:flush(CB),
+ ?log("Stopping ~n",[]);
false ->
?log("Couldn't copy data to clipboard~n",[])
end,
@@ -279,9 +284,7 @@ clipboard(Config) ->
false ->
?log("Clipboard open failed~n",[])
end,
- ?log("Flushing ~n",[]),
- wxClipboard:flush(CB),
- ?log("Stopping ~n",[]),
+ wxLogNull:destroy(BlockWxDialogs),
wx_test_lib:wx_destroy(Frame,Config).
diff --git a/lib/wx/test/wx_opengl_SUITE.erl b/lib/wx/test/wx_opengl_SUITE.erl
index 3ec75c662a..fb3e5ba598 100644
--- a/lib/wx/test/wx_opengl_SUITE.erl
+++ b/lib/wx/test/wx_opengl_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2023. 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.
@@ -27,7 +27,7 @@
init_per_suite/1, end_per_suite/1,
init_per_testcase/2, end_per_testcase/2]).
--export([canvas/1, glu_tesselation/1]).
+-export([canvas/1, glu_tesselation/1, debugMessage/1]).
-include("wx_test_lib.hrl").
-include_lib("wx/include/gl.hrl").
@@ -55,7 +55,7 @@ end_per_testcase(Func,Config) ->
suite() -> [{ct_hooks,[ts_install_cth]}, {timetrap,{minutes,2}}].
all() ->
- [canvas, glu_tesselation].
+ [canvas, glu_tesselation, debugMessage].
groups() ->
[].
@@ -101,15 +101,8 @@ canvas(Config) ->
%% ?WX_GL_CORE_PROFILE,
?WX_GL_DEPTH_SIZE,24,0]}],
Canvas = ?mt(wxGLCanvas, wxGLCanvas:new(Frame, [{style,?wxFULL_REPAINT_ON_RESIZE}|Attrs])),
- SetContext =
- try %% 3.0 API
- Context = wxGLContext:new(Canvas),
- fun() -> ?m(true, wxGLCanvas:setCurrent(Canvas, Context)) end
- catch _:Reason:ST -> %% 2.8 API
- io:format("Using old api: ~p~n ~p~n",[Reason, ST]),
- ?m(false, wx:is_null(wxGLCanvas:getContext(Canvas))),
- fun() -> ?m(ok, wxGLCanvas:setCurrent(Canvas)) end
- end,
+ Context = wxGLContext:new(Canvas),
+ SetContext = fun() -> ?m(true, wxGLCanvas:setCurrent(Canvas, Context)) end,
wxFrame:connect(Frame, show),
?m(true, wxWindow:show(Frame)),
@@ -241,14 +234,8 @@ glu_tesselation(Config) ->
after 1000 -> exit(show_timeout)
end,
- try %% 3.0 API
- Context = wxGLContext:new(Canvas),
- wxGLCanvas:setCurrent(Canvas, Context)
- catch _:Reason:ST -> %% 2.8 API
- io:format("Using old api: ~p~n ~p~n",[Reason, ST]),
- ?m(false, wx:is_null(wxGLCanvas:getContext(Canvas))),
- ?m(ok, wxGLCanvas:setCurrent(Canvas))
- end,
+ Context = wxGLContext:new(Canvas),
+ wxGLCanvas:setCurrent(Canvas, Context),
Simple = ?m({_,_}, glu:tesselate({0.0,0.0,1.0}, [{-1.0,0.0,0.0},{1.0,0.0,0.0},{0.0,1.0,0.0}])),
io:format("Simple ~p~n",[Simple]),
@@ -268,4 +255,50 @@ glu_tesselation(Config) ->
wx_test_lib:wx_destroy(Frame, Config).
-
+debugMessage(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo);
+debugMessage(Config) ->
+ WX = ?mr(wx_ref, wx:new()),
+ Frame = wxFrame:new(WX,1,"Hello 3D-World",[]),
+ case {?wxMAJOR_VERSION, ?wxMINOR_VERSION} of
+ {WxMajor,WxMinor} when WxMajor >= 3, WxMinor >= 2 ->
+ Attrs = [{attribList, [?WX_GL_RGBA,?WX_GL_DOUBLEBUFFER,?WX_GL_DEBUG,0]}],
+ Canvas = ?mt(wxGLCanvas, wxGLCanvas:new(Frame, Attrs)),
+ wxFrame:connect(Frame, show),
+ ?m(true, wxWindow:show(Frame)),
+
+ receive #wx{event=#wxShow{}} -> ok
+ after 1000 -> exit(show_timeout)
+ end,
+
+ Context = wxGLContext:new(Canvas),
+ wxGLCanvas:setCurrent(Canvas, Context),
+
+ case {gl:getIntegerv(?GL_MAJOR_VERSION),gl:getIntegerv(?GL_MINOR_VERSION)} of
+ {[Major|_], [Minor|_]} when Major >= 4, Minor >= 3 ->
+ io:format("~nVersion: ~p~n", [{Major,Minor}]),
+ ByteCount = 5000,
+ Count = 10,
+ %% Before any log insertion:
+ A = gl:getDebugMessageLog(Count, ByteCount),
+ io:format( "A = ~p~n", [ A ] ),
+
+ Msg1 = "Hello!",
+ gl:debugMessageInsert(?GL_DEBUG_SOURCE_APPLICATION, ?GL_DEBUG_TYPE_ERROR,
+ 10, ?GL_DEBUG_SEVERITY_HIGH, Msg1),
+ Msg2 = "Goodbye...",
+ gl:debugMessageInsert(?GL_DEBUG_SOURCE_APPLICATION, ?GL_DEBUG_TYPE_ERROR,
+ 11, ?GL_DEBUG_SEVERITY_HIGH, Msg2),
+
+ B = gl:getDebugMessageLog(Count, ByteCount),
+ io:format("B = ~p~n", [B]),
+
+ C = gl:getDebugMessageLog(Count, ByteCount),
+ io:format("C = ~p~n", [C]);
+ Versions ->
+ io:format("Not supported version: ~p~n", [Versions])
+ end;
+ _ -> ok
+ end,
+ wx_test_lib:wx_destroy(Frame, Config).
+
+
diff --git a/lib/wx/vsn.mk b/lib/wx/vsn.mk
index e7144bd6a2..78f0fd3395 100644
--- a/lib/wx/vsn.mk
+++ b/lib/wx/vsn.mk
@@ -1 +1 @@
-WX_VSN = 2.2.1
+WX_VSN = 2.2.2
diff --git a/make/autoconf/otp.m4 b/make/autoconf/otp.m4
index 98b8ea5f61..a522fae3bd 100644
--- a/make/autoconf/otp.m4
+++ b/make/autoconf/otp.m4
@@ -1458,7 +1458,7 @@ AC_DEFUN(ETHR_CHK_GCC_ATOMIC_OPS,
[
ethr_cv_arm_isb_sy_instr=no
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
- __asm__ __volatile__("isb sy" : : : "memory");
+ __asm__ __volatile__("isb sy\n" : : : "memory");
]])],[ethr_cv_arm_isb_sy_instr=yes],[])
])
if test $ethr_cv_arm_isb_sy_instr = yes; then
@@ -1468,7 +1468,7 @@ AC_DEFUN(ETHR_CHK_GCC_ATOMIC_OPS,
[
ethr_cv_arm_dc_cvau_instr=no
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
- char data[512]; __asm__ __volatile__("dc cvau, %0" : "r" (data) : : "memory");
+ char data[512]; __asm__ __volatile__("dc cvau, %0\n" :: "r" (data) : "memory");
]])],[ethr_cv_arm_dc_cvau_instr=yes],[])
])
if test $ethr_cv_arm_dc_cvau_instr = yes; then
@@ -1478,7 +1478,7 @@ AC_DEFUN(ETHR_CHK_GCC_ATOMIC_OPS,
[
ethr_cv_arm_ic_ivau_instr=no
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
- char data[512]; __asm__ __volatile__("ic ivau, %0" : "r" (data) : : "memory");
+ char data[512]; __asm__ __volatile__("ic ivau, %0\n" :: "r" (data) : "memory");
]])],[ethr_cv_arm_ic_ivau_instr=yes],[])
])
if test $ethr_cv_arm_ic_ivau_instr = yes; then
diff --git a/make/otp_version_tickets b/make/otp_version_tickets
index 23c2246bcb..b8220e1a87 100644
--- a/make/otp_version_tickets
+++ b/make/otp_version_tickets
@@ -1,44 +1 @@
-OTP-16607
-OTP-18316
-OTP-18348
-OTP-18356
-OTP-18366
-OTP-18371
-OTP-18372
-OTP-18373
-OTP-18374
-OTP-18375
-OTP-18378
-OTP-18380
-OTP-18381
-OTP-18382
-OTP-18384
-OTP-18387
-OTP-18390
-OTP-18391
-OTP-18392
-OTP-18393
-OTP-18398
-OTP-18404
-OTP-18406
-OTP-18407
-OTP-18408
-OTP-18411
-OTP-18412
-OTP-18418
-OTP-18426
-OTP-18429
-OTP-18432
-OTP-18434
-OTP-18443
-OTP-18446
-OTP-18454
-OTP-18457
-OTP-18458
-OTP-18460
-OTP-18463
-OTP-18469
-OTP-18470
-OTP-18472
-OTP-18475
-OTP-18496
+DEVELOPMENT
diff --git a/make/otp_version_tickets_in_merge b/make/otp_version_tickets_in_merge
index e69de29bb2..9fcc3287fb 100644
--- a/make/otp_version_tickets_in_merge
+++ b/make/otp_version_tickets_in_merge
@@ -0,0 +1,3 @@
+OTP-18559
+OTP-18565
+OTP-18570
diff --git a/otp_versions.table b/otp_versions.table
index 413efad49c..9da37263b9 100644
--- a/otp_versions.table
+++ b/otp_versions.table
@@ -1,3 +1,5 @@
+OTP-25.3.2 : compiler-8.2.6 erts-13.2.2 os_mon-2.8.2 # asn1-5.0.21 common_test-1.24 crypto-5.1.4 debugger-5.3.1 dialyzer-5.0.5 diameter-2.2.7 edoc-1.2 eldap-1.2.11 erl_docgen-1.4 erl_interface-5.3.2 et-1.6.5 eunit-2.8.2 ftp-1.1.4 inets-8.3.1 jinterface-1.13.2 kernel-8.5.4 megaco-4.4.3 mnesia-4.21.4 observer-2.14 odbc-2.14 parsetools-2.4.1 public_key-1.13.3 reltool-0.9.1 runtime_tools-1.19 sasl-4.2 snmp-5.13.5 ssh-4.15.3 ssl-10.9.1 stdlib-4.3.1 syntax_tools-3.0.1 tftp-1.0.4 tools-3.5.3 wx-2.2.2 xmerl-1.3.31 :
+OTP-25.3.1 : compiler-8.2.5 crypto-5.1.4 eldap-1.2.11 erl_interface-5.3.2 erts-13.2.1 inets-8.3.1 snmp-5.13.5 ssl-10.9.1 stdlib-4.3.1 wx-2.2.2 # asn1-5.0.21 common_test-1.24 debugger-5.3.1 dialyzer-5.0.5 diameter-2.2.7 edoc-1.2 erl_docgen-1.4 et-1.6.5 eunit-2.8.2 ftp-1.1.4 jinterface-1.13.2 kernel-8.5.4 megaco-4.4.3 mnesia-4.21.4 observer-2.14 odbc-2.14 os_mon-2.8.1 parsetools-2.4.1 public_key-1.13.3 reltool-0.9.1 runtime_tools-1.19 sasl-4.2 ssh-4.15.3 syntax_tools-3.0.1 tftp-1.0.4 tools-3.5.3 xmerl-1.3.31 :
OTP-25.3 : common_test-1.24 compiler-8.2.4 crypto-5.1.3 debugger-5.3.1 dialyzer-5.0.5 erl_interface-5.3.1 erts-13.2 eunit-2.8.2 ftp-1.1.4 inets-8.3 jinterface-1.13.2 kernel-8.5.4 megaco-4.4.3 mnesia-4.21.4 os_mon-2.8.1 public_key-1.13.3 reltool-0.9.1 snmp-5.13.4 ssh-4.15.3 ssl-10.9 stdlib-4.3 syntax_tools-3.0.1 tftp-1.0.4 xmerl-1.3.31 # asn1-5.0.21 diameter-2.2.7 edoc-1.2 eldap-1.2.10 erl_docgen-1.4 et-1.6.5 observer-2.14 odbc-2.14 parsetools-2.4.1 runtime_tools-1.19 sasl-4.2 tools-3.5.3 wx-2.2.1 :
OTP-25.2.3 : erts-13.1.5 inets-8.2.2 ssh-4.15.2 ssl-10.8.7 # asn1-5.0.21 common_test-1.23.3 compiler-8.2.3 crypto-5.1.2 debugger-5.3 dialyzer-5.0.4 diameter-2.2.7 edoc-1.2 eldap-1.2.10 erl_docgen-1.4 erl_interface-5.3 et-1.6.5 eunit-2.8.1 ftp-1.1.3 jinterface-1.13.1 kernel-8.5.3 megaco-4.4.2 mnesia-4.21.3 observer-2.14 odbc-2.14 os_mon-2.8 parsetools-2.4.1 public_key-1.13.2 reltool-0.9 runtime_tools-1.19 sasl-4.2 snmp-5.13.3 stdlib-4.2 syntax_tools-3.0 tftp-1.0.3 tools-3.5.3 wx-2.2.1 xmerl-1.3.30 :
OTP-25.2.2 : ftp-1.1.3 # asn1-5.0.21 common_test-1.23.3 compiler-8.2.3 crypto-5.1.2 debugger-5.3 dialyzer-5.0.4 diameter-2.2.7 edoc-1.2 eldap-1.2.10 erl_docgen-1.4 erl_interface-5.3 erts-13.1.4 et-1.6.5 eunit-2.8.1 inets-8.2.1 jinterface-1.13.1 kernel-8.5.3 megaco-4.4.2 mnesia-4.21.3 observer-2.14 odbc-2.14 os_mon-2.8 parsetools-2.4.1 public_key-1.13.2 reltool-0.9 runtime_tools-1.19 sasl-4.2 snmp-5.13.3 ssh-4.15.1 ssl-10.8.6 stdlib-4.2 syntax_tools-3.0 tftp-1.0.3 tools-3.5.3 wx-2.2.1 xmerl-1.3.30 :
@@ -12,6 +14,8 @@ OTP-25.0.3 : erts-13.0.3 ssl-10.8.3 # asn1-5.0.19 common_test-1.23 compiler-8.2
OTP-25.0.2 : erts-13.0.2 ssl-10.8.2 # asn1-5.0.19 common_test-1.23 compiler-8.2 crypto-5.1.1 debugger-5.3 dialyzer-5.0.1 diameter-2.2.6 edoc-1.2 eldap-1.2.10 erl_docgen-1.3 erl_interface-5.3 et-1.6.5 eunit-2.7.1 ftp-1.1.1 inets-8.0 jinterface-1.13 kernel-8.4.1 megaco-4.4 mnesia-4.21.1 observer-2.12 odbc-2.14 os_mon-2.7.1 parsetools-2.4 public_key-1.13 reltool-0.9 runtime_tools-1.19 sasl-4.2 snmp-5.13 ssh-4.14.1 stdlib-4.0.1 syntax_tools-3.0 tftp-1.0.3 tools-3.5.3 wx-2.2 xmerl-1.3.29 :
OTP-25.0.1 : crypto-5.1.1 dialyzer-5.0.1 erts-13.0.1 kernel-8.4.1 mnesia-4.21.1 ssh-4.14.1 ssl-10.8.1 stdlib-4.0.1 # asn1-5.0.19 common_test-1.23 compiler-8.2 debugger-5.3 diameter-2.2.6 edoc-1.2 eldap-1.2.10 erl_docgen-1.3 erl_interface-5.3 et-1.6.5 eunit-2.7.1 ftp-1.1.1 inets-8.0 jinterface-1.13 megaco-4.4 observer-2.12 odbc-2.14 os_mon-2.7.1 parsetools-2.4 public_key-1.13 reltool-0.9 runtime_tools-1.19 sasl-4.2 snmp-5.13 syntax_tools-3.0 tftp-1.0.3 tools-3.5.3 wx-2.2 xmerl-1.3.29 :
OTP-25.0 : asn1-5.0.19 common_test-1.23 compiler-8.2 crypto-5.1 debugger-5.3 dialyzer-5.0 diameter-2.2.6 edoc-1.2 erl_docgen-1.3 erl_interface-5.3 erts-13.0 eunit-2.7.1 inets-8.0 jinterface-1.13 kernel-8.4 megaco-4.4 mnesia-4.21 observer-2.12 odbc-2.14 parsetools-2.4 public_key-1.13 runtime_tools-1.19 sasl-4.2 snmp-5.13 ssh-4.14 ssl-10.8 stdlib-4.0 syntax_tools-3.0 tools-3.5.3 wx-2.2 xmerl-1.3.29 # eldap-1.2.10 et-1.6.5 ftp-1.1.1 os_mon-2.7.1 reltool-0.9 tftp-1.0.3 :
+OTP-24.3.4.11 : erts-12.3.2.11 inets-7.5.3.4 ssl-10.7.3.7 # asn1-5.0.18.1 common_test-1.22.1.1 compiler-8.1.1.3 crypto-5.0.6.3 debugger-5.2.1 dialyzer-4.4.4.1 diameter-2.2.5 edoc-1.1 eldap-1.2.10 erl_docgen-1.2.1 erl_interface-5.2.2 et-1.6.5 eunit-2.7 ftp-1.1.1 jinterface-1.12.2 kernel-8.3.2.3 megaco-4.3 mnesia-4.20.4.2 observer-2.11.1 odbc-2.13.5 os_mon-2.7.1 parsetools-2.3.2 public_key-1.12.0.1 reltool-0.9 runtime_tools-1.18 sasl-4.1.2 snmp-5.12.0.3 ssh-4.13.2.2 stdlib-3.17.2.2 syntax_tools-2.6 tftp-1.0.3 tools-3.5.2 wx-2.1.4 xmerl-1.3.28 :
+OTP-24.3.4.10 : erts-12.3.2.10 inets-7.5.3.3 snmp-5.12.0.3 # asn1-5.0.18.1 common_test-1.22.1.1 compiler-8.1.1.3 crypto-5.0.6.3 debugger-5.2.1 dialyzer-4.4.4.1 diameter-2.2.5 edoc-1.1 eldap-1.2.10 erl_docgen-1.2.1 erl_interface-5.2.2 et-1.6.5 eunit-2.7 ftp-1.1.1 jinterface-1.12.2 kernel-8.3.2.3 megaco-4.3 mnesia-4.20.4.2 observer-2.11.1 odbc-2.13.5 os_mon-2.7.1 parsetools-2.3.2 public_key-1.12.0.1 reltool-0.9 runtime_tools-1.18 sasl-4.1.2 ssh-4.13.2.2 ssl-10.7.3.6 stdlib-3.17.2.2 syntax_tools-2.6 tftp-1.0.3 tools-3.5.2 wx-2.1.4 xmerl-1.3.28 :
OTP-24.3.4.9 : compiler-8.1.1.3 erts-12.3.2.9 inets-7.5.3.2 ssh-4.13.2.2 ssl-10.7.3.6 # asn1-5.0.18.1 common_test-1.22.1.1 crypto-5.0.6.3 debugger-5.2.1 dialyzer-4.4.4.1 diameter-2.2.5 edoc-1.1 eldap-1.2.10 erl_docgen-1.2.1 erl_interface-5.2.2 et-1.6.5 eunit-2.7 ftp-1.1.1 jinterface-1.12.2 kernel-8.3.2.3 megaco-4.3 mnesia-4.20.4.2 observer-2.11.1 odbc-2.13.5 os_mon-2.7.1 parsetools-2.3.2 public_key-1.12.0.1 reltool-0.9 runtime_tools-1.18 sasl-4.1.2 snmp-5.12.0.2 stdlib-3.17.2.2 syntax_tools-2.6 tftp-1.0.3 tools-3.5.2 wx-2.1.4 xmerl-1.3.28 :
OTP-24.3.4.8 : erts-12.3.2.8 snmp-5.12.0.2 # asn1-5.0.18.1 common_test-1.22.1.1 compiler-8.1.1.2 crypto-5.0.6.3 debugger-5.2.1 dialyzer-4.4.4.1 diameter-2.2.5 edoc-1.1 eldap-1.2.10 erl_docgen-1.2.1 erl_interface-5.2.2 et-1.6.5 eunit-2.7 ftp-1.1.1 inets-7.5.3.1 jinterface-1.12.2 kernel-8.3.2.3 megaco-4.3 mnesia-4.20.4.2 observer-2.11.1 odbc-2.13.5 os_mon-2.7.1 parsetools-2.3.2 public_key-1.12.0.1 reltool-0.9 runtime_tools-1.18 sasl-4.1.2 ssh-4.13.2.1 ssl-10.7.3.5 stdlib-3.17.2.2 syntax_tools-2.6 tftp-1.0.3 tools-3.5.2 wx-2.1.4 xmerl-1.3.28 :
OTP-24.3.4.7 : common_test-1.22.1.1 compiler-8.1.1.2 erts-12.3.2.7 kernel-8.3.2.3 mnesia-4.20.4.2 snmp-5.12.0.1 stdlib-3.17.2.2 # asn1-5.0.18.1 crypto-5.0.6.3 debugger-5.2.1 dialyzer-4.4.4.1 diameter-2.2.5 edoc-1.1 eldap-1.2.10 erl_docgen-1.2.1 erl_interface-5.2.2 et-1.6.5 eunit-2.7 ftp-1.1.1 inets-7.5.3.1 jinterface-1.12.2 megaco-4.3 observer-2.11.1 odbc-2.13.5 os_mon-2.7.1 parsetools-2.3.2 public_key-1.12.0.1 reltool-0.9 runtime_tools-1.18 sasl-4.1.2 ssh-4.13.2.1 ssl-10.7.3.5 syntax_tools-2.6 tftp-1.0.3 tools-3.5.2 wx-2.1.4 xmerl-1.3.28 :