diff options
137 files changed, 12229 insertions, 12280 deletions
diff --git a/erts/doc/src/absform.xml b/erts/doc/src/absform.xml index 63e9abc210..1c0c3e1319 100644 --- a/erts/doc/src/absform.xml +++ b/erts/doc/src/absform.xml @@ -583,7 +583,7 @@ <list type="bulleted"> <item>If C is a constraint <c>is_subtype(V, T)</c> or <c>V :: T</c>, where <c>V</c> is a type variable and <c>T</c> is a type, then - Rep(C) = <c>{type,LINE,constraint,[Rep(F),[Rep(V),Rep(T)]]}</c>. + Rep(C) = <c>{type,LINE,constraint,[{atom,LINE,is_subtype},[Rep(V),Rep(T)]]}</c>. </item> </list> </section> diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index c4eb0e16ec..b6fa4c254c 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1338,14 +1338,14 @@ <item> <p>Default process flag settings.</p> <taglist> - <tag><marker id="+xohmq"><c>+xohmq true|false</c></marker></tag> + <tag><marker id="+xmqd"><c>+xmqd off_heap|on_heap|mixed</c></marker></tag> <item><p> Sets the default value for the process flag - <c>off_heap_message_queue</c>. If <c>+xohmq</c> is not - passed, <c>false</c> will be the default. For more information, + <c>message_queue_data</c>. If <c>+xmqd</c> is not + passed, <c>mixed</c> will be the default. For more information, see the documentation of - <seealso marker="erlang#process_flag_off_heap_message_queue"><c>process_flag(off_heap_message_queue, - OHMQ)</c></seealso>. + <seealso marker="erlang#process_flag_message_queue_data"><c>process_flag(message_queue_data, + MQD)</c></seealso>. </p></item> </taglist> </item> diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index 2e82bb62a9..6ed03f3dfc 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -59,6 +59,12 @@ </datatype> <datatype> + <name name="message_queue_data"></name> + <desc><p>See <seealso marker="#process_flag_message_queue_data"><c>erlang:process_flag(message_queue_data, MQD)</c></seealso>.</p> + </desc> + </datatype> + + <datatype> <name name="timestamp"></name> <desc><p>See <seealso marker="#timestamp/0">erlang:timestamp/0</seealso>.</p> </desc> @@ -4280,39 +4286,52 @@ os_prompt% </pre> <p>Returns the old value of the flag.</p> </desc> </func> - <marker id="process_flag_off_heap_message_queue"/> + <marker id="process_flag_message_queue_data"/> <func> <name name="process_flag" arity="2" clause_i="5"/> - <fsummary>Set process flag <c>off_heap_message_queue</c> for the calling process</fsummary> + <fsummary>Set process flag <c>message_queue_data</c> for the calling process</fsummary> + <type name="message_queue_data"/> <desc> <p>This flag determines how messages in the message queue are stored. When the flag is:</p> <taglist> - <tag><c>true</c></tag> + <tag><c>off_heap</c></tag> <item><p> <em>All</em> messages in the message queue will be stored outside of the process heap. This implies that <em>no</em> messages in the message queue will be part of a garbage collection of the process. </p></item> - <tag><c>false</c></tag> + <tag><c>on_heap</c></tag> + <item><p> + All messages in the message queue will eventually be + placed on heap. They may however temporarily be stored + off heap. This is how messages always have been stored + up until ERTS version 8.0. + </p></item> + <tag><c>mixed</c></tag> <item><p> Messages may be placed either on the heap or outside of the heap. </p></item> </taglist> <p> + The default <c>message_queue_data</c> process flag is determined + by the <seealso marker="erl#+xmqd"><c>+xmqd</c></seealso> + <c>erl</c> command line argument. + </p> + <p> If the process potentially may get a hugh amount of messages, - you are recommended to set the flag to <c>true</c>. This since - a garbage collection with lots of messages placed on the heap - may become extremly expensive. Performance of the actual - message passing is however generally better when setting the - flag to <c>false</c>. + you are recommended to set the flag to <c>off_heap</c>. This + since a garbage collection with lots of messages placed on + the heap may become extremly expensive and the process may + consume large amounts of memory. Performance of the + actual message passing is however generally better when not + using the <c>off_heap</c> flag. </p> <p> - When changing this flag from <c>false</c> to <c>true</c>, - all messages in the message queue are moved off heap. This - work has been initiated but not completed when this function + When changing this flag messages will be moved. This work + has been initiated but not completed when this function call returns. </p> <p>Returns the old value of the flag.</p> @@ -4478,6 +4497,7 @@ os_prompt% </pre> <type name="process_info_result_item"/> <type name="priority_level"/> <type name="stack_item"/> + <type name="message_queue_data" /> <desc> <p>Returns a list containing <c><anno>InfoTuple</anno></c>s with miscellaneous information about the process identified by @@ -4530,6 +4550,7 @@ os_prompt% </pre> <type name="process_info_result_item"/> <type name="stack_item"/> <type name="priority_level"/> + <type name="message_queue_data" /> <desc> <p>Returns information about the process identified by <c><anno>Pid</anno></c>, as specified by @@ -4698,13 +4719,14 @@ os_prompt% </pre> monitor by name, the list item is <c>{process, {<anno>RegName</anno>, <anno>Node</anno>}}</c>.</p> </item> - <tag><c>{off_heap_message_queue, <anno>OHMQ</anno>}</c></tag> + <tag><c>{message_queue_data, <anno>MQD</anno>}</c></tag> <item> - <p>Returns the current state of the <c>off_heap_message_queue</c> - process flag. <c><anno>OHMQ</anno></c> is either <c>true</c>, or - <c>false</c>. For more information, see the documentation of - <seealso marker="#process_flag_off_heap_message_queue"><c>process_flag(off_heap_message_queue, - OHMQ)</c></seealso>.</p> + <p>Returns the current state of the <c>message_queue_data</c> + process flag. <c><anno>MQD</anno></c> is either <c>off_heap</c>, + <c>on_heap</c>, or <c>mixed</c>. For more information, see the + documentation of + <seealso marker="#process_flag_message_queue_data"><c>process_flag(message_queue_data, + MQD)</c></seealso>.</p> </item> <tag><c>{priority, <anno>Level</anno>}</c></tag> <item> @@ -5474,6 +5496,7 @@ true</pre> <name name="spawn_opt" arity="2"/> <fsummary>Creates a new process with a fun as entry point.</fsummary> <type name="priority_level"/> + <type name="message_queue_data" /> <type name="spawn_opt_option" /> <desc> <p>Returns the process identifier (pid) of a new process @@ -5490,6 +5513,7 @@ true</pre> <name name="spawn_opt" arity="3"/> <fsummary>Creates a new process with a fun as entry point on a given node.</fsummary> <type name="priority_level"/> + <type name="message_queue_data" /> <type name="spawn_opt_option" /> <desc> <p>Returns the process identifier (pid) of a new process started @@ -5505,6 +5529,7 @@ true</pre> <name name="spawn_opt" arity="4"/> <fsummary>Creates a new process with a function as entry point.</fsummary> <type name="priority_level"/> + <type name="message_queue_data" /> <type name="spawn_opt_option" /> <desc> <p>Works as @@ -5607,17 +5632,17 @@ true</pre> fine-tuning an application and to measure the execution time with various <c><anno>VSize</anno></c> values.</p> </item> - <tag><c>{off_heap_message_queue, <anno>OHMQ</anno>}</c></tag> + <tag><c>{message_queue_data, <anno>MQD</anno>}</c></tag> <item> - <p>Sets the state of the <c>off_heap_message_queue</c> process - flag. <c><anno>OHMQ</anno></c> should be either <c>true</c>, or - <c>false</c>. The default <c>off_heap_message_queue</c> process - flag is determined by the - <seealso marker="erl#+xohmq"><c>+xohmq</c></seealso> <c>erl</c> + <p>Sets the state of the <c>message_queue_data</c> process + flag. <c><anno>MQD</anno></c> should be either <c>off_heap</c>, + <c>on_heap</c>, or <c>mixed</c>. The default + <c>message_queue_data</c> process flag is determined by the + <seealso marker="erl#+xmqd"><c>+xmqd</c></seealso> <c>erl</c> command line argument. For more information, see the documentation of - <seealso marker="#process_flag_off_heap_message_queue"><c>process_flag(off_heap_message_queue, - <anno>OHMQ</anno>)</c></seealso>.</p> + <seealso marker="#process_flag_message_queue_data"><c>process_flag(message_queue_data, + <anno>MQD</anno>)</c></seealso>.</p> </item> </taglist> </desc> @@ -5627,6 +5652,7 @@ true</pre> <name name="spawn_opt" arity="5"/> <fsummary>Creates a new process with a function as entry point on a given node.</fsummary> <type name="priority_level"/> + <type name="message_queue_data" /> <type name="spawn_opt_option" /> <desc> <p>Returns the process identifier (pid) of a new process started @@ -7106,15 +7132,15 @@ ok used by the runtime system. It is on the form "<major ver>.<minor ver>".</p> </item> - <tag><marker id="system_info_off_heap_message_queue"><c>off_heap_message_queue</c></marker></tag> + <tag><marker id="system_info_message_queue_data"><c>message_queue_data</c></marker></tag> <item> - <p>Returns the default value of the <c>off_heap_message_queue</c> - process flag which is either <c>true</c> or <c>false</c>. This - default is set by the <c>erl</c> command line argument - <seealso marker="erl#+xohmq"><c>+xohmq</c></seealso>. For more information on the - <c>off_heap_message_queue</c> process flag, see documentation of - <seealso marker="#process_flag_off_heap_message_queue"><c>process_flag(off_heap_message_queue, - OHMQ)</c></seealso>.</p> + <p>Returns the default value of the <c>message_queue_data</c> + process flag which is either <c>off_heap</c>, <c>on_heap</c>, or <c>mixed</c>. + This default is set by the <c>erl</c> command line argument + <seealso marker="erl#+xmqd"><c>+xmqd</c></seealso>. For more information on the + <c>message_queue_data</c> process flag, see documentation of + <seealso marker="#process_flag_message_queue_data"><c>process_flag(message_queue_data, + MQD)</c></seealso>.</p> </item> <tag><marker id="system_info_otp_release"><c>otp_release</c></marker></tag> <item> diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index b4bdc5735c..5a65115cb2 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -32,7 +32,6 @@ <p>This document describes the changes made to the ERTS application.</p> - <section><title>Erts 7.1</title> <section><title>Fixed Bugs and Malfunctions</title> <list> @@ -982,6 +981,22 @@ </section> +<section><title>Erts 6.4.1.5</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed a bug that could cause a crash dump to become + almost empty.</p> + <p> + Own Id: OTP-13150</p> + </item> + </list> + </section> + +</section> + <section><title>Erts 6.4.1.4</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/erts/emulator/beam/atom.h b/erts/emulator/beam/atom.h index ead56c83d8..2c002ca92f 100644 --- a/erts/emulator/beam/atom.h +++ b/erts/emulator/beam/atom.h @@ -129,6 +129,7 @@ typedef enum { (erts_is_atom_utf8_bytes((byte *) LSTR, sizeof(LSTR) - 1, (TERM))) #define ERTS_DECL_AM(S) Eterm AM_ ## S = am_atom_put(#S, sizeof(#S) - 1) #define ERTS_INIT_AM(S) AM_ ## S = am_atom_put(#S, sizeof(#S) - 1) +#define ERTS_MAKE_AM(Str) am_atom_put(Str, sizeof(Str) - 1) int atom_table_size(void); /* number of elements */ int atom_table_sz(void); /* table size in bytes, excluding stored objects */ diff --git a/erts/emulator/beam/atom.names b/erts/emulator/beam/atom.names index ea04495574..7424e47ec3 100644 --- a/erts/emulator/beam/atom.names +++ b/erts/emulator/beam/atom.names @@ -350,6 +350,7 @@ atom memory_internal atom memory_types atom message atom message_binary +atom message_queue_data atom message_queue_len atom messages atom merge_trap @@ -361,6 +362,7 @@ atom min_heap_size atom min_bin_vheap_size atom minor_version atom Minus='-' +atom mixed atom module atom module_info atom monitored_by @@ -423,11 +425,12 @@ atom notify atom notsup atom nouse_stdio atom objects -atom off_heap_message_queue +atom off_heap atom offset atom ok atom old_heap_block_size atom old_heap_size +atom on_heap atom on_load atom open atom open_error diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c index 1a4133bceb..4d7b00b032 100644 --- a/erts/emulator/beam/beam_emu.c +++ b/erts/emulator/beam/beam_emu.c @@ -1843,8 +1843,8 @@ void process_main(void) * in the queue. This since messages with data outside * the heap will be corrupted by a GC. */ - ASSERT(!(c_p->flags & F_DISABLE_GC)); - c_p->flags |= F_DISABLE_GC; + ASSERT(!(c_p->flags & F_DELAY_GC)); + c_p->flags |= F_DELAY_GC; loop_rec__: PROCESS_MAIN_CHK_LOCKS(c_p); @@ -1858,7 +1858,7 @@ void process_main(void) if (ERTS_PROC_PENDING_EXIT(c_p)) { erts_smp_proc_unlock(c_p, ERTS_PROC_LOCKS_MSG_RECEIVE); SWAPOUT; - c_p->flags &= ~F_DISABLE_GC; + c_p->flags &= ~F_DELAY_GC; goto do_schedule; /* Will be rescheduled for exit */ } ERTS_SMP_MSGQ_MV_INQ2PRIVQ(c_p); @@ -1868,7 +1868,7 @@ void process_main(void) else #endif { - c_p->flags &= ~F_DISABLE_GC; + c_p->flags &= ~F_DELAY_GC; SET_I((BeamInstr *) Arg(0)); Goto(*I); /* Jump to a wait or wait_timeout instruction */ } @@ -1978,7 +1978,7 @@ void process_main(void) CANCEL_TIMER(c_p); erts_save_message_in_proc(c_p, msgp); - c_p->flags &= ~F_DISABLE_GC; + c_p->flags &= ~F_DELAY_GC; if (ERTS_IS_GC_DESIRED_INTERNAL(c_p, HTOP, E)) { /* @@ -2000,7 +2000,7 @@ void process_main(void) */ OpCase(loop_rec_end_f): { - ASSERT(c_p->flags & F_DISABLE_GC); + ASSERT(c_p->flags & F_DELAY_GC); SET_I((BeamInstr *) Arg(0)); SAVE_MESSAGE(c_p); @@ -2009,7 +2009,7 @@ void process_main(void) goto loop_rec__; } - c_p->flags &= ~F_DISABLE_GC; + c_p->flags &= ~F_DELAY_GC; c_p->i = I; SWAPOUT; c_p->arity = 0; @@ -3558,6 +3558,16 @@ do { \ StoreBifResult(1, result); } + OpCase(i_get_hash_cId): + { + Eterm arg; + Eterm result; + + GetArg1(0, arg); + result = erts_pd_hash_get_with_hx(c_p, Arg(1), arg); + StoreBifResult(2, result); + } + { Eterm case_end_val; diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c index 5db971b6af..d367cce212 100644 --- a/erts/emulator/beam/beam_load.c +++ b/erts/emulator/beam/beam_load.c @@ -4284,6 +4284,53 @@ gen_get_map_element(LoaderState* stp, GenOpArg Fail, GenOpArg Src, return op; } +static int +hash_internal_genop_arg(LoaderState* stp, GenOpArg Key, Uint32* hx) +{ + switch (Key.type) { + case TAG_a: + *hx = atom_tab(atom_val(Key.val))->slot.bucket.hvalue; + return 1; + case TAG_i: + *hx = Key.val; + return 1; + case TAG_n: + *hx = make_internal_hash(NIL); + return 1; + case TAG_q: + *hx = make_internal_hash(stp->literals[Key.val].term); + return 1; + default: + return 0; + } +} + + +static GenOp* +gen_get(LoaderState* stp, GenOpArg Src, GenOpArg Dst) +{ + GenOp* op; + Uint32 hx = 0; + + NEW_GENOP(stp, op); + op->next = NULL; + if (hash_internal_genop_arg(stp, Src, &hx)) { + op->arity = 3; + op->op = genop_i_get_hash_3; + op->a[0] = Src; + op->a[1].type = TAG_u; + op->a[1].val = (BeamInstr) hx; + op->a[2] = Dst; + } else { + op->arity = 2; + op->op = genop_i_get_2; + op->a[0] = Src; + op->a[1] = Dst; + } + return op; +} + + static GenOp* gen_get_map_elements(LoaderState* stp, GenOpArg Fail, GenOpArg Src, GenOpArg Size, GenOpArg* Rest) diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c index 886b19fe6e..bb9165cd79 100644 --- a/erts/emulator/beam/bif.c +++ b/erts/emulator/beam/bif.c @@ -910,13 +910,22 @@ BIF_RETTYPE spawn_opt_1(BIF_ALIST_1) so.priority = PRIORITY_LOW; else goto error; - } else if (arg == am_off_heap_message_queue) { - if (val == am_true) - so.flags |= SPO_OFF_HEAP_MSGQ; - else if (val == am_false) + } else if (arg == am_message_queue_data) { + switch (val) { + case am_mixed: + so.flags &= ~(SPO_OFF_HEAP_MSGQ|SPO_ON_HEAP_MSGQ); + break; + case am_on_heap: so.flags &= ~SPO_OFF_HEAP_MSGQ; - else + so.flags |= SPO_ON_HEAP_MSGQ; + break; + case am_off_heap: + so.flags &= ~SPO_ON_HEAP_MSGQ; + so.flags |= SPO_OFF_HEAP_MSGQ; + break; + default: goto error; + } } else if (arg == am_min_heap_size && is_small(val)) { Sint min_heap_size = signed_val(val); if (min_heap_size < 0) { @@ -1695,15 +1704,10 @@ BIF_RETTYPE process_flag_2(BIF_ALIST_2) } BIF_RET(old_value); } - else if (BIF_ARG_1 == am_off_heap_message_queue) { - int enable; - if (BIF_ARG_2 == am_true) - enable = 1; - else if (BIF_ARG_2 == am_false) - enable = 0; - else + else if (BIF_ARG_1 == am_message_queue_data) { + old_value = erts_change_message_queue_management(BIF_P, BIF_ARG_2); + if (is_non_value(old_value)) goto error; - old_value = erts_change_off_heap_message_queue_state(BIF_P, enable); BIF_RET(old_value); } else if (BIF_ARG_1 == am_sensitive) { diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab index c49a3ff313..07d4702b92 100644 --- a/erts/emulator/beam/bif.tab +++ b/erts/emulator/beam/bif.tab @@ -167,7 +167,7 @@ bif erts_internal:request_system_task/3 bif erts_internal:check_process_code/2 bif erts_internal:map_to_tuple_keys/1 -bif erts_internal:map_type/1 +bif erts_internal:term_type/1 bif erts_internal:map_hashmap_children/1 bif erts_internal:time_unit/0 diff --git a/erts/emulator/beam/dist.c b/erts/emulator/beam/dist.c index d5443476ec..e31ef29562 100644 --- a/erts/emulator/beam/dist.c +++ b/erts/emulator/beam/dist.c @@ -1136,7 +1136,6 @@ int erts_net_message(Port *prt, Process* rp; DeclareTmpHeapNoproc(ctl_default,DIST_CTL_DEFAULT_SIZE); Eterm* ctl = ctl_default; - ErlOffHeap off_heap; ErtsHeapFactory factory; Eterm* hp; Sint type; @@ -1151,9 +1150,6 @@ int erts_net_message(Port *prt, #endif UseTmpHeapNoproc(DIST_CTL_DEFAULT_SIZE); - /* Thanks to Luke Gorrie */ - off_heap.first = NULL; - off_heap.overhead = 0; ERTS_SMP_CHK_NO_PROC_LOCKS; @@ -1214,15 +1210,15 @@ int erts_net_message(Port *prt, } hp = ctl; - erts_factory_static_init(&factory, ctl, ctl_len, &off_heap); + erts_factory_tmp_init(&factory, ctl, ctl_len, ERTS_ALC_T_DCTRL_BUF); arg = erts_decode_dist_ext(&factory, &ede); if (is_non_value(arg)) { #ifdef ERTS_DIST_MSG_DBG - erts_fprintf(stderr, "DIST MSG DEBUG: erts_dist_ext_size(CTL) failed:\n"); + erts_fprintf(stderr, "DIST MSG DEBUG: erts_decode_dist_ext(CTL) failed:\n"); bw(buf, orig_len); #endif PURIFY_MSG("data error"); - goto data_error; + goto decode_error; } ctl_len = t - buf; @@ -1702,7 +1698,7 @@ int erts_net_message(Port *prt, goto invalid_message; } - erts_cleanup_offheap(&off_heap); + erts_factory_close(&factory); if (ctl != ctl_default) { erts_free(ERTS_ALC_T_DCTRL_BUF, (void *) ctl); } @@ -1715,12 +1711,13 @@ int erts_net_message(Port *prt, erts_dsprintf(dsbufp, "Invalid distribution message: %.200T", arg); erts_send_error_to_logger_nogl(dsbufp); } - data_error: +decode_error: PURIFY_MSG("data error"); - erts_cleanup_offheap(&off_heap); + erts_factory_close(&factory); if (ctl != ctl_default) { erts_free(ERTS_ALC_T_DCTRL_BUF, (void *) ctl); } +data_error: UnUseTmpHeapNoproc(DIST_CTL_DEFAULT_SIZE); erts_deliver_port_exit(prt, dep->cid, am_killed, 0); ERTS_SMP_CHK_NO_PROC_LOCKS; diff --git a/erts/emulator/beam/erl_alloc.c b/erts/emulator/beam/erl_alloc.c index 99458b4268..5544712e8d 100644 --- a/erts/emulator/beam/erl_alloc.c +++ b/erts/emulator/beam/erl_alloc.c @@ -292,7 +292,7 @@ static void set_default_literal_alloc_opts(struct au_init *ip) { SET_DEFAULT_ALLOC_OPTS(ip); - ip->enable = AU_ALLOC_DEFAULT_ENABLE(1); + ip->enable = 1; ip->thr_spec = 0; ip->atype = BESTFIT; ip->init.bf.ao = 1; diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c index 82c2aa4b9e..f952f937ce 100644 --- a/erts/emulator/beam/erl_bif_info.c +++ b/erts/emulator/beam/erl_bif_info.c @@ -592,7 +592,7 @@ static Eterm pi_args[] = { am_min_bin_vheap_size, am_current_location, am_current_stacktrace, - am_off_heap_message_queue + am_message_queue_data }; #define ERTS_PI_ARGS ((int) (sizeof(pi_args)/sizeof(Eterm))) @@ -640,7 +640,7 @@ pi_arg2ix(Eterm arg) case am_min_bin_vheap_size: return 28; case am_current_location: return 29; case am_current_stacktrace: return 30; - case am_off_heap_message_queue: return 31; + case am_message_queue_data: return 31; default: return -1; } } @@ -1499,8 +1499,22 @@ process_info_aux(Process *BIF_P, break; } - case am_off_heap_message_queue: - res = BIF_P->flags & F_OFF_HEAP_MSGQ ? am_true : am_false; + case am_message_queue_data: + switch (rp->flags & (F_OFF_HEAP_MSGQ|F_ON_HEAP_MSGQ)) { + case F_OFF_HEAP_MSGQ: + res = am_off_heap; + break; + case F_ON_HEAP_MSGQ: + res = am_on_heap; + break; + case 0: + res = am_mixed; + break; + default: + res = am_error; + ERTS_INTERNAL_ERROR("Inconsistent message queue management state"); + break; + } hp = HAlloc(BIF_P, 3); break; @@ -2665,9 +2679,18 @@ BIF_RETTYPE system_info_1(BIF_ALIST_1) BIF_RET(am_true); } #endif - else if (BIF_ARG_1 == am_off_heap_message_queue) { - BIF_RET(erts_default_spo_flags & SPO_OFF_HEAP_MSGQ - ? am_true : am_false); + else if (BIF_ARG_1 == am_message_queue_data) { + switch (erts_default_spo_flags & (SPO_ON_HEAP_MSGQ|SPO_OFF_HEAP_MSGQ)) { + case SPO_OFF_HEAP_MSGQ: + BIF_RET(am_off_heap); + case SPO_ON_HEAP_MSGQ: + BIF_RET(am_on_heap); + case 0: + BIF_RET(am_mixed); + default: + ERTS_INTERNAL_ERROR("Inconsistent message queue management state"); + BIF_RET(am_error); + } } else if (ERTS_IS_ATOM_STR("compile_info",BIF_ARG_1)) { Uint sz; diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c index c50756d56b..15226074c3 100644 --- a/erts/emulator/beam/erl_gc.c +++ b/erts/emulator/beam/erl_gc.c @@ -145,6 +145,7 @@ static void offset_rootset(Process *p, Sint offs, char* area, Uint area_size, Eterm* objv, int nobj); static void offset_off_heap(Process* p, Sint offs, char* area, Uint area_size); static void offset_mqueue(Process *p, Sint offs, char* area, Uint area_size); +static void move_msgq_to_heap(Process *p); static void init_gc_info(ErtsGCInfo *gcip); @@ -440,8 +441,15 @@ delay_garbage_collection(Process *p, ErlHeapFragment *live_hf_end, int need) ERTS_HOLE_CHECK(p); - if (p->live_hf_end == ERTS_INVALID_HFRAG_PTR) + if ((p->flags & F_DISABLE_GC) + && p->live_hf_end == ERTS_INVALID_HFRAG_PTR) { + /* + * A BIF yielded with disabled GC. Remember + * heap fragments created by the BIF until we + * do next GC. + */ p->live_hf_end = live_hf_end; + } if (need == 0) return 1; @@ -513,6 +521,14 @@ young_gen_usage(Process *p) Eterm *aheap; hsz = p->mbuf_sz; + + if (p->flags & F_ON_HEAP_MSGQ) { + ErtsMessage *mp; + for (mp = p->msg.first; mp; mp = mp->next) + if (mp->data.attached) + hsz += erts_msg_attached_data_size(mp); + } + aheap = p->abandoned_heap; if (!aheap) hsz += p->htop - p->heap; @@ -564,10 +580,12 @@ garbage_collect(Process* p, ErlHeapFragment *live_hf_end, DTRACE_CHARBUF(pidbuf, DTRACE_TERM_BUF_SIZE); #endif - if (p->flags & F_DISABLE_GC) + if (p->flags & (F_DISABLE_GC|F_DELAY_GC)) return delay_garbage_collection(p, live_hf_end, need); - if (p->live_hf_end != ERTS_INVALID_HFRAG_PTR) + if (p->abandoned_heap) + live_hf_end = ERTS_INVALID_HFRAG_PTR; + else if (p->live_hf_end != ERTS_INVALID_HFRAG_PTR) live_hf_end = p->live_hf_end; esdp = erts_get_scheduler_data(); @@ -734,6 +752,12 @@ erts_garbage_collect_hibernate(Process* p) p->arg_reg, p->arity); + ERTS_HEAP_FREE(ERTS_ALC_T_HEAP, + (p->abandoned_heap + ? p->abandoned_heap + : p->heap), + p->heap_sz * sizeof(Eterm)); + p->heap = heap; p->high_water = htop; p->htop = htop; @@ -1025,10 +1049,13 @@ minor_collection(Process* p, ErlHeapFragment *live_hf_end, do_minor(p, live_hf_end, (char *) mature, mature_size*sizeof(Eterm), new_sz, objv, nobj); + if (p->flags & F_ON_HEAP_MSGQ) + move_msgq_to_heap(p); + new_mature = p->old_htop - prev_old_htop; size_after = new_mature; - size_after += HEAP_TOP(p) - HEAP_START(p); + size_after += HEAP_TOP(p) - HEAP_START(p) + p->mbuf_sz; *recl += (size_before - size_after); ErtsGcQuickSanityCheck(p); @@ -1441,7 +1468,7 @@ major_collection(Process* p, ErlHeapFragment *live_hf_end, (p->abandoned_heap ? p->abandoned_heap : HEAP_START(p)), - (HEAP_END(p) - HEAP_START(p)) * sizeof(Eterm)); + p->heap_sz * sizeof(Eterm)); p->abandoned_heap = NULL; p->flags &= ~F_ABANDONED_HEAP_USE; HEAP_START(p) = n_heap; @@ -1452,9 +1479,14 @@ major_collection(Process* p, ErlHeapFragment *live_hf_end, HIGH_WATER(p) = HEAP_TOP(p); + remove_message_buffers(p); + + if (p->flags & F_ON_HEAP_MSGQ) + move_msgq_to_heap(p); + ErtsGcQuickSanityCheck(p); - size_after = HEAP_TOP(p) - HEAP_START(p); + size_after = HEAP_TOP(p) - HEAP_START(p) + p->mbuf_sz; *recl += size_before - size_after; adjusted = adjust_after_fullsweep(p, need, objv, nobj); @@ -1462,8 +1494,6 @@ major_collection(Process* p, ErlHeapFragment *live_hf_end, #ifdef HARDDEBUG disallow_heap_frag_ref_in_heap(p); #endif - remove_message_buffers(p); - ErtsGcQuickSanityCheck(p); return gc_cost(size_after, adjusted ? size_after : 0); @@ -1991,6 +2021,173 @@ collect_live_heap_frags(Process* p, ErlHeapFragment *live_hf_end, return n_htop; } +static ERTS_INLINE void +copy_one_frag(Eterm** hpp, ErlOffHeap* off_heap, + ErlHeapFragment *bp, Eterm *refs, int nrefs) +{ + Uint sz; + int i; + Sint offs; + struct erl_off_heap_header* oh; + Eterm *fhp, *hp; + + OH_OVERHEAD(off_heap, bp->off_heap.overhead); + sz = bp->used_size; + + fhp = bp->mem; + hp = *hpp; + offs = hp - fhp; + + oh = NULL; + while (sz--) { + Uint cpy_sz; + Eterm val = *fhp++; + + switch (primary_tag(val)) { + case TAG_PRIMARY_IMMED1: + *hp++ = val; + break; + case TAG_PRIMARY_LIST: + case TAG_PRIMARY_BOXED: + *hp++ = offset_ptr(val, offs); + break; + case TAG_PRIMARY_HEADER: + *hp++ = val; + switch (val & _HEADER_SUBTAG_MASK) { + case ARITYVAL_SUBTAG: + break; + case REFC_BINARY_SUBTAG: + case FUN_SUBTAG: + case EXTERNAL_PID_SUBTAG: + case EXTERNAL_PORT_SUBTAG: + case EXTERNAL_REF_SUBTAG: + oh = (struct erl_off_heap_header*) (hp-1); + cpy_sz = thing_arityval(val); + goto cpy_words; + default: + cpy_sz = header_arity(val); + + cpy_words: + ASSERT(sz >= cpy_sz); + sz -= cpy_sz; + while (cpy_sz >= 8) { + cpy_sz -= 8; + *hp++ = *fhp++; + *hp++ = *fhp++; + *hp++ = *fhp++; + *hp++ = *fhp++; + *hp++ = *fhp++; + *hp++ = *fhp++; + *hp++ = *fhp++; + *hp++ = *fhp++; + } + switch (cpy_sz) { + case 7: *hp++ = *fhp++; + case 6: *hp++ = *fhp++; + case 5: *hp++ = *fhp++; + case 4: *hp++ = *fhp++; + case 3: *hp++ = *fhp++; + case 2: *hp++ = *fhp++; + case 1: *hp++ = *fhp++; + default: break; + } + if (oh) { + /* Add to offheap list */ + oh->next = off_heap->first; + off_heap->first = oh; + ASSERT(*hpp <= (Eterm*)oh); + ASSERT(hp > (Eterm*)oh); + oh = NULL; + } + break; + } + break; + } + } + + ASSERT(bp->used_size == hp - *hpp); + *hpp = hp; + + for (i = 0; i < nrefs; i++) { + if (is_not_immed(refs[i])) + refs[i] = offset_ptr(refs[i], offs); + } + bp->off_heap.first = NULL; +} + +static void +move_msgq_to_heap(Process *p) +{ + ErtsMessage **mpp = &p->msg.first; + + while (*mpp) { + ErtsMessage *mp = *mpp; + + if (mp->data.attached) { + ErlHeapFragment *bp; + ErtsHeapFactory factory; + + erts_factory_proc_prealloc_init(&factory, p, + erts_msg_attached_data_size(mp)); + + if (is_non_value(ERL_MESSAGE_TERM(mp))) { + if (mp->data.dist_ext) { + ASSERT(mp->data.dist_ext->heap_size >= 0); + if (is_not_nil(ERL_MESSAGE_TOKEN(mp))) { + bp = erts_dist_ext_trailer(mp->data.dist_ext); + ERL_MESSAGE_TOKEN(mp) = copy_struct(ERL_MESSAGE_TOKEN(mp), + bp->used_size, + &factory.hp, + factory.off_heap); + erts_cleanup_offheap(&bp->off_heap); + } + ERL_MESSAGE_TERM(mp) = erts_decode_dist_ext(&factory, + mp->data.dist_ext); + erts_free_dist_ext_copy(mp->data.dist_ext); + mp->data.dist_ext = NULL; + } + } + else { + + if (mp->data.attached == ERTS_MSG_COMBINED_HFRAG) + bp = &mp->hfrag; + else + bp = mp->data.heap_frag; + + if (bp->next) + erts_move_multi_frags(&factory.hp, factory.off_heap, bp, + mp->m, ERL_MESSAGE_REF_ARRAY_SZ, 0); + else + copy_one_frag(&factory.hp, factory.off_heap, bp, + mp->m, ERL_MESSAGE_REF_ARRAY_SZ); + + if (mp->data.attached != ERTS_MSG_COMBINED_HFRAG) { + mp->data.heap_frag = NULL; + free_message_buffer(bp); + } + else { + ErtsMessage *tmp = erts_alloc_message(0, NULL); + sys_memcpy((void *) tmp->m, (void *) mp->m, + sizeof(Eterm)*ERL_MESSAGE_REF_ARRAY_SZ); + tmp->next = mp->next; + if (p->msg.save == &mp->next) + p->msg.save = &tmp->next; + if (p->msg.last == &mp->next) + p->msg.last = &tmp->next; + *mpp = tmp; + mp->next = NULL; + erts_cleanup_messages(mp); + mp = tmp; + } + } + + erts_factory_close(&factory); + } + + mpp = &(*mpp)->next; + } +} + static Uint setup_rootset(Process *p, Eterm *objv, int nobj, Rootset *rootset) { @@ -2080,9 +2277,8 @@ setup_rootset(Process *p, Eterm *objv, int nobj, Rootset *rootset) case F_OFF_HEAP_MSGQ_CHNG: case 0: { /* - * Off heap message queue disabled, i.e. we may - * have references from the message queue to the - * heap... + * We do not have off heap message queue enabled, i.e. we + * need to add message queue to rootset... */ ErtsMessage *mp; diff --git a/erts/emulator/beam/erl_init.c b/erts/emulator/beam/erl_init.c index 296cfdabc3..99d8a2a987 100644 --- a/erts/emulator/beam/erl_init.c +++ b/erts/emulator/beam/erl_init.c @@ -630,7 +630,8 @@ void erts_usage(void) erts_fprintf(stderr, "-W<i|w|e> set error logger warnings mapping,\n"); erts_fprintf(stderr, " see error_logger documentation for details\n"); - erts_fprintf(stderr, "-xohmq bool set default off_heap_message_queue flag for processes\n"); + erts_fprintf(stderr, "-xmqd val set default message queue data flag for processes,\n"); + erts_fprintf(stderr, " valid values are: off_heap | on_heap | mixed\n"); erts_fprintf(stderr, "-zdbbl size set the distribution buffer busy limit in kilobytes\n"); erts_fprintf(stderr, " valid range is [1-%d]\n", INT_MAX/1024); erts_fprintf(stderr, "-zdntgc time set delayed node table gc in seconds\n"); @@ -2020,15 +2021,21 @@ erl_start(int argc, char **argv) case 'x': { char *sub_param = argv[i]+2; - if (has_prefix("ohmq", sub_param)) { - arg = get_arg(sub_param+4, argv[i+1], &i); - if (sys_strcmp(arg, "true") == 0) - erts_default_spo_flags |= SPO_OFF_HEAP_MSGQ; - else if (sys_strcmp(arg, "false") == 0) + if (has_prefix("mqd", sub_param)) { + arg = get_arg(sub_param+3, argv[i+1], &i); + if (sys_strcmp(arg, "mixed") == 0) + erts_default_spo_flags &= ~(SPO_ON_HEAP_MSGQ|SPO_OFF_HEAP_MSGQ); + else if (sys_strcmp(arg, "on_heap") == 0) { erts_default_spo_flags &= ~SPO_OFF_HEAP_MSGQ; + erts_default_spo_flags |= SPO_ON_HEAP_MSGQ; + } + else if (sys_strcmp(arg, "off_heap") == 0) { + erts_default_spo_flags &= ~SPO_ON_HEAP_MSGQ; + erts_default_spo_flags |= SPO_OFF_HEAP_MSGQ; + } else { erts_fprintf(stderr, - "Invalid off_heap_message_queue flag: %s\n", arg); + "Invalid message_queue_data flag: %s\n", arg); erts_usage(); } } else { diff --git a/erts/emulator/beam/erl_map.c b/erts/emulator/beam/erl_map.c index 29b3024644..d0ffb11e79 100644 --- a/erts/emulator/beam/erl_map.c +++ b/erts/emulator/beam/erl_map.c @@ -2698,32 +2698,88 @@ BIF_RETTYPE erts_internal_map_to_tuple_keys_1(BIF_ALIST_1) { } /* - * erts_internal:map_type/1 + * erts_internal:term_type/1 * * Used in erts_debug:size/1 */ -BIF_RETTYPE erts_internal_map_type_1(BIF_ALIST_1) { - DECL_AM(hashmap); - DECL_AM(hashmap_node); - DECL_AM(flatmap); - if (is_map(BIF_ARG_1)) { - Eterm hdr = *(boxed_val(BIF_ARG_1)); - ASSERT(is_header(hdr)); - switch (hdr & _HEADER_MAP_SUBTAG_MASK) { - case HAMT_SUBTAG_HEAD_FLATMAP: - BIF_RET(AM_flatmap); - case HAMT_SUBTAG_HEAD_ARRAY: - case HAMT_SUBTAG_HEAD_BITMAP: - BIF_RET(AM_hashmap); - case HAMT_SUBTAG_NODE_BITMAP: - BIF_RET(AM_hashmap_node); - default: - erl_exit(1, "bad header"); +BIF_RETTYPE erts_internal_term_type_1(BIF_ALIST_1) { + Eterm obj = BIF_ARG_1; + switch (primary_tag(obj)) { + case TAG_PRIMARY_LIST: + BIF_RET(ERTS_MAKE_AM("list")); + case TAG_PRIMARY_BOXED: { + Eterm hdr = *boxed_val(obj); + ASSERT(is_header(hdr)); + switch (hdr & _TAG_HEADER_MASK) { + case ARITYVAL_SUBTAG: + BIF_RET(ERTS_MAKE_AM("tuple")); + case EXPORT_SUBTAG: + BIF_RET(ERTS_MAKE_AM("export")); + case FUN_SUBTAG: + BIF_RET(ERTS_MAKE_AM("fun")); + case MAP_SUBTAG: + switch (MAP_HEADER_TYPE(hdr)) { + case MAP_HEADER_TAG_FLATMAP_HEAD : + BIF_RET(ERTS_MAKE_AM("flatmap")); + case MAP_HEADER_TAG_HAMT_HEAD_BITMAP : + case MAP_HEADER_TAG_HAMT_HEAD_ARRAY : + BIF_RET(ERTS_MAKE_AM("hashmap")); + case MAP_HEADER_TAG_HAMT_NODE_BITMAP : + BIF_RET(ERTS_MAKE_AM("hashmap_node")); + default: + erl_exit(ERTS_ABORT_EXIT, "term_type: bad map header type %d\n", MAP_HEADER_TYPE(hdr)); + } + case REFC_BINARY_SUBTAG: + BIF_RET(ERTS_MAKE_AM("refc_binary")); + case HEAP_BINARY_SUBTAG: + BIF_RET(ERTS_MAKE_AM("heap_binary")); + case SUB_BINARY_SUBTAG: + BIF_RET(ERTS_MAKE_AM("sub_binary")); + case BIN_MATCHSTATE_SUBTAG: + BIF_RET(ERTS_MAKE_AM("matchstate")); + case POS_BIG_SUBTAG: + case NEG_BIG_SUBTAG: + BIF_RET(ERTS_MAKE_AM("bignum")); + case REF_SUBTAG: + BIF_RET(ERTS_MAKE_AM("reference")); + case EXTERNAL_REF_SUBTAG: + BIF_RET(ERTS_MAKE_AM("external_reference")); + case EXTERNAL_PID_SUBTAG: + BIF_RET(ERTS_MAKE_AM("external_pid")); + case EXTERNAL_PORT_SUBTAG: + BIF_RET(ERTS_MAKE_AM("external_port")); + case FLOAT_SUBTAG: + BIF_RET(ERTS_MAKE_AM("hfloat")); + default: + erl_exit(ERTS_ABORT_EXIT, "term_type: Invalid tag (0x%X)\n", hdr); + } } + case TAG_PRIMARY_IMMED1: + switch (obj & _TAG_IMMED1_MASK) { + case _TAG_IMMED1_SMALL: + BIF_RET(ERTS_MAKE_AM("fixnum")); + case _TAG_IMMED1_PID: + BIF_RET(ERTS_MAKE_AM("pid")); + case _TAG_IMMED1_PORT: + BIF_RET(ERTS_MAKE_AM("port")); + case _TAG_IMMED1_IMMED2: + switch (obj & _TAG_IMMED2_MASK) { + case _TAG_IMMED2_ATOM: + BIF_RET(ERTS_MAKE_AM("atom")); + case _TAG_IMMED2_CATCH: + BIF_RET(ERTS_MAKE_AM("catch")); + case _TAG_IMMED2_NIL: + BIF_RET(ERTS_MAKE_AM("nil")); + default: + erl_exit(ERTS_ABORT_EXIT, "term_type: Invalid tag (0x%X)\n", obj); + } + default: + erl_exit(ERTS_ABORT_EXIT, "term_type: Invalid tag (0x%X)\n", obj); + } + default: + erl_exit(ERTS_ABORT_EXIT, "term_type: Invalid tag (0x%X)\n", obj); } - BIF_P->fvalue = BIF_ARG_1; - BIF_ERROR(BIF_P, BADMAP); } /* diff --git a/erts/emulator/beam/erl_map.h b/erts/emulator/beam/erl_map.h index be6f791a4e..052fa99f03 100644 --- a/erts/emulator/beam/erl_map.h +++ b/erts/emulator/beam/erl_map.h @@ -180,14 +180,17 @@ typedef struct hashmap_head_s { [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. */ -#define HASHMAP_HEAP_SIZE(KEYS,NODES) ((KEYS)*3 + (NODES)*2) +#define HASHMAP_WORDS_PER_KEY 3 +#define HASHMAP_WORDS_PER_NODE 2 #ifdef DEBUG -# define HASHMAP_ESTIMATED_NODE_COUNT(KEYS) (KEYS) +# define HASHMAP_ESTIMATED_TOT_NODE_SIZE(KEYS) \ + (HASHMAP_WORDS_PER_NODE * (KEYS) * 3/10) /* slightly under estimated */ #else -# define HASHMAP_ESTIMATED_NODE_COUNT(KEYS) (2*(KEYS)/5) +# define HASHMAP_ESTIMATED_TOT_NODE_SIZE(KEYS) \ + (HASHMAP_WORDS_PER_NODE * (KEYS) * 4/10) /* slightly over estimated */ #endif #define HASHMAP_ESTIMATED_HEAP_SIZE(KEYS) \ - HASHMAP_HEAP_SIZE(KEYS,HASHMAP_ESTIMATED_NODE_COUNT(KEYS)) - + ((KEYS)*HASHMAP_WORDS_PER_KEY + HASHMAP_ESTIMATED_TOT_NODE_SIZE(KEYS)) #endif diff --git a/erts/emulator/beam/erl_message.c b/erts/emulator/beam/erl_message.c index 1811651a58..ac5ec79fe4 100644 --- a/erts/emulator/beam/erl_message.c +++ b/erts/emulator/beam/erl_message.c @@ -630,9 +630,24 @@ erts_try_alloc_message_on_heap(Process *pp, #endif else { in_message_fragment: - - mp = erts_alloc_message(sz, hpp); - *ohpp = sz == 0 ? NULL : &mp->hfrag.off_heap; + if (!((*psp) & ERTS_PSFLG_ON_HEAP_MSGQ)) { + mp = erts_alloc_message(sz, hpp); + *ohpp = sz == 0 ? NULL : &mp->hfrag.off_heap; + } + else { + mp = erts_alloc_message(0, NULL); + if (!sz) { + *hpp = NULL; + *ohpp = NULL; + } + else { + ErlHeapFragment *bp; + bp = new_message_buffer(sz); + *hpp = &bp->mem[0]; + mp->data.heap_frag = bp; + *ohpp = &bp->off_heap; + } + } *on_heap_p = 0; } @@ -1022,12 +1037,12 @@ erts_complete_off_heap_message_queue_change(Process *c_p) ASSERT(erts_smp_atomic32_read_nob(&c_p->state) & ERTS_PSFLG_OFF_HEAP_MSGQ); /* - * This job was first initiated when the process changed - * "off heap message queue" state from false to true. Since - * then ERTS_PSFLG_OFF_HEAP_MSGQ has been set. However, the - * state change might have been changed again (multiple times) - * since then. Check users last requested state (the flag - * F_OFF_HEAP_MSGQ), and make the state consistent with that. + * This job was first initiated when the process changed to off heap + * message queue management. Since then ERTS_PSFLG_OFF_HEAP_MSGQ + * has been set. However, the management state might have been changed + * again (multiple times) since then. Check users last requested state + * (the flags F_OFF_HEAP_MSGQ, and F_ON_HEAP_MSGQ), and make the state + * consistent with that. */ if (!(c_p->flags & F_OFF_HEAP_MSGQ)) @@ -1068,8 +1083,9 @@ change_off_heap_msgq(void *vcohmq) } Eterm -erts_change_off_heap_message_queue_state(Process *c_p, int enable) +erts_change_message_queue_management(Process *c_p, Eterm new_state) { + Eterm res; #ifdef DEBUG if (c_p->flags & F_OFF_HEAP_MSGQ) { @@ -1088,57 +1104,117 @@ erts_change_off_heap_message_queue_state(Process *c_p, int enable) } #endif - if (c_p->flags & F_OFF_HEAP_MSGQ) { - /* Off heap message queue is enabled */ + switch (c_p->flags & (F_OFF_HEAP_MSGQ|F_ON_HEAP_MSGQ)) { + + case F_OFF_HEAP_MSGQ: + res = am_off_heap; - if (!enable) { + switch (new_state) { + case am_off_heap: + break; + case am_on_heap: + c_p->flags |= F_ON_HEAP_MSGQ; + erts_smp_atomic32_read_bor_nob(&c_p->state, + ERTS_PSFLG_ON_HEAP_MSGQ); + /* fall through */ + case am_mixed: c_p->flags &= ~F_OFF_HEAP_MSGQ; /* * We are not allowed to clear ERTS_PSFLG_OFF_HEAP_MSGQ - * if a change is ongoing. It will be adjusted when the - * change completes... + * if a off heap change is ongoing. It will be adjusted + * when the change completes... */ if (!(c_p->flags & F_OFF_HEAP_MSGQ_CHNG)) { /* Safe to clear ERTS_PSFLG_OFF_HEAP_MSGQ... */ erts_smp_atomic32_read_band_nob(&c_p->state, ~ERTS_PSFLG_OFF_HEAP_MSGQ); } + break; + default: + res = THE_NON_VALUE; /* badarg */ + break; + } + break; + + case F_ON_HEAP_MSGQ: + res = am_on_heap; + + switch (new_state) { + case am_on_heap: + break; + case am_mixed: + c_p->flags &= ~F_ON_HEAP_MSGQ; + erts_smp_atomic32_read_band_nob(&c_p->state, + ~ERTS_PSFLG_ON_HEAP_MSGQ); + break; + case am_off_heap: + c_p->flags &= ~F_ON_HEAP_MSGQ; + erts_smp_atomic32_read_band_nob(&c_p->state, + ~ERTS_PSFLG_ON_HEAP_MSGQ); + goto change_to_off_heap; + default: + res = THE_NON_VALUE; /* badarg */ + break; + } + break; + + case 0: + res = am_mixed; + + switch (new_state) { + case am_mixed: + break; + case am_on_heap: + c_p->flags |= F_ON_HEAP_MSGQ; + erts_smp_atomic32_read_bor_nob(&c_p->state, + ERTS_PSFLG_ON_HEAP_MSGQ); + break; + case am_off_heap: + goto change_to_off_heap; + default: + res = THE_NON_VALUE; /* badarg */ + break; } + break; - return am_true; /* Old state */ + default: + res = am_error; + ERTS_INTERNAL_ERROR("Inconsistent message queue management state"); + break; } - /* Off heap message queue is disabled */ + return res; + +change_to_off_heap: - if (enable) { - c_p->flags |= F_OFF_HEAP_MSGQ; + c_p->flags |= F_OFF_HEAP_MSGQ; + + /* + * We do not have to schedule a change if + * we have an ongoing off heap change... + */ + if (!(c_p->flags & F_OFF_HEAP_MSGQ_CHNG)) { + ErtsChangeOffHeapMessageQueue *cohmq; /* - * We do not have to schedule a change if - * we have an ongoing change... + * Need to set ERTS_PSFLG_OFF_HEAP_MSGQ and wait + * thread progress before completing the change in + * order to ensure that all senders observe that + * messages should be passed off heap. When the + * change has completed, GC does not need to inspect + * the message queue at all. */ - if (!(c_p->flags & F_OFF_HEAP_MSGQ_CHNG)) { - ErtsChangeOffHeapMessageQueue *cohmq; - /* - * Need to set ERTS_PSFLG_OFF_HEAP_MSGQ and wait - * thread progress before completing the change in - * order to ensure that all senders observe that - * messages should be passed off heap. When the - * change has completed, GC does not need to inspect - * the message queue at all. - */ - erts_smp_atomic32_read_bor_nob(&c_p->state, - ERTS_PSFLG_OFF_HEAP_MSGQ); - c_p->flags |= F_OFF_HEAP_MSGQ_CHNG; - cohmq = erts_alloc(ERTS_ALC_T_MSGQ_CHNG, - sizeof(ErtsChangeOffHeapMessageQueue)); - cohmq->pid = c_p->common.id; - erts_schedule_thr_prgr_later_op(change_off_heap_msgq, - (void *) cohmq, - &cohmq->lop); - } + erts_smp_atomic32_read_bor_nob(&c_p->state, + ERTS_PSFLG_OFF_HEAP_MSGQ); + c_p->flags |= F_OFF_HEAP_MSGQ_CHNG; + cohmq = erts_alloc(ERTS_ALC_T_MSGQ_CHNG, + sizeof(ErtsChangeOffHeapMessageQueue)); + cohmq->pid = c_p->common.id; + erts_schedule_thr_prgr_later_op(change_off_heap_msgq, + (void *) cohmq, + &cohmq->lop); } - return am_false; /* Old state */ + return res; } int @@ -1501,6 +1577,9 @@ void erts_factory_selfcontained_message_init(ErtsHeapFactory* factory, ASSERT(factory->hp >= factory->hp_start && factory->hp <= factory->hp_end); } +/* One static sized heap that must suffice. + No extra heap fragments will be allocated. +*/ void erts_factory_static_init(ErtsHeapFactory* factory, Eterm* hp, Uint size, @@ -1515,6 +1594,23 @@ void erts_factory_static_init(ErtsHeapFactory* factory, factory->off_heap_saved.overhead = factory->off_heap->overhead; } +/* A temporary heap with default buffer allocated/freed by client. + * factory_close is same as factory_undo + */ +void erts_factory_tmp_init(ErtsHeapFactory* factory, Eterm* hp, Uint size, + Uint32 atype) +{ + factory->mode = FACTORY_TMP; + factory->hp_start = hp; + factory->hp = hp; + factory->hp_end = hp + size; + factory->heap_frags = NULL; + factory->off_heap_saved.first = NULL; + factory->off_heap_saved.overhead = 0; + factory->off_heap = &factory->off_heap_saved; + factory->alloc_type = atype; +} + /* When we know the term is an immediate and need no heap. */ void erts_factory_dummy_init(ErtsHeapFactory* factory) @@ -1565,6 +1661,7 @@ static void reserve_heap(ErtsHeapFactory* factory, Uint need, Uint xtra) else { /* Fall through */ case FACTORY_HEAP_FRAGS: + case FACTORY_TMP: bp = factory->heap_frags; } @@ -1630,6 +1727,9 @@ void erts_factory_close(ErtsHeapFactory* factory) bp->used_size = factory->hp - bp->mem; } break; + case FACTORY_TMP: + erts_factory_undo(factory); + break; case FACTORY_STATIC: break; case FACTORY_CLOSED: break; default: @@ -1756,8 +1856,20 @@ void erts_factory_undo(ErtsHeapFactory* factory) factory->message->data.heap_frag = factory->heap_frags; erts_cleanup_messages(factory->message); break; + case FACTORY_TMP: case FACTORY_HEAP_FRAGS: - free_message_buffer(factory->heap_frags); + erts_cleanup_offheap(factory->off_heap); + factory->off_heap->first = NULL; + + bp = factory->heap_frags; + while (bp != NULL) { + ErlHeapFragment* next_bp = bp->next; + + ASSERT(bp->off_heap.first == NULL); + ERTS_HEAP_FREE(factory->alloc_type, (void *) bp, + ERTS_HEAP_FRAG_SIZE(bp->alloc_size)); + bp = next_bp; + } break; case FACTORY_CLOSED: break; diff --git a/erts/emulator/beam/erl_message.h b/erts/emulator/beam/erl_message.h index 76387bc34c..60035d15ae 100644 --- a/erts/emulator/beam/erl_message.h +++ b/erts/emulator/beam/erl_message.h @@ -58,7 +58,8 @@ typedef struct { FACTORY_HALLOC, FACTORY_MESSAGE, FACTORY_HEAP_FRAGS, - FACTORY_STATIC + FACTORY_STATIC, + FACTORY_TMP } mode; Process* p; Eterm* hp_start; @@ -80,6 +81,7 @@ ErtsMessage *erts_factory_message_create(ErtsHeapFactory *, Process *, ErtsProcLocks *, Uint sz); void erts_factory_selfcontained_message_init(ErtsHeapFactory*, ErtsMessage *, Eterm *); void erts_factory_static_init(ErtsHeapFactory*, Eterm* hp, Uint size, ErlOffHeap*); +void erts_factory_tmp_init(ErtsHeapFactory*, Eterm* hp, Uint size, Uint32 atype); void erts_factory_dummy_init(ErtsHeapFactory*); Eterm* erts_produce_heap(ErtsHeapFactory*, Uint need, Uint xtra); @@ -284,7 +286,7 @@ void erts_cleanup_offheap(ErlOffHeap *offheap); void erts_save_message_in_proc(Process *p, ErtsMessage *msg); Sint erts_move_messages_off_heap(Process *c_p); Sint erts_complete_off_heap_message_queue_change(Process *c_p); -Eterm erts_change_off_heap_message_queue_state(Process *c_p, int enable); +Eterm erts_change_message_queue_management(Process *c_p, Eterm new_state); int erts_decode_dist_message(Process *, ErtsProcLocks, ErtsMessage *, int); diff --git a/erts/emulator/beam/erl_node_tables.c b/erts/emulator/beam/erl_node_tables.c index 74e3e81d6f..106235ab30 100644 --- a/erts/emulator/beam/erl_node_tables.c +++ b/erts/emulator/beam/erl_node_tables.c @@ -752,6 +752,10 @@ erts_set_this_node(Eterm sysname, Uint creation) erts_this_dist_entry = erts_this_node->dist_entry; erts_refc_inc(&erts_this_dist_entry->refc, 2); + + erts_this_node_sysname = erts_this_node_sysname_BUFFER; + erts_snprintf(erts_this_node_sysname, sizeof(erts_this_node_sysname_BUFFER), + "%T", sysname); } Uint diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index a714068314..6c132a7e3d 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -335,7 +335,6 @@ static ErtsAlignedSchedulerSleepInfo *aligned_dirty_io_sched_sleep_info; static Uint last_reductions; static Uint last_exact_reductions; -Uint erts_default_process_flags; Eterm erts_system_monitor; Eterm erts_system_monitor_long_gc; Uint erts_system_monitor_long_schedule; @@ -677,7 +676,6 @@ erts_init_process(int ncpu, int proc_tab_size, int legacy_proc_tab) last_reductions = 0; last_exact_reductions = 0; - erts_default_process_flags = 0; } void @@ -9259,6 +9257,8 @@ Process *schedule(Process *p, int calls) } else { sched_out_proc: + ASSERT(!(p->flags & F_DELAY_GC)); + #ifdef ERTS_SMP ERTS_SMP_CHK_HAVE_ONLY_MAIN_PROC_LOCK(p); esdp = p->scheduler_data; @@ -10732,7 +10732,7 @@ erl_create_process(Process* parent, /* Parent of process (default group leader). Eterm args, /* Arguments for function (must be well-formed list). */ ErlSpawnOpts* so) /* Options for spawn. */ { - Uint flags = erts_default_process_flags; + Uint flags = 0; ErtsRunQueue *rq = NULL; Process *p; Sint arity; /* Number of arguments. */ @@ -10778,6 +10778,10 @@ erl_create_process(Process* parent, /* Parent of process (default group leader). state |= ERTS_PSFLG_OFF_HEAP_MSGQ; flags |= F_OFF_HEAP_MSGQ; } + else if (so->flags & SPO_ON_HEAP_MSGQ) { + state |= ERTS_PSFLG_ON_HEAP_MSGQ; + flags |= F_ON_HEAP_MSGQ; + } if (!rq) rq = erts_get_runq_proc(parent); @@ -11267,6 +11271,7 @@ erts_cleanup_empty_process(Process* p) static void delete_process(Process* p) { + Eterm *heap; VERBOSE(DEBUG_PROCESSES, ("Removing process: %T\n",p->common.id)); VERBOSE(DEBUG_SHCOPY, ("[pid=%T] delete process: %p %p %p %p\n", p->common.id, HEAP_START(p), HEAP_END(p), OLD_HEAP(p), OLD_HEND(p))); @@ -11293,16 +11298,17 @@ delete_process(Process* p) * Release heaps. Clobber contents in DEBUG build. */ - -#ifdef DEBUG - sys_memset(p->heap, DEBUG_BAD_BYTE, p->heap_sz*sizeof(Eterm)); -#endif - #ifdef HIPE hipe_delete_process(&p->hipe); #endif - ERTS_HEAP_FREE(ERTS_ALC_T_HEAP, (void*) p->heap, p->heap_sz*sizeof(Eterm)); + heap = p->abandoned_heap ? p->abandoned_heap : p->heap; + +#ifdef DEBUG + sys_memset(heap, DEBUG_BAD_BYTE, p->heap_sz*sizeof(Eterm)); +#endif + + ERTS_HEAP_FREE(ERTS_ALC_T_HEAP, (void*) heap, p->heap_sz*sizeof(Eterm)); if (p->old_heap != NULL) { #ifdef DEBUG @@ -11321,6 +11327,9 @@ delete_process(Process* p) free_message_buffer(p->mbuf); } + if (p->msg_frag) + erts_cleanup_messages(p->msg_frag); + erts_erase_dicts(p); /* free all pending messages */ diff --git a/erts/emulator/beam/erl_process.h b/erts/emulator/beam/erl_process.h index a72c5b8ad4..71065d875a 100644 --- a/erts/emulator/beam/erl_process.h +++ b/erts/emulator/beam/erl_process.h @@ -1141,14 +1141,15 @@ void erts_check_for_holes(Process* p); #define ERTS_PSFLG_PROXY ERTS_PSFLG_BIT(16) #define ERTS_PSFLG_DELAYED_SYS ERTS_PSFLG_BIT(17) #define ERTS_PSFLG_OFF_HEAP_MSGQ ERTS_PSFLG_BIT(18) +#define ERTS_PSFLG_ON_HEAP_MSGQ ERTS_PSFLG_BIT(19) #ifdef ERTS_DIRTY_SCHEDULERS -#define ERTS_PSFLG_DIRTY_CPU_PROC ERTS_PSFLG_BIT(19) -#define ERTS_PSFLG_DIRTY_IO_PROC ERTS_PSFLG_BIT(20) -#define ERTS_PSFLG_DIRTY_CPU_PROC_IN_Q ERTS_PSFLG_BIT(21) -#define ERTS_PSFLG_DIRTY_IO_PROC_IN_Q ERTS_PSFLG_BIT(22) -#define ERTS_PSFLG_MAX (ERTS_PSFLGS_ZERO_BIT_OFFSET + 23) +#define ERTS_PSFLG_DIRTY_CPU_PROC ERTS_PSFLG_BIT(20) +#define ERTS_PSFLG_DIRTY_IO_PROC ERTS_PSFLG_BIT(21) +#define ERTS_PSFLG_DIRTY_CPU_PROC_IN_Q ERTS_PSFLG_BIT(22) +#define ERTS_PSFLG_DIRTY_IO_PROC_IN_Q ERTS_PSFLG_BIT(23) +#define ERTS_PSFLG_MAX (ERTS_PSFLGS_ZERO_BIT_OFFSET + 24) #else -#define ERTS_PSFLG_MAX (ERTS_PSFLGS_ZERO_BIT_OFFSET + 19) +#define ERTS_PSFLG_MAX (ERTS_PSFLGS_ZERO_BIT_OFFSET + 20) #endif #define ERTS_PSFLGS_IN_PRQ_MASK (ERTS_PSFLG_IN_PRQ_MAX \ @@ -1197,6 +1198,7 @@ void erts_check_for_holes(Process* p); #define SPO_MONITOR 4 #define SPO_SYSTEM_PROC 8 #define SPO_OFF_HEAP_MSGQ 16 +#define SPO_ON_HEAP_MSGQ 32 extern int erts_default_spo_flags; @@ -1244,7 +1246,6 @@ Eterm* erts_heap_alloc(Process* p, Uint need, Uint xtra); Eterm* erts_set_hole_marker(Eterm* ptr, Uint sz); #endif -extern Uint erts_default_process_flags; extern erts_smp_rwmtx_t erts_cpu_bind_rwmtx; /* If any of the erts_system_monitor_* variables are set (enabled), ** erts_system_monitor must be != NIL, to allow testing on just @@ -1285,10 +1286,23 @@ extern struct erts_system_profile_flags_t erts_system_profile_flags; #define F_HAVE_BLCKD_MSCHED (1 << 8) /* Process has blocked multi-scheduling */ #define F_P2PNR_RESCHED (1 << 9) /* Process has been rescheduled via erts_pid2proc_not_running() */ #define F_FORCE_GC (1 << 10) /* Force gc at process in-scheduling */ -#define F_DISABLE_GC (1 << 11) /* Disable GC */ +#define F_DISABLE_GC (1 << 11) /* Disable GC (see below) */ #define F_OFF_HEAP_MSGQ (1 << 12) /* Off heap msg queue */ -#define F_OFF_HEAP_MSGQ_CHNG (1 << 13) /* Off heap msg queue changing */ -#define F_ABANDONED_HEAP_USE (1 << 14) /* Have usage of abandoned heap */ +#define F_ON_HEAP_MSGQ (1 << 13) /* Off heap msg queue */ +#define F_OFF_HEAP_MSGQ_CHNG (1 << 14) /* Off heap msg queue changing */ +#define F_ABANDONED_HEAP_USE (1 << 15) /* Have usage of abandoned heap */ +#define F_DELAY_GC (1 << 16) /* Similar to disable GC (see below) */ + +/* + * F_DISABLE_GC and F_DELAY_GC are similar. Both will prevent + * GC of the process, but it is important to use the right + * one: + * - F_DISABLE_GC should *only* be used by BIFs. This when + * the BIF needs to yield while preventig a GC. + * - F_DELAY_GC should only be used when GC is temporarily + * disabled while the process is scheduled. A process must + * not be scheduled out while F_DELAY_GC is set. + */ /* process trace_flags */ #define F_SENSITIVE (1 << 0) diff --git a/erts/emulator/beam/erl_process_dict.c b/erts/emulator/beam/erl_process_dict.c index f82cad745a..da9ebd92ab 100644 --- a/erts/emulator/beam/erl_process_dict.c +++ b/erts/emulator/beam/erl_process_dict.c @@ -53,14 +53,17 @@ /* Hash utility macros */ #define HASH_RANGE(PDict) ((PDict)->homeSize + (PDict)->splitPosition) -#define MAKE_HASH(Term) \ -((is_small(Term)) ? unsigned_val(Term) : \ - ((is_atom(Term)) ? \ - (atom_tab(atom_val(term))->slot.bucket.hvalue) : \ - make_hash2(Term))) +#define MAKE_HASH(Term) \ + ((is_small(Term)) ? unsigned_val(Term) : \ + ((is_atom(Term)) ? \ + (atom_tab(atom_val(Term))->slot.bucket.hvalue) : \ + make_internal_hash(Term))) #define PD_SZ2BYTES(Sz) (sizeof(ProcDict) + ((Sz) - 1)*sizeof(Eterm)) +#define pd_hash_value(Pdict, Key) \ + pd_hash_value_to_ix(Pdict, MAKE_HASH((Key))) + /* Memory allocation macros */ #define PD_ALLOC(Sz) \ erts_alloc(ERTS_ALC_T_PROC_DICT, (Sz)) @@ -82,6 +85,7 @@ */ static void pd_hash_erase(Process *p, Eterm id, Eterm *ret); static void pd_hash_erase_all(Process *p); +static Eterm pd_hash_get_with_hval(Process *p, Eterm bucket, Eterm id); static Eterm pd_hash_get_keys(Process *p, Eterm value); static Eterm pd_hash_get_all_keys(Process *p, ProcDict *pd); static Eterm pd_hash_get_all(Process *p, ProcDict *pd); @@ -93,7 +97,7 @@ static void grow(Process *p); static void array_shrink(ProcDict **ppd, unsigned int need); static Eterm array_put(ProcDict **ppdict, unsigned int ndx, Eterm term); -static unsigned int pd_hash_value(ProcDict *pdict, Eterm term); +static unsigned int pd_hash_value_to_ix(ProcDict *pdict, Uint32 hx); static unsigned int next_array_size(unsigned int need); /* @@ -390,40 +394,55 @@ static void pd_hash_erase_all(Process *p) } } +Eterm erts_pd_hash_get_with_hx(Process *p, Uint32 hx, Eterm id) +{ + unsigned int hval; + ProcDict *pd = p->dictionary; + + if (pd == NULL) + return am_undefined; + hval = pd_hash_value_to_ix(pd, hx); + return pd_hash_get_with_hval(p, ARRAY_GET(pd, hval), id); +} + Eterm erts_pd_hash_get(Process *p, Eterm id) { unsigned int hval; - Eterm tmp; ProcDict *pd = p->dictionary; if (pd == NULL) return am_undefined; hval = pd_hash_value(pd, id); - tmp = ARRAY_GET(pd, hval); - if (is_boxed(tmp)) { /* Tuple */ - ASSERT(is_tuple(tmp)); - if (EQ(tuple_val(tmp)[1], id)) { - return tuple_val(tmp)[2]; + return pd_hash_get_with_hval(p, ARRAY_GET(pd, hval), id); +} + +Eterm pd_hash_get_with_hval(Process *p, Eterm bucket, Eterm id) +{ + if (is_boxed(bucket)) { /* Tuple */ + ASSERT(is_tuple(bucket)); + if (EQ(tuple_val(bucket)[1], id)) { + return tuple_val(bucket)[2]; } - } else if (is_list(tmp)) { - for (; tmp != NIL && !EQ(tuple_val(TCAR(tmp))[1], id); tmp = TCDR(tmp)) { + } else if (is_list(bucket)) { + for (; bucket != NIL && !EQ(tuple_val(TCAR(bucket))[1], id); bucket = TCDR(bucket)) { ; } - if (tmp != NIL) { - return tuple_val(TCAR(tmp))[2]; + if (bucket != NIL) { + return tuple_val(TCAR(bucket))[2]; } - } else if (is_not_nil(tmp)) { + } else if (is_not_nil(bucket)) { #ifdef DEBUG erts_fprintf(stderr, "Process dictionary for process %T is broken, trying to " "display term found in line %d:\n" - "%T\n", p->common.id, __LINE__, tmp); + "%T\n", p->common.id, __LINE__, bucket); #endif erl_exit(1, "Damaged process dictionary found during get/1."); } return am_undefined; } + #define PD_GET_TKEY(Dst,Src) \ do { \ ASSERT(is_tuple((Src))); \ @@ -932,17 +951,16 @@ static Eterm array_put(ProcDict **ppdict, unsigned int ndx, Eterm term) ** Basic utilities */ -static unsigned int pd_hash_value(ProcDict *pdict, Eterm term) +static unsigned int pd_hash_value_to_ix(ProcDict *pdict, Uint32 hx) { - Uint hash, high; - - hash = MAKE_HASH(term); - high = hash % (pdict->homeSize*2); + Uint high; + high = hx % (pdict->homeSize*2); if (high >= HASH_RANGE(pdict)) - return hash % pdict->homeSize; + return hx % pdict->homeSize; return high; } + static unsigned int next_array_size(unsigned int need) { static unsigned int tab[] = diff --git a/erts/emulator/beam/erl_process_dict.h b/erts/emulator/beam/erl_process_dict.h index cc53800eb5..9aa21b7c38 100644 --- a/erts/emulator/beam/erl_process_dict.h +++ b/erts/emulator/beam/erl_process_dict.h @@ -39,5 +39,6 @@ void erts_deep_dictionary_dump(int to, void *to_arg, Eterm erts_dictionary_copy(struct process *p, ProcDict *pd); Eterm erts_pd_hash_get(struct process *p, Eterm id); +Eterm erts_pd_hash_get_with_hx(Process *p, Uint32 hx, Eterm id); #endif diff --git a/erts/emulator/beam/hash.c b/erts/emulator/beam/hash.c index e0fde337f2..75d091d11c 100644 --- a/erts/emulator/beam/hash.c +++ b/erts/emulator/beam/hash.c @@ -27,8 +27,6 @@ #endif #include "sys.h" -#include "erl_vm.h" -#include "global.h" #include "hash.h" /* @@ -66,6 +64,7 @@ void hash_get_info(HashInfo *hi, Hash *h) int i; int max_depth = 0; int objects = 0; + int used = 0; for (i = 0; i < size; i++) { int depth = 0; @@ -76,14 +75,18 @@ void hash_get_info(HashInfo *hi, Hash *h) depth++; b = b->next; } - if (depth > max_depth) - max_depth = depth; + if (depth) { + used++; + if (depth > max_depth) + max_depth = depth; + } } + ASSERT(objects == h->nobjs); hi->name = h->name; hi->size = h->size; - hi->used = h->used; - hi->objs = objects; + hi->used = used; + hi->objs = h->nobjs; hi->depth = max_depth; } @@ -119,6 +122,15 @@ hash_table_sz(Hash *h) } +static ERTS_INLINE void set_thresholds(Hash* h) +{ + h->grow_threshold = (8*h->size)/5; /* grow at 160% load */ + if (h->size_ix > h->min_size_ix) + h->shrink_threshold = h->size / 5; /* shrink at 20% load */ + else + h->shrink_threshold = -1; /* never shrink below inital size */ +} + /* ** init a pre allocated or static hash structure ** and allocate buckets. @@ -145,10 +157,10 @@ Hash* hash_init(ErtsAlcType_t type, Hash* h, char* name, int size, HashFunctions h->name = name; h->fun = fun; h->size = size; - h->size20percent = h->size/5; - h->size80percent = (4*h->size)/5; - h->ix = ix; - h->used = 0; + h->size_ix = ix; + h->min_size_ix = ix; + h->nobjs = 0; + set_thresholds(h); return h; } @@ -199,32 +211,26 @@ static void rehash(Hash* h, int grow) int i; if (grow) { - if ((h_size_table[h->ix+1]) == -1) + if ((h_size_table[h->size_ix+1]) == -1) return; - h->ix++; + h->size_ix++; } else { - if (h->ix == 0) + if (h->size_ix == 0) return; - h->ix--; + h->size_ix--; } - h->size = h_size_table[h->ix]; - h->size20percent = h->size/5; - h->size80percent = (4*h->size)/5; + h->size = h_size_table[h->size_ix]; sz = h->size*sizeof(HashBucket*); new_bucket = (HashBucket **) erts_alloc(h->type, sz); sys_memzero(new_bucket, sz); - h->used = 0; - for (i = 0; i < old_size; i++) { HashBucket* b = h->bucket[i]; while (b != (HashBucket*) 0) { HashBucket* b_next = b->next; int ix = b->hvalue % h->size; - if (new_bucket[ix] == NULL) - h->used++; b->next = new_bucket[ix]; new_bucket[ix] = b; b = b_next; @@ -232,6 +238,7 @@ static void rehash(Hash* h, int grow) } erts_free(h->type, (void *) h->bucket); h->bucket = new_bucket; + set_thresholds(h); } /* @@ -268,68 +275,15 @@ void* hash_put(Hash* h, void* tmpl) } b = (HashBucket*) h->fun.alloc(tmpl); - if (h->bucket[ix] == NULL) - h->used++; - b->hvalue = hval; b->next = h->bucket[ix]; h->bucket[ix] = b; - if (h->used > h->size80percent) /* rehash at 80% */ + if (++h->nobjs > h->grow_threshold) rehash(h, 1); return (void*) b; } -static void -hash_insert_entry(Hash* h, HashBucket* entry) -{ - HashValue hval = entry->hvalue; - int ix = hval % h->size; - HashBucket* b = h->bucket[ix]; - - while (b != (HashBucket*) 0) { - if ((b->hvalue == hval) && (h->fun.cmp((void*)entry, (void*)b) == 0)) { - abort(); /* Should not happen */ - } - b = b->next; - } - - if (h->bucket[ix] == NULL) - h->used++; - - entry->next = h->bucket[ix]; - h->bucket[ix] = entry; - - if (h->used > h->size80percent) /* rehash at 80% */ - rehash(h, 1); -} - - -/* - * Move all entries in src into dst; empty src. - * Entries in src must not exist in dst. - */ -void -erts_hash_merge(Hash* src, Hash* dst) -{ - int limit = src->size; - HashBucket** bucket = src->bucket; - int i; - - src->used = 0; - for (i = 0; i < limit; i++) { - HashBucket* b = bucket[i]; - HashBucket* next; - - bucket[i] = NULL; - while (b) { - next = b->next; - hash_insert_entry(dst, b); - b = next; - } - } -} - /* ** Erase hash entry return template if erased ** return 0 if not erased @@ -348,9 +302,7 @@ void* hash_erase(Hash* h, void* tmpl) else h->bucket[ix] = b->next; h->fun.free((void*)b); - if (h->bucket[ix] == NULL) - h->used--; - if (h->used < h->size20percent) /* rehash at 20% */ + if (--h->nobjs < h->shrink_threshold) rehash(h, 0); return tmpl; } @@ -381,9 +333,7 @@ hash_remove(Hash *h, void *tmpl) prev->next = b->next; else h->bucket[ix] = b->next; - if (h->bucket[ix] == NULL) - h->used--; - if (h->used < h->size20percent) /* rehash at 20% */ + if (--h->nobjs < h->shrink_threshold) rehash(h, 0); return (void *) b; } diff --git a/erts/emulator/beam/hash.h b/erts/emulator/beam/hash.h index 87fdb360e3..dc7e9c10c5 100644 --- a/erts/emulator/beam/hash.h +++ b/erts/emulator/beam/hash.h @@ -72,10 +72,11 @@ typedef struct hash ErtsAlcType_t type; char* name; /* Table name (static string, for debugging) */ int size; /* Number of slots */ - int size20percent; /* 20 percent of number of slots */ - int size80percent; /* 80 percent of number of slots */ - int ix; /* Size index in size table */ - int used; /* Number of slots used */ + int shrink_threshold; + int grow_threshold; + int size_ix; /* Size index in size table */ + int min_size_ix; /* Never shrink table smaller than this */ + int nobjs; /* Number of objects in table */ HashBucket** bucket; /* Vector of bucket pointers (objects) */ } Hash; @@ -93,6 +94,4 @@ void* hash_erase(Hash*, void*); void* hash_remove(Hash*, void*); void hash_foreach(Hash*, void (*func)(void *, void *), void *); -void erts_hash_merge(Hash* src, Hash* dst); - #endif diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab index 46fefb88af..081c4108a0 100644 --- a/erts/emulator/beam/ops.tab +++ b/erts/emulator/beam/ops.tab @@ -1036,7 +1036,7 @@ call_bif e bif0 u$bif:erlang:self/0 Dst=d => self Dst bif0 u$bif:erlang:node/0 Dst=d => node Dst -bif1 Fail Bif=u$bif:erlang:get/1 Src=s Dst=d => i_get Src Dst +bif1 Fail Bif=u$bif:erlang:get/1 Src=s Dst=d => gen_get(Src, Dst) bif2 Jump=j u$bif:erlang:element/2 S1=s S2=xy Dst=d => gen_element(Jump, S1, S2, Dst) @@ -1045,6 +1045,7 @@ bif1 p Bif S1 Dst => bif1_body Bif S1 Dst bif2 p Bif S1 S2 Dst => i_bif2_body Bif S1 S2 Dst bif2 Fail Bif S1 S2 Dst => i_bif2 Fail Bif S1 S2 Dst +i_get_hash c I d i_get s d %macro: self Self diff --git a/erts/emulator/hipe/hipe_native_bif.c b/erts/emulator/hipe/hipe_native_bif.c index ad8fb685e5..1bfee94e9e 100644 --- a/erts/emulator/hipe/hipe_native_bif.c +++ b/erts/emulator/hipe/hipe_native_bif.c @@ -164,7 +164,7 @@ void hipe_select_msg(Process *p) JOIN_MESSAGE(p); CANCEL_TIMER(p); /* calls erts_cancel_proc_timer() */ erts_save_message_in_proc(p, msgp); - p->flags &= ~F_DISABLE_GC; + p->flags &= ~F_DELAY_GC; if (ERTS_IS_GC_DESIRED(p)) { /* * We want to GC soon but we leave a few @@ -519,7 +519,7 @@ Eterm hipe_check_get_msg(Process *c_p) { ErtsMessage *msgp; - c_p->flags |= F_DISABLE_GC; + c_p->flags |= F_DELAY_GC; next_message: @@ -541,7 +541,7 @@ Eterm hipe_check_get_msg(Process *c_p) /* XXX: BEAM doesn't need this */ c_p->hipe_smp.have_receive_locks = 1; #endif - c_p->flags &= ~F_DISABLE_GC; + c_p->flags &= ~F_DELAY_GC; return THE_NON_VALUE; #ifdef ERTS_SMP } diff --git a/erts/emulator/test/Makefile b/erts/emulator/test/Makefile index 77614d455c..8cc47937b7 100644 --- a/erts/emulator/test/Makefile +++ b/erts/emulator/test/Makefile @@ -79,6 +79,7 @@ MODULES= \ node_container_SUITE \ nofrag_SUITE \ num_bif_SUITE \ + message_queue_data_SUITE \ op_SUITE \ port_SUITE \ port_bif_SUITE \ diff --git a/erts/emulator/test/erts_debug_SUITE.erl b/erts/emulator/test/erts_debug_SUITE.erl index 35677f9953..bbba829501 100644 --- a/erts/emulator/test/erts_debug_SUITE.erl +++ b/erts/emulator/test/erts_debug_SUITE.erl @@ -24,13 +24,13 @@ -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, init_per_group/2,end_per_group/2, init_per_testcase/2,end_per_testcase/2, - test_size/1,flat_size_big/1,df/1, + test_size/1,flat_size_big/1,df/1,term_type/1, instructions/1]). suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> - [test_size, flat_size_big, df, instructions]. + [test_size, flat_size_big, df, instructions, term_type]. groups() -> []. @@ -138,6 +138,47 @@ flat_size_big_1(Term, Size0, Limit) when Size0 < Limit -> end; flat_size_big_1(_, _, _) -> ok. + +term_type(Config) when is_list(Config) -> + Ts = [{fixnum, 1}, + {fixnum, -1}, + {bignum, 1 bsl 300}, + {bignum, -(1 bsl 300)}, + {hfloat, 0.0}, + {hfloat, 0.0/-1}, + {hfloat, 1.0/(1 bsl 302)}, + {hfloat, 1.0*(1 bsl 302)}, + {hfloat, -1.0/(1 bsl 302)}, + {hfloat, -1.0*(1 bsl 302)}, + {hfloat, 3.1416}, + {hfloat, 1.0e18}, + {hfloat, -3.1416}, + {hfloat, -1.0e18}, + + {heap_binary, <<1,2,3>>}, + {refc_binary, <<0:(8*80)>>}, + {sub_binary, <<5:7>>}, + + {flatmap, #{ a => 1}}, + {hashmap, maps:from_list([{I,I}||I <- lists:seq(1,76)])}, + + {list, [1,2,3]}, + {nil, []}, + {tuple, {1,2,3}}, + {tuple, {}}, + + {export, fun lists:sort/1}, + {'fun', fun() -> ok end}, + {pid, self()}, + {atom, atom}], + lists:foreach(fun({E,Val}) -> + R = erts_internal:term_type(Val), + io:format("expecting term type ~w, got ~w (~p)~n", [E,R,Val]), + E = R + end, Ts), + ok. + + df(Config) when is_list(Config) -> P0 = pps(), PrivDir = ?config(priv_dir, Config), diff --git a/erts/emulator/test/map_SUITE.erl b/erts/emulator/test/map_SUITE.erl index b74be7c53a..5e9814be60 100644 --- a/erts/emulator/test/map_SUITE.erl +++ b/erts/emulator/test/map_SUITE.erl @@ -2595,7 +2595,7 @@ hashmap_balance(KeyFun) -> F = fun(I, {M0,Max0}) -> Key = KeyFun(I), M1 = M0#{Key => Key}, - Max1 = case erts_internal:map_type(M1) of + Max1 = case erts_internal:term_type(M1) of hashmap -> Nodes = hashmap_nodes(M1), Avg = maps:size(M1) * 0.4, @@ -2996,21 +2996,38 @@ id(I) -> I. t_gc_rare_map_overflow(Config) -> Pa = filename:dirname(code:which(?MODULE)), {ok, Node} = test_server:start_node(gc_rare_map_overflow, slave, [{args, "-pa \""++Pa++"\""}]), - Echo = spawn_link(Node, fun Loop() -> receive {From,Msg} -> From ! Msg - end, - Loop() - end), - FatMap = fatmap(34), - false = (flatmap =:= erts_internal:map_type(FatMap)), - - t_gc_rare_map_overflow_do(Echo, FatMap, fun() -> erlang:garbage_collect() end), - - % Repeat test for minor gc: - minor_collect(), % need this to make the next gc really be a minor - t_gc_rare_map_overflow_do(Echo, FatMap, fun() -> true = minor_collect() end), - - unlink(Echo), - test_server:stop_node(Node). + erts_debug:set_internal_state(available_internal_state, true), + try + Echo = spawn_link(Node, fun Loop() -> receive {From,Msg} -> From ! Msg + end, + Loop() + end), + FatMap = fatmap(34), + false = (flatmap =:= erts_internal:term_type(FatMap)), + + t_gc_rare_map_overflow_do(Echo, FatMap, fun() -> erlang:garbage_collect() end), + + %% Repeat test for minor gc: + t_gc_rare_map_overflow_do(Echo, FatMap, fun() -> minor_collect() end), + + unlink(Echo), + + %% Test fatmap in exit signal + Exiter = spawn_link(Node, fun Loop() -> receive {From,Msg} -> + "not_a_map" = Msg % badmatch! + end, + Loop() + end), + process_flag(trap_exit, true), + Exiter ! {self(), FatMap}, + {'EXIT', Exiter, {{badmatch,FatMap}, _}} = receive M -> M end, + ok + + after + process_flag(trap_exit, false), + erts_debug:set_internal_state(available_internal_state, false), + test_server:stop_node(Node) + end. t_gc_rare_map_overflow_do(Echo, FatMap, GcFun) -> Master = self(), @@ -3030,15 +3047,11 @@ t_gc_rare_map_overflow_do(Echo, FatMap, GcFun) -> ok. minor_collect() -> - minor_collect(minor_gcs()). - -minor_collect(Before) -> + Before = minor_gcs(), + erts_debug:set_internal_state(force_gc, self()), + erlang:yield(), After = minor_gcs(), - case After of - _ when After > Before -> true; - _ when After =:= Before -> minor_collect(Before); - 0 -> false - end. + io:format("minor_gcs: ~p -> ~p\n", [Before, After]). minor_gcs() -> {garbage_collection, Info} = process_info(self(), garbage_collection), @@ -3048,7 +3061,7 @@ minor_gcs() -> %% Generate a map with N (or N+1) keys that has an abnormal heap demand. %% Done by finding keys that collide in the first 32-bit hash. fatmap(N) -> - erts_debug:set_internal_state(available_internal_state, true), + %%erts_debug:set_internal_state(available_internal_state, true), Table = ets:new(void, [bag, private]), Seed0 = rand:seed_s(exsplus, {4711, 3141592, 2718281}), diff --git a/erts/emulator/test/message_queue_data_SUITE.erl b/erts/emulator/test/message_queue_data_SUITE.erl new file mode 100644 index 0000000000..11481409aa --- /dev/null +++ b/erts/emulator/test/message_queue_data_SUITE.erl @@ -0,0 +1,239 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2014. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% + +-module(message_queue_data_SUITE). + +-export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, + init_per_group/2,end_per_group/2, + init_per_testcase/2,end_per_testcase/2]). +-export([basic/1, process_info_messages/1]). + +-export([basic_test/1]). + +-include_lib("test_server/include/test_server.hrl"). + +init_per_testcase(Case, Config) -> + ?line Dog=test_server:timetrap(test_server:minutes(2)), + [{watchdog, Dog}, {testcase, Case}|Config]. + +end_per_testcase(_, Config) -> + Dog=?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +suite() -> [{ct_hooks,[ts_install_cth]}]. + +all() -> + [basic, process_info_messages]. + +groups() -> + []. + +init_per_suite(Config) -> +%% erts_debug:set_internal_state(available_internal_state, true), + Config. + +end_per_suite(_Config) -> +%% erts_debug:set_internal_state(available_internal_state, false), + ok. + +init_per_group(_GroupName, Config) -> + Config. + +end_per_group(_GroupName, Config) -> + Config. + +%% +%% +%% Test cases +%% +%% + +basic(Config) when is_list(Config) -> + + basic_test(erlang:system_info(message_queue_data)), + + {ok, Node1} = start_node(Config, "+xmqd off_heap"), + ok = rpc:call(Node1, ?MODULE, basic_test, [off_heap]), + stop_node(Node1), + + {ok, Node2} = start_node(Config, "+xmqd on_heap"), + ok = rpc:call(Node2, ?MODULE, basic_test, [on_heap]), + stop_node(Node2), + + {ok, Node3} = start_node(Config, "+xmqd mixed"), + ok = rpc:call(Node3, ?MODULE, basic_test, [mixed]), + stop_node(Node3), + + ok. + +is_valid_mqd_value(off_heap) -> + true; +is_valid_mqd_value(on_heap) -> + true; +is_valid_mqd_value(mixed) -> + true; +is_valid_mqd_value(_) -> + false. + + +basic_test(Default) -> + + Default = erlang:system_info(message_queue_data), + true = is_valid_mqd_value(Default), + + {message_queue_data, Default} = process_info(self(), message_queue_data), + Default = process_flag(message_queue_data, off_heap), + {message_queue_data, off_heap} = process_info(self(), message_queue_data), + off_heap = process_flag(message_queue_data, on_heap), + {message_queue_data, on_heap} = process_info(self(), message_queue_data), + on_heap = process_flag(message_queue_data, mixed), + {message_queue_data, mixed} = process_info(self(), message_queue_data), + mixed = process_flag(message_queue_data, Default), + {'EXIT', _} = (catch process_flag(message_queue_data, blupp)), + + P1 = spawn_opt(fun () -> receive after infinity -> ok end end, + [link]), + {message_queue_data, Default} = process_info(P1, message_queue_data), + unlink(P1), + exit(P1, bye), + + P2 = spawn_opt(fun () -> receive after infinity -> ok end end, + [link, {message_queue_data, off_heap}]), + {message_queue_data, off_heap} = process_info(P2, message_queue_data), + unlink(P2), + exit(P2, bye), + + P3 = spawn_opt(fun () -> receive after infinity -> ok end end, + [link, {message_queue_data, on_heap}]), + {message_queue_data, on_heap} = process_info(P3, message_queue_data), + unlink(P3), + exit(P3, bye), + + P4 = spawn_opt(fun () -> receive after infinity -> ok end end, + [link, {message_queue_data, mixed}]), + {message_queue_data, mixed} = process_info(P4, message_queue_data), + unlink(P4), + exit(P4, bye), + + {'EXIT', _} = (catch spawn_opt(fun () -> receive after infinity -> ok end end, + [link, {message_queue_data, blapp}])), + + ok. + +process_info_messages(Config) when is_list(Config) -> + Tester = self(), + P1 = spawn_opt(fun () -> + receive after 500 -> ok end, + mixed = process_flag(message_queue_data, off_heap), + Tester ! first, + receive after 500 -> ok end, + off_heap = process_flag(message_queue_data, on_heap), + Tester ! second, + receive after 500 -> ok end, + on_heap = process_flag(message_queue_data, mixed), + Tester ! third, + receive after 500 -> ok end, + mixed = process_flag(message_queue_data, off_heap), + Tester ! fourth, + + receive after infinity -> ok end + end, + [link, {message_queue_data, mixed}]), + + P1 ! "A", + receive first -> ok end, + P1 ! "B", + receive second -> ok end, + P1 ! "C", + receive third -> ok end, + P1 ! "D", + receive fourth -> ok end, + P1 ! "E", + + {messages, ["A", "B", "C", "D", "E"]} = process_info(P1, messages), + + P2 = spawn_opt(fun () -> + receive after 500 -> ok end, + mixed = process_flag(message_queue_data, off_heap), + Tester ! first, + receive after 500 -> ok end, + off_heap = process_flag(message_queue_data, on_heap), + Tester ! second, + receive after 500 -> ok end, + on_heap = process_flag(message_queue_data, mixed), + Tester ! third, + receive after 500 -> ok end, + mixed = process_flag(message_queue_data, off_heap), + Tester ! fourth, + receive after 500 -> ok end, + + Tester ! process_info(self(), messages), + + receive M1 -> M1 = "A" end, + receive M2 -> M2 = "B" end, + receive M3 -> M3 = "C" end, + receive M4 -> M4 = "D" end, + receive M5 -> M5 = "E" end, + + Tester ! self() + end, + [link, {message_queue_data, mixed}]), + + P2 ! "A", + receive first -> ok end, + P2 ! "B", + receive second -> ok end, + P2 ! "C", + receive third -> ok end, + P2 ! "D", + receive fourth -> ok end, + P2 ! "E", + + receive + Msg -> + {messages, ["A", "B", "C", "D", "E"]} = Msg + end, + + receive P2 -> ok end, + + ok. + +%% +%% +%% helpers +%% +%% + +start_node(Config) -> + start_node(Config, []). +start_node(Config, Opts) when is_list(Config), is_list(Opts) -> + Pa = filename:dirname(code:which(?MODULE)), + Name = list_to_atom(atom_to_list(?MODULE) + ++ "-" + ++ atom_to_list(?config(testcase, Config)) + ++ "-" + ++ integer_to_list(erlang:system_time(seconds)) + ++ "-" + ++ integer_to_list(erlang:unique_integer([positive]))), + ?t:start_node(Name, slave, [{args, Opts++" -pa "++Pa}]). + +stop_node(Node) -> + ?t:stop_node(Node). diff --git a/erts/etc/common/erlexec.c b/erts/etc/common/erlexec.c index 7b0fe46a01..f21671e837 100644 --- a/erts/etc/common/erlexec.c +++ b/erts/etc/common/erlexec.c @@ -158,7 +158,7 @@ static char *plusr_val_switches[] = { /* +x arguments with values */ static char *plusx_val_switches[] = { - "ohmq", + "mqd", NULL }; diff --git a/erts/preloaded/ebin/erl_prim_loader.beam b/erts/preloaded/ebin/erl_prim_loader.beam Binary files differindex df12c6f8e0..e94a1ba796 100644 --- a/erts/preloaded/ebin/erl_prim_loader.beam +++ b/erts/preloaded/ebin/erl_prim_loader.beam diff --git a/erts/preloaded/ebin/erlang.beam b/erts/preloaded/ebin/erlang.beam Binary files differindex 4f35928db2..632defdb46 100644 --- a/erts/preloaded/ebin/erlang.beam +++ b/erts/preloaded/ebin/erlang.beam diff --git a/erts/preloaded/ebin/erts_internal.beam b/erts/preloaded/ebin/erts_internal.beam Binary files differindex dc8c711e1a..fd0a502d2c 100644 --- a/erts/preloaded/ebin/erts_internal.beam +++ b/erts/preloaded/ebin/erts_internal.beam diff --git a/erts/preloaded/ebin/init.beam b/erts/preloaded/ebin/init.beam Binary files differindex 73dfb3d351..60c08819eb 100644 --- a/erts/preloaded/ebin/init.beam +++ b/erts/preloaded/ebin/init.beam diff --git a/erts/preloaded/ebin/otp_ring0.beam b/erts/preloaded/ebin/otp_ring0.beam Binary files differindex 33c112f4de..04814c091b 100644 --- a/erts/preloaded/ebin/otp_ring0.beam +++ b/erts/preloaded/ebin/otp_ring0.beam diff --git a/erts/preloaded/ebin/prim_eval.beam b/erts/preloaded/ebin/prim_eval.beam Binary files differindex ebca6e7eea..7779c8374d 100644 --- a/erts/preloaded/ebin/prim_eval.beam +++ b/erts/preloaded/ebin/prim_eval.beam diff --git a/erts/preloaded/ebin/prim_file.beam b/erts/preloaded/ebin/prim_file.beam Binary files differindex e8817d183e..254b0e5b90 100644 --- a/erts/preloaded/ebin/prim_file.beam +++ b/erts/preloaded/ebin/prim_file.beam diff --git a/erts/preloaded/ebin/prim_inet.beam b/erts/preloaded/ebin/prim_inet.beam Binary files differindex 357bcd3d9a..b7cfe26462 100644 --- a/erts/preloaded/ebin/prim_inet.beam +++ b/erts/preloaded/ebin/prim_inet.beam diff --git a/erts/preloaded/ebin/prim_zip.beam b/erts/preloaded/ebin/prim_zip.beam Binary files differindex 969239be98..6b5c6195c8 100644 --- a/erts/preloaded/ebin/prim_zip.beam +++ b/erts/preloaded/ebin/prim_zip.beam diff --git a/erts/preloaded/ebin/zlib.beam b/erts/preloaded/ebin/zlib.beam Binary files differindex 281f668f8c..43d7b436be 100644 --- a/erts/preloaded/ebin/zlib.beam +++ b/erts/preloaded/ebin/zlib.beam diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl index 0d5176019f..8ebb92d5b2 100644 --- a/erts/preloaded/src/erlang.erl +++ b/erts/preloaded/src/erlang.erl @@ -2040,6 +2040,9 @@ open_port(_PortName,_PortSettings) -> -type priority_level() :: low | normal | high | max. +-type message_queue_data() :: + off_heap | on_heap | mixed. + -spec process_flag(trap_exit, Boolean) -> OldBoolean when Boolean :: boolean(), OldBoolean :: boolean(); @@ -2052,9 +2055,9 @@ open_port(_PortName,_PortSettings) -> (min_bin_vheap_size, MinBinVHeapSize) -> OldMinBinVHeapSize when MinBinVHeapSize :: non_neg_integer(), OldMinBinVHeapSize :: non_neg_integer(); - (off_heap_message_queue, OHMQ) -> OldOHMQ when - OHMQ :: boolean(), - OldOHMQ :: boolean(); + (message_queue_data, MQD) -> OldMQD when + MQD :: message_queue_data(), + OldMQD :: message_queue_data(); (priority, Level) -> OldLevel when Level :: priority_level(), OldLevel :: priority_level(); @@ -2093,7 +2096,7 @@ process_flag(_Flag, _Value) -> min_bin_vheap_size | monitored_by | monitors | - off_heap_message_queue | + message_queue_data | priority | reductions | registered_name | @@ -2135,7 +2138,7 @@ process_flag(_Flag, _Value) -> {monitors, Monitors :: [{process, Pid :: pid() | {RegName :: atom(), Node :: node()}}]} | - {off_heap_message_queue, OHMQ :: boolean()} | + {message_queue_data, MQD :: message_queue_data()} | {priority, Level :: priority_level()} | {reductions, Number :: non_neg_integer()} | {registered_name, Atom :: atom()} | @@ -2438,7 +2441,7 @@ tuple_to_list(_Tuple) -> (multi_scheduling) -> disabled | blocked | enabled; (multi_scheduling_blockers) -> [Pid :: pid()]; (nif_version) -> string(); - (off_heap_message_queue) -> boolean(); + (message_queue_data) -> message_queue_data(); (otp_release) -> string(); (os_monotonic_time_source) -> [{atom(),term()}]; (os_system_time_source) -> [{atom(),term()}]; @@ -2574,7 +2577,7 @@ spawn_monitor(M, F, A) -> | {fullsweep_after, Number :: non_neg_integer()} | {min_heap_size, Size :: non_neg_integer()} | {min_bin_vheap_size, VSize :: non_neg_integer()} - | {off_heap_message_queue, OHMQ :: boolean()}. + | {message_queue_data, MQD :: message_queue_data()}. -spec spawn_opt(Fun, Options) -> pid() | {pid(), reference()} when Fun :: function(), diff --git a/erts/preloaded/src/erts_internal.erl b/erts/preloaded/src/erts_internal.erl index 7ed4efea4b..ce0a6a1d9e 100644 --- a/erts/preloaded/src/erts_internal.erl +++ b/erts/preloaded/src/erts_internal.erl @@ -31,7 +31,7 @@ -export([await_port_send_result/3]). -export([cmp_term/2]). --export([map_to_tuple_keys/1, map_type/1, map_hashmap_children/1]). +-export([map_to_tuple_keys/1, term_type/1, map_hashmap_children/1]). -export([port_command/3, port_connect/2, port_close/1, port_control/3, port_call/3, port_info/1, port_info/2]). @@ -215,12 +215,18 @@ cmp_term(_A,_B) -> map_to_tuple_keys(_M) -> erlang:nif_error(undefined). -%% return the internal map type --spec map_type(M) -> Type when - M :: map(), - Type :: 'flatmap' | 'hashmap' | 'hashmap_node'. - -map_type(_M) -> +%% return the internal term type +-spec term_type(T) -> Type when + T :: term(), + Type :: 'flatmap' | 'hashmap' | 'hashmap_node' + | 'fixnum' | 'bignum' | 'hfloat' + | 'list' | 'tuple' | 'export' | 'fun' + | 'refc_binary' | 'heap_binary' | 'sub_binary' + | 'reference' | 'external_reference' + | 'pid' | 'external_pid' | 'port' | 'external_port' + | 'atom' | 'catch' | 'nil'. + +term_type(_T) -> erlang:nif_error(undefined). %% return the internal hashmap sub-nodes from diff --git a/lib/common_test/doc/src/ct_hooks_chapter.xml b/lib/common_test/doc/src/ct_hooks_chapter.xml index d9892c66f7..3905e23dcc 100644 --- a/lib/common_test/doc/src/ct_hooks_chapter.xml +++ b/lib/common_test/doc/src/ct_hooks_chapter.xml @@ -30,8 +30,8 @@ <file>ct_hooks_chapter.xml</file> </header> - <marker id="general"></marker> <section> + <marker id="general"></marker> <title>General</title> <p> The <em>Common Test Hook</em> (henceforth called CTH) framework allows @@ -60,8 +60,8 @@ </section> - <marker id="installing"></marker> <section> + <marker id="installing"></marker> <title>Installing a CTH</title> <p>There are multiple ways to install a CTH in your test run. You can do it for all tests in a run, for specific test suites and for specific groups @@ -120,8 +120,8 @@ </section> </section> - <marker id="scope"/> <section> + <marker id="scope"/> <title>CTH Scope</title> <p>Once the CTH is installed into a certain test run it will be there until its scope is expired. The scope of a CTH depends on when it is @@ -208,8 +208,8 @@ </section> - <marker id="manipulating"/> <section> + <marker id="manipulating"/> <title>Manipulating tests</title> <p>It is through CTHs possible to manipulate the results of tests and configuration functions. The main purpose of doing this with CTHs is to @@ -226,8 +226,8 @@ makes it possible to use hooks as configuration fallbacks, or even completely replace all configuration functions with hook functions.</p> - <marker id="pre"/> <section> + <marker id="pre"/> <title>Pre Hooks</title> <p> It is possible in a CTH to hook in behaviour before @@ -263,8 +263,8 @@ </section> - <marker id="post"/> <section> + <marker id="post"/> <title>Post Hooks</title> <p>It is also possible in a CTH to hook in behaviour after <seealso marker="common_test#Module:init_per_suite-1">init_per_suite</seealso>, @@ -308,8 +308,8 @@ post_end_per_testcase(_TC, Config, Return, CTHState) -> </section> - <marker id="skip_n_fail"/> <section> + <marker id="skip_n_fail"/> <title>Skip and Fail hooks</title> <p> After any post hook has been executed for all installed CTHs, @@ -323,8 +323,8 @@ post_end_per_testcase(_TC, Config, Return, CTHState) -> </section> - <marker id="synchronizing"/> <section> + <marker id="synchronizing"/> <title>Synchronizing external user applications with Common Test</title> <p>CTHs can be used to synchronize test runs with external user applications. The init function may e.g. start and/or communicate with an application that @@ -351,8 +351,8 @@ post_end_per_testcase(_TC, Config, Return, CTHState) -> </p> </section> - <marker id="example"/> <section> + <marker id="example"/> <title>Example CTH</title> <p>The CTH below will log information about a test run into a format parseable by <seealso marker="kernel:file#consult-1">file:consult/1</seealso>. @@ -455,8 +455,8 @@ terminate(State) -> ok.</code> </section> - <marker id="builtin_cths"/> <section> + <marker id="builtin_cths"/> <title>Built-in CTHs</title> <p>Common Test is delivered with a couple of general purpose CTHs that can be enabled by the user to provide some generic testing functionality. diff --git a/lib/common_test/doc/src/event_handler_chapter.xml b/lib/common_test/doc/src/event_handler_chapter.xml index cb7033b196..78e5bb5e70 100644 --- a/lib/common_test/doc/src/event_handler_chapter.xml +++ b/lib/common_test/doc/src/event_handler_chapter.xml @@ -194,8 +194,9 @@ the current test case log file. </p></item> - <marker id="tc_done"/> - <item><c>#event{name = tc_done, data = {Suite,FuncOrGroup,Result}}</c> + <item> + <marker id="tc_done"/> + <c>#event{name = tc_done, data = {Suite,FuncOrGroup,Result}}</c> <p><c>Suite = atom()</c>, name of the suite.</p> <p><c>FuncOrGroup = Func | {Conf,GroupName,GroupProperties}</c></p> <p><c>Func = atom()</c>, name of test case or configuration function.</p> diff --git a/lib/common_test/doc/src/notes.xml b/lib/common_test/doc/src/notes.xml index aaf6dffc88..6972d18dfc 100644 --- a/lib/common_test/doc/src/notes.xml +++ b/lib/common_test/doc/src/notes.xml @@ -760,7 +760,7 @@ configuration function or test specification term), the affected test cases get the status <c>user_skipped</c> instead.</p> <p>This update has meant a few changes that - may affect Common Test users in various ways: <list> + may affect Common Test users in various ways:</p> <list> <item>The test results and statistics will be affected, which is important to know when running regression tests and comparing results to previous test runs.</item> @@ -780,7 +780,7 @@ <c>auto_skipped</c> rather than <c>user_skipped</c> as before.</item> <item>The event messages that Common Test generates during test runs have been affected by this - update. For details see OTP-11524.</item> </list> </p> + update. For details see OTP-11524.</item> </list> <p> Own Id: OTP-11305 Aux Id: OTP-11524 </p> </item> @@ -831,7 +831,7 @@ <item> <p>The following modifications have been made to the event messages that Common Test sends during test - execution: <list> <item>For the <c>tc_auto_skip</c> + execution:</p> <list> <item>For the <c>tc_auto_skip</c> event, the value of the <c>Func</c> element has changed from <c>end_per_group</c> to <c>{end_per_group,GroupName}</c>.</item> <item>When @@ -843,7 +843,7 @@ configuration name already in use, the <c>tc_done</c> event now reports the error with a tuple (of size 2) tagged <c>failed</c> instead of <c>skipped</c>.</item> - </list> Please see the Event Handling chapter in the + </list> <p>Please see the Event Handling chapter in the Common Test User's Guide for reference. </p> <p> Own Id: OTP-11524 Aux Id: OTP-11305 </p> @@ -1247,7 +1247,6 @@ <item> <p> Some bugfixes in <c>ct_snmp:</c></p> - <p> <list> <item> ct_snmp will now use the value of the 'agent_vsns' config variable when setting the 'variables' parameter to snmp application agent configuration. @@ -1255,14 +1254,13 @@ supported versions had to be specified twice. </item> <item> Snmp application failed to write notify.conf since ct_snmp gave the notify type as a string instead of an - atom. This has been corrected. </item> </list></p> + atom. This has been corrected. </item> </list> <p> Own Id: OTP-10432</p> </item> <item> <p> Some bugfixes in <c>ct_snmp</c>:</p> - <p> <list> <item> Functions <c>register_users/2</c>, <c>register_agents/2</c> and <c>register_usm_users/2</c>, and the corresponding <c>unregister_*/1</c> functions @@ -1279,7 +1277,7 @@ priv_dir instead of in the configuration dir (priv_dir/conf). This has been corrected. </item> <item> Arguments to <c>register_usm_users/2</c> were faulty - documented. This has been corrected. </item> </list></p> + documented. This has been corrected. </item> </list> <p> Own Id: OTP-10434 Aux Id: kunagi-264 [175] </p> </item> @@ -1343,7 +1341,7 @@ </item> <item> <p> - Update common test modules to handle unicode <list> + Update common test modules to handle unicode:</p> <list> <item> Use UTF-8 encoding for all HTML files, except the HTML version of the test suite generated with erl2html2:convert, which will have the same encoding as @@ -1354,7 +1352,7 @@ unicode:characters_to_list and unicode:characters_to_binary for conversion between binaries and strings instead of binary_to_list and - list_to_binary. </item> </list></p> + list_to_binary. </item> </list> <p> Own Id: OTP-10783</p> </item> @@ -1395,7 +1393,6 @@ <p> The following corrections/changes are done in the cth_surefire hook:</p> - <p> <list> <item> Earlier there would always be a 'properties' element under the 'testsuites' element. This would exist even if there were no 'property' element @@ -1428,7 +1425,7 @@ </item> <item> A new option named 'url_base' is added for this hook. If this option is used, a new attribute named 'url' will be added to the 'testcase' and 'testsuite' - elements. </item> </list></p> + elements. </item> </list> <p> Own Id: OTP-10589</p> </item> diff --git a/lib/common_test/doc/src/run_test_chapter.xml b/lib/common_test/doc/src/run_test_chapter.xml index d80453fc98..082a587c8d 100644 --- a/lib/common_test/doc/src/run_test_chapter.xml +++ b/lib/common_test/doc/src/run_test_chapter.xml @@ -60,15 +60,15 @@ <p>If compilation should fail for one or more suites, the compilation errors are printed to tty and the operator is asked if the test run should proceed without the missing suites, or be aborted. If the operator chooses to proceed, - it is noted in the HTML log which tests have missing suites. If Common Test is - unable to prompt the user after compilation failure (if Common Test doesn't - control stdin), the test run will proceed automatically without the missing - suites. This behaviour can however be modified with the - <c><![CDATA[ct_run]]></c> flag <c><![CDATA[-abort_if_missing_suites]]></c>, + it is noted in the HTML log which tests have missing suites. Also, for each failed + compilation, the failed tests counter in the return value of + <c><![CDATA[ct:run_test/1]]></c> is incremented. If Common Test is unable to prompt + the user after compilation failure (if Common Test doesn't control stdin), the test + run will proceed automatically without the missing suites. In order to always + abort the test run (without operator interaction) if one or more suites fail + to compile, the <c><![CDATA[ct_run]]></c> flag <c><![CDATA[-abort_if_missing_suites]]></c>, or the <c><![CDATA[ct:run_test/1]]></c> option - <c><![CDATA[{abort_if_missing_suites,TrueOrFalse}]]></c>. If - <c><![CDATA[abort_if_missing_suites]]></c> is set (to true), the test run - will stop immediately if some suites fail to compile.</p> + <c><![CDATA[{abort_if_missing_suites,true}]]></c> should be set.</p> <p>Any help module (i.e. regular Erlang module with name not ending with "_SUITE") that resides in the same test object directory as a suite diff --git a/lib/common_test/src/ct_conn_log_h.erl b/lib/common_test/src/ct_conn_log_h.erl index 5239ec1ff8..f7615fdc14 100644 --- a/lib/common_test/src/ct_conn_log_h.erl +++ b/lib/common_test/src/ct_conn_log_h.erl @@ -116,9 +116,14 @@ write_report(Time,#conn_log{module=ConnMod}=Info,Data,GL,State) -> {silent,_} -> ok; {LogType,Fd} -> - io:format(Fd,"~n~ts~ts~ts",[format_head(ConnMod,LogType,Time), - format_title(LogType,Info), - format_data(ConnMod,LogType,Data)]) + case format_data(ConnMod,LogType,Data) of + [] -> + ok; + FormattedData -> + io:format(Fd,"~n~ts~ts~ts",[format_head(ConnMod,LogType,Time), + format_title(LogType,Info), + FormattedData]) + end end. write_error(Time,#conn_log{module=ConnMod}=Info,Report,GL,State) -> diff --git a/lib/common_test/src/ct_netconfc.erl b/lib/common_test/src/ct_netconfc.erl index 05977e5649..6e3d1ab1d8 100644 --- a/lib/common_test/src/ct_netconfc.erl +++ b/lib/common_test/src/ct_netconfc.erl @@ -1374,11 +1374,18 @@ to_xml_doc(Simple) -> %%% Parse and handle received XML data handle_data(NewData,#state{connection=Connection,buff=Buff0} = State0) -> log(Connection,recv,NewData), - Data = append_wo_initial_nl(Buff0,NewData), - case binary:split(Data,[?END_TAG],[]) of + {Start,AddSz} = + case byte_size(Buff0) of + BSz when BSz<5 -> {0,BSz}; + BSz -> {BSz-5,5} + end, + Length = byte_size(NewData) + AddSz, + Data = <<Buff0/binary, NewData/binary>>, + case binary:split(Data,?END_TAG,[{scope,{Start,Length}}]) of [_NoEndTagFound] -> {noreply, State0#state{buff=Data}}; - [FirstMsg,Buff1] -> + [FirstMsg0,Buff1] -> + FirstMsg = remove_initial_nl(FirstMsg0), SaxArgs = [{event_fun,fun sax_event/3}, {event_state,[]}], case xmerl_sax_parser:stream(FirstMsg, SaxArgs) of {ok, Simple, _Thrash} -> @@ -1400,11 +1407,10 @@ handle_data(NewData,#state{connection=Connection,buff=Buff0} = State0) -> %% xml does not accept a leading nl and some netconf server add a nl after %% each ?END_TAG, ignore them -append_wo_initial_nl(<<>>,NewData) -> NewData; -append_wo_initial_nl(<<"\n", Data/binary>>, NewData) -> - append_wo_initial_nl(Data, NewData); -append_wo_initial_nl(Data, NewData) -> - <<Data/binary, NewData/binary>>. +remove_initial_nl(<<"\n", Data/binary>>) -> + remove_initial_nl(Data); +remove_initial_nl(Data) -> + Data. handle_error(Reason, State) -> Pending1 = case State#state.pending of @@ -1770,9 +1776,14 @@ format_data(How,Data) -> do_format_data(raw,Data) -> io_lib:format("~n~ts~n",[hide_password(Data)]); do_format_data(pretty,Data) -> - io_lib:format("~n~ts~n",[indent(Data)]); + maybe_io_lib_format(indent(Data)); do_format_data(html,Data) -> - io_lib:format("~n~ts~n",[html_format(Data)]). + maybe_io_lib_format(html_format(Data)). + +maybe_io_lib_format(<<>>) -> + []; +maybe_io_lib_format(String) -> + io_lib:format("~n~ts~n",[String]). %%%----------------------------------------------------------------- %%% Hide password elements from XML data @@ -1811,13 +1822,21 @@ indent1("<?"++Rest1,Indent1) -> Line++indent1(Rest2,Indent2); indent1("</"++Rest1,Indent1) -> %% Stop tag - {Line,Rest2,Indent2} = indent_line1(Rest1,Indent1,[$/,$<]), - "\n"++Line++indent1(Rest2,Indent2); + case indent_line1(Rest1,Indent1,[$/,$<]) of + {[],[],_} -> + []; + {Line,Rest2,Indent2} -> + "\n"++Line++indent1(Rest2,Indent2) + end; indent1("<"++Rest1,Indent1) -> %% Start- or empty tag put(tag,get_tag(Rest1)), - {Line,Rest2,Indent2} = indent_line(Rest1,Indent1,[$<]), - "\n"++Line++indent1(Rest2,Indent2); + case indent_line(Rest1,Indent1,[$<]) of + {[],[],_} -> + []; + {Line,Rest2,Indent2} -> + "\n"++Line++indent1(Rest2,Indent2) + end; indent1([H|T],Indent) -> [H|indent1(T,Indent)]; indent1([],_Indent) -> diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl index ae91601f67..0b646ffd07 100644 --- a/lib/common_test/src/ct_run.erl +++ b/lib/common_test/src/ct_run.erl @@ -1771,7 +1771,18 @@ compile_and_run(Tests, Skip, Opts, Args) -> {Tests1,Skip1} -> ReleaseSh = proplists:get_value(release_shell, Args), ct_util:set_testdata({release_shell,ReleaseSh}), - possibly_spawn(ReleaseSh == true, Tests1, Skip1, Opts) + TestResult = + possibly_spawn(ReleaseSh == true, Tests1, Skip1, Opts), + case TestResult of + {Ok,Errors,Skipped} -> + NoOfMakeErrors = + lists:foldl(fun({_,BadMods}, X) -> + X + length(BadMods) + end, 0, SuiteMakeErrors), + {Ok,Errors+NoOfMakeErrors,Skipped}; + ErrorResult -> + ErrorResult + end catch _:BadFormat -> {error,BadFormat} @@ -2073,7 +2084,9 @@ final_skip([], Final) -> continue([], _) -> true; -continue(_MakeErrors, AbortIfMissingSuites) -> +continue(_MakeErrors, true) -> + false; +continue(_MakeErrors, _AbortIfMissingSuites) -> io:nl(), OldGl = group_leader(), case set_group_leader_same_as_shell() of @@ -2101,11 +2114,10 @@ continue(_MakeErrors, AbortIfMissingSuites) -> true end; false -> % no shell process to use - not AbortIfMissingSuites + true end. set_group_leader_same_as_shell() -> - %%! Locate the shell process... UGLY!!! GS2or3 = fun(P) -> case process_info(P,initial_call) of {initial_call,{group,server,X}} when X == 2 ; X == 3 -> diff --git a/lib/common_test/src/ct_slave.erl b/lib/common_test/src/ct_slave.erl index 32a1ff4dbc..0cd83b9f04 100644 --- a/lib/common_test/src/ct_slave.erl +++ b/lib/common_test/src/ct_slave.erl @@ -1,7 +1,7 @@ %%-------------------------------------------------------------------- %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2013. All Rights Reserved. +%% Copyright Ericsson AB 2010-2015. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -134,7 +134,7 @@ start(Host, Node) -> %%% executed after startup of the node. Note that all used modules should be %%% present in the code path on the <code>Host</code>.</p> %%% -%%% <p>The timeouts are applied as follows: +%%% <p>The timeouts are applied as follows:</p> %%% <list> %%% <item> %%% <code>BootTimeout</code> - time to start the Erlang node, in seconds. @@ -154,7 +154,7 @@ start(Host, Node) -> %%% If this timeout occurs, the result %%% <code>{error, startup_timeout, NodeName}</code> is returned. %%% </item> -%%% </list></p> +%%% </list> %%% %%% <p>Option <code>monitor_master</code> specifies, if the slave node should be %%% stopped in case of master node stop. Defaults to false.</p> @@ -170,7 +170,7 @@ start(Host, Node) -> %%% <p>Option <code>env</code> specifies a list of environment variables %%% that will extended the environment.</p> %%% -%%% <p>Special return values are: +%%% <p>Special return values are:</p> %%% <list> %%% <item><code>{error, already_started, NodeName}</code> - if the node with %%% the given name is already started on a given host;</item> @@ -179,7 +179,7 @@ start(Host, Node) -> %%% <item><code>{error, not_alive, NodeName}</code> - if node on which the %%% <code>ct_slave:start/3</code> is called, is not alive. Note that %%% <code>NodeName</code> is the name of current node in this case.</item> -%%% </list></p> +%%% </list> %%% start(Host, Node, Opts) -> ENode = enodename(Host, Node), diff --git a/lib/common_test/src/ct_snmp.erl b/lib/common_test/src/ct_snmp.erl index 95098bdaca..bb0167eb22 100644 --- a/lib/common_test/src/ct_snmp.erl +++ b/lib/common_test/src/ct_snmp.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2015. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ %%% @doc Common Test user interface module for the OTP snmp application %%% -%%% The purpose of this module is to make snmp configuration easier for +%%% <p>The purpose of this module is to make snmp configuration easier for %%% the test case writer. Many test cases can use default values for common %%% operations and then no snmp configuration files need to be supplied. When %%% it is necessary to change particular configuration parameters, a subset @@ -31,7 +31,7 @@ %%% To simplify the test suite, Common Test keeps track %%% of some of the snmp manager information. This way the test suite doesn't %%% have to handle as many input parameters as it would if it had to interface the -%%% OTP snmp manager directly. +%%% OTP snmp manager directly.</p> %%% %%% <p> The following snmp manager and agent parameters are configurable: </p> %%% @@ -326,9 +326,9 @@ set_info(Config) -> %%% @doc Register the manager entity (=user) responsible for specific agent(s). %%% Corresponds to making an entry in users.conf. %%% -%%% This function will try to register the given users, without +%%% <p>This function will try to register the given users, without %%% checking if any of them already exist. In order to change an -%%% already registered user, the user must first be unregistered. +%%% already registered user, the user must first be unregistered.</p> register_users(MgrAgentConfName, Users) -> case setup_users(Users) of ok -> @@ -351,10 +351,10 @@ register_users(MgrAgentConfName, Users) -> %%% @doc Explicitly instruct the manager to handle this agent. %%% Corresponds to making an entry in agents.conf %%% -%%% This function will try to register the given managed agents, +%%% <p>This function will try to register the given managed agents, %%% without checking if any of them already exist. In order to change %%% an already registered managed agent, the agent must first be -%%% unregistered. +%%% unregistered.</p> register_agents(MgrAgentConfName, ManagedAgents) -> case setup_managed_agents(MgrAgentConfName,ManagedAgents) of ok -> @@ -378,9 +378,9 @@ register_agents(MgrAgentConfName, ManagedAgents) -> %%% @doc Explicitly instruct the manager to handle this USM user. %%% Corresponds to making an entry in usm.conf %%% -%%% This function will try to register the given users, without +%%% <p>This function will try to register the given users, without %%% checking if any of them already exist. In order to change an -%%% already registered user, the user must first be unregistered. +%%% already registered user, the user must first be unregistered.</p> register_usm_users(MgrAgentConfName, UsmUsers) -> EngineID = ct:get_config({MgrAgentConfName, engine_id}, ?ENGINE_ID), case setup_usm_users(UsmUsers, EngineID) of diff --git a/lib/common_test/src/ct_telnet.erl b/lib/common_test/src/ct_telnet.erl index e9487e94db..4d3fd2d094 100644 --- a/lib/common_test/src/ct_telnet.erl +++ b/lib/common_test/src/ct_telnet.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2014. All Rights Reserved. +%% Copyright Ericsson AB 2003-2015. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -327,16 +327,16 @@ cmd(Connection,Cmd) -> %%% Reason = term() %%% @doc Send a command via telnet and wait for prompt. %%% -%%% This function will by default add a newline to the end of the +%%% <p>This function will by default add a newline to the end of the %%% given command. If this is not desired, the option %%% `{newline,false}' can be used. This is necessary, for example, %%% when sending telnet command sequences (prefixed with the -%%% Interprete As Command, IAC, character). +%%% Interprete As Command, IAC, character).</p> %%% -%%% The option `timeout' specifies how long the client shall wait for +%%% <p>The option `timeout' specifies how long the client shall wait for %%% prompt. If the time expires, the function returns %%% `{error,timeout}'. See the module description for information -%%% about the default value for the command timeout. +%%% about the default value for the command timeout.</p> cmd(Connection,Cmd,Opts) when is_list(Opts) -> case check_cmd_opts(Opts) of ok -> @@ -378,7 +378,7 @@ cmdf(Connection,CmdFormat,Args) -> %%% @doc Send a telnet command and wait for prompt %%% (uses a format string and list of arguments to build the command). %%% -%%% See {@link cmd/3} further description. +%%% <p>See {@link cmd/3} further description.</p> cmdf(Connection,CmdFormat,Args,Opts) when is_list(Args) -> Cmd = lists:flatten(io_lib:format(CmdFormat,Args)), cmd(Connection,Cmd,Opts). diff --git a/lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl b/lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl index aaa0723488..ea49e36608 100644 --- a/lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl +++ b/lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl @@ -36,7 +36,8 @@ -compile(export_all). suite() -> - [{ct_hooks, [{cth_conn_log, + [{timetrap,?default_timeout}, + {ct_hooks, [{cth_conn_log, [{ct_netconfc,[{log_type,html}, %will be overwritten by config {hosts,[my_named_connection,netconf1]}] }] @@ -72,6 +73,7 @@ all() -> invalid_opt, timeout_close_session, get, + get_a_lot, timeout_get, flush_timeout_get, get_xpath, @@ -113,12 +115,9 @@ end_per_group(_GroupName, Config) -> init_per_testcase(_Case, Config) -> ets:delete_all_objects(ns_tab), - Dog = test_server:timetrap(?default_timeout), - [{watchdog, Dog}|Config]. + Config. -end_per_testcase(_Case, Config) -> - Dog=?config(watchdog, Config), - test_server:timetrap_cancel(Dog), +end_per_testcase(_Case, _Config) -> ok. init_per_suite(Config) -> @@ -352,6 +351,19 @@ get(Config) -> ?ok = ct_netconfc:close_session(Client), ok. +get_a_lot(Config) -> + DataDir = ?config(data_dir,Config), + {ok,Client} = open_success(DataDir), + Descr = lists:append(lists:duplicate(100,"Description of myserver! ")), + Server = {server,[{xmlns,"myns"}],[{name,[],["myserver"]}, + {description,[],[Descr]}]}, + Data = lists:duplicate(100,Server), + ?NS:expect_reply('get',{fragmented,{data,Data}}), + {ok,Data} = ct_netconfc:get(Client,{server,[{xmlns,"myns"}],[]}), + ?NS:expect_do_reply('close-session',close,ok), + ?ok = ct_netconfc:close_session(Client), + ok. + timeout_get(Config) -> DataDir = ?config(data_dir,Config), {ok,Client} = open_success(DataDir), diff --git a/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl b/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl index 8c30383343..07893faabc 100644 --- a/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl +++ b/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl @@ -277,6 +277,18 @@ hupp_kill(State = #session{connection = ConnRef}) -> send({CM,Ch},Data) -> ssh_connection:send(CM, Ch, Data). +%%% Split into many small parts and send to client +send_frag({CM,Ch},Data) -> + Sz = rand:uniform(2000), + case Data of + <<Chunk:Sz/binary,Rest/binary>> -> + ssh_connection:send(CM, Ch, Chunk), + send_frag({CM,Ch},Rest); + Chunk -> + ssh_connection:send(CM, Ch, Chunk) + end. + + %%% Kill ssh connection kill({CM,_Ch}) -> ssh:close(CM). @@ -294,7 +306,7 @@ table_trans(Fun,Args) -> receive {table_trans_done,Result} -> Result - after 5000 -> + after 20000 -> exit(table_trans_timeout) end end. @@ -424,6 +436,9 @@ do(_, undefined) -> reply(_,undefined) -> ?dbg("no reply~n",[]), ok; +reply(ConnRef,{fragmented,Reply}) -> + ?dbg("Reply fragmented: ~p~n",[Reply]), + send_frag(ConnRef,make_msg(Reply)); reply(ConnRef,Reply) -> ?dbg("Reply: ~p~n",[Reply]), send(ConnRef, make_msg(Reply)). diff --git a/lib/crypto/c_src/crypto.c b/lib/crypto/c_src/crypto.c index e9cac30c9c..bb2771163d 100644 --- a/lib/crypto/c_src/crypto.c +++ b/lib/crypto/c_src/crypto.c @@ -91,6 +91,7 @@ #endif #if OPENSSL_VERSION_NUMBER >= 0x1000100fL +# define HAVE_EVP_AES_CTR # define HAVE_GCM #endif @@ -98,6 +99,10 @@ # define HAVE_CHACHA20_POLY1305 #endif +#if OPENSSL_VERSION_NUMBER <= 0x009080cfL +# define HAVE_ECB_IVEC_BUG +#endif + #if defined(HAVE_EC) #include <openssl/ec.h> #include <openssl/ecdh.h> @@ -193,57 +198,20 @@ static void unload(ErlNifEnv* env, void* priv_data); /* The NIFs: */ static ERL_NIF_TERM info_lib(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM algorithms(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md5(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md5_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md5_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md5_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM ripemd160(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM ripemd160_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM ripemd160_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM ripemd160_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha224_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha224_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha224_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha224_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha256_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha256_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha256_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha256_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha384_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha384_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha384_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha384_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha512_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha512_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha512_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha512_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md4(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md4_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md4_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md4_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM md5_mac_n(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha_mac_n(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha224_mac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha256_mac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha384_mac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM sha512_mac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM hmac_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM hmac_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM hmac_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM des_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM des_cfb_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM des_ecb_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM des_ede3_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM des_ede3_cfb_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM hash_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM hash_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM hash_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM hash_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM hmac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM hmac_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM hmac_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM hmac_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM block_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM aes_cfb_8_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM aes_cfb_128_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM aes_ige_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM aes_ctr_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM aes_ctr_stream_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM aes_ctr_stream_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM aes_ecb_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM rand_bytes_1(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM strong_rand_bytes_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM rand_bytes_3(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); @@ -252,13 +220,10 @@ static ERL_NIF_TERM rand_uniform_nif(ErlNifEnv* env, int argc, const ERL_NIF_TER static ERL_NIF_TERM mod_exp_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM dss_verify_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM rsa_verify_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM aes_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM aes_ige_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM do_exor(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM rc4_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM rc4_set_key(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM rc4_encrypt_with_state(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM rc2_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM rsa_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM dss_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM rsa_public_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); @@ -270,10 +235,6 @@ static ERL_NIF_TERM dh_compute_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_T static ERL_NIF_TERM srp_value_B_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM srp_user_secret_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM srp_host_secret_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM bf_cfb64_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM bf_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM bf_ecb_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -static ERL_NIF_TERM blowfish_ofb64_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM ec_key_generate(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); static ERL_NIF_TERM ecdsa_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); @@ -291,32 +252,7 @@ static ERL_NIF_TERM chacha20_poly1305_decrypt(ErlNifEnv* env, int argc, const ER /* helpers */ static void init_algorithms_types(ErlNifEnv*); static void init_digest_types(ErlNifEnv* env); -static void hmac_md5(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf); -static void hmac_sha1(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf); -#ifdef HAVE_SHA224 -static void hmac_sha224(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf); -#endif -#ifdef HAVE_SHA256 -static void hmac_sha256(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf); -#endif -#ifdef HAVE_SHA384 -static void hmac_sha384(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf); -#endif -#ifdef HAVE_SHA512 -static void hmac_sha512(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf); -#endif +static void init_cipher_types(ErlNifEnv* env); #ifdef HAVE_EC static EC_KEY* ec_key_new(ErlNifEnv* env, ERL_NIF_TERM curve_arg); static int term2point(ErlNifEnv* env, ERL_NIF_TERM term, @@ -328,60 +264,25 @@ static int library_refc = 0; /* number of users of this dynamic library */ static ErlNifFunc nif_funcs[] = { {"info_lib", 0, info_lib}, {"algorithms", 0, algorithms}, - {"md5", 1, md5}, - {"md5_init", 0, md5_init}, - {"md5_update", 2, md5_update}, - {"md5_final", 1, md5_final}, - {"ripemd160", 1, ripemd160}, - {"ripemd160_init", 0, ripemd160_init}, - {"ripemd160_update", 2, ripemd160_update}, - {"ripemd160_final", 1, ripemd160_final}, - {"sha", 1, sha}, - {"sha_init", 0, sha_init}, - {"sha_update", 2, sha_update}, - {"sha_final", 1, sha_final}, - {"sha224_nif", 1, sha224_nif}, - {"sha224_init_nif", 0, sha224_init_nif}, - {"sha224_update_nif", 2, sha224_update_nif}, - {"sha224_final_nif", 1, sha224_final_nif}, - {"sha256_nif", 1, sha256_nif}, - {"sha256_init_nif", 0, sha256_init_nif}, - {"sha256_update_nif", 2, sha256_update_nif}, - {"sha256_final_nif", 1, sha256_final_nif}, - {"sha384_nif", 1, sha384_nif}, - {"sha384_init_nif", 0, sha384_init_nif}, - {"sha384_update_nif", 2, sha384_update_nif}, - {"sha384_final_nif", 1, sha384_final_nif}, - {"sha512_nif", 1, sha512_nif}, - {"sha512_init_nif", 0, sha512_init_nif}, - {"sha512_update_nif", 2, sha512_update_nif}, - {"sha512_final_nif", 1, sha512_final_nif}, - {"md4", 1, md4}, - {"md4_init", 0, md4_init}, - {"md4_update", 2, md4_update}, - {"md4_final", 1, md4_final}, - {"md5_mac_n", 3, md5_mac_n}, - {"sha_mac_n", 3, sha_mac_n}, - {"sha224_mac_nif", 3, sha224_mac_nif}, - {"sha256_mac_nif", 3, sha256_mac_nif}, - {"sha384_mac_nif", 3, sha384_mac_nif}, - {"sha512_mac_nif", 3, sha512_mac_nif}, - {"hmac_init", 2, hmac_init}, - {"hmac_update", 2, hmac_update}, - {"hmac_final", 1, hmac_final}, - {"hmac_final_n", 2, hmac_final}, - {"des_cbc_crypt", 4, des_cbc_crypt}, - {"des_cfb_crypt", 4, des_cfb_crypt}, - {"des_ecb_crypt", 3, des_ecb_crypt}, - {"des_ede3_cbc_crypt", 6, des_ede3_cbc_crypt}, - {"des_ede3_cfb_crypt_nif", 6, des_ede3_cfb_crypt_nif}, - {"aes_cfb_8_crypt", 4, aes_cfb_8_crypt}, - {"aes_cfb_128_crypt", 4, aes_cfb_128_crypt}, + {"hash_nif", 2, hash_nif}, + {"hash_init_nif", 1, hash_init_nif}, + {"hash_update_nif", 2, hash_update_nif}, + {"hash_final_nif", 1, hash_final_nif}, + {"hmac_nif", 3, hmac_nif}, + {"hmac_nif", 4, hmac_nif}, + {"hmac_init_nif", 2, hmac_init_nif}, + {"hmac_update_nif", 2, hmac_update_nif}, + {"hmac_final_nif", 1, hmac_final_nif}, + {"hmac_final_nif", 2, hmac_final_nif}, + {"block_crypt_nif", 5, block_crypt_nif}, + {"block_crypt_nif", 4, block_crypt_nif}, + {"aes_ige_crypt_nif", 4, aes_ige_crypt_nif}, + {"aes_ctr_encrypt", 3, aes_ctr_encrypt}, {"aes_ctr_decrypt", 3, aes_ctr_encrypt}, + {"aes_ctr_stream_init", 2, aes_ctr_stream_init}, {"aes_ctr_stream_encrypt", 2, aes_ctr_stream_encrypt}, {"aes_ctr_stream_decrypt", 2, aes_ctr_stream_encrypt}, - {"aes_ecb_crypt", 3, aes_ecb_crypt}, {"rand_bytes", 1, rand_bytes_1}, {"strong_rand_bytes_nif", 1, strong_rand_bytes_nif}, {"rand_bytes", 3, rand_bytes_3}, @@ -390,13 +291,10 @@ static ErlNifFunc nif_funcs[] = { {"mod_exp_nif", 4, mod_exp_nif}, {"dss_verify_nif", 4, dss_verify_nif}, {"rsa_verify_nif", 4, rsa_verify_nif}, - {"aes_cbc_crypt", 4, aes_cbc_crypt}, - {"aes_ige_crypt_nif", 4, aes_ige_crypt_nif}, {"do_exor", 2, do_exor}, {"rc4_encrypt", 2, rc4_encrypt}, {"rc4_set_key", 1, rc4_set_key}, {"rc4_encrypt_with_state", 2, rc4_encrypt_with_state}, - {"rc2_cbc_crypt", 4, rc2_cbc_crypt}, {"rsa_sign_nif", 3, rsa_sign_nif}, {"dss_sign_nif", 3, dss_sign_nif}, {"rsa_public_crypt", 4, rsa_public_crypt}, @@ -408,10 +306,6 @@ static ErlNifFunc nif_funcs[] = { {"srp_value_B_nif", 5, srp_value_B_nif}, {"srp_user_secret_nif", 7, srp_user_secret_nif}, {"srp_host_secret_nif", 5, srp_host_secret_nif}, - {"bf_cfb64_crypt", 4, bf_cfb64_crypt}, - {"bf_cbc_crypt", 4, bf_cbc_crypt}, - {"bf_ecb_crypt", 3, bf_ecb_crypt}, - {"blowfish_ofb64_encrypt", 3, blowfish_ofb64_encrypt}, {"ec_key_generate", 2, ec_key_generate}, {"ecdsa_sign_nif", 4, ecdsa_sign_nif}, @@ -432,37 +326,14 @@ static ErlNifFunc nif_funcs[] = { ERL_NIF_INIT(crypto,nif_funcs,load,NULL,upgrade,unload) -#define MD5_CTX_LEN (sizeof(MD5_CTX)) -#define MD5_LEN 16 -#define MD5_LEN_96 12 -#define MD4_CTX_LEN (sizeof(MD4_CTX)) -#define MD4_LEN 16 +#define MD5_CTX_LEN (sizeof(MD5_CTX)) +#define MD4_CTX_LEN (sizeof(MD4_CTX)) #define RIPEMD160_CTX_LEN (sizeof(RIPEMD160_CTX)) -#define RIPEMD160_LEN 20 -#define SHA_CTX_LEN (sizeof(SHA_CTX)) -#define SHA_LEN 20 -#define SHA_LEN_96 12 -#define SHA224_LEN (224/8) -#define SHA256_LEN (256/8) -#define SHA384_LEN (384/8) -#define SHA512_LEN (512/8) -#define HMAC_INT_LEN 64 -#define HMAC_INT2_LEN 128 - -#define HMAC_IPAD 0x36 -#define HMAC_OPAD 0x5c static ERL_NIF_TERM atom_true; static ERL_NIF_TERM atom_false; static ERL_NIF_TERM atom_sha; -static ERL_NIF_TERM atom_sha224; -static ERL_NIF_TERM atom_sha256; -static ERL_NIF_TERM atom_sha384; -static ERL_NIF_TERM atom_sha512; -static ERL_NIF_TERM atom_md5; -static ERL_NIF_TERM atom_md4; -static ERL_NIF_TERM atom_ripemd160; static ERL_NIF_TERM atom_error; static ERL_NIF_TERM atom_rsa_pkcs1_padding; static ERL_NIF_TERM atom_rsa_pkcs1_oaep_padding; @@ -489,6 +360,14 @@ static ERL_NIF_TERM atom_ppbasis; static ERL_NIF_TERM atom_onbasis; #endif +static ERL_NIF_TERM atom_aes_cfb8; +static ERL_NIF_TERM atom_aes_cfb128; +#ifdef HAVE_ECB_IVEC_BUG +static ERL_NIF_TERM atom_aes_ecb; +static ERL_NIF_TERM atom_des_ecb; +static ERL_NIF_TERM atom_blowfish_ecb; +#endif + static ErlNifResourceType* hmac_context_rtype; struct hmac_context { @@ -498,6 +377,87 @@ struct hmac_context }; static void hmac_context_dtor(ErlNifEnv* env, struct hmac_context*); +struct digest_type_t { + const char* type_str; + const EVP_MD* (*md_func)(void); /* NULL if notsup */ + ERL_NIF_TERM type_atom; +}; + +struct digest_type_t digest_types[] = +{ + {"md4", &EVP_md4}, + {"md5", &EVP_md5}, + {"ripemd160", &EVP_ripemd160}, + {"sha", &EVP_sha1}, + {"sha224", +#ifdef HAVE_SHA224 + &EVP_sha224 +#else + NULL +#endif + }, + {"sha256", +#ifdef HAVE_SHA256 + &EVP_sha256 +#else + NULL +#endif + }, + {"sha384", +#ifdef HAVE_SHA384 + &EVP_sha384 +#else + NULL +#endif + }, + {"sha512", +#ifdef HAVE_SHA512 + &EVP_sha512 +#else + NULL +#endif + }, + {NULL} +}; + +static struct digest_type_t* get_digest_type(ERL_NIF_TERM type); + +struct cipher_type_t { + const char* type_str; + const EVP_CIPHER* (*cipher_func)(void); /* NULL if notsup */ + const size_t key_len; /* != 0 to also match on key_len */ + ERL_NIF_TERM type_atom; +}; + +struct cipher_type_t cipher_types[] = +{ + {"rc2_cbc", &EVP_rc2_cbc}, + {"des_cbc", &EVP_des_cbc}, + {"des_cfb", &EVP_des_cfb8}, + {"des_ecb", &EVP_des_ecb}, + {"des_ede3_cbc", &EVP_des_ede3_cbc}, + {"des_ede3_cbf", +#ifdef HAVE_DES_ede3_cfb_encrypt + &EVP_des_ede3_cfb8 +#else + NULL +#endif + }, + {"blowfish_cbc", &EVP_bf_cbc}, + {"blowfish_cfb64", &EVP_bf_cfb64}, + {"blowfish_ofb64", &EVP_bf_ofb}, + {"blowfish_ecb", &EVP_bf_ecb}, + {"aes_cbc128", &EVP_aes_128_cbc}, + {"aes_cbc256", &EVP_aes_256_cbc}, + {"aes_cfb8", &EVP_aes_128_cfb8}, + {"aes_cfb128", &EVP_aes_128_cfb128}, + {"aes_ecb", &EVP_aes_128_ecb, 16}, + {"aes_ecb", &EVP_aes_256_ecb, 32}, + {NULL} +}; + +static struct cipher_type_t* get_cipher_type(ERL_NIF_TERM type, size_t key_len); + /* #define PRINTF_ERR0(FMT) enif_fprintf(stderr, FMT "\n") #define PRINTF_ERR1(FMT, A1) enif_fprintf(stderr, FMT "\n", A1) @@ -507,6 +467,21 @@ static void hmac_context_dtor(ErlNifEnv* env, struct hmac_context*); #define PRINTF_ERR1(FMT,A1) #define PRINTF_ERR2(FMT,A1,A2) +#if OPENSSL_VERSION_NUMBER >= 0x1000000fL +/* Define resource types for OpenSSL context structures. */ +static ErlNifResourceType* evp_md_ctx_rtype; +static void evp_md_ctx_dtor(ErlNifEnv* env, EVP_MD_CTX* ctx) { + EVP_MD_CTX_cleanup(ctx); +} +#endif + +#ifdef HAVE_EVP_AES_CTR +static ErlNifResourceType* evp_cipher_ctx_rtype; +static void evp_cipher_ctx_dtor(ErlNifEnv* env, EVP_CIPHER_CTX* ctx) { + EVP_CIPHER_CTX_cleanup(ctx); +} +#endif + static int verify_lib_version(void) { const unsigned long libv = SSLeay(); @@ -522,7 +497,6 @@ static int verify_lib_version(void) return 1; } - #ifdef HAVE_DYNAMIC_CRYPTO_LIB # if defined(DEBUG) @@ -558,7 +532,9 @@ static void error_handler(void* null, const char* errstr) static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) { +#ifdef OPENSSL_THREADS ErlNifSysInfo sys_info; +#endif get_crypto_callbacks_t* funcp; struct crypto_callbacks* ccb; int nlocks = 0; @@ -590,7 +566,26 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) PRINTF_ERR0("CRYPTO: Could not open resource type 'hmac_context'"); return 0; } - +#if OPENSSL_VERSION_NUMBER >= 0x1000000fL + evp_md_ctx_rtype = enif_open_resource_type(env, NULL, "EVP_MD_CTX", + (ErlNifResourceDtor*) evp_md_ctx_dtor, + ERL_NIF_RT_CREATE|ERL_NIF_RT_TAKEOVER, + NULL); + if (!evp_md_ctx_rtype) { + PRINTF_ERR0("CRYPTO: Could not open resource type 'EVP_MD_CTX'"); + return 0; + } +#endif +#ifdef HAVE_EVP_AES_CTR + evp_cipher_ctx_rtype = enif_open_resource_type(env, NULL, "EVP_CIPHER_CTX", + (ErlNifResourceDtor*) evp_cipher_ctx_dtor, + ERL_NIF_RT_CREATE|ERL_NIF_RT_TAKEOVER, + NULL); + if (!evp_cipher_ctx_rtype) { + PRINTF_ERR0("CRYPTO: Could not open resource type 'EVP_CIPHER_CTX'"); + return 0; + } +#endif if (library_refc > 0) { /* Repeated loading of this library (module upgrade). * Atoms and callbacks are already set, we are done. @@ -598,16 +593,9 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) return 1; } - atom_true = enif_make_atom(env,"true"); + atom_true = enif_make_atom(env,"true"); atom_false = enif_make_atom(env,"false"); atom_sha = enif_make_atom(env,"sha"); - atom_sha224 = enif_make_atom(env,"sha224"); - atom_sha256 = enif_make_atom(env,"sha256"); - atom_sha384 = enif_make_atom(env,"sha384"); - atom_sha512 = enif_make_atom(env,"sha512"); - atom_md4 = enif_make_atom(env,"md4"); - atom_md5 = enif_make_atom(env,"md5"); - atom_ripemd160 = enif_make_atom(env,"ripemd160"); atom_error = enif_make_atom(env,"error"); atom_rsa_pkcs1_padding = enif_make_atom(env,"rsa_pkcs1_padding"); atom_rsa_pkcs1_oaep_padding = enif_make_atom(env,"rsa_pkcs1_oaep_padding"); @@ -632,8 +620,16 @@ static int init(ErlNifEnv* env, ERL_NIF_TERM load_info) atom_ppbasis = enif_make_atom(env,"ppbasis"); atom_onbasis = enif_make_atom(env,"onbasis"); #endif + atom_aes_cfb8 = enif_make_atom(env, "aes_cfb8"); + atom_aes_cfb128 = enif_make_atom(env, "aes_cfb128"); +#ifdef HAVE_ECB_IVEC_BUG + atom_aes_ecb = enif_make_atom(env, "aes_ecb"); + atom_des_ecb = enif_make_atom(env, "des_ecb"); + atom_blowfish_ecb = enif_make_atom(env, "blowfish_ecb"); +#endif init_digest_types(env); + init_cipher_types(env); init_algorithms_types(env); #ifdef HAVE_DYNAMIC_CRYPTO_LIB @@ -718,46 +714,66 @@ static void unload(ErlNifEnv* env, void* priv_data) static int algo_hash_cnt; static ERL_NIF_TERM algo_hash[8]; /* increase when extending the list */ static int algo_pubkey_cnt; -static ERL_NIF_TERM algo_pubkey[3]; /* increase when extending the list */ +static ERL_NIF_TERM algo_pubkey[7]; /* increase when extending the list */ static int algo_cipher_cnt; -static ERL_NIF_TERM algo_cipher[4]; /* increase when extending the list */ +static ERL_NIF_TERM algo_cipher[20]; /* increase when extending the list */ static void init_algorithms_types(ErlNifEnv* env) { algo_hash_cnt = 0; - algo_hash[algo_hash_cnt++] = atom_md4; - algo_hash[algo_hash_cnt++] = atom_md5; algo_hash[algo_hash_cnt++] = atom_sha; - algo_hash[algo_hash_cnt++] = atom_ripemd160; #ifdef HAVE_SHA224 - algo_hash[algo_hash_cnt++] = atom_sha224; + algo_hash[algo_hash_cnt++] = enif_make_atom(env, "sha224"); #endif #ifdef HAVE_SHA256 - algo_hash[algo_hash_cnt++] = atom_sha256; + algo_hash[algo_hash_cnt++] = enif_make_atom(env, "sha256"); #endif #ifdef HAVE_SHA384 - algo_hash[algo_hash_cnt++] = atom_sha384; + algo_hash[algo_hash_cnt++] = enif_make_atom(env, "sha384"); #endif #ifdef HAVE_SHA512 - algo_hash[algo_hash_cnt++] = atom_sha512; + algo_hash[algo_hash_cnt++] = enif_make_atom(env, "sha512"); #endif + algo_hash[algo_hash_cnt++] = enif_make_atom(env, "md4"); + algo_hash[algo_hash_cnt++] = enif_make_atom(env, "md5"); + algo_hash[algo_hash_cnt++] = enif_make_atom(env, "ripemd160"); algo_pubkey_cnt = 0; + algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env, "rsa"); + algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env, "dss"); + algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env, "dh"); #if defined(HAVE_EC) #if !defined(OPENSSL_NO_EC2M) - algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env,"ec_gf2m"); + algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env, "ec_gf2m"); #endif - algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env,"ecdsa"); - algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env,"ecdh"); + algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env, "ecdsa"); + algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env, "ecdh"); #endif + algo_pubkey[algo_pubkey_cnt++] = enif_make_atom(env, "srp"); algo_cipher_cnt = 0; + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "des3_cbc"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "des_ede3"); #ifdef HAVE_DES_ede3_cfb_encrypt algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "des3_cbf"); #endif + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "aes_cbc128"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "aes_cfb8"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "aes_cfb128"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "aes_cbc256"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "aes_ctr"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env, "aes_ecb"); #ifdef HAVE_AES_IGE algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"aes_ige256"); #endif + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"des_cbc"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"des_cfb"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"blowfish_cbc"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"blowfish_cfb64"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"blowfish_ofb64"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"blowfish_ecb"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"rc2_cbc"); + algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"rc4"); #if defined(HAVE_GCM) algo_cipher[algo_cipher_cnt++] = enif_make_atom(env,"aes_gcm"); #endif @@ -772,10 +788,13 @@ static void init_algorithms_types(ErlNifEnv* env) static ERL_NIF_TERM algorithms(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { + int hash_cnt = algo_hash_cnt; + int pubkey_cnt = algo_pubkey_cnt; + int cipher_cnt = algo_cipher_cnt; return enif_make_tuple3(env, - enif_make_list_from_array(env, algo_hash, algo_hash_cnt), - enif_make_list_from_array(env, algo_pubkey, algo_pubkey_cnt), - enif_make_list_from_array(env, algo_cipher, algo_cipher_cnt)); + enif_make_list_from_array(env, algo_hash, hash_cnt), + enif_make_list_from_array(env, algo_pubkey, pubkey_cnt), + enif_make_list_from_array(env, algo_cipher, cipher_cnt)); } static ERL_NIF_TERM info_lib(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) @@ -805,564 +824,383 @@ static ERL_NIF_TERM info_lib(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[] ver_term)); } -static ERL_NIF_TERM md5(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Data) */ - ErlNifBinary ibin; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) { - return enif_make_badarg(env); - } - MD5((unsigned char *) ibin.data, ibin.size, - enif_make_new_binary(env,MD5_LEN, &ret)); - CONSUME_REDS(env,ibin); - return ret; -} -static ERL_NIF_TERM md5_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* () */ - ERL_NIF_TERM ret; - MD5_Init((MD5_CTX *) enif_make_new_binary(env, MD5_CTX_LEN, &ret)); - return ret; -} -static ERL_NIF_TERM md5_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context, Data) */ - MD5_CTX* new_ctx; - ErlNifBinary ctx_bin, data_bin; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) - || ctx_bin.size != MD5_CTX_LEN - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { +static ERL_NIF_TERM hash_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Type, Data) */ + struct digest_type_t *digp = NULL; + const EVP_MD *md; + ErlNifBinary data; + ERL_NIF_TERM ret; + unsigned ret_size; + + digp = get_digest_type(argv[0]); + if (!digp || + !enif_inspect_iolist_as_binary(env, argv[1], &data)) { return enif_make_badarg(env); } - new_ctx = (MD5_CTX*) enif_make_new_binary(env,MD5_CTX_LEN, &ret); - memcpy(new_ctx, ctx_bin.data, MD5_CTX_LEN); - MD5_Update(new_ctx, data_bin.data, data_bin.size); - CONSUME_REDS(env,data_bin); - return ret; -} -static ERL_NIF_TERM md5_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context) */ - ErlNifBinary ctx_bin; - MD5_CTX ctx_clone; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != MD5_CTX_LEN) { - return enif_make_badarg(env); + if (!digp->md_func) { + return atom_notsup; } - memcpy(&ctx_clone, ctx_bin.data, MD5_CTX_LEN); /* writable */ - MD5_Final(enif_make_new_binary(env, MD5_LEN, &ret), &ctx_clone); - return ret; -} -static ERL_NIF_TERM ripemd160(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Data) */ - ErlNifBinary ibin; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) { - return enif_make_badarg(env); + md = digp->md_func(); + ret_size = (unsigned)EVP_MD_size(md); + ASSERT(0 < ret_size && ret_size <= EVP_MAX_MD_SIZE); + if (!EVP_Digest(data.data, data.size, + enif_make_new_binary(env, ret_size, &ret), &ret_size, + md, NULL)) { + return atom_notsup; } - RIPEMD160((unsigned char *) ibin.data, ibin.size, - enif_make_new_binary(env,RIPEMD160_LEN, &ret)); - CONSUME_REDS(env,ibin); - return ret; -} -static ERL_NIF_TERM ripemd160_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* () */ - ERL_NIF_TERM ret; - RIPEMD160_Init((RIPEMD160_CTX *) enif_make_new_binary(env, RIPEMD160_CTX_LEN, &ret)); + ASSERT(ret_size == (unsigned)EVP_MD_size(md)); + + CONSUME_REDS(env, data); return ret; } -static ERL_NIF_TERM ripemd160_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context, Data) */ - RIPEMD160_CTX* new_ctx; - ErlNifBinary ctx_bin, data_bin; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) - || ctx_bin.size != RIPEMD160_CTX_LEN - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { + +#if OPENSSL_VERSION_NUMBER >= 0x1000000fL + +static ERL_NIF_TERM hash_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Type) */ + struct digest_type_t *digp = NULL; + EVP_MD_CTX *ctx; + ERL_NIF_TERM ret; + + digp = get_digest_type(argv[0]); + if (!digp) { return enif_make_badarg(env); } - new_ctx = (RIPEMD160_CTX*) enif_make_new_binary(env,RIPEMD160_CTX_LEN, &ret); - memcpy(new_ctx, ctx_bin.data, RIPEMD160_CTX_LEN); - RIPEMD160_Update(new_ctx, data_bin.data, data_bin.size); - CONSUME_REDS(env, data_bin); - return ret; -} -static ERL_NIF_TERM ripemd160_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context) */ - ErlNifBinary ctx_bin; - RIPEMD160_CTX ctx_clone; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != RIPEMD160_CTX_LEN) { - return enif_make_badarg(env); + if (!digp->md_func) { + return atom_notsup; } - memcpy(&ctx_clone, ctx_bin.data, RIPEMD160_CTX_LEN); /* writable */ - RIPEMD160_Final(enif_make_new_binary(env, RIPEMD160_LEN, &ret), &ctx_clone); - return ret; -} - -static ERL_NIF_TERM sha(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Data) */ - ErlNifBinary ibin; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) { - return enif_make_badarg(env); + ctx = enif_alloc_resource(evp_md_ctx_rtype, sizeof(EVP_MD_CTX)); + if (!EVP_DigestInit(ctx, digp->md_func())) { + enif_release_resource(ctx); + return atom_notsup; } - SHA1((unsigned char *) ibin.data, ibin.size, - enif_make_new_binary(env,SHA_LEN, &ret)); - CONSUME_REDS(env,ibin); - return ret; -} -static ERL_NIF_TERM sha_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* () */ - ERL_NIF_TERM ret; - SHA1_Init((SHA_CTX *) enif_make_new_binary(env, SHA_CTX_LEN, &ret)); + ret = enif_make_resource(env, ctx); + enif_release_resource(ctx); return ret; } -static ERL_NIF_TERM sha_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +static ERL_NIF_TERM hash_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Context, Data) */ - SHA_CTX* new_ctx; - ErlNifBinary ctx_bin, data_bin; + EVP_MD_CTX *ctx, *new_ctx; + ErlNifBinary data; ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != SHA_CTX_LEN - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { - return enif_make_badarg(env); + + if (!enif_get_resource(env, argv[0], evp_md_ctx_rtype, (void**)&ctx) || + !enif_inspect_iolist_as_binary(env, argv[1], &data)) { + return enif_make_badarg(env); } - new_ctx = (SHA_CTX*) enif_make_new_binary(env,SHA_CTX_LEN, &ret); - memcpy(new_ctx, ctx_bin.data, SHA_CTX_LEN); - SHA1_Update(new_ctx, data_bin.data, data_bin.size); - CONSUME_REDS(env,data_bin); + + new_ctx = enif_alloc_resource(evp_md_ctx_rtype, sizeof(EVP_MD_CTX)); + if (!EVP_MD_CTX_copy(new_ctx, ctx) || + !EVP_DigestUpdate(new_ctx, data.data, data.size)) { + enif_release_resource(new_ctx); + return atom_notsup; + } + + ret = enif_make_resource(env, new_ctx); + enif_release_resource(new_ctx); + CONSUME_REDS(env, data); return ret; } -static ERL_NIF_TERM sha_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +static ERL_NIF_TERM hash_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Context) */ - ErlNifBinary ctx_bin; - SHA_CTX ctx_clone; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != SHA_CTX_LEN) { - return enif_make_badarg(env); + EVP_MD_CTX *ctx, new_ctx; + ERL_NIF_TERM ret; + unsigned ret_size; + + if (!enif_get_resource(env, argv[0], evp_md_ctx_rtype, (void**)&ctx)) { + return enif_make_badarg(env); } - memcpy(&ctx_clone, ctx_bin.data, SHA_CTX_LEN); /* writable */ - SHA1_Final(enif_make_new_binary(env, SHA_LEN, &ret), &ctx_clone); - return ret; -} -static ERL_NIF_TERM sha224_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Data) */ -#ifdef HAVE_SHA224 - ErlNifBinary ibin; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) { - return enif_make_badarg(env); + ret_size = (unsigned)EVP_MD_CTX_size(ctx); + ASSERT(0 < ret_size && ret_size <= EVP_MAX_MD_SIZE); + + if (!EVP_MD_CTX_copy(&new_ctx, ctx) || + !EVP_DigestFinal(&new_ctx, + enif_make_new_binary(env, ret_size, &ret), + &ret_size)) { + return atom_notsup; } - SHA224((unsigned char *) ibin.data, ibin.size, - enif_make_new_binary(env,SHA224_LEN, &ret)); - CONSUME_REDS(env,ibin); - return ret; -#else - return atom_notsup; -#endif -} -static ERL_NIF_TERM sha224_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* () */ -#ifdef HAVE_SHA224 - ERL_NIF_TERM ret; - SHA224_Init((SHA256_CTX *) enif_make_new_binary(env, sizeof(SHA256_CTX), &ret)); + ASSERT(ret_size == (unsigned)EVP_MD_CTX_size(ctx)); + return ret; -#else - return atom_notsup; -#endif } -static ERL_NIF_TERM sha224_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context, Data) */ -#ifdef HAVE_SHA224 - SHA256_CTX* new_ctx; - ErlNifBinary ctx_bin, data_bin; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != sizeof(SHA256_CTX) - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { + +#else /* if OPENSSL_VERSION_NUMBER < 1.0 */ + +static ERL_NIF_TERM hash_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Type) */ + typedef int (*init_fun)(unsigned char*); + struct digest_type_t *digp = NULL; + ERL_NIF_TERM ctx; + size_t ctx_size = 0; + init_fun ctx_init = 0; + + digp = get_digest_type(argv[0]); + if (!digp) { return enif_make_badarg(env); } - new_ctx = (SHA256_CTX*) enif_make_new_binary(env,sizeof(SHA256_CTX), &ret); - memcpy(new_ctx, ctx_bin.data, sizeof(SHA256_CTX)); - SHA224_Update(new_ctx, data_bin.data, data_bin.size); - CONSUME_REDS(env,data_bin); - return ret; -#else - return atom_notsup; -#endif -} -static ERL_NIF_TERM sha224_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context) */ -#ifdef HAVE_SHA224 - ErlNifBinary ctx_bin; - SHA256_CTX ctx_clone; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != sizeof(SHA256_CTX)) { - return enif_make_badarg(env); + if (!digp->md_func) { + return atom_notsup; } - memcpy(&ctx_clone, ctx_bin.data, sizeof(SHA256_CTX)); /* writable */ - SHA224_Final(enif_make_new_binary(env, SHA224_LEN, &ret), &ctx_clone); - return ret; -#else - return atom_notsup; -#endif -} -static ERL_NIF_TERM sha256_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Data) */ -#ifdef HAVE_SHA256 - ErlNifBinary ibin; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) { - return enif_make_badarg(env); - } - SHA256((unsigned char *) ibin.data, ibin.size, - enif_make_new_binary(env,SHA256_LEN, &ret)); - CONSUME_REDS(env,ibin); - return ret; -#else - return atom_notsup; + switch (EVP_MD_type(digp->md_func())) + { + case NID_md4: + ctx_size = MD4_CTX_LEN; + ctx_init = (init_fun)(&MD4_Init); + break; + case NID_md5: + ctx_size = MD5_CTX_LEN; + ctx_init = (init_fun)(&MD5_Init); + break; + case NID_ripemd160: + ctx_size = RIPEMD160_CTX_LEN; + ctx_init = (init_fun)(&RIPEMD160_Init); + break; + case NID_sha1: + ctx_size = sizeof(SHA_CTX); + ctx_init = (init_fun)(&SHA1_Init); + break; +#ifdef HAVE_SHA224 + case NID_sha224: + ctx_size = sizeof(SHA256_CTX); + ctx_init = (init_fun)(&SHA224_Init); + break; #endif -} -static ERL_NIF_TERM sha256_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* () */ #ifdef HAVE_SHA256 - ERL_NIF_TERM ret; - SHA256_Init((SHA256_CTX *) enif_make_new_binary(env, sizeof(SHA256_CTX), &ret)); - return ret; -#else - return atom_notsup; + case NID_sha256: + ctx_size = sizeof(SHA256_CTX); + ctx_init = (init_fun)(&SHA256_Init); + break; #endif -} -static ERL_NIF_TERM sha256_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context, Data) */ -#ifdef HAVE_SHA256 - SHA256_CTX* new_ctx; - ErlNifBinary ctx_bin, data_bin; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != sizeof(SHA256_CTX) - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { - return enif_make_badarg(env); +#ifdef HAVE_SHA384 + case NID_sha384: + ctx_size = sizeof(SHA512_CTX); + ctx_init = (init_fun)(&SHA384_Init); + break; +#endif +#ifdef HAVE_SHA512 + case NID_sha512: + ctx_size = sizeof(SHA512_CTX); + ctx_init = (init_fun)(&SHA512_Init); + break; +#endif + default: + return atom_notsup; + } + ASSERT(ctx_size); + ASSERT(ctx_init); + + ctx_init(enif_make_new_binary(env, ctx_size, &ctx)); + return enif_make_tuple2(env, argv[0], ctx); +} +static ERL_NIF_TERM hash_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* ({Type, Context}, Data) */ + typedef int (*update_fun)(unsigned char*, const unsigned char*, size_t); + ERL_NIF_TERM new_ctx; + ErlNifBinary ctx, data; + const ERL_NIF_TERM *tuple; + int arity; + struct digest_type_t *digp = NULL; + unsigned char *ctx_buff; + size_t ctx_size = 0; + update_fun ctx_update = 0; + + if (!enif_get_tuple(env, argv[0], &arity, &tuple) || + arity != 2 || + !(digp = get_digest_type(tuple[0])) || + !enif_inspect_binary(env, tuple[1], &ctx) || + !enif_inspect_iolist_as_binary(env, argv[1], &data)) { + return enif_make_badarg(env); } - new_ctx = (SHA256_CTX*) enif_make_new_binary(env,sizeof(SHA256_CTX), &ret); - memcpy(new_ctx, ctx_bin.data, sizeof(SHA256_CTX)); - SHA256_Update(new_ctx, data_bin.data, data_bin.size); - CONSUME_REDS(env,data_bin); - return ret; -#else - return atom_notsup; + if (!digp->md_func) { + return atom_notsup; + } + + switch (EVP_MD_type(digp->md_func())) + { + case NID_md4: + ctx_size = MD4_CTX_LEN; + ctx_update = (update_fun)(&MD4_Update); + break; + case NID_md5: + ctx_size = MD5_CTX_LEN; + ctx_update = (update_fun)(&MD5_Update); + break; + case NID_ripemd160: + ctx_size = RIPEMD160_CTX_LEN; + ctx_update = (update_fun)(&RIPEMD160_Update); + break; + case NID_sha1: + ctx_size = sizeof(SHA_CTX); + ctx_update = (update_fun)(&SHA1_Update); + break; +#ifdef HAVE_SHA224 + case NID_sha224: + ctx_size = sizeof(SHA256_CTX); + ctx_update = (update_fun)(&SHA224_Update); + break; #endif -} -static ERL_NIF_TERM sha256_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context) */ #ifdef HAVE_SHA256 - ErlNifBinary ctx_bin; - SHA256_CTX ctx_clone; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != sizeof(SHA256_CTX)) { - return enif_make_badarg(env); - } - memcpy(&ctx_clone, ctx_bin.data, sizeof(SHA256_CTX)); /* writable */ - SHA256_Final(enif_make_new_binary(env, SHA256_LEN, &ret), &ctx_clone); - return ret; -#else - return atom_notsup; + case NID_sha256: + ctx_size = sizeof(SHA256_CTX); + ctx_update = (update_fun)(&SHA256_Update); + break; #endif -} - -static ERL_NIF_TERM sha384_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Data) */ #ifdef HAVE_SHA384 - ErlNifBinary ibin; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) { - return enif_make_badarg(env); - } - SHA384((unsigned char *) ibin.data, ibin.size, - enif_make_new_binary(env,SHA384_LEN, &ret)); - CONSUME_REDS(env,ibin); - return ret; -#else - return atom_notsup; + case NID_sha384: + ctx_size = sizeof(SHA512_CTX); + ctx_update = (update_fun)(&SHA384_Update); + break; #endif -} -static ERL_NIF_TERM sha384_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* () */ -#ifdef HAVE_SHA384 - ERL_NIF_TERM ret; - SHA384_Init((SHA512_CTX *) enif_make_new_binary(env, sizeof(SHA512_CTX), &ret)); - return ret; -#else - return atom_notsup; +#ifdef HAVE_SHA512 + case NID_sha512: + ctx_size = sizeof(SHA512_CTX); + ctx_update = (update_fun)(&SHA512_Update); + break; #endif -} -static ERL_NIF_TERM sha384_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context, Data) */ -#ifdef HAVE_SHA384 - SHA512_CTX* new_ctx; - ErlNifBinary ctx_bin, data_bin; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != sizeof(SHA512_CTX) - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { - return enif_make_badarg(env); + default: + return atom_notsup; } - new_ctx = (SHA512_CTX*) enif_make_new_binary(env,sizeof(SHA512_CTX), &ret); - memcpy(new_ctx, ctx_bin.data, sizeof(SHA512_CTX)); - SHA384_Update(new_ctx, data_bin.data, data_bin.size); - CONSUME_REDS(env,data_bin); - return ret; -#else - return atom_notsup; -#endif -} -static ERL_NIF_TERM sha384_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context) */ -#ifdef HAVE_SHA384 - ErlNifBinary ctx_bin; - SHA512_CTX ctx_clone; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != sizeof(SHA512_CTX)) { - return enif_make_badarg(env); + ASSERT(ctx_size); + ASSERT(ctx_update); + + if (ctx.size != ctx_size) { + return enif_make_badarg(env); } - memcpy(&ctx_clone, ctx_bin.data, sizeof(SHA512_CTX)); /* writable */ - SHA384_Final(enif_make_new_binary(env, SHA384_LEN, &ret), &ctx_clone); - return ret; -#else - return atom_notsup; -#endif -} -static ERL_NIF_TERM sha512_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Data) */ -#ifdef HAVE_SHA512 - ErlNifBinary ibin; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) { - return enif_make_badarg(env); + ctx_buff = enif_make_new_binary(env, ctx_size, &new_ctx); + memcpy(ctx_buff, ctx.data, ctx_size); + ctx_update(ctx_buff, data.data, data.size); + + CONSUME_REDS(env, data); + return enif_make_tuple2(env, tuple[0], new_ctx); +} +static ERL_NIF_TERM hash_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* ({Type, Context}) */ + typedef int (*final_fun)(unsigned char*, void*); + ERL_NIF_TERM ret; + ErlNifBinary ctx; + const ERL_NIF_TERM *tuple; + int arity; + struct digest_type_t *digp = NULL; + const EVP_MD *md; + void *new_ctx; + size_t ctx_size = 0; + final_fun ctx_final = 0; + + if (!enif_get_tuple(env, argv[0], &arity, &tuple) || + arity != 2 || + !(digp = get_digest_type(tuple[0])) || + !enif_inspect_binary(env, tuple[1], &ctx)) { + return enif_make_badarg(env); } - SHA512((unsigned char *) ibin.data, ibin.size, - enif_make_new_binary(env,SHA512_LEN, &ret)); - CONSUME_REDS(env,ibin); - return ret; -#else - return atom_notsup; + if (!digp->md_func) { + return atom_notsup; + } + + md = digp->md_func(); + + switch (EVP_MD_type(md)) + { + case NID_md4: + ctx_size = MD4_CTX_LEN; + ctx_final = (final_fun)(&MD4_Final); + break; + case NID_md5: + ctx_size = MD5_CTX_LEN; + ctx_final = (final_fun)(&MD5_Final); + break; + case NID_ripemd160: + ctx_size = RIPEMD160_CTX_LEN; + ctx_final = (final_fun)(&RIPEMD160_Final); + break; + case NID_sha1: + ctx_size = sizeof(SHA_CTX); + ctx_final = (final_fun)(&SHA1_Final); + break; +#ifdef HAVE_SHA224 + case NID_sha224: + ctx_size = sizeof(SHA256_CTX); + ctx_final = (final_fun)(&SHA224_Final); + break; #endif -} -static ERL_NIF_TERM sha512_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* () */ -#ifdef HAVE_SHA512 - ERL_NIF_TERM ret; - SHA512_Init((SHA512_CTX *) enif_make_new_binary(env, sizeof(SHA512_CTX), &ret)); - return ret; -#else - return atom_notsup; +#ifdef HAVE_SHA256 + case NID_sha256: + ctx_size = sizeof(SHA256_CTX); + ctx_final = (final_fun)(&SHA256_Final); + break; #endif -} -static ERL_NIF_TERM sha512_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context, Data) */ -#ifdef HAVE_SHA512 - SHA512_CTX* new_ctx; - ErlNifBinary ctx_bin, data_bin; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != sizeof(SHA512_CTX) - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { - return enif_make_badarg(env); - } - new_ctx = (SHA512_CTX*) enif_make_new_binary(env,sizeof(SHA512_CTX), &ret); - memcpy(new_ctx, ctx_bin.data, sizeof(SHA512_CTX)); - SHA512_Update(new_ctx, data_bin.data, data_bin.size); - CONSUME_REDS(env,data_bin); - return ret; -#else - return atom_notsup; +#ifdef HAVE_SHA384 + case NID_sha384: + ctx_size = sizeof(SHA512_CTX); + ctx_final = (final_fun)(&SHA384_Final); + break; #endif -} -static ERL_NIF_TERM sha512_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context) */ #ifdef HAVE_SHA512 - ErlNifBinary ctx_bin; - SHA512_CTX ctx_clone; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != sizeof(SHA512_CTX)) { - return enif_make_badarg(env); - } - memcpy(&ctx_clone, ctx_bin.data, sizeof(SHA512_CTX)); /* writable */ - SHA512_Final(enif_make_new_binary(env, SHA512_LEN, &ret), &ctx_clone); - return ret; -#else - return atom_notsup; + case NID_sha512: + ctx_size = sizeof(SHA512_CTX); + ctx_final = (final_fun)(&SHA512_Final); + break; #endif -} - - -static ERL_NIF_TERM md4(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Data) */ - ErlNifBinary ibin; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) { - return enif_make_badarg(env); - } - MD4((unsigned char *) ibin.data, ibin.size, - enif_make_new_binary(env,MD4_LEN, &ret)); - CONSUME_REDS(env,ibin); - return ret; -} -static ERL_NIF_TERM md4_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* () */ - ERL_NIF_TERM ret; - MD4_Init((MD4_CTX *) enif_make_new_binary(env, MD4_CTX_LEN, &ret)); - return ret; -} -static ERL_NIF_TERM md4_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context, Data) */ - MD4_CTX* new_ctx; - ErlNifBinary ctx_bin, data_bin; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != MD4_CTX_LEN - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { - return enif_make_badarg(env); + default: + return atom_notsup; } - new_ctx = (MD4_CTX*) enif_make_new_binary(env,MD4_CTX_LEN, &ret); - memcpy(new_ctx, ctx_bin.data, MD4_CTX_LEN); - MD4_Update(new_ctx, data_bin.data, data_bin.size); - CONSUME_REDS(env,data_bin); - return ret; -} -static ERL_NIF_TERM md4_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Context) */ - ErlNifBinary ctx_bin; - MD4_CTX ctx_clone; - ERL_NIF_TERM ret; - if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != MD4_CTX_LEN) { - return enif_make_badarg(env); - } - memcpy(&ctx_clone, ctx_bin.data, MD4_CTX_LEN); /* writable */ - MD4_Final(enif_make_new_binary(env, MD4_LEN, &ret), &ctx_clone); - return ret; -} + ASSERT(ctx_size); + ASSERT(ctx_final); -static ERL_NIF_TERM md5_mac_n(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Data, MacSize) */ - unsigned char hmacbuf[SHA_DIGEST_LENGTH]; - ErlNifBinary key, data; - unsigned mac_sz; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) - || !enif_inspect_iolist_as_binary(env, argv[1], &data) - || !enif_get_uint(env,argv[2],&mac_sz) || mac_sz > MD5_LEN) { - return enif_make_badarg(env); + if (ctx.size != ctx_size) { + return enif_make_badarg(env); } - hmac_md5(key.data, key.size, data.data, data.size, hmacbuf); - memcpy(enif_make_new_binary(env, mac_sz, &ret), hmacbuf, mac_sz); - CONSUME_REDS(env,data); - return ret; -} -static ERL_NIF_TERM sha_mac_n(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Data, MacSize) */ - unsigned char hmacbuf[SHA_DIGEST_LENGTH]; - ErlNifBinary key, data; - unsigned mac_sz; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) - || !enif_inspect_iolist_as_binary(env, argv[1], &data) - || !enif_get_uint(env,argv[2],&mac_sz) || mac_sz > SHA_LEN) { - return enif_make_badarg(env); - } - hmac_sha1(key.data, key.size, data.data, data.size, hmacbuf); - memcpy(enif_make_new_binary(env, mac_sz, &ret), - hmacbuf, mac_sz); - CONSUME_REDS(env,data); - return ret; -} + new_ctx = enif_alloc(ctx_size); + memcpy(new_ctx, ctx.data, ctx_size); + ctx_final(enif_make_new_binary(env, (size_t)EVP_MD_size(md), &ret), + new_ctx); + enif_free(new_ctx); -static ERL_NIF_TERM sha224_mac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Data, MacSize) */ -#ifdef HAVE_SHA224 - unsigned char hmacbuf[SHA224_DIGEST_LENGTH]; - ErlNifBinary key, data; - unsigned mac_sz; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) - || !enif_inspect_iolist_as_binary(env, argv[1], &data) - || !enif_get_uint(env,argv[2],&mac_sz) || mac_sz > SHA224_DIGEST_LENGTH) { - return enif_make_badarg(env); - } - hmac_sha224(key.data, key.size, data.data, data.size, hmacbuf); - memcpy(enif_make_new_binary(env, mac_sz, &ret), - hmacbuf, mac_sz); - CONSUME_REDS(env,data); return ret; -#else - return atom_notsup; -#endif } +#endif /* OPENSSL_VERSION_NUMBER < 1.0 */ -static ERL_NIF_TERM sha256_mac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Data, MacSize) */ -#ifdef HAVE_SHA256 - unsigned char hmacbuf[SHA256_DIGEST_LENGTH]; - ErlNifBinary key, data; - unsigned mac_sz; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) - || !enif_inspect_iolist_as_binary(env, argv[1], &data) - || !enif_get_uint(env,argv[2],&mac_sz) || mac_sz > SHA256_DIGEST_LENGTH) { - return enif_make_badarg(env); - } - hmac_sha256(key.data, key.size, data.data, data.size, hmacbuf); - memcpy(enif_make_new_binary(env, mac_sz, &ret), - hmacbuf, mac_sz); - CONSUME_REDS(env,data); - return ret; -#else - return atom_notsup; -#endif -} +static ERL_NIF_TERM hmac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Type, Key, Data) or (Type, Key, Data, MacSize) */ + struct digest_type_t *digp = NULL; + ErlNifBinary key, data; + unsigned char buff[EVP_MAX_MD_SIZE]; + unsigned size = 0, req_size = 0; + ERL_NIF_TERM ret; -static ERL_NIF_TERM sha384_mac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Data, MacSize) */ -#ifdef HAVE_SHA384 - unsigned char hmacbuf[SHA384_DIGEST_LENGTH]; - ErlNifBinary key, data; - unsigned mac_sz; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) - || !enif_inspect_iolist_as_binary(env, argv[1], &data) - || !enif_get_uint(env,argv[2],&mac_sz) || mac_sz > SHA384_DIGEST_LENGTH) { - return enif_make_badarg(env); + digp = get_digest_type(argv[0]); + if (!digp || + !enif_inspect_iolist_as_binary(env, argv[1], &key) || + !enif_inspect_iolist_as_binary(env, argv[2], &data) || + (argc == 4 && !enif_get_uint(env, argv[3], &req_size))) { + return enif_make_badarg(env); } - hmac_sha384(key.data, key.size, data.data, data.size, hmacbuf); - memcpy(enif_make_new_binary(env, mac_sz, &ret), - hmacbuf, mac_sz); - CONSUME_REDS(env,data); - return ret; -#else - return atom_notsup; -#endif -} + if (!digp->md_func || + !HMAC(digp->md_func(), + key.data, key.size, + data.data, data.size, + buff, &size)) { + return atom_notsup; + } + ASSERT(0 < size && size <= EVP_MAX_MD_SIZE); + CONSUME_REDS(env, data); -static ERL_NIF_TERM sha512_mac_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Data, MacSize) */ -#ifdef HAVE_SHA512 - unsigned char hmacbuf[SHA512_DIGEST_LENGTH]; - ErlNifBinary key, data; - unsigned mac_sz; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) - || !enif_inspect_iolist_as_binary(env, argv[1], &data) - || !enif_get_uint(env,argv[2],&mac_sz) || mac_sz > SHA512_DIGEST_LENGTH) { - return enif_make_badarg(env); + if (argc == 4) { + if (req_size <= size) { + size = req_size; + } + else { + return enif_make_badarg(env); + } } - hmac_sha512(key.data, key.size, data.data, data.size, hmacbuf); - memcpy(enif_make_new_binary(env, mac_sz, &ret), - hmacbuf, mac_sz); - CONSUME_REDS(env,data); + memcpy(enif_make_new_binary(env, size, &ret), buff, size); return ret; -#else - return atom_notsup; -#endif } static void hmac_context_dtor(ErlNifEnv* env, struct hmac_context *obj) @@ -1374,53 +1212,46 @@ static void hmac_context_dtor(ErlNifEnv* env, struct hmac_context *obj) enif_mutex_destroy(obj->mtx); } -static ERL_NIF_TERM hmac_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +static ERL_NIF_TERM hmac_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Type, Key) */ - ErlNifBinary key; - struct hmac_context* obj; - const EVP_MD *md; - ERL_NIF_TERM ret; - + struct digest_type_t *digp = NULL; + ErlNifBinary key; + ERL_NIF_TERM ret; + struct hmac_context *obj; - if (argv[0] == atom_sha) md = EVP_sha1(); -#ifdef HAVE_SHA224 - else if (argv[0] == atom_sha224) md = EVP_sha224(); -#endif -#ifdef HAVE_SHA256 - else if (argv[0] == atom_sha256) md = EVP_sha256(); -#endif -#ifdef HAVE_SHA384 - else if (argv[0] == atom_sha384) md = EVP_sha384(); -#endif -#ifdef HAVE_SHA512 - else if (argv[0] == atom_sha512) md = EVP_sha512(); -#endif - else if (argv[0] == atom_md5) md = EVP_md5(); - else if (argv[0] == atom_ripemd160) md = EVP_ripemd160(); - else goto badarg; - - if (!enif_inspect_iolist_as_binary(env, argv[1], &key)) { - badarg: - return enif_make_badarg(env); + digp = get_digest_type(argv[0]); + if (!digp || + !enif_inspect_iolist_as_binary(env, argv[1], &key)) { + return enif_make_badarg(env); + } + if (!digp->md_func) { + return atom_notsup; } obj = enif_alloc_resource(hmac_context_rtype, sizeof(struct hmac_context)); obj->mtx = enif_mutex_create("crypto.hmac"); obj->alive = 1; - HMAC_CTX_init(&obj->ctx); - HMAC_Init(&obj->ctx, key.data, key.size, md); +#if OPENSSL_VERSION_NUMBER >= 0x1000000fL + // Check the return value of HMAC_Init: it may fail in FIPS mode + // for disabled algorithms + if (!HMAC_Init(&obj->ctx, key.data, key.size, digp->md_func())) { + enif_release_resource(obj); + return atom_notsup; + } +#else + HMAC_Init(&obj->ctx, key.data, key.size, digp->md_func()); +#endif ret = enif_make_resource(env, obj); enif_release_resource(obj); return ret; } -static ERL_NIF_TERM hmac_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +static ERL_NIF_TERM hmac_update_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Context, Data) */ ErlNifBinary data; struct hmac_context* obj; - if (!enif_get_resource(env, argv[0], hmac_context_rtype, (void**)&obj) || !enif_inspect_iolist_as_binary(env, argv[1], &data)) { return enif_make_badarg(env); @@ -1437,7 +1268,7 @@ static ERL_NIF_TERM hmac_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg return argv[0]; } -static ERL_NIF_TERM hmac_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +static ERL_NIF_TERM hmac_final_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Context) or (Context, HashLen) */ ERL_NIF_TERM ret; struct hmac_context* obj; @@ -1446,7 +1277,6 @@ static ERL_NIF_TERM hmac_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv unsigned int req_len = 0; unsigned int mac_len; - if (!enif_get_resource(env,argv[0],hmac_context_rtype, (void**)&obj) || (argc == 2 && !enif_get_uint(env, argv[1], &req_len))) { return enif_make_badarg(env); @@ -1473,199 +1303,196 @@ static ERL_NIF_TERM hmac_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv return ret; } -static ERL_NIF_TERM des_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Ivec, Text, IsEncrypt) */ - ErlNifBinary key, ivec, text; - DES_key_schedule schedule; - DES_cblock ivec_clone; /* writable copy */ - ERL_NIF_TERM ret; - +static ERL_NIF_TERM block_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Type, Key, Ivec, Text, IsEncrypt) or (Type, Key, Text, IsEncrypt) */ + struct cipher_type_t *cipherp = NULL; + const EVP_CIPHER *cipher; + ErlNifBinary key, ivec, text; + EVP_CIPHER_CTX ctx; + ERL_NIF_TERM ret; + unsigned char *out; + int ivec_size, out_size = 0; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) || key.size != 8 - || !enif_inspect_binary(env, argv[1], &ivec) || ivec.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[2], &text) - || text.size % 8 != 0) { - return enif_make_badarg(env); + if (!enif_inspect_iolist_as_binary(env, argv[1], &key) + || !(cipherp = get_cipher_type(argv[0], key.size)) + || !enif_inspect_iolist_as_binary(env, argv[argc - 2], &text)) { + return enif_make_badarg(env); } - memcpy(&ivec_clone, ivec.data, 8); - DES_set_key((const_DES_cblock*)key.data, &schedule); - DES_ncbc_encrypt(text.data, enif_make_new_binary(env, text.size, &ret), - text.size, &schedule, &ivec_clone, (argv[3] == atom_true)); - CONSUME_REDS(env,text); - return ret; -} - -static ERL_NIF_TERM des_cfb_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Ivec, Text, IsEncrypt) */ - ErlNifBinary key, ivec, text; - DES_key_schedule schedule; - DES_cblock ivec_clone; /* writable copy */ - ERL_NIF_TERM ret; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) || key.size != 8 - || !enif_inspect_binary(env, argv[1], &ivec) || ivec.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[2], &text)) { - return enif_make_badarg(env); + if (!cipherp->cipher_func) { + return enif_raise_exception(env, atom_notsup); } - memcpy(&ivec_clone, ivec.data, 8); - DES_set_key((const_DES_cblock*)key.data, &schedule); - DES_cfb_encrypt(text.data, enif_make_new_binary(env, text.size, &ret), - 8, text.size, &schedule, &ivec_clone, (argv[3] == atom_true)); - CONSUME_REDS(env,text); - return ret; -} -static ERL_NIF_TERM des_ecb_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Text/Cipher, IsEncrypt) */ - ErlNifBinary key, text; - DES_key_schedule schedule; - ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) || key.size != 8 || - !enif_inspect_iolist_as_binary(env, argv[1], &text) || text.size != 8) { - return enif_make_badarg(env); + if ((argv[0] == atom_aes_cfb8 || argv[0] == atom_aes_cfb128) + && (key.size == 24 || key.size == 32)) { + /* Why do EVP_CIPHER_CTX_set_key_length() fail on these key sizes? + * Fall back on low level API + */ + return aes_cfb_8_crypt(env, argc-1, argv+1); } - DES_set_key((const_DES_cblock*)key.data, &schedule); - DES_ecb_encrypt((const_DES_cblock*)text.data, - (DES_cblock*)enif_make_new_binary(env, 8, &ret), - &schedule, (argv[2] == atom_true)); - CONSUME_REDS(env,text); - return ret; -} -static ERL_NIF_TERM des_ede3_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key1, Key2, Key3, IVec, Text/Cipher, IsEncrypt) */ - ErlNifBinary key1, key2, key3, ivec, text; - DES_key_schedule schedule1, schedule2, schedule3; - DES_cblock ivec_clone; /* writable copy */ - ERL_NIF_TERM ret; + cipher = cipherp->cipher_func(); + ivec_size = EVP_CIPHER_iv_length(cipher); +#ifdef HAVE_ECB_IVEC_BUG + if (argv[0] == atom_aes_ecb || argv[0] == atom_blowfish_ecb || + argv[0] == atom_des_ecb) + ivec_size = 0; /* 0.9.8l returns faulty ivec_size */ +#endif - if (!enif_inspect_iolist_as_binary(env, argv[0], &key1) || key1.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[1], &key2) || key2.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[2], &key3) || key3.size != 8 - || !enif_inspect_binary(env, argv[3], &ivec) || ivec.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[4], &text) - || text.size % 8 != 0) { - return enif_make_badarg(env); + if (text.size % EVP_CIPHER_block_size(cipher) != 0 || + (ivec_size == 0 ? argc != 4 + : (argc != 5 || + !enif_inspect_iolist_as_binary(env, argv[2], &ivec) || + ivec.size != ivec_size))) { + return enif_make_badarg(env); } - memcpy(&ivec_clone, ivec.data, 8); - DES_set_key((const_DES_cblock*)key1.data, &schedule1); - DES_set_key((const_DES_cblock*)key2.data, &schedule2); - DES_set_key((const_DES_cblock*)key3.data, &schedule3); - DES_ede3_cbc_encrypt(text.data, enif_make_new_binary(env,text.size,&ret), - text.size, &schedule1, &schedule2, &schedule3, - &ivec_clone, (argv[5] == atom_true)); - CONSUME_REDS(env,text); - return ret; -} + out = enif_make_new_binary(env, text.size, &ret); -static ERL_NIF_TERM des_ede3_cfb_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key1, Key2, Key3, IVec, Text/Cipher, IsEncrypt) */ -#ifdef HAVE_DES_ede3_cfb_encrypt - ErlNifBinary key1, key2, key3, ivec, text; - DES_key_schedule schedule1, schedule2, schedule3; - DES_cblock ivec_clone; /* writable copy */ - ERL_NIF_TERM ret; + EVP_CIPHER_CTX_init(&ctx); + if (!EVP_CipherInit_ex(&ctx, cipher, NULL, NULL, NULL, + (argv[argc - 1] == atom_true)) || + !EVP_CIPHER_CTX_set_key_length(&ctx, key.size) || + !(EVP_CIPHER_type(cipher) != NID_rc2_cbc || + EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_SET_RC2_KEY_BITS, key.size * 8, NULL)) || + !EVP_CipherInit_ex(&ctx, NULL, NULL, + key.data, ivec_size ? ivec.data : NULL, -1) || + !EVP_CIPHER_CTX_set_padding(&ctx, 0)) { + return enif_raise_exception(env, atom_notsup); + } - if (!enif_inspect_iolist_as_binary(env, argv[0], &key1) || key1.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[1], &key2) || key2.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[2], &key3) || key3.size != 8 - || !enif_inspect_binary(env, argv[3], &ivec) || ivec.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[4], &text)) { - return enif_make_badarg(env); + if (text.size > 0 && /* OpenSSL 0.9.8h asserts text.size > 0 */ + (!EVP_CipherUpdate(&ctx, out, &out_size, text.data, text.size) + || (ASSERT(out_size == text.size), 0) + || !EVP_CipherFinal_ex(&ctx, out + out_size, &out_size))) { + + EVP_CIPHER_CTX_cleanup(&ctx); + return enif_raise_exception(env, atom_notsup); } + ASSERT(out_size == 0); + EVP_CIPHER_CTX_cleanup(&ctx); + CONSUME_REDS(env, text); - memcpy(&ivec_clone, ivec.data, 8); - DES_set_key((const_DES_cblock*)key1.data, &schedule1); - DES_set_key((const_DES_cblock*)key2.data, &schedule2); - DES_set_key((const_DES_cblock*)key3.data, &schedule3); - DES_ede3_cfb_encrypt(text.data, enif_make_new_binary(env,text.size,&ret), - 8, text.size, &schedule1, &schedule2, &schedule3, - &ivec_clone, (argv[5] == atom_true)); - CONSUME_REDS(env,text); return ret; -#else - return atom_notsup; -#endif } static ERL_NIF_TERM aes_cfb_8_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, IVec, Data, IsEncrypt) */ - ErlNifBinary key, ivec, text; - AES_KEY aes_key; - unsigned char ivec_clone[16]; /* writable copy */ - int new_ivlen = 0; - ERL_NIF_TERM ret; - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) - || !(key.size == 16 || key.size == 24 || key.size == 32) - || !enif_inspect_binary(env, argv[1], &ivec) || ivec.size != 16 - || !enif_inspect_iolist_as_binary(env, argv[2], &text)) { - return enif_make_badarg(env); - } - - memcpy(ivec_clone, ivec.data, 16); - AES_set_encrypt_key(key.data, key.size * 8, &aes_key); - AES_cfb8_encrypt((unsigned char *) text.data, - enif_make_new_binary(env, text.size, &ret), - text.size, &aes_key, ivec_clone, &new_ivlen, - (argv[3] == atom_true)); - CONSUME_REDS(env,text); - return ret; +{/* (Key, IVec, Data, IsEncrypt) */ + ErlNifBinary key, ivec, text; + AES_KEY aes_key; + unsigned char ivec_clone[16]; /* writable copy */ + int new_ivlen = 0; + ERL_NIF_TERM ret; + + if (!enif_inspect_iolist_as_binary(env, argv[0], &key) + || !(key.size == 16 || key.size == 24 || key.size == 32) + || !enif_inspect_binary(env, argv[1], &ivec) || ivec.size != 16 + || !enif_inspect_iolist_as_binary(env, argv[2], &text)) { + return enif_make_badarg(env); + } + + memcpy(ivec_clone, ivec.data, 16); + AES_set_encrypt_key(key.data, key.size * 8, &aes_key); + AES_cfb8_encrypt((unsigned char *) text.data, + enif_make_new_binary(env, text.size, &ret), + text.size, &aes_key, ivec_clone, &new_ivlen, + (argv[3] == atom_true)); + CONSUME_REDS(env,text); + return ret; } -static ERL_NIF_TERM aes_cfb_128_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, IVec, Data, IsEncrypt) */ - ErlNifBinary key, ivec, text; +static ERL_NIF_TERM aes_ige_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Key, IVec, Data, IsEncrypt) */ +#ifdef HAVE_AES_IGE + ErlNifBinary key_bin, ivec_bin, data_bin; AES_KEY aes_key; - unsigned char ivec_clone[16]; /* writable copy */ - int new_ivlen = 0; + unsigned char ivec[32]; + int i; + unsigned char* ret_ptr; ERL_NIF_TERM ret; + if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) + || (key_bin.size != 16 && key_bin.size != 32) + || !enif_inspect_binary(env, argv[1], &ivec_bin) + || ivec_bin.size != 32 + || !enif_inspect_iolist_as_binary(env, argv[2], &data_bin) + || data_bin.size % 16 != 0) { - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) - || !(key.size == 16 || key.size == 24 || key.size == 32) - || !enif_inspect_binary(env, argv[1], &ivec) || ivec.size != 16 - || !enif_inspect_iolist_as_binary(env, argv[2], &text)) { - return enif_make_badarg(env); + return enif_make_badarg(env); } - memcpy(ivec_clone, ivec.data, 16); - AES_set_encrypt_key(key.data, key.size * 8, &aes_key); - AES_cfb128_encrypt((unsigned char *) text.data, - enif_make_new_binary(env, text.size, &ret), - text.size, &aes_key, ivec_clone, &new_ivlen, - (argv[3] == atom_true)); - CONSUME_REDS(env,text); + if (argv[3] == atom_true) { + i = AES_ENCRYPT; + AES_set_encrypt_key(key_bin.data, key_bin.size*8, &aes_key); + } + else { + i = AES_DECRYPT; + AES_set_decrypt_key(key_bin.data, key_bin.size*8, &aes_key); + } + + ret_ptr = enif_make_new_binary(env, data_bin.size, &ret); + memcpy(ivec, ivec_bin.data, 32); /* writable copy */ + AES_ige_encrypt(data_bin.data, ret_ptr, data_bin.size, &aes_key, ivec, i); + CONSUME_REDS(env,data_bin); return ret; +#else + return atom_notsup; +#endif } /* Common for both encrypt and decrypt */ static ERL_NIF_TERM aes_ctr_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Key, IVec, Data) */ - ErlNifBinary key, ivec, text; - AES_KEY aes_key; - unsigned char ivec_clone[16]; /* writable copy */ - unsigned char ecount_buf[AES_BLOCK_SIZE]; - unsigned int num = 0; - ERL_NIF_TERM ret; - + ErlNifBinary key, ivec, text; +#ifdef HAVE_EVP_AES_CTR + const EVP_CIPHER *cipher; + EVP_CIPHER_CTX ctx; + unsigned char *out; + int outl = 0; +#else + AES_KEY aes_key; + unsigned char ivec_clone[16]; /* writable copy */ + unsigned char ecount_buf[AES_BLOCK_SIZE]; + unsigned int num = 0; +#endif + ERL_NIF_TERM ret; if (!enif_inspect_iolist_as_binary(env, argv[0], &key) +#ifndef HAVE_EVP_AES_CTR || AES_set_encrypt_key(key.data, key.size*8, &aes_key) != 0 +#endif || !enif_inspect_binary(env, argv[1], &ivec) || ivec.size != 16 || !enif_inspect_iolist_as_binary(env, argv[2], &text)) { return enif_make_badarg(env); } +#ifdef HAVE_EVP_AES_CTR + switch (key.size) + { + case 16: cipher = EVP_aes_128_ctr(); break; + case 24: cipher = EVP_aes_192_ctr(); break; + case 32: cipher = EVP_aes_256_ctr(); break; + default: return enif_make_badarg(env); + } + + out = enif_make_new_binary(env,text.size,&ret); + EVP_CIPHER_CTX_init(&ctx); + EVP_CipherInit_ex(&ctx, cipher, NULL, + key.data, ivec.data, (argv[3] == atom_true)); + EVP_CIPHER_CTX_set_padding(&ctx, 0); + EVP_CipherUpdate(&ctx, out, &outl, text.data, text.size); + ASSERT(outl == text.size); + EVP_CipherFinal_ex(&ctx, out + outl, &outl); + ASSERT(outl == 0); + EVP_CIPHER_CTX_cleanup(&ctx); +#else memcpy(ivec_clone, ivec.data, 16); memset(ecount_buf, 0, sizeof(ecount_buf)); AES_ctr128_encrypt((unsigned char *) text.data, enif_make_new_binary(env, text.size, &ret), text.size, &aes_key, ivec_clone, ecount_buf, &num); +#endif CONSUME_REDS(env,text); /* To do an incremental {en|de}cryption, the state to to keep between calls @@ -1675,6 +1502,81 @@ static ERL_NIF_TERM aes_ctr_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM /* Initializes state for ctr streaming (de)encryption */ +#ifdef HAVE_EVP_AES_CTR +static ERL_NIF_TERM aes_ctr_stream_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Key, IVec) */ + ErlNifBinary key_bin, ivec_bin; + EVP_CIPHER_CTX *ctx; + const EVP_CIPHER *cipher; + ERL_NIF_TERM ret; + + if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) + || !enif_inspect_binary(env, argv[1], &ivec_bin) + || ivec_bin.size != 16) { + return enif_make_badarg(env); + } + + switch (key_bin.size) + { + case 16: cipher = EVP_aes_128_ctr(); break; + case 24: cipher = EVP_aes_192_ctr(); break; + case 32: cipher = EVP_aes_256_ctr(); break; + default: return enif_make_badarg(env); + } + + ctx = enif_alloc_resource(evp_cipher_ctx_rtype, sizeof(EVP_CIPHER_CTX)); + EVP_CIPHER_CTX_init(ctx); + EVP_CipherInit_ex(ctx, cipher, NULL, + key_bin.data, ivec_bin.data, 1); + EVP_CIPHER_CTX_set_padding(ctx, 0); + ret = enif_make_resource(env, ctx); + enif_release_resource(ctx); + return ret; +} +static ERL_NIF_TERM aes_ctr_stream_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Context, Data) */ + EVP_CIPHER_CTX *ctx, *new_ctx; + ErlNifBinary data_bin; + ERL_NIF_TERM ret, cipher_term; + unsigned char *out; + int outl = 0; + + if (!enif_get_resource(env, argv[0], evp_cipher_ctx_rtype, (void**)&ctx) + || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) { + return enif_make_badarg(env); + } + new_ctx = enif_alloc_resource(evp_cipher_ctx_rtype, sizeof(EVP_CIPHER_CTX)); + EVP_CIPHER_CTX_init(new_ctx); + EVP_CIPHER_CTX_copy(new_ctx, ctx); + out = enif_make_new_binary(env, data_bin.size, &cipher_term); + EVP_CipherUpdate(new_ctx, out, &outl, data_bin.data, data_bin.size); + ASSERT(outl == data_bin.size); + + ret = enif_make_tuple2(env, enif_make_resource(env, new_ctx), cipher_term); + enif_release_resource(new_ctx); + CONSUME_REDS(env,data_bin); + return ret; +} + +#else /* if not HAVE_EVP_AES_CTR */ + +static ERL_NIF_TERM aes_ctr_stream_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Key, IVec) */ + ErlNifBinary key_bin, ivec_bin; + ERL_NIF_TERM ecount_bin; + + if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) + || !enif_inspect_binary(env, argv[1], &ivec_bin) + || !(key_bin.size == 16 || key_bin.size == 24 || key_bin.size ==32) + || ivec_bin.size != 16) { + return enif_make_badarg(env); + } + + memset(enif_make_new_binary(env, AES_BLOCK_SIZE, &ecount_bin), + 0, AES_BLOCK_SIZE); + return enif_make_tuple4(env, argv[0], argv[1], ecount_bin, enif_make_int(env, 0)); +} + static ERL_NIF_TERM aes_ctr_stream_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* ({Key, IVec, ECount, Num}, Data) */ ErlNifBinary key_bin, ivec_bin, text_bin, ecount_bin; @@ -1686,7 +1588,6 @@ static ERL_NIF_TERM aes_ctr_stream_encrypt(ErlNifEnv* env, int argc, const ERL_N unsigned char * ivec2_buf; unsigned char * ecount2_buf; - if (!enif_get_tuple(env, argv[0], &state_arity, &state_term) || state_arity != 4 || !enif_inspect_iolist_as_binary(env, state_term[0], &key_bin) @@ -1714,6 +1615,7 @@ static ERL_NIF_TERM aes_ctr_stream_encrypt(ErlNifEnv* env, int argc, const ERL_N CONSUME_REDS(env,text_bin); return ret; } +#endif /* !HAVE_EVP_AES_CTR */ static ERL_NIF_TERM aes_gcm_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Key,Iv,AAD,In) */ @@ -1724,7 +1626,6 @@ static ERL_NIF_TERM aes_gcm_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM unsigned char *outp; ERL_NIF_TERM out, out_tag; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) || AES_set_encrypt_key(key.data, key.size*8, &aes_key) != 0 || !enif_inspect_binary(env, argv[1], &iv) || iv.size == 0 @@ -1760,7 +1661,7 @@ out_err: return atom_error; #else - return atom_notsup; + return enif_raise_exception(env, atom_notsup); #endif } @@ -1773,7 +1674,6 @@ static ERL_NIF_TERM aes_gcm_decrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM unsigned char *outp; ERL_NIF_TERM out; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) || AES_set_encrypt_key(key.data, key.size*8, &aes_key) != 0 || !enif_inspect_binary(env, argv[1], &iv) || iv.size == 0 @@ -1810,7 +1710,7 @@ out_err: CRYPTO_gcm128_release(ctx); return atom_error; #else - return atom_notsup; + return enif_raise_exception(env, atom_notsup); #endif } @@ -1843,7 +1743,6 @@ static ERL_NIF_TERM chacha20_poly1305_encrypt(ErlNifEnv* env, int argc, const ER unsigned char poly1305_key[32]; poly1305_state poly1305; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) || key.size != 32 || !enif_inspect_binary(env, argv[1], &iv) || iv.size != CHACHA20_NONCE_LEN || !enif_inspect_iolist_as_binary(env, argv[2], &aad) @@ -1881,7 +1780,7 @@ static ERL_NIF_TERM chacha20_poly1305_encrypt(ErlNifEnv* env, int argc, const ER return enif_make_tuple2(env, out, out_tag); #else - return atom_notsup; + return enif_raise_exception(env, atom_notsup); #endif } @@ -1896,7 +1795,6 @@ static ERL_NIF_TERM chacha20_poly1305_decrypt(ErlNifEnv* env, int argc, const ER unsigned char mac[POLY1305_TAG_LEN]; poly1305_state poly1305; - if (!enif_inspect_iolist_as_binary(env, argv[0], &key) || key.size != 32 || !enif_inspect_binary(env, argv[1], &iv) || iv.size != CHACHA20_NONCE_LEN || !enif_inspect_iolist_as_binary(env, argv[2], &aad) @@ -1937,46 +1835,16 @@ static ERL_NIF_TERM chacha20_poly1305_decrypt(ErlNifEnv* env, int argc, const ER return out; #else - return atom_notsup; + return enif_raise_exception(env, atom_notsup); #endif } -static ERL_NIF_TERM aes_ecb_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Data, IsEncrypt) */ - ErlNifBinary key_bin, data_bin; - AES_KEY aes_key; - int i; - unsigned char* ret_ptr; - ERL_NIF_TERM ret; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) - || (key_bin.size != 16 && key_bin.size != 32) - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin) - || data_bin.size % 16 != 0) { - return enif_make_badarg(env); - } - - if (argv[2] == atom_true) { - i = AES_ENCRYPT; - AES_set_encrypt_key(key_bin.data, key_bin.size*8, &aes_key); - } - else { - i = AES_DECRYPT; - AES_set_decrypt_key(key_bin.data, key_bin.size*8, &aes_key); - } - - ret_ptr = enif_make_new_binary(env, data_bin.size, &ret); - AES_ecb_encrypt(data_bin.data, ret_ptr, &aes_key, i); - CONSUME_REDS(env,data_bin); - return ret; -} - static ERL_NIF_TERM rand_bytes_1(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Bytes) */ unsigned bytes; unsigned char* data; ERL_NIF_TERM ret; + if (!enif_get_uint(env, argv[0], &bytes)) { return enif_make_badarg(env); } @@ -1990,6 +1858,7 @@ static ERL_NIF_TERM strong_rand_bytes_nif(ErlNifEnv* env, int argc, const ERL_NI unsigned bytes; unsigned char* data; ERL_NIF_TERM ret; + if (!enif_get_uint(env, argv[0], &bytes)) { return enif_make_badarg(env); } @@ -2007,6 +1876,7 @@ static ERL_NIF_TERM rand_bytes_3(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar unsigned char* data; unsigned top_mask, bot_mask; ERL_NIF_TERM ret; + if (!enif_get_uint(env, argv[0], &bytes) || !enif_get_uint(env, argv[1], &top_mask) || !enif_get_uint(env, argv[2], &bot_mask)) { @@ -2030,7 +1900,6 @@ static ERL_NIF_TERM strong_rand_mpint_nif(ErlNifEnv* env, int argc, const ERL_NI unsigned dlen; ERL_NIF_TERM ret; - if (!enif_get_uint(env, argv[0], &bits) || !enif_get_int(env, argv[1], &top) || !enif_get_int(env, argv[2], &bottom)) { @@ -2099,7 +1968,6 @@ static ERL_NIF_TERM rand_uniform_nif(ErlNifEnv* env, int argc, const ERL_NIF_TER unsigned dlen; ERL_NIF_TERM ret; - if (!get_bn_from_mpint(env, argv[0], &bn_from) || !get_bn_from_mpint(env, argv[1], &bn_rand)) { if (bn_from) BN_free(bn_from); @@ -2131,7 +1999,6 @@ static ERL_NIF_TERM mod_exp_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg unsigned extra_byte; ERL_NIF_TERM ret; - if (!get_bn_from_bin(env, argv[0], &bn_base) || !get_bn_from_bin(env, argv[1], &bn_exponent) || !get_bn_from_bin(env, argv[2], &bn_modulo) @@ -2163,45 +2030,17 @@ static ERL_NIF_TERM mod_exp_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg } static ERL_NIF_TERM dss_verify_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (DigestType|none, Data|{digest,Digest}, Signature,Key=[P, Q, G, Y]) */ - ErlNifBinary data_bin, sign_bin; +{/* (sha, Digest, Signature,Key=[P, Q, G, Y]) */ + ErlNifBinary digest_bin, sign_bin; BIGNUM *dsa_p = NULL, *dsa_q = NULL, *dsa_g = NULL, *dsa_y = NULL; - unsigned char hmacbuf[SHA_DIGEST_LENGTH]; - unsigned char* digest; ERL_NIF_TERM head, tail; - const ERL_NIF_TERM* tpl_terms; - int tpl_arity; DSA *dsa; int i; - - if (argv[0] == atom_sha) { - if (enif_get_tuple(env, argv[1], &tpl_arity, &tpl_terms)) { - if (tpl_arity != 2 || tpl_terms[0] != atom_digest - || !enif_inspect_binary(env, tpl_terms[1], &data_bin) - || data_bin.size != SHA_DIGEST_LENGTH) { - - return enif_make_badarg(env); - } - digest = data_bin.data; - } - else { - if (!enif_inspect_binary(env, argv[1], &data_bin)) { - return enif_make_badarg(env); - } - SHA1(data_bin.data, data_bin.size, hmacbuf); - digest = hmacbuf; - } - } - else if (argv[0] == atom_none && enif_inspect_binary(env, argv[1], &data_bin) - && data_bin.size == SHA_DIGEST_LENGTH) { - digest = data_bin.data; - } - else { - return enif_make_badarg(env); - } - - if (!enif_inspect_binary(env, argv[2], &sign_bin) + if (!argv[0] == atom_sha + || !enif_inspect_binary(env, argv[1], &digest_bin) + || digest_bin.size != SHA_DIGEST_LENGTH + || !enif_inspect_binary(env, argv[2], &sign_bin) || !enif_get_list_cell(env, argv[3], &head, &tail) || !get_bn_from_bin(env, head, &dsa_p) || !enif_get_list_cell(env, tail, &head, &tail) @@ -2225,94 +2064,27 @@ static ERL_NIF_TERM dss_verify_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM dsa->g = dsa_g; dsa->priv_key = NULL; dsa->pub_key = dsa_y; - i = DSA_verify(0, digest, SHA_DIGEST_LENGTH, + i = DSA_verify(0, digest_bin.data, SHA_DIGEST_LENGTH, sign_bin.data, sign_bin.size, dsa); DSA_free(dsa); return(i > 0) ? atom_true : atom_false; } - -static void md5_digest(unsigned char* in, unsigned int in_len, unsigned char* out) -{ - MD5(in, in_len, out); -} -static void sha1_digest(unsigned char* in, unsigned int in_len, unsigned char* out) -{ - SHA1(in, in_len, out); -} -#ifdef HAVE_SHA224 -static void sha224_digest(unsigned char* in, unsigned int in_len, unsigned char* out) -{ - SHA224(in, in_len, out); -} -#endif -#ifdef HAVE_SHA256 -static void sha256_digest(unsigned char* in, unsigned int in_len, unsigned char* out) -{ - SHA256(in, in_len, out); -} -#endif -#ifdef HAVE_SHA384 -static void sha384_digest(unsigned char* in, unsigned int in_len, unsigned char* out) -{ - SHA384(in, in_len, out); -} -#endif -#ifdef HAVE_SHA512 -static void sha512_digest(unsigned char* in, unsigned int in_len, unsigned char* out) +static void init_digest_types(ErlNifEnv* env) { - SHA512(in, in_len, out); -} -#endif + struct digest_type_t* p = digest_types; -struct digest_type_t { - const char* type_str; - unsigned len; /* 0 if notsup */ - int NID_type; - void (*funcp)(unsigned char* in, unsigned int in_len, unsigned char* out); - ERL_NIF_TERM type_atom; -}; + for (p = digest_types; p->type_str; p++) { + p->type_atom = enif_make_atom(env, p->type_str); + } -struct digest_type_t digest_types[] = -{ - {"md5", MD5_DIGEST_LENGTH, NID_md5, md5_digest}, - {"sha", SHA_DIGEST_LENGTH, NID_sha1, sha1_digest}, - {"sha224", -#ifdef HAVE_SHA224 - SHA224_LEN, NID_sha224, sha224_digest -#else - 0 -#endif - }, - {"sha256", -#ifdef HAVE_SHA256 - SHA256_LEN, NID_sha256, sha256_digest -#else - 0 -#endif - }, - {"sha384", -#ifdef HAVE_SHA384 - SHA384_LEN, NID_sha384, sha384_digest -#else - 0 -#endif - }, - {"sha512", -#ifdef HAVE_SHA512 - SHA512_LEN, NID_sha512, sha512_digest -#else - 0 -#endif - }, - {NULL} -}; +} -static void init_digest_types(ErlNifEnv* env) +static void init_cipher_types(ErlNifEnv* env) { - struct digest_type_t* p = digest_types; + struct cipher_type_t* p = cipher_types; - for (p = digest_types; p->type_str; p++) { + for (p = cipher_types; p->type_str; p++) { p->type_atom = enif_make_atom(env, p->type_str); } @@ -2329,31 +2101,45 @@ static struct digest_type_t* get_digest_type(ERL_NIF_TERM type) return NULL; } -static ERL_NIF_TERM rsa_verify_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Type, Data|{digest,Digest}, Signature, Key=[E,N]) */ - ErlNifBinary data_bin, sign_bin; - unsigned char hmacbuf[SHA512_LEN]; - ERL_NIF_TERM head, tail, ret; - int i; - RSA* rsa; - const ERL_NIF_TERM type = argv[0]; - const ERL_NIF_TERM* tpl_terms; - int tpl_arity; - struct digest_type_t* digp = NULL; - unsigned char* digest = NULL; +static struct cipher_type_t* get_cipher_type(ERL_NIF_TERM type, size_t key_len) +{ + struct cipher_type_t* p = NULL; + for (p = cipher_types; p->type_str; p++) { + if (type == p->type_atom && (!p->key_len || key_len == p->key_len)) { + return p; + } + } + return NULL; +} +static ERL_NIF_TERM rsa_verify_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Type, Digest, Signature, Key=[E,N]) */ + ErlNifBinary digest_bin, sign_bin; + ERL_NIF_TERM head, tail, ret; + int i; + RSA *rsa; +#if OPENSSL_VERSION_NUMBER >= 0x1000000fL + EVP_PKEY *pkey; + EVP_PKEY_CTX *ctx; +#endif + const EVP_MD *md; + const ERL_NIF_TERM type = argv[0]; + struct digest_type_t *digp = NULL; digp = get_digest_type(type); if (!digp) { return enif_make_badarg(env); } - if (!digp->len) { + if (!digp->md_func) { return atom_notsup; } rsa = RSA_new(); + md = digp->md_func(); - if (!enif_inspect_binary(env, argv[2], &sign_bin) + if (!enif_inspect_binary(env, argv[1], &digest_bin) + || digest_bin.size != EVP_MD_size(md) + || !enif_inspect_binary(env, argv[2], &sign_bin) || !enif_get_list_cell(env, argv[3], &head, &tail) || !get_bn_from_bin(env, head, &rsa->e) || !enif_get_list_cell(env, tail, &head, &tail) @@ -2363,27 +2149,24 @@ static ERL_NIF_TERM rsa_verify_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ret = enif_make_badarg(env); goto done; } - if (enif_get_tuple(env, argv[1], &tpl_arity, &tpl_terms)) { - if (tpl_arity != 2 || tpl_terms[0] != atom_digest - || !enif_inspect_binary(env, tpl_terms[1], &data_bin) - || data_bin.size != digp->len) { - - ret = enif_make_badarg(env); - goto done; - } - digest = data_bin.data; - } - else if (enif_inspect_binary(env, argv[1], &data_bin)) { - digest = hmacbuf; - digp->funcp(data_bin.data, data_bin.size, digest); - } - else { - ret = enif_make_badarg(env); - goto done; - } - i = RSA_verify(digp->NID_type, digest, digp->len, +#if OPENSSL_VERSION_NUMBER >= 0x1000000fL + pkey = EVP_PKEY_new(); + EVP_PKEY_set1_RSA(pkey, rsa); + + ctx = EVP_PKEY_CTX_new(pkey, NULL); + EVP_PKEY_verify_init(ctx); + EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING); + EVP_PKEY_CTX_set_signature_md(ctx, md); + + i = EVP_PKEY_verify(ctx, sign_bin.data, sign_bin.size, + digest_bin.data, digest_bin.size); + EVP_PKEY_CTX_free(ctx); + EVP_PKEY_free(pkey); +#else + i = RSA_verify(md->type, digest_bin.data, EVP_MD_size(md), sign_bin.data, sign_bin.size, rsa); +#endif ret = (i==1 ? atom_true : atom_false); @@ -2392,107 +2175,6 @@ done: return ret; } - -static ERL_NIF_TERM aes_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, IVec, Data, IsEncrypt) */ - ErlNifBinary key_bin, ivec_bin, data_bin; - unsigned char ivec[16]; - int enc, i = 0, outlen = 0; - EVP_CIPHER_CTX ctx; - const EVP_CIPHER *cipher = NULL; - unsigned char* ret_ptr; - ERL_NIF_TERM ret; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) - || (key_bin.size != 16 && key_bin.size != 32) - || !enif_inspect_binary(env, argv[1], &ivec_bin) - || ivec_bin.size != 16 - || !enif_inspect_iolist_as_binary(env, argv[2], &data_bin) - || data_bin.size % 16 != 0) { - - return enif_make_badarg(env); - } - - if (argv[3] == atom_true) - enc = 1; - else - enc = 0; - - EVP_CIPHER_CTX_init(&ctx); - - if (key_bin.size == 16) - cipher = EVP_aes_128_cbc(); - else if (key_bin.size == 32) - cipher = EVP_aes_256_cbc(); - - memcpy(ivec, ivec_bin.data, 16); /* writeable copy */ - - /* openssl docs say we need to leave at least 3 blocks available - at the end of the buffer for EVP calls. let's be safe */ - ret_ptr = enif_make_new_binary(env, data_bin.size + 16*3, &ret); - - if (EVP_CipherInit_ex(&ctx, cipher, NULL, key_bin.data, ivec, enc) != 1) - return enif_make_badarg(env); - - /* disable padding, we only handle whole blocks */ - EVP_CIPHER_CTX_set_padding(&ctx, 0); - - if (EVP_CipherUpdate(&ctx, ret_ptr, &i, data_bin.data, data_bin.size) != 1) - return enif_make_badarg(env); - outlen += i; - if (EVP_CipherFinal_ex(&ctx, ret_ptr + outlen, &i) != 1) - return enif_make_badarg(env); - outlen += i; - - EVP_CIPHER_CTX_cleanup(&ctx); - - CONSUME_REDS(env,data_bin); - - /* the garbage collector is going to love this */ - return enif_make_sub_binary(env, ret, 0, outlen); -} - -static ERL_NIF_TERM aes_ige_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, IVec, Data, IsEncrypt) */ -#ifdef HAVE_AES_IGE - ErlNifBinary key_bin, ivec_bin, data_bin; - AES_KEY aes_key; - unsigned char ivec[32]; - int i; - unsigned char* ret_ptr; - ERL_NIF_TERM ret; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) - || (key_bin.size != 16 && key_bin.size != 32) - || !enif_inspect_binary(env, argv[1], &ivec_bin) - || ivec_bin.size != 32 - || !enif_inspect_iolist_as_binary(env, argv[2], &data_bin) - || data_bin.size % 16 != 0) { - - return enif_make_badarg(env); - } - - if (argv[3] == atom_true) { - i = AES_ENCRYPT; - AES_set_encrypt_key(key_bin.data, key_bin.size*8, &aes_key); - } - else { - i = AES_DECRYPT; - AES_set_decrypt_key(key_bin.data, key_bin.size*8, &aes_key); - } - - ret_ptr = enif_make_new_binary(env, data_bin.size, &ret); - memcpy(ivec, ivec_bin.data, 32); /* writable copy */ - AES_ige_encrypt(data_bin.data, ret_ptr, data_bin.size, &aes_key, ivec, i); - CONSUME_REDS(env,data_bin); - return ret; -#else - return atom_notsup; -#endif -} - static ERL_NIF_TERM do_exor(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Data1, Data2) */ ErlNifBinary d1, d2; @@ -2500,7 +2182,6 @@ static ERL_NIF_TERM do_exor(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) int i; ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env,argv[0], &d1) || !enif_inspect_iolist_as_binary(env,argv[1], &d2) || d1.size != d2.size) { @@ -2521,7 +2202,6 @@ static ERL_NIF_TERM rc4_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg RC4_KEY rc4_key; ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env,argv[0], &key) || !enif_inspect_iolist_as_binary(env,argv[1], &data)) { return enif_make_badarg(env); @@ -2538,7 +2218,6 @@ static ERL_NIF_TERM rc4_set_key(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg ErlNifBinary key; ERL_NIF_TERM ret; - if (!enif_inspect_iolist_as_binary(env,argv[0], &key)) { return enif_make_badarg(env); } @@ -2554,7 +2233,6 @@ static ERL_NIF_TERM rc4_encrypt_with_state(ErlNifEnv* env, int argc, const ERL_N RC4_KEY* rc4_key; ERL_NIF_TERM new_state, new_data; - if (!enif_inspect_iolist_as_binary(env,argv[0], &state) || state.size != sizeof(RC4_KEY) || !enif_inspect_iolist_as_binary(env,argv[1], &data)) { @@ -2568,34 +2246,6 @@ static ERL_NIF_TERM rc4_encrypt_with_state(ErlNifEnv* env, int argc, const ERL_N return enif_make_tuple2(env,new_state,new_data); } -static ERL_NIF_TERM rc2_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key,IVec,Data,IsEncrypt) */ - ErlNifBinary key_bin, ivec_bin, data_bin; - RC2_KEY rc2_key; - ERL_NIF_TERM ret; - unsigned char iv_copy[8]; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) - || (key_bin.size != 5 && key_bin.size != 8 && key_bin.size != 16) - || !enif_inspect_binary(env, argv[1], &ivec_bin) - || ivec_bin.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[2], &data_bin) - || data_bin.size % 8 != 0) { - return enif_make_badarg(env); - } - - RC2_set_key(&rc2_key, key_bin.size, key_bin.data, key_bin.size*8); - memcpy(iv_copy, ivec_bin.data, 8); - RC2_cbc_encrypt(data_bin.data, - enif_make_new_binary(env, data_bin.size, &ret), - data_bin.size, &rc2_key, - iv_copy, - (argv[3] == atom_true)); - CONSUME_REDS(env,data_bin); - return ret; -} - static int get_rsa_private_key(ErlNifEnv* env, ERL_NIF_TERM key, RSA *rsa) { /* key=[E,N,D]|[E,N,D,P1,P2,E1,E2,C] */ @@ -2625,41 +2275,32 @@ static int get_rsa_private_key(ErlNifEnv* env, ERL_NIF_TERM key, RSA *rsa) } static ERL_NIF_TERM rsa_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Type, Data|{digest,Digest}, Key=[E,N,D]|[E,N,D,P1,P2,E1,E2,C]) */ - ErlNifBinary data_bin, ret_bin; - unsigned char hmacbuf[SHA512_LEN]; - unsigned rsa_s_len; - RSA* rsa; - int i; - const ERL_NIF_TERM* tpl_terms; - int tpl_arity; +{/* (Type, Digest, Key=[E,N,D]|[E,N,D,P1,P2,E1,E2,C]) */ + ErlNifBinary digest_bin, ret_bin; +#if OPENSSL_VERSION_NUMBER >= 0x1000000fL + EVP_PKEY *pkey; + EVP_PKEY_CTX *ctx; + size_t rsa_s_len; +#else + unsigned rsa_s_len, len; +#endif + RSA *rsa; + int i; struct digest_type_t *digp; - unsigned char* digest; - + const EVP_MD *md; digp = get_digest_type(argv[0]); if (!digp) { return enif_make_badarg(env); } - if (!digp->len) { + if (!digp->md_func) { return atom_notsup; } + md = digp->md_func(); - if (enif_get_tuple(env, argv[1], &tpl_arity, &tpl_terms)) { - if (tpl_arity != 2 || tpl_terms[0] != atom_digest - || !enif_inspect_binary(env, tpl_terms[1], &data_bin) - || data_bin.size != digp->len) { - - return enif_make_badarg(env); - } - digest = data_bin.data; - } - else { - if (!enif_inspect_binary(env,argv[1],&data_bin)) { - return enif_make_badarg(env); - } - digest = hmacbuf; - digp->funcp(data_bin.data, data_bin.size, digest); + if (!enif_inspect_binary(env,argv[1],&digest_bin) + || digest_bin.size != EVP_MD_size(md)) { + return enif_make_badarg(env); } rsa = RSA_new(); @@ -2669,14 +2310,33 @@ static ERL_NIF_TERM rsa_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar } +#if OPENSSL_VERSION_NUMBER >= 0x1000000fL + pkey = EVP_PKEY_new(); + EVP_PKEY_set1_RSA(pkey, rsa); + rsa_s_len=(size_t)EVP_PKEY_size(pkey); + enif_alloc_binary(rsa_s_len, &ret_bin); + + ctx = EVP_PKEY_CTX_new(pkey, NULL); + EVP_PKEY_sign_init(ctx); + EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING); + EVP_PKEY_CTX_set_signature_md(ctx, md); + + i = EVP_PKEY_sign(ctx, ret_bin.data, &rsa_s_len, + digest_bin.data, digest_bin.size); + ASSERT(i<=0 || rsa_s_len <= ret_bin.size); + EVP_PKEY_CTX_free(ctx); + EVP_PKEY_free(pkey); +#else enif_alloc_binary(RSA_size(rsa), &ret_bin); + len = EVP_MD_size(md); - ERL_VALGRIND_ASSERT_MEM_DEFINED(digest, digp->len); - i = RSA_sign(digp->NID_type, digest, digp->len, + ERL_VALGRIND_ASSERT_MEM_DEFINED(digest_bin.data, len); + i = RSA_sign(md->type, digest_bin.data, len, ret_bin.data, &rsa_s_len, rsa); +#endif RSA_free(rsa); - if (i) { + if (i > 0) { ERL_VALGRIND_MAKE_MEM_DEFINED(ret_bin.data, rsa_s_len); if (rsa_s_len != ret_bin.size) { enif_realloc_binary(&ret_bin, rsa_s_len); @@ -2692,43 +2352,16 @@ static ERL_NIF_TERM rsa_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar static ERL_NIF_TERM dss_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (DigesType|none, Data|{digest,Digest}, Key=[P,Q,G,PrivKey]) */ - ErlNifBinary data_bin, ret_bin; +{/* (sha, Digest, Key=[P,Q,G,PrivKey]) */ + ErlNifBinary digest_bin, ret_bin; ERL_NIF_TERM head, tail; - unsigned char hmacbuf[SHA_DIGEST_LENGTH]; unsigned int dsa_s_len; - const ERL_NIF_TERM* tpl_terms; - int tpl_arity; - unsigned char* digest = NULL; DSA* dsa; int i; - - if (argv[0] == atom_sha) { - if (enif_get_tuple(env, argv[1], &tpl_arity, &tpl_terms)) { - if (tpl_arity != 2 || tpl_terms[0] != atom_digest - || !enif_inspect_binary(env, tpl_terms[1], &data_bin) - || data_bin.size != SHA_DIGEST_LENGTH) { - - return enif_make_badarg(env); - } - digest = data_bin.data; - } - else { - if (!enif_inspect_binary(env,argv[1],&data_bin)) { - return enif_make_badarg(env); - } - SHA1(data_bin.data, data_bin.size, hmacbuf); - digest = hmacbuf; - } - } - else if (argv[0] == atom_none - && enif_inspect_binary(env,argv[1],&data_bin) - && data_bin.size == SHA_DIGEST_LENGTH) { - - digest = data_bin.data; - } - else { + if (!argv[0] == atom_sha + || !enif_inspect_binary(env, argv[1], &digest_bin) + || digest_bin.size != SHA_DIGEST_LENGTH) { return enif_make_badarg(env); } @@ -2749,7 +2382,7 @@ static ERL_NIF_TERM dss_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar } enif_alloc_binary(DSA_size(dsa), &ret_bin); - i = DSA_sign(NID_sha1, digest, SHA_DIGEST_LENGTH, + i = DSA_sign(NID_sha1, digest_bin.data, SHA_DIGEST_LENGTH, ret_bin.data, &dsa_s_len, dsa); DSA_free(dsa); if (i) { @@ -2789,7 +2422,6 @@ static ERL_NIF_TERM rsa_public_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TER int padding, i; RSA* rsa; - rsa = RSA_new(); if (!enif_inspect_binary(env, argv[0], &data_bin) @@ -2838,7 +2470,6 @@ static ERL_NIF_TERM rsa_private_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TE int padding, i; RSA* rsa; - rsa = RSA_new(); if (!enif_inspect_binary(env, argv[0], &data_bin) @@ -2885,7 +2516,6 @@ static ERL_NIF_TERM dh_generate_parameters_nif(ErlNifEnv* env, int argc, const E unsigned char *p_ptr, *g_ptr; ERL_NIF_TERM ret_p, ret_g; - if (!enif_get_int(env, argv[0], &prime_len) || !enif_get_int(env, argv[1], &generator)) { @@ -2913,7 +2543,6 @@ static ERL_NIF_TERM dh_check(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[] int i; ERL_NIF_TERM ret, head, tail; - dh_params = DH_new(); if (!enif_get_list_cell(env, argv[0], &head, &tail) @@ -2948,7 +2577,6 @@ static ERL_NIF_TERM dh_generate_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_ ERL_NIF_TERM ret, ret_pub, ret_prv, head, tail; int mpint; /* 0 or 4 */ - dh_params = DH_new(); if (!(get_bn_from_bin(env, argv[0], &dh_params->priv_key) @@ -2993,7 +2621,6 @@ static ERL_NIF_TERM dh_compute_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_T ErlNifBinary ret_bin; ERL_NIF_TERM ret, head, tail; - dh_params = DH_new(); if (!get_bn_from_bin(env, argv[0], &pubkey) @@ -3016,7 +2643,7 @@ static ERL_NIF_TERM dh_compute_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_T ret = enif_make_binary(env, &ret_bin); } else { - enif_release_binary(&ret_bin); + enif_release_binary(&ret_bin); ret = atom_error; } } @@ -3034,7 +2661,6 @@ static ERL_NIF_TERM srp_value_B_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM unsigned dlen; ERL_NIF_TERM ret; - if (!get_bn_from_bin(env, argv[0], &bn_multiplier) || !get_bn_from_bin(env, argv[1], &bn_verifier) || !get_bn_from_bin(env, argv[2], &bn_generator) @@ -3095,7 +2721,6 @@ static ERL_NIF_TERM srp_user_secret_nif(ErlNifEnv* env, int argc, const ERL_NIF_ unsigned dlen; ERL_NIF_TERM ret; - if (!get_bn_from_bin(env, argv[0], &bn_a) || !get_bn_from_bin(env, argv[1], &bn_u) || !get_bn_from_bin(env, argv[2], &bn_B) @@ -3175,7 +2800,6 @@ static ERL_NIF_TERM srp_host_secret_nif(ErlNifEnv* env, int argc, const ERL_NIF_ unsigned dlen; ERL_NIF_TERM ret; - if (!get_bn_from_bin(env, argv[0], &bn_verifier) || !get_bn_from_bin(env, argv[1], &bn_b) || !get_bn_from_bin(env, argv[2], &bn_u) @@ -3228,99 +2852,6 @@ static ERL_NIF_TERM srp_host_secret_nif(ErlNifEnv* env, int argc, const ERL_NIF_ return ret; } -static ERL_NIF_TERM bf_cfb64_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Ivec, Data, IsEncrypt) */ - ErlNifBinary key_bin, ivec_bin, data_bin; - BF_KEY bf_key; /* blowfish key 8 */ - unsigned char bf_tkey[8]; /* blowfish ivec */ - int bf_n = 0; /* blowfish ivec pos */ - ERL_NIF_TERM ret; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) - || !enif_inspect_binary(env, argv[1], &ivec_bin) - || ivec_bin.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[2], &data_bin)) { - return enif_make_badarg(env); - } - - BF_set_key(&bf_key, key_bin.size, key_bin.data); - memcpy(bf_tkey, ivec_bin.data, 8); - BF_cfb64_encrypt(data_bin.data, enif_make_new_binary(env,data_bin.size,&ret), - data_bin.size, &bf_key, bf_tkey, &bf_n, - (argv[3] == atom_true ? BF_ENCRYPT : BF_DECRYPT)); - CONSUME_REDS(env,data_bin); - return ret; -} - -static ERL_NIF_TERM bf_cbc_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Ivec, Data, IsEncrypt) */ - ErlNifBinary key_bin, ivec_bin, data_bin; - BF_KEY bf_key; /* blowfish key 8 */ - unsigned char bf_tkey[8]; /* blowfish ivec */ - ERL_NIF_TERM ret; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) - || !enif_inspect_binary(env, argv[1], &ivec_bin) - || ivec_bin.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[2], &data_bin) - || data_bin.size % 8 != 0) { - return enif_make_badarg(env); - } - - BF_set_key(&bf_key, key_bin.size, key_bin.data); - memcpy(bf_tkey, ivec_bin.data, 8); - BF_cbc_encrypt(data_bin.data, enif_make_new_binary(env,data_bin.size,&ret), - data_bin.size, &bf_key, bf_tkey, - (argv[3] == atom_true ? BF_ENCRYPT : BF_DECRYPT)); - CONSUME_REDS(env,data_bin); - return ret; -} - -static ERL_NIF_TERM bf_ecb_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, Data, IsEncrypt) */ - ErlNifBinary key_bin, data_bin; - BF_KEY bf_key; /* blowfish key 8 */ - ERL_NIF_TERM ret; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) - || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin) - || data_bin.size < 8) { - return enif_make_badarg(env); - } - BF_set_key(&bf_key, key_bin.size, key_bin.data); - BF_ecb_encrypt(data_bin.data, enif_make_new_binary(env,data_bin.size,&ret), - &bf_key, (argv[2] == atom_true ? BF_ENCRYPT : BF_DECRYPT)); - CONSUME_REDS(env,data_bin); - return ret; -} - -static ERL_NIF_TERM blowfish_ofb64_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Key, IVec, Data) */ - ErlNifBinary key_bin, ivec_bin, data_bin; - BF_KEY bf_key; /* blowfish key 8 */ - unsigned char bf_tkey[8]; /* blowfish ivec */ - int bf_n = 0; /* blowfish ivec pos */ - ERL_NIF_TERM ret; - - - if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin) - || !enif_inspect_binary(env, argv[1], &ivec_bin) - || ivec_bin.size != 8 - || !enif_inspect_iolist_as_binary(env, argv[2], &data_bin)) { - return enif_make_badarg(env); - } - - BF_set_key(&bf_key, key_bin.size, key_bin.data); - memcpy(bf_tkey, ivec_bin.data, 8); - BF_ofb64_encrypt(data_bin.data, enif_make_new_binary(env,data_bin.size,&ret), - data_bin.size, &bf_key, bf_tkey, &bf_n); - CONSUME_REDS(env,data_bin); - return ret; -} - #if defined(HAVE_EC) static EC_KEY* ec_key_new(ErlNifEnv* env, ERL_NIF_TERM curve_arg) { @@ -3629,7 +3160,6 @@ static ERL_NIF_TERM ec_key_generate(ErlNifEnv* env, int argc, const ERL_NIF_TERM ERL_NIF_TERM priv_key; ERL_NIF_TERM pub_key = atom_undefined; - if (!get_ec_key(env, argv[0], argv[1], atom_undefined, &key)) goto badarg; @@ -3659,50 +3189,33 @@ badarg: } static ERL_NIF_TERM ecdsa_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Type, Data|{digest,Digest}, Curve, Key) */ +{/* (Type, Digest, Curve, Key) */ #if defined(HAVE_EC) - ErlNifBinary data_bin, ret_bin; - unsigned char hmacbuf[SHA_DIGEST_LENGTH]; + ErlNifBinary digest_bin, ret_bin; unsigned int dsa_s_len; EC_KEY* key = NULL; - int i; - const ERL_NIF_TERM* tpl_terms; - int tpl_arity; + int i, len; struct digest_type_t *digp; - unsigned char* digest; - + const EVP_MD *md; digp = get_digest_type(argv[0]); if (!digp) { return enif_make_badarg(env); } - if (!digp->len) { + if (!digp->md_func) { return atom_notsup; } + md = digp->md_func(); + len = EVP_MD_size(md); - if (!get_ec_key(env, argv[2], argv[3], atom_undefined, &key)) + if (!enif_inspect_binary(env,argv[1],&digest_bin) + || digest_bin.size != len + || !get_ec_key(env, argv[2], argv[3], atom_undefined, &key)) goto badarg; - if (enif_get_tuple(env, argv[1], &tpl_arity, &tpl_terms)) { - if (tpl_arity != 2 || tpl_terms[0] != atom_digest - || !enif_inspect_binary(env, tpl_terms[1], &data_bin) - || data_bin.size != digp->len) { - - goto badarg; - } - digest = data_bin.data; - } - else { - if (!enif_inspect_binary(env,argv[1],&data_bin)) { - goto badarg; - } - digest = hmacbuf; - digp->funcp(data_bin.data, data_bin.size, digest); - } - enif_alloc_binary(ECDSA_size(key), &ret_bin); - i = ECDSA_sign(digp->NID_type, digest, digp->len, + i = ECDSA_sign(md->type, digest_bin.data, len, ret_bin.data, &dsa_s_len, key); EC_KEY_free(key); @@ -3727,49 +3240,32 @@ badarg: } static ERL_NIF_TERM ecdsa_verify_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) -{/* (Type, Data|{digest,Digest}, Signature, Curve, Key) */ +{/* (Type, Digest, Signature, Curve, Key) */ #if defined(HAVE_EC) - ErlNifBinary data_bin, sign_bin; - unsigned char hmacbuf[SHA512_LEN]; - int i; + ErlNifBinary digest_bin, sign_bin; + int i, len; EC_KEY* key = NULL; const ERL_NIF_TERM type = argv[0]; - const ERL_NIF_TERM* tpl_terms; - int tpl_arity; - struct digest_type_t* digp = NULL; - unsigned char* digest = NULL; - + struct digest_type_t *digp = NULL; + const EVP_MD *md; digp = get_digest_type(type); if (!digp) { return enif_make_badarg(env); } - if (!digp->len) { + if (!digp->md_func) { return atom_notsup; } + md = digp->md_func(); + len = EVP_MD_size(md); - if (!enif_inspect_binary(env, argv[2], &sign_bin) + if (!enif_inspect_binary(env, argv[1], &digest_bin) + || digest_bin.size != len + || !enif_inspect_binary(env, argv[2], &sign_bin) || !get_ec_key(env, argv[3], atom_undefined, argv[4], &key)) goto badarg; - if (enif_get_tuple(env, argv[1], &tpl_arity, &tpl_terms)) { - if (tpl_arity != 2 || tpl_terms[0] != atom_digest - || !enif_inspect_binary(env, tpl_terms[1], &data_bin) - || data_bin.size != digp->len) { - - goto badarg; - } - digest = data_bin.data; - } - else if (enif_inspect_binary(env, argv[1], &data_bin)) { - digest = hmacbuf; - digp->funcp(data_bin.data, data_bin.size, digest); - } - else { - goto badarg; - } - - i = ECDSA_verify(digp->NID_type, digest, digp->len, + i = ECDSA_verify(md->type, digest_bin.data, len, sign_bin.data, sign_bin.size, key); EC_KEY_free(key); @@ -3803,7 +3299,6 @@ static ERL_NIF_TERM ecdh_compute_key_nif(ErlNifEnv* env, int argc, const ERL_NIF EC_POINT *my_ecpoint; EC_KEY *other_ecdh = NULL; - if (!get_ec_key(env, argv[1], argv[2], atom_undefined, &key)) return enif_make_badarg(env); @@ -3847,252 +3342,9 @@ out_err: static ERL_NIF_TERM rand_seed_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ErlNifBinary seed_bin; + if (!enif_inspect_binary(env, argv[0], &seed_bin)) return enif_make_badarg(env); RAND_seed(seed_bin.data,seed_bin.size); return atom_ok; } - - -/* HMAC */ - -static void hmac_md5(unsigned char *key, int klen, unsigned char *dbuf, int dlen, - unsigned char *hmacbuf) -{ - MD5_CTX ctx; - char ipad[HMAC_INT_LEN]; - char opad[HMAC_INT_LEN]; - unsigned char nkey[MD5_LEN]; - int i; - - /* Change key if longer than 64 bytes */ - if (klen > HMAC_INT_LEN) { - MD5(key, klen, nkey); - key = nkey; - klen = MD5_LEN; - } - - memset(ipad, '\0', sizeof(ipad)); - memset(opad, '\0', sizeof(opad)); - memcpy(ipad, key, klen); - memcpy(opad, key, klen); - - for (i = 0; i < HMAC_INT_LEN; i++) { - ipad[i] ^= HMAC_IPAD; - opad[i] ^= HMAC_OPAD; - } - - /* inner MD5 */ - MD5_Init(&ctx); - MD5_Update(&ctx, ipad, HMAC_INT_LEN); - MD5_Update(&ctx, dbuf, dlen); - MD5_Final((unsigned char *) hmacbuf, &ctx); - /* outer MD5 */ - MD5_Init(&ctx); - MD5_Update(&ctx, opad, HMAC_INT_LEN); - MD5_Update(&ctx, hmacbuf, MD5_LEN); - MD5_Final((unsigned char *) hmacbuf, &ctx); -} - -static void hmac_sha1(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf) -{ - SHA_CTX ctx; - char ipad[HMAC_INT_LEN]; - char opad[HMAC_INT_LEN]; - unsigned char nkey[SHA_LEN]; - int i; - - /* Change key if longer than 64 bytes */ - if (klen > HMAC_INT_LEN) { - SHA1(key, klen, nkey); - key = nkey; - klen = SHA_LEN; - } - - memset(ipad, '\0', sizeof(ipad)); - memset(opad, '\0', sizeof(opad)); - memcpy(ipad, key, klen); - memcpy(opad, key, klen); - - for (i = 0; i < HMAC_INT_LEN; i++) { - ipad[i] ^= HMAC_IPAD; - opad[i] ^= HMAC_OPAD; - } - - /* inner SHA */ - SHA1_Init(&ctx); - SHA1_Update(&ctx, ipad, HMAC_INT_LEN); - SHA1_Update(&ctx, dbuf, dlen); - SHA1_Final((unsigned char *) hmacbuf, &ctx); - /* outer SHA */ - SHA1_Init(&ctx); - SHA1_Update(&ctx, opad, HMAC_INT_LEN); - SHA1_Update(&ctx, hmacbuf, SHA_LEN); - SHA1_Final((unsigned char *) hmacbuf, &ctx); -} - -#ifdef HAVE_SHA224 -static void hmac_sha224(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf) -{ - SHA256_CTX ctx; - char ipad[HMAC_INT_LEN]; - char opad[HMAC_INT_LEN]; - unsigned char nkey[SHA224_DIGEST_LENGTH]; - int i; - - /* Change key if longer than 64 bytes */ - if (klen > HMAC_INT_LEN) { - SHA224(key, klen, nkey); - key = nkey; - klen = SHA224_DIGEST_LENGTH; - } - - memset(ipad, '\0', sizeof(ipad)); - memset(opad, '\0', sizeof(opad)); - memcpy(ipad, key, klen); - memcpy(opad, key, klen); - - for (i = 0; i < HMAC_INT_LEN; i++) { - ipad[i] ^= HMAC_IPAD; - opad[i] ^= HMAC_OPAD; - } - - /* inner SHA */ - SHA224_Init(&ctx); - SHA224_Update(&ctx, ipad, HMAC_INT_LEN); - SHA224_Update(&ctx, dbuf, dlen); - SHA224_Final((unsigned char *) hmacbuf, &ctx); - /* outer SHA */ - SHA224_Init(&ctx); - SHA224_Update(&ctx, opad, HMAC_INT_LEN); - SHA224_Update(&ctx, hmacbuf, SHA224_DIGEST_LENGTH); - SHA224_Final((unsigned char *) hmacbuf, &ctx); -} -#endif - -#ifdef HAVE_SHA256 -static void hmac_sha256(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf) -{ - SHA256_CTX ctx; - char ipad[HMAC_INT_LEN]; - char opad[HMAC_INT_LEN]; - unsigned char nkey[SHA256_DIGEST_LENGTH]; - int i; - - /* Change key if longer than 64 bytes */ - if (klen > HMAC_INT_LEN) { - SHA256(key, klen, nkey); - key = nkey; - klen = SHA256_DIGEST_LENGTH; - } - - memset(ipad, '\0', sizeof(ipad)); - memset(opad, '\0', sizeof(opad)); - memcpy(ipad, key, klen); - memcpy(opad, key, klen); - - for (i = 0; i < HMAC_INT_LEN; i++) { - ipad[i] ^= HMAC_IPAD; - opad[i] ^= HMAC_OPAD; - } - - /* inner SHA */ - SHA256_Init(&ctx); - SHA256_Update(&ctx, ipad, HMAC_INT_LEN); - SHA256_Update(&ctx, dbuf, dlen); - SHA256_Final((unsigned char *) hmacbuf, &ctx); - /* outer SHA */ - SHA256_Init(&ctx); - SHA256_Update(&ctx, opad, HMAC_INT_LEN); - SHA256_Update(&ctx, hmacbuf, SHA256_DIGEST_LENGTH); - SHA256_Final((unsigned char *) hmacbuf, &ctx); -} -#endif - -#ifdef HAVE_SHA384 -static void hmac_sha384(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf) -{ - SHA512_CTX ctx; - char ipad[HMAC_INT2_LEN]; - char opad[HMAC_INT2_LEN]; - unsigned char nkey[SHA384_DIGEST_LENGTH]; - int i; - - /* Change key if longer than 64 bytes */ - if (klen > HMAC_INT2_LEN) { - SHA384(key, klen, nkey); - key = nkey; - klen = SHA384_DIGEST_LENGTH; - } - - memset(ipad, '\0', sizeof(ipad)); - memset(opad, '\0', sizeof(opad)); - memcpy(ipad, key, klen); - memcpy(opad, key, klen); - - for (i = 0; i < HMAC_INT2_LEN; i++) { - ipad[i] ^= HMAC_IPAD; - opad[i] ^= HMAC_OPAD; - } - - /* inner SHA */ - SHA384_Init(&ctx); - SHA384_Update(&ctx, ipad, HMAC_INT2_LEN); - SHA384_Update(&ctx, dbuf, dlen); - SHA384_Final((unsigned char *) hmacbuf, &ctx); - /* outer SHA */ - SHA384_Init(&ctx); - SHA384_Update(&ctx, opad, HMAC_INT2_LEN); - SHA384_Update(&ctx, hmacbuf, SHA384_DIGEST_LENGTH); - SHA384_Final((unsigned char *) hmacbuf, &ctx); -} -#endif - -#ifdef HAVE_SHA512 -static void hmac_sha512(unsigned char *key, int klen, - unsigned char *dbuf, int dlen, - unsigned char *hmacbuf) -{ - SHA512_CTX ctx; - char ipad[HMAC_INT2_LEN]; - char opad[HMAC_INT2_LEN]; - unsigned char nkey[SHA512_DIGEST_LENGTH]; - int i; - - /* Change key if longer than 64 bytes */ - if (klen > HMAC_INT2_LEN) { - SHA512(key, klen, nkey); - key = nkey; - klen = SHA512_DIGEST_LENGTH; - } - - memset(ipad, '\0', sizeof(ipad)); - memset(opad, '\0', sizeof(opad)); - memcpy(ipad, key, klen); - memcpy(opad, key, klen); - - for (i = 0; i < HMAC_INT2_LEN; i++) { - ipad[i] ^= HMAC_IPAD; - opad[i] ^= HMAC_OPAD; - } - - /* inner SHA */ - SHA512_Init(&ctx); - SHA512_Update(&ctx, ipad, HMAC_INT2_LEN); - SHA512_Update(&ctx, dbuf, dlen); - SHA512_Final((unsigned char *) hmacbuf, &ctx); - /* outer SHA */ - SHA512_Init(&ctx); - SHA512_Update(&ctx, opad, HMAC_INT2_LEN); - SHA512_Update(&ctx, hmacbuf, SHA512_DIGEST_LENGTH); - SHA512_Final((unsigned char *) hmacbuf, &ctx); -} -#endif diff --git a/lib/crypto/c_src/crypto_callback.c b/lib/crypto/c_src/crypto_callback.c index e0de16074c..aab43232c9 100644 --- a/lib/crypto/c_src/crypto_callback.c +++ b/lib/crypto/c_src/crypto_callback.c @@ -51,8 +51,6 @@ DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks); -static ErlNifRWLock** lock_vec = NULL; /* Static locks used by openssl */ - static void nomem(size_t size, const char* op) { fprintf(stderr, "Out of memory abort. Crypto failed to %s %zu bytes.\r\n", @@ -84,6 +82,8 @@ static void crypto_free(void* ptr) #ifdef OPENSSL_THREADS /* vvvvvvvvvvvvvvv OPENSSL_THREADS vvvvvvvvvvvvvvvv */ +static ErlNifRWLock** lock_vec = NULL; /* Static locks used by openssl */ + #include <openssl/crypto.h> static INLINE void locking(int mode, ErlNifRWLock* lock) diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index 38e71591f3..8722e801a6 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -210,10 +210,8 @@ supports()-> {Hashs, PubKeys, Ciphers} = algorithms(), [{hashs, Hashs}, - {ciphers, [des_cbc, des_cfb, des3_cbc, des_ede3, blowfish_cbc, - blowfish_cfb64, blowfish_ofb64, blowfish_ecb, aes_cbc128, aes_cfb8, aes_cfb128, - aes_cbc256, rc2_cbc, aes_ctr, rc4, aes_ecb] ++ Ciphers}, - {public_keys, [rsa, dss, dh, srp] ++ PubKeys} + {ciphers, Ciphers}, + {public_keys, PubKeys} ]. info_lib() -> ?nif_stub. @@ -222,20 +220,14 @@ info_lib() -> ?nif_stub. hash(Hash, Data0) -> Data = iolist_to_binary(Data0), - MaxByts = max_bytes(), - hash(Hash, Data, erlang:byte_size(Data), MaxByts, initial). + MaxBytes = max_bytes(), + hash(Hash, Data, erlang:byte_size(Data), MaxBytes). -spec hash_init('md5'|'md4'|'ripemd160'| 'sha'|'sha224'|'sha256'|'sha384'|'sha512') -> any(). -hash_init(md5) -> {md5, md5_init()}; -hash_init(md4) -> {md4, md4_init()}; -hash_init(sha) -> {sha, sha_init()}; -hash_init(ripemd160) -> {ripemd160, ripemd160_init()}; -hash_init(sha224) -> {sha224, sha224_init()}; -hash_init(sha256) -> {sha256, sha256_init()}; -hash_init(sha384) -> {sha384, sha384_init()}; -hash_init(sha512) -> {sha512, sha512_init()}. +hash_init(Hash) -> + notsup_to_error(hash_init_nif(Hash)). -spec hash_update(_, iodata()) -> any(). @@ -246,14 +238,8 @@ hash_update(State, Data0) -> -spec hash_final(_) -> binary(). -hash_final({md5,Context}) -> md5_final(Context); -hash_final({md4,Context}) -> md4_final(Context); -hash_final({sha,Context}) -> sha_final(Context); -hash_final({ripemd160,Context}) -> ripemd160_final(Context); -hash_final({sha224,Context}) -> sha224_final(Context); -hash_final({sha256,Context}) -> sha256_final(Context); -hash_final({sha384,Context}) -> sha384_final(Context); -hash_final({sha512,Context}) -> sha512_final(Context). +hash_final(State) -> + notsup_to_error(hash_final_nif(State)). -spec hmac(_, iodata(), iodata()) -> binary(). @@ -265,151 +251,128 @@ hash_final({sha512,Context}) -> sha512_final(Context). hmac(Type, Key, Data0) -> Data = iolist_to_binary(Data0), - hmac(Type, Key, Data, undefined, erlang:byte_size(Data), max_bytes(), initial). + hmac(Type, Key, Data, undefined, erlang:byte_size(Data), max_bytes()). hmac(Type, Key, Data0, MacSize) -> Data = iolist_to_binary(Data0), - hmac(Type, Key, Data, MacSize, erlang:byte_size(Data), max_bytes(), initial). + hmac(Type, Key, Data, MacSize, erlang:byte_size(Data), max_bytes()). - -hmac_init(_Type, _Key) -> ?nif_stub. +hmac_init(Type, Key) -> + notsup_to_error(hmac_init_nif(Type, Key)). hmac_update(State, Data0) -> Data = iolist_to_binary(Data0), hmac_update(State, Data, erlang:byte_size(Data), max_bytes()). -hmac_final(_Context) -> ? nif_stub. -hmac_final_n(_Context, _HashLen) -> ? nif_stub. + +hmac_final(Context) -> + notsup_to_error(hmac_final_nif(Context)). +hmac_final_n(Context, HashLen) -> + notsup_to_error(hmac_final_nif(Context, HashLen)). %% Ecrypt/decrypt %%% --spec block_encrypt(des_cbc | des_cfb | des3_cbc | des3_cbf | des_ede3 | blowfish_cbc | - blowfish_cfb64 | aes_cbc128 | aes_cfb8 | aes_cfb128 | aes_cbc256 | rc2_cbc, +-spec block_encrypt(des_cbc | des_cfb | + des3_cbc | des3_cbf | des_ede3 | + blowfish_cbc | blowfish_cfb64 | blowfish_ofb64 | + aes_cbc128 | aes_cfb8 | aes_cfb128 | aes_cbc256 | aes_ige256 | + rc2_cbc, Key::iodata(), Ivec::binary(), Data::iodata()) -> binary(); (aes_gcm | chacha20_poly1305, Key::iodata(), Ivec::binary(), {AAD::binary(), Data::iodata()}) -> {binary(), binary()}. -block_encrypt(des_cbc, Key, Ivec, Data) -> - des_cbc_encrypt(Key, Ivec, Data); -block_encrypt(des_cfb, Key, Ivec, Data) -> - des_cfb_encrypt(Key, Ivec, Data); -block_encrypt(des3_cbc, [Key1, Key2, Key3], Ivec, Data) -> - des3_cbc_encrypt(Key1, Key2, Key3, Ivec, Data); -block_encrypt(des3_cbf, [Key1, Key2, Key3], Ivec, Data) -> - des3_cfb_encrypt(Key1, Key2, Key3, Ivec, Data); -block_encrypt(des_ede3, [Key1, Key2, Key3], Ivec, Data) -> - des_ede3_cbc_encrypt(Key1, Key2, Key3, Ivec, Data); -block_encrypt(blowfish_cbc, Key, Ivec, Data) -> - blowfish_cbc_encrypt(Key, Ivec, Data); -block_encrypt(blowfish_cfb64, Key, Ivec, Data) -> - blowfish_cfb64_encrypt(Key, Ivec, Data); -block_encrypt(blowfish_ofb64, Key, Ivec, Data) -> - blowfish_ofb64_encrypt(Key, Ivec, Data); -block_encrypt(aes_cbc128, Key, Ivec, Data) -> - aes_cbc_128_encrypt(Key, Ivec, Data); -block_encrypt(aes_cbc256, Key, Ivec, Data) -> - aes_cbc_256_encrypt(Key, Ivec, Data); +block_encrypt(Type, Key, Ivec, Data) when Type =:= des_cbc; + Type =:= des_cfb; + Type =:= blowfish_cbc; + Type =:= blowfish_cfb64; + Type =:= blowfish_ofb64; + Type =:= aes_cbc128; + Type =:= aes_cfb8; + Type =:= aes_cfb128; + Type =:= aes_cbc256; + Type =:= rc2_cbc -> + block_crypt_nif(Type, Key, Ivec, Data, true); +block_encrypt(Type, Key0, Ivec, Data) when Type =:= des3_cbc; + Type =:= des_ede3 -> + Key = check_des3_key(Key0), + block_crypt_nif(des_ede3_cbc, Key, Ivec, Data, true); +block_encrypt(des3_cbf, Key0, Ivec, Data) -> + Key = check_des3_key(Key0), + block_crypt_nif(des_ede3_cbf, Key, Ivec, Data, true); block_encrypt(aes_ige256, Key, Ivec, Data) -> - aes_ige_256_encrypt(Key, Ivec, Data); -block_encrypt(aes_cfb8, Key, Ivec, Data) -> - aes_cfb_8_encrypt(Key, Ivec, Data); -block_encrypt(aes_cfb128, Key, Ivec, Data) -> - aes_cfb_128_encrypt(Key, Ivec, Data); + aes_ige_crypt_nif(Key, Ivec, Data, true); block_encrypt(aes_gcm, Key, Ivec, {AAD, Data}) -> - case aes_gcm_encrypt(Key, Ivec, AAD, Data) of - notsup -> erlang:error(notsup); - Return -> Return - end; + aes_gcm_encrypt(Key, Ivec, AAD, Data); block_encrypt(chacha20_poly1305, Key, Ivec, {AAD, Data}) -> - case chacha20_poly1305_encrypt(Key, Ivec, AAD, Data) of - notsup -> erlang:error(notsup); - Return -> Return - end; -block_encrypt(rc2_cbc, Key, Ivec, Data) -> - rc2_cbc_encrypt(Key, Ivec, Data). + chacha20_poly1305_encrypt(Key, Ivec, AAD, Data). --spec block_decrypt(des_cbc | des_cfb | des3_cbc | des3_cbf | des_ede3 | blowfish_cbc | - blowfish_cfb64 | blowfish_ofb64 | aes_cbc128 | aes_cbc256 | aes_ige256 | - aes_cfb8 | aes_cfb128 | rc2_cbc, +-spec block_decrypt(des_cbc | des_cfb | + des3_cbc | des3_cbf | des_ede3 | + blowfish_cbc | blowfish_cfb64 | blowfish_ofb64 | + aes_cbc128 | aes_cfb8 | aes_cfb128 | aes_cbc256 | aes_ige256 | + rc2_cbc, Key::iodata(), Ivec::binary(), Data::iodata()) -> binary(); (aes_gcm | chacha20_poly1305, Key::iodata(), Ivec::binary(), {AAD::binary(), Data::iodata(), Tag::binary()}) -> binary() | error. -block_decrypt(des_cbc, Key, Ivec, Data) -> - des_cbc_decrypt(Key, Ivec, Data); -block_decrypt(des_cfb, Key, Ivec, Data) -> - des_cfb_decrypt(Key, Ivec, Data); -block_decrypt(des3_cbc, [Key1, Key2, Key3], Ivec, Data) -> - des3_cbc_decrypt(Key1, Key2, Key3, Ivec, Data); -block_decrypt(des3_cbf, [Key1, Key2, Key3], Ivec, Data) -> - des3_cfb_decrypt(Key1, Key2, Key3, Ivec, Data); -block_decrypt(des_ede3, [Key1, Key2, Key3], Ivec, Data) -> - des_ede3_cbc_decrypt(Key1, Key2, Key3, Ivec, Data); -block_decrypt(blowfish_cbc, Key, Ivec, Data) -> - blowfish_cbc_decrypt(Key, Ivec, Data); -block_decrypt(blowfish_cfb64, Key, Ivec, Data) -> - blowfish_cfb64_decrypt(Key, Ivec, Data); -block_decrypt(blowfish_ofb64, Key, Ivec, Data) -> - blowfish_ofb64_decrypt(Key, Ivec, Data); -block_decrypt(aes_cbc128, Key, Ivec, Data) -> - aes_cbc_128_decrypt(Key, Ivec, Data); -block_decrypt(aes_cbc256, Key, Ivec, Data) -> - aes_cbc_256_decrypt(Key, Ivec, Data); +block_decrypt(Type, Key, Ivec, Data) when Type =:= des_cbc; + Type =:= des_cfb; + Type =:= blowfish_cbc; + Type =:= blowfish_cfb64; + Type =:= blowfish_ofb64; + Type =:= aes_cbc128; + Type =:= aes_cfb8; + Type =:= aes_cfb128; + Type =:= aes_cbc256; + Type =:= rc2_cbc -> + block_crypt_nif(Type, Key, Ivec, Data, false); +block_decrypt(Type, Key0, Ivec, Data) when Type =:= des3_cbc; + Type =:= des_ede3 -> + Key = check_des3_key(Key0), + block_crypt_nif(des_ede3_cbc, Key, Ivec, Data, false); +block_decrypt(des3_cbf, Key0, Ivec, Data) -> + Key = check_des3_key(Key0), + block_crypt_nif(des_ede3_cbf, Key, Ivec, Data, false); block_decrypt(aes_ige256, Key, Ivec, Data) -> - aes_ige_256_decrypt(Key, Ivec, Data); -block_decrypt(aes_cfb8, Key, Ivec, Data) -> - aes_cfb_8_decrypt(Key, Ivec, Data); -block_decrypt(aes_cfb128, Key, Ivec, Data) -> - aes_cfb_128_decrypt(Key, Ivec, Data); + notsup_to_error(aes_ige_crypt_nif(Key, Ivec, Data, false)); block_decrypt(aes_gcm, Key, Ivec, {AAD, Data, Tag}) -> - case aes_gcm_decrypt(Key, Ivec, AAD, Data, Tag) of - notsup -> erlang:error(notsup); - Return -> Return - end; + aes_gcm_decrypt(Key, Ivec, AAD, Data, Tag); block_decrypt(chacha20_poly1305, Key, Ivec, {AAD, Data, Tag}) -> - case chacha20_poly1305_decrypt(Key, Ivec, AAD, Data, Tag) of - notsup -> erlang:error(notsup); - Return -> Return - end; -block_decrypt(rc2_cbc, Key, Ivec, Data) -> - rc2_cbc_decrypt(Key, Ivec, Data). + chacha20_poly1305_decrypt(Key, Ivec, AAD, Data, Tag). -spec block_encrypt(des_ecb | blowfish_ecb | aes_ecb, Key::iodata(), Data::iodata()) -> binary(). -block_encrypt(des_ecb, Key, Data) -> - des_ecb_encrypt(Key, Data); -block_encrypt(blowfish_ecb, Key, Data) -> - blowfish_ecb_encrypt(Key, Data); -block_encrypt(aes_ecb, Key, Data) -> - aes_ecb_encrypt(Key, Data). +block_encrypt(Type, Key, Data) -> + block_crypt_nif(Type, Key, Data, true). -spec block_decrypt(des_ecb | blowfish_ecb | aes_ecb, Key::iodata(), Data::iodata()) -> binary(). -block_decrypt(des_ecb, Key, Data) -> - des_ecb_decrypt(Key, Data); -block_decrypt(blowfish_ecb, Key, Data) -> - blowfish_ecb_decrypt(Key, Data); -block_decrypt(aes_ecb, Key, Data) -> - aes_ecb_decrypt(Key, Data). +block_decrypt(Type, Key, Data) -> + block_crypt_nif(Type, Key, Data, false). -spec next_iv(des_cbc | des3_cbc | aes_cbc | aes_ige, Data::iodata()) -> binary(). -next_iv(des_cbc, Data) -> - des_cbc_ivec(Data); -next_iv(des3_cbc, Data) -> - des_cbc_ivec(Data); -next_iv(aes_cbc, Data) -> - aes_cbc_ivec(Data); -next_iv(aes_ige, Data) -> - aes_ige_ivec(Data). +next_iv(Type, Data) when is_binary(Data) -> + IVecSize = case Type of + des_cbc -> 8; + des3_cbc -> 8; + aes_cbc -> 16; + aes_ige -> 32 + end, + {_, IVec} = split_binary(Data, size(Data) - IVecSize), + IVec; +next_iv(Type, Data) when is_list(Data) -> + next_iv(Type, list_to_binary(Data)). -spec next_iv(des_cfb, Data::iodata(), Ivec::binary()) -> binary(). -next_iv(des_cfb, Data, Ivec) -> - des_cfb_ivec(Ivec, Data); +next_iv(des_cfb, Data, IVec) -> + IVecAndData = list_to_binary([IVec, Data]), + {_, NewIVec} = split_binary(IVecAndData, byte_size(IVecAndData) - 8), + NewIVec; next_iv(Type, Data, _Ivec) -> next_iv(Type, Data). stream_init(aes_ctr, Key, Ivec) -> {aes_ctr, aes_ctr_stream_init(Key, Ivec)}. stream_init(rc4, Key) -> - {rc4, rc4_set_key(Key)}. + {rc4, notsup_to_error(rc4_set_key(Key))}. stream_encrypt(State, Data0) -> Data = iolist_to_binary(Data0), @@ -485,35 +448,31 @@ verify(dss, none, Data, Signature, Key) when is_binary(Data) -> verify(dss, sha, {digest, Data}, Signature, Key); verify(Alg, Type, Data, Signature, Key) when is_binary(Data) -> verify(Alg, Type, {digest, hash(Type, Data)}, Signature, Key); -verify(dss, Type, Data, Signature, Key) -> - dss_verify_nif(Type, Data, Signature, map_ensure_int_as_bin(Key)); -verify(rsa, Type, DataOrDigest, Signature, Key) -> - case rsa_verify_nif(Type, DataOrDigest, Signature, map_ensure_int_as_bin(Key)) of - notsup -> erlang:error(notsup); - Bool -> Bool - end; -verify(ecdsa, Type, DataOrDigest, Signature, [Key, Curve]) -> - case ecdsa_verify_nif(Type, DataOrDigest, Signature, nif_curve_params(Curve), ensure_int_as_bin(Key)) of - notsup -> erlang:error(notsup); - Bool -> Bool - end. +verify(dss, Type, {digest, Digest}, Signature, Key) -> + dss_verify_nif(Type, Digest, Signature, map_ensure_int_as_bin(Key)); +verify(rsa, Type, {digest, Digest}, Signature, Key) -> + notsup_to_error( + rsa_verify_nif(Type, Digest, Signature, map_ensure_int_as_bin(Key))); +verify(ecdsa, Type, {digest, Digest}, Signature, [Key, Curve]) -> + notsup_to_error( + ecdsa_verify_nif(Type, Digest, Signature, nif_curve_params(Curve), ensure_int_as_bin(Key))). sign(dss, none, Data, Key) when is_binary(Data) -> sign(dss, sha, {digest, Data}, Key); sign(Alg, Type, Data, Key) when is_binary(Data) -> sign(Alg, Type, {digest, hash(Type, Data)}, Key); -sign(rsa, Type, DataOrDigest, Key) -> - case rsa_sign_nif(Type, DataOrDigest, map_ensure_int_as_bin(Key)) of - error -> erlang:error(badkey, [Type,DataOrDigest,Key]); +sign(rsa, Type, {digest, Digest}, Key) -> + case rsa_sign_nif(Type, Digest, map_ensure_int_as_bin(Key)) of + error -> erlang:error(badkey, [Type,Digest,Key]); Sign -> Sign end; -sign(dss, Type, DataOrDigest, Key) -> - case dss_sign_nif(Type, DataOrDigest, map_ensure_int_as_bin(Key)) of - error -> erlang:error(badkey, [DataOrDigest, Key]); +sign(dss, Type, {digest, Digest}, Key) -> + case dss_sign_nif(Type, Digest, map_ensure_int_as_bin(Key)) of + error -> erlang:error(badkey, [Digest, Key]); Sign -> Sign end; -sign(ecdsa, Type, DataOrDigest, [Key, Curve]) -> - case ecdsa_sign_nif(Type, DataOrDigest, nif_curve_params(Curve), ensure_int_as_bin(Key)) of - error -> erlang:error(badkey, [Type,DataOrDigest,Key]); +sign(ecdsa, Type, {digest, Digest}, [Key, Curve]) -> + case ecdsa_sign_nif(Type, Digest, nif_curve_params(Curve), ensure_int_as_bin(Key)) of + error -> erlang:error(badkey, [Type,Digest,Key]); Sign -> Sign end. @@ -618,8 +577,9 @@ compute_key(srp, HostPublic, {UserPublic, UserPrivate}, HostPubBin, Prime); [S] -> S end, + notsup_to_error( srp_user_secret_nif(ensure_int_as_bin(UserPrivate), Scrambler, HostPubBin, - Multiplier, Generator, DerivedKey, Prime); + Multiplier, Generator, DerivedKey, Prime)); compute_key(srp, UserPublic, {HostPublic, HostPrivate}, {host,[Verifier, Prime, Version | ScramblerArg]}) when @@ -631,8 +591,9 @@ compute_key(srp, UserPublic, {HostPublic, HostPrivate}, [] -> srp_scrambler(Version, UserPubBin, ensure_int_as_bin(HostPublic), Prime); [S] -> S end, + notsup_to_error( srp_host_secret_nif(Verifier, ensure_int_as_bin(HostPrivate), Scrambler, - UserPubBin, Prime); + UserPubBin, Prime)); compute_key(ecdh, Others, My, Curve) -> ecdh_compute_key_nif(ensure_int_as_bin(Others), @@ -677,7 +638,8 @@ on_load() -> end end, Lib = filename:join([PrivDir, "lib", LibName]), - Status = case erlang:load_nif(Lib, {?CRYPTO_NIF_VSN,path2bin(Lib)}) of + LibBin = path2bin(Lib), + Status = case erlang:load_nif(Lib, {?CRYPTO_NIF_VSN,LibBin}) of ok -> ok; {error, {load_failed, _}}=Error1 -> ArchLibDir = @@ -689,7 +651,8 @@ on_load() -> [] -> Error1; _ -> ArchLib = filename:join([ArchLibDir, LibName]), - erlang:load_nif(ArchLib, {?CRYPTO_NIF_VSN,path2bin(ArchLib)}) + ArchBin = path2bin(ArchLib), + erlang:load_nif(ArchLib, {?CRYPTO_NIF_VSN,ArchBin}) end; Error1 -> Error1 end, @@ -714,46 +677,30 @@ path2bin(Path) when is_list(Path) -> max_bytes() -> ?MAX_BYTES_TO_NIF. +notsup_to_error(notsup) -> + erlang:error(notsup); +notsup_to_error(Other) -> + Other. + %% HASH -------------------------------------------------------------------- -hash(Hash, Data, Size, Max, initial) when Size =< Max -> - do_hash(Hash, Data); -hash(State0, Data, Size, Max, continue) when Size =< Max -> - State = do_hash_update(State0, Data), - hash_final(State); -hash(Hash, Data, _Size, Max, initial) -> - <<Increment:Max/binary, Rest/binary>> = Data, +hash(Hash, Data, Size, Max) when Size =< Max -> + notsup_to_error(hash_nif(Hash, Data)); +hash(Hash, Data, Size, Max) -> State0 = hash_init(Hash), - State = do_hash_update(State0, Increment), - hash(State, Rest, erlang:byte_size(Rest), max_bytes(), continue); -hash(State0, Data, _Size, MaxByts, continue) -> - <<Increment:MaxByts/binary, Rest/binary>> = Data, - State = do_hash_update(State0, Increment), - hash(State, Rest, erlang:byte_size(Rest), max_bytes(), continue). - -do_hash(md5, Data) -> md5(Data); -do_hash(md4, Data) -> md4(Data); -do_hash(sha, Data) -> sha(Data); -do_hash(ripemd160, Data) -> ripemd160(Data); -do_hash(sha224, Data) -> sha224(Data); -do_hash(sha256, Data) -> sha256(Data); -do_hash(sha384, Data) -> sha384(Data); -do_hash(sha512, Data) -> sha512(Data). + State1 = hash_update(State0, Data, Size, Max), + hash_final(State1). hash_update(State, Data, Size, MaxBytes) when Size =< MaxBytes -> - do_hash_update(State, Data); + notsup_to_error(hash_update_nif(State, Data)); hash_update(State0, Data, _, MaxBytes) -> <<Increment:MaxBytes/binary, Rest/binary>> = Data, - State = do_hash_update(State0, Increment), + State = notsup_to_error(hash_update_nif(State0, Increment)), hash_update(State, Rest, erlang:byte_size(Rest), MaxBytes). -do_hash_update({md5,Context}, Data) -> {md5, md5_update(Context,Data)}; -do_hash_update({md4,Context}, Data) -> {md4, md4_update(Context,Data)}; -do_hash_update({sha,Context}, Data) -> {sha, sha_update(Context,Data)}; -do_hash_update({ripemd160,Context}, Data) -> {ripemd160, ripemd160_update(Context,Data)}; -do_hash_update({sha224,Context}, Data) -> {sha224, sha224_update(Context,Data)}; -do_hash_update({sha256,Context}, Data) -> {sha256, sha256_update(Context,Data)}; -do_hash_update({sha384,Context}, Data) -> {sha384, sha384_update(Context,Data)}; -do_hash_update({sha512,Context}, Data) -> {sha512, sha512_update(Context,Data)}. +hash_nif(_Hash, _Data) -> ?nif_stub. +hash_init_nif(_Hash) -> ?nif_stub. +hash_update_nif(_State, _Data) -> ?nif_stub. +hash_final_nif(_State) -> ?nif_stub. %% @@ -765,10 +712,14 @@ do_hash_update({sha512,Context}, Data) -> {sha512, sha512_update(Context,Data -spec md5_update(binary(), iodata()) -> binary(). -spec md5_final(binary()) -> binary(). -md5(_Data) -> ?nif_stub. -md5_init() -> ?nif_stub. -md5_update(_Context, _Data) -> ?nif_stub. -md5_final(_Context) -> ?nif_stub. +md5(Data) -> + hash(md5, Data). +md5_init() -> + hash_init(md5). +md5_update(Context, Data) -> + hash_update(Context, Data). +md5_final(Context) -> + hash_final(Context). %% %% MD4 @@ -778,24 +729,14 @@ md5_final(_Context) -> ?nif_stub. -spec md4_update(binary(), iodata()) -> binary(). -spec md4_final(binary()) -> binary(). -md4(_Data) -> ?nif_stub. -md4_init() -> ?nif_stub. -md4_update(_Context, _Data) -> ?nif_stub. -md4_final(_Context) -> ?nif_stub. - -%% -%% RIPEMD160 -%% - --spec ripemd160(iodata()) -> binary(). --spec ripemd160_init() -> binary(). --spec ripemd160_update(binary(), iodata()) -> binary(). --spec ripemd160_final(binary()) -> binary(). - -ripemd160(_Data) -> ?nif_stub. -ripemd160_init() -> ?nif_stub. -ripemd160_update(_Context, _Data) -> ?nif_stub. -ripemd160_final(_Context) -> ?nif_stub. +md4(Data) -> + hash(md4, Data). +md4_init() -> + hash_init(md4). +md4_update(Context, Data) -> + hash_update(Context, Data). +md4_final(Context) -> + hash_final(Context). %% %% SHA @@ -805,196 +746,44 @@ ripemd160_final(_Context) -> ?nif_stub. -spec sha_update(binary(), iodata()) -> binary(). -spec sha_final(binary()) -> binary(). -sha(_Data) -> ?nif_stub. -sha_init() -> ?nif_stub. -sha_update(_Context, _Data) -> ?nif_stub. -sha_final(_Context) -> ?nif_stub. - -% -%% SHA224 -%% --spec sha224(iodata()) -> binary(). --spec sha224_init() -> binary(). --spec sha224_update(binary(), iodata()) -> binary(). --spec sha224_final(binary()) -> binary(). - -sha224(Data) -> - case sha224_nif(Data) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha224_init() -> - case sha224_init_nif() of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha224_update(Context, Data) -> - case sha224_update_nif(Context, Data) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha224_final(Context) -> - case sha224_final_nif(Context) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - -sha224_nif(_Data) -> ?nif_stub. -sha224_init_nif() -> ?nif_stub. -sha224_update_nif(_Context, _Data) -> ?nif_stub. -sha224_final_nif(_Context) -> ?nif_stub. - -% -%% SHA256 -%% --spec sha256(iodata()) -> binary(). --spec sha256_init() -> binary(). --spec sha256_update(binary(), iodata()) -> binary(). --spec sha256_final(binary()) -> binary(). - -sha256(Data) -> - case sha256_nif(Data) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha256_init() -> - case sha256_init_nif() of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha256_update(Context, Data) -> - case sha256_update_nif(Context, Data) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha256_final(Context) -> - case sha256_final_nif(Context) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - -sha256_nif(_Data) -> ?nif_stub. -sha256_init_nif() -> ?nif_stub. -sha256_update_nif(_Context, _Data) -> ?nif_stub. -sha256_final_nif(_Context) -> ?nif_stub. - -% -%% SHA384 -%% --spec sha384(iodata()) -> binary(). --spec sha384_init() -> binary(). --spec sha384_update(binary(), iodata()) -> binary(). --spec sha384_final(binary()) -> binary(). - -sha384(Data) -> - case sha384_nif(Data) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha384_init() -> - case sha384_init_nif() of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha384_update(Context, Data) -> - case sha384_update_nif(Context, Data) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha384_final(Context) -> - case sha384_final_nif(Context) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - -sha384_nif(_Data) -> ?nif_stub. -sha384_init_nif() -> ?nif_stub. -sha384_update_nif(_Context, _Data) -> ?nif_stub. -sha384_final_nif(_Context) -> ?nif_stub. - -% -%% SHA512 -%% --spec sha512(iodata()) -> binary(). --spec sha512_init() -> binary(). --spec sha512_update(binary(), iodata()) -> binary(). --spec sha512_final(binary()) -> binary(). - -sha512(Data) -> - case sha512_nif(Data) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha512_init() -> - case sha512_init_nif() of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha512_update(Context, Data) -> - case sha512_update_nif(Context, Data) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. -sha512_final(Context) -> - case sha512_final_nif(Context) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - -sha512_nif(_Data) -> ?nif_stub. -sha512_init_nif() -> ?nif_stub. -sha512_update_nif(_Context, _Data) -> ?nif_stub. -sha512_final_nif(_Context) -> ?nif_stub. +sha(Data) -> + hash(sha, Data). +sha_init() -> + hash_init(sha). +sha_update(Context, Data) -> + hash_update(Context, Data). +sha_final(Context) -> + hash_final(Context). %% HMAC -------------------------------------------------------------------- -hmac(Type, Key, Data, MacSize, Size, MaxBytes, initial) when Size =< MaxBytes -> +hmac(Type, Key, Data, MacSize, Size, MaxBytes) when Size =< MaxBytes -> + notsup_to_error( case MacSize of - undefined -> - do_hmac(Type, Key, Data); - _ -> - do_hmac(Type, Key, Data, MacSize) - end; -hmac(Type, Key, Data, MacSize, _, MaxBytes, initial) -> - <<Increment:MaxBytes/binary, Rest/binary>> = Data, + undefined -> hmac_nif(Type, Key, Data); + _ -> hmac_nif(Type, Key, Data, MacSize) + end); +hmac(Type, Key, Data, MacSize, Size, MaxBytes) -> State0 = hmac_init(Type, Key), - State = hmac_update(State0, Increment), - hmac(State, Rest, MacSize, erlang:byte_size(Rest), max_bytes(), continue). -hmac(State0, Data, MacSize, Size, MaxBytes, continue) when Size =< MaxBytes -> - State = hmac_update(State0, Data), + State1 = hmac_update(State0, Data, Size, MaxBytes), case MacSize of - undefined -> - hmac_final(State); - _ -> - hmac_final_n(State, MacSize) - end; -hmac(State0, Data, MacSize, _Size, MaxBytes, continue) -> - <<Increment:MaxBytes/binary, Rest/binary>> = Data, - State = hmac_update(State0, Increment), - hmac(State, Rest, MacSize, erlang:byte_size(Rest), max_bytes(), continue). + undefined -> hmac_final(State1); + _ -> hmac_final_n(State1, MacSize) + end. hmac_update(State, Data, Size, MaxBytes) when Size =< MaxBytes -> - do_hmac_update(State, Data); + notsup_to_error(hmac_update_nif(State, Data)); hmac_update(State0, Data, _, MaxBytes) -> <<Increment:MaxBytes/binary, Rest/binary>> = Data, - State = do_hmac_update(State0, Increment), + State = notsup_to_error(hmac_update_nif(State0, Increment)), hmac_update(State, Rest, erlang:byte_size(Rest), MaxBytes). -do_hmac(md5, Key, Data) -> md5_mac(Key, Data); -do_hmac(sha, Key, Data) -> sha_mac(Key, Data); -do_hmac(sha224, Key, Data) -> sha224_mac(Key, Data); -do_hmac(sha256, Key, Data) -> sha256_mac(Key, Data); -do_hmac(sha384, Key, Data) -> sha384_mac(Key, Data); -do_hmac(sha512, Key, Data) -> sha512_mac(Key, Data). - -do_hmac(md5, Key, Data, Size) -> md5_mac_n(Key, Data, Size); -do_hmac(sha, Key, Data, Size) -> sha_mac_n(Key, Data, Size); -do_hmac(sha224, Key, Data, Size) -> sha224_mac(Key, Data, Size); -do_hmac(sha256, Key, Data, Size) -> sha256_mac(Key, Data, Size); -do_hmac(sha384, Key, Data, Size) -> sha384_mac(Key, Data, Size); -do_hmac(sha512, Key, Data, Size) -> sha512_mac(Key, Data, Size). - -do_hmac_update(_Context, _Data) -> ? nif_stub. +hmac_nif(_Type, _Key, _Data) -> ?nif_stub. +hmac_nif(_Type, _Key, _Data, _MacSize) -> ?nif_stub. +hmac_init_nif(_Type, _Key) -> ?nif_stub. +hmac_update_nif(_Context, _Data) -> ?nif_stub. +hmac_final_nif(_Context) -> ?nif_stub. +hmac_final_nif(_Context, _MacSize) -> ?nif_stub. %% %% MD5_MAC @@ -1002,97 +791,37 @@ do_hmac_update(_Context, _Data) -> ? nif_stub. -spec md5_mac(iodata(), iodata()) -> binary(). -spec md5_mac_96(iodata(), iodata()) -> binary(). -md5_mac(Key, Data) -> - md5_mac_n(Key,Data,16). +md5_mac(Key, Data) -> hmac(md5, Key, Data). -md5_mac_96(Key, Data) -> - md5_mac_n(Key,Data,12). +md5_mac_96(Key, Data) -> hmac(md5, Key, Data, 12). -md5_mac_n(_Key,_Data,_MacSz) -> ?nif_stub. - %% %% SHA_MAC %% -spec sha_mac(iodata(), iodata()) -> binary(). -spec sha_mac_96(iodata(), iodata()) -> binary(). -sha_mac(Key, Data) -> - sha_mac_n(Key,Data,20). - -sha_mac(Key, Data, Size) -> - sha_mac_n(Key, Data, Size). - -sha_mac_96(Key, Data) -> - sha_mac_n(Key,Data,12). - -sha_mac_n(_Key,_Data,_MacSz) -> ?nif_stub. - -%% -%% SHA224_MAC -%% --spec sha224_mac(iodata(), iodata()) -> binary(). - -sha224_mac(Key, Data) -> - sha224_mac(Key, Data, 224 div 8). - -sha224_mac(Key, Data, Size) -> - case sha224_mac_nif(Key, Data, Size) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - -sha224_mac_nif(_Key,_Data,_MacSz) -> ?nif_stub. - -%% -%% SHA256_MAC -%% --spec sha256_mac(iodata(), iodata()) -> binary(). - -sha256_mac(Key, Data) -> - sha256_mac(Key, Data, 256 div 8). - -sha256_mac(Key, Data, Size) -> - case sha256_mac_nif(Key, Data, Size) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - -sha256_mac_nif(_Key,_Data,_MacSz) -> ?nif_stub. - -%% -%% SHA384_MAC -%% --spec sha384_mac(iodata(), iodata()) -> binary(). - -sha384_mac(Key, Data) -> - sha384_mac(Key, Data, 384 div 8). +sha_mac(Key, Data) -> hmac(sha, Key, Data). -sha384_mac(Key, Data, Size) -> - case sha384_mac_nif(Key, Data, Size) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - -sha384_mac_nif(_Key,_Data,_MacSz) -> ?nif_stub. +sha_mac(Key, Data, Size) -> hmac(sha, Key, Data, Size). -%% -%% SHA512_MAC -%% --spec sha512_mac(iodata(), iodata()) -> binary(). +sha_mac_96(Key, Data) -> hmac(sha, Key, Data, 12). -sha512_mac(Key, Data) -> - sha512_mac(Key, Data, 512 div 8). +%% CIPHERS -------------------------------------------------------------------- -sha512_mac(Key, Data, MacSz) -> - case sha512_mac_nif(Key, Data, MacSz) of - notsup -> erlang:error(notsup); - Bin -> Bin +block_crypt_nif(_Type, _Key, _Ivec, _Text, _IsEncrypt) -> ?nif_stub. +block_crypt_nif(_Type, _Key, _Text, _IsEncrypt) -> ?nif_stub. + +check_des3_key(Key) -> + case lists:map(fun erlang:iolist_to_binary/1, Key) of + ValidKey = [B1, B2, B3] when byte_size(B1) =:= 8, + byte_size(B2) =:= 8, + byte_size(B3) =:= 8 -> + ValidKey; + _ -> + error(badarg) end. -sha512_mac_nif(_Key,_Data,_MacSz) -> ?nif_stub. - -%% CIPHERS -------------------------------------------------------------------- - %% %% DES - in electronic codebook mode (ECB) %% @@ -1100,10 +829,9 @@ sha512_mac_nif(_Key,_Data,_MacSz) -> ?nif_stub. -spec des_ecb_decrypt(iodata(), iodata()) -> binary(). des_ecb_encrypt(Key, Data) -> - des_ecb_crypt(Key, Data, true). + block_encrypt(des_ecb, Key, Data). des_ecb_decrypt(Key, Data) -> - des_ecb_crypt(Key, Data, false). -des_ecb_crypt(_Key, _Data, _IsEncrypt) -> ?nif_stub. + block_decrypt(des_ecb, Key, Data). %% %% DES3 - in cipher block chaining mode (CBC) @@ -1114,16 +842,14 @@ des_ecb_crypt(_Key, _Data, _IsEncrypt) -> ?nif_stub. binary(). des3_cbc_encrypt(Key1, Key2, Key3, IVec, Data) -> - des_ede3_cbc_crypt(Key1, Key2, Key3, IVec, Data, true). + block_encrypt(des3_cbc, [Key1, Key2, Key3], IVec, Data). des_ede3_cbc_encrypt(Key1, Key2, Key3, IVec, Data) -> - des_ede3_cbc_crypt(Key1, Key2, Key3, IVec, Data, true). + block_encrypt(des_ede3, [Key1, Key2, Key3], IVec, Data). des3_cbc_decrypt(Key1, Key2, Key3, IVec, Data) -> - des_ede3_cbc_crypt(Key1, Key2, Key3, IVec, Data, false). + block_decrypt(des3_cbc, [Key1, Key2, Key3], IVec, Data). des_ede3_cbc_decrypt(Key1, Key2, Key3, IVec, Data) -> - des_ede3_cbc_crypt(Key1, Key2, Key3, IVec, Data, false). - -des_ede3_cbc_crypt(_Key1, _Key2, _Key3, _IVec, _Data, _IsEncrypt) -> ?nif_stub. + block_decrypt(des_ede3, [Key1, Key2, Key3], IVec, Data). %% %% DES3 - in 8-bits cipher feedback mode (CFB) @@ -1134,18 +860,10 @@ des_ede3_cbc_crypt(_Key1, _Key2, _Key3, _IVec, _Data, _IsEncrypt) -> ?nif_stub. binary(). des3_cfb_encrypt(Key1, Key2, Key3, IVec, Data) -> - des_ede3_cfb_crypt(Key1, Key2, Key3, IVec, Data, true). + block_encrypt(des3_cbf, [Key1, Key2, Key3], IVec, Data). des3_cfb_decrypt(Key1, Key2, Key3, IVec, Data) -> - des_ede3_cfb_crypt(Key1, Key2, Key3, IVec, Data, false). - -des_ede3_cfb_crypt(Key1, Key2, Key3, IVec, Data, IsEncrypt) -> - case des_ede3_cfb_crypt_nif(Key1,Key2,Key3,IVec,Data,IsEncrypt) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - -des_ede3_cfb_crypt_nif(_Key1, _Key2, _Key3, _IVec, _Data, _IsEncrypt) -> ?nif_stub. + block_decrypt(des3_cbf, [Key1, Key2, Key3], IVec, Data). %% %% Blowfish @@ -1159,62 +877,38 @@ des_ede3_cfb_crypt_nif(_Key1, _Key2, _Key3, _IVec, _Data, _IsEncrypt) -> ?nif_st -spec blowfish_ofb64_encrypt(iodata(), binary(), iodata()) -> binary(). blowfish_ecb_encrypt(Key, Data) -> - bf_ecb_crypt(Key,Data, true). + block_encrypt(blowfish_ecb, Key, Data). blowfish_ecb_decrypt(Key, Data) -> - bf_ecb_crypt(Key,Data, false). - -bf_ecb_crypt(_Key,_Data,_IsEncrypt) -> ?nif_stub. + block_decrypt(blowfish_ecb, Key, Data). blowfish_cbc_encrypt(Key, IVec, Data) -> - bf_cbc_crypt(Key,IVec,Data,true). + block_encrypt(blowfish_cbc, Key, IVec, Data). blowfish_cbc_decrypt(Key, IVec, Data) -> - bf_cbc_crypt(Key,IVec,Data,false). - -bf_cbc_crypt(_Key,_IVec,_Data,_IsEncrypt) -> ?nif_stub. + block_decrypt(blowfish_cbc, Key, IVec, Data). blowfish_cfb64_encrypt(Key, IVec, Data) -> - bf_cfb64_crypt(Key, IVec, Data, true). + block_encrypt(blowfish_cfb64, Key, IVec, Data). blowfish_cfb64_decrypt(Key, IVec, Data) -> - bf_cfb64_crypt(Key, IVec, Data, false). - -bf_cfb64_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. - -blowfish_ofb64_decrypt(Key, Ivec, Data) -> - blowfish_ofb64_encrypt(Key, Ivec, Data). + block_decrypt(blowfish_cfb64, Key, IVec, Data). -blowfish_ofb64_encrypt(_Key, _IVec, _Data) -> ?nif_stub. +blowfish_ofb64_encrypt(Key, IVec, Data) -> + block_encrypt(blowfish_ofb64, Key, IVec, Data). %% -%% AES in cipher feedback mode (CFB) - 8 bit shift -%% --spec aes_cfb_8_encrypt(iodata(), binary(), iodata()) -> binary(). --spec aes_cfb_8_decrypt(iodata(), binary(), iodata()) -> binary(). - -aes_cfb_8_encrypt(Key, IVec, Data) -> - aes_cfb_8_crypt(Key, IVec, Data, true). - -aes_cfb_8_decrypt(Key, IVec, Data) -> - aes_cfb_8_crypt(Key, IVec, Data, false). - -aes_cfb_8_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. - -%% %% AES in cipher feedback mode (CFB) - 128 bit shift %% -spec aes_cfb_128_encrypt(iodata(), binary(), iodata()) -> binary(). -spec aes_cfb_128_decrypt(iodata(), binary(), iodata()) -> binary(). aes_cfb_128_encrypt(Key, IVec, Data) -> - aes_cfb_128_crypt(Key, IVec, Data, true). + block_encrypt(aes_cfb128, Key, IVec, Data). aes_cfb_128_decrypt(Key, IVec, Data) -> - aes_cfb_128_crypt(Key, IVec, Data, false). - -aes_cfb_128_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. + block_decrypt(aes_cfb128, Key, IVec, Data). %% %% AES - in Galois/Counter Mode (GCM) @@ -1235,12 +929,10 @@ chacha20_poly1305_decrypt(_Key, _Ivec, _AAD, _In, _Tag) -> ?nif_stub. -spec des_cbc_decrypt(iodata(), binary(), iodata()) -> binary(). des_cbc_encrypt(Key, IVec, Data) -> - des_cbc_crypt(Key, IVec, Data, true). + block_encrypt(des_cbc, Key, IVec, Data). des_cbc_decrypt(Key, IVec, Data) -> - des_cbc_crypt(Key, IVec, Data, false). - -des_cbc_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. + block_decrypt(des_cbc, Key, IVec, Data). %% %% dec_cbc_ivec(Data) -> binary() @@ -1250,11 +942,8 @@ des_cbc_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. %% -spec des_cbc_ivec(iodata()) -> binary(). -des_cbc_ivec(Data) when is_binary(Data) -> - {_, IVec} = split_binary(Data, size(Data) - 8), - IVec; -des_cbc_ivec(Data) when is_list(Data) -> - des_cbc_ivec(list_to_binary(Data)). +des_cbc_ivec(Data) -> + next_iv(des_cbc, Data). %% %% DES - in 8-bits cipher feedback mode (CFB) @@ -1263,12 +952,10 @@ des_cbc_ivec(Data) when is_list(Data) -> -spec des_cfb_decrypt(iodata(), binary(), iodata()) -> binary(). des_cfb_encrypt(Key, IVec, Data) -> - des_cfb_crypt(Key, IVec, Data, true). + block_encrypt(des_cfb, Key, IVec, Data). des_cfb_decrypt(Key, IVec, Data) -> - des_cfb_crypt(Key, IVec, Data, false). - -des_cfb_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. + block_decrypt(des_cfb, Key, IVec, Data). %% %% dec_cfb_ivec(IVec, Data) -> binary() @@ -1280,9 +967,7 @@ des_cfb_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. -spec des_cfb_ivec(iodata(), iodata()) -> binary(). des_cfb_ivec(IVec, Data) -> - IVecAndData = list_to_binary([IVec, Data]), - {_, NewIVec} = split_binary(IVecAndData, byte_size(IVecAndData) - 8), - NewIVec. + next_iv(des_cfb, Data, IVec). %% @@ -1298,18 +983,16 @@ des_cfb_ivec(IVec, Data) -> binary(). aes_cbc_128_encrypt(Key, IVec, Data) -> - aes_cbc_crypt(Key, IVec, Data, true). + block_encrypt(aes_cbc128, Key, IVec, Data). aes_cbc_128_decrypt(Key, IVec, Data) -> - aes_cbc_crypt(Key, IVec, Data, false). + block_decrypt(aes_cbc128, Key, IVec, Data). aes_cbc_256_encrypt(Key, IVec, Data) -> - aes_cbc_crypt(Key, IVec, Data, true). + block_encrypt(aes_cbc256, Key, IVec, Data). aes_cbc_256_decrypt(Key, IVec, Data) -> - aes_cbc_crypt(Key, IVec, Data, false). - -aes_cbc_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. + block_decrypt(aes_cbc256, Key, IVec, Data). %% %% aes_cbc_ivec(Data) -> binary() @@ -1318,47 +1001,15 @@ aes_cbc_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. %% aes_cbc_*_[encrypt|decrypt]. %% IVec size: 16 bytes %% -aes_cbc_ivec(Data) when is_binary(Data) -> - {_, IVec} = split_binary(Data, size(Data) - 16), - IVec; -aes_cbc_ivec(Data) when is_list(Data) -> - aes_cbc_ivec(list_to_binary(Data)). - +aes_cbc_ivec(Data) -> + next_iv(aes_cbc, Data). %% %% AES - with 256 bit key in infinite garble extension mode (IGE) %% --spec aes_ige_256_decrypt(iodata(), binary(), iodata()) -> - binary(). - -aes_ige_256_encrypt(Key, IVec, Data) -> - aes_ige_crypt(Key, IVec, Data, true). - -aes_ige_256_decrypt(Key, IVec, Data) -> - aes_ige_crypt(Key, IVec, Data, false). - -aes_ige_crypt(Key, IVec, Data, IsEncrypt) -> - case aes_ige_crypt_nif(Key,IVec,Data,IsEncrypt) of - notsup -> erlang:error(notsup); - Bin -> Bin - end. - aes_ige_crypt_nif(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. -%% -%% aes_ige_ivec(Data) -> binary() -%% -%% Returns the IVec to be used in the next iteration of -%% aes_ige_*_[encrypt|decrypt]. -%% IVec size: 32 bytes -%% -aes_ige_ivec(Data) when is_binary(Data) -> - {_, IVec} = split_binary(Data, size(Data) - 32), - IVec; -aes_ige_ivec(Data) when is_list(Data) -> - aes_ige_ivec(list_to_binary(Data)). - %% Stream ciphers -------------------------------------------------------------------- @@ -1397,22 +1048,11 @@ do_stream_decrypt({rc4, State0}, Data) -> aes_ctr_encrypt(_Key, _IVec, _Data) -> ?nif_stub. aes_ctr_decrypt(_Key, _IVec, _Cipher) -> ?nif_stub. -%% -%% AES - in electronic codebook mode (ECB) -%% -aes_ecb_encrypt(Key, Data) -> - aes_ecb_crypt(Key, Data, true). - -aes_ecb_decrypt(Key, Data) -> - aes_ecb_crypt(Key, Data, false). - -aes_ecb_crypt(_Key, __Data, _IsEncrypt) -> ?nif_stub. - %% %% AES - in counter mode (CTR) with state maintained for multi-call streaming %% --type ctr_state() :: { iodata(), binary(), binary(), integer() }. +-type ctr_state() :: { iodata(), binary(), binary(), integer() } | binary(). -spec aes_ctr_stream_init(iodata(), binary()) -> ctr_state(). -spec aes_ctr_stream_encrypt(ctr_state(), binary()) -> @@ -1420,10 +1060,9 @@ aes_ecb_crypt(_Key, __Data, _IsEncrypt) -> ?nif_stub. -spec aes_ctr_stream_decrypt(ctr_state(), binary()) -> { ctr_state(), binary() }. -aes_ctr_stream_init(Key, IVec) -> - {Key, IVec, << 0:128 >>, 0}. -aes_ctr_stream_encrypt({_Key, _IVec, _ECount, _Num}=_State, _Data) -> ?nif_stub. -aes_ctr_stream_decrypt({_Key, _IVec, _ECount, _Num}=_State, _Cipher) -> ?nif_stub. +aes_ctr_stream_init(_Key, _IVec) -> ?nif_stub. +aes_ctr_stream_encrypt(_State, _Data) -> ?nif_stub. +aes_ctr_stream_decrypt(_State, _Cipher) -> ?nif_stub. %% %% RC4 - symmetric stream cipher @@ -1438,21 +1077,19 @@ rc4_encrypt_with_state(_State, _Data) -> ?nif_stub. %% RC2 block cipher rc2_cbc_encrypt(Key, IVec, Data) -> - rc2_cbc_crypt(Key,IVec,Data,true). + block_encrypt(rc2_cbc, Key, IVec, Data). rc2_cbc_decrypt(Key, IVec, Data) -> - rc2_cbc_crypt(Key,IVec,Data,false). - -rc2_cbc_crypt(_Key, _IVec, _Data, _IsEncrypt) -> ?nif_stub. + block_decrypt(rc2_cbc, Key, IVec, Data). %% %% RC2 - 40 bits block cipher - Backwards compatibility not documented. %% rc2_40_cbc_encrypt(Key, IVec, Data) when erlang:byte_size(Key) == 5 -> - rc2_cbc_crypt(Key,IVec,Data,true). + block_encrypt(rc2_cbc, Key, IVec, Data). rc2_40_cbc_decrypt(Key, IVec, Data) when erlang:byte_size(Key) == 5 -> - rc2_cbc_crypt(Key,IVec,Data,false). + block_decrypt(rc2_cbc, Key, IVec, Data). %% Secure remote password ------------------------------------------------------------------- @@ -1470,16 +1107,18 @@ host_srp_gen_key(Private, Verifier, Generator, Prime, Version) -> case srp_value_B_nif(Multiplier, Verifier, Generator, Private, Prime) of error -> error; + notsup -> + erlang:error(notsup); Public -> {Public, Private} end. srp_multiplier('6a', Generator, Prime) -> %% k = SHA1(N | PAD(g)) from http://srp.stanford.edu/design.html - C0 = sha_init(), - C1 = sha_update(C0, Prime), - C2 = sha_update(C1, srp_pad_to(erlang:byte_size(Prime), Generator)), - sha_final(C2); + C0 = hash_init(sha), + C1 = hash_update(C0, Prime), + C2 = hash_update(C1, srp_pad_to(erlang:byte_size(Prime), Generator)), + hash_final(C2); srp_multiplier('6', _, _) -> <<3/integer>>; srp_multiplier('3', _, _) -> @@ -1488,10 +1127,10 @@ srp_multiplier('3', _, _) -> srp_scrambler(Version, UserPublic, HostPublic, Prime) when Version == '6'; Version == '6a'-> %% SHA1(PAD(A) | PAD(B)) from http://srp.stanford.edu/design.html PadLength = erlang:byte_size(Prime), - C0 = sha_init(), - C1 = sha_update(C0, srp_pad_to(PadLength, UserPublic)), - C2 = sha_update(C1, srp_pad_to(PadLength, HostPublic)), - sha_final(C2); + C0 = hash_init(sha), + C1 = hash_update(C0, srp_pad_to(PadLength, UserPublic)), + C2 = hash_update(C1, srp_pad_to(PadLength, HostPublic)), + hash_final(C2); srp_scrambler('3', _, HostPublic, _Prime) -> %% The parameter u is a 32-bit unsigned integer which takes its value %% from the first 32 bits of the SHA1 hash of B, MSB first. @@ -1515,13 +1154,13 @@ srp_value_B_nif(_Multiplier, _Verifier, _Generator, _Exponent, _Prime) -> ?nif_s %% Digital signatures -------------------------------------------------------------------- -rsa_sign_nif(_Type,_Data,_Key) -> ?nif_stub. -dss_sign_nif(_Type,_Data,_Key) -> ?nif_stub. -ecdsa_sign_nif(_Type, _DataOrDigest, _Curve, _Key) -> ?nif_stub. +rsa_sign_nif(_Type,_Digest,_Key) -> ?nif_stub. +dss_sign_nif(_Type,_Digest,_Key) -> ?nif_stub. +ecdsa_sign_nif(_Type, _Digest, _Curve, _Key) -> ?nif_stub. -dss_verify_nif(_Type, _Data, _Signature, _Key) -> ?nif_stub. -rsa_verify_nif(_Type, _Data, _Signature, _Key) -> ?nif_stub. -ecdsa_verify_nif(_Type, _DataOrDigest, _Signature, _Curve, _Key) -> ?nif_stub. +dss_verify_nif(_Type, _Digest, _Signature, _Key) -> ?nif_stub. +rsa_verify_nif(_Type, _Digest, _Signature, _Key) -> ?nif_stub. +ecdsa_verify_nif(_Type, _Digest, _Signature, _Curve, _Key) -> ?nif_stub. %% Public Keys -------------------------------------------------------------------- %% DH Diffie-Hellman functions diff --git a/lib/diameter/src/base/diameter_traffic.erl b/lib/diameter/src/base/diameter_traffic.erl index 9e14860693..07f39c562f 100644 --- a/lib/diameter/src/base/diameter_traffic.erl +++ b/lib/diameter/src/base/diameter_traffic.erl @@ -169,7 +169,7 @@ incr_error(Dir, Id, TPid, _) -> incr_error(Dir, Id, TPid) -> incr(TPid, {Id, Dir, error}). - + %% --------------------------------------------------------------------------- %% incr_rc/4 %% --------------------------------------------------------------------------- @@ -1485,16 +1485,12 @@ send_R(Pkt0, caps = Caps, packet = Pkt0}, - try - incr(send, Pkt, TPid, AppDict), - TRef = send_request(TPid, Pkt, Req, SvcName, Timeout), - Pid ! Ref, %% tell caller a send has been attempted - handle_answer(SvcName, - App, - recv_A(Timeout, SvcName, App, Opts, {TRef, Req})) - after - erase_requests(Pkt) - end. + incr(send, Pkt, TPid, AppDict), + TRef = send_request(TPid, Pkt, Req, SvcName, Timeout), + Pid ! Ref, %% tell caller a send has been attempted + handle_answer(SvcName, + App, + recv_A(Timeout, SvcName, App, Opts, {TRef, Req})). %% recv_A/5 @@ -1694,9 +1690,18 @@ encode(_, _, #diameter_packet{} = Pkt) -> send_request(TPid, #diameter_packet{bin = Bin} = Pkt, Req, _SvcName, Timeout) when node() == node(TPid) -> - %% Store the outgoing request before sending to avoid a race with - %% reply reception. - TRef = store_request(TPid, Bin, Req, Timeout), + Seqs = diameter_codec:sequence_numbers(Bin), + TRef = erlang:start_timer(Timeout, self(), TPid), + Entry = {Seqs, Req, TRef}, + + %% Ensure that request table is cleaned even if we receive an exit + %% signal. An alternative would be to simply trap exits, but + %% callbacks are applied in this process, and these could possibly + %% be expecting the prevailing behaviour. + Self = self(), + spawn(fun() -> diameter_lib:wait([Self]), erase_request(Entry) end), + + store_request(Entry, TPid), send(TPid, Pkt), TRef; @@ -1711,31 +1716,21 @@ send_request(TPid, #diameter_packet{} = Pkt, Req, SvcName, Timeout) -> %% send/1 send({TPid, Pkt, #request{handler = Pid} = Req0, SvcName, Timeout, TRef}) -> - Seqs = diameter_codec:sequence_numbers(Pkt), Req = Req0#request{handler = self()}, - Ref = send_request(TPid, Pkt, Req, SvcName, Timeout), - - try - recv(TPid, Pid, TRef, Ref) - after - %% Remove only the entry for this specific send since a resend - %% from the originating node can pick another transport on - %% this one. - ets:delete_object(?REQUEST_TABLE, {Seqs, Req, Ref}) - end. + recv(TPid, Pid, TRef, send_request(TPid, Pkt, Req, SvcName, Timeout)). %% recv/4 %% %% Relay an answer from a remote node. -recv(TPid, Pid, TRef, Ref) -> +recv(TPid, Pid, TRef, LocalTRef) -> receive {answer, _, _, _, _} = A -> Pid ! A; - {failover = T, Ref} -> + {failover = T, LocalTRef} -> Pid ! {T, TRef}; T -> - exit({timeout, Ref, TPid} = T) + exit({timeout, LocalTRef, TPid} = T) end. %% send/2 @@ -1812,17 +1807,21 @@ resend_request(Pkt0, TRef = send_request(TPid, Pkt, Req, SvcName, Tmo), {TRef, Req}. -%% store_request/4 +%% store_request/2 -store_request(TPid, Bin, Req, Timeout) -> - Seqs = diameter_codec:sequence_numbers(Bin), - TRef = erlang:start_timer(Timeout, self(), TPid), - ets:insert(?REQUEST_TABLE, {Seqs, Req, TRef}), +store_request(T, TPid) -> + ets:insert(?REQUEST_TABLE, T), ets:member(?REQUEST_TABLE, TPid) - orelse (self() ! {failover, TRef}), %% failover/1 may have missed - TRef. + orelse begin + {_Seqs, _Req, TRef} = T, + (self() ! {failover, TRef}) %% failover/1 may have missed + end. %% lookup_request/2 +%% +%% Note the match on both the key and transport pid. The latter is +%% necessary since the same Hop-by-Hop and End-to-End identifiers are +%% reused in the case of retransmission. lookup_request(Msg, TPid) -> Seqs = diameter_codec:sequence_numbers(Msg), @@ -1836,10 +1835,10 @@ lookup_request(Msg, TPid) -> false end. -%% erase_requests/1 +%% erase_request/1 -erase_requests(Pkt) -> - ets:delete(?REQUEST_TABLE, diameter_codec:sequence_numbers(Pkt)). +erase_request(T) -> + ets:delete_object(?REQUEST_TABLE, T). %% match_requests/1 @@ -1862,7 +1861,7 @@ failover(TPid) when is_pid(TPid) -> lists:foreach(fun failover/1, match_requests(TPid)); %% Note that a request process can store its request after failover -%% notifications are sent here: store_request/4 sends the notification +%% notifications are sent here: store_request/2 sends the notification %% in that case. %% Failover as a consequence of request_peer_down/1: inform the diff --git a/lib/diameter/src/diameter.appup.src b/lib/diameter/src/diameter.appup.src index b77043d983..ddde648e08 100644 --- a/lib/diameter/src/diameter.appup.src +++ b/lib/diameter/src/diameter.appup.src @@ -60,7 +60,8 @@ {load_module, diameter_gen_acct_rfc6733}, {load_module, diameter_gen_base_rfc3588}, {load_module, diameter_gen_base_accounting}, - {load_module, diameter_gen_relay}]} + {load_module, diameter_gen_relay}]}, + {"1.11", [{load_module, diameter_traffic}]} %% 18.1 ], [ {"0.9", [{restart_application, diameter}]}, @@ -102,6 +103,7 @@ {load_module, diameter_stats}, {load_module, diameter_watchdog}, {load_module, diameter_peer_fsm}, - {load_module, diameter_codec}]} + {load_module, diameter_codec}]}, + {"1.11", [{load_module, diameter_traffic}]} ] }. diff --git a/lib/diameter/vsn.mk b/lib/diameter/vsn.mk index 041d21b261..7ac4a7adfb 100644 --- a/lib/diameter/vsn.mk +++ b/lib/diameter/vsn.mk @@ -17,5 +17,5 @@ # %CopyrightEnd% APPLICATION = diameter -DIAMETER_VSN = 1.11 +DIAMETER_VSN = 1.11.1 APP_VSN = $(APPLICATION)-$(DIAMETER_VSN)$(PRE_VSN) diff --git a/lib/erl_docgen/priv/dtd/common.dtd b/lib/erl_docgen/priv/dtd/common.dtd index a29fc233fa..961bcd3fc2 100644 --- a/lib/erl_docgen/priv/dtd/common.dtd +++ b/lib/erl_docgen/priv/dtd/common.dtd @@ -68,7 +68,7 @@ <!ATTLIST list type (ordered|bulleted) "bulleted" > <!ELEMENT taglist (tag,item+)+ > <!ELEMENT tag (#PCDATA|c|i|em|br|seealso|url|marker|anno)* > -<!ELEMENT item (%inline;|%block;)* > +<!ELEMENT item (%inline;|%block;|warning|note|dont|do)* > <!-- References --> diff --git a/lib/erl_docgen/priv/dtd/common.refs.dtd b/lib/erl_docgen/priv/dtd/common.refs.dtd index 6889e990de..4f87007a09 100644 --- a/lib/erl_docgen/priv/dtd/common.refs.dtd +++ b/lib/erl_docgen/priv/dtd/common.refs.dtd @@ -35,13 +35,13 @@ name CDATA #IMPLIED name_i CDATA #IMPLIED> <!ELEMENT v (#PCDATA|seealso)* > -<!ELEMENT d (#PCDATA|c|i|em)* > +<!ELEMENT d (#PCDATA|seealso|c|i|em)* > <!ELEMENT desc (%block;|quote|br|marker|warning|note|dont|do)* > <!ELEMENT authors (aname,email)+ > <!ELEMENT aname (#PCDATA) > <!ELEMENT email (#PCDATA) > <!ELEMENT section (marker*,title,(%block;|quote|br|marker| - warning|note|dont|do)*) > + warning|note|dont|do|section)*) > <!ELEMENT datatypes (datatype)+ > <!ELEMENT datatype (name+,desc?) > <!ELEMENT type_desc (#PCDATA|anno|c|seealso)* > diff --git a/lib/inets/doc/src/http_server.xml b/lib/inets/doc/src/http_server.xml index 4b6d64fc8f..aeda961714 100644 --- a/lib/inets/doc/src/http_server.xml +++ b/lib/inets/doc/src/http_server.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2004</year><year>2013</year> + <year>2004</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -21,18 +21,8 @@ limitations under the License. </legalnotice> - <title>HTTP server</title> - <prepared>Ingela Anderton Andin</prepared> - <responsible></responsible> - <docno></docno> - <approved></approved> - <checked></checked> - <date></date> - <rev></rev> <file>http_server.xml</file> - - <marker id="intro"></marker> </header> <section> @@ -65,12 +55,9 @@ <p>As of <c>Inets</c> 5.0 the HTTP server is an easy to start/stop and customize web server providing the most basic - web server functionality. Depending on your needs, there - are also other Erlang-based web servers that can be of interest - such as <url href=" http://yaws.hyber.org ">Yaws</url>, which, - for example, has its own - markup support to generate HTML and supports certain buzzword - technologies, such as SOAP.</p> + web server functionality. Inets is designed for embedded systems + and if you want a full-fledged web server there are exists other + erlang open source alternatives.</p> <p>Almost all server functionality has been implemented using an especially crafted server API, which is described in the Erlang Web @@ -356,9 +343,9 @@ UserName:Password</pre> </taglist> <section> - <title>CGI Version 1.1, - <url href="http://www.ietf.org/rfc/rfc3875.txt">RFC 3875</url></title> - <p>The module <c>mod_cgi</c> enables execution of CGI scripts + <title>CGI Version 1.1, RFC 3875</title> + <p>The module <c>mod_cgi</c> enables execution of + <url href="http://www.ietf.org/rfc/rfc3875.txt">CGI scripts</url> on the server. A file matching the definition of a ScriptAlias config directive is treated as a CGI script. A CGI script is executed by the server and its output is returned to @@ -541,7 +528,7 @@ http://your.server.org/eval?httpd_example:print(atom_to_list(apply(erlang,halt,[ <title>mod_action - Filetype/Method-Based Script Execution</title> <p>This module runs CGI scripts whenever a file of a certain type or HTTP method (see - <url href="http://tools.ietf.org/html/rfc1945">RFC 1945</url>RFC 1945) + <url href="http://tools.ietf.org/html/rfc1945">RFC 1945</url>) is requested. </p> <p>Uses the following Erlang Web Server API interaction data: @@ -568,7 +555,7 @@ http://your.server.org/eval?httpd_example:print(atom_to_list(apply(erlang,halt,[ <taglist> <tag><c>{real_name, PathData}</c></tag> <item><c>PathData</c> is the argument used for API function - <seealso marker="mod_alias:path/3">mod_alias:path/3</seealso>.</item> + <seealso marker="mod_alias#path/3">mod_alias:path/3</seealso>.</item> </taglist> </section> diff --git a/lib/inets/doc/src/http_uri.xml b/lib/inets/doc/src/http_uri.xml index 64e6c7a6cc..8e0301c520 100644 --- a/lib/inets/doc/src/http_uri.xml +++ b/lib/inets/doc/src/http_uri.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2012</year><year>2013</year> + <year>2012</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -142,14 +142,14 @@ <p>If the fragment option is <c>true</c>, the URI fragment is returned as part of the parsing result, otherwise it is ignored.</p> - <p>Scheme validation fun is to be defined as follows: + <p>Scheme validation fun is to be defined as follows:</p> - <code> + <code> fun(SchemeStr :: string()) -> valid | {error, Reason :: term()}. - </code> + </code> - It is called before scheme string gets converted into scheme atom and + <p>It is called before scheme string gets converted into scheme atom and thus possible atom leak could be prevented</p> <marker id="encode"></marker> diff --git a/lib/inets/doc/src/httpc.xml b/lib/inets/doc/src/httpc.xml index 31e44f405c..ca9b268a03 100644 --- a/lib/inets/doc/src/httpc.xml +++ b/lib/inets/doc/src/httpc.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2004</year><year>2013</year> + <year>2004</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -554,8 +554,8 @@ <v>IpDesc = string()</v> <d>Example: "134.138" or "[FEDC:BA98" (all IP addresses starting with 134.138 or FEDC:BA98), - "66.35.250.150" or "[2010:836B:4179::836B:4179]" (a complete IP address).</d> - <d><c>proxy</c> defaults to <c>{undefined, []}</c>, + "66.35.250.150" or "[2010:836B:4179::836B:4179]" (a complete IP address). + <c>proxy</c> defaults to <c>{undefined, []}</c>, that is, no proxy is configured and <c>https_proxy</c> defaults to the value of <c>proxy</c>.</d> <v>MaxSessions = integer()</v> @@ -597,8 +597,8 @@ for details.</d> <v>socket_opts() = [socket_opt()]</v> <d>The options are appended to the socket options used by the - client.</d> - <d>These are the default values when a new request handler + client. + These are the default values when a new request handler is started (for the initial connect). They are passed directly to the underlying transport (<c>gen_tcp</c> or <c>SSL</c>) <em>without</em> verification.</d> diff --git a/lib/inets/doc/src/httpd.xml b/lib/inets/doc/src/httpd.xml index 0fc3cb1ce7..62b92b8356 100644 --- a/lib/inets/doc/src/httpd.xml +++ b/lib/inets/doc/src/httpd.xml @@ -30,13 +30,14 @@ <file>httpd.sgml</file> </header> <module>httpd</module> - <modulesummary>An implementation of an HTTP - 1.1 compliant web server, as defined in <url href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</url> + <modulesummary> + HTTP server API </modulesummary> <description> - <p>This module provides the HTTP server start options, some administrative - functions, and specifies the Erlang web server callback - API.</p> + <p>An implementation of an HTTP 1.1 compliant web server, as defined in + <url href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</url>. + Provides web server start options, administrative functions, and + an Erlang callback API.</p> </description> <section> @@ -78,8 +79,7 @@ list.</p> <taglist> - <marker id="prop_proplist_file"></marker> - <tag>{proplist_file, path()}</tag> + <tag><marker id="prop_proplist_file"></marker>{proplist_file, path()}</tag> <item> <p>If this property is defined, <c>Inets</c> expects to find all other properties defined in this file. The @@ -87,8 +87,7 @@ properties.</p> </item> - <marker id="prop_file"></marker> - <tag>{file, path()}</tag> + <tag><marker id="prop_file"></marker>{file, path()}</tag> <item> <p>If this property is defined, <c>Inets</c> expects to find all other properties defined in this file, which uses Apache-like @@ -121,8 +120,7 @@ <marker id="props_mand"></marker> <p><em>Mandatory Properties</em></p> <taglist> - <marker id="prop_port"></marker> - <tag>{port, integer()} </tag> + <tag><marker id="prop_port"></marker>{port, integer()} </tag> <item> <p>The port that the HTTP server listen to. If zero is specified as port, an arbitrary available port @@ -130,22 +128,19 @@ determine which port was picked.</p> </item> - <marker id="prop_server_name"></marker> - <tag>{server_name, string()}</tag> + <tag><marker id="prop_server_name"></marker>{server_name, string()}</tag> <item> <p>The name of your server, normally a fully qualified domain name.</p> </item> - <marker id="prop_server_root"></marker> - <tag>{server_root, path()}</tag> + <tag><marker id="prop_server_root"></marker>{server_root, path()}</tag> <item> <p>Defines the home directory of the server, where log files, and so on, can be stored. Relative paths specified in other properties refer to this directory.</p> </item> - <marker id="prop_doc_root"></marker> - <tag>{document_root, path()}</tag> + <tag> <marker id="prop_doc_root"></marker>{document_root, path()}</tag> <item> <p>Defines the top directory for the documents that are available on the HTTP server.</p> @@ -155,15 +150,13 @@ <marker id="props_comm"></marker> <p><em>Communication Properties</em></p> <taglist> - <marker id="prop_bind_address"></marker> - <tag>{bind_address, ip_address() | hostname() | any}</tag> + <tag><marker id="prop_bind_address"></marker>{bind_address, ip_address() | hostname() | any}</tag> <item> <p>Default is <c>any</c>. <c>any</c> is denoted <em>*</em> in the Apache-like configuration file.</p> </item> - <marker id="profile"></marker> - <tag>{profile, atom()}</tag> + <tag><marker id="profile"></marker>{profile, atom()}</tag> <item> <p>Used together with <seealso marker="#prop_bind_address"><c>bind_address</c></seealso> and <seealso marker="#prop_port"><c>port</c></seealso> to uniquely identify @@ -176,8 +169,7 @@ </p> </item> - <marker id="prop_socket_type"></marker> - <tag>{socket_type, ip_comm | {ip_comm, Config::proplist()} | {essl, Config::proplist()}}</tag> + <tag><marker id="prop_socket_type"></marker>{socket_type, ip_comm | {ip_comm, Config::proplist()} | {essl, Config::proplist()}}</tag> <item> <p>For <c>ip_comm</c> configuration options, see <seealso marker="kernel:gen_tcp#listen-2">gen_tcp:listen/2</seealso>, some options @@ -187,15 +179,13 @@ <p>Default is <c>ip_comm</c>.</p> </item> - <marker id="prop_ipfamily"></marker> - <tag>{ipfamily, inet | inet6}</tag> + <tag><marker id="prop_ipfamily"></marker>{ipfamily, inet | inet6}</tag> <item> <p>Default is <c>inet</c>, legacy option <c>inet6fb4</c> no longer makes sense and will be translated to inet.</p> </item> - <marker id="prop_minimum_bytes_per_second"></marker> - <tag>{minimum_bytes_per_second, integer()}</tag> + <tag><marker id="prop_minimum_bytes_per_second"></marker>{minimum_bytes_per_second, integer()}</tag> <item> <p>If given, sets a minimum of bytes per second value for connections.</p> <p>If the value is unreached, the socket closes for that connection.</p> @@ -206,8 +196,7 @@ <marker id="props_api_modules"></marker> <p><em>Erlang Web Server API Modules</em> </p> <taglist> - <marker id="prop_modules"></marker> - <tag>{modules, [atom()]} </tag> + <tag><marker id="prop_modules"></marker>{modules, [atom()]} </tag> <item> <p>Defines which modules the HTTP server uses when handling requests. Default is <c>[mod_alias, mod_auth, mod_esi, @@ -224,60 +213,52 @@ <p><em>Limit properties</em> </p> <taglist> - <marker id="prop_customize"></marker> - <tag>{customize, atom()}</tag> + <tag><marker id="prop_customize"></marker>{customize, atom()}</tag> <item> <p>A callback module to customize the inets HTTP servers behaviour see <seealso marker="httpd_custom_api"> httpd_custom_api</seealso> </p> </item> - <marker id="prop_disable_chunked_encoding"></marker> - <tag>{disable_chunked_transfer_encoding_send, boolean()}</tag> + <tag><marker id="prop_disable_chunked_encoding"></marker>{disable_chunked_transfer_encoding_send, boolean()}</tag> <item> <p>Allows you to disable chunked transfer-encoding when sending a response to an HTTP/1.1 client. Default is <c>false</c>.</p> </item> - <marker id="prop_keep_alive"></marker> - <tag>{keep_alive, boolean()}</tag> + <tag><marker id="prop_keep_alive"></marker>{keep_alive, boolean()}</tag> <item> <p>Instructs the server whether to use persistent connections when the client claims to be HTTP/1.1 compliant. Default is <c>true</c>.</p> </item> - <marker id="prop_keep_alive_timeout"></marker> - <tag>{keep_alive_timeout, integer()}</tag> + <tag><marker id="prop_keep_alive_timeout"></marker>{keep_alive_timeout, integer()}</tag> <item> <p>The number of seconds the server waits for a subsequent request from the client before closing the connection. Default is <c>150</c>.</p> </item> - <marker id="prop_max_body_size"></marker> - <tag>{max_body_size, integer()}</tag> + <tag><marker id="prop_max_body_size"></marker>{max_body_size, integer()}</tag> <item> <p>Limits the size of the message body of an HTTP request. Default is no limit.</p> </item> - <marker id="prop_max_clients"></marker> - <tag>{max_clients, integer()}</tag> + <tag><marker id="prop_max_clients"></marker>{max_clients, integer()}</tag> <item> <p>Limits the number of simultaneous requests that can be supported. Default is <c>150</c>.</p> </item> - <marker id="prop_max_header_size"></marker> - <tag>{max_header_size, integer()}</tag> + <tag><marker id="prop_max_header_size"></marker>{max_header_size, integer()}</tag> <item> <p>Limits the size of the message header of an HTTP request. Default is <c>10240</c>.</p> </item> - <marker id="prop_max_content_length"></marker> - <tag>{max_content_length, integer()}</tag> + <tag><marker id="prop_max_content_length"></marker>{max_content_length, integer()}</tag> <item> <p>Maximum content-length in an incoming request, in bytes. Requests with content larger than this are answered with status 413. @@ -285,15 +266,13 @@ </p> </item> - <marker id="prop_max_uri"></marker> - <tag>{max_uri_size, integer()}</tag> + <tag><marker id="prop_max_uri"></marker>{max_uri_size, integer()}</tag> <item> <p>Limits the size of the HTTP request URI. Default is no limit.</p> </item> - <marker id="prop_max_keep_alive_req"></marker> - <tag>{max_keep_alive_request, integer()}</tag> + <tag><marker id="prop_max_keep_alive_req"></marker>{max_keep_alive_request, integer()}</tag> <item> <p>The number of requests that a client can do on one connection. When the server has responded to the number of @@ -306,8 +285,7 @@ <marker id="props_admin"></marker> <p><em>Administrative Properties</em></p> <taglist> - <marker id="prop_mime_types"></marker> - <tag>{mime_types, [{MimeType, Extension}] | path()}</tag> + <tag><marker id="prop_mime_types"></marker>{mime_types, [{MimeType, Extension}] | path()}</tag> <item> <p><c>MimeType = string()</c> and <c>Extension = string()</c>. Files delivered to the client are MIME typed according to RFC @@ -323,24 +301,21 @@ text/plain asc txt</pre> <p>Default is [{"html","text/html"},{"htm","text/html"}].</p> </item> - <marker id="prop_mime_type"></marker> - <tag>{mime_type, string()}</tag> + <tag><marker id="prop_mime_type"></marker>{mime_type, string()}</tag> <item> <p>When the server is asked to provide a document type that cannot be determined by the MIME Type Settings, the server uses this default type.</p> </item> - <marker id="prop_server_admin"></marker> - <tag>{server_admin, string()}</tag> + <tag><marker id="prop_server_admin"></marker>{server_admin, string()}</tag> <item> <p>Defines the email-address of the server administrator to be included in any error messages returned by the server.</p> </item> - <marker id="prop_server_tokens"></marker> - <tag>{server_tokens, none|prod|major|minor|minimal|os|full|{private, string()}}</tag> + <tag><marker id="prop_server_tokens"></marker>{server_tokens, none|prod|major|minor|minimal|os|full|{private, string()}}</tag> <item> <p>Defines the look of the value of the server header.</p> <p>Example: Assuming the version of <c>Inets</c> is 5.8.1, @@ -367,8 +342,7 @@ text/plain asc txt</pre> <p>By default, the value is as before, that is, <c>minimal</c>.</p> </item> - <marker id="prop_log_format"></marker> - <tag>{log_format, common | combined}</tag> + <tag><marker id="prop_log_format"></marker>{log_format, common | combined}</tag> <item> <p>Defines if access logs are to be written according to the <c>common</c> log format or the extended common log format. @@ -411,8 +385,7 @@ text/plain asc txt</pre> </p> </item> - <marker id="prop_elog_format"></marker> - <tag>{error_log_format, pretty | compact}</tag> + <tag><marker id="prop_elog_format"></marker>{error_log_format, pretty | compact}</tag> <item> <p>Default is <c>pretty</c>. If the error log is meant to be read directly by a human, <c>pretty</c> is the best option.</p> @@ -434,60 +407,57 @@ text/plain asc txt</pre> <marker id="props_alias"></marker> <p><em>URL Aliasing Properties - Requires mod_alias</em></p> <taglist> - <marker id="prop_alias"></marker> - <tag>{alias, {Alias, RealName}}</tag> + <tag><marker id="prop_alias"></marker>{alias, {Alias, RealName}}</tag> <item> <p><c>Alias = string()</c> and <c>RealName = string()</c>. <c>alias</c> allows documents to be stored in the local file system instead of the <c>document_root</c> location. URLs with a path beginning with url-path is mapped to local files beginning with - directory-filename, for example: + directory-filename, for example:</p> <code>{alias, {"/image", "/ftp/pub/image"}}</code> - Access to http://your.server.org/image/foo.gif would refer to + <p>Access to http://your.server.org/image/foo.gif would refer to the file /ftp/pub/image/foo.gif.</p> </item> - <marker id="prop_re_write"></marker> - <tag>{re_write, {Re, Replacement}}</tag> + <tag><marker id="prop_re_write"></marker>{re_write, {Re, Replacement}}</tag> <item> <p><c>Re = string()</c> and <c>Replacement = string()</c>. <c>re_write</c> allows documents to be stored in the local file system instead of the <c>document_root</c> location. URLs are rewritten by <c>re:replace/3</c> to produce a path in the local file-system, - for example: + for example:</p> <code>{re_write, {"^/[~]([^/]+)(.*)$", "/home/\\1/public\\2"}}</code> - Access to http://your.server.org/~bob/foo.gif would refer to + <p>Access to http://your.server.org/~bob/foo.gif would refer to the file /home/bob/public/foo.gif. In an Apache-like configuration file, <c>Re</c> is separated from <c>Replacement</c> with one single space, and as expected backslashes do not need to be backslash escaped, the - same example would become: + same example would become:</p> <code>ReWrite ^/[~]([^/]+)(.*)$ /home/\1/public\2</code> - Beware of trailing space in <c>Replacement</c> to be used. + <p>Beware of trailing space in <c>Replacement</c> to be used. If you must have a space in <c>Re</c>, use, for example, the character encoding <c>\040</c>, see <seealso marker="stdlib:re">re(3)</seealso>.</p> </item> - <marker id="prop_dir_idx"></marker> - <tag>{directory_index, [string()]}</tag> + <tag><marker id="prop_dir_idx"></marker>{directory_index, [string()]}</tag> <item> <p><c>directory_index</c> specifies a list of resources to look for if a client requests a directory using a <c>/</c> at the end of the directory name. <c>file</c> depicts the name of a file in the directory. Several files can be given, in which case the server - returns the first it finds, for example: + returns the first it finds, for example:</p> <code>{directory_index, ["index.hml", "welcome.html"]}</code> - Access to http://your.server.org/docs/ would return + <p>Access to http://your.server.org/docs/ would return http://your.server.org/docs/index.html or http://your.server.org/docs/welcome.html if index.html does not exist.</p> @@ -497,38 +467,35 @@ text/plain asc txt</pre> <marker id="props_cgi"></marker> <p><em>CGI Properties - Requires mod_cgi</em></p> <taglist> - <marker id="prop_script_alias"></marker> - <tag>{script_alias, {Alias, RealName}}</tag> + <tag><marker id="prop_script_alias"></marker>{script_alias, {Alias, RealName}}</tag> <item> <p><c>Alias = string()</c> and <c>RealName = string()</c>. Have the same behavior as property <c>alias</c>, except that they also mark the target directory as containing CGI scripts. URLs with a path beginning with url-path are mapped to - scripts beginning with directory-filename, for example: + scripts beginning with directory-filename, for example:</p> <code>{script_alias, {"/cgi-bin/", "/web/cgi-bin/"}}</code> - Access to http://your.server.org/cgi-bin/foo would cause + <p>Access to http://your.server.org/cgi-bin/foo would cause the server to run the script /web/cgi-bin/foo.</p> </item> - <marker id="prop_script_re_write"></marker> - <tag>{script_re_write, {Re, Replacement}}</tag> + <tag><marker id="prop_script_re_write"></marker>{script_re_write, {Re, Replacement}}</tag> <item> <p><c>Re = string()</c> and <c>Replacement = string()</c>. Have the same behavior as property <c>re_write</c>, except that they also mark the target directory as containing CGI scripts. URLs with a path beginning with url-path are mapped to - scripts beginning with directory-filename, for example: + scripts beginning with directory-filename, for example:</p> <code>{script_re_write, {"^/cgi-bin/(\\d+)/", "/web/\\1/cgi-bin/"}}</code> - Access to http://your.server.org/cgi-bin/17/foo would cause + <p>Access to http://your.server.org/cgi-bin/17/foo would cause the server to run the script /web/17/cgi-bin/foo.</p> </item> - <marker id="prop_script_nocache"></marker> - <tag>{script_nocache, boolean()}</tag> + <tag><marker id="prop_script_nocache"></marker>{script_nocache, boolean()}</tag> <item> <p>If <c>script_nocache</c> is set to <c>true</c>, the HTTP server by default adds the header fields necessary to prevent proxies from @@ -536,8 +503,7 @@ text/plain asc txt</pre> Default to <c>false</c>.</p> </item> - <marker id="prop_script_timeout"></marker> - <tag>{script_timeout, integer()}</tag> + <tag><marker id="prop_script_timeout"></marker>{script_timeout, integer()}</tag> <item> <p>The time in seconds the web server waits between each chunk of data from the script. If the CGI script does not deliver @@ -545,8 +511,7 @@ text/plain asc txt</pre> closed. Default is <c>15</c>.</p> </item> - <marker id="prop_action"></marker> - <tag>{action, {MimeType, CgiScript}} - requires mod_action</tag> + <tag><marker id="prop_action"></marker>{action, {MimeType, CgiScript}} - requires mod_action</tag> <item> <p><c>MimeType = string()</c> and <c>CgiScript = string()</c>. <c>action</c> adds an action activating a CGI script @@ -559,8 +524,7 @@ text/plain asc txt</pre> <code>{action, {"text/plain", "/cgi-bin/log_and_deliver_text"}}</code> </item> - <marker id="prop_script"></marker> - <tag>{script, {Method, CgiScript}} - requires mod_action</tag> + <tag><marker id="prop_script"></marker>{script, {Method, CgiScript}} - requires mod_action</tag> <item> <p><c>Method = string()</c> and <c>CgiScript = string()</c>. <c>script</c> adds an action activating a CGI script @@ -579,17 +543,16 @@ text/plain asc txt</pre> <marker id="props_esi"></marker> <p><em>ESI Properties - Requires mod_esi</em></p> <taglist> - <marker id="prop_esi_alias"></marker> - <tag>{erl_script_alias, {URLPath, [AllowedModule]}}</tag> + <tag><marker id="prop_esi_alias"></marker>{erl_script_alias, {URLPath, [AllowedModule]}}</tag> <item> <p><c>URLPath = string()</c> and <c>AllowedModule = atom()</c>. <c>erl_script_alias</c> marks all URLs matching url-path as erl scheme scripts. A matching URL is mapped into a specific module - and function, for example: + and function, for example:</p> <code>{erl_script_alias, {"/cgi-bin/example", [httpd_example]}}</code> - A request to + <p>A request to http://your.server.org/cgi-bin/example/httpd_example:yahoo would refer to httpd_example:yahoo/3 or, if that does not exist, httpd_example:yahoo/2 and @@ -597,8 +560,7 @@ text/plain asc txt</pre> not be allowed to execute.</p> </item> - <marker id="prop_esi_nocache"></marker> - <tag>{erl_script_nocache, boolean()}</tag> + <tag><marker id="prop_esi_nocache"></marker>{erl_script_nocache, boolean()}</tag> <item> <p>If <c>erl_script_nocache</c> is set to <c>true</c>, the server adds HTTP header fields preventing proxies from caching the @@ -607,8 +569,7 @@ text/plain asc txt</pre> Default is <c>false</c>.</p> </item> - <marker id="prop_esi_timeout"></marker> - <tag>{erl_script_timeout, integer()}</tag> + <tag><marker id="prop_esi_timeout"></marker>{erl_script_timeout, integer()}</tag> <item> <p>If <c>erl_script_timeout</c> sets the time in seconds the server waits between each chunk of data to be delivered through @@ -616,8 +577,7 @@ text/plain asc txt</pre> for scripts that use the erl scheme.</p> </item> - <marker id="prop_esi_timeout"></marker> - <tag>{eval_script_alias, {URLPath, [AllowedModule]}}</tag> + <tag><marker id="prop_esi_timeout"></marker>{eval_script_alias, {URLPath, [AllowedModule]}}</tag> <item> <p><c>URLPath = string()</c> and <c>AllowedModule = atom()</c>. Same as <c>erl_script_alias</c> but for scripts @@ -629,24 +589,21 @@ text/plain asc txt</pre> <marker id="props_log"></marker> <p><em>Log Properties - Requires mod_log</em></p> <taglist> - <marker id="prop_elog"></marker> - <tag>{error_log, path()}</tag> + <tag><marker id="prop_elog"></marker>{error_log, path()}</tag> <item> <p>Defines the filename of the error log file to be used to log server errors. If the filename does not begin with a slash (/), it is assumed to be relative to the <c>server_root</c>.</p> </item> - <marker id="prop_slog"></marker> - <tag>{security_log, path()}</tag> + <tag><marker id="prop_slog"></marker>{security_log, path()}</tag> <item> <p>Defines the filename of the access log file to be used to log security events. If the filename does not begin with a slash (/), it is assumed to be relative to the <c>server_root</c>.</p> </item> - <marker id="prop_tlog"></marker> - <tag>{transfer_log, path()}</tag> + <tag><marker id="prop_tlog"></marker>{transfer_log, path()}</tag> <item> <p>Defines the filename of the access log file to be used to log incoming requests. If the filename does not begin with a @@ -657,8 +614,7 @@ text/plain asc txt</pre> <marker id="props_dlog"></marker> <p><em>Disk Log Properties - Requires mod_disk_log</em></p> <taglist> - <marker id="prop_dlog_format"></marker> - <tag>{disk_log_format, internal | external}</tag> + <tag><marker id="prop_dlog_format"></marker>{disk_log_format, internal | external}</tag> <item> <p>Defines the file format of the log files. See <c>disk_log</c> for details. If the internal file format is used, the @@ -668,16 +624,14 @@ text/plain asc txt</pre> <c>external</c>.</p> </item> - <marker id="prop_edlog"></marker> - <tag>{error_disk_log, path()}</tag> + <tag><marker id="prop_edlog"></marker>{error_disk_log, path()}</tag> <item> <p>Defines the filename of the (<c>disk_log(3)</c>) error log file to be used to log server errors. If the filename does not begin with a slash (/), it is assumed to be relative to the <c>server_root</c>.</p> </item> - <marker id="prop_edlog_size"></marker> - <tag>{error_disk_log_size, {MaxBytes, MaxFiles}}</tag> + <tag><marker id="prop_edlog_size"></marker>{error_disk_log_size, {MaxBytes, MaxFiles}}</tag> <item> <p><c>MaxBytes = integer()</c> and <c>MaxFiles = integer()</c>. Defines the properties of the (<c>disk_log(3)</c>) error log @@ -686,8 +640,7 @@ text/plain asc txt</pre> used before the first file is truncated and reused.</p> </item> - <marker id="prop_sdlog"></marker> - <tag>{security_disk_log, path()}</tag> + <tag><marker id="prop_sdlog"></marker>{security_disk_log, path()}</tag> <item> <p>Defines the filename of the (<c>disk_log(3)</c>) access log file logging incoming security events, that is, authenticated @@ -695,8 +648,7 @@ text/plain asc txt</pre> is assumed to be relative to the <c>server_root</c>.</p> </item> - <marker id="prop_sdlog_size"></marker> - <tag>{security_disk_log_size, {MaxBytes, MaxFiles}}</tag> + <tag><marker id="prop_sdlog_size"></marker>{security_disk_log_size, {MaxBytes, MaxFiles}}</tag> <item> <p><c>MaxBytes = integer()</c> and <c>MaxFiles = integer()</c>. Defines the properties of the <c>disk_log(3)</c> access log @@ -705,8 +657,7 @@ text/plain asc txt</pre> used before the first file is truncated and reused.</p> </item> - <marker id="prop_tdlog"></marker> - <tag>{transfer_disk_log, path()}</tag> + <tag><marker id="prop_tdlog"></marker>{transfer_disk_log, path()}</tag> <item> <p>Defines the filename of the (<c>disk_log(3)</c>) access log file logging incoming requests. If the filename does not begin @@ -714,8 +665,7 @@ text/plain asc txt</pre> <c>server_root</c>.</p> </item> - <marker id="prop_tdlog_size"></marker> - <tag>{transfer_disk_log_size, {MaxBytes, MaxFiles}}</tag> + <tag><marker id="prop_tdlog_size"></marker>{transfer_disk_log_size, {MaxBytes, MaxFiles}}</tag> <item> <p><c>MaxBytes = integer()</c> and <c>MaxFiles = integer()</c>. Defines the properties of the <c>disk_log(3)</c> access log @@ -735,32 +685,29 @@ text/plain asc txt</pre> <p>The properties for directories are as follows:</p> <taglist> - <marker id="prop_allow_from"></marker> - <tag>{allow_from, all | [RegxpHostString]}</tag> + <tag><marker id="prop_allow_from"></marker>{allow_from, all | [RegxpHostString]}</tag> <item> <p>Defines a set of hosts to be granted access to a - given directory, for example: + given directory, for example:</p> <code>{allow_from, ["123.34.56.11", "150.100.23"]}</code> - The host <c>123.34.56.11</c> and all machines on the <c>150.100.23</c> + <p>The host <c>123.34.56.11</c> and all machines on the <c>150.100.23</c> subnet are allowed access.</p> </item> - <marker id="prop_deny_from"></marker> - <tag>{deny_from, all | [RegxpHostString]}</tag> + <tag><marker id="prop_deny_from"></marker>{deny_from, all | [RegxpHostString]}</tag> <item> <p>Defines a set of hosts - to be denied access to a given directory, for example: + to be denied access to a given directory, for example:</p> <code>{deny_from, ["123.34.56.11", "150.100.23"]}</code> - The host <c>123.34.56.11</c> and all machines on the <c>150.100.23</c> + <p>The host <c>123.34.56.11</c> and all machines on the <c>150.100.23</c> subnet are not allowed access.</p> </item> - <marker id="prop_auth_type"></marker> - <tag>{auth_type, plain | dets | mnesia}</tag> + <tag><marker id="prop_auth_type"></marker>{auth_type, plain | dets | mnesia}</tag> <item> <p>Sets the type of authentication database that is used for the directory. The key difference between the different methods is @@ -770,8 +717,7 @@ text/plain asc txt</pre> configuration files.</p> </item> - <marker id="prop_auth_user_file"></marker> - <tag>{auth_user_file, path()}</tag> + <tag><marker id="prop_auth_user_file"></marker>{auth_user_file, path()}</tag> <item> <p>Sets the name of a file containing the list of users and passwords for user authentication. The filename can be either @@ -795,8 +741,7 @@ text/plain asc txt</pre> clients can download it.</p> </item> - <marker id="prop_auth_group_file"></marker> - <tag>{auth_group_file, path()}</tag> + <tag><marker id="prop_auth_group_file"></marker>{auth_group_file, path()}</tag> <item> <p>Sets the name of a file containing the list of user groups for user authentication. The filename can be either @@ -818,16 +763,14 @@ text/plain asc txt</pre> can download it.</p> </item> - <marker id="prop_auth_name"></marker> - <tag>{auth_name, string()}</tag> + <tag><marker id="prop_auth_name"></marker>{auth_name, string()}</tag> <item> <p>Sets the name of the authorization realm (auth-domain) for a directory. This string informs the client about which username and password to use.</p> </item> - <marker id="prop_auth_access_passwd"></marker> - <tag>{auth_access_password, string()}</tag> + <tag><marker id="prop_auth_access_passwd"></marker>{auth_access_password, string()}</tag> <item> <p>If set to other than "NoPassword", the password is required for all API calls. If the password is set to "DummyPassword", the @@ -837,15 +780,13 @@ text/plain asc txt</pre> text in the configuration file.</p> </item> - <marker id="prop_req_user"></marker> - <tag>{require_user, [string()]}</tag> + <tag><marker id="prop_req_user"></marker>{require_user, [string()]}</tag> <item> <p>Defines users to grant access to a given directory using a secret password.</p> </item> - <marker id="prop_req_grp"></marker> - <tag>{require_group, [string()]}</tag> + <tag><marker id="prop_req_grp"></marker>{require_group, [string()]}</tag> <item> <p>Defines users to grant access to a given directory using a secret password.</p> @@ -856,8 +797,7 @@ text/plain asc txt</pre> <marker id="props_htaccess"></marker> <p><em>Htaccess Authentication Properties - Requires mod_htaccess</em></p> <taglist> - <marker id="prop_access_files"></marker> - <tag>{access_files, [path()]}</tag> + <tag><marker id="prop_access_files"></marker>{access_files, [path()]}</tag> <item> <p>Specifies the filenames that are used for access files. When a request comes, every directory in the path @@ -877,16 +817,14 @@ text/plain asc txt</pre> <marker id="props_sdir"></marker> <p>The properties for the security directories are as follows:</p> <taglist> - <marker id="prop_data_file"></marker> - <tag>{data_file, path()}</tag> + <tag><marker id="prop_data_file"></marker>{data_file, path()}</tag> <item> <p>Name of the security data file. The filename can either be absolute or relative to the <c>server_root</c>. This file is used to store persistent data for module <c>mod_security</c>.</p> </item> - <marker id="prop_max_retries"></marker> - <tag>{max_retries, integer()}</tag> + <tag><marker id="prop_max_retries"></marker>{max_retries, integer()}</tag> <item> <p>Specifies the maximum number of attempts to authenticate a user before the user is blocked out. If a user @@ -898,16 +836,14 @@ text/plain asc txt</pre> Default is <c>3</c>. Can be set to infinity.</p> </item> - <marker id="prop_block_time"></marker> - <tag>{block_time, integer()}</tag> + <tag><marker id="prop_block_time"></marker>{block_time, integer()}</tag> <item> <p>Specifies the number of minutes a user is blocked. After this timehas passed, the user automatically regains access. Default is <c>60</c>.</p> </item> - <marker id="prop_fail_exp_time"></marker> - <tag>{fail_expire_time, integer()}</tag> + <tag><marker id="prop_fail_exp_time"></marker>{fail_expire_time, integer()}</tag> <item> <p>Specifies the number of minutes a failed user authentication is remembered. If a user authenticates after this @@ -916,8 +852,7 @@ text/plain asc txt</pre> Default is <c>30</c>.</p> </item> - <marker id="prop_auth_timeout"></marker> - <tag>{auth_timeout, integer()}</tag> + <tag><marker id="prop_auth_timeout"></marker>{auth_timeout, integer()}</tag> <item> Specifies the number of seconds a successful user authentication is remembered. After this time has passed, the diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml index 8c4fdfdf70..7ebb3ddffa 100644 --- a/lib/inets/doc/src/notes.xml +++ b/lib/inets/doc/src/notes.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2002</year><year>2014</year> + <year>2002</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -1807,23 +1807,21 @@ <item> <p>[httpd] - Issues with ESI erl_script_timeout. </p> - <p> - <list type="bulleted"> - <item> - <p>The <c>erl_script_timeout</c> config option is ducumented - as a number of seconds. But when parsing the config, in the - new format (not a config file), it was handled as if in - number of milliseconds. </p> - </item> - <item> - <p>When the erl-script-timeout time was exceeded, the server - incorrectly marked the answer as sent, thereby leaving - client hanging (with an incomplete answer). - This has been changed, so that now the socket will be - closed. </p> - </item> - </list> - </p> + <list type="bulleted"> + <item> + <p>The <c>erl_script_timeout</c> config option is ducumented + as a number of seconds. But when parsing the config, in the + new format (not a config file), it was handled as if in + number of milliseconds. </p> + </item> + <item> + <p>When the erl-script-timeout time was exceeded, the server + incorrectly marked the answer as sent, thereby leaving + client hanging (with an incomplete answer). + This has been changed, so that now the socket will be + closed. </p> + </item> + </list> <p>Own Id: OTP-8509</p> </item> </list> @@ -1899,20 +1897,19 @@ <item> <p>[httpc] Several more or less critical fixes:</p> - <p> - <list type="bulleted"> - <item> - <p>Initial call between the httpc manager and request - handler was synchronous. </p> - <p>When the manager starts a new request handler, - this is no longer a synchronous operation. Previously, - the new request handler made the connection to the - server and issuing of the first request (the reason - for starting it) in the gen_server init function. - If the connection for some reason "took some time", - the manager hanged, leaving all other activities by - that manager also hanging. </p> - </item> + <list type="bulleted"> + <item> + <p>Initial call between the httpc manager and request + handler was synchronous. </p> + <p>When the manager starts a new request handler, + this is no longer a synchronous operation. Previously, + the new request handler made the connection to the + server and issuing of the first request (the reason + for starting it) in the gen_server init function. + If the connection for some reason "took some time", + the manager hanged, leaving all other activities by + that manager also hanging. </p> + </item> <!-- <item> <p>Copying of data between processes</p> @@ -1923,8 +1920,7 @@ <p>TBD</p> </item> --> - </list> - </p> + </list> <p>As a side-effect of these changes, some modules was also renamed, and a new api module, <seealso marker="httpc">httpc</seealso>, has been introduced diff --git a/lib/inets/doc/src/tftp.xml b/lib/inets/doc/src/tftp.xml index 00d9d53376..10398f5088 100644 --- a/lib/inets/doc/src/tftp.xml +++ b/lib/inets/doc/src/tftp.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2006</year><year>2013</year> + <year>2006</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -216,12 +216,9 @@ five times when the time-out expires.</p> </item> </taglist> - - <marker id="start1"></marker> </section> <funcs> - <marker id="change_config_daemons"></marker> <func> <name>change_config(daemons, Options) -> [{Pid, Result}]</name> <fsummary>Changes configuration for all daemons. @@ -234,8 +231,6 @@ </type> <desc> <p>Changes configuration for all TFTP daemon processes. </p> - - <marker id="change_config_servers"></marker> </desc> </func> @@ -251,8 +246,6 @@ </type> <desc> <p>Changes configuration for all TFTP server processes.</p> - - <marker id="change_config_pid"></marker> </desc> </func> @@ -268,7 +261,6 @@ </type> <desc> <p>Changes configuration for a TFTP daemon, server, or client process.</p> - <marker id="info_daemons"></marker> </desc> </func> @@ -282,8 +274,6 @@ </type> <desc> <p>Returns information about all TFTP daemon processes.</p> - - <marker id="info_servers"></marker> </desc> </func> @@ -297,8 +287,6 @@ </type> <desc> <p>Returns information about all TFTP server processes. </p> - - <marker id="info_pid"></marker> </desc> </func> @@ -341,9 +329,7 @@ the regexps of these and the callback module corresponding to the first match is used, or an error tuple is returned if no matching regexp is found.</p> - </desc> - - <marker id="write_file"></marker> + </desc> </func> <func> @@ -359,8 +345,6 @@ port. When it receives a request for read or write, it spawns a temporary server process handling the actual transfer of the (virtual) file.</p> - - <marker id="read_file"></marker> </desc> </func> @@ -393,7 +377,6 @@ matching regexp is found.</p> </desc> </func> - </funcs> <section> diff --git a/lib/inets/test/httpd_SUITE_data/Makefile.src b/lib/inets/test/httpd_SUITE_data/Makefile.src index b0fdb43d8d..cea40dd8cb 100644 --- a/lib/inets/test/httpd_SUITE_data/Makefile.src +++ b/lib/inets/test/httpd_SUITE_data/Makefile.src @@ -10,5 +10,10 @@ all: $(PROGS) cgi_echo@exe@: cgi_echo@obj@ $(LD) $(CROSSLDFLAGS) -o cgi_echo cgi_echo@obj@ @LIBS@ +@IFEQ@ (@CC@, cl -nologo) +cgi_echo@obj@: cgi_echo.c + $(CC) /c /Focgi_echo@obj@ $(CFLAGS) cgi_echo.c +@ELSE@ cgi_echo@obj@: cgi_echo.c $(CC) -c -o cgi_echo@obj@ $(CFLAGS) cgi_echo.c +@ENDIF@ diff --git a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpErlangMap.java b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpErlangMap.java index 0fd7d3ce37..30126db3fd 100644 --- a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpErlangMap.java +++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpErlangMap.java @@ -19,7 +19,7 @@ */ package com.ericsson.otp.erlang; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -37,13 +37,22 @@ public class OtpErlangMap extends OtpErlangObject { // don't change this! private static final long serialVersionUID = -6410770117696198497L; - private HashMap<OtpErlangObject, OtpErlangObject> map; + private OtpMap map; + + private static class OtpMap + extends LinkedHashMap<OtpErlangObject, OtpErlangObject> { + private static final long serialVersionUID = -2666505810905455082L; + + public OtpMap() { + super(); + } + } /** * Create an empty map. */ public OtpErlangMap() { - map = new HashMap<OtpErlangObject, OtpErlangObject>(); + map = new OtpMap(); } /** @@ -93,7 +102,7 @@ public class OtpErlangMap extends OtpErlangObject { throw new java.lang.IllegalArgumentException( "Map keys and values must have same arity"); } - map = new HashMap<OtpErlangObject, OtpErlangObject>(vcount); + map = new OtpMap(); OtpErlangObject key, val; for (int i = 0; i < vcount; i++) { if ((key = keys[kstart + i]) == null) { @@ -125,7 +134,7 @@ public class OtpErlangMap extends OtpErlangObject { final int arity = buf.read_map_head(); if (arity > 0) { - map = new HashMap<OtpErlangObject, OtpErlangObject>(arity); + map = new OtpMap(); for (int i = 0; i < arity; i++) { OtpErlangObject key, val; key = buf.read_any(); @@ -133,7 +142,7 @@ public class OtpErlangMap extends OtpErlangObject { put(key, val); } } else { - map = new HashMap<OtpErlangObject, OtpErlangObject>(); + map = new OtpMap(); } } @@ -350,7 +359,7 @@ public class OtpErlangMap extends OtpErlangObject { @SuppressWarnings("unchecked") public Object clone() { final OtpErlangMap newMap = (OtpErlangMap) super.clone(); - newMap.map = (HashMap<OtpErlangObject, OtpErlangObject>) map.clone(); + newMap.map = (OtpMap) map.clone(); return newMap; } } diff --git a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpOutputStream.java b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpOutputStream.java index 2830a7842e..4faae2a157 100644 --- a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpOutputStream.java +++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpOutputStream.java @@ -922,8 +922,22 @@ public class OtpOutputStream extends ByteArrayOutputStream { oos.writeTo(dos); dos.close(); // note: closes this, too! } catch (final IllegalArgumentException e) { - // discard further un-compressed data - // -> if not called, there may be memory leaks! + /* + * Discard further un-compressed data (if not called, there may + * be memory leaks). + * + * After calling java.util.zip.Deflater.end(), the deflater + * should not be used anymore, not even the close() method of + * dos. Calling dos.close() before def.end() is prevented since + * an unfinished DeflaterOutputStream will try to deflate its + * unprocessed data to the (fixed) byte array which is prevented + * by ensureCapacity() and would also unnecessarily process + * further data that is discarded anyway. + * + * Since we are re-using the byte array of this object below, we + * must not call close() in e.g. a finally block either (with or + * without a call to def.end()). + */ def.end(); // could not make the value smaller than originally // -> reset to starting count, write uncompressed @@ -942,11 +956,6 @@ public class OtpOutputStream extends ByteArrayOutputStream { "Intermediate stream failed for Erlang object " + o); } finally { fixedSize = Integer.MAX_VALUE; - try { - dos.close(); - } catch (final IOException e) { - // ignore - } } } } diff --git a/lib/jinterface/test/nc_SUITE.erl b/lib/jinterface/test/nc_SUITE.erl index 9679b90a0d..c5f3198c21 100644 --- a/lib/jinterface/test/nc_SUITE.erl +++ b/lib/jinterface/test/nc_SUITE.erl @@ -215,6 +215,7 @@ decompress_roundtrip(Config) when is_list(Config) -> 0.0, math:sqrt(2), <<1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,31:5>>, + "{}", RandomBin1k, RandomBin1M, RandomBin10M, @@ -244,6 +245,7 @@ compress_roundtrip(Config) when is_list(Config) -> 0.0, math:sqrt(2), <<1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,31:5>>, + "{}", RandomBin1k, RandomBin1M, RandomBin10M, diff --git a/lib/kernel/src/erts_debug.erl b/lib/kernel/src/erts_debug.erl index 87f001fdf4..8e2b5ad214 100644 --- a/lib/kernel/src/erts_debug.erl +++ b/lib/kernel/src/erts_debug.erl @@ -243,7 +243,7 @@ map_size(Map,Seen0,Sum0) -> %% is not allowed to leak anywhere. They are only allowed in %% containers (cons cells and tuples, not maps), in gc and %% in erts_debug:same/2 - case erts_internal:map_type(Map) of + case erts_internal:term_type(Map) of flatmap -> Kt = erts_internal:map_to_tuple_keys(Map), Vs = maps:values(Map), diff --git a/lib/observer/doc/src/crashdump_ug.xml b/lib/observer/doc/src/crashdump_ug.xml index 3cd97f2f18..4bb3628ab5 100644 --- a/lib/observer/doc/src/crashdump_ug.xml +++ b/lib/observer/doc/src/crashdump_ug.xml @@ -377,7 +377,6 @@ <p>The <em>Memory</em> panel shows memory and allocator information. From the left hand menu you can select:</p> - <p> <list> <item><em>Memory</em> <seealso @@ -394,7 +393,6 @@ marker="erts:crash_dump#allocated_areas">More...</seealso></item> </list> - </p> </section> <section> diff --git a/lib/observer/doc/src/notes.xml b/lib/observer/doc/src/notes.xml index 5243f50e34..f0c87d865e 100644 --- a/lib/observer/doc/src/notes.xml +++ b/lib/observer/doc/src/notes.xml @@ -273,13 +273,12 @@ <section><title>Improvements and New Features</title> <list> <item> - <p> <list> <item> The new Memory field from a crash dump is now presented by crashdump viewer, both in the process overview and in the process detail page. </item> <item> A summary of blocks- and carriers sizes is added to the allocator information page in the crashdump viewer. - </item> </list></p> + </item> </list> <p> Own Id: OTP-10604 Aux Id: kunagi-336 [247] </p> </item> @@ -408,7 +407,6 @@ <item> <p> The following bugs in <c>ttb</c> have been corrected:</p> - <p> <list> <item><c>ttb:tracer/2</c> would earlier crash when trying to set up tracing for a diskless node to wrap files, i.e. when option @@ -421,7 +419,7 @@ <c>{file,{local,Filename}}</c></item> <item>A deadlock would sometimes occur due to an information printout from the <c>ttb_control</c> process when <c>ttb</c> was - stopped.</item> </list></p> + stopped.</item> </list> <p> Own Id: OTP-9431</p> </item> @@ -449,7 +447,6 @@ <item> <p> The following new features are added to <c>ttb</c>:</p> - <p> <list> <item>A one-command trace setup is added, <c>ttb:start_trace/4</c>.</item> <item>The following new options are added to <c>ttb:tracer/2</c>: <list> @@ -485,7 +482,7 @@ <c>disable_sort</c> is added to <c>ttb:format/2</c>. When this option is used, trace messages from different logs are not merged according to timestamps, but just appended - one log after the other. </item> </list></p> + one log after the other. </item> </list> <p> Own Id: OTP-9403</p> </item> @@ -493,7 +490,6 @@ <p> The following non backwards compatible changes are done in <c>ttb</c>:</p> - <p> <list> <item> When setting up trace with ttb, the 'timestamp' trace flag will now always be set. </item> <item> The 'fetch' option to ttb:stop/1 is removed since @@ -509,7 +505,7 @@ trace file, this is now changed so the handler state is passed not only from one trace message to the next in the same file, but also from one file to the next. </item> - </list></p> + </list> <p> *** POTENTIAL INCOMPATIBILITY ***</p> <p> diff --git a/lib/observer/doc/src/observer_ug.xml b/lib/observer/doc/src/observer_ug.xml index 8388cb6736..ff30d70913 100644 --- a/lib/observer/doc/src/observer_ug.xml +++ b/lib/observer/doc/src/observer_ug.xml @@ -105,7 +105,7 @@ <note> <p><em>Reds</em> can be presented as accumulated values or as values since last update.</p> </note> - <p><c>Process info</c> open a detailed information window on the selected process. + <p><c>Process info</c> open a detailed information window on the selected process.</p> <taglist> <tag>Process Information</tag> <item>Shows the process information.</item> @@ -127,7 +127,6 @@ <c>rb</c> server will be stopped on the observed node when exiting or changing observed node. </p> </note> - </p> <p><c>Trace Processes</c> will add the selected process identifiers to the <c>Trace Overview</c> view and the node the processes reside on will be added as well. <c>Trace Named Processes</c> will add the registered name of processes. This can be useful diff --git a/lib/observer/doc/src/ttb.xml b/lib/observer/doc/src/ttb.xml index 0b064b51b8..0a50a20716 100644 --- a/lib/observer/doc/src/ttb.xml +++ b/lib/observer/doc/src/ttb.xml @@ -25,8 +25,7 @@ </legalnotice> <title>ttb</title> - <prepared>Siri hansen</prepared> - <prepared>Bartlomiej Puzon</prepared> + <prepared>Siri hansen, Bartlomiej Puzon</prepared> <responsible></responsible> <docno>1</docno> <approved></approved> @@ -60,17 +59,16 @@ <p>This function is a shortcut allowing to start a trace with one command. Each tuple in <c>Patterns</c> is converted to list which is in turn passed to <c>ttb:tpl</c>. - The call:<code type="none"> + The call:</p><code type="none"> ttb:start_trace([Node, OtherNode], [{mod, foo, []}, {mod, bar, 2}], {all, call}, [{file, File}, {handler,{fun myhandler/4, S}}])</code> - is equivalent to <code type="none"> + <p>is equivalent to</p> <code type="none"> ttb:start_trace([Node, OtherNode], [{file, File}, {handler,{fun myhandler/4, S}}]), ttb:tpl(mod, foo, []), ttb:tpl(mod, bar, 2, []), ttb:p(all, call)</code> - </p> </desc> </func> <func> @@ -193,7 +191,7 @@ ttb:p(all, call)</code> (i.e. on diskless nodes), a custom module to handle autostart information storage and retrieval can be provided by specifying <c>ttb_autostart_module</c> environment variable for the <c>runtime_tools</c> - application. The module has to respond to the following API: + application. The module has to respond to the following API:</p> <taglist> <tag><c>write_config(Data) -> ok</c></tag> <item>Store the provided data for further retrieval. It is @@ -207,7 +205,6 @@ ttb:p(all, call)</code> must return <c>{error, Error}</c>. </item> </taglist> - </p> <p>The <c>resume</c> option implies the default <c>FetchTimeout</c>, which is 10 seconds</p> </desc> @@ -272,17 +269,19 @@ ttb:p(all, call)</code> <item>Clear trace pattern on global function calls</item> </taglist> <p>With <c>tp</c> and <c>tpl</c> one of match specification shortcuts - may be used (example: <c>ttb:tp(foo_module, caller)</c>). The shortcuts are: + may be used (example: <c>ttb:tp(foo_module, caller)</c>). The shortcuts are:</p> <taglist> + <tag/> <item><c>return</c> - for <c>[{'_',[],[{return_trace}]}]</c> (report the return value)</item> + <tag/> <item><c>caller</c> - for <c>[{'_',[],[{message,{caller}}]}]</c> (report the calling function)</item> + <tag/> <item><c>{codestr, Str}</c> - for <c>dbg:fun2ms/1</c> arguments passed as strings (example: <c>"fun(_) -> return_trace() end"</c>) </item> </taglist> - </p> </desc> </func> <func> diff --git a/lib/observer/doc/src/ttb_ug.xml b/lib/observer/doc/src/ttb_ug.xml index ba8c997133..e2a28d67d0 100644 --- a/lib/observer/doc/src/ttb_ug.xml +++ b/lib/observer/doc/src/ttb_ug.xml @@ -320,7 +320,7 @@ do_print(Out,{trace_ts,P,return_from,{M,F,A},R,Ts},N) -> </code> </section> <section> - <label>Overload protection</label> + <title>Overload protection</title> <p>When tracing live systems, special care needs to be always taken not to overload a node with too heavy tracing. <c>ttb</c> provides the <c>overload</c> option to help to address the problem.</p> @@ -747,7 +747,7 @@ f3() -> of the <c>ttb</c> for setting trace flags on processes and trace patterns for call trace, i.e. the functions <c>p</c>, <c>tp</c>, <c>tpl</c>, <c>ctp</c>, <c>ctpl</c> and <c>ctpg</c>. There are only - two things added by <c>ttb</c> for these functions: + two things added by <c>ttb</c> for these functions:</p> <list type="bulleted"> <item>all calls are stored in the history buffer and can be recalled and stored in a configuration file. This makes it @@ -756,9 +756,8 @@ f3() -> typing when using <c>ttb</c> from the erlang shell;</item> <item>shortcuts are provided for the most common match specifications (in order not to force the user to use - <c>dbg:fun2ms</c> continually</item>). + <c>dbg:fun2ms</c> continually).</item> </list> - </p> <p>Use <c>list_history/0</c> to see the content of the history buffer, and <c>run_history/1</c> to re-execute one of the entries. </p> diff --git a/lib/observer/src/observer_html_lib.erl b/lib/observer/src/observer_html_lib.erl index 9d8c2d998c..f646f8ed3e 100644 --- a/lib/observer/src/observer_html_lib.erl +++ b/lib/observer/src/observer_html_lib.erl @@ -387,7 +387,9 @@ remove_lgt(Deep) -> remove_lgt_1([$<,$<|Rest]) -> [$>,$>|BinStr] = lists:reverse(Rest), - replace_lgt(lists:reverse(BinStr)). + replace_lgt(lists:reverse(BinStr)); +remove_lgt_1(TruncBin) -> + TruncBin. replace_lgt([$<|R]) -> ["<"|replace_lgt(R)]; diff --git a/lib/orber/doc/src/notes.xml b/lib/orber/doc/src/notes.xml index 3f7d4121fd..7b5d0f96ca 100644 --- a/lib/orber/doc/src/notes.xml +++ b/lib/orber/doc/src/notes.xml @@ -169,11 +169,9 @@ <section><title>Known Bugs and Problems</title> <list> <item> - <p> <p> - </p></p> - <p> - Own Id: OTP-10675 Aux Id: seq12154 </p> + Own Id: OTP-10675 Aux Id: seq12154 + </p> </item> </list> </section> diff --git a/lib/public_key/asn1/PKIX1Explicit88.asn1 b/lib/public_key/asn1/PKIX1Explicit88.asn1 index 91758d7269..81fec8283e 100644 --- a/lib/public_key/asn1/PKIX1Explicit88.asn1 +++ b/lib/public_key/asn1/PKIX1Explicit88.asn1 @@ -86,22 +86,22 @@ id-at-initials AttributeType ::= { id-at 43 } id-at-generationQualifier AttributeType ::= { id-at 44 } X520name ::= CHOICE { - teletexString TeletexString (SIZE (1..ub-name)), - printableString PrintableString (SIZE (1..ub-name)), - universalString UniversalString (SIZE (1..ub-name)), - utf8String UTF8String (SIZE (1..ub-name)), - bmpString BMPString (SIZE (1..ub-name)) } + teletexString TeletexString (SIZE (1..ub-name-teletex)), + printableString PrintableString (SIZE (1..ub-name-printable)), + universalString UniversalString (SIZE (1..ub-name-universal)), + utf8String UTF8String (SIZE (1..ub-name-utf8)), + bmpString BMPString (SIZE (1..ub-name-universal)) } -- Naming attributes of type X520CommonName id-at-commonName AttributeType ::= { id-at 3 } X520CommonName ::= CHOICE { - teletexString TeletexString (SIZE (1..ub-common-name)), - printableString PrintableString (SIZE (1..ub-common-name)), - universalString UniversalString (SIZE (1..ub-common-name)), - utf8String UTF8String (SIZE (1..ub-common-name)), - bmpString BMPString (SIZE (1..ub-common-name)) } + teletexString TeletexString (SIZE (1..ub-common-name-teletex)), + printableString PrintableString (SIZE (1..ub-common-name-printable)), + universalString UniversalString (SIZE (1..ub-common-name-universal)), + utf8String UTF8String (SIZE (1..ub-common-name-utf8)), + bmpString BMPString (SIZE (1..ub-common-name-universal)) } -- Naming attributes of type X520LocalityName @@ -110,9 +110,9 @@ id-at-localityName AttributeType ::= { id-at 7 } X520LocalityName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-locality-name)), printableString PrintableString (SIZE (1..ub-locality-name)), - universalString UniversalString (SIZE (1..ub-locality-name)), - utf8String UTF8String (SIZE (1..ub-locality-name)), - bmpString BMPString (SIZE (1..ub-locality-name)) } + universalString UniversalString (SIZE (1..ub-locality-name-universal)), + utf8String UTF8String (SIZE (1..ub-locality-name-utf8)), + bmpString BMPString (SIZE (1..ub-locality-name-universal)) } -- Naming attributes of type X520StateOrProvinceName @@ -121,9 +121,9 @@ id-at-stateOrProvinceName AttributeType ::= { id-at 8 } X520StateOrProvinceName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-state-name)), printableString PrintableString (SIZE (1..ub-state-name)), - universalString UniversalString (SIZE (1..ub-state-name)), - utf8String UTF8String (SIZE (1..ub-state-name)), - bmpString BMPString (SIZE(1..ub-state-name)) } + universalString UniversalString (SIZE (1..ub-state-name-universal)), + utf8String UTF8String (SIZE (1..ub-state-name-utf8)), + bmpString BMPString (SIZE(1..ub-state-name-universal)) } -- Naming attributes of type X520OrganizationName @@ -131,15 +131,15 @@ id-at-organizationName AttributeType ::= { id-at 10 } X520OrganizationName ::= CHOICE { teletexString TeletexString - (SIZE (1..ub-organization-name)), + (SIZE (1..ub-organization-name-teletex)), printableString PrintableString - (SIZE (1..ub-organization-name)), + (SIZE (1..ub-organization-name-printable)), universalString UniversalString - (SIZE (1..ub-organization-name)), + (SIZE (1..ub-organization-name-universal)), utf8String UTF8String - (SIZE (1..ub-organization-name)), + (SIZE (1..ub-organization-name-utf8)), bmpString BMPString - (SIZE (1..ub-organization-name)) } + (SIZE (1..ub-organization-name-universal)) } -- Naming attributes of type X520OrganizationalUnitName @@ -147,26 +147,26 @@ id-at-organizationalUnitName AttributeType ::= { id-at 11 } X520OrganizationalUnitName ::= CHOICE { teletexString TeletexString - (SIZE (1..ub-organizational-unit-name)), + (SIZE (1..ub-organizational-unit-name-teletex)), printableString PrintableString - (SIZE (1..ub-organizational-unit-name)), + (SIZE (1..ub-organizational-unit-name-printable)), universalString UniversalString - (SIZE (1..ub-organizational-unit-name)), + (SIZE (1..ub-organizational-unit-name-universal)), utf8String UTF8String - (SIZE (1..ub-organizational-unit-name)), + (SIZE (1..ub-organizational-unit-name-utf8)), bmpString BMPString - (SIZE (1..ub-organizational-unit-name)) } + (SIZE (1..ub-organizational-unit-name-universal)) } -- Naming attributes of type X520Title id-at-title AttributeType ::= { id-at 12 } X520Title ::= CHOICE { - teletexString TeletexString (SIZE (1..ub-title)), - printableString PrintableString (SIZE (1..ub-title)), - universalString UniversalString (SIZE (1..ub-title)), - utf8String UTF8String (SIZE (1..ub-title)), - bmpString BMPString (SIZE (1..ub-title)) } + teletexString TeletexString (SIZE (1..ub-title-teletex)), + printableString PrintableString (SIZE (1..ub-title-printable)), + universalString UniversalString (SIZE (1..ub-title-universal)), + utf8String UTF8String (SIZE (1..ub-title-utf8)), + bmpString BMPString (SIZE (1..ub-title-universal)) } -- Naming attributes of type X520dnQualifier @@ -193,9 +193,9 @@ id-at-pseudonym AttributeType ::= { id-at 65 } X520Pseudonym ::= CHOICE { teletexString TeletexString (SIZE (1..ub-pseudonym)), printableString PrintableString (SIZE (1..ub-pseudonym)), - universalString UniversalString (SIZE (1..ub-pseudonym)), - utf8String UTF8String (SIZE (1..ub-pseudonym)), - bmpString BMPString (SIZE (1..ub-pseudonym)) } + universalString UniversalString (SIZE (1..ub-pseudonym-universal)), + utf8String UTF8String (SIZE (1..ub-pseudonym-utf8)), + bmpString BMPString (SIZE (1..ub-pseudonym-universal)) } -- Naming attributes of type DomainComponent (from RFC 2247) @@ -363,7 +363,7 @@ PrivateDomainName ::= CHOICE { printable PrintableString (SIZE (1..ub-domain-name-length)) } OrganizationName ::= PrintableString - (SIZE (1..ub-organization-name-length)) + (SIZE (1..ub-organization-name-printable)) -- see also teletex-organization-name NumericUserIdentifier ::= NumericString @@ -386,7 +386,7 @@ OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) -- see also teletex-organizational-unit-names OrganizationalUnitName ::= PrintableString (SIZE - (1..ub-organizational-unit-name-length)) + (1..ub-organizational-unit-name-printable)) -- Built-in Domain-defined Attributes @@ -415,16 +415,16 @@ ExtensionAttribute ::= SEQUENCE { common-name INTEGER ::= 1 -CommonName ::= PrintableString (SIZE (1..ub-common-name-length)) +CommonName ::= PrintableString (SIZE (1..ub-common-name-printable)) teletex-common-name INTEGER ::= 2 -TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length)) +TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-teletex)) teletex-organization-name INTEGER ::= 3 TeletexOrganizationName ::= - TeletexString (SIZE (1..ub-organization-name-length)) + TeletexString (SIZE (1..ub-organization-name-teletex)) teletex-personal-name INTEGER ::= 4 @@ -445,7 +445,7 @@ TeletexOrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF TeletexOrganizationalUnitName TeletexOrganizationalUnitName ::= TeletexString - (SIZE (1..ub-organizational-unit-name-length)) + (SIZE (1..ub-organizational-unit-name-teletex)) pds-name INTEGER ::= 7 @@ -570,16 +570,39 @@ TeletexDomainDefinedAttribute ::= SEQUENCE { -- Upper Bounds ub-name INTEGER ::= 32768 +ub-name-teletex INTEGER ::= 65536 +ub-name-printable INTEGER ::= 65536 +ub-name-universal INTEGER ::= 131072 +ub-name-utf8 INTEGER ::= 131072 ub-common-name INTEGER ::= 64 +ub-common-name-teletex INTEGER::= 128 +ub-common-name-printable INTEGER ::= 128 +ub-common-name-universal INTEGER ::= 256 +ub-common-name-utf8 INTEGER ::= 256 ub-locality-name INTEGER ::= 128 +ub-locality-name-utf8 INTEGER ::= 256 +ub-locality-name-universal INTEGER ::= 256 ub-state-name INTEGER ::= 128 +ub-state-name-universal INTEGER ::= 256 +ub-state-name-utf8 INTEGER ::= 256 ub-organization-name INTEGER ::= 64 +ub-organization-name-printable INTEGER ::= 128 +ub-organization-name-teletex INTEGER ::= 128 +ub-organization-name-universal INTEGER ::= 256 +ub-organization-name-utf8 INTEGER ::= 256 ub-organizational-unit-name INTEGER ::= 64 +ub-organizational-unit-name-printable INTEGER ::= 128 +ub-organizational-unit-name-teletex INTEGER ::= 128 +ub-organizational-unit-name-universal INTEGER ::= 256 +ub-organizational-unit-name-utf8 INTEGER ::= 256 ub-title INTEGER ::= 64 +ub-title-teletex INTEGER ::= 128 +ub-title-printable INTEGER ::= 128 +ub-title-universal INTEGER ::= 256 +ub-title-utf8 INTEGER ::= 256 ub-serial-number INTEGER ::= 64 ub-match INTEGER ::= 128 ub-emailaddress-length INTEGER ::= 255 -ub-common-name-length INTEGER ::= 64 ub-country-name-alpha-length INTEGER ::= 2 ub-country-name-numeric-length INTEGER ::= 3 ub-domain-defined-attributes INTEGER ::= 4 @@ -594,14 +617,14 @@ ub-given-name-length INTEGER ::= 16 ub-initials-length INTEGER ::= 5 ub-integer-options INTEGER ::= 256 ub-numeric-user-id-length INTEGER ::= 32 -ub-organization-name-length INTEGER ::= 64 -ub-organizational-unit-name-length INTEGER ::= 32 ub-organizational-units INTEGER ::= 4 ub-pds-name-length INTEGER ::= 16 ub-pds-parameter-length INTEGER ::= 30 ub-pds-physical-address-lines INTEGER ::= 6 ub-postal-code-length INTEGER ::= 16 ub-pseudonym INTEGER ::= 128 +ub-pseudonym-utf8 INTEGER ::= 256 +ub-pseudonym-universal INTEGER ::= 256 ub-surname-length INTEGER ::= 40 ub-terminal-id-length INTEGER ::= 24 ub-unformatted-address-length INTEGER ::= 180 diff --git a/lib/sasl/doc/src/alarm_handler.xml b/lib/sasl/doc/src/alarm_handler.xml index b98f22d2a1..68076ba28d 100644 --- a/lib/sasl/doc/src/alarm_handler.xml +++ b/lib/sasl/doc/src/alarm_handler.xml @@ -37,94 +37,92 @@ <module>alarm_handler</module> <modulesummary>An Alarm Handling Process</modulesummary> <description> - <p>The alarm handler process is a <c>gen_event</c> event manager - process which receives alarms in the system. This process is not - intended to be a complete alarm handler. It defines a - place to which alarms can be sent. One simple event handler is - installed in the alarm handler at start-up, but users are - encouraged to write and install their own handlers. - </p> + <p>The alarm handler process is a + <seealso marker="stdlib:gen_event"><c>gen_event</c></seealso> + event manager process that receives alarms in the system. + This process is not intended to be a complete alarm handler. + It defines a place to which alarms can be sent. One simple event + handler is installed in the alarm handler at startup, but users + are encouraged to write and install their own handlers.</p> <p>The simple event handler sends all alarms as info reports to - the error logger, and saves all of them in a list which can be - passed to a user defined event handler, which may be installed at - a later stage. The list can grow large if many alarms are - generated. So it is a good reason to install a better user defined - handler. - </p> - <p>There are functions to set and clear alarms. The format of - alarms are defined by the user. For example, an event handler - for SNMP could be defined, together with an alarm MIB. - </p> - <p>The alarm handler is part of the SASL application. - </p> + the error logger, and saves all in a list. This list can be + passed to a user-defined event handler, which can be installed + later. The list can grow large if many alarms are generated. + This is a good reason to install a better user-defined + handler.</p> + <p>Functions are provided to set and clear alarms. The alarm + format is defined by the user. For example, an event handler + for SNMP can be defined, together with an alarm Management + Information Base (MIB).</p> + <p>The alarm handler is part of the <c>SASL</c> application.</p> <p>When writing new event handlers for the alarm handler, the - following events must be handled: - </p> + following events must be handled:</p> <taglist> <tag><c>{set_alarm, {AlarmId, AlarmDescr}}</c></tag> <item> <p>This event is generated by - <c>alarm_handler:set_alarm({AlarmId, AlarmDecsr})</c>. - </p> + <c>alarm_handler:set_alarm({AlarmId, AlarmDecsr})</c>.</p> </item> <tag><c>{clear_alarm, AlarmId}</c></tag> <item> <p>This event is - generated by <c>alarm_handler:clear_alarm(AlarmId)</c>. - </p> + generated by <c>alarm_handler:clear_alarm(AlarmId)</c>.</p> </item> </taglist> <p>The default simple handler is called <c>alarm_handler</c> and - it may be exchanged by calling <c>gen_event:swap_handler/3</c> - as <c>gen_event:swap_handler(alarm_handler, {alarm_handler, swap}, {NewHandler, Args})</c>. <c>NewHandler:init({Args, {alarm_handler, Alarms}})</c> is called. Refer to gen_event(3) - for further details. - </p> + it can be exchanged by calling + <seealso marker="stdlib:gen_event#swap_handler/3"><c>gen_event:swap_handler/3</c></seealso> + as <c>gen_event:swap_handler(alarm_handler, {alarm_handler, swap}, + {NewHandler, Args})</c>. <c>NewHandler:init({Args, {alarm_handler, + Alarms}})</c> is called. For more details, see + <seealso marker="stdlib:gen_event"><c>gen_event(3)</c></seealso> + in <c>STDLIB</c>.</p> </description> + <funcs> <func> <name>clear_alarm(AlarmId) -> void()</name> - <fsummary>Clear the specified alarms</fsummary> + <fsummary>Clears the specified alarms.</fsummary> <type> <v>AlarmId = term()</v> </type> <desc> - <p>Sends the <c>clear_alarm</c> event to all event handlers.</p> + <p>Sends event <c>clear_alarm</c> to all event handlers.</p> <p>When receiving this event, the default simple handler - clears the latest received alarm with id <c>AlarmId</c>. - </p> + clears the latest received alarm with id <c>AlarmId</c>.</p> </desc> </func> + <func> <name>get_alarms() -> [alarm()]</name> - <fsummary>Get all active alarms</fsummary> + <fsummary>Gets all active alarms.</fsummary> <desc> <p>Returns a list of all active alarms. This function can only - be used when the simple handler is installed. - </p> + be used when the simple handler is installed.</p> </desc> </func> + <func> <name>set_alarm(alarm())</name> - <fsummary>Set an alarm with an id</fsummary> + <fsummary>Sets an alarm with an id.</fsummary> <type> <v>alarm() = {AlarmId, AlarmDescription}</v> <v>AlarmId = term()</v> <v>AlarmDescription = term()</v> </type> <desc> - <p>Sends the <c>set_alarm</c> event to all event handlers.</p> + <p>Sends event <c>set_alarm</c> to all event handlers.</p> <p>When receiving this event, the default simple handler - stores the alarm. The <c>AlarmId</c> identifies the alarm - and is used when the alarm is cleared. - </p> + stores the alarm. <c>AlarmId</c> identifies the alarm + and is used when the alarm is cleared.</p> </desc> </func> </funcs> <section> <title>See Also</title> - <p>error_logger(3), gen_event(3) - </p> + <p><seealso marker="kernel:error_logger"><c>error_logger(3)</c></seealso>, + <seealso marker="stdlib:gen_event"><c>gen_event(3)</c></seealso></p> </section> </erlref> diff --git a/lib/sasl/doc/src/appup.xml b/lib/sasl/doc/src/appup.xml index 72333960ec..b54d2adb19 100644 --- a/lib/sasl/doc/src/appup.xml +++ b/lib/sasl/doc/src/appup.xml @@ -29,78 +29,85 @@ <rev></rev> </header> <file>appup</file> - <filesummary>Application upgrade file.</filesummary> + <filesummary>Application upgrade file</filesummary> <description> <p>The <em>application upgrade file</em> defines how an application is upgraded or downgraded in a running system.</p> - <p>This file is used by the functions in <c>systools</c> when - generating a release upgrade file <c>relup</c>.</p> + <p>This file is used by the functions in + <seealso marker="systools"><c>systools</c></seealso> + when generating a release upgrade file <c>relup</c>.</p> </description> <section> - <title>FILE SYNTAX</title> - <p>The application upgrade file should be called - <c>Application.appup</c> where <c>Application</c> is the name of - the application. The file should be located in the <c>ebin</c> + <title>File Syntax</title> + <p>The application upgrade file is to be called + <c>Application.appup</c>, where <c>Application</c> is the + application name. The file is to be located in the <c>ebin</c> directory for the application.</p> <p>The <c>.appup</c> file contains one single Erlang term, which defines the instructions used to upgrade or downgrade - the application. The file has the following syntax:</p> + the application. The file has the following syntax:</p> <code type="none"> {Vsn, [{UpFromVsn, Instructions}, ...], - [{DownToVsn, Instructions}, ...]}. - </code> - <list type="bulleted"> - <item> - <p><c>Vsn = string()</c> is the current version of - the application.</p> - </item> - <item> - <p><c>UpFromVsn = string() | binary()</c> is an earlier - version of the application to upgrade from. If it is a - string, it will be interpreted as a specific version - number. If it is a binary, it will be interpreted as a - regular expression which can match multiple version - numbers.</p> - </item> - <item> - <p><c>DownToVsn = string() | binary()</c> is an earlier - version of the application to downgrade to. If it is a - string, it will be interpreted as a specific version - number. If it is a binary, it will be interpreted as a - regular expression which can match multiple version - numbers.</p> - </item> - <item> - <p><c>Instructions</c> is a list of <em>release upgrade instructions</em>, see below. It is recommended to use + [{DownToVsn, Instructions}, ...]}.</code> + <taglist> + <tag><c>Vsn = string()</c></tag> + <item><p>Current application version.</p></item> + <tag><c>UpFromVsn = string() | binary()</c></tag> + <item><p>An earlier + application version to upgrade from. If it is a + string, it is interpreted as a specific version + number. If it is a binary, it is interpreted as a + regular expression that can match multiple version + numbers.</p></item> + <tag><c>DownToVsn = string() | binary()</c></tag> + <item><p>An earlier + application version to downgrade to. If it is a + string, it is interpreted as a specific version + number. If it is a binary, it is interpreted as a + regular expression that can match multiple version + numbers.</p></item> + <tag><c>Instructions</c></tag> + <item><p>A list of <em>release upgrade instructions</em>, see + <seealso marker="#Release Upgrade Instructions">Release + Upgrade Instructions</seealso>. It is recommended to use high-level instructions only. These are automatically translated to low-level instructions by <c>systools</c> when - creating the <c>relup</c> file.</p> - </item> - </list> - <p>In order to avoid duplication of upgrade instructions it is - allowed to use regular expressions to specify the <c>UpFromVsn</c> - and <c>DownToVsn</c>. To be considered a regular expression, the - version identifier must be specified as a binary, e.g.</p> - <code type="none"><<"2\\.1\\.[0-9]+">></code> - <p>will match all versions <c>2.1.x</c>, where x is any number.</p> - <p>Note that the regular expression must match the complete - version string, so the above example will work for for - e.g. <c>2.1.1</c>, but not for <c>2.1.1.1</c></p> + creating the <c>relup</c> file.</p></item> + </taglist> + <p>To avoid duplication of upgrade instructions, it is + allowed to use regular expressions to specify <c>UpFromVsn</c> + and <c>DownToVsn</c>. To be considered a regular expression, the + version identifier must be specified as a binary. For example, + the following match all versions <c>2.1.x</c>, where <c>x</c> is + any number:</p> + <code type="none"> +<<"2\\.1\\.[0-9]+">></code> + <p>Notice that the regular expression must match the complete + version string, so this example works for, for example, + <c>2.1.1</c>, but not for <c>2.1.1.1</c>.</p> </section> <section> - <title>RELEASE UPGRADE INSTRUCTIONS</title> + <marker id="Release Upgrade Instructions"></marker> + <title>Release Upgrade Instructions</title> <p>Release upgrade instructions are interpreted by the release handler when an upgrade or downgrade is made. For more - information about release handling, refer to <em>OTP Design Principles</em>.</p> - <p>A process is said to <em>use</em> a module <c>Mod</c>, if + information about release handling, see + <seealso marker="doc/design_principles:release_handling">OTP + Design Principles</seealso> in <em>System Documentation</em>.</p> + <p>A process is said to <em>use</em> a module <c>Mod</c> if <c>Mod</c> is listed in the <c>Modules</c> part of the child - specification used to start the process, see <c>supervisor(3)</c>. - In the case of gen_event, an event manager process is said to use - <c>Mod</c> if <c>Mod</c> is an installed event handler.</p> - <p><em>High-level instructions</em></p> + specification used to start the process, see + <seealso marker="stdlib:supervisor"><c>supervisor(3)</c></seealso>. + In the case of + <seealso marker="stdlib:gen_event"><c>gen_event</c></seealso>, + an event manager process is said to use <c>Mod</c> if <c>Mod</c> + is an installed event handler.</p> + + <section> + <title>High-Level Instructions</title> <pre> {update, Mod} {update, Mod, supervisor} @@ -116,52 +123,68 @@ Change = soft | {advanced,Extra} Extra = term() PrePurge = PostPurge = soft_purge | brutal_purge - DepMods = [Mod] - </pre> - <p>Synchronized code replacement of processes using the module - <c>Mod</c>. All those processes are suspended using - <c>sys:suspend</c>, the new version of the module is loaded and - then the processes are resumed using <c>sys:resume</c>.</p> - <p><c>Change</c> defaults to <c>soft</c> and defines the type of - code change. If it is set to <c>{advanced,Extra}</c>, processes - implemented using gen_server, gen_fsm or gen_event will transform - their internal state by calling the callback function - <c>code_change</c>. Special processes will call the callback + DepMods = [Mod]</pre> + <p>Synchronized code replacement of processes using module + <c>Mod</c>.</p> + <p>All those processes are suspended using + <seealso marker="stdlib:sys#suspend/1"><c>sys:suspend</c></seealso>, + the new module version is loaded, and + then the processes are resumed using + <seealso marker="stdlib:sys#resume/1"><c>sys:resume</c></seealso>.</p> + <taglist> + <tag><c>Change</c></tag> + <item><p>Defaults to <c>soft</c> and defines the type of + code change. If it is set to <c>{advanced,Extra}</c>, implemented + processes using + <seealso marker="stdlib:gen_server"><c>gen_server</c></seealso>, + <seealso marker="stdlib:gen_fsm"><c>gen_fsm</c></seealso>, or + <seealso marker="stdlib:gen_event"><c>gen_event</c></seealso> + transform their internal state by calling the callback function + <c>code_change</c>. Special processes call the callback function <c>system_code_change/4</c>. In both cases, the term - <c>Extra</c> is passed as an argument to the callback function.</p> - <p><c>PrePurge</c> defaults to <c>brutal_purge</c> and controls - what action to take with processes that are executing old code - before loading the new version of the module. If the value + <c>Extra</c> is passed as an argument to the callback + function.</p></item> + <tag><c>PrePurge</c></tag> + <item><p>Defaults to <c>brutal_purge</c>. It controls + what action to take with processes executing old code + before loading the new module version. If the value is <c>brutal_purge</c>, the processes are killed. If the value is - <c>soft_purge</c>, <c>release_handler:install_release/1</c> - returns <c>{error,{old_processes,Mod}}</c>.</p> - <p><c>PostPurge</c> defaults to <c>brutal_purge</c> and controls + <c>soft_purge</c>, + <seealso marker="release_handler#install_release/1"><c>release_handler:install_release/1</c></seealso> + returns <c>{error,{old_processes,Mod}}</c>.</p></item> + <tag><c>PostPurge</c></tag> + <item><p>Defaults to <c>brutal_purge</c>. It controls what action to take with processes that are executing old code - when the new version of the module has been loaded. If the value + when the new module version has been loaded. If the value is <c>brutal_purge</c>, the code is purged when the release is made permanent and the processes are killed. If the value is - <c>soft_purge</c>, the release handler will purge the old code - when no remaining processes execute the code.</p> - <p><c>DepMods</c> defaults to [] and defines which other modules - <c>Mod</c> is dependent on. In <c>relup</c>, instructions for - suspending processes using <c>Mod</c> will come before + <c>soft_purge</c>, the release handler purges the old code + when no remaining processes execute the code.</p></item> + <tag><c>DepMods</c></tag> + <item><p>Defaults to <c>[]</c> and defines other modules that + <c>Mod</c> is dependent on. In the <c>relup</c> file, instructions + for suspending processes using <c>Mod</c> come before instructions for suspending processes using modules in - <c>DepMods</c> when upgrading, and vice versa when downgrading. + <c>DepMods</c> when upgrading, and conversely when downgrading. In case of circular dependencies, the order of the instructions in - the <c>appup</c> script is kept.</p> - <p><c>Timeout</c> defines the timeout when suspending processes. - If no value or <c>default</c> is given, the default value for - <c>sys:suspend</c> is used.</p> - <p><c>ModType</c> defaults to <c>dynamic</c> and specifies if - the code is "dynamic", that is if a process using the module does - spontaneously switch to new code, or if it is "static". - When doing an advanced update and upgrading, the new version of a + the <c>appup</c> file is kept.</p></item> + <tag><c>Timeout</c></tag> + <item><p>Defines the time-out when suspending processes. + If no value or <c>default</c> is specified, the default value for + <seealso marker="stdlib:sys#suspend/1"><c>sys:suspend</c></seealso> + is used.</p></item> + <tag><c>ModType</c></tag> + <item><p>Defaults to <c>dynamic</c>. It specifies if + the code is "dynamic", that is, if a process using the module + spontaneously switches to new code, or if it is "static". + When doing an advanced update and upgrade, the new version of a dynamic module is loaded before the process is asked to change code. When downgrading, the process is asked to change code before loading the new version. For static modules, the new version is loaded before the process is asked to change code, both in the case of upgrading and downgrading. Callback modules are - dynamic.</p> + dynamic.</p></item> + </taglist> <p><c>update</c> with argument <c>supervisor</c> is used when changing the start specification of a supervisor.</p> <pre> @@ -170,239 +193,229 @@ {load_module, Mod, PrePurge, PostPurge, DepMods} Mod = atom() PrePurge = PostPurge = soft_purge | brutal_purge - DepMods = [Mod] - </pre> + DepMods = [Mod]</pre> <p>Simple code replacement of the module <c>Mod</c>.</p> - <p>See <c>update</c> above for a description of <c>PrePurge</c> and - <c>PostPurge</c>.</p> - <p><c>DepMods</c> defaults to [] and defines which other modules - <c>Mod</c> is dependent on. In <c>relup</c>, instructions for - loading these modules will come before the instruction for loading - <c>Mod</c> when upgrading, and vice versa when downgrading.</p> + <p>For a description of <c>PrePurge</c> and <c>PostPurge</c>, + see <c>update</c> above.</p> + <p><c>DepMods</c> defaults to <c>[]</c> and defines which other modules + <c>Mod</c> is dependent on. In the <c>relup</c> file, instructions for + loading these modules come before the instruction for loading + <c>Mod</c> when upgrading, and conversely when downgrading.</p> <pre> {add_module, Mod} {add_module, Mod, DepMods} Mod = atom() - DepMods = [Mod] - </pre> + DepMods = [Mod]</pre> <p>Loads a new module <c>Mod</c>.</p> - <p><c>DepMods</c> defaults to [] and defines which other modules - <c>Mod</c> is dependent on. In <c>relup</c>, instructions - related to these modules will come before the instruction for - loading <c>Mod</c> when upgrading, and vice versa when + <p><c>DepMods</c> defaults to <c>[]</c> and defines which other modules + <c>Mod</c> is dependent on. In the <c>relup</c> file, instructions + related to these modules come before the instruction for + loading <c>Mod</c> when upgrading, and conversely when downgrading.</p> <pre> {delete_module, Mod} {delete_module, Mod, DepMods} - Mod = atom() - </pre> + Mod = atom()</pre> <p>Deletes a module <c>Mod</c> using the low-level instructions <c>remove</c> and <c>purge</c>.</p> - <p><c>DepMods</c> defaults to [] and defines which other modules - <c>Mod</c> is dependent on. In <c>relup</c>, instructions - related to these modules will come before the instruction for - removing <c>Mod</c> when upgrading, and vice versa when + <p><c>DepMods</c> defaults to <c>[]</c> and defines which other modules + <c>Mod</c> is dependent on. In the <c>relup</c> file, instructions + related to these modules come before the instruction for + removing <c>Mod</c> when upgrading, and conversely when downgrading.</p> <pre> {add_application, Application} {add_application, Application, Type} Application = atom() - Type = permanent | transient | temporary | load | none - </pre> + Type = permanent | transient | temporary | load | none</pre> <p>Adding an application means that the modules defined by the <c>modules</c> key in the <c>.app</c> file are loaded using <c>add_module</c>.</p> <p><c>Type</c> defaults to <c>permanent</c> and specifies the start type of the application. If <c>Type = permanent | transient | temporary</c>, - the application will be loaded and started in the corresponding way, - see <c>application(3)</c>. If <c>Type = load</c>, the application will - only be loaded. If <c>Type = none</c>, the application will be neither - loaded nor started, although the code for its modules will be loaded.</p> + the application is loaded and started in the corresponding way, see + <seealso marker="kernel:application"><c>application(3)</c></seealso>. + If <c>Type = load</c>, the application is only loaded. + If <c>Type = none</c>, the application is not loaded and not + started, although the code for its modules is loaded.</p> <pre> {remove_application, Application} - Application = atom() - </pre> + Application = atom()</pre> <p>Removing an application means that the application is stopped, - the modules are unloaded using <c>delete_module</c> and then + the modules are unloaded using <c>delete_module</c>, and then the application specification is unloaded from the application controller.</p> <pre> {restart_application, Application} - Application = atom() - </pre> + Application = atom()</pre> <p>Restarting an application means that the application is - stopped and then started again similar to using the instructions + stopped and then started again, similar to using the instructions <c>remove_application</c> and <c>add_application</c> in sequence.</p> - <p><em>Low-level instructions</em></p> + </section> + + <section> + <title>Low-Level Instructions</title> <pre> {load_object_code, {App, Vsn, [Mod]}} App = Mod = atom() - Vsn = string() - </pre> - <p>Reads each <c>Mod</c> from the directory <c>App-Vsn/ebin</c> as - a binary. It does not load the modules. The instruction should be - placed first in the script in order to read all new code from file - to make the suspend-load-resume cycle less time consuming. After - this instruction has been executed, the code server with the new - version of <c>App</c>.</p> + Vsn = string()</pre> + <p>Reads each <c>Mod</c> from directory <c>App-Vsn/ebin</c> as + a binary. It does not load the modules. The instruction is to be + placed first in the script to read all new code from the file + to make the suspend-load-resume cycle less time-consuming.</p> <pre> -point_of_no_return - </pre> +point_of_no_return</pre> <p>If a crash occurs after this instruction, the system cannot - recover and is restarted from the old version of the release. - The instruction must only occur once in a script. It should be + recover and is restarted from the old release version. + The instruction must only occur once in a script. It is to be placed after all <c>load_object_code</c> instructions.</p> <pre> {load, {Mod, PrePurge, PostPurge}} Mod = atom() - PrePurge = PostPurge = soft_purge | brutal_purge - </pre> + PrePurge = PostPurge = soft_purge | brutal_purge</pre> <p>Before this instruction occurs, <c>Mod</c> must have been loaded using <c>load_object_code</c>. This instruction loads the module. - <c>PrePurge</c> is ignored. See the high-level instruction - <c>update</c> for a description of <c>PostPurge</c>.</p> + <c>PrePurge</c> is ignored. For a description of <c>PostPurge</c>, + see the high-level instruction <c>update</c> earlier.</p> <pre> {remove, {Mod, PrePurge, PostPurge}} Mod = atom() - PrePurge = PostPurge = soft_purge | brutal_purge - </pre> + PrePurge = PostPurge = soft_purge | brutal_purge</pre> <p>Makes the current version of <c>Mod</c> old. - <c>PrePurge</c> is ignored. See the high-level instruction - <c>update</c> for a description of <c>PostPurge</c>.</p> + <c>PrePurge</c> is ignored. For a description of <c>PostPurge</c>, + see the high-level instruction <c>update</c> earlier.</p> <pre> {purge, [Mod]} - Mod = atom() - </pre> - <p>Purges each module <c>Mod</c>, that is removes the old code. - Note that any process executing purged code is killed.</p> + Mod = atom()</pre> + <p>Purges each module <c>Mod</c>, that is, removes the old code. + Notice that any process executing purged code is killed.</p> <pre> {suspend, [Mod | {Mod, Timeout}]} Mod = atom() - Timeout = int()>0 | default | infinity - </pre> + Timeout = int()>0 | default | infinity</pre> <p>Tries to suspend all processes using a module <c>Mod</c>. If a - process does not respond, it is ignored. This may cause + process does not respond, it is ignored. This can cause the process to die, either because it crashes when it spontaneously switches to new code, or as a result of a purge operation. If no <c>Timeout</c> is specified or <c>default</c> is - given, the default value for <c>sys:suspend</c> is used.</p> + specified, the default value for + <seealso marker="stdlib:sys#suspend/1"><c>sys:suspend</c></seealso> + is used.</p> <pre> {resume, [Mod]} - Mod = atom() - </pre> + Mod = atom()</pre> <p>Resumes all suspended processes using a module <c>Mod</c>.</p> <pre> {code_change, [{Mod, Extra}]} {code_change, Mode, [{Mod, Extra}]} Mod = atom() Mode = up | down - Extra = term() - </pre> + Extra = term()</pre> <p><c>Mode</c> defaults to <c>up</c> and specifies if it is an - upgrade or downgrade.</p> - <p>This instruction sends a <c>code_change</c> system message to - all processes using a module <c>Mod</c> by calling the function - <c>sys:change_code</c>, passing the term <c>Extra</c> as argument.</p> + upgrade or downgrade. This instruction sends a <c>code_change</c> + system message to all processes using a module <c>Mod</c> by + calling function + <seealso marker="stdlib:sys#change_code/4"><c>sys:change_code</c></seealso>, + passing term <c>Extra</c> as argument.</p> <pre> {stop, [Mod]} - Mod = atom() - </pre> + Mod = atom()</pre> <p>Stops all processes using a module <c>Mod</c> by calling - <c>supervisor:terminate_child/2</c>. The instruction is useful + <seealso marker="stdlib:supervisor#terminate_child/2"><c>supervisor:terminate_child/2</c></seealso>. + This instruction is useful when the simplest way to change code is to stop and restart the - processes which run the code.</p> + processes that run the code.</p> <pre> {start, [Mod]} - Mod = atom() - </pre> + Mod = atom()</pre> <p>Starts all stopped processes using a module <c>Mod</c> by calling - <c>supervisor:restart_child/2</c>.</p> + <seealso marker="stdlib:supervisor#restart_child/2"><c>supervisor:restart_child/2</c></seealso>.</p> <pre> {sync_nodes, Id, [Node]} {sync_nodes, Id, {M, F, A}} Id = term() Node = node() M = F = atom() - A = [term()] - </pre> + A = [term()]</pre> <p><c>apply(M, F, A)</c> must return a list of nodes.</p> - <p>The instruction synchronizes the release installation with other - nodes. Each <c>Node</c> must evaluate this command, with the same + <p>This instruction synchronizes the release installation with other + nodes. Each <c>Node</c> must evaluate this command with the same <c>Id</c>. The local node waits for all other nodes to evaluate - the instruction before execution continues. In case a node goes + the instruction before execution continues. If a node goes down, it is considered to be an unrecoverable error, and the local node is restarted from the old release. There is no - timeout for this instruction, which means that it may hang + time-out for this instruction, which means that it can hang forever.</p> <pre> {apply, {M, F, A}} M = F = atom() - A = [term()] - </pre> - <p>Evaluates <c>apply(M, F, A)</c>. If the instruction appears - before the <c>point_of_no_return</c> instruction, a failure is - caught. <c>release_handler:install_release/1</c> then returns - <c>{error,{'EXIT',Reason}}</c>, unless <c>{error,Error}</c> is - thrown or returned. Then it returns <c>{error,Error}</c>.</p> - <p>If the instruction appears after the <c>point_of_no_return</c> - instruction, and the function call fails, the system is - restarted.</p> + A = [term()]</pre> + <p>Evaluates <c>apply(M, F, A)</c>.</p> + <p>If the instruction appears before instruction + <c>point_of_no_return</c>, a failure is caught. + <seealso marker="release_handler#install_release/1"><c>release_handler:install_release/1</c></seealso> + then returns <c>{error,{'EXIT',Reason}}</c>, unless <c>{error,Error}</c> + is thrown or returned. Then it returns <c>{error,Error}</c>.</p> + <p>If the instruction appears after instruction + <c>point_of_no_return</c> and the function call fails, the + system is restarted.</p> <pre> -restart_new_emulator - </pre> - <p>This instruction is used when erts, kernel, stdlib or sasl is +restart_new_emulator</pre> + <p>This instruction is used when the application <c>ERTS</c>, + <c>Kernel</c>, <c>STDLIB</c>, or <c>SASL</c> is upgraded. It shuts down the current emulator and starts a new one. All processes are terminated gracefully, and the new - version of erts, kernel, stdlib and sasl are used when the - emulator restarts. Only one <c>restart_new_emulator</c> - instruction is allowed in the relup, and it shall be placed - first. <seealso marker="systools#make_relup/3">systools:make_relup/3,4</seealso> - will ensure this when the relup is generated. The rest of the - relup script is executed after the restart as a part of the boot - script.</p> - <p>An info report will be written when the upgrade is - completed. To programatically find out if the upgrade is - complete, + version of <c>ERTS</c>, <c>Kernel</c>, <c>STDLIB</c>, and + <c>SASL</c> are used when the emulator restarts. + Only one <c>restart_new_emulator</c> instruction is allowed + in the <c>relup</c> file, and it must be placed first. + <seealso marker="systools#make_relup/3"><c>systools:make_relup/3,4</c></seealso> + ensures this when the <c>relup</c> file is generated. The rest of the + instructions in the <c>relup</c> file is executed after the + restart as a part of the boot script.</p> + <p>An info report is written when the upgrade is completed. + To programmatically determine if the upgrade is complete, call <seealso marker="release_handler#which_releases/0"> - release_handler:which_releases/0,1</seealso> and check if the + <c>release_handler:which_releases/0,1</c></seealso> and check if the expected release has status <c>current</c>.</p> <p>The new release must still be made permanent after the upgrade - is completed. Otherwise, the old emulator is started in case of + is completed, otherwise the old emulator is started if there is an emulator restart.</p> <warning> - <p>As stated above, the <c>restart_new_emulator</c> - instruction causes the emulator to be restarted with new - versions of <c>erts</c>, <c>kernel</c>, <c>stdlib</c> and - <c>sasl</c>. All other applications, however, will at startup - be running their old versions in this new emulator. In most - cases this is no problem, but every now and then there will be - incompatible changes to the core applications which may cause - trouble in this setting. Such incompatible changes (when - functions are removed) are normally preceded by a deprecation - over two major releases. To make sure your application is not - crashed by an incompatible change, always remove any call to - deprecated functions as soon as possible.</p> + <p>As stated earlier, instruction <c>restart_new_emulator</c> + causes the emulator to be restarted with new versions of + <c>ERTS</c>, <c>Kernel</c>, <c>STDLIB</c>, and <c>SASL</c>. + However, all other applications do at startup run their old + versions in this new emulator. This is usually no problem, + but every now and then incompatible changes occur to the + core applications, which can cause + trouble in this setting. Such incompatible changes (when + functions are removed) are normally preceded by a deprecation + over two major releases. To ensure that your application is not + crashed by an incompatible change, always remove any call to + deprecated functions as soon as possible.</p> </warning> <pre> -restart_emulator - </pre> +restart_emulator</pre> <p>This instruction is similar to <c>restart_new_emulator</c>, - except it shall be placed at the end of the relup script. It is - not related to an upgrade of the emulator or the core + except it must be placed at the end of the <c>relup</c> file. + It is not related to an upgrade of the emulator or the core applications, but can be used by any application when a complete - reboot of the system is reqiured. When generating the - relup, <seealso marker="systools#make_relup/3">systools:make_relup/3,4</seealso> + reboot of the system is required.</p> + <p>When generating the <c>relup</c> file, + <seealso marker="systools#make_relup/3"><c>systools:make_relup/3,4</c></seealso> ensures that there is only one <c>restart_emulator</c> - instruction and that it is the last instruction of the - relup.</p> + instruction and that it is the last instruction in the + <c>relup</c> file.</p> + </section> </section> <section> - <title>SEE ALSO</title> - <p><seealso marker="relup">relup(4)</seealso>, - <seealso marker="release_handler">release_handler(3)</seealso>, - supervisor(3), - <seealso marker="systools">systools(3)</seealso></p> + <title>See Also</title> + <p><seealso marker="release_handler"><c>release_handler(3)</c></seealso>, + <seealso marker="relup"><c>relup(4)</c></seealso>, + <seealso marker="stdlib:supervisor"><c>supervisor(3)</c></seealso>, + <seealso marker="systools"><c>systools(3)</c></seealso></p> </section> </fileref> diff --git a/lib/sasl/doc/src/book.xml b/lib/sasl/doc/src/book.xml index 2bb5339d94..624c32a66f 100644 --- a/lib/sasl/doc/src/book.xml +++ b/lib/sasl/doc/src/book.xml @@ -22,7 +22,7 @@ </legalnotice> - <title>System Application Support Libraries (SASL)</title> + <title>System Architecture Support Libraries (SASL)</title> <prepared>OTP Team</prepared> <docno></docno> <date>1999-04-22</date> @@ -31,7 +31,7 @@ </header> <insidecover> </insidecover> - <pagetext>System Application Support Libraries (SASL)</pagetext> + <pagetext>System Architecture Support Libraries (SASL)</pagetext> <preamble> <contents level="2"></contents> </preamble> diff --git a/lib/sasl/doc/src/error_logging.xml b/lib/sasl/doc/src/error_logging.xml index 7c45b1970e..46b12f3872 100644 --- a/lib/sasl/doc/src/error_logging.xml +++ b/lib/sasl/doc/src/error_logging.xml @@ -31,89 +31,93 @@ <date>1999-04-13</date> <rev>B</rev> <file>error_logging.xml</file> - </header> - <p>The SASL application introduces three types of reports:</p> + </header> + <p>The <c>SASL</c> application introduces three types of reports:</p> <list type="bulleted"> - <item>supervisor report</item> - <item>progress report</item> - <item>crash report.</item> + <item>Supervisor report</item> + <item>Progress report</item> + <item>Crash report</item> </list> - <p>When the SASL application is started, it adds a handler that - formats and writes these reports, as specified in the - configuration parameters for sasl, i.e the environment variables - in the SASL application specification, which is found in the - <c>.app</c> file of SASL. See - <seealso marker="sasl_app">sasl(Application)</seealso>, and app(File) - in the Kernel Reference Manual - for the details.</p> + <p>When the <c>SASL</c> application is started, it adds a handler that + formats and writes these reports, as specified in the configuration + parameters for <c>SASL</c>, that is, the environment variables + in the <c>SASL</c> application specification, which is found in the + <c>.app</c> file of <c>SASL</c>. For details, see the + <seealso marker="sasl_app"><c>sasl(6)</c></seealso> application in the + Reference Manual and the <seealso marker="kernel:app"><c>app(4)</c></seealso> + file in the <c>Kernel</c> Reference Manual.</p> <section> <title>Supervisor Report</title> - <p>A supervisor report is issued when a supervised child terminates in - an unexpected way. A supervisor report contains the following + <p>A supervisor report is issued when a supervised child terminates + unexpectedly. A supervisor report contains the following items:</p> <taglist> - <tag>Supervisor.</tag> - <item>The name of the reporting supervisor.</item> - <tag>Context.</tag> - <item>Indicates in which phase the child terminated + <tag><c>Supervisor</c></tag> + <item><p>Name of the reporting supervisor.</p></item> + <tag><c>Context</c></tag> + <item><p>Indicates in which phase the child terminated from the supervisor's point of view. This can be - <c>start_error</c>, <c>child_terminated</c>, or - <c>shutdown_error</c>.</item> - <tag>Reason.</tag> - <item>The termination reason.</item> - <tag>Offender.</tag> - <item>The start specification for the child.</item> + <c>start_error</c>, <c>child_terminated</c>, or + <c>shutdown_error</c>.</p></item> + <tag><c>Reason</c></tag> + <item><p>Termination reason.</p></item> + <tag><c>Offender</c></tag> + <item><p>Start specification for the child.</p></item> </taglist> </section> <section> <title>Progress Report</title> - <p>A progress report is issued whenever a supervisor starts or - restarts. A progress report contains the following items:</p> + <p>A progress report is issued when a supervisor starts or + restarts a child. A progress report contains the following items:</p> <taglist> - <tag>Supervisor.</tag> - <item>The name of the reporting supervisor.</item> - <tag>Started.</tag> - <item>The start specification for the successfully - started child.</item> + <tag><c>Supervisor</c></tag> + <item><p>Name of the reporting supervisor.</p></item> + <tag><c>Started</c></tag> + <item><p>Start specification for the successfully + started child.</p></item> </taglist> <marker id="CRASH"></marker> </section> <section> <title>Crash Report</title> - <p>Processes started with the <c>proc_lib:spawn</c> or - <c>proc_lib:spawn_link</c> functions are wrapped within a - <c>catch</c>. A crash report is issued whenever such a process - terminates with an unexpected reason, which is any reason other - than <c>normal</c> or <c>shutdown</c>. Processes using the - <c>gen_server</c> and <c>gen_fsm</c> behaviours are examples of - such processes. A crash report contains the following items:</p> + <p>Processes started with functions + <seealso marker="stdlib:proc_lib#spawn/1"><c>proc_lib:spawn</c></seealso> or + <seealso marker="stdlib:proc_lib#spawn_link/1"><c>proc_lib:spawn_link</c></seealso> + are wrapped within a <c>catch</c>. A crash report is issued when such + a process terminates with an unexpected reason, which is any reason + other than <c>normal</c>, <c>shutdown</c>, or <c>{shutdown,Term}</c>. + Processes using behaviors + <seealso marker="stdlib:gen_server"><c>gen_server</c></seealso> or + <seealso marker="stdlib:gen_fsm"><c>gen_fsm</c></seealso> + are examples of such processes. A crash report contains the following items:</p> <taglist> - <tag>Crasher.</tag> - <item>Information about the crashing process is reported, such - as initial function call, exit reason, and message queue.</item> - <tag>Neighbours.</tag> - <item>Information about processes which are linked to the crashing + <tag><c>Crasher</c></tag> + <item><p>Information about the crashing process, such + as initial function call, exit reason, and message queue.</p></item> + <tag><c>Neighbours</c></tag> + <item><p>Information about processes that are linked to the crashing process and do not trap exits. These processes are the - neighbours which will terminate because of this process + neighbours that terminate because of this process crash. The information gathered is the same as the information - for Crasher, shown in the previous item.</item> + for Crasher, described in the previous item.</p></item> </taglist> <section> - <title>An Example</title> - <p>The following example shows the reports which are generated - when a process crashes. The example process is an + <title>Example</title> + <p>The following example shows the reports generated + when a process crashes. The example process is a <c>permanent</c> process supervised by the <c>test_sup</c> supervisor. A division by zero is executed and the error is first reported by the faulty process. A crash report is - generated as the process was started using the - <c>proc_lib:spawn/3</c> function. The supervisor generates a - supervisor report showing the process that has crashed, and then a + generated, as the process was started using function + <seealso marker="stdlib:proc_lib#spawn/3"><c>proc_lib:spawn/3</c></seealso>. + The supervisor generates a + supervisor report showing the crashed process. A progress report is generated when the process is finally - re-started.</p> + restarted.</p> <pre> =ERROR REPORT==== 27-May-1996::13:38:56 === <0.63.0>: Divide by zero ! @@ -146,7 +150,6 @@ {shutdown,200}, {child_type,worker}] - =PROGRESS REPORT==== 27-May-1996::13:38:56 === Supervisor: {local,test_sup} Started: [{pid,<0.64.0>}, @@ -154,64 +157,66 @@ {mfa,{test,t,[]}}, {restart_type,permanent}, {shutdown,200}, - {child_type,worker}] - </pre> + {child_type,worker}]</pre> </section> </section> <section> <title>Multi-File Error Report Logging</title> - <p>Multi-file error report logging is used to store error messages, - which are received by the <c>error_logger</c>. The error messages + <p>Multi-file error report logging is used to store error messages + received by <c>error_logger</c>. The error messages are stored in several files and each file is smaller than a - specified amount of kilobytes, and no more than a specified number - of files exist at the same time. The logging is very fast because + specified number of kilobytes. No more than a specified number + of files exist at the same time. The logging is very fast, as each error message is written as a binary term.</p> - <p>Refer to - <c>sasl</c> application in the Reference Manual for more details.</p> + <p>For more details, see the + <seealso marker="sasl_app"><c>sasl(6)</c></seealso> + application in the Reference Manual.</p> </section> <section> <title>Report Browser</title> <p>The report browser is used to browse and format error reports - written by the error logger handler <c>log_mf_h</c> defined in - <c>stdlib</c>.</p> + written by the error logger handler + <seealso marker="stdlib:log_mf_h"><c>log_mf_h</c></seealso> + defined in <c>STDLIB</c>.</p> <p>The <c>log_mf_h</c> handler writes all reports to a - report logging directory. This directory is specified when - configuring the SASL application.</p> + report logging directory, which is specified when + configuring the <c>SASL</c> application.</p> <p>If the report browser is - used off-line, the reports can be copied to another directory - which is specified when starting the browser. If no such directory - is specified, the browser reads reports from the SASL + used offline, the reports can be copied to another directory + specified when starting the browser. If no such directory + is specified, the browser reads reports from the <c>SASL</c> <c>error_logger_mf_dir</c>.</p> <section> - <title>Starting the Report Browser</title> - <p>Start the <c>rb_server</c> with the function - <c>rb:start([Options])</c> as shown in the following - example:</p> + <title>Starting Report Browser</title> + <p>Start the <c>rb_server</c> with function + <seealso marker="rb#start/1"><c>rb:start([Options])</c></seealso> + as shown in the following example:</p> <pre> - - 5><input>rb:start([{max, 20}]).</input> + 5> <input>rb:start([{max, 20}]).</input> rb: reading report...done. rb: reading report...done. rb: reading report...done. rb: reading report...done. - </pre> + {ok,<0.199.0>}</pre> </section> <section> - <title>On-line Help</title> - <p>Enter the command <em>rb:help().</em> to access the report - browser on-line help system.</p> + <title>Online Help</title> + <p>Enter command + <seealso marker="rb#help/0"><c>rb:help()</c></seealso> + to access the report browser online help system.</p> </section> <section> - <title>List Reports in the Server</title> - <p>The function <c>rb:list()</c> lists all loaded reports:</p> + <title>List Reports in Server</title> + <p>Use function + <seealso marker="rb#list/0"><c>rb:list()</c></seealso> + to list all loaded reports:</p> <pre> - - 4><input>rb:list().</input> + 4> <input>rb:list().</input> No Type Process Date Time == ==== ======= ==== ==== 20 progress <0.17.0> 1996-10-16 16:14:54 @@ -234,17 +239,15 @@ 3 progress <0.14.0> 1996-10-16 16:16:36 2 error <0.15.0> 1996-10-16 16:17:04 1 progress <0.14.0> 1996-10-16 16:17:09 - ok - </pre> + ok</pre> </section> <section> <title>Show Reports</title> - <p>To show details of a specific report, use the function - <c>rb:show(Number)</c>:</p> + <p>Use function + <seealso marker="rb#show/1"><c>rb:show(Number)</c></seealso> + to show details of a specific report:</p> <pre> - -10> <input>rb:show(1).</input> 7> <input>rb:show(4).</input> PROGRESS REPORT <0.20.0> 1996-10-16 16:16:36 @@ -259,7 +262,7 @@ started {child_type,worker}] ok -8> rb:show(9). +8> <input>rb:show(9).</input> CRASH REPORT <0.24.0> 1996-10-16 16:16:21 =============================================================================== @@ -287,19 +290,17 @@ heap_size 610 stack_size 142 reductions 54 -ok - </pre> +ok</pre> </section> <section> - <title>Search the Reports</title> - <p>It is possible to show all reports which contain a common - pattern. Suppose a process crashes because it tries to call a - non-existing function <c>release_handler:mbj_func.</c> We could - then show reports as follows:</p> + <title>Search Reports</title> + <p>All reports containing a common pattern can be shown. + Suppose a process crashes because it tries to call a + non-existing function <c>release_handler:mbj_func/1</c>. + The reports can then be shown as follows:</p> <pre> - -12><input>rb:grep("mbj_func").</input> +12> <input>rb:grep("mbj_func").</input> Found match in report number 11 ERROR REPORT <0.24.0> 1996-10-16 16:16:21 @@ -368,19 +369,17 @@ restart_type permanent shutdown 2000 child_type worker -ok - </pre> +ok</pre> </section> <section> - <title>Stop the Server</title> - <p>Stop the <c>rb_server</c> with the function - <c>rb:stop()</c>:</p> + <title>Stop Server</title> + <p>Use function + <seealso marker="rb#stop/0"><c>rb:stop()</c></seealso> + to stop the <c>rb_server</c>:</p> <pre> - -13><input>rb:stop().</input> -ok - </pre> +13> <input>rb:stop().</input> +ok</pre> </section> </section> </chapter> diff --git a/lib/sasl/doc/src/overload.xml b/lib/sasl/doc/src/overload.xml index 35877220ab..5c3d00afeb 100644 --- a/lib/sasl/doc/src/overload.xml +++ b/lib/sasl/doc/src/overload.xml @@ -35,98 +35,88 @@ <module>overload</module> <modulesummary>An Overload Regulation Process</modulesummary> <description> - <p><c>overload</c> is a process which indirectly regulates CPU + <p><c>overload</c> is a process that indirectly regulates the CPU usage in the system. The idea is that a main application calls - the <c>request/0</c> function before starting a major job, and + function + <seealso marker="#request/0"><c>request/0</c></seealso> + before starting a major job and proceeds with the job if the return value is positive; otherwise - the job must not be started. - </p> - <p><c>overload</c> is part of the <c>sasl</c> application, and all - configuration parameters are defined there. - </p> - <p>A set of two intensities are maintained, the <c>total intensity</c> and the <c>accept intensity</c>. For that purpose - there are two configuration parameters, the <c>MaxIntensity</c> - and the <c>Weight</c> value (both are measured in 1/second). - </p> + the job must not be started.</p> + <p><c>overload</c> is part of the <c>SASL</c> application and all + configuration parameters are defined there.</p> + <p>A set of two intensities are maintained, the <c>total intensity</c> + and the <c>accept intensity</c>. For that purpose, + there are two configuration parameters, <c>MaxIntensity</c> + and <c>Weight</c>; both are measured in 1/second.</p> <p>Then total and accept intensities are calculated as follows. Assume that the time of the current call to - <c>request/0</c> is <c>T(n)</c>, and that the time of the - previous call was <c>T(n-1)</c>. - </p> + <c>request/0</c> is <c>T(n)</c> and that the time of the + previous call was <c>T(n-1)</c>.</p> <list type="bulleted"> <item> <p>The current <c>total intensity</c>, denoted - <c>TI(n)</c>, is calculated according to the formula, - </p> - <p><c>TI(n) = exp(-Weight*(T(n) - T(n-1)) * TI(n-1) + Weight</c>, - </p> - <p>where <c>TI(n-1)</c> is the previous total intensity. - </p> + <c>TI(n)</c>, is calculated according to the formula</p> + <p><c>TI(n) = exp(-Weight*(T(n) - T(n-1)) * TI(n-1) + Weight</c>,</p> + <p>where <c>TI(n-1)</c> is the previous <c>total intensity</c>.</p> </item> <item> <p>The current <c>accept intensity</c>, denoted - <c>AI(n)</c>, is determined by the formula, - </p> - <p><c>AI(n) = exp(-Weight*(T(n) - T(n-1)) * AI(n-1) + Weight</c>, - </p> - <p>where <c>AI(n-1)</c> is the previous accept intensity, - provided that the value of <c>exp(-Weight*(T(n) - T(n-1)) * AI(n-1)</c> is less than <c>MaxIntensity</c>; otherwise the - value is - </p> - <p><c>AI(n) = exp(-Weight*(T(n) - T(n-1)) * AI(n-1)</c>. - </p> + <c>AI(n)</c>, is determined by the formula</p> + <p><c>AI(n) = exp(-Weight*(T(n) - T(n-1)) * AI(n-1) + Weight</c>,</p> + <p>where <c>AI(n-1)</c> is the previous <c>accept intensity</c>, + if the value of <c>exp(-Weight*(T(n) - T(n-1)) * AI(n-1)</c> + is less than <c>MaxIntensity</c>. Otherwise the value is</p> + <p><c>AI(n) = exp(-Weight*(T(n) - T(n-1)) * AI(n-1)</c></p> </item> </list> <p>The value of configuration parameter <c>Weight</c> controls the - speed with which the calculations of intensities will react to + speed with which the calculations of intensities react to changes in the underlying input intensity. The inverted value of - <c>Weight</c>, - </p> - <p><c>T = 1/Weight</c></p> - <p>can be thought of as the "time constant" - of the intensity calculation formulas. For example, if <c>Weight = 0.1</c>, then a change in the underlying input intensity will be - reflected in the <c>total</c> and <c>accept intensities</c> within - approximately 10 seconds. - </p> + <c>Weight</c>, <c>T = 1/Weight</c>, can be thought of as the + "time constant" of the intensity calculation formulas. For example, + if <c>Weight = 0.1</c>, a change in the underlying input intensity is + reflected in <c>total intensity</c> and <c>accept intensity</c> within + about 10 seconds.</p> <p>The overload process defines one alarm, which it sets using - <c>alarm_handler:set_alarm(Alarm)</c>. <c>Alarm</c> is defined - as: - </p> + <c>alarm_handler:set_alarm(Alarm)</c>. <c>Alarm</c> is defined + as follows:</p> <taglist> <tag><c>{overload, []}</c></tag> <item> - <p>This alarm is set when the current accept intensity exceeds - <c>MaxIntensity</c>. - </p> + <p>This alarm is set when the current <c>accept intensity</c> exceeds + <c>MaxIntensity</c>.</p> </item> </taglist> - <p>A new overload alarm is not set until the current accept - intensity has fallen below <c>MaxIntensity</c>. To prevent the - overload process from generating a lot of set/reset alarms, the - alarm is not reset until the current accept intensity has fallen - below 75% of <c>MaxIntensity</c>, and it is not until then that - the alarm can be set again. - </p> + <p>A new request is not accepted until the current <c>accept + intensity</c> has fallen below <c>MaxIntensity</c>. To prevent the + overload process from generating many set/reset alarms, the + alarm is not reset until the current <c>accept intensity</c> has fallen + below 75% of <c>MaxIntensity</c>; it is not until then that + the alarm can be set again.</p> </description> + <funcs> <func> <name>request() -> accept | reject</name> - <fsummary>Request to proceed with current job</fsummary> + <fsummary>Requests to proceed with current job.</fsummary> <desc> <p>Returns <c>accept</c> or <c>reject</c> depending on the - current value of the accept intensity. </p> + current value of the <c>accept intensity</c>.</p> <p>The application - calling this function should be processed with the job in + calling this function is to proceed with the job in question if the return value is <c>accept</c>; otherwise it - should not continue with that job. - </p> + is not to continue with that job.</p> </desc> </func> + <func> <name>get_overload_info() -> OverloadInfo</name> - <fsummary>Return current overload information data</fsummary> + <fsummary>Returns current overload information data.</fsummary> <type> - <v>OverloadInfo = [{total_intensity, TotalIntensity}, {accept_intensity, AcceptIntensity}, {max_intensity, MaxIntensity}, {weight, Weight}, {total_requests, TotalRequests}, {accepted_requests, AcceptedRequests}].</v> + <v>OverloadInfo = [{total_intensity, TotalIntensity}, + {accept_intensity, AcceptIntensity}, {max_intensity, + MaxIntensity}, {weight, Weight}, {total_requests, + TotalRequests}, {accepted_requests, AcceptedRequests}].</v> <v>TotalIntensity = float() > 0</v> <v>AcceptIntensity = float() > 0</v> <v>MaxIntensity = float() > 0</v> @@ -135,18 +125,22 @@ <v>AcceptedRequests = integer()</v> </type> <desc> - <p>Returns the current total and accept intensities, the - configuration parameters, and absolute counts of the total - number of requests, and accepted number of requests (since - the overload process was started).</p> + <p>Returns:</p> + <list type="bulleted"> + <item>Current total and accept intensities</item> + <item>Configuration parameters</item> + <item>Absolute counts of the total number of requests</item> + <item>Accepted number of requests (since the overload + process was started)</item> + </list> </desc> </func> </funcs> <section> <title>See Also</title> - <p>alarm_handler(3), sasl(3) - </p> + <p><seealso marker="alarm_handler"><c>alarm_handler(3)</c></seealso>, + <seealso marker="sasl_app"><c>sasl(6)</c></seealso></p> </section> </erlref> diff --git a/lib/sasl/doc/src/part.xml b/lib/sasl/doc/src/part.xml index bcd345a7c4..2f47a8ad80 100644 --- a/lib/sasl/doc/src/part.xml +++ b/lib/sasl/doc/src/part.xml @@ -30,8 +30,9 @@ <file>part.xml</file> </header> <description> - <p>The System Architecture Support Libraries, <em>SASL</em>, - provides support for alarm and release handling etc.</p> + <p>The System Architecture Support Libraries <c>SASL</c> application + provides support for alarm handling, release handling, and + related functions.</p> </description> <xi:include href="sasl_intro.xml"/> <xi:include href="error_logging.xml"/> diff --git a/lib/sasl/doc/src/rb.xml b/lib/sasl/doc/src/rb.xml index 85252fc088..e16e9f5a62 100644 --- a/lib/sasl/doc/src/rb.xml +++ b/lib/sasl/doc/src/rb.xml @@ -35,241 +35,252 @@ <module>rb</module> <modulesummary>The Report Browser Tool</modulesummary> <description> - <p>The Report Browser (RB) tool makes it possible to browse and + <p>The Report Browser (RB) tool is used to browse and format error reports written by the error logger handler - <c>log_mf_h</c>. - </p> + <seealso marker="stdlib:log_mf_h"><c>log_mf_h</c></seealso> + in <c>STDLIB</c>.</p> </description> + <funcs> <func> <name>filter(Filters)</name> <name>filter(Filters, Dates)</name> - <fsummary>Filter reports and displays them on the screen</fsummary> + <fsummary>Filters reports and displays them on the screen.</fsummary> <type> <v>Filters = [filter()]</v> - <v>filter() = {Key, Value} | {Key, Value, no} | {Key, RegExp, re} | {Key, RegExp, re, no}</v> + <v>filter() = {Key, Value} | {Key, Value, no} | {Key, RegExp, re} | + {Key, RegExp, re, no}</v> <v>Key = term()</v> <v>Value = term()</v> - <v>RegExp = string() | {string, Options} | mp(), {mp(), Options}</v> + <v>RegExp = string() | {string(), Options} | re:mp() | {re:mp(), Options}</v> <v>Dates = {DateFrom, DateTo} | {DateFrom, from} | {DateTo, to}</v> - <v>DateFrom = DateTo = {date(), time()}</v> - <v>date() and time() are the same type as in the <c>calendar</c> module</v> + <v>DateFrom = DateTo = calendar:datetime()</v> </type> <desc> - <p>This function displays the reports that match the provided filters.</p> - <p> - When a filter includes the <c>no</c> atom it will exclude the reports that match - that filter. - </p> - <p> - The reports are matched using the <c>proplists</c> module. The report must be a proplist - to be matched against any of the <c>filters()</c>. - </p> - <p> - If the filter is of the form <c>{Key, RegExp, re}</c> the report must contain an element with - <c>key = Key</c> and <c>Value</c> must match the RegExp regular expression. - </p> - <p> - If the Dates parameter is provided, then the reports are filtered according to the date - when they occurred. If Dates is of the form <c>{DateFrom, from}</c> then reports that occurred - after DateFrom are displayed. - </p> - <p> - If Dates is of the form <c>{DateTo, to}</c> then reports that occurred before DateTo - are displayed. - </p> - <p> - If two Dates are provided, then reports that occurred between those dates are returned. - </p> - <p> - If you only want to filter only by dates, then you can provide the empty list as the Filters - parameter. - </p> - <p> - See <c>rb:grep/1</c> for more information on the RegExp parameter. - </p> + <p>Displays the reports that match the provided filters.</p> + <p>When a filter includes the <c>no</c> atom, it excludes the + reports that match that filter.</p> + <p>The reports are matched using the + <seealso marker="stdlib:proplists"><c>proplists</c></seealso> + module in <c>STDLIB</c>. The report must be a proplist + to be matched against any of the filters.</p> + <p>If the filter has the form <c>{Key, RegExp, re}</c>, the + report must contain an element with key equal to <c>Key</c> and + the value must match the regular expression <c>RegExp</c>.</p> + <p>If parameter <c>Dates</c> is specified, the reports are filtered + according to the date when they occurred. If <c>Dates</c> has + the form <c>{DateFrom, from}</c>, reports that occurred after + <c>DateFrom</c> are displayed.</p> + <p>If <c>Dates</c> has the form <c>{DateTo, to}</c>, reports that + occurred before <c>DateTo</c> are displayed.</p> + <p>If two <c>Dates</c> are specified, reports that occurred between + those dates are returned.</p> + <p>To filter only by dates, specify the empty list as the <c>Filters</c> + parameter.</p> + <p>For details about parameter <c>RegExp</c>, see <c>rb:grep/1</c>.</p> + <p>For details about data type <c>mp()</c>, see + <seealso marker="stdlib:re#type-mp"><c>re:mp()</c></seealso>.</p> + <p>For details about data type <c>datetime()</c>, see + <seealso marker="stdlib:calendar#type-datetime"><c>calendar:datetime()</c></seealso>.</p> </desc> </func> + <func> <name>grep(RegExp)</name> - <fsummary>Search the reports for a regular expression</fsummary> + <fsummary>Searches the reports for a regular expression.</fsummary> <type> - <v>RegExp = string() | {string, Options} | mp(), {mp(), Options}</v> + <v>RegExp = string() | {string(), Options} | re:mp() | {re:mp(), Options}</v> </type> <desc> - <p>All reports containing the regular expression <c>RegExp</c> - are printed. - </p> - <p><c>RegExp</c> can be a string containing the regular - expression; a tuple with the string and the options for - compilation; a compiled regular expression; a compiled - regular expression and the options for running it. - Refer to the module <c>re</c> and specially the function <c>re:run/3</c> - for a definition of valid regular expressions and options. - </p> + <p>All reports matching the regular expression <c>RegExp</c> + are displayed. <c>RegExp</c> can be any of the following:</p> + <list type="bulleted"> + <item>A string containing the regular expression</item> + <item>A tuple with the string and the options for compilation</item> + <item>A compiled regular expression</item> + <item>A compiled regular expression and the options for running it</item> + </list> + <p>For a definition of valid regular expressions and options, see + the <seealso marker="stdlib:re"><c>re</c></seealso> module in + <c>STDLIB</c> and in particular function <c>re:run/3</c>.</p> + <p>For details about data type <c>mp()</c>, see + <seealso marker="stdlib:re#type-mp"><c>re:mp()</c></seealso>.</p> </desc> </func> + <func> <name>h()</name> <name>help()</name> - <fsummary>Print help information</fsummary> + <fsummary>Displays help information.</fsummary> <desc> - <p>Prints the on-line help information. - </p> + <p>Displays online help information.</p> </desc> </func> + <func> <name>list()</name> <name>list(Type)</name> - <fsummary>List all reports</fsummary> + <fsummary>Lists all reports.</fsummary> <type> <v>Type = type()</v> <v>type() = error | error_report | info_msg | info_report | - warning_msg | warning_report | crash_report | - supervisor_report | progress</v> + warning_msg | warning_report | crash_report | + supervisor_report | progress</v> </type> <desc> - <p>This function lists all reports loaded in the + <p>Lists all reports loaded in <c>rb_server</c>. Each report is given a unique number that - can be used as a reference to the report in the - <c>show/1</c> function. - </p> - <p>If no <c>Type</c> is given, all reports are listed. - </p> + can be used as a reference to the report in function + <seealso marker="#show/1"><c>show/1</c></seealso>.</p> + <p>If no <c>Type</c> is specified, all reports are listed.</p> </desc> </func> + <func> <name>log_list()</name> <name>log_list(Type)</name> - <fsummary>Log reports list</fsummary> + <fsummary>Logs report lists.</fsummary> <type> <v>Type = type()</v> <v>type() = error | error_report | info_msg | info_report | - warning_msg | warning_report | crash_report | - supervisor_report | progress</v> + warning_msg | warning_report | crash_report | + supervisor_report | progress</v> </type> <desc> - <p>Same as <c>list/0</c> or <c>list/1</c> functions - but result is printed to logfile, if set, otherwise to standard_io. - </p> - <p>If no <c>Type</c> is given, all reports are listed. - </p> + <p>Same as functions + <seealso marker="#list/0"><c>list/0</c></seealso> or + <seealso marker="#list/1"><c>list/1</c></seealso>, + but the result is printed to a log file, if set; otherwise + to <c>standard_io</c>.</p> + <p>If no <c>Type</c> is specified, all reports are listed.</p> </desc> </func> + <func> <name>rescan()</name> <name>rescan(Options)</name> - <fsummary>Rescan the report directory</fsummary> + <fsummary>Rescans the report directory.</fsummary> <type> <v>Options = [opt()]</v> </type> <desc> <p>Rescans the report directory. <c>Options</c> is the same as - for <c>start()</c>. - </p> + for function + <seealso marker="#start/1"><c>start/1</c></seealso>.</p> </desc> </func> + <func> <name>show()</name> <name>show(Report)</name> - <fsummary>Show reports</fsummary> + <fsummary>Displays reports.</fsummary> <type> - <v>Report = int() | type()</v> + <v>Report = integer() | type()</v> </type> <desc> - <p>If a type argument is given, all loaded reports of this - type are printed. If an integer argument is given, the - report with this reference number is printed. If no argument - is given, all reports are shown. - </p> + <p>If argument <c>type</c> is specified, all loaded reports of this + type are displayed. If an integer argument is specified, the + report with this reference number is displayed. If no argument + is specified, all reports are displayed.</p> </desc> </func> + <func> <name>start()</name> <name>start(Options)</name> - <fsummary>Start the RB server</fsummary> + <fsummary>Starts the <c>rb_server</c>.</fsummary> <type> <v>Options = [opt()]</v> - <v>opt() = {start_log, FileName} | {max, MaxNoOfReports} | {report_dir, DirString} | {type, ReportType} | {abort_on_error, Bool}</v> + <v>opt() = {start_log, FileName} | {max, MaxNoOfReports} | + {report_dir, DirString} | {type, ReportType} | + {abort_on_error, Bool}</v> <v>FileName = string() | atom() | pid()</v> - <v>MaxNoOfReports = int() | all</v> + <v>MaxNoOfReports = integer() | all</v> <v>DirString = string()</v> <v>ReportType = type() | [type()] | all</v> - <v>Bool = true | false</v> + <v>Bool = boolean()</v> </type> <desc> - <p>The function <c>start/1</c> starts the <c>rb_server</c> - with the specified options, while <c>start/0</c> starts with - default options. The <c>rb_server</c> must be started before - reports can be browsed. When the <c>rb_server</c> is + <p>Function <c>start/1</c> starts <c>rb_server</c> with the + specified options, whereas function <c>start/0</c> starts with + default options. <c>rb_server</c> must be started before + reports can be browsed. When <c>rb_server</c> is started, the files in the specified directory are scanned. The other functions assume that the server has - started. - </p> - <p><c>{start_log, FileName}</c> starts logging to file, - registered name or io_device. All reports will be printed - to the named file. The default is <c>standard_io</c>. - The option {start_log, standard_error} is not allowed and - will be replaced by default standard_io. - </p> - <p><c>{max, MaxNoOfReports}</c>. Controls how many reports the - <c>rb_server</c> should read on start-up. This option is - useful as the directory may contain 20.000 reports. If this - option is given, the <c>MaxNoOfReports</c> latest reports - will be read. The default is 'all'. - </p> - <p><c>{report_dir, DirString}</c>. Defines the directory where - the error log files are located. The default is <c>{sasl, error_logger_mf_dir}</c>. </p> - <p><c>{type, ReportType}</c>. Controls what kind of reports the - <c>rb_server</c> should read on start-up. <c>ReportType</c> - is a supported type, 'all', or a list of supported - types. The default is 'all'. - </p> - <p><c>{abort_on_error, Bool}</c>. This option specifies whether - or not logging should be aborted if rb encounters an unprintable - report. (You may get a report on incorrect form if the - <c>error_logger</c> function <c>error_msg</c> or - <c>info_msg</c> has been called with an invalid format string). - If <c>Bool</c> is <c>true</c>, rb will stop logging (and print an - error message to stdout) if it encounters a badly formatted report. - If logging to file is enabled, an error message will be appended to - the log file as well. - If <c>Bool</c> is <c>false</c> (which is the default value), rb will - print an error message to stdout for every bad report it - encounters, but the logging process is never aborted. All printable - reports will be written. If logging to file is enabled, rb prints - <c>* UNPRINTABLE REPORT *</c> in the log file at the location of an - unprintable report. - </p> + started.</p> + <p><em>Options:</em></p> + <taglist> + <tag><c>{start_log, FileName}</c></tag> + <item><p>Starts logging to file, + registered name, or <c>io_device</c>. All reports are printed + to the specified destination. Default is <c>standard_io</c>. + Option <c>{start_log, standard_error}</c> is not allowed and + will be replaced by default <c>standard_io</c>.</p></item> + <tag><c>{max, MaxNoOfReports}</c></tag> + <item><p>Controls how many reports + <c>rb_server</c> is to read at startup. This option is + useful, as the directory can contain a large amount of reports. If this + option is specified, the <c>MaxNoOfReports</c> latest reports + are read. Default is <c>all</c>.</p></item> + <tag><c>{report_dir, DirString}</c></tag> + <item><p>Defines the directory where + the error log files are located. Default is + the directory specified by application environment + variable <c>error_logger_mf_dir</c>, + see <seealso marker="sasl_app">sasl(6)</seealso>.</p></item> + <tag><c>{type, ReportType}</c></tag> + <item><p>Controls what kind of reports + <c>rb_server</c> is to read at startup. <c>ReportType</c> + is a supported type, <c>all</c>, or a list of supported + types. Default is <c>all</c>.</p></item> + <tag><c>{abort_on_error, Bool}</c></tag> + <item><p>Specifies if + logging is to be ended if <c>rb</c> encounters an unprintable + report. (You can get a report with an incorrect form if function + <c>error_logger</c>, <c>error_msg</c>, or + <c>info_msg</c> has been called with an invalid format string)</p> + <list type="bulleted"> + <item>If <c>Bool</c> is <c>true</c>, <c>rb</c> stops logging + (and prints an error message to <c>stdout</c>) if it encounters + a badly formatted report. If logging to file is enabled, an + error message is appended to the log file as well.</item> + <item>If <c>Bool</c> is <c>false</c> (the default value), <c>rb</c> + prints an error message to <c>stdout</c> for every bad report it + encounters, but the logging process is never ended. All printable + reports are written. If logging to file is enabled, <c>rb</c> prints + <c>* UNPRINTABLE REPORT *</c> in the log file at the location of an + unprintable report.</item> + </list></item> + </taglist> </desc> </func> + <func> <name>start_log(FileName)</name> - <fsummary>Redirect all output to <c>FileName</c></fsummary> + <fsummary>Redirects all output to <c>FileName</c>.</fsummary> <type> <v>FileName = string() | atom() | pid()</v> </type> <desc> <p>Redirects all report output from the RB tool to the - specified file, registered name or io_device. - </p> + specified file, registered name, or <c>io_device</c>.</p> </desc> </func> + <func> <name>stop()</name> - <fsummary>Stop the RB server</fsummary> + <fsummary>Stops the <c>rb_server</c>.</fsummary> <desc> - <p>Stops the <c>rb_server</c>. - </p> + <p>Stops <c>rb_server</c>.</p> </desc> </func> + <func> <name>stop_log()</name> - <fsummary>Stop logging to file</fsummary> + <fsummary>Stops logging to file.</fsummary> <desc> - <p>Closes the log file. The output from the RB tool will be - directed to <c>standard_io</c>. - </p> + <p>Closes the log file. The output from the RB tool is + directed to <c>standard_io</c>.</p> </desc> </func> </funcs> diff --git a/lib/sasl/doc/src/ref_man.xml b/lib/sasl/doc/src/ref_man.xml index 2b608c7c51..a80e5a2a00 100644 --- a/lib/sasl/doc/src/ref_man.xml +++ b/lib/sasl/doc/src/ref_man.xml @@ -30,8 +30,8 @@ <file>application.xml</file> </header> <description> - <p>The System Architecture Support Libraries application, <em>SASL</em>, - provides support for alarm and release handling etc.</p> + <p>The <c>SASL</c> application provides support for alarm handling, + release handling, and related functions.</p> </description> <xi:include href="sasl_app.xml"/> <xi:include href="alarm_handler.xml"/> diff --git a/lib/sasl/doc/src/rel.xml b/lib/sasl/doc/src/rel.xml index a16db24295..d5f3c7310a 100644 --- a/lib/sasl/doc/src/rel.xml +++ b/lib/sasl/doc/src/rel.xml @@ -33,74 +33,65 @@ <file>rel</file> <filesummary>Release resource file</filesummary> <description> - <p>The <em>release resource file</em> specifies which applications are + <p>The <em>release resource file</em> specifies which applications are included in a release (system) based on Erlang/OTP.</p> - <p>This file is used by the functions in <c>systools</c> when generating - start scripts (<c>.script</c>, <c>.boot</c>) and release upgrade - files (<c>relup</c>).</p> + <p>This file is used by the functions in + <seealso marker="systools"><c>systools</c></seealso> + when generating start scripts (<c>.script</c>, <c>.boot</c>) and + release upgrade files (<c>relup</c>).</p> </description> <section> - <title>FILE SYNTAX</title> - <p>The release resource file should be called <c>Name.rel</c>.</p> + <title>File Syntax</title> + <p>The release resource file is to be called <c>Name.rel</c>.</p> <p>The <c>.rel</c> file contains one single Erlang term, which is - called a <em>release specification</em>. The file has the + called a <em>release specification</em>. The file has the following syntax:</p> <code type="none"> {release, {RelName,Vsn}, {erts, EVsn}, [{Application, AppVsn} | {Application, AppVsn, Type} | {Application, AppVsn, IncApps} | - {Application, AppVsn, Type, IncApps}]}. - </code> - <list type="bulleted"> - <item> - <p><c>RelName = string()</c> is the name of the release.</p> - </item> - <item> - <p><c>Vsn = string()</c> is the version of the release.</p> - </item> - <item> - <p><c>EVsn = string()</c> is the version of ERTS the release is - intended for.</p> - </item> - <item> - <p><c>Application = atom()</c> is the name of an application - included in the release.</p> - </item> - <item> - <p><c>AppVsn = string()</c> is the version of an application - included in the release.</p> - </item> - <item> - <p><c>Type = permanent | transient | temporary | load | none</c> - is the start type of an application included in the release.</p> - <p>If <c>Type = permanent | transient | temporary</c>, - the application will be loaded and started in the corresponding - way, see <c>application(3)</c>. If <c>Type = load</c>, - the application will only be loaded. If <c>Type = none</c>, - the application will be neither loaded nor started, although - the code for its modules will be loaded. - Defaults to <c>permanent</c></p> - </item> - <item> - <p><c>IncApps = [atom()]</c> is a list of applications that are - included by an application included in the release.</p> - <p>The list must be a subset of the included applications + {Application, AppVsn, Type, IncApps}]}.</code> + <taglist> + <tag><c>RelName = string()</c></tag> + <item><p>Release name.</p></item> + <tag><c>Vsn = string()</c></tag> + <item><p>Release version.</p></item> + <tag><c>EVsn = string()</c></tag> + <item><p><c>ERTS</c> version the release is intended for.</p></item> + <tag><c>Application = atom()</c></tag> + <item><p>Name of an application included in the release.</p></item> + <tag><c>AppVsn = string()</c></tag> + <item><p>Version of an application included in the release.</p></item> + <tag><c>Type = permanent | transient | temporary | load | none</c></tag> + <item><p>Start type of an application included in the release.</p> + <p>If <c>Type = permanent | transient | temporary</c>, the + application is loaded and started in the corresponding way, see + <seealso marker="kernel:application"><c>application(3)</c></seealso>.</p> + <p>If <c>Type = load</c>, the application is only loaded.</p> + <p>If <c>Type = none</c>, the application is not loaded and not + started, although the code for its modules is loaded.</p> + <p>Defaults to <c>permanent</c></p></item> + <tag><c>IncApps = [atom()]</c></tag> + <item><p>A list of applications that are included by an application + included in the release. The list must be a subset of the + included applications specified in the application resource file (<c>Application.app</c>) and overrides this value. Defaults - to the same value as in the application resource file.</p> - </item> - </list> + to the same value as in the application resource file.</p></item> + </taglist> <note> - <p>The list of applications must contain the <c>kernel</c> and - <c>stdlib</c> applications.</p> + <p>The list of applications must contain the <c>Kernel</c> and + <c>STDLIB</c> applications.</p> </note> </section> <section> - <title>SEE ALSO</title> - <p>application(3), relup(4), systools(3)</p> + <title>See Also</title> + <p><seealso marker="kernel:application"><c>application(3)</c></seealso>, + <seealso marker="relup"><c>relup(4)</c></seealso>, + <seealso marker="systools"><c>systools(3)</c></seealso></p> </section> </fileref> diff --git a/lib/sasl/doc/src/release_handler.xml b/lib/sasl/doc/src/release_handler.xml index 692159d7bf..162707676c 100644 --- a/lib/sasl/doc/src/release_handler.xml +++ b/lib/sasl/doc/src/release_handler.xml @@ -31,109 +31,115 @@ <module>release_handler</module> <modulesummary>Unpacking and Installation of Release Packages</modulesummary> <description> - <p>The <em>release handler</em> is a process belonging to the SASL - application which is responsible for <em>release handling</em>, + <p>The <em>release handler</em> process belongs to the <c>SASL</c> + application, which is responsible for <em>release handling</em>, that is, unpacking, installation, and removal of release packages.</p> - <p>An introduction to release handling and a usage example can be - found in - <seealso marker="doc/design_principles:release_handling">Design Principles</seealso>. - </p> + <p>An introduction to release handling and an example is provided in + <seealso marker="doc/design_principles:release_handling">OTP Design + Principles</seealso> in <em>System Documentation</em>.</p> <p>A <em>release package</em> is a compressed tar file containing code for a certain version of a release, created by calling - <seealso marker="systools#make_tar/1">systools:make_tar/1,2</seealso>. - The release package should be placed in the <c>$ROOT/releases</c> - directory of the previous version of the release where + <seealso marker="systools#make_tar/1"><c>systools:make_tar/1,2</c></seealso>. + The release package is to be located in the <c>$ROOT/releases</c> + directory of the previous version of the release, where <c>$ROOT</c> is the installation root directory, - <c>code:root_dir()</c>. - Another <c>releases</c> directory can be specified using the SASL - configuration parameter <c>releases_dir</c>, or the OS environment + <seealso marker="kernel:code#root_dir/0"><c>code:root_dir()</c></seealso>. + Another <c>releases</c> directory can be specified using the <c>SASL</c> + configuration parameter <c>releases_dir</c> or the OS environment variable <c>RELDIR</c>. The release handler must have write access - to this directory in order to install the new release. + to this directory to install the new release. The persistent state of the release handler is stored there in a file called <c>RELEASES</c>.</p> - <p>A release package should always contain the release resource file - <c>Name.rel</c> and a boot script <c>Name.boot</c>. It may contain - a release upgrade file <c>relup</c> and a system configuration - file <c>sys.config</c>. The <c>.rel</c> file contains information - about the release: its name, version, and which ERTS and - application versions it uses. The <c>relup</c> file contains - scripts for how to upgrade to, or downgrade from, this version of - the release.</p> + <p>A release package is always to contain:</p> + <list type="bulleted"> + <item>A release resource file, <c>Name.rel</c></item> + <item>A boot script, <c>Name.boot</c></item> + </list> + <p>The <c>.rel</c> file contains information about the release: its name, + version, and which <c>ERTS</c> and application versions it uses.</p> + <p>A release package can also contain:</p> + <list type="bulleted"> + <item>A release upgrade file, <c>relup</c></item> + <item>A system configuration file, <c>sys.config</c></item> + </list> + <p>The <c>relup</c> file contains instructions for how to upgrade + to, or downgrade from, this version of the release.</p> <p>The release package can be <em>unpacked</em>, which extracts the files. An unpacked release can be <em>installed</em>. The currently used version of the release is then upgraded or downgraded to the specified version by evaluating the instructions - in <c>relup</c>. An installed release can be made - <em>permanent</em>. There can only be one permanent release in - the system, and this is the release that is used if the system + in the <c>relup</c> file. An installed release can be made + <em>permanent</em>. Only one permanent release can exist in + the system, and this release is used if the system is restarted. An installed release, except the permanent one, can be <em>removed</em>. When a release is removed, all files - that belong to that release only are deleted.</p> - <p>Each version of the release has a status. The status can be + belonging to that release only are deleted.</p> + <p>Each release version has a status, which can be <c>unpacked</c>, <c>current</c>, <c>permanent</c>, or <c>old</c>. - There is always one latest release which either has status - <c>permanent</c> (normal case), or <c>current</c> (installed, but - not yet made permanent). The following table illustrates - the meaning of the status values:</p> + There is always one latest release, which either has status + <c>permanent</c> (normal case) or <c>current</c> (installed, but + not yet made permanent). The meaning of the status values are + illustrated in the following table:</p> <pre> -Status Action NextStatus -------------------------------------------- - - unpack unpacked -unpacked install current - remove - -current make_permanent permanent - install other old - remove - -permanent make other permanent old - install permanent -old reboot_old permanent - install current - remove - - </pre> + Status Action NextStatus + ------------------------------------------- + - unpack unpacked + unpacked install current + remove - + current make_permanent permanent + install other old + remove - + permanent make other permanent old + install permanent + old reboot_old permanent + install current + remove -</pre> <p>The release handler process is a locally registered process on each node. When a release is installed in a distributed system, the release handler on each node must be called. The release - installation may be synchronized between nodes. From an operator - view, it may be unsatisfactory to specify each node. The aim is + installation can be synchronized between nodes. From an operator + view, it can be unsatisfactory to specify each node. The aim is to install one release package in the system, no matter how many - nodes there are. If this is the case, it is recommended that - software management functions are written which take care of - this problem. Such a function may have knowledge of the system + nodes there are. It is recommended that + software management functions are written that take care of + this problem. Such a function can have knowledge of the system architecture, so it can contact each individual release handler to install the package.</p> - <p>For release handling to work properly, the runtime system needs - to have knowledge about which release it is currently running. It - must also be able to change (in run-time) which boot script and - system configuration file should be used if the system is + <p>For release handling to work properly, the runtime system must + know which release it is running. It + must also be able to change (in runtime) which boot script and + system configuration file are to be used if the system is restarted. This is taken care of automatically if Erlang is - started as an embedded system. Read about this in <em>Embedded System</em>. In this case, the system configuration file - <c>sys.config</c> is mandatory.</p> - <p>The installation of a new release may restart the system. Which - program to use is specified by the SASL configuration - parameter <c>start_prg</c> which defaults + started as an embedded system. Read about this in + <seealso marker="doc/embedded:users_guide">Embedded System</seealso> in + <em>System Documentation</em>. In this case, the system + configuration file <c>sys.config</c> is mandatory.</p> + <p>The installation of a new release can restart the system. Which + program to use is specified by the <c>SASL</c> configuration + parameter <c>start_prg</c>, which defaults to <c>$ROOT/bin/start</c>.</p> <p>The emulator restart on Windows NT expects that the system is started using the <c>erlsrv</c> program (as a service). - Furthermore the release handler expects that the service is named - <em>NodeName</em>_<em>Release</em>, where <em>NodeName</em> is - the first part of the Erlang nodename (up to, but not including - the "@") and <em>Release</em> is the current version of - the release. The release handler furthermore expects that a + Furthermore, the release handler expects that the service is named + <c>NodeName</c>_<c>Release</c>, where <c>NodeName</c> is + the first part of the Erlang node name (up to, but not including + the "@") and <c>Release</c> is the current release version. + The release handler furthermore expects that a program like <c>start_erl.exe</c> is specified as "machine" to - <c>erlsrv</c>. During upgrading with restart, a new service will - be registered and started. The new service will be set to - automatic and the old service removed as soon as the new release + <c>erlsrv</c>. During upgrading with restart, a new service + is registered and started. The new service is set to + automatic and the old service is removed when the new release is made permanent.</p> - <p>The release handler at a node which runs on a diskless machine, + <p>The release handler at a node running on a diskless machine, or with a read-only file system, must be configured accordingly - using the following <c>sasl</c> configuration parameters (see - <seealso marker="sasl_app">sasl(6)</seealso> for details):</p> + using the following <c>SASL</c> configuration parameters (for + details, see <seealso marker="sasl_app">sasl(6)</seealso>):</p> <taglist> <tag><c>masters</c></tag> <item> - <p>This node uses a number of master nodes in order to store - and fetch release information. All master nodes must be up - and running whenever release information is written by this + <p>This node uses some master nodes to store + and fetch release information. All master nodes must be + operational whenever release information is written by this node.</p> </item> <tag><c>client_directory</c></tag> @@ -145,24 +151,25 @@ old reboot_old permanent <item> <p>This parameter specifies if the Erlang emulator is statically installed at the client node. A node with a static - emulator cannot dynamically switch to a new emulator because + emulator cannot dynamically switch to a new emulator, as the executable files are statically written into memory.</p> </item> </taglist> - <p>It is also possible to use the release handler to unpack and + <p>The release handler can also be used to unpack and install release packages when not running Erlang as an embedded - system, but in this case the user must somehow make sure that + system. However, in this case the user must somehow ensure that correct boot scripts and configuration files are used if - the system needs to be restarted.</p> - <p>There are additional functions for using another file structure + the system must be restarted.</p> + <p>Functions are provided for using another file structure than the structure defined in OTP. These functions can be used to test a release upgrade locally.</p> </description> + <funcs> <func> <name>check_install_release(Vsn) -> {ok, OtherVsn, Descr} | {error, Reason}</name> <name>check_install_release(Vsn,Opts) -> {ok, OtherVsn, Descr} | {error, Reason}</name> - <fsummary>Check installation of a release in the system.</fsummary> + <fsummary>Checks installation of a release in the system.</fsummary> <type> <v>Vsn = OtherVsn = string()</v> <v>Opts = [Opt]</v> @@ -173,27 +180,29 @@ old reboot_old permanent <desc> <p>Checks if the specified version <c>Vsn</c> of the release can be installed. The release must not have status - <c>current</c>. Issues warnings if <c>relup</c> or - <c>sys.config</c> are not present. If <c>relup</c> is present, + <c>current</c>. Issues warnings if <c>relup</c> file or + <c>sys.config</c> is not present. If <c>relup</c> file is present, its contents are checked and <c>{error,Reason}</c> is returned if an error is found. Also checks that all required - applications are present and that all new code can be loaded, - or <c>{error,Reason}</c> is returned.</p> - <p>This function evaluates all instructions that occur before + applications are present and that all new code can be loaded; + <c>{error,Reason}</c> is returned if an error is found.</p> + <p>Evaluates all instructions that occur before the <c>point_of_no_return</c> instruction in the release upgrade script.</p> - <p>Returns the same as <c>install_release/1</c>. <c>Descr</c> - defaults to "" if no <c>relup</c> file is found.</p> - <p>If the option <c>purge</c> is given, all old code that can - be soft purged will be purged after all other checks are - successfully completed. This can be useful in order to + <p>Returns the same as + <seealso marker="#install_release/1"><c>install_release/1</c></seealso>. + <c>Descr</c> defaults to "" if no <c>relup</c> file is found.</p> + <p>If option <c>purge</c> is specified, all old code that can + be soft-purged is purged after all other checks are + successfully completed. This can be useful to reduce the time needed by <seealso - marker="#install_release/1">install_release</seealso>.</p> + marker="#install_release/1"><c>install_release/1</c></seealso>.</p> </desc> </func> + <func> <name>create_RELEASES(Root, RelDir, RelFile, AppDirs) -> ok | {error, Reason}</name> - <fsummary>Create an initial RELEASES file.</fsummary> + <fsummary>Creates an initial <c>RELEASES</c> file.</fsummary> <type> <v>Root = RelDir = RelFile = string()</v> <v>AppDirs = [{App, Vsn, Dir}]</v> @@ -202,52 +211,55 @@ old reboot_old permanent <v>Reason = term()</v> </type> <desc> - <p>Creates an initial RELEASES file to be used by the release - handler. This file must exist in order to install new + <p>Creates an initial <c>RELEASES</c> file to be used by the + release handler. This file must exist to install new releases.</p> <p><c>Root</c> is the root of the installation (<c>$ROOT</c>) as - described above. <c>RelDir</c> is the the directory where - the <c>RELEASES</c> file should be created (normally + described earlier. <c>RelDir</c> is the directory where + the <c>RELEASES</c> file is to be created (normally <c>$ROOT/releases</c>). <c>RelFile</c> is the name of the <c>.rel</c> file that describes the initial release, including the extension <c>.rel</c>.</p> <p><c>AppDirs</c> can be used to specify from where the modules - for the specified applications should be loaded. <c>App</c> is + for the specified applications are to be loaded. <c>App</c> is the name of an application, <c>Vsn</c> is the version, and <c>Dir</c> is the name of the directory where <c>App-Vsn</c> - is located. The corresponding modules should be located under + is located. The corresponding modules are to be located under <c>Dir/App-Vsn/ebin</c>. The directories for applications not specified in <c>AppDirs</c> are assumed to be located in <c>$ROOT/lib</c>.</p> </desc> </func> + <func> <name>install_file(Vsn, File) -> ok | {error, Reason}</name> - <fsummary>Install a release file in the release structure.</fsummary> + <fsummary>Installs a release file in the release structure.</fsummary> <type> <v>Vsn = File = string()</v> <v>Reason = term()</v> </type> <desc> - <p>Installs a release dependent file in the release structure. - A release dependent file is a file that must be in + <p>Installs a release-dependent file in the release structure. + The release-dependent file must be in the release structure when a new release is installed: - <c>start.boot</c>, <c>relup</c> and <c>sys.config</c>.</p> + <c>start.boot</c>, <c>relup</c>, and <c>sys.config</c>.</p> <p>The function can be called, for example, when these files - are generated at the target. It should be called after - <c>set_unpacked/2</c> has been called.</p> + are generated at the target. The function is to be called after + <seealso marker="#set_unpacked/2"><c>set_unpacked/2</c></seealso> + has been called.</p> </desc> </func> + <func> <name>install_release(Vsn) -> {ok, OtherVsn, Descr} | {error, Reason}</name> <name>install_release(Vsn, [Opt]) -> {ok, OtherVsn, Descr} | {continue_after_restart, OtherVsn, Descr} | {error, Reason}</name> - <fsummary>Install a release in the system.</fsummary> + <fsummary>Installs a release in the system.</fsummary> <type> <v>Vsn = OtherVsn = string()</v> <v>Opt = {error_action, Action} | {code_change_timeout, Timeout}</v> <v> | {suspend_timeout, Timeout} | {update_paths, Bool}</v> <v> Action = restart | reboot</v> - <v> Timeout = default | infinity | int()>0</v> + <v> Timeout = default | infinity | pos_integer()</v> <v> Bool = boolean()</v> <v>Descr = term()</v> <v>Reason = {illegal_option, Opt} | {already_installed, Vsn} | {change_appl_data, term()} | {missing_base_app, OtherVsn, App} | {could_not_create_hybrid_boot, term()} | term()</v> @@ -262,7 +274,7 @@ old reboot_old permanent version and a script <c>{Vsn,Descr2,Instructions2}</c> in this file for downgrading to <c>Vsn</c>.</p> <p>If a script is found, the first thing that happens is that - the applications specifications are updated according to + the application specifications are updated according to the <c>.app</c> files and <c>sys.config</c> belonging to the release version <c>Vsn</c>.</p> <p>After the application specifications have been updated, @@ -271,101 +283,120 @@ old reboot_old permanent <c>OtherVsn</c> and <c>Descr</c> are the version (<c>UpFromVsn</c> or <c>Vsn</c>) and description (<c>Descr1</c> or <c>Descr2</c>) as specified in the script.</p> - <p>If <c>{continue_after_restart,OtherVsn,Descr}</c> is - returned, it means that the emulator will be restarted - before the upgrade instructions are executed. This will - happen if the emulator or any of the applications kernel, - stdlib or sasl are updated. The new version of the emulator - and these core applications will execute after the restart, - but for all other applications the old versions will be - started and the upgrade will be performed as normal by + <p>If <c>{continue_after_restart,OtherVsn,Descr}</c> is + returned, the emulator is restarted + before the upgrade instructions are executed. This + occurs if the emulator or any of the applications + <c>Kernel</c>, <c>STDLIB</c>, or <c>SASL</c> + are updated. The new emulator version + and these core applications execute after the restart. + For all other applications the old versions are + started and the upgrade is performed as normal by executing the upgrade instructions.</p> <p>If a recoverable error occurs, the function returns <c>{error,Reason}</c> and the original application specifications are restored. If a non-recoverable error occurs, the system is restarted.</p> - <p>The option <c>error_action</c> defines if the node should be - restarted (<c>init:restart()</c>) or rebooted - (<c>init:reboot()</c>) in case of an error during - the installation. Default is <c>restart</c>.</p> - <p>The option <c>code_change_timeout</c> defines the timeout - for all calls to <c>sys:change_code</c>. If no value is - specified or <c>default</c> is given, the default value - defined in <c>sys</c> is used.</p> - <p>The option <c>suspend_timeout</c> defines the timeout for - all calls to <c>sys:suspend</c>. If no value is specified, - the values defined by the <c>Timeout</c> parameter of - the <c>upgrade</c> or <c>suspend</c> instructions are used. - If <c>default</c> is specified, the default value defined in - <c>sys</c> is used.</p> - <p>The option <c>{update_paths,Bool}</c> indicates if all - application code paths should be updated (<c>Bool==true</c>), - or if only code paths for modified applications should be - updated (<c>Bool==false</c>, default). This option only has - effect for other application directories than the default - <c>$ROOT/lib/App-Vsn</c>, that is, application directories - provided in the <c>AppDirs</c> argument in a call to - <c>create_RELEASES/4</c> or <c>set_unpacked/2</c>.</p> - <p>Example: In the current version <c>CurVsn</c> of a release, - the application directory of <c>myapp</c> is - <c>$ROOT/lib/myapp-1.0</c>. A new version <c>NewVsn</c> is - unpacked outside the release handler, and the release handler - is informed about this with a call to:</p> - <code type="none"> + <p><em>Options</em>:</p> + <taglist> + <tag><c>error_action</c></tag> + <item><p>Defines if the node is to be + restarted + (<seealso marker="erts:init#restart/0"><c>init:restart()</c></seealso>) + or rebooted + (<seealso marker="erts:init#reboot/0"><c>init:reboot()</c></seealso>) + if there is an error during + the installation. Default is <c>restart</c>.</p></item> + <tag><c>code_change_timeout</c></tag> + <item><p>Defines the time-out + for all calls to + <seealso marker="stdlib:sys#change_code/4"><c>stdlib:sys:change_code</c></seealso>. + If no value is specified or <c>default</c> is specified, the + default value defined in <c>sys</c> is used.</p></item> + <tag><c>suspend_timeout</c></tag> + <item><p>Defines the time-out for + all calls to + <seealso marker="stdlib:sys#suspend/1"><c>stdlib:sys:suspend</c></seealso>. + If no value is specified, the values defined by the <c>Timeout</c> + parameter of the <c>upgrade</c> or <c>suspend</c> instructions are used. + If <c>default</c> is specified, the default value defined in + <c>sys</c> is used.</p></item> + <tag><c>{update_paths,Bool}</c></tag> + <item><p>Indicates if all + application code paths are to be updated (<c>Bool==true</c>) + or if only code paths for modified applications are to be + updated (<c>Bool==false</c>, default). This option has only + effect for other application directories than the default + <c>$ROOT/lib/App-Vsn</c>, that is, application directories + specified in argument <c>AppDirs</c> in a call to + <seealso marker="#create_RELEASES/4"><c>create_RELEASES/4</c></seealso> or + <seealso marker="#set_unpacked/2"><c>set_unpacked/2</c></seealso>.</p> + <p><em>Example:</em></p> + <p>In the current version <c>CurVsn</c> of a release, the + application directory of <c>myapp</c> is + <c>$ROOT/lib/myapp-1.0</c>. A new version <c>NewVsn</c> is + unpacked outside the release handler and the release + handler is informed about this with a call as follows:</p> + <code type="none"> release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). -=> {ok,NewVsn} - </code> - <p>If <c>NewVsn</c> is installed with the option - <c>{update_paths,true}</c>, afterwards - <c>code:lib_dir(myapp)</c> will return - <c>/home/user/myapp-1.0</c>.</p> +=> {ok,NewVsn}</code> + <p>If <c>NewVsn</c> is installed with option + <c>{update_paths,true}</c>, then + <seealso marker="kernel:code#lib_dir/1"><c>kernel:code:lib_dir(myapp)</c></seealso> + returns <c>/home/user/myapp-1.0</c>.</p></item> + </taglist> <note> - <p>Installing a new release might be quite time consuming if + <p>Installing a new release can be time consuming if there are many processes in the system. The reason is that each process must be checked for references to old code - before a module can be purged. This check might lead to + before a module can be purged. This check can lead to garbage collections and copying of data.</p> - <p>If you wish to speed up the execution of - <c>install_release</c>, then you may call <seealso - marker="#check_install_release/1">check_install_release</seealso> - first, using the option <c>purge</c>. This will do the same - check for old code, and then purge all modules that can be - soft purged. The purged modules will then no longer have any - old code, and <c>install_release</c> will not need to do the + <p>To speed up the execution of + <seealso marker="#install_release/1"><c>install_release</c></seealso>, + first call <seealso + marker="#check_install_release/1"><c>check_install_release</c></seealso>, + using option <c>purge</c>. This does the same + check for old code. Then purges all modules that can be + soft-purged. The purged modules do then no longer have any + old code, and + <seealso marker="#install_release/1"><c>install_release</c></seealso> + does not need to do the checks.</p> - <p>Obviously, this will not reduce the overall time for the - upgrade, but it will allow checks and purge to be executed + <p>This does not reduce the overall time for the + upgrade, but it allows checks and purge to be executed in the background before the real upgrade is started.</p> </note> <note> <p>When upgrading the emulator from a version older than OTP - R15, there will be an attempt to load new application beam - code into the old emulator. In some cases, the new beam - format can not be read by the old emulator, and so the code - loading will fail and terminate the complete upgrade. To - overcome this problem, the new application code should be - compiled with the old emulator. See <seealso - marker="doc/design_principles:appup_cookbook">Design - Principles</seealso> for more information about emulator - upgrade from pre OTP R15 versions.</p> + R15, an attempt is made to load new application beam + code into the old emulator. Sometimes the new beam + format cannot be read by the old emulator, so the code + loading fails and the complete upgrade is terminated. To + overcome this problem, the new application code is to be + compiled with the old emulator. For more information about + emulator upgrade from pre OTP R15 versions, see + <seealso marker="doc/design_principles:appup_cookbook">Design + Principles</seealso> in <em>System Documentation</em>.</p> </note> </desc> </func> + <func> <name>make_permanent(Vsn) -> ok | {error, Reason}</name> - <fsummary>Make the specified release version permanent.</fsummary> + <fsummary>Makes the specified release version permanent.</fsummary> <type> <v>Vsn = string()</v> <v>Reason = {bad_status, Status} | term()</v> </type> <desc> - <p>Makes the specified version <c>Vsn</c> of the release + <p>Makes the specified release version <c>Vsn</c> permanent.</p> </desc> </func> + <func> <name>remove_release(Vsn) -> ok | {error, Reason}</name> - <fsummary>Remove a release from the system.</fsummary> + <fsummary>Removes a release from the system.</fsummary> <type> <v>Vsn = string()</v> <v>Reason = {permanent, Vsn} | client_node | term()</v> @@ -375,23 +406,26 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). The release must not be the permanent release. Removes only the files and directories not in use by another release.</p> </desc> + </func> <func> <name>reboot_old_release(Vsn) -> ok | {error, Reason}</name> - <fsummary>Reboot the system from an old release.</fsummary> + <fsummary>Reboots the system from an old release.</fsummary> <type> <v>Vsn = string()</v> <v>Reason = {bad_status, Status} | term()</v> </type> <desc> <p>Reboots the system by making the old release permanent, and - calls <c>init:reboot()</c> directly. The release must have - status <c>old</c>.</p> + calls + <seealso marker="erts:init#reboot/0"><c>init:reboot()</c></seealso> + directly. The release must have status <c>old</c>.</p> </desc> </func> + <func> <name>set_removed(Vsn) -> ok | {error, Reason}</name> - <fsummary>Mark a release as removed.</fsummary> + <fsummary>Marks a release as removed.</fsummary> <type> <v>Vsn = string()</v> <v>Reason = {permanent, Vsn} | term()</v> @@ -403,9 +437,10 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). not delete any files.</p> </desc> </func> + <func> <name>set_unpacked(RelFile, AppDirs) -> {ok, Vsn} | {error, Reason}</name> - <fsummary>Mark a release as unpacked.</fsummary> + <fsummary>Marks a release as unpacked.</fsummary> <type> <v>RelFile = string()</v> <v>AppDirs = [{App, Vsn, Dir}]</v> @@ -419,18 +454,19 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). the release is unpacked. <c>Vsn</c> is extracted from the release resource file <c>RelFile</c>.</p> <p><c>AppDirs</c> can be used to specify from where the modules - for the specified applications should be loaded. <c>App</c> is + for the specified applications are to be loaded. <c>App</c> is the name of an application, <c>Vsn</c> is the version, and <c>Dir</c> is the name of the directory where <c>App-Vsn</c> - is located. The corresponding modules should be located under + is located. The corresponding modules are to be located under <c>Dir/App-Vsn/ebin</c>. The directories for applications not specified in <c>AppDirs</c> are assumed to be located in <c>$ROOT/lib</c>.</p> </desc> </func> + <func> <name>unpack_release(Name) -> {ok, Vsn} | {error, Reason}</name> - <fsummary>Unpack a release package.</fsummary> + <fsummary>Unpacks a release package.</fsummary> <type> <v>Name = Vsn = string()</v> <v>Reason = client_node | term()</v> @@ -438,14 +474,15 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). <desc> <p>Unpacks a release package <c>Name.tar.gz</c> located in the <c>releases</c> directory.</p> - <p>Performs some checks on the package - for example checks - that all mandatory files are present - and extracts its + <p>Performs some checks on the package, for example, checks + that all mandatory files are present, and extracts its contents.</p> </desc> </func> + <func> <name>which_releases() -> [{Name, Vsn, Apps, Status}]</name> - <fsummary>Return all known releases</fsummary> + <fsummary>Returns all known releases.</fsummary> <type> <v>Name = Vsn = string()</v> <v>Apps = ["App-Vsn"]</v> @@ -455,16 +492,18 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). <p>Returns all releases known to the release handler.</p> </desc> </func> + <func> <name>which_releases(Status) -> [{Name, Vsn, Apps, Status}]</name> - <fsummary>Return all known releases of a specific status</fsummary> + <fsummary>Returns all known releases of a specific status.</fsummary> <type> <v>Name = Vsn = string()</v> <v>Apps = ["App-Vsn"]</v> <v>Status = unpacked | current | permanent | old</v> </type> <desc> - <p>Returns all releases known to the release handler of a specific status.</p> + <p>Returns all releases, known to the release handler, of a + specific status.</p> </desc> </func> </funcs> @@ -473,7 +512,8 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). <title>Application Upgrade/Downgrade</title> <p>The following functions can be used to test upgrade and downgrade of single applications (instead of upgrading/downgrading an entire - release). A script corresponding to <c>relup</c> is created + release). A script corresponding to the instructions in the + <c>relup</c> file is created on-the-fly, based on the <c>.appup</c> file for the application, and evaluated exactly in the same way as <c>release_handler</c> does.</p> @@ -482,20 +522,22 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). of <c>.appup</c> files. They are not run within the context of the <c>release_handler</c> process. They must therefore <em>not</em> be used together with calls to - <c>install_release/1,2</c>, as this will cause + <seealso marker="#install_release/1"><c>install_release/1,2</c></seealso>, + as this causes the <c>release_handler</c> to end up in an inconsistent state.</p> - <p>No persistent information is updated, why these functions can + <p>No persistent information is updated, so these functions can be used on any Erlang node, embedded or not. Also, using these - functions does not affect which code will be loaded in case of + functions does not affect which code is loaded if there is a reboot.</p> - <p>If the upgrade or downgrade fails, the application may end up + <p>If the upgrade or downgrade fails, the application can end up in an inconsistent state.</p> </warning> </section> + <funcs> <func> <name>upgrade_app(App, Dir) -> {ok, Unpurged} | restart_emulator | {error, Reason}</name> - <fsummary>Upgrade to a new application version</fsummary> + <fsummary>Upgrades to a new application version.</fsummary> <type> <v>App = atom()</v> <v>Dir = string()</v> @@ -506,39 +548,46 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). <desc> <p>Upgrades an application <c>App</c> from the current version to a new version located in <c>Dir</c> according to - the <c>.appup</c> script.</p> + the <c>.appup</c> file.</p> <p><c>App</c> is the name of the application, which must be started. <c>Dir</c> is the new library directory of - <c>App</c>, the corresponding modules as well as - the <c>.app</c> and <c>.appup</c> files should be located + <c>App</c>. The corresponding modules as well as + the <c>.app</c> and <c>.appup</c> files are to be located under <c>Dir/ebin</c>.</p> <p>The function looks in the <c>.appup</c> file and tries to find an upgrade script from the current version of the application using - <seealso marker="#upgrade_script/2">upgrade_script/2</seealso>. + <seealso marker="#upgrade_script/2"><c>upgrade_script/2</c></seealso>. This script is evaluated using - <seealso marker="#eval_appup_script/4">eval_appup_script/4</seealso>, + <seealso marker="#eval_appup_script/4"><c>eval_appup_script/4</c></seealso>, exactly in the same way as - <seealso marker="#install_release/1">install_release/1,2</seealso> + <seealso marker="#install_release/1"><c>install_release/1,2</c></seealso> does.</p> - <p>Returns <c>{ok, Unpurged}</c> if evaluating the script is - successful, where <c>Unpurged</c> is a list of unpurged - modules, or <c>restart_emulator</c> if this instruction is - encountered in the script, or <c>{error, Reason}</c> if - an error occurred when finding or evaluating the script.</p> + <p>Returns one of the following:</p> + <list type="bulleted"> + <item><c>{ok, Unpurged}</c> if evaluating the script is + successful, where <c>Unpurged</c> is a list of unpurged + modules</item> + <item><c>restart_emulator</c> if this instruction is + encountered in the script</item> + <item><c>{error, Reason}</c> if an error occurred when + finding or evaluating the script</item> + </list> <p>If the <c>restart_new_emulator</c> instruction is found in - the script, <c>upgrade_app/2</c> will return - <c>{error,restart_new_emulator}</c>. The reason for this is - that this instruction requires that a new version of the - emulator is started before the rest of the upgrade - instructions can be executed, and this can only be done by - <c>install_release/1,2</c>.</p> + the script, + <seealso marker="#upgrade_app/2"><c>upgrade_app/2</c></seealso> + returns <c>{error,restart_new_emulator}</c>. This because + <c>restart_new_emulator</c> requires a new version of the + emulator to be started before the rest of the upgrade + instructions can be executed, and this can only be done by + <seealso marker="#install_release/1"><c>install_release/1,2</c></seealso>.</p> </desc> </func> + <func> <name>downgrade_app(App, Dir) -></name> <name>downgrade_app(App, OldVsn, Dir) -> {ok, Unpurged} | restart_emulator | {error, Reason}</name> - <fsummary>Downgrade to a previous application version</fsummary> + <fsummary>Downgrades to a previous application version.</fsummary> <type> <v>App = atom()</v> <v>Dir = OldVsn = string()</v> @@ -549,110 +598,124 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). <desc> <p>Downgrades an application <c>App</c> from the current version to a previous version <c>OldVsn</c> located in - <c>Dir</c> according to the <c>.appup</c> script.</p> + <c>Dir</c> according to the <c>.appup</c> file.</p> <p><c>App</c> is the name of the application, which must be - started. <c>OldVsn</c> is the previous version of - the application and can be omitted if <c>Dir</c> is of + started. <c>OldVsn</c> is the previous application version + and can be omitted if <c>Dir</c> is of the format <c>"App-OldVsn"</c>. <c>Dir</c> is the library - directory of this previous version of <c>App</c>, - the corresponding modules as well as the old <c>.app</c> file - should be located under <c>Dir/ebin</c>. The <c>.appup</c> - file should be located in the <c>ebin</c> directory of + directory of the previous version of <c>App</c>. + The corresponding modules and the old <c>.app</c> file + are to be located under <c>Dir/ebin</c>. The <c>.appup</c> + file is to be located in the <c>ebin</c> directory of the <em>current</em> library directory of the application - (<c>code:lib_dir(App)</c>).</p> + (<seealso marker="kernel:code#lib_dir/1"><c>code:lib_dir(App)</c></seealso>).</p> <p>The function looks in the <c>.appup</c> file and tries to - find an downgrade script to the previous version of + find a downgrade script to the previous version of the application using - <seealso marker="#downgrade_script/3">downgrade_script/3</seealso>. + <seealso marker="#downgrade_script/3"><c>downgrade_script/3</c></seealso>. This script is evaluated using - <seealso marker="#eval_appup_script/4">eval_appup_script/4</seealso>, + <seealso marker="#eval_appup_script/4"><c>eval_appup_script/4</c></seealso>, exactly in the same way as - <seealso marker="#install_release/1">install_release/1,2</seealso> + <seealso marker="#install_release/1"><c>install_release/1,2</c></seealso> does.</p> - <p>Returns <c>{ok, Unpurged}</c> if evaluating the script is - successful, where <c>Unpurged</c> is a list of unpurged - modules, or <c>restart_emulator</c> if this instruction is - encountered in the script, or <c>{error, Reason}</c> if - an error occurred when finding or evaluating the script.</p> + <p>Returns one of the following:</p> + <list type="bulleted"> + <item><c>{ok, Unpurged}</c> if evaluating the script is + successful, where <c>Unpurged</c> is a list of unpurged + modules</item> + <item><c>restart_emulator</c> if this instruction is + encountered in the script</item> + <item><c>{error, Reason}</c> if an error occurred when + finding or evaluating the script</item> + </list> </desc> </func> + <func> <name>upgrade_script(App, Dir) -> {ok, NewVsn, Script}</name> - <fsummary>Find an application upgrade script</fsummary> + <fsummary>Finds an application upgrade script.</fsummary> <type> <v>App = atom()</v> <v>Dir = string()</v> <v>NewVsn = string()</v> - <v>Script = Instructions -- see appup(4)</v> + <v>Script = Instructions</v> </type> <desc> <p>Tries to find an application upgrade script for <c>App</c> from the current version to a new version located in <c>Dir</c>.</p> <p>The upgrade script can then be evaluated using - <seealso marker="#eval_appup_script/4">eval_appup_script/4</seealso>. + <seealso marker="#eval_appup_script/4"><c>eval_appup_script/4</c></seealso>. It is recommended to use - <seealso marker="#upgrade_app/2">upgrade_app/2</seealso> - instead, but this function is useful in order to inspect - the contents of the script.</p> + <seealso marker="#upgrade_app/2"><c>upgrade_app/2</c></seealso> + instead, but this function (<c>upgrade_script</c>) is useful + to inspect the contents of the script.</p> <p><c>App</c> is the name of the application, which must be started. <c>Dir</c> is the new library directory of - <c>App</c>, the corresponding modules as well as - the <c>.app</c> and <c>.appup</c> files should be located + <c>App</c>. The corresponding modules as well as + the <c>.app</c> and <c>.appup</c> files are to be located under <c>Dir/ebin</c>.</p> <p>The function looks in the <c>.appup</c> file and tries to - find an upgrade script from the current version of - the application. High-level instructions are translated to - low-level instructions and the instructions are sorted in - the same manner as when generating a <c>relup</c> script.</p> + find an upgrade script from the current application version. + High-level instructions are translated to + low-level instructions. The instructions are sorted in + the same manner as when generating a <c>relup</c> file.</p> <p>Returns <c>{ok, NewVsn, Script}</c> if successful, where - <c>NewVsn</c> is the new application version.</p> + <c>NewVsn</c> is the new application version. + For details about <c>Script</c>, see + <seealso marker="appup"><c>appup(4)</c></seealso>.</p> <p>Failure: If a script cannot be found, the function fails with an appropriate error reason.</p> </desc> </func> + <func> <name>downgrade_script(App, OldVsn, Dir) -> {ok, Script}</name> - <fsummary>Find an application downgrade script</fsummary> + <fsummary>Finds an application downgrade script.</fsummary> <type> <v>App = atom()</v> <v>OldVsn = Dir = string()</v> - <v>Script = Instructions -- see appup(4)</v> + <v>Script = Instructions</v> </type> <desc> <p>Tries to find an application downgrade script for <c>App</c> from the current version to a previous version <c>OldVsn</c> located in <c>Dir</c>.</p> <p>The downgrade script can then be evaluated using - <seealso marker="#eval_appup_script/4">eval_appup_script/4</seealso>. + <seealso marker="#eval_appup_script/4"><c>eval_appup_script/4</c></seealso>. It is recommended to use - <seealso marker="#downgrade_app/2">downgrade_app/2,3</seealso> - instead, but this function is useful in order to inspect - the contents of the script.</p> + <seealso marker="#downgrade_app/2"><c>downgrade_app/2,3</c></seealso> + instead, but this function (<c>downgrade_script</c>) is useful + to inspect the contents of the script.</p> <p><c>App</c> is the name of the application, which must be started. <c>Dir</c> is the previous library directory of - <c>App</c>, the corresponding modules as well as - the old <c>.app</c> file should be located under - <c>Dir/ebin</c>. The <c>.appup</c> file should be located in + <c>App</c>. The corresponding modules and + the old <c>.app</c> file are to be located under + <c>Dir/ebin</c>. The <c>.appup</c> file is to be located in the <c>ebin</c> directory of the <em>current</em> library - directory of the application (<c>code:lib_dir(App)</c>).</p> + directory of the application + (<seealso marker="kernel:code#lib_dir/1"><c>code:lib_dir(App)</c>)</seealso>.</p> <p>The function looks in the <c>.appup</c> file and tries to - find an downgrade script from the current version of - the application. High-level instructions are translated to - low-level instructions and the instructions are sorted in - the same manner as when generating a <c>relup</c> script.</p> - <p>Returns <c>{ok, Script}</c> if successful.</p> + find a downgrade script from the current application version. + High-level instructions are translated to + low-level instructions. The instructions are sorted in + the same manner as when generating a <c>relup</c> file.</p> + <p>Returns <c>{ok, Script}</c> if successful. + For details about <c>Script</c>, see + <seealso marker="appup"><c>appup(4)</c></seealso>.</p> <p>Failure: If a script cannot be found, the function fails with an appropriate error reason.</p> </desc> </func> + <func> <name>eval_appup_script(App, ToVsn, ToDir, Script) -> {ok, Unpurged} | restart_emulator | {error, Reason}</name> - <fsummary>Evaluate an application upgrade or downgrade script</fsummary> + <fsummary>Evaluates an application upgrade or downgrade script.</fsummary> <type> <v>App = atom()</v> <v>ToVsn = ToDir = string()</v> - <v>Script -- see upgrade_script/2, downgrade_script/3</v> + <v>Script</v> + <d>See <seealso marker="#upgrade_script/2"><c>upgrade_script/2</c></seealso>, <seealso marker="#downgrade_script/3"><c>downgrade_script/3</c></seealso></d> <v>Unpurged = [Module]</v> <v> Module = atom()</v> <v>Reason = term()</v> @@ -660,114 +723,100 @@ release_handler:set_unpacked(RelFile, [{myapp,"1.0","/home/user"},...]). <desc> <p>Evaluates an application upgrade or downgrade script <c>Script</c>, the result from calling - <seealso marker="#upgrade_app/2">upgrade_script/2</seealso> or - <seealso marker="#downgrade_app/3">downgrade_script/3</seealso>, + <seealso marker="#upgrade_script/2"><c>upgrade_script/2</c></seealso> or + <seealso marker="#downgrade_script/3"><c>downgrade_script/3</c></seealso>, exactly in the same way as - <seealso marker="#install_release/1">install_release/1,2</seealso> + <seealso marker="#install_release/1"><c>install_release/1,2</c></seealso> does.</p> <p><c>App</c> is the name of the application, which must be started. <c>ToVsn</c> is the version to be upgraded/downgraded to, and <c>ToDir</c> is the library directory of this version. The corresponding modules as well as the <c>.app</c> and - <c>.appup</c> files should be located under <c>Dir/ebin</c>.</p> - <p>Returns <c>{ok, Unpurged}</c> if evaluating the script is - successful, where <c>Unpurged</c> is a list of unpurged - modules, or <c>restart_emulator</c> if this instruction is - encountered in the script, or <c>{error, Reason}</c> if - an error occurred when evaluating the script.</p> - <p>If the <c>restart_new_emulator</c> instruction is found in - the script, <c>eval_appup_script/4</c> will return - <c>{error,restart_new_emulator}</c>. The reason for this is - that this instruction requires that a new version of the - emulator is started before the rest of the upgrade - instructions can be executed, and this can only be done by - <c>install_release/1,2</c>.</p> + <c>.appup</c> files are to be located under <c>Dir/ebin</c>.</p> + <p>Returns one of the following:</p> + <list type="bulleted"> + <item><c>{ok, Unpurged}</c> if evaluating the script is + successful, where <c>Unpurged</c> is a list of unpurged + modules</item> + <item><c>restart_emulator</c> if this instruction is + encountered in the script</item> + <item><c>{error, Reason}</c> if an error occurred when + finding or evaluating the script</item> + </list> + <p>If the <c>restart_new_emulator</c> instruction is found in + the script, + <seealso marker="#eval_appup_script/4"><c>eval_appup_script/4</c></seealso> + returns <c>{error,restart_new_emulator}</c>. This because + <c>restart_new_emulator</c> requires a new version of the + emulator to be started before the rest of the upgrade + instructions can be executed, and this can only be done by + <seealso marker="#install_release/1"><c>install_release/1,2</c></seealso>.</p> </desc> </func> </funcs> <section> <title>Typical Error Reasons</title> - <list type="bulleted"> - <item> - <p><c>{bad_masters, Masters}</c> - The master nodes - <c>Masters</c> are not alive.</p> - </item> - <item> - <p><c>{bad_rel_file, File}</c> - Specified <c>.rel</c> file - <c>File</c> can not be read, or does not contain a single - term.</p> - </item> - <item> - <p><c>{bad_rel_data, Data}</c> - Specified <c>.rel</c> file - does not contain a recognized release specification, but - another term <c>Data</c>.</p> - </item> - <item> - <p><c>{bad_relup_file, File}</c> - Specified <c>relup</c> file - <c>Relup</c> contains bad data.</p> - </item> - <item> - <p><c>{cannot_extract_file, Name, Reason}</c> - Problems when - extracting from a tar file, <c>erl_tar:extract/2</c> returned - <c>{error, {Name, Reason}}</c>.</p> - </item> - <item> - <p><c>{existing_release, Vsn}</c> - Specified release version - <c>Vsn</c> is already in use.</p> - </item> - <item> - <p><c>{Master, Reason, When}</c> - Some operation, indicated by - the term <c>When</c>, failed on the master node <c>Master</c> - with the specified error reason <c>Reason</c>.</p> - </item> - <item> - <p><c>{no_matching_relup, Vsn, CurrentVsn}</c> - Cannot find a - script for up/downgrading between <c>CurrentVsn</c> and - <c>Vsn</c>.</p> - </item> - <item> - <p><c>{no_such_directory, Path}</c> - The directory <c>Path</c> - does not exist.</p> - </item> - <item> - <p><c>{no_such_file, Path}</c> - The path <c>Path</c> (file or - directory) does not exist.</p> - </item> - <item> - <p><c>{no_such_file, {Master, Path}}</c> - The path <c>Path</c> - (file or directory) does not exist at the master node - <c>Master</c>.</p> - </item> - <item> - <p><c>{no_such_release, Vsn}</c> - The specified version - <c>Vsn</c> of the release does not exist.</p> - </item> - <item> - <p><c>{not_a_directory, Path}</c> - <c>Path</c> exists, but is - not a directory.</p> - </item> - <item> - <p><c>{Posix, File}</c> - Some file operation failed for - <c>File</c>. <c>Posix</c> is an atom named from the Posix - error codes, such as <c>enoent</c>, <c>eacces</c> or - <c>eisdir</c>. See <c>file(3)</c>.</p> - </item> - <item> - <p><c>Posix</c> - Some file operation failed, as above.</p> - </item> - </list> + <taglist> + <tag><c>{bad_masters, Masters}</c></tag> + <item><p>The master nodes <c>Masters</c> are not alive.</p></item> + <tag><c>{bad_rel_file, File}</c></tag> + <item><p>Specified <c>.rel</c> file <c>File</c> cannot be read or + does not contain a single term.</p></item> + <tag><c>{bad_rel_data, Data}</c></tag> + <item><p>Specified <c>.rel</c> file does not contain a recognized + release specification, but another term <c>Data</c>.</p></item> + <tag><c>{bad_relup_file, File}</c></tag> + <item><p>Specified <c>relup</c> file <c>Relup</c> contains bad + data.</p></item> + <tag><c>{cannot_extract_file, Name, Reason}</c></tag> + <item><p>Problems when extracting from a tar file, + <seealso marker="stdlib:erl_tar#extract/2"><c>erl_tar:extract/2</c></seealso> + returned <c>{error, {Name, Reason}}</c>.</p></item> + <tag><c>{existing_release, Vsn}</c></tag> + <item><p>Specified release version <c>Vsn</c> is already + in use.</p></item> + <tag><c>{Master, Reason, When}</c></tag> + <item><p>Some operation, indicated by the term <c>When</c>, failed + on the master node <c>Master</c> with the specified error + reason <c>Reason</c>.</p></item> + <tag><c>{no_matching_relup, Vsn, CurrentVsn}</c></tag> + <item><p>Cannot find a script for upgrading/downgrading between + <c>CurrentVsn</c> and <c>Vsn</c>.</p></item> + <tag><c>{no_such_directory, Path}</c></tag> + <item><p>The directory <c>Path</c>does not exist.</p></item> + <tag><c>{no_such_file, Path}</c></tag> + <item><p>The path <c>Path</c> (file or directory) does not + exist.</p></item> + <tag><c>{no_such_file, {Master, Path}}</c></tag> + <item><p>The path <c>Path</c> (file or directory) does not exist at + the master node <c>Master</c>.</p></item> + <tag><c>{no_such_release, Vsn}</c></tag> + <item><p>The specified release version <c>Vsn</c> does not + exist.</p></item> + <tag><c>{not_a_directory, Path}</c></tag> + <item><p><c>Path</c> exists but is not a directory.</p></item> + <tag><c>{Posix, File}</c></tag> + <item><p>Some file operation failed for <c>File</c>. <c>Posix</c> + is an atom named from the Posix error codes, such as + <c>enoent</c>, <c>eacces</c>, or <c>eisdir</c>. See + <seealso marker="kernel:file"><c>file(3)</c></seealso> + in <c>Kernel</c>.</p></item> + <tag><c>Posix</c></tag> + <item><p>Some file operation failed, as for the previous item in + the list.</p></item> + </taglist> </section> <section> - <title>SEE ALSO</title> - <p><seealso marker="doc/design_principles:release_handling">OTP Design Principles</seealso>, - <seealso marker="kernel:config">config(4)</seealso>, - <seealso marker="relup">relup(4)</seealso>, - <seealso marker="rel">rel(4)</seealso>, - <seealso marker="script">script(4)</seealso>, - <seealso marker="stdlib:sys">sys(3)</seealso>, - <seealso marker="systools">systools(3)</seealso></p> + <title>See Also</title> + <p><seealso marker="doc/design_principles:users_guide">OTP Design Principles</seealso>, + <seealso marker="kernel:config"><c>config(4)</c></seealso>, + <seealso marker="rel"><c>rel(4)</c></seealso>, + <seealso marker="relup"><c>relup(4)</c></seealso>, + <seealso marker="script"><c>script(4)</c></seealso>, + <seealso marker="stdlib:sys"><c>sys(3)</c></seealso>, + <seealso marker="systools"><c>systools(3)</c></seealso></p> </section> </erlref> diff --git a/lib/sasl/doc/src/relup.xml b/lib/sasl/doc/src/relup.xml index 8eecf3fce2..58918fc8e8 100644 --- a/lib/sasl/doc/src/relup.xml +++ b/lib/sasl/doc/src/relup.xml @@ -36,59 +36,53 @@ <p>The <em>release upgrade file</em> describes how a release is upgraded in a running system.</p> <p>This file is automatically generated by - <c>systools:make_relup/3,4</c>, using a release resource file - (<c>.rel</c>), application resource files (<c>.app</c>) and + <seealso marker="systools#make_relup/3"><c>systools:make_relup/3,4</c></seealso>, + using a release resource file + (<c>.rel</c>), application resource files (<c>.app</c>), and application upgrade files (<c>.appup</c>) as input.</p> </description> <section> - <title>FILE SYNTAX</title> - <p>In a target system, the release upgrade file should be located in - the <c>OTP_ROOT/erts-EVsn/Vsn</c> directory.</p> + <title>File Syntax</title> + <p>In a target system, the release upgrade file is to be located in + directory <c>$ROOT/releases/Vsn</c>.</p> <p>The <c>relup</c> file contains one single Erlang term, which defines the instructions used to upgrade the release. The file has the following syntax:</p> <code type="none"> {Vsn, [{UpFromVsn, Descr, Instructions}, ...], - [{DownToVsn, Descr, Instructions}, ...]}. - </code> - <list type="bulleted"> - <item> - <p><c>Vsn = string()</c> is the current version of the release.</p> - </item> - <item> - <p><c>UpFromVsn = string()</c> is an earlier version of the release - to upgrade from.</p> - </item> - <item> - <p><c>Descr = term()</c> is a user defined parameter passed - from the <c>systools:make_relup/3,4</c> function. It will - be used in the return value of - <c>release_handler:install_release/1,2</c>.</p> - </item> - <item> - <p><c>Instructions</c> is a list of low-level release upgrade - instructions, see <c>appup(4)</c>.</p> - <p>It consists of the release upgrade instructions from + [{DownToVsn, Descr, Instructions}, ...]}.</code> + <taglist> + <tag><c>Vsn = string()</c></tag> + <item><p>Current release version.</p></item> + <tag><c>UpFromVsn = string()</c></tag> + <item><p>Earlier version of the release to upgrade from.</p></item> + <tag><c>Descr = term()</c></tag> + <item><p>A user-defined parameter passed + from the function + <seealso marker="systools#make_relup/3"><c>systools:make_relup/3,4</c></seealso>. + It is used in the return value of + <seealso marker="release_handler#install_release/1"><c>release_handler:install_release/1,2</c></seealso>.</p></item> + <tag><c>Instructions</c></tag> + <item><p>A list of low-level release upgrade instructions, see + <seealso marker="appup"><c>appup(4)</c></seealso>. + It consists of the release upgrade instructions from the respective application upgrade files (high-level instructions are translated to low-level instructions), in the same order - as in the start script.</p> - </item> - <item> - <p><c>DownToVsn = string()</c> is an earlier version of the release - to downgrade to.</p> - </item> - </list> - <p>When upgrading from <c>UpFromVsn</c> with - <c>release_handler:install_release/1,2</c>, there does not have to be - an exact match of versions, but <c>UpFromVsn</c> can be a sub-string - of the current release version.</p> + as in the start script.</p></item> + <tag><c>DownToVsn = string()</c></tag> + <item><p>Earlier version of the release to downgrade to.</p></item> + </taglist> </section> <section> - <title>SEE ALSO</title> - <p>app(4), appup(4), rel(4), release_handler(3), systools(3)</p> + <title>See Also</title> + <p><seealso marker="kernel:app"><c>app(4)</c></seealso>, + <seealso marker="appup"><c>appup(4)</c></seealso>, + <seealso marker="rel"><c>rel(4)</c></seealso>, + <seealso marker="release_handler"><c>release_handler(3)</c></seealso>, + <seealso marker="systools"><c>systools(3)</c></seealso></p> </section> </fileref> diff --git a/lib/sasl/doc/src/sasl_app.xml b/lib/sasl/doc/src/sasl_app.xml index fe38e69ce3..8d79251c7e 100644 --- a/lib/sasl/doc/src/sasl_app.xml +++ b/lib/sasl/doc/src/sasl_app.xml @@ -27,12 +27,11 @@ <docno></docno> <date></date> <rev></rev> - </header> - <app>sasl</app> - <appsummary>The SASL Application</appsummary> - <description> - <p>This section describes the SASL (System Architecture Support Libraries) - application which provides the following services:</p> + </header> + <app>sasl</app> + <appsummary>The SASL application</appsummary> + <description> + <p>The <c>SASL</c> application provides the following services:</p> <list type="bulleted"> <item><c>alarm_handler</c></item> <item><c>overload</c></item> @@ -40,138 +39,147 @@ <item><c>release_handler</c></item> <item><c>systools</c></item> </list> - <p>The SASL application also includes <c>error_logger</c> event - handlers for formatting SASL error and crash reports.</p> - + <p>The <c>SASL</c> application also includes <c>error_logger</c> event + handlers for formatting <c>SASL</c> error and crash reports.</p> <note> - <p>The SASL application in OTP has nothing to do with + <p>The <c>SASL</c> application in OTP has nothing to do with "Simple Authentication and Security Layer" (RFC 4422).</p> </note> - </description> <section> <title>Error Logger Event Handlers</title> <p>The following error logger event handlers are used by - the SASL application.</p> + the <c>SASL</c> application.</p> <taglist> <tag><c>sasl_report_tty_h</c></tag> <item> - <p>Formats and writes <em>supervisor reports</em>, <em>crash reports</em> and <em>progress reports</em> to <c>stdio</c>. - This error logger event handler will use + <p>Formats and writes <em>supervisor reports</em>, <em>crash + reports</em>, and <em>progress reports</em> to <c>stdio</c>. + This error logger event handler uses <seealso marker="kernel:kernel_app#error_logger_format_depth">error_logger_format_depth</seealso> - in the Kernel application to limit how much detail are printed to - for crash and supervisor reports.</p> + in the <c>Kernel</c> application to limit how much detail is + printed in crash and supervisor reports.</p> </item> <tag><c>sasl_report_file_h</c></tag> <item> - <p>Formats and writes <em>supervisor reports</em>, <em>crash report</em> and <em>progress report</em> to a single file. - This error logger event handler will use + <p>Formats and writes <em>supervisor reports</em>, <em>crash + report</em>, and <em>progress report</em> to a single file. + This error logger event handler uses <seealso marker="kernel:kernel_app#error_logger_format_depth">error_logger_format_depth</seealso> - in the Kernel application to limit how much detail are printed to - for crash and supervisor reports.</p> + in the <c>Kernel</c> application to limit the details + printed in crash and supervisor reports.</p> </item> <tag><c>log_mf_h</c></tag> <item> - <p>This error logger writes <em>all</em> events sent to - the error logger to disk.</p> - <p>To activate this event handler, the following three sasl - configuration parameters must be set: - <c>error_logger_mf_dir</c>, <c>error_logger_mf_maxbytes</c> - and <c>error_logger_mf_maxfiles</c>. See below for more - information about the configuration parameters.</p> + <p>This error logger writes <em>all</em> events sent to the + error logger to disk. Multiple files and log rotation are + used. For efficiency reasons, each event is written as a + binary. For more information about this handler, + see <seealso marker="stdlib:log_mf_h">the <c>STDLIB</c> Reference + Manual</seealso>.</p> + <p>To activate this event handler, three <c>SASL</c> + configuration parameters must be set, + <c>error_logger_mf_dir</c>, <c>error_logger_mf_maxbytes</c>, + and <c>error_logger_mf_maxfiles</c>. The next section provides + more information about the configuration parameters.</p> </item> </taglist> </section> <section> <title>Configuration</title> - <p>The following configuration parameters are defined for the SASL - application. See <c>app(4)</c> for more information about - configuration parameters:</p> + <p>The following configuration parameters are defined for the <c>SASL</c> + application. For more information about configuration parameters, see + <seealso marker="kernel:app"><c>app(4)</c></seealso> in <c>Kernel</c>.</p> + <p>All configuration parameters are optional.</p> <taglist> - <tag><c><![CDATA[sasl_error_logger = Value <optional>]]></c></tag> + <tag><c><![CDATA[sasl_error_logger = Value ]]></c></tag> <item> - <p><c>Value</c> is one of:</p> + <p><c>Value</c> is one of the following:</p> <taglist> <tag><c>tty</c></tag> - <item>Installs <c>sasl_report_tty_h</c> in the error logger. - This is the default option.</item> + <item><p>Installs <c>sasl_report_tty_h</c> in the error logger. + This is the default option.</p></item> <tag><c>{file,FileName}</c></tag> - <item>Installs <c>sasl_report_file_h</c> in the error logger. - This makes all reports go to the file <c>FileName</c>. - <c>FileName</c> is a string.</item> + <item><p>Installs <c>sasl_report_file_h</c> in the error logger. + All reports go to file <c>FileName</c>, which is a + string.</p></item> <tag><c>{file,FileName,Modes}</c></tag> - <item>Same as <c>{file,FileName}</c> except that the <c>Modes</c> - allows to specify the modes used for opening the <c>FileName</c> - given to the <seealso marker="kernel:file#open/2">file:open/2</seealso> - call. When not specified, the <c>Modes</c> defaults to <c>[write]</c>. - Use <c>[append]</c> for having the <c>FileName</c> open in append mode. - <c>FileName</c> is a string.</item> + <item><p>Same as <c>{file,FileName}</c>, except that <c>Modes</c> + allows you to specify the modes used for opening the <c>FileName</c> + given to the <seealso marker="kernel:file#open/2">file:open/2</seealso> + call. When not specified, <c>Modes</c> defaults to <c>[write]</c>. + Use <c>[append]</c> to have the <c>FileName</c> open in append mode. + <c>FileName</c> is a string.</p></item> <tag><c>false</c></tag> - <item> - <p>No SASL error logger handler is installed.</p> - </item> + <item><p>No <c>SASL</c> error logger handler is installed.</p></item> </taglist> </item> - <tag><c><![CDATA[errlog_type = error | progress | all <optional>]]></c></tag> + <tag><c><![CDATA[errlog_type = error | progress | all ]]></c></tag> <item> <p>Restricts the error logging performed by the specified - <c>sasl_error_logger</c> to error reports, progress reports, + <c>sasl_error_logger</c> to error reports or progress reports, or both. Default is <c>all</c>.</p> </item> - <tag><c><![CDATA[error_logger_mf_dir = string() | false<optional>]]></c></tag> + <tag><c><![CDATA[error_logger_mf_dir = string() | false ]]></c></tag> <item> - <p>Specifies in which directory the files are stored. If this - parameter is undefined or <c>false</c>, + <p>Specifies in which directory <c>log_mf_h</c> is to store + its files. If this parameter is undefined or <c>false</c>, the <c>log_mf_h</c> handler is not installed.</p> </item> - <tag><c><![CDATA[error_logger_mf_maxbytes = integer() <optional>]]></c></tag> + <tag><c><![CDATA[error_logger_mf_maxbytes = integer() ]]></c></tag> <item> - <p>Specifies how large each individual file can be. If this - parameter is undefined, the <c>log_mf_h</c> handler is not - installed.</p> + <p>Specifies the maximum size of each individual file written + by <c>log_mf_h</c>. If this parameter is undefined, + the <c>log_mf_h</c> handler is not installed.</p> </item> - <tag><c><![CDATA[error_logger_mf_maxfiles = 0<integer()<256 <optional>]]></c></tag> + <tag><c><![CDATA[error_logger_mf_maxfiles = 0<integer()<256 ]]></c></tag> <item> - <p>Specifies how many files are used. If this parameter is - undefined, the <c>log_mf_h</c> handler is not installed.</p> + <p>Specifies the number of files used by <c>log_mf_h</c>. If + this parameter is undefined, the <c>log_mf_h</c> handler is + not installed.</p> </item> - <tag><c><![CDATA[overload_max_intensity = float() > 0 <optional>]]></c></tag> + <tag><c><![CDATA[overload_max_intensity = float() > 0 ]]></c></tag> <item> - <p>Specifies the maximum intensity for <c>overload</c>. Default + <p>Specifies the maximum intensity + for <seealso marker="overload"><c>overload</c></seealso>. Default is <c>0.8</c>.</p> </item> - <tag><c><![CDATA[overload_weight = float() > 0 <optional>]]></c></tag> + <tag><c><![CDATA[overload_weight = float() > 0 ]]></c></tag> <item> - <p>Specifies the <c>overload</c> weight. Default is <c>0.1</c>.</p> + <p>Specifies the <seealso marker="overload"><c>overload</c></seealso> + weight. Default is <c>0.1</c>.</p> </item> - <tag><c><![CDATA[start_prg = string() <optional>]]></c></tag> + <tag><c><![CDATA[start_prg = string() ]]></c></tag> <item> - <p>Specifies which program should be used when restarting - the system. Default is <c>$OTP_ROOT/bin/start</c>.</p> + <p>Specifies the program to be used when restarting the system + during release installation. Default is + <c>$OTP_ROOT/bin/start</c>.</p> </item> - <tag><c><![CDATA[masters = [atom()] <optional>]]></c></tag> + <tag><c><![CDATA[masters = [atom()] ]]></c></tag> <item> - <p>Specifies which nodes this node uses to read/write release - information. This parameter is ignored if - the <c>client_directory</c> parameter is not set.</p> + <p>Specifies the nodes used by this node to read/write release + information. This parameter is ignored if parameter + <c>client_directory</c> is not set.</p> </item> - <tag><c><![CDATA[client_directory = string() <optional>]]></c></tag> + <tag><c><![CDATA[client_directory = string() ]]></c></tag> <item> <p>This parameter specifies the client directory at the master - nodes. Refer to Release Handling in <em>OTP Design Principles</em> for more information. This parameter is - ignored if the <c>masters</c> parameter is not set.</p> + nodes. For details, see + <seealso marker="doc/design_principles:release_handling">Release Handling</seealso> + in <em>OTP Design Principles</em>. This parameter is + ignored if parameter <c>masters</c> is not set.</p> </item> - <tag><c><![CDATA[static_emulator = true | false <optional>]]></c></tag> + <tag><c><![CDATA[static_emulator = true | false ]]></c></tag> <item> <p>Indicates if the Erlang emulator is statically installed. A node with a static emulator cannot switch dynamically to a - new emulator as the executable files are written into memory - statically. This parameter is ignored if the <c>masters</c> - and <c>client_directory</c> parameters are not set.</p> + new emulator, as the executable files are written into memory + statically. This parameter is ignored if parameters <c>masters</c> + and <c>client_directory</c> are not set.</p> </item> - <tag><c><![CDATA[releases_dir = string() <optional>]]></c></tag> + <tag><c><![CDATA[releases_dir = string() ]]></c></tag> <item> <p>Indicates where the <c>releases</c> directory is located. The release handler writes all its files to this directory. @@ -179,7 +187,7 @@ <c>RELDIR</c> is used. By default, this is <c>$OTP_ROOT/releases</c>.</p> </item> - <tag><c><![CDATA[utc_log = true | false <optional>]]></c></tag> + <tag><c><![CDATA[utc_log = true | false ]]></c></tag> <item> <p>If set to <c>true</c>, all dates in textual log outputs are displayed in Universal Coordinated Time with the string @@ -190,13 +198,13 @@ <section> <title>See Also</title> - <p><seealso marker="alarm_handler">alarm_handler(3)</seealso>, - error_logger(3), - log_mf_h(3), - <seealso marker="overload">overload(3)</seealso>, - <seealso marker="rb">rb(3)</seealso>, - <seealso marker="release_handler">release_handler(3)</seealso>, - <seealso marker="systools">systools(3)</seealso></p> + <p><seealso marker="alarm_handler"><c>alarm_handler(3)</c></seealso>, + <seealso marker="kernel:error_logger"><c>error_logger(3)</c></seealso>, + <seealso marker="stdlib:log_mf_h"><c>log_mf_h(3)</c></seealso>, + <seealso marker="overload"><c>overload(3)</c></seealso>, + <seealso marker="rb"><c>rb(3)</c></seealso>, + <seealso marker="release_handler"><c>release_handler(3)</c></seealso>, + <seealso marker="systools"><c>systools(3)</c></seealso></p> </section> </appref> diff --git a/lib/sasl/doc/src/sasl_intro.xml b/lib/sasl/doc/src/sasl_intro.xml index 2dc3efebc1..bbc9457103 100644 --- a/lib/sasl/doc/src/sasl_intro.xml +++ b/lib/sasl/doc/src/sasl_intro.xml @@ -31,22 +31,32 @@ </header> <section> - <title>About This Document</title> - <p>The SASL (System Architecture Support Libraries) - application provides support for:</p> + <title>Scope</title> + <p>The <c>SASL</c> application provides support for:</p> <list type="bulleted"> - <item>error logging</item> - <item>alarm handling</item> - <item>overload regulation</item> - <item>release handling</item> - <item>report browsing.</item> + <item>Error logging</item> + <item>Alarm handling</item> + <item>Overload regulation</item> + <item>Release handling</item> + <item>Report browsing</item> </list> - <p>In this document, "SASL Error Logging" describes the error - handler which produces the supervisor, progress, and crash - reports which can be written to screen, or to a specified file. - It also describes the report browser <c>rb</c>.</p> - <p>The chapters about release structure and release handling have - been moved to <em>OTP Design Principles</em>.</p> + <p>Section + <seealso marker="error_logging">SASL Error Logging</seealso> + describes the error + handler that produces the supervisor, progress, and crash + reports, which can be written to screen or to a specified file. + It also describes the Report Browser (RB).</p> + <p>The sections about release structure and release handling have + been moved to section + <seealso marker="doc/design_principles:users_guide">OTP Design Principles</seealso> + in <em>System Documentation</em>.</p> </section> + + <section> + <title>Prerequisites</title> + <p>It is assumed that the reader is familiar with the Erlang + programming language.</p> + </section> + </chapter> diff --git a/lib/sasl/doc/src/script.xml b/lib/sasl/doc/src/script.xml index 838efe69bb..db3ea0f487 100644 --- a/lib/sasl/doc/src/script.xml +++ b/lib/sasl/doc/src/script.xml @@ -37,25 +37,21 @@ <file>script</file> <filesummary>Boot script</filesummary> <description> - <p>The <em>boot script</em> describes how the Erlang runtime system is - started. It contains instructions on which code to load and - which processes and applications to start. - </p> - <p>The command <c>erl -boot Name</c> starts the system with a boot + <p>The <em>boot script</em> describes how the Erlang runtime system + is started. It contains instructions on which code to load and + which processes and applications to start.</p> + <p>Command <c>erl -boot Name</c> starts the system with a boot file called <c>Name.boot</c>, which is generated from the - <c>Name.script</c> file, using <c>systools:script2boot/1</c>. - </p> + <c>Name.script</c> file, using + <seealso marker="systools#script2boot/1"><c>systools:script2boot/1</c></seealso>.</p> <p>The <c>.script</c> file is generated by <c>systools</c> from a - <c>.rel</c> file and <c>.app</c> files. - </p> + <c>.rel</c> file and from <c>.app</c> files.</p> </description> <section> - <title>FILE SYNTAX</title> - <p>The boot script is stored in a file with the extension - <c>.script</c></p> - <p>The file has the following syntax: - </p> + <title>File Syntax</title> + <p>The boot script is stored in a file with extension + <c>.script</c>. The file has the following syntax:</p> <code type="none"> {script, {Name, Vsn}, [ @@ -70,100 +66,97 @@ ... {apply, {Mod, Func, Args}}, ... - {progress, started}]}. </code> - <list type="bulleted"> - <item><c>Name = string()</c> defines the name of the system. - </item> - <item><c>Vsn = string()</c> defines the version of the system. - </item> - <item><c>{progress, Term}</c> sets the "progress" of the - initialization program. The function <c>init:get_status()</c> - returns the current value of the progress, which is - <c>{InternalStatus,Term}</c>. - </item> - <item> - <p><c>{path, [Dir]}</c> where <c>Dir</c> is a string. This + {progress, started}]}.</code> + <taglist> + <tag><c>Name = string()</c></tag> + <item><p>Defines the system name.</p></item> + <tag><c>Vsn = string()</c></tag> + <item><p>Defines the system version.</p></item> + <tag><c>{progress, Term}</c></tag> + <item><p>Sets the "progress" of the initialization + program. The + <seealso marker="erts:init#get_status/0"><c>init:get_status/0</c></seealso> + function returns the current value of the progress, which is + <c>{InternalStatus,Term}</c>.</p></item> + <tag><c>{path, [Dir]}</c></tag> + <item><p><c>Dir</c> is a string. This argument sets the load path of the system to <c>[Dir]</c>. The load path used to load modules is obtained from the initial load path, which is given in the script file, together with - any path flags which were supplied in the command line - arguments. The command line arguments modify the path as + any path flags that were supplied in the command-line + arguments. The command-line arguments modify the path as follows:</p> <list type="bulleted"> <item><c>-pa Dir1 Dir2 ... DirN</c> adds the directories <c>Dir1, Dir2, ..., DirN</c> to the front of the initial - load path. - </item> + load path.</item> <item><c>-pz Dir1 Dir2 ... DirN</c> adds the directories <c>Dir1, Dir2, ..., DirN</c> to the end of the initial - load path. - </item> + load path.</item> <item> <p><c>-path Dir1 Dir2 ... DirN</c> defines a set of - directories <c>Dir1, Dir2, ..., DirN</c> which replaces + directories <c>Dir1, Dir2, ..., DirN</c>, which replace the search path given in the script file. Directory names in the path are interpreted as follows:</p> <list type="bulleted"> <item>Directory names starting with <c>/</c> are assumed - to be absolute path names. - </item> + to be absolute path names.</item> <item>Directory names not starting with <c>/</c> are - assumed to be relative the current working directory. - </item> + assumed to be relative the current working directory.</item> <item>The special <c>$ROOT</c> variable can only be used - in the script, not as a command line argument. The + in the script, not as a command-line argument. The given directory is relative the Erlang installation - directory. - </item> + directory.</item> </list> </item> </list> - </item> - <item><c>{primLoad, [Mod]}</c> loads the modules <c>[Mod]</c> - from the directories specified in <c>Path</c>. The script - interpreter fetches the appropriate module by calling the - function <c>erl_prim_loader:get_file(Mod)</c>. A fatal error - which terminates the system will occur if the module cannot be - located. - </item> - <item><c>{kernel_load_completed}</c> indicates that all modules - which <em>must</em> be loaded <em>before</em> any processes - are started are loaded. In interactive mode, all - <c>{primLoad,[Mod]}</c> commands interpreted after this - command are ignored, and these modules are loaded on demand. - In embedded mode, <c>kernel_load_completed</c> is ignored, and - all modules are loaded during system start. - </item> - <item><c>{kernelProcess, Name, {Mod, Func, Args}}</c> starts a - "kernel process". The kernel process <c>Name</c> is started - by evaluating <c>apply(Mod, Func, Args)</c> which is expected - to return <c>{ok, Pid}</c> or <c>ignore</c>. The <c>init</c> - process monitors the behaviour of <c>Pid</c> and terminates - the system if <c>Pid</c> dies. Kernel processes are key - components of the runtime system. Users do not normally add - new kernel processes. - </item> - <item><c>{apply, {Mod, Func, Args}}</c>. The init process simply - evaluates <c>apply(Mod, Func, Args)</c>. The system - terminates if this results in an error. The boot procedure - hangs if this function never returns. - </item> - </list> + </item> + <tag><c>{primLoad, [Mod]}</c></tag> + <item><p>Loads the modules <c>[Mod]</c> + from the directories specified in <c>Path</c>. The script + interpreter fetches the appropriate module by calling + <seealso marker="erts:erl_prim_loader#get_file/1"> + <c>erl_prim_loader:get_file(Mod)</c></seealso>. A fatal error + that terminates the system occurs if the module cannot be + located.</p></item> + <tag><c>{kernel_load_completed}</c></tag> + <item><p>Indicates that all modules + that <em>must</em> be loaded <em>before</em> any processes + are started are loaded. In interactive mode, all + <c>{primLoad,[Mod]}</c> commands interpreted after this + command are ignored, and these modules are loaded on demand. + In embedded mode, <c>kernel_load_completed</c> is ignored, and + all modules are loaded during system start.</p></item> + <tag><c>{kernelProcess, Name, {Mod, Func, Args}}</c></tag> + <item><p>Starts the + "kernel process" <c>Name</c> + by evaluating <c>apply(Mod, Func, Args)</c>. The start function is + to return <c>{ok, Pid}</c> or <c>ignore</c>. The <c>init</c> + process monitors the behavior of <c>Pid</c> and terminates + the system if <c>Pid</c> dies. Kernel processes are key + components of the runtime system. Users do not normally add + new kernel processes.</p></item> + <tag><c>{apply, {Mod, Func, Args}}</c>.</tag> + <item><p>The init process + evaluates <c>apply(Mod, Func, Args)</c>. The system + terminates if this results in an error. The boot procedure + hangs if this function never returns.</p></item> + </taglist> <note> - <p>In the <c>interactive</c> system the code loader provides - demand driven code loading, but in the <c>embedded</c> system - the code loader loads all the code immediately. The same - version of <c>code</c> is used in both cases. The code server - calls <c>init:get_argument(mode)</c> to find out if it should - run in demand mode, or non-demand driven mode. - </p> + <p>In an interactive system, the code loader provides + demand-driven code loading, but in an embedded system + the code loader loads all code immediately. The same + version of <seealso marker="kernel:code"><c>code</c></seealso> + is used in both cases. The code server calls + <seealso marker="erts:init#get_argument/1"><c>init:get_argument(mode)</c></seealso> + to determine if it is to run in demand mode or non-demand + driven mode.</p> </note> </section> <section> - <title>SEE ALSO</title> - <p>systools(3) - </p> + <title>See Also</title> + <p><seealso marker="systools"><c>systools(3)</c></seealso></p> </section> </fileref> diff --git a/lib/sasl/doc/src/systools.xml b/lib/sasl/doc/src/systools.xml index 11d99fa595..1a5119a5cf 100644 --- a/lib/sasl/doc/src/systools.xml +++ b/lib/sasl/doc/src/systools.xml @@ -31,17 +31,18 @@ <rev></rev> </header> <module>systools</module> - <modulesummary>A Set of Release Handling Tools.</modulesummary> + <modulesummary>A Set of Release Handling Tools</modulesummary> <description> <p>This module contains functions to generate boot scripts - (<c>.boot</c>, <c>.script</c>), release upgrade scripts + (<c>.boot</c>, <c>.script</c>), a release upgrade file (<c>relup</c>), and release packages.</p> </description> + <funcs> <func> <name>make_relup(Name, UpFrom, DownTo) -> Result</name> <name>make_relup(Name, UpFrom, DownTo, [Opt]) -> Result</name> - <fsummary>Generate a release upgrade file <c>relup</c>.</fsummary> + <fsummary>Generates a release upgrade file <c>relup</c>.</fsummary> <type> <v>Name = string()</v> <v>UpFrom = DownTo = [Name | {Name,Descr}]</v> @@ -50,93 +51,94 @@ | warnings_as_errors</v> <v> Dir = string()</v> <v>Result = ok | error | {ok,Relup,Module,Warnings} | {error,Module,Error}</v> - <v> Relup - see relup(4)</v> + <v> Relup, see relup(4)</v> <v> Module = atom()</v> <v> Warnings = Error = term()</v> </type> <desc> - <p>Generates a release upgrade file <c>relup</c> containing a - script which describes how to upgrade the system from a number - of previous releases, and how to downgrade to a number of - previous releases. The script is used by - <c>release_handler</c> when installing a new version of a - release in run-time.</p> - <p>By default, <c>relup</c> is placed in the current working - directory. If the option <c>{outdir,Dir}</c> is provided, - <c>relup</c> is placed in <c>Dir</c> instead.</p> + <p>Generates a release upgrade file <c>relup</c> containing instructions + for upgrading from or downgrading to one or more previous releases. + The instructions are used by + <seealso marker="release_handler"><c>release_handler</c></seealso> + when installing a new version of a release in runtime.</p> + <p>By default, <c>relup</c> file is located in the current working + directory. If option <c>{outdir,Dir}</c> is specified, + the <c>relup</c> file is located in <c>Dir</c> instead.</p> <p>The release resource file <c>Name.rel</c> is compared with - all release resource files <c>Name2.rel</c> specified in - <c>UpFrom</c> and <c>DownTo</c>. For each such pair, it is - deducted:</p> + all release resource files <c>Name2.rel</c>, specified in + <c>UpFrom</c> and <c>DownTo</c>. For each such pair, the + following is deducted:</p> <list type="bulleted"> <item> - <p>Which applications should be deleted, that is - applications which are listed in <c>Name.rel</c> but not - in <c>Name2.rel</c>.</p> + <p>Which applications to be deleted, that is, + applications listed in <c>Name.rel</c> but not + in <c>Name2.rel</c></p> </item> <item> - <p>Which applications should be added, that is applications - which are listed in <c>Name2.rel</c> but not in - <c>Name.rel</c>.</p> + <p>Which applications to be added, that is, applications + listed in <c>Name2.rel</c> but not in <c>Name.rel</c></p> </item> <item> - <p>Which applications should be upgraded/downgraded, that - is applications listed in both <c>Name.rel</c> and - <c>Name2.rel</c>, but with different versions.</p> + <p>Which applications to be upgraded/downgraded, that + is, applications listed in both <c>Name.rel</c> and + <c>Name2.rel</c> but with different versions</p> </item> <item> <p>If the emulator needs to be restarted after upgrading or - downgrading, that is if the ERTS version differs between - <c>Name.rel</c> and <c>Name2.rel</c>.</p> + downgrading, that is, if the <c>ERTS</c> version differs + between <c>Name.rel</c> and <c>Name2.rel</c></p> </item> </list> - <p>Instructions for this are added to the <c>relup</c> script in + <p>Instructions for this are added to the <c>relup</c> file in the above order. Instructions for upgrading or downgrading between application versions are fetched from the relevant application upgrade files <c>App.appup</c>, sorted in the same order as when generating a boot script, see - <c>make_script/1,2</c>. High-level instructions are translated - into low-level instructions and the result is printed to - <c>relup</c>.</p> - <p>The optional <c>Descr</c> parameter is included as-is in - the <c>relup</c> script, see <c>relup(4)</c>. Defaults to + <seealso marker="#make_script/1"><c>make_script/1,2</c></seealso>. + High-level instructions are translated + into low-level instructions and the result is printed to the + <c>relup</c> file.</p> + <p>The optional <c>Descr</c> parameter is included "as is" in + the <c>relup</c> file, see + <seealso marker="relup"><c>relup(4)</c></seealso>. Defaults to the empty list.</p> <p>All the files are searched for in the code path. It is - assumed that the <c>.app</c> and <c>.appup</c> file for an - application is located in the same directory.</p> - <p>If the option <c>{path,[Dir]}</c> is provided, this path is - appended to the current path. The wildcard <c>*</c> is - expanded to all matching directories. - Example: <c>lib/*/ebin</c>.</p> - <p>If the <c>restart_emulator</c> option is supplied, a + assumed that the <c>.app</c> and <c>.appup</c> files for an + application are located in the same directory.</p> + <p>If option <c>{path,[Dir]}</c> is specified, this path is + appended to the current path. Wildcard <c>*</c> is + expanded to all matching directories, for example, + <c>lib/*/ebin</c>.</p> + <p>If option <c>restart_emulator</c> is specified, a low-level instruction to restart the emulator is appended to - the relup scripts. This ensures that a complete reboot of + the <c>relup</c> file. This ensures that a complete reboot of the system is done when the system is upgraded or downgraded.</p> - <p>If an upgrade includes a change from an emulator earlier - than OTP R15 to OTP R15 or later, the warning - <c>pre_R15_emulator_upgrade</c> is issued. See <seealso - marker="doc/design_principles:appup_cookbook">Design - Principles</seealso> for more information about this.</p> + <p>If an upgrade includes a change from an emulator earlier + than OTP R15 to OTP R15 or later, the warning + <c>pre_R15_emulator_upgrade</c> is issued. For more information + about this, see + <seealso marker="doc/design_principles:appup_cookbook">Design + Principles</seealso> in <em>System Documentation</em>.</p> <p>By default, errors and warnings are printed to tty and - the function returns <c>ok</c> or <c>error</c>. If the option - <c>silent</c> is provided, the function instead returns - <c>{ok,Relup,Module,Warnings}</c> where <c>Relup</c> is - the release upgrade script, or it returns - <c>{error,Module,Error}</c>. Warnings and errors can be - converted to strings by calling + the function returns <c>ok</c> or <c>error</c>. If option + <c>silent</c> is specified, the function instead either returns + <c>{ok,Relup,Module,Warnings}</c>, where <c>Relup</c> is + the release upgrade file, or <c>{error,Module,Error}</c>. + Warnings and errors can be converted to strings by calling <c>Module:format_warning(Warnings)</c> or <c>Module:format_error(Error)</c>.</p> - <p>If the option <c>noexec</c> is provided, the function returns + <p>If option <c>noexec</c> is specified, the function returns the same values as for <c>silent</c> but no <c>relup</c> file is created.</p> - <p>If the option <c>warnings_as_errors</c> is provided, warnings - are treated as errors.</p> + <p>If option <c>warnings_as_errors</c> is specified, warnings + are treated as errors.</p> </desc> </func> + <func> <name>make_script(Name) -> Result</name> <name>make_script(Name, [Opt]) -> Result</name> - <fsummary>Generate a boot script <c>.script/.boot</c>.</fsummary> + <fsummary>Generates a boot script <c>.script/.boot</c>.</fsummary> <type> <v>Name = string()</v> <v>Opt = src_tests | {path,[Dir]} | local | {variables,[Var]} | exref | @@ -153,114 +155,117 @@ <desc> <p>Generates a boot script <c>Name.script</c> and its binary version, the boot file <c>Name.boot</c>. The boot file - specifies which code should be loaded and which applications - should be started when the Erlang runtime system is started. - See <c>script(4)</c>.</p> - <p>The release resource file <c>Name.rel</c> is read to find - out which applications are included in the release. Then - the relevant application resource files <c>App.app</c> are - read to find out which modules should be loaded and if and - how the application should be started. (Keys <c>modules</c> - and <c>mod</c>, see <c>app(4)</c>).</p> - <p>By default, the boot script and boot file are placed in + specifies which code to be loaded and which applications + to be started when the Erlang runtime system is started. + See <seealso marker="script"><c>script(4)</c></seealso>.</p> + <p>The release resource file <c>Name.rel</c> is read to determine + which applications are included in the release. Then + the relevant application resource files <c>App.app</c> are read + to determine which modules to be loaded, and if and + how the applications are to be started. (Keys <c>modules</c> + and <c>mod</c>, see + <seealso marker="kernel:app"><c>app(4)</c></seealso>.</p> + <p>By default, the boot script and boot file are located in the same directory as <c>Name.rel</c>. That is, in the current working directory unless <c>Name</c> contains a path. If - the option <c>{outdir,Dir}</c> is provided, they are placed + option <c>{outdir,Dir}</c> is specified, they are located in <c>Dir</c> instead.</p> - <p>The correctness of each application is checked:</p> + <p>The correctness of each application is checked as follows:</p> <list type="bulleted"> <item> <p>The version of an application specified in - the <c>.rel</c> file should be the same as the version + the <c>.rel</c> file is to be the same as the version specified in the <c>.app</c> file.</p> </item> <item> - <p>There should be no undefined applications, that is, - dependencies to applications which are not included in - the release. (Key <c>applications</c> in <c>.app</c> + <p>There are to be no undefined applications, that is, + dependencies to applications that are not included in + the release. (Key <c>applications</c> in the <c>.app</c> file).</p> </item> <item> - <p>There should be no circular dependencies among + <p>There are to be no circular dependencies among the applications.</p> </item> <item> - <p>There should be no duplicated modules, that is, modules with + <p>There are to be no duplicated modules, that is, modules with the same name but belonging to different applications.</p> </item> <item> - <p>If the <c>src_tests</c> option is specified, a + <p>If option <c>src_tests</c> is specified, a warning is issued if the source code for a module is - missing or newer than the object code.</p> + missing or is newer than the object code.</p> </item> </list> <p>The applications are sorted according to the dependencies between the applications. Where there are no dependencies, the order in the <c>.rel</c> file is kept.</p> - <p>The function will fail if the mandatory - applications <c>kernel</c> and <c>stdlib</c> are not - included in the <c>.rel</c> file and have start - type <c>permanent</c> (default).</p> - <p>If <c>sasl</c> is not included as an application in - the <c>.rel</c> file, a warning is emitted because such a - release can not be used in an upgrade. To turn off this - warning, add the option <c>no_warn_sasl</c>.</p> + <p>The function fails if the mandatory + applications <c>Kernel</c> and <c>STDLIB</c> are not + included in the <c>.rel</c> file and have start + type <c>permanent</c> (which is default).</p> + <p>If <c>SASL</c> is not included as an application in + the <c>.rel</c> file, a warning is issued because such a + release cannot be used in an upgrade. To turn off this + warning, add option <c>no_warn_sasl</c>.</p> <p>All files are searched for in the current path. It is assumed that the <c>.app</c> and <c>.beam</c> files for an - application is located in the same directory. The <c>.erl</c> + application are located in the same directory. The <c>.erl</c> files are also assumed to be located in this directory, unless - it is an <c>ebin</c> directory in which case they may be + it is an <c>ebin</c> directory in which case they can be located in the corresponding <c>src</c> directory.</p> - <p>If the option <c>{path,[Dir]}</c> is provided, this path is + <p>If option <c>{path,[Dir]}</c> is specified, this path is appended to the current path. A directory in the path can be - given with a wildcard <c>*</c>, this is expanded to all + specified with a wildcard <c>*</c>, this is expanded to all matching directories. Example: <c>"lib/*/ebin"</c>.</p> <p>In the generated boot script all application directories are - structured as <c>App-Vsn/ebin</c> and assumed to be located + structured as <c>App-Vsn/ebin</c>. They are assumed to be located in <c>$ROOT/lib</c>, where <c>$ROOT</c> is the root directory - of the installed release. If the <c>local</c> option is - supplied, the actual directories where the applications were + of the installed release. If option <c>local</c> is + specified, the actual directories where the applications were found are used instead. This is a useful way to test a generated boot script locally.</p> - <p>The <c>variables</c> option can be used to specify an + <p>Option <c>variables</c> can be used to specify an installation directory other than <c>$ROOT/lib</c> for some of the applications. If a variable <c>{VarName,Prefix}</c> is specified and an application is found in a directory - <c>Prefix/Rest/App[-Vsn]/ebin</c>, this application will get + <c>Prefix/Rest/App[-Vsn]/ebin</c>, this application gets the path <c>VarName/Rest/App-Vsn/ebin</c> in the boot script. If an application is found in a directory <c>Prefix/Rest</c>, - the path will be <c>VarName/Rest/App-Vsn/ebin</c>. When + the path is <c>VarName/Rest/App-Vsn/ebin</c>. When starting Erlang, all variables <c>VarName</c> are given - values using the <c>boot_var</c> command line flag.</p> - <p>Example: If the option <c>{variables,[{"TEST","lib"}]}</c> is - supplied, and <c>myapp.app</c> is found in - <c>lib/myapp/ebin</c>, then the path to this application in - the boot script will be <c>"$TEST/myapp-1/ebin"</c>. If - <c>myapp.app</c> is found in <c>lib/test</c>, then the path - will be <c>$TEST/test/myapp-1/ebin</c>.</p> + values using command-line flag <c>boot_var</c>.</p> + <p><em>Example:</em> If option <c>{variables,[{"TEST","lib"}]}</c> + is specified and <c>myapp.app</c> is found in + <c>lib/myapp/ebin</c>, the path to this application in + the boot script is <c>"$TEST/myapp-1/ebin"</c>. If + <c>myapp.app</c> is found in <c>lib/test</c>, the path + is <c>$TEST/test/myapp-1/ebin</c>.</p> <p>The checks performed before the boot script is generated can be extended with some cross reference checks by specifying - the <c>exref</c> option. These checks are performed with + option <c>exref</c>. These checks are performed with the Xref tool. All applications, or the applications specified with <c>{exref,[App]}</c>, are checked by Xref and - warnings are generated for calls to undefined functions.</p> + warnings are issued for calls to undefined functions.</p> <p>By default, errors and warnings are printed to tty and - the function returns <c>ok</c> or <c>error</c>. If the option - <c>silent</c> is provided, the function instead returns + the function returns <c>ok</c> or <c>error</c>. If option + <c>silent</c> is specified, the function instead returns <c>{ok,Module,Warnings}</c> or <c>{error,Module,Error}</c>. Warnings and errors can be converted to strings by calling <c>Module:format_warning(Warnings)</c> or <c>Module:format_error(Error)</c>.</p> - <p>If the option <c>warnings_as_errors</c> is provided, warnings - are treated as errors.</p> - <p>If the option <c>no_dot_erlang</c> is provided, the instruction to - load the <c>.erlang</c> file during boot is <em>NOT</em> included.</p> + <p>If option <c>warnings_as_errors</c> is specified, warnings + are treated as errors.</p> + <p>If option <c>no_dot_erlang</c> is specified, the instruction to + load the <c>.erlang</c> file during boot is <em>not</em> + included.</p> </desc> </func> + <func> <name>make_tar(Name) -> Result</name> <name>make_tar(Name, [Opt]) -> Result</name> - <fsummary>Create a release package.</fsummary> + <fsummary>Creates a release package.</fsummary> <type> <v>Name = string()</v> <v>Opt = {dirs,[IncDir]} | {path,[Dir]} | {variables,[Var]} | {var_tar,VarTar} | {erts,Dir} | src_tests | exref | {exref,[App]} | silent | {outdir,Dir}</v> @@ -276,90 +281,91 @@ <v> Warning = Error = term()</v> </type> <desc> - <p>Creates a release package file <c>Name.tar.gz</c>. file. + <p>Creates a release package file <c>Name.tar.gz</c>. This file must be uncompressed and unpacked on the target - system using the <c>release_handler</c>, before the new - release can be installed.</p> - <p>The release resource file <c>Name.rel</c> is read to find out + system using + <seealso marker="release_handler"><c>release_handler</c></seealso> + before the new release can be installed.</p> + <p>The release resource file <c>Name.rel</c> is read to determine which applications are included in the release. Then the relevant application resource files <c>App.app</c> are - read to find out the version and modules of each application. - (Keys <c>vsn</c> and <c>modules</c>, see <c>app(4)</c>).</p> - <p>By default, the release package file is placed in the same + read to determine the version and modules of each application + (keys <c>vsn</c> and <c>modules</c>, see + <seealso marker="kernel:app"><c>app(4)</c></seealso>).</p> + <p>By default, the release package file is located in the same directory as <c>Name.rel</c>. That is, in the current working - directory unless <c>Name</c> contains a path. If the option - <c>{outdir,Dir}</c> is provided, it is placed in <c>Dir</c> + directory unless <c>Name</c> contains a path. If option + <c>{outdir,Dir}</c> is specified, it is located in <c>Dir</c> instead.</p> <p>By default, the release package contains the directories <c>lib/App-Vsn/ebin</c> and <c>lib/App-Vsn/priv</c> for each - included application. If more directories, the option - <c>dirs</c> is supplied. Example: + included application. If more directories are to be included, + option <c>dirs</c> is specified, for example, <c>{dirs,[src,examples]}</c>.</p> <p>All these files are searched for in the current path. If - the option <c>{path,[Dir]}</c> is provided, this path is - appended to the current path. The wildcard <c>*</c> is + option <c>{path,[Dir]}</c> is specified, this path is + appended to the current path. Wildcard <c>*</c> is expanded to all matching directories. Example: <c>"lib/*/ebin"</c>.</p> - <p>The <c>variables</c> option can be used to specify an + <p>Option <c>variables</c> can be used to specify an installation directory other than <c>lib</c> for some of - the applications. If a variable <c>{VarName,Prefix}</c> is - specified and an application is found in a directory - <c>Prefix/Rest/App[-Vsn]/ebin</c>, this application will be + the applications. If variable <c>{VarName,Prefix}</c> is + specified and an application is found in directory + <c>Prefix/Rest/App[-Vsn]/ebin</c>, this application is packed into a separate <c>VarName.tar.gz</c> file as <c>Rest/App-Vsn/ebin</c>.</p> - <p>Example: If the option <c>{variables,[{"TEST","lib"}]}</c> is - supplied, and <c>myapp.app</c> is found in - <c>lib/myapp-1/ebin</c>, the the application <c>myapp</c> is + <p><em>Example:</em> If option <c>{variables,[{"TEST","lib"}]}</c> + is specified and <c>myapp.app</c> is located in + <c>lib/myapp-1/ebin</c>, application <c>myapp</c> is included in <c>TEST.tar.gz</c>:</p> <pre> % <input>tar tf TEST.tar</input> myapp-1/ebin/myapp.app -... - </pre> - <p>The <c>{var_tar,VarTar}</c> option can be used to specify if - and where a separate package should be stored. In this option, - <c>VarTar</c> is:</p> - <list type="bulleted"> - <item> - <p><c>include</c>. Each separate (variable) package is - included in the main <c>ReleaseName.tar.gz</c> file. This - is the default.</p> - </item> - <item> - <p><c>ownfile</c>. Each separate (variable) package is - generated as separate files in the same directory as - the <c>ReleaseName.tar.gz</c> file.</p> - </item> - <item> - <p><c>omit</c>. No separate (variable) packages are - generated and applications which are found underneath a - variable directory are ignored.</p> - </item> - </list> - <p>A directory called <c>releases</c> is also included in +...</pre> + <p>Option <c>{var_tar,VarTar}</c> can be used to specify if + and where a separate package is to be stored. In this option + <c>VarTar</c> is one of the following:</p> + <taglist> + <tag><c>include</c></tag> + <item><p>Each separate (variable) package is included in the + main <c>ReleaseName.tar.gz</c> file. This is the + default.</p></item> + <tag><c>ownfile</c></tag> + <item><p>Each separate (variable) package is + generated as a separate file in the same directory as + the <c>ReleaseName.tar.gz</c> file.</p></item> + <tag><c>omit</c></tag> + <item><p>No separate (variable) packages are + generated. Applications that are found underneath a + variable directory are ignored.</p></item> + </taglist> + <p>A directory <c>releases</c> is also included in the release package, containing <c>Name.rel</c> and a - subdirectory called <c>RelVsn</c>. <c>RelVsn</c> is + subdirectory <c>RelVsn</c>. <c>RelVsn</c> is the release version as specified in <c>Name.rel</c>.</p> <p><c>releases/RelVsn</c> contains the boot script <c>Name.boot</c> renamed to <c>start.boot</c> and, if found, the files <c>relup</c> and <c>sys.config</c>. These files are searched for in the same directory as <c>Name.rel</c>, in the current working directory, and in any directories - specified using the <c>path</c> option.</p> - <p>If the release package should contain a new Erlang runtime + specified using option <c>path</c>.</p> + <p>If the release package is to contain a new Erlang runtime system, the <c>bin</c> directory of the specified runtime system <c>{erts,Dir}</c> is copied to <c>erts-ErtsVsn/bin</c>.</p> - <p>All checks performed with the <c>make_script</c> function - are performed before the release package is created. The - <c>src_tests</c> and <c>exref</c> options are also + <p>All checks with function + <seealso marker="#make_script/1"><c>make_script</c></seealso> + are performed before the release package is created. + Options <c>src_tests</c> and <c>exref</c> are also valid here.</p> <p>The return value and the handling of errors and warnings - are the same as described for <c>make_script</c> above.</p> + are the same as described for + <seealso marker="#make_script/1"><c>make_script</c></seealso>.</p> </desc> </func> + <func> <name>script2boot(File) -> ok | error</name> - <fsummary>Generate a binary version of a boot script.</fsummary> + <fsummary>Generates a binary version of a boot script.</fsummary> <type> <v>File = string()</v> </type> @@ -367,17 +373,24 @@ myapp-1/ebin/myapp.app <p>The Erlang runtime system requires that the contents of the script used to boot the system is a binary Erlang term. This function transforms the <c>File.script</c> boot script - to a binary term which is stored in the file <c>File.boot</c>.</p> - <p>A boot script generated using the <c>make_script</c> - function is already transformed to the binary form.</p> + to a binary term, which is stored in the <c>File.boot</c> + file.</p> + <p>A boot script generated using + <seealso marker="#make_script/1"><c>make_script</c></seealso> + is already transformed to the binary form.</p> </desc> </func> </funcs> <section> - <title>SEE ALSO</title> - <p>app(4), appup(4), erl(1), rel(4), release_handler(3), relup(4), - script(4)</p> + <title>See Also</title> + <p><seealso marker="kernel:app"><c>app(4)</c></seealso>, + <seealso marker="appup"><c>appup(4)</c></seealso>, + <seealso marker="erts:erl"><c>erl(1)</c></seealso>, + <seealso marker="rel"><c>rel(4)</c></seealso>, + <seealso marker="release_handler"><c>release_handler(3)</c></seealso>, + <seealso marker="relup"><c>relup(4)</c></seealso>, + <seealso marker="script"><c>script(4)</c></seealso></p> </section> </erlref> diff --git a/lib/snmp/src/app/snmp.appup.src b/lib/snmp/src/app/snmp.appup.src index f2936c0c1d..77418f920f 100644 --- a/lib/snmp/src/app/snmp.appup.src +++ b/lib/snmp/src/app/snmp.appup.src @@ -29,7 +29,7 @@ %% {update, snmpa_local_db, soft, soft_purge, soft_purge, []} %% {add_module, snmpm_net_if_mt} [ - {"5.3", [{load_module, snmp_conf, soft_purge, soft_purge, []}]}, + {"5.2", [{load_module, snmp_conf, soft_purge, soft_purge, []}]}, {"5.1.2", [ % Only runtime dependencies change ]}, {"5.1.1", [{restart_application, snmp}]}, @@ -51,6 +51,7 @@ %% {remove, {snmpm_net_if_mt, soft_purge, soft_purge}} [ + {"5.2", [{load_module, snmp_conf, soft_purge, soft_purge, []}]}, {"5.1.2", [ % Only runtime dependencies change ]}, {"5.1.1", [{restart_application, snmp}]}, diff --git a/lib/ssh/doc/src/ssh.xml b/lib/ssh/doc/src/ssh.xml index b3f850fc38..850557444d 100644 --- a/lib/ssh/doc/src/ssh.xml +++ b/lib/ssh/doc/src/ssh.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2004</year><year>2014</year> + <year>2004</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -418,10 +418,10 @@ <c><![CDATA["publickey,keyboard-interactive,password"]]></c></p> </item> - <tag><c><![CDATA[{auth_method_kb_interactive_data, PromptTexts}]]> - <br/>where: - <br/>PromptTexts = kb_int_tuple() | fun(Peer::{IP::tuple(),Port::integer()}, User::string(), Service::string()) -> kb_int_tuple() - <br/>kb_int_tuple() = {Name::string(), Instruction::string(), Prompt::string(), Echo::boolean()}</c> + <tag><c><![CDATA[{auth_method_kb_interactive_data, PromptTexts}]]></c> + <br/><c>where:</c> + <br/><c>PromptTexts = kb_int_tuple() | fun(Peer::{IP::tuple(),Port::integer()}, User::string(), Service::string()) -> kb_int_tuple()</c> + <br/><c>kb_int_tuple() = {Name::string(), Instruction::string(), Prompt::string(), Echo::boolean()}</c> </tag> <item> <p>Sets the text strings that the daemon sends to the client for presentation to the user when using <c>keyboar-interactive</c> authentication. If the fun/3 is used, it is called when the actual authentication occurs and may therefore return dynamic data like time, remote ip etc.</p> @@ -516,29 +516,29 @@ <item> <p>Provides a function for password validation. This could used for calling an external system or if passwords should be stored as a hash. The fun returns: - <list type="bulleted"> - <item><c>true</c> if the user and password is valid and</item> - <item><c>false</c> otherwise.</item> - </list> </p> + <list type="bulleted"> + <item><c>true</c> if the user and password is valid and</item> + <item><c>false</c> otherwise.</item> + </list> <p>This fun can also be used to make delays in authentication tries for example by calling <seealso marker="stdlib:timer#sleep/1">timer:sleep/1</seealso>. To facilitate counting of failed tries the <c>State</c> variable could be used. This state is per connection only. The first time the pwdfun is called for a connection, the <c>State</c> variable has the value <c>undefined</c>. The pwdfun can return - in addition to the values above - a new state as: - <list type="bulleted"> - <item><c>{true, NewState:any()}</c> if the user and password is valid or</item> - <item><c>{false, NewState:any()}</c> if the user or password is invalid</item> - </list> </p> + <list type="bulleted"> + <item><c>{true, NewState:any()}</c> if the user and password is valid or</item> + <item><c>{false, NewState:any()}</c> if the user or password is invalid</item> + </list> <p>A third usage is to block login attempts from a missbehaving peer. The <c>State</c> described above can be used for this. In addition to the responses above, the following return value is introduced: + </p> <list type="bulleted"> <item><c>disconnect</c> if the connection should be closed immediately after sending a SSH_MSG_DISCONNECT message.</item> </list> - </p> </item> <tag><c><![CDATA[{pwdfun, fun(User::string(), Password::string()) -> boolean()}]]></c></tag> diff --git a/lib/ssh/doc/src/ssh_app.xml b/lib/ssh/doc/src/ssh_app.xml index 79dd1e210e..f6ce44c015 100644 --- a/lib/ssh/doc/src/ssh_app.xml +++ b/lib/ssh/doc/src/ssh_app.xml @@ -4,7 +4,7 @@ <appref> <header> <copyright> - <year>2012</year><year>2013</year> + <year>2012</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -214,21 +214,21 @@ <p>The following rfc:s are supported:</p> <list type="bulleted"> <item><url href="https://tools.ietf.org/html/rfc4251">RFC 4251</url>, The Secure Shell (SSH) Protocol Architecture. - <p>Except + <p>Except</p> <list type="bulleted"> <item>9.4.6 Host-Based Authentication</item> <item>9.5.2 Proxy Forwarding</item> <item>9.5.3 X11 Forwarding</item> </list> - </p> + <p/> </item> <item><url href="https://tools.ietf.org/html/rfc4252">RFC 4252</url>, The Secure Shell (SSH) Authentication Protocol. - <p>Except + <p>Except</p> <list type="bulleted"> <item>9. Host-Based Authentication: "hostbased"</item> </list> - </p> + <p/> </item> <item><url href="https://tools.ietf.org/html/rfc4253">RFC 4253</url>, The Secure Shell (SSH) Transport Layer Protocol. @@ -236,32 +236,32 @@ </item> <item><url href="https://tools.ietf.org/html/rfc4254">RFC 4254</url>, The Secure Shell (SSH) Connection Protocol. - <p>Except + <p>Except</p> <list type="bulleted"> <item>6.3. X11 Forwarding</item> <item>7. TCP/IP Port Forwarding</item> </list> - </p> + <p/> </item> <item><url href="https://tools.ietf.org/html/rfc4256">RFC 4256</url>, Generic Message Exchange Authentication for the Secure Shell Protocol (SSH). - <p>Except + <p>Except</p> <list type="bulleted"> <item><c>num-prompts > 1</c></item> <item>password changing</item> <item>other identification methods than userid-password</item> </list> - </p> + <p/> </item> <item><url href="https://tools.ietf.org/html/rfc4419">RFC 4419</url>, Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol. - <p></p> + <p/> </item> <item><url href="https://tools.ietf.org/html/rfc4716">RFC 4716</url>, The Secure Shell (SSH) Public Key File Format. - <p></p> + <p/> </item> <item><url href="https://tools.ietf.org/html/rfc5647">RFC 5647</url>, AES Galois Counter Mode for @@ -270,34 +270,35 @@ This is resolved by OpenSSH in the ciphers [email protected] and [email protected] which are implemented. If the explicit ciphers and macs AEAD_AES_128_GCM or AEAD_AES_256_GCM are needed, they could be enabled with the option preferred_algorithms. + </p> <warning> - If the client or the server is not Erlang/OTP, it is the users responsibility to check that - other implementation has the same interpretation of AEAD_AES_*_GCM as the Erlang/OTP SSH before - enabling them. The aes*[email protected] variants are always safe to use since they lack the - ambiguity. + <p> + If the client or the server is not Erlang/OTP, it is the users responsibility to check that + other implementation has the same interpretation of AEAD_AES_*_GCM as the Erlang/OTP SSH before + enabling them. The aes*[email protected] variants are always safe to use since they lack the + ambiguity. + </p> </warning> - </p> - <p>The second paragraph in section 5.1 is resolved as: + <p>The second paragraph in section 5.1 is resolved as:</p> <list type="ordered"> <item>If the negotiated cipher is AEAD_AES_128_GCM, the mac algorithm is set to AEAD_AES_128_GCM.</item> <item>If the negotiated cipher is AEAD_AES_256_GCM, the mac algorithm is set to AEAD_AES_256_GCM.</item> <item>If the mac algorithm is AEAD_AES_128_GCM, the cipher is set to AEAD_AES_128_GCM.</item> <item>If the mac algorithm is AEAD_AES_256_GCM, the cipher is set to AEAD_AES_256_GCM.</item> </list> - The first rule that matches when read in order from the top is applied - </p> + <p>The first rule that matches when read in order from the top is applied</p> </item> <item><url href="https://tools.ietf.org/html/rfc5656">RFC 5656</url>, Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer. - <p>Except + <p>Except</p> <list type="bulleted"> <item>5. ECMQV Key Exchange</item> <item>6.4. ECMQV Key Exchange and Verification Method Name</item> <item>7.2. ECMQV Message Numbers</item> <item>10.2. Recommended Curves</item> </list> - </p> + <p/> </item> <item><url href="https://tools.ietf.org/html/rfc6668">RFC 6668</url>, SHA-2 Data Integrity Verification for diff --git a/lib/ssh/doc/src/ssh_connection.xml b/lib/ssh/doc/src/ssh_connection.xml index 064a623eb6..150d46a9a2 100644 --- a/lib/ssh/doc/src/ssh_connection.xml +++ b/lib/ssh/doc/src/ssh_connection.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2008</year> - <year>2014</year> + <year>2015</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -31,15 +31,15 @@ <rev></rev> </header> <module>ssh_connection</module> - <modulesummary>This module provides API functions to send - <url href="http://www.ietf.org/rfc/rfc4254.txt"> SSH Connection Protocol </url> - events to the other side of an SSH channel. + <modulesummary> + This module provides API functions to send SSH Connection Protocol + events to the other side of an SSH channel. </modulesummary> <description> - <p>The SSH Connection Protocol is used by clients and servers, - that is, SSH channels, to communicate over the SSH connection. The - API functions in this module send SSH Connection Protocol events, + <p>The <url href="http://www.ietf.org/rfc/rfc4254.txt">SSH Connection Protocol</url> + is used by clients and servers, that is, SSH channels, to communicate over the + SSH connection. The API functions in this module send SSH Connection Protocol events, which are received as messages by the remote channel. If the receiving channel is an Erlang process, the messages have the format diff --git a/lib/ssh/doc/src/ssh_server_key_api.xml b/lib/ssh/doc/src/ssh_server_key_api.xml index efb2c436e8..a0694ca8d9 100644 --- a/lib/ssh/doc/src/ssh_server_key_api.xml +++ b/lib/ssh/doc/src/ssh_server_key_api.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2012</year> - <year>2013</year> + <year>2015</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -75,7 +75,7 @@ <d>Host key algorithm. Is to support <c>'ssh-rsa' | 'ssh-dss'</c>, but more algorithms can be handled.</d> <v>DaemonOptions = proplists:proplist()</v> - <d>Options provided to <seealso marker="ssh#daemon-2">ssh:daemon/[2,3]</seealso>.</d> + <d>Options provided to <seealso marker="ssh#daemon-2">ssh:daemon/[2,3]</seealso>.</d> <v>Key = private_key()</v> <d>Private key of the host matching the <c>Algorithm</c>.</d> <v>Reason = term()</v> diff --git a/lib/ssh/doc/src/ssh_sftp.xml b/lib/ssh/doc/src/ssh_sftp.xml index 17800fac5d..c6ca0f161a 100644 --- a/lib/ssh/doc/src/ssh_sftp.xml +++ b/lib/ssh/doc/src/ssh_sftp.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2005</year><year>2014</year> + <year>2005</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -61,20 +61,23 @@ <funcs> <func> - <name>apread(ChannelPid, Handle, Position, Len) -> {async, N} | {error, Error}</name> - <v>ChannelPid = pid()</v> - <v>Handle = term()</v> - <v>Position = integer()</v> - <v>Len = integer()</v> - <v>N = term()</v> - <v>Reason = term()</v> - - <desc><p>The <c><![CDATA[apread]]></c> function reads from a specified position, - combining the <c><![CDATA[position]]></c> and <c><![CDATA[aread]]></c> functions.</p> + <name>apread(ChannelPid, Handle, Position, Len) -> {async, N} | {error, Reason}</name> + <fsummary>Reads asynchronously from an open file.</fsummary> + <type> + <v>ChannelPid = pid()</v> + <v>Handle = term()</v> + <v>Position = integer()</v> + <v>Len = integer()</v> + <v>N = term()</v> + <v>Reason = term()</v> + </type> + + <desc><p>The <c><![CDATA[apread]]></c> function reads from a specified position, + combining the <c><![CDATA[position]]></c> and <c><![CDATA[aread]]></c> functions.</p> <p><seealso marker="#apread-4">ssh_sftp:apread/4</seealso></p> </desc> - </func> - - <func> + </func> + + <func> <name>apwrite(ChannelPid, Handle, Position, Data) -> ok | {error, Reason}</name> <fsummary>Writes asynchronously to an open file.</fsummary> <type> diff --git a/lib/ssh/src/ssh_connection_handler.erl b/lib/ssh/src/ssh_connection_handler.erl index 516a09bf6a..f082db136c 100644 --- a/lib/ssh/src/ssh_connection_handler.erl +++ b/lib/ssh/src/ssh_connection_handler.erl @@ -999,7 +999,8 @@ handle_info({Protocol, Socket, Data}, StateName, encoded_data_buffer = EncData0, undecoded_packet_length = RemainingSshPacketLen0} = State0) -> Encoded = <<EncData0/binary, Data/binary>>, - case ssh_transport:handle_packet_part(DecData0, Encoded, RemainingSshPacketLen0, Ssh0) of + try ssh_transport:handle_packet_part(DecData0, Encoded, RemainingSshPacketLen0, Ssh0) + of {get_more, DecBytes, EncDataRest, RemainingSshPacketLen, Ssh1} -> {next_state, StateName, next_packet(State0#state{encoded_data_buffer = EncDataRest, @@ -1021,7 +1022,22 @@ handle_info({Protocol, Socket, Data}, StateName, #ssh_msg_disconnect{code = ?SSH_DISCONNECT_PROTOCOL_ERROR, description = "Bad mac", language = ""}, - handle_disconnect(DisconnectMsg, State0#state{ssh_params=Ssh1}) + handle_disconnect(DisconnectMsg, State0#state{ssh_params=Ssh1}); + + {error, {exceeds_max_size,PacketLen}} -> + DisconnectMsg = + #ssh_msg_disconnect{code = ?SSH_DISCONNECT_PROTOCOL_ERROR, + description = "Bad packet length " + ++ integer_to_list(PacketLen), + language = ""}, + handle_disconnect(DisconnectMsg, State0) + catch + _:_ -> + DisconnectMsg = + #ssh_msg_disconnect{code = ?SSH_DISCONNECT_PROTOCOL_ERROR, + description = "Bad packet", + language = ""}, + handle_disconnect(DisconnectMsg, State0) end; handle_info({CloseTag, _Socket}, _StateName, @@ -1392,44 +1408,54 @@ generate_event(<<?BYTE(Byte), _/binary>> = Msg, StateName, Byte == ?SSH_MSG_CHANNEL_REQUEST; Byte == ?SSH_MSG_CHANNEL_SUCCESS; Byte == ?SSH_MSG_CHANNEL_FAILURE -> - ConnectionMsg = ssh_message:decode(Msg), - State1 = generate_event_new_state(State0, EncData), - try ssh_connection:handle_msg(ConnectionMsg, Connection0, Role) of - {{replies, Replies0}, Connection} -> - if StateName == connected -> - Replies = Replies0, - State2 = State1; - true -> - {ConnReplies, Replies} = - lists:splitwith(fun not_connected_filter/1, Replies0), - Q = State1#state.event_queue ++ ConnReplies, - State2 = State1#state{ event_queue = Q } - end, - State = send_replies(Replies, State2#state{connection_state = Connection}), - {next_state, StateName, next_packet(State)}; - {noreply, Connection} -> - {next_state, StateName, next_packet(State1#state{connection_state = Connection})}; - {disconnect, {_, Reason}, {{replies, Replies}, Connection}} when - Role == client andalso ((StateName =/= connected) and (not Renegotiation)) -> - State = send_replies(Replies, State1#state{connection_state = Connection}), - User ! {self(), not_connected, Reason}, - {stop, {shutdown, normal}, - next_packet(State#state{connection_state = Connection})}; - {disconnect, _Reason, {{replies, Replies}, Connection}} -> - State = send_replies(Replies, State1#state{connection_state = Connection}), - {stop, {shutdown, normal}, State#state{connection_state = Connection}} + try + ssh_message:decode(Msg) + of + ConnectionMsg -> + State1 = generate_event_new_state(State0, EncData), + try ssh_connection:handle_msg(ConnectionMsg, Connection0, Role) of + {{replies, Replies0}, Connection} -> + if StateName == connected -> + Replies = Replies0, + State2 = State1; + true -> + {ConnReplies, Replies} = + lists:splitwith(fun not_connected_filter/1, Replies0), + Q = State1#state.event_queue ++ ConnReplies, + State2 = State1#state{ event_queue = Q } + end, + State = send_replies(Replies, State2#state{connection_state = Connection}), + {next_state, StateName, next_packet(State)}; + {noreply, Connection} -> + {next_state, StateName, next_packet(State1#state{connection_state = Connection})}; + {disconnect, {_, Reason}, {{replies, Replies}, Connection}} when + Role == client andalso ((StateName =/= connected) and (not Renegotiation)) -> + State = send_replies(Replies, State1#state{connection_state = Connection}), + User ! {self(), not_connected, Reason}, + {stop, {shutdown, normal}, + next_packet(State#state{connection_state = Connection})}; + {disconnect, _Reason, {{replies, Replies}, Connection}} -> + State = send_replies(Replies, State1#state{connection_state = Connection}), + {stop, {shutdown, normal}, State#state{connection_state = Connection}} + catch + _:Error -> + {disconnect, _Reason, {{replies, Replies}, Connection}} = + ssh_connection:handle_msg( + #ssh_msg_disconnect{code = ?SSH_DISCONNECT_BY_APPLICATION, + description = "Internal error", + language = "en"}, Connection0, Role), + State = send_replies(Replies, State1#state{connection_state = Connection}), + {stop, {shutdown, Error}, State#state{connection_state = Connection}} + end + catch - _:Error -> - {disconnect, _Reason, {{replies, Replies}, Connection}} = - ssh_connection:handle_msg( - #ssh_msg_disconnect{code = ?SSH_DISCONNECT_BY_APPLICATION, - description = "Internal error", - language = "en"}, Connection0, Role), - State = send_replies(Replies, State1#state{connection_state = Connection}), - {stop, {shutdown, Error}, State#state{connection_state = Connection}} + _:_ -> + handle_disconnect( + #ssh_msg_disconnect{code = ?SSH_DISCONNECT_PROTOCOL_ERROR, + description = "Bad packet received", + language = ""}, State0) end; - generate_event(Msg, StateName, State0, EncData) -> try Event = ssh_message:decode(set_prefix_if_trouble(Msg,State0)), diff --git a/lib/ssh/src/ssh_transport.erl b/lib/ssh/src/ssh_transport.erl index 67a0d29bb8..18037b8461 100644 --- a/lib/ssh/src/ssh_transport.erl +++ b/lib/ssh/src/ssh_transport.erl @@ -1004,10 +1004,7 @@ handle_packet_part(<<>>, Encrypted0, undefined, #ssh{decrypt = CryptoAlg} = Ssh0 {ok, PacketLen, _, _, _} when PacketLen > ?SSH_MAX_PACKET_SIZE -> %% far too long message than expected - throw(#ssh_msg_disconnect{code = ?SSH_DISCONNECT_PROTOCOL_ERROR, - description = "Bad packet length " - ++ integer_to_list(PacketLen), - language = ""}); + {error, {exceeds_max_size,PacketLen}}; {ok, PacketLen, Decrypted, Encrypted1, #ssh{recv_mac_size = MacSize} = Ssh1} -> diff --git a/lib/ssh/test/ssh_basic_SUITE.erl b/lib/ssh/test/ssh_basic_SUITE.erl index 85a6bac972..6c4c215b3d 100644 --- a/lib/ssh/test/ssh_basic_SUITE.erl +++ b/lib/ssh/test/ssh_basic_SUITE.erl @@ -311,6 +311,14 @@ init_per_testcase(TC, Config) when TC==shell_no_unicode ; ct:log("file:native_name_encoding() = ~p,~nio:getopts() = ~p", [file:native_name_encoding(),io:getopts()]), wait_for_erlang_first_line([{io,IO}, {shell,Shell}, {sftpd, Sftpd} | Config]); + +init_per_testcase(inet6_option, Config) -> + case ssh_test_lib:has_inet6_address() of + true -> + init_per_testcase('__default__', Config); + false -> + {skip,"No ipv6 interface address"} + end; init_per_testcase(_TestCase, Config) -> ssh:start(), Config. diff --git a/lib/ssh/test/ssh_protocol_SUITE.erl b/lib/ssh/test/ssh_protocol_SUITE.erl index 4639904061..5af60adfae 100644 --- a/lib/ssh/test/ssh_protocol_SUITE.erl +++ b/lib/ssh/test/ssh_protocol_SUITE.erl @@ -279,7 +279,9 @@ no_common_alg_server_disconnects(Config) -> {send, ssh_msg_kexinit}, % with server unsupported 'ssh-dss' ! {match, {'or',[#ssh_msg_disconnect{code = ?SSH_DISCONNECT_KEY_EXCHANGE_FAILED, _='_'}, - tcp_closed]}, + tcp_closed, + {tcp_error,econnaborted} + ]}, receive_msg} ] ). @@ -475,7 +477,8 @@ bad_packet_length(Config, LengthExcess) -> %% Prohibit remote decoder starvation: {send, #ssh_msg_service_request{name="ssh-userauth"}}, {match, {'or',[#ssh_msg_disconnect{_='_'}, - tcp_closed + tcp_closed, + {tcp_error,econnaborted} ]}, receive_msg} ], InitialState). @@ -507,7 +510,8 @@ bad_service_name_length(Config, LengthExcess) -> %% Prohibit remote decoder starvation: {send, #ssh_msg_service_request{name="ssh-userauth"}}, {match, {'or',[#ssh_msg_disconnect{_='_'}, - tcp_closed + tcp_closed, + {tcp_error,econnaborted} ]}, receive_msg} ], InitialState). diff --git a/lib/ssh/test/ssh_test_lib.erl b/lib/ssh/test/ssh_test_lib.erl index 424afc76fe..ed76f4f795 100644 --- a/lib/ssh/test/ssh_test_lib.erl +++ b/lib/ssh/test/ssh_test_lib.erl @@ -646,3 +646,15 @@ ssh_supports(Alg, SshDefaultAlg_tag) -> {false,UnSup} end end. + +%%%---------------------------------------------------------------- +has_inet6_address() -> + try + [throw(6) || {ok,L} <- [inet:getifaddrs()], + {_,L1} <- L, + {addr,{_,_,_,_,_,_,_,_}} <- L1] + of + [] -> false + catch + throw:6 -> true + end. diff --git a/lib/ssh/test/ssh_to_openssh_SUITE.erl b/lib/ssh/test/ssh_to_openssh_SUITE.erl index d1dfa2efdf..02cc79e4d5 100644 --- a/lib/ssh/test/ssh_to_openssh_SUITE.erl +++ b/lib/ssh/test/ssh_to_openssh_SUITE.erl @@ -96,19 +96,9 @@ end_per_group(_, Config) -> init_per_testcase(erlang_server_openssh_client_public_key_dsa, Config) -> - case ssh_test_lib:openssh_supports(sshc, public_key, 'ssh-dss') of - true -> - init_per_testcase('__default__',Config); - false -> - {skip,"openssh client does not support DSA"} - end; + chk_key(sshc, 'ssh-dss', ".ssh/id_dsa", Config); init_per_testcase(erlang_client_openssh_server_publickey_dsa, Config) -> - case ssh_test_lib:openssh_supports(sshd, public_key, 'ssh-dss') of - true -> - init_per_testcase('__default__',Config); - false -> - {skip,"openssh client does not support DSA"} - end; + chk_key(sshd, 'ssh-dss', ".ssh/id_dsa", Config); init_per_testcase(_TestCase, Config) -> ssh:start(), Config. @@ -117,6 +107,27 @@ end_per_testcase(_TestCase, _Config) -> ssh:stop(), ok. + +chk_key(Pgm, Name, File, Config) -> + case ssh_test_lib:openssh_supports(Pgm, public_key, Name) of + true -> + {skip,lists:concat(["openssh client does not support ",Name])}; + false -> + {ok,[[Home]]} = init:get_argument(home), + KeyFile = filename:join(Home, File), + case file:read_file(KeyFile) of + {ok, Pem} -> + case public_key:pem_decode(Pem) of + [{_,_, not_encrypted}] -> + init_per_testcase('__default__',Config); + _ -> + {skip, {error, "Has pass phrase can not be used by automated test case"}} + end; + _ -> + {skip, lists:concat(["no ~/",File])} + end + end. + %%-------------------------------------------------------------------- %% Test Cases -------------------------------------------------------- %%-------------------------------------------------------------------- @@ -328,27 +339,16 @@ erlang_client_openssh_server_publickey_rsa(Config) when is_list(Config) -> erlang_client_openssh_server_publickey_dsa() -> [{doc, "Validate using dsa publickey."}]. erlang_client_openssh_server_publickey_dsa(Config) when is_list(Config) -> - {ok,[[Home]]} = init:get_argument(home), - KeyFile = filename:join(Home, ".ssh/id_dsa"), - case file:read_file(KeyFile) of - {ok, Pem} -> - case public_key:pem_decode(Pem) of - [{_,_, not_encrypted}] -> - ConnectionRef = - ssh_test_lib:connect(?SSH_DEFAULT_PORT, - [{public_key_alg, ssh_dsa}, - {user_interaction, false}, - silently_accept_hosts]), - {ok, Channel} = - ssh_connection:session_channel(ConnectionRef, infinity), - ok = ssh_connection:close(ConnectionRef, Channel), - ok = ssh:close(ConnectionRef); - _ -> - {skip, {error, "Has pass phrase can not be used by automated test case"}} - end; - _ -> - {skip, "no ~/.ssh/id_dsa"} - end. + ConnectionRef = + ssh_test_lib:connect(?SSH_DEFAULT_PORT, + [{public_key_alg, ssh_dsa}, + {user_interaction, false}, + silently_accept_hosts]), + {ok, Channel} = + ssh_connection:session_channel(ConnectionRef, infinity), + ok = ssh_connection:close(ConnectionRef, Channel), + ok = ssh:close(ConnectionRef). + %%-------------------------------------------------------------------- erlang_server_openssh_client_public_key_dsa() -> [{doc, "Validate using dsa publickey."}]. @@ -360,21 +360,25 @@ erlang_server_openssh_client_public_key_dsa(Config) when is_list(Config) -> {Pid, Host, Port} = ssh_test_lib:daemon([{system_dir, SystemDir}, {public_key_alg, ssh_dsa}, {failfun, fun ssh_test_lib:failfun/2}]), - + ct:sleep(500), Cmd = "ssh -p " ++ integer_to_list(Port) ++ " -o UserKnownHostsFile=" ++ KnownHosts ++ " " ++ Host ++ " 1+1.", - SshPort = open_port({spawn, Cmd}, [binary]), + SshPort = open_port({spawn, Cmd}, [binary, stderr_to_stdout]), receive - {SshPort,{data, <<"2\n">>}} -> + {SshPort,{data, <<"2\n">>}} -> ok after ?TIMEOUT -> - ct:fail("Did not receive answer") + receive + X -> ct:fail("Received: ~p",[X]) + after 0 -> + ct:fail("Did not receive answer") + end end, - ssh:stop_daemon(Pid). + ssh:stop_daemon(Pid). %%-------------------------------------------------------------------- erlang_client_openssh_server_password() -> @@ -384,10 +388,10 @@ erlang_client_openssh_server_password(Config) when is_list(Config) -> UserDir = ?config(data_dir, Config), {error, Reason0} = ssh:connect(any, ?SSH_DEFAULT_PORT, [{silently_accept_hosts, true}, - {user, "foo"}, - {password, "morot"}, - {user_interaction, false}, - {user_dir, UserDir}]), + {user, "foo"}, + {password, "morot"}, + {user_interaction, false}, + {user_dir, UserDir}]), ct:log("Test of user foo that does not exist. " "Error msg: ~p~n", [Reason0]), diff --git a/lib/ssl/doc/src/ssl.xml b/lib/ssl/doc/src/ssl.xml index 3a541ed162..bf87644116 100644 --- a/lib/ssl/doc/src/ssl.xml +++ b/lib/ssl/doc/src/ssl.xml @@ -31,37 +31,13 @@ <module>ssl</module> <modulesummary>Interface Functions for Secure Socket Layer</modulesummary> <description> - <p>This module contains interface functions for the SSL.</p> + <p> + This module contains interface functions for the SSL/TLS protocol. + For detailed information about the supported standards see + <seealso marker="ssl_app">ssl(6)</seealso>. + </p> </description> - - <section> - <title>SSL</title> - - <list type="bulleted"> - <item>For application dependencies see <seealso marker="ssl_app"> ssl(6)</seealso> </item> - <item>Supported SSL/TLS-versions are SSL-3.0, TLS-1.0, - TLS-1.1, and TLS-1.2.</item> - <item>For security reasons SSL-2.0 is not supported.</item> - <item>For security reasons SSL-3.0 is no longer supported by default, - but can be configured.</item> - <item>Ephemeral Diffie-Hellman cipher suites are supported, - but not Diffie Hellman Certificates cipher suites.</item> - <item>Elliptic Curve cipher suites are supported if the Crypto - application supports it and named curves are used. - </item> - <item>Export cipher suites are not supported as the - U.S. lifted its export restrictions in early 2000.</item> - <item>IDEA cipher suites are not supported as they have - become deprecated by the latest TLS specification so it is not - motivated to implement them.</item> - <item>CRL validation is supported.</item> - <item>Policy certificate extensions are not supported.</item> - <item>'Server Name Indication' extension client side - (RFC 6066, Section 3) is supported.</item> - </list> - - </section> - + <section> <title>DATA TYPES</title> <p>The following data types are used in the functions for SSL:</p> @@ -480,8 +456,8 @@ fun(srp, Username :: string(), UserState :: term()) -> <p>The negotiated protocol can be retrieved using the <c>negotiated_protocol/1</c> function.</p> </item> - <tag><c>{client_preferred_next_protocols, {Precedence :: server | client, ClientPrefs :: [binary()]}}</c></tag> - <tag><c>{client_preferred_next_protocols, {Precedence :: server | client, ClientPrefs :: [binary()], Default :: binary()}}</c></tag> + <tag><c>{client_preferred_next_protocols, {Precedence :: server | client, ClientPrefs :: [binary()]}}</c><br/> + <c>{client_preferred_next_protocols, {Precedence :: server | client, ClientPrefs :: [binary()], Default :: binary()}}</c></tag> <item> <p>Indicates that the client is to try to perform Next Protocol Negotiation.</p> @@ -538,7 +514,6 @@ fun(srp, Username :: string(), UserState :: term()) -> be supported by the server for the prevention to work. </p></warning> </item> - </taglist> </section> diff --git a/lib/ssl/doc/src/ssl_app.xml b/lib/ssl/doc/src/ssl_app.xml index 24b0f5300e..6c82e32a74 100644 --- a/lib/ssl/doc/src/ssl_app.xml +++ b/lib/ssl/doc/src/ssl_app.xml @@ -33,7 +33,33 @@ <appsummary>The ssl application provides secure communication over sockets.</appsummary> - <description></description> + <description> + <p> + The ssl application is an implementation of the SSL/TLS protocol in Erlang. + </p> + <list type="bulleted"> + <item>Supported SSL/TLS-versions are SSL-3.0, TLS-1.0, + TLS-1.1, and TLS-1.2.</item> + <item>For security reasons SSL-2.0 is not supported.</item> + <item>For security reasons SSL-3.0 is no longer supported by default, + but can be configured.</item> + <item>Ephemeral Diffie-Hellman cipher suites are supported, + but not Diffie Hellman Certificates cipher suites.</item> + <item>Elliptic Curve cipher suites are supported if the Crypto + application supports it and named curves are used. + </item> + <item>Export cipher suites are not supported as the + U.S. lifted its export restrictions in early 2000.</item> + <item>IDEA cipher suites are not supported as they have + become deprecated by the latest TLS specification so it is not + motivated to implement them.</item> + <item>CRL validation is supported.</item> + <item>Policy certificate extensions are not supported.</item> + <item>'Server Name Indication' extension client side + (RFC 6066, Section 3) is supported.</item> + </list> + </description> + <section> <title>DEPENDENCIES</title> <p>The SSL application uses the <c>public_key</c> and @@ -58,7 +84,7 @@ <p><c>erl -ssl protocol_version "['tlsv1.2', 'tlsv1.1']"</c></p> <taglist> - <tag><c> protocol_version = <seealso marker="ssl#type-protocol">ssl:protocol()</seealso> <![CDATA[<optional>]]></c></tag> + <tag><c>protocol_version = </c><seealso marker="ssl#type-protocol">ssl:protocol()</seealso><c><![CDATA[<optional>]]></c></tag> <item><p>Protocol supported by started clients and servers. If this option is not set, it defaults to all protocols currently supported by the SSL application. @@ -78,8 +104,8 @@ <item><p>List of extra user-defined arguments to the <c>init</c> function in the session cache callback module. Defaults to <c>[]</c>.</p></item> - <tag><c><![CDATA[session_cache_client_max = integer() <optional>]]></c></tag> - <tag><c><![CDATA[session_cache_server_max = integer() <optional>]]></c></tag> + <tag><c><![CDATA[session_cache_client_max = integer() <optional>]]></c><br/> + <c><![CDATA[session_cache_server_max = integer() <optional>]]></c></tag> <item><p>Limits the growth of the clients/servers session cache, if the maximum number of sessions is reached, the current cache entries will be invalidated regardless of their remaining lifetime. Defaults to 1000. diff --git a/lib/ssl/doc/src/ssl_crl_cache_api.xml b/lib/ssl/doc/src/ssl_crl_cache_api.xml index 71c1c61fe8..03ac010bfe 100644 --- a/lib/ssl/doc/src/ssl_crl_cache_api.xml +++ b/lib/ssl/doc/src/ssl_crl_cache_api.xml @@ -84,9 +84,9 @@ <v> CRLs = [<seealso marker="public_key:public_key">public_key:der_encoded()</seealso>] </v> </type> - <desc> <p>Lookup the CRLs belonging to the distribution point <c> Distributionpoint</c>. </p> + <desc> <p>Lookup the CRLs belonging to the distribution point <c> Distributionpoint</c>. This function may choose to only look in the cache or to follow distribution point - links depending on how the cache is administrated. + links depending on how the cache is administrated. </p> </desc> </func> @@ -103,4 +103,4 @@ </desc> </func> </funcs> -</erlref>
\ No newline at end of file +</erlref> diff --git a/lib/ssl/doc/src/ssl_session_cache_api.xml b/lib/ssl/doc/src/ssl_session_cache_api.xml index bd9330056d..b85d8fb284 100644 --- a/lib/ssl/doc/src/ssl_session_cache_api.xml +++ b/lib/ssl/doc/src/ssl_session_cache_api.xml @@ -31,9 +31,13 @@ <module>ssl_session_cache_api</module> <modulesummary>TLS session cache API</modulesummary> - <description>Defines the API for the TLS session cache so - that the data storage scheme can be replaced by - defining a new callback module implementing this API.</description> + <description> + <p> + Defines the API for the TLS session cache so + that the data storage scheme can be replaced by + defining a new callback module implementing this API. + </p> + </description> <section> <title>DATA TYPES</title> diff --git a/lib/ssl/src/ssl.app.src b/lib/ssl/src/ssl.app.src index be8ef6f85f..619ab7b610 100644 --- a/lib/ssl/src/ssl.app.src +++ b/lib/ssl/src/ssl.app.src @@ -54,6 +54,6 @@ {env, []}, {mod, {ssl_app, []}}, {runtime_dependencies, ["stdlib-2.0","public_key-1.0","kernel-3.0", - "erts-6.0","crypto-3.3", "inets-5.10.7"]}]}. + "erts-7.0","crypto-3.3", "inets-5.10.7"]}]}. diff --git a/lib/ssl/src/ssl.appup.src b/lib/ssl/src/ssl.appup.src index 8d5bd6f8d8..11728128c4 100644 --- a/lib/ssl/src/ssl.appup.src +++ b/lib/ssl/src/ssl.appup.src @@ -1,24 +1,14 @@ %% -*- erlang -*- {"%VSN%", [ - {<<"7\\.0">>, [{load_module, ssl, soft_purge, soft_purge, []}, - {load_module, ssl_connection, soft_purge, soft_purge, []}, - {load_module, tls_connection, soft_purge, soft_purge, []}, - {load_module, ssl_session, soft_purge, soft_purge, []}, - {load_module, ssl_session_cache, soft_purge, soft_purge, []} - ]}, + {<<"7\\..*">>, [{restart_application, ssl}]}, {<<"6\\..*">>, [{restart_application, ssl}]}, {<<"5\\..*">>, [{restart_application, ssl}]}, {<<"4\\..*">>, [{restart_application, ssl}]}, {<<"3\\..*">>, [{restart_application, ssl}]} ], [ - {<<"7\\.0">>, [{load_module, ssl, soft_purge, soft_purge, []}, - {load_module, ssl_connection, soft_purge, soft_purge, []}, - {load_module, tls_connection, soft_purge, soft_purge, []}, - {load_module, ssl_session, soft_purge, soft_purge, []}, - {load_module, ssl_session_cache, soft_purge, soft_purge, []} - ]}, + {<<"7\\..*">>, [{restart_application, ssl}]}, {<<"6\\..*">>, [{restart_application, ssl}]}, {<<"5\\..*">>, [{restart_application, ssl}]}, {<<"4\\..*">>, [{restart_application, ssl}]}, diff --git a/lib/ssl/src/ssl.erl b/lib/ssl/src/ssl.erl index 03495cfd90..6551308935 100644 --- a/lib/ssl/src/ssl.erl +++ b/lib/ssl/src/ssl.erl @@ -1190,6 +1190,8 @@ assert_proplist([]) -> assert_proplist([{Key,_} | Rest]) when is_atom(Key) -> assert_proplist(Rest); %% Handle exceptions +assert_proplist([{raw,_,_,_} | Rest]) -> + assert_proplist(Rest); assert_proplist([inet | Rest]) -> assert_proplist(Rest); assert_proplist([inet6 | Rest]) -> diff --git a/lib/ssl/src/ssl_v3.erl b/lib/ssl/src/ssl_v3.erl index 5e043624a7..f169059a75 100644 --- a/lib/ssl/src/ssl_v3.erl +++ b/lib/ssl/src/ssl_v3.erl @@ -144,6 +144,7 @@ suites() -> ?TLS_DHE_RSA_WITH_AES_128_CBC_SHA, ?TLS_DHE_DSS_WITH_AES_128_CBC_SHA, ?TLS_RSA_WITH_AES_128_CBC_SHA, + ?TLS_DHE_RSA_WITH_DES_CBC_SHA, ?TLS_RSA_WITH_DES_CBC_SHA ]. diff --git a/lib/ssl/src/tls_connection.erl b/lib/ssl/src/tls_connection.erl index a468c131ce..b2b85eaf8d 100644 --- a/lib/ssl/src/tls_connection.erl +++ b/lib/ssl/src/tls_connection.erl @@ -212,7 +212,7 @@ hello(Hello = #client_hello{client_version = ClientVersion, client_ecc = {EllipticCurves, EcPointFormats}, negotiated_protocol = Protocol}, ?MODULE) end; -hello(Hello, +hello(Hello = #server_hello{}, #state{connection_states = ConnectionStates0, negotiated_version = ReqVersion, role = client, diff --git a/lib/ssl/src/tls_record.erl b/lib/ssl/src/tls_record.erl index 1e266ed424..9348c8bbdd 100644 --- a/lib/ssl/src/tls_record.erl +++ b/lib/ssl/src/tls_record.erl @@ -298,7 +298,7 @@ highest_protocol_version(_,Version) -> Version. %%-------------------------------------------------------------------- --spec is_higher(V1 :: tls_version(), V2::tls_version()) -> tls_version(). +-spec is_higher(V1 :: tls_version(), V2::tls_version()) -> boolean(). %% %% Description: Is V1 > V2 %%-------------------------------------------------------------------- diff --git a/lib/ssl/test/ssl_ECC_SUITE.erl b/lib/ssl/test/ssl_ECC_SUITE.erl index 3a9f21ea99..75b639b23b 100644 --- a/lib/ssl/test/ssl_ECC_SUITE.erl +++ b/lib/ssl/test/ssl_ECC_SUITE.erl @@ -248,10 +248,13 @@ start_client(openssl, Port, CA, OwnCa, Cert, Key, Config) -> PrivDir = ?config(priv_dir, Config), NewCA = new_ca(filename:join(PrivDir, "new_ca.pem"), CA, OwnCa), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_client -verify 2 -port " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -cert " ++ Cert ++ " -CAfile " ++ NewCA - ++ " -key " ++ Key ++ " -host localhost -msg -debug", - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + Exe = "openssl", + Args = ["s_client", "-verify", "2", "-port", integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-cert", Cert, "-CAfile", NewCA, + "-key", Key, "-host","localhost", "-msg", "-debug"], + + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), true = port_command(OpenSslPort, "Hello world"), OpenSslPort; start_client(erlang, Port, CA, _, Cert, Key, Config) -> @@ -270,10 +273,11 @@ start_server(openssl, CA, OwnCa, Cert, Key, Config) -> Port = ssl_test_lib:inet_port(node()), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -verify 2 -cert " ++ Cert ++ " -CAfile " ++ NewCA - ++ " -key " ++ Key ++ " -msg -debug", - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), ssl_test_lib:version_flag(Version), + "-verify", "2", "-cert", Cert, "-CAfile", NewCA, + "-key", Key, "-msg", "-debug"], + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), true = port_command(OpenSslPort, "Hello world"), {OpenSslPort, Port}; start_server(erlang, CA, _, Cert, Key, Config) -> diff --git a/lib/ssl/test/ssl_basic_SUITE.erl b/lib/ssl/test/ssl_basic_SUITE.erl index f032c769e2..05b040a2ab 100644 --- a/lib/ssl/test/ssl_basic_SUITE.erl +++ b/lib/ssl/test/ssl_basic_SUITE.erl @@ -95,6 +95,7 @@ options_tests() -> [der_input, misc_ssl_options, ssl_options_not_proplist, + raw_ssl_option, socket_options, invalid_inet_get_option, invalid_inet_get_option_not_list, @@ -135,6 +136,7 @@ api_tests() -> shutdown_both, shutdown_error, hibernate, + hibernate_right_away, listen_socket, ssl_accept_timeout, ssl_recv_timeout, @@ -330,6 +332,14 @@ init_per_testcase(clear_pem_cache, Config) -> ct:log("TLS/SSL version ~p~n ", [tls_record:supported_protocol_versions()]), ct:timetrap({seconds, 20}), Config; +init_per_testcase(raw_ssl_option, Config) -> + ct:timetrap({seconds, 5}), + case os:type() of + {unix,linux} -> + Config; + _ -> + {skip, "Raw options are platform-specific"} + end; init_per_testcase(_TestCase, Config) -> ct:log("TLS/SSL version ~p~n ", [tls_record:supported_protocol_versions()]), @@ -1155,6 +1165,23 @@ ssl_options_not_proplist(Config) when is_list(Config) -> BadOption]). %%-------------------------------------------------------------------- +raw_ssl_option() -> + [{doc,"Ensure that a single 'raw' option is passed to ssl:listen correctly."}]. + +raw_ssl_option(Config) when is_list(Config) -> + % 'raw' option values are platform-specific; these are the Linux values: + IpProtoTcp = 6, + % Use TCP_KEEPIDLE, because (e.g.) TCP_MAXSEG can't be read back reliably. + TcpKeepIdle = 4, + KeepAliveTimeSecs = 55, + LOptions = [{raw, IpProtoTcp, TcpKeepIdle, <<KeepAliveTimeSecs:32/native>>}], + {ok, LSocket} = ssl:listen(0, LOptions), + % Per http://www.erlang.org/doc/man/inet.html#getopts-2, we have to specify + % exactly which raw option we want, and the size of the buffer. + {ok, [{raw, IpProtoTcp, TcpKeepIdle, <<KeepAliveTimeSecs:32/native>>}]} = ssl:getopts(LSocket, [{raw, IpProtoTcp, TcpKeepIdle, 4}]). + + +%%-------------------------------------------------------------------- versions() -> [{doc,"Test API function versions/0"}]. @@ -2897,6 +2924,43 @@ hibernate(Config) -> ssl_test_lib:close(Client). %%-------------------------------------------------------------------- + +hibernate_right_away() -> + [{doc,"Check that an SSL connection that is configured to hibernate " + "after 0 or 1 milliseconds hibernates as soon as possible and not " + "crashes"}]. + +hibernate_right_away(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + StartServerOpts = [{node, ServerNode}, {port, 0}, + {from, self()}, + {mfa, {ssl_test_lib, send_recv_result_active, []}}, + {options, ServerOpts}], + StartClientOpts = [return_socket, + {node, ClientNode}, + {host, Hostname}, + {from, self()}, + {mfa, {ssl_test_lib, send_recv_result_active, []}}], + + Server1 = ssl_test_lib:start_server(StartServerOpts), + Port1 = ssl_test_lib:inet_port(Server1), + {Client1, #sslsocket{}} = ssl_test_lib:start_client(StartClientOpts ++ + [{port, Port1}, {options, [{hibernate_after, 0}|ClientOpts]}]), + ssl_test_lib:close(Server1), + ssl_test_lib:close(Client1), + + Server2 = ssl_test_lib:start_server(StartServerOpts), + Port2 = ssl_test_lib:inet_port(Server2), + {Client2, #sslsocket{}} = ssl_test_lib:start_client(StartClientOpts ++ + [{port, Port2}, {options, [{hibernate_after, 1}|ClientOpts]}]), + ssl_test_lib:close(Server2), + ssl_test_lib:close(Client2). + +%%-------------------------------------------------------------------- listen_socket() -> [{doc,"Check error handling and inet compliance when calling API functions with listen sockets."}]. diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl index f25f6f9425..9a76d603b1 100644 --- a/lib/ssl/test/ssl_test_lib.erl +++ b/lib/ssl/test/ssl_test_lib.erl @@ -1192,13 +1192,13 @@ wait_for_openssl_server(Port, N) -> end. version_flag(tlsv1) -> - " -tls1 "; + "-tls1"; version_flag('tlsv1.1') -> - " -tls1_1 "; + "-tls1_1"; version_flag('tlsv1.2') -> - " -tls1_2 "; + "-tls1_2"; version_flag(sslv3) -> - " -ssl3 ". + "-ssl3". filter_suites(Ciphers0) -> Version = tls_record:highest_protocol_version([]), @@ -1243,3 +1243,9 @@ close_loop(Port, Time, SentClose) -> ct:log("Timeout~n",[]) end end. + +portable_open_port(Exe, Args) -> + AbsPath = os:find_executable(Exe), + ct:pal("open_port({spawn_executable, ~p}, [{args, ~p}, stderr_to_stdout]).", [AbsPath, Args]), + open_port({spawn_executable, AbsPath}, + [{args, Args}, stderr_to_stdout]). diff --git a/lib/ssl/test/ssl_to_openssl_SUITE.erl b/lib/ssl/test/ssl_to_openssl_SUITE.erl index 16b6cb10b9..119baf1072 100644 --- a/lib/ssl/test/ssl_to_openssl_SUITE.erl +++ b/lib/ssl/test/ssl_to_openssl_SUITE.erl @@ -262,12 +262,11 @@ basic_erlang_client_openssl_server(Config) when is_list(Config) -> CertFile = proplists:get_value(certfile, ServerOpts), KeyFile = proplists:get_value(keyfile, ServerOpts), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ - " -cert " ++ CertFile ++ " -key " ++ KeyFile, - - ct:log("openssl cmd: ~p~n", [Cmd]), + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), + "-cert", CertFile, "-key", KeyFile], - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), ssl_test_lib:wait_for_openssl_server(Port), @@ -302,13 +301,11 @@ basic_erlang_server_openssl_client(Config) when is_list(Config) -> {mfa, {?MODULE, erlang_ssl_receive, [Data]}}, {options, ServerOpts}]), Port = ssl_test_lib:inet_port(Server), - - Cmd = "openssl s_client -port " ++ integer_to_list(Port) ++ - " -host localhost" ++ workaround_openssl_s_clinent(), - - ct:log("openssl cmd: ~p~n", [Cmd]), - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + Exe = "openssl", + Args = ["s_client", "-connect", "localhost:" ++ integer_to_list(Port) | workaround_openssl_s_clinent()], + + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), true = port_command(OpenSslPort, Data), ssl_test_lib:check_result(Server, ok), @@ -334,12 +331,12 @@ erlang_client_openssl_server(Config) when is_list(Config) -> CertFile = proplists:get_value(certfile, ServerOpts), KeyFile = proplists:get_value(keyfile, ServerOpts), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -cert " ++ CertFile ++ " -key " ++ KeyFile, - - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-cert", CertFile, "-key", KeyFile], + + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), ssl_test_lib:wait_for_openssl_server(Port), @@ -376,12 +373,12 @@ erlang_server_openssl_client(Config) when is_list(Config) -> Port = ssl_test_lib:inet_port(Server), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_client -port " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -host localhost", + Exe = "openssl", + Args = ["s_client", "-connect", "localhost: " ++ integer_to_list(Port), + ssl_test_lib:version_flag(Version)], - ct:log("openssl cmd: ~p~n", [Cmd]), + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), true = port_command(OpenSslPort, Data), ssl_test_lib:check_result(Server, ok), @@ -407,14 +404,13 @@ erlang_client_openssl_server_dsa_cert(Config) when is_list(Config) -> CertFile = proplists:get_value(certfile, ServerOpts), KeyFile = proplists:get_value(keyfile, ServerOpts), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-cert", CertFile, "-CAfile", CaCertFile, + "-key", KeyFile, "-Verify", "2", "-msg"], - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -cert " ++ CertFile ++ " -CAfile " ++ CaCertFile - ++ " -key " ++ KeyFile ++ " -Verify 2 -msg", - - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), ssl_test_lib:wait_for_openssl_server(Port), @@ -455,13 +451,14 @@ erlang_server_openssl_client_dsa_cert(Config) when is_list(Config) -> {options, ServerOpts}]), Port = ssl_test_lib:inet_port(Server), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_client -port " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -host localhost " ++ " -cert " ++ CertFile ++ " -CAfile " ++ CaCertFile - ++ " -key " ++ KeyFile ++ " -msg", - - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + Exe = "openssl", + Args = ["s_client", "-connect", "localhost: " ++ integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-cert", CertFile, + "-CAfile", CaCertFile, + "-key", KeyFile, "-msg"], + + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), true = port_command(OpenSslPort, Data), ssl_test_lib:check_result(Server, ok), @@ -491,12 +488,13 @@ erlang_server_openssl_client_reuse_session(Config) when is_list(Config) -> {options, ServerOpts}]), Port = ssl_test_lib:inet_port(Server), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_client -port " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -host localhost -reconnect", - - ct:log("openssl cmd: ~p~n", [Cmd]), - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + Exe = "openssl", + Args = ["s_client", "-connect", "localhost:" ++ integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-reconnect"], + + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), true = port_command(OpenSslPort, Data), @@ -527,12 +525,12 @@ erlang_client_openssl_server_renegotiate(Config) when is_list(Config) -> KeyFile = proplists:get_value(keyfile, ServerOpts), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -cert " ++ CertFile ++ " -key " ++ KeyFile ++ " -msg", + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-cert", CertFile, "-key", KeyFile, "-msg"], - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), ssl_test_lib:wait_for_openssl_server(Port), @@ -576,12 +574,12 @@ erlang_client_openssl_server_nowrap_seqnum(Config) when is_list(Config) -> CertFile = proplists:get_value(certfile, ServerOpts), KeyFile = proplists:get_value(keyfile, ServerOpts), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -cert " ++ CertFile ++ " -key " ++ KeyFile ++ " -msg", + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-cert", CertFile, "-key", KeyFile, "-msg"], - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), ssl_test_lib:wait_for_openssl_server(Port), @@ -622,12 +620,12 @@ erlang_server_openssl_client_nowrap_seqnum(Config) when is_list(Config) -> {options, [{renegotiate_at, N}, {reuse_sessions, false} | ServerOpts]}]), Port = ssl_test_lib:inet_port(Server), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_client -port " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -host localhost -msg", - - ct:log("openssl cmd: ~p~n", [Cmd]), + Exe = "openssl", + Args = ["s_client","-connect", "localhost: " ++ integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-msg"], - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), true = port_command(OpenSslPort, Data), @@ -657,13 +655,13 @@ erlang_client_openssl_server_no_server_ca_cert(Config) when is_list(Config) -> CertFile = proplists:get_value(certfile, ServerOpts), KeyFile = proplists:get_value(keyfile, ServerOpts), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -cert " ++ CertFile ++ " -key " ++ KeyFile ++ " -msg", + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-cert", CertFile, "-key", KeyFile, "-msg"], - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), - + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), + ssl_test_lib:wait_for_openssl_server(Port), Client = ssl_test_lib:start_client([{node, ClientNode}, {port, Port}, @@ -699,13 +697,13 @@ erlang_client_openssl_server_client_cert(Config) when is_list(Config) -> CaCertFile = proplists:get_value(cacertfile, ServerOpts), KeyFile = proplists:get_value(keyfile, ServerOpts), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -cert " ++ CertFile ++ " -CAfile " ++ CaCertFile - ++ " -key " ++ KeyFile ++ " -Verify 2", + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), + ssl_test_lib:version_flag(Version), + "-cert", CertFile, "-CAfile", CaCertFile, + "-key", KeyFile, "-Verify", "2"], - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), ssl_test_lib:wait_for_openssl_server(Port), @@ -750,13 +748,14 @@ erlang_server_openssl_client_client_cert(Config) when is_list(Config) -> CertFile = proplists:get_value(certfile, ClientOpts), KeyFile = proplists:get_value(keyfile, ClientOpts), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_client -cert " ++ CertFile ++ " -CAfile " ++ CaCertFile - ++ " -key " ++ KeyFile ++ " -port " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -host localhost", - - ct:log("openssl cmd: ~p~n", [Cmd]), + Exe = "openssl", + Args = ["s_client", "-cert", CertFile, + "-CAfile", CaCertFile, + "-key", KeyFile,"-connect", "localhost:" ++ integer_to_list(Port), + ssl_test_lib:version_flag(Version)], - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), + true = port_command(OpenSslPort, Data), ssl_test_lib:check_result(Server, ok), @@ -839,12 +838,11 @@ erlang_client_bad_openssl_server(Config) when is_list(Config) -> CertFile = proplists:get_value(certfile, ServerOpts), KeyFile = proplists:get_value(keyfile, ServerOpts), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -cert " ++ CertFile ++ " -key " ++ KeyFile ++ "", + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), ssl_test_lib:version_flag(Version), + "-cert", CertFile, "-key", KeyFile], - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), ssl_test_lib:wait_for_openssl_server(Port), @@ -895,12 +893,11 @@ expired_session(Config) when is_list(Config) -> CertFile = proplists:get_value(certfile, ServerOpts), KeyFile = proplists:get_value(keyfile, ServerOpts), - Cmd = "openssl s_server -accept " ++ integer_to_list(Port) ++ - " -cert " ++ CertFile ++ " -key " ++ KeyFile ++ "", + Exe = "openssl", + Args = ["s_server", "-accept", integer_to_list(Port), + "-cert", CertFile,"-key", KeyFile], - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpensslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpensslPort = ssl_test_lib:portable_open_port(Exe, Args), ssl_test_lib:wait_for_openssl_server(Port), @@ -953,12 +950,11 @@ ssl2_erlang_server_openssl_client(Config) when is_list(Config) -> {options, ServerOpts}]), Port = ssl_test_lib:inet_port(Server), - Cmd = "openssl s_client -port " ++ integer_to_list(Port) ++ - " -host localhost -ssl2 -msg", - - ct:log("openssl cmd: ~p~n", [Cmd]), + Exe = "openssl", + Args = ["s_client", "-connect", "localhost:" ++ integer_to_list(Port), + "-ssl2", "-msg"], - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), true = port_command(OpenSslPort, Data), ct:log("Ports ~p~n", [[erlang:port_info(P) || P <- erlang:ports()]]), @@ -1033,7 +1029,7 @@ erlang_server_alpn_openssl_client(Config) when is_list(Config) -> Data = "From openssl to erlang", start_erlang_server_and_openssl_client_with_opts(Config, [{alpn_preferred_protocols, [<<"spdy/2">>]}], - "", + [], Data, fun(Server, OpensslPort) -> true = port_command(OpensslPort, Data), ssl_test_lib:check_result(Server, ok) @@ -1046,7 +1042,7 @@ erlang_server_openssl_client_alpn(Config) when is_list(Config) -> Data = "From openssl to erlang", start_erlang_server_and_openssl_client_with_opts(Config, [], - "-alpn spdy/2", + ["-alpn", "spdy/2"], Data, fun(Server, OpensslPort) -> true = port_command(OpensslPort, Data), ssl_test_lib:check_result(Server, ok) @@ -1179,7 +1175,7 @@ erlang_client_openssl_server_npn_only_client(Config) when is_list(Config) -> %%-------------------------------------------------------------------------- erlang_server_openssl_client_npn_only_server(Config) when is_list(Config) -> Data = "From openssl to erlang", - start_erlang_server_and_openssl_client_with_opts(Config, [{next_protocols_advertised, [<<"spdy/2">>]}], "", + start_erlang_server_and_openssl_client_with_opts(Config, [{next_protocols_advertised, [<<"spdy/2">>]}], [], Data, fun(Server, OpensslPort) -> true = port_command(OpensslPort, Data), ssl_test_lib:check_result(Server, ok) @@ -1188,7 +1184,7 @@ erlang_server_openssl_client_npn_only_server(Config) when is_list(Config) -> erlang_server_openssl_client_npn_only_client(Config) when is_list(Config) -> Data = "From openssl to erlang", - start_erlang_server_and_openssl_client_with_opts(Config, [], "-nextprotoneg spdy/2", + start_erlang_server_and_openssl_client_with_opts(Config, [], ["-nextprotoneg", "spdy/2"], Data, fun(Server, OpensslPort) -> true = port_command(OpensslPort, Data), ssl_test_lib:check_result(Server, ok) @@ -1261,7 +1257,7 @@ client_check_result(Port, DataExpected, DataReceived) -> client_check_result(Port, DataExpected, NewData) end after 3000 -> - ct:fail({"Time out on opensssl Client", {expected, DataExpected}, + ct:fail({"Time out on openSSL Client", {expected, DataExpected}, {got, DataReceived}}) end. client_check_result(Port, DataExpected) -> @@ -1613,12 +1609,12 @@ start_erlang_server_and_openssl_client_for_npn_negotiation(Config, Data, Callbac {options, ServerOpts}]), Port = ssl_test_lib:inet_port(Server), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_client -nextprotoneg http/1.0,spdy/2 -msg -port " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -host localhost", - ct:log("openssl cmd: ~p~n", [Cmd]), + Exe = "openssl", + Args = ["s_client", "-nextprotoneg", "http/1.0,spdy/2", "-msg", "-connect", "localhost:" + ++ integer_to_list(Port), ssl_test_lib:version_flag(Version)], - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), Callback(Server, OpenSslPort), @@ -1642,12 +1638,12 @@ start_erlang_server_and_openssl_client_with_opts(Config, ErlangServerOpts, OpenS {options, ServerOpts}]), Port = ssl_test_lib:inet_port(Server), Version = tls_record:protocol_version(tls_record:highest_protocol_version([])), - Cmd = "openssl s_client " ++ OpenSSLClientOpts ++ " -msg -port " ++ integer_to_list(Port) ++ ssl_test_lib:version_flag(Version) ++ - " -host localhost", + + Exe = "openssl", + Args = ["s_client"] ++ OpenSSLClientOpts ++ ["-msg", "-connect", "localhost:" ++ integer_to_list(Port), + ssl_test_lib:version_flag(Version)], - ct:log("openssl cmd: ~p~n", [Cmd]), - - OpenSslPort = open_port({spawn, Cmd}, [stderr_to_stdout]), + OpenSslPort = ssl_test_lib:portable_open_port(Exe, Args), Callback(Server, OpenSslPort), @@ -1679,8 +1675,6 @@ erlang_ssl_receive(Socket, Data) -> erlang_ssl_receive(Socket,Data); Other -> ct:fail({unexpected_message, Other}) - after 4000 -> - ct:fail({did_not_get, Data}) end. connection_info(Socket, Version) -> @@ -1753,7 +1747,9 @@ check_sane_openssl_renegotaite(Config, _) -> check_sane_openssl_renegotaite(Config). check_sane_openssl_renegotaite(Config) -> - case os:cmd("openssl version") of + case os:cmd("openssl version") of + "OpenSSL 1.0.0" ++ _ -> + {skip, "Known renegotiation bug in OpenSSL"}; "OpenSSL 0.9.8" ++ _ -> {skip, "Known renegotiation bug in OpenSSL"}; "OpenSSL 0.9.7" ++ _ -> @@ -1793,13 +1789,13 @@ workaround_openssl_s_clinent() -> %% explicitly specified case os:cmd("openssl version") of "OpenSSL 1.0.1c" ++ _ -> - " -no_tls1_2 "; + ["-no_tls1_2"]; "OpenSSL 1.0.1d" ++ _ -> - " -no_tls1_2 "; + ["-no_tls1_2"]; "OpenSSL 1.0.1e" ++ _ -> - " -no_tls1_2 "; + ["-no_tls1_2"]; "OpenSSL 1.0.1f" ++ _ -> - " -no_tls1_2 "; + ["-no_tls1_2"]; _ -> - "" + [] end. diff --git a/lib/ssl/vsn.mk b/lib/ssl/vsn.mk index 4587c448f6..aa1af21990 100644 --- a/lib/ssl/vsn.mk +++ b/lib/ssl/vsn.mk @@ -1 +1 @@ -SSL_VSN = 7.1 +SSL_VSN = 7.2 diff --git a/lib/test_server/src/test_server_ctrl.erl b/lib/test_server/src/test_server_ctrl.erl index 34681876f3..cd08a25bd8 100644 --- a/lib/test_server/src/test_server_ctrl.erl +++ b/lib/test_server/src/test_server_ctrl.erl @@ -3717,8 +3717,8 @@ run_test_case1(Ref, Num, Mod, Func, Args, RunInit, RunDir = filename:dirname(MinorName), Ext = if Num == 0 -> - Nr = erlang:unique_integer([positive]), - lists:flatten(io_lib:format(".~w", [Nr])); + Int = erlang:unique_integer([positive,monotonic]), + lists:flatten(io_lib:format(".cfg.~w", [Int])); true -> lists:flatten(io_lib:format(".~w", [Num])) end, diff --git a/lib/wx/api_gen/wx_extra/added_func.h b/lib/wx/api_gen/wx_extra/added_func.h index 2323529368..0698621c5f 100644 --- a/lib/wx/api_gen/wx_extra/added_func.h +++ b/lib/wx/api_gen/wx_extra/added_func.h @@ -26,3 +26,9 @@ class WXDLLIMPEXP_AUI wxAuiPaneInfo wxPoint GetFloatingPosition(); wxSize GetFloatingSize(); }; + +class wxToolBar { + public: + wxToolBarToolBase * AddStretchableSpace(); + wxToolBarToolBase * InsertStretchableSpace(size_t pos); +}; diff --git a/lib/wx/api_gen/wxapi.conf b/lib/wx/api_gen/wxapi.conf index eabbec3297..f5a6751696 100644 --- a/lib/wx/api_gen/wxapi.conf +++ b/lib/wx/api_gen/wxapi.conf @@ -493,6 +493,8 @@ {class, wxToolBar, wxControl, [], ['AddControl','AddSeparator','AddTool','AddCheckTool','AddRadioTool', + {'AddStretchableSpace', [{test_if, "wxCHECK_VERSION(3,0,0)"}]}, + {'InsertStretchableSpace', [{test_if, "wxCHECK_VERSION(3,0,0)"}]}, 'DeleteTool','DeleteToolByPos','EnableTool','FindById','FindControl', 'FindToolForPosition','GetToolSize','GetToolBitmapSize','GetMargins', %%'GetToolClientData' , %%'SetToolClientData', diff --git a/lib/wx/c_src/gen/wxe_funcs.cpp b/lib/wx/c_src/gen/wxe_funcs.cpp index 4025fb1c16..b2830dbc63 100644 --- a/lib/wx/c_src/gen/wxe_funcs.cpp +++ b/lib/wx/c_src/gen/wxe_funcs.cpp @@ -8520,6 +8520,25 @@ data = (wxObject *) getPtr(bp,memenv); bp += 4; rt.addRef(getRef((void *)Result,memenv), "wx"); break; } +#if wxCHECK_VERSION(3,0,0) +case wxToolBar_AddStretchableSpace: { // wxToolBar::AddStretchableSpace + wxToolBar *This = (wxToolBar *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + wxToolBarToolBase * Result = (wxToolBarToolBase*)This->AddStretchableSpace(); + rt.addRef(getRef((void *)Result,memenv), "wx"); + break; +} +#endif +#if wxCHECK_VERSION(3,0,0) +case wxToolBar_InsertStretchableSpace: { // wxToolBar::InsertStretchableSpace + wxToolBar *This = (wxToolBar *) getPtr(bp,memenv); bp += 4; + int * pos = (int *) bp; bp += 4; + if(!This) throw wxe_badarg(0); + wxToolBarToolBase * Result = (wxToolBarToolBase*)This->InsertStretchableSpace(*pos); + rt.addRef(getRef((void *)Result,memenv), "wx"); + break; +} +#endif case wxToolBar_DeleteTool: { // wxToolBar::DeleteTool wxToolBar *This = (wxToolBar *) getPtr(bp,memenv); bp += 4; int * toolid = (int *) bp; bp += 4; diff --git a/lib/wx/c_src/gen/wxe_macros.h b/lib/wx/c_src/gen/wxe_macros.h index 5f51ac5f91..1d50278360 100644 --- a/lib/wx/c_src/gen/wxe_macros.h +++ b/lib/wx/c_src/gen/wxe_macros.h @@ -912,2512 +912,2514 @@ #define wxToolBar_AddTool_6 981 #define wxToolBar_AddCheckTool 982 #define wxToolBar_AddRadioTool 983 -#define wxToolBar_DeleteTool 984 -#define wxToolBar_DeleteToolByPos 985 -#define wxToolBar_EnableTool 986 -#define wxToolBar_FindById 987 -#define wxToolBar_FindControl 988 -#define wxToolBar_FindToolForPosition 989 -#define wxToolBar_GetToolSize 990 -#define wxToolBar_GetToolBitmapSize 991 -#define wxToolBar_GetMargins 992 -#define wxToolBar_GetToolEnabled 993 -#define wxToolBar_GetToolLongHelp 994 -#define wxToolBar_GetToolPacking 995 -#define wxToolBar_GetToolPos 996 -#define wxToolBar_GetToolSeparation 997 -#define wxToolBar_GetToolShortHelp 998 -#define wxToolBar_GetToolState 999 -#define wxToolBar_InsertControl 1000 -#define wxToolBar_InsertSeparator 1001 -#define wxToolBar_InsertTool_5 1002 -#define wxToolBar_InsertTool_2 1003 -#define wxToolBar_InsertTool_4 1004 -#define wxToolBar_Realize 1005 -#define wxToolBar_RemoveTool 1006 -#define wxToolBar_SetMargins 1007 -#define wxToolBar_SetToolBitmapSize 1008 -#define wxToolBar_SetToolLongHelp 1009 -#define wxToolBar_SetToolPacking 1010 -#define wxToolBar_SetToolShortHelp 1011 -#define wxToolBar_SetToolSeparation 1012 -#define wxToolBar_ToggleTool 1013 -#define wxStatusBar_new_0 1015 -#define wxStatusBar_new_2 1016 -#define wxStatusBar_destruct 1018 -#define wxStatusBar_Create 1019 -#define wxStatusBar_GetFieldRect 1020 -#define wxStatusBar_GetFieldsCount 1021 -#define wxStatusBar_GetStatusText 1022 -#define wxStatusBar_PopStatusText 1023 -#define wxStatusBar_PushStatusText 1024 -#define wxStatusBar_SetFieldsCount 1025 -#define wxStatusBar_SetMinHeight 1026 -#define wxStatusBar_SetStatusText 1027 -#define wxStatusBar_SetStatusWidths 1028 -#define wxStatusBar_SetStatusStyles 1029 -#define wxBitmap_new_0 1030 -#define wxBitmap_new_3 1031 -#define wxBitmap_new_4 1032 -#define wxBitmap_new_2_0 1033 -#define wxBitmap_new_2_1 1034 -#define wxBitmap_destruct 1035 -#define wxBitmap_ConvertToImage 1036 -#define wxBitmap_CopyFromIcon 1037 -#define wxBitmap_Create 1038 -#define wxBitmap_GetDepth 1039 -#define wxBitmap_GetHeight 1040 -#define wxBitmap_GetPalette 1041 -#define wxBitmap_GetMask 1042 -#define wxBitmap_GetWidth 1043 -#define wxBitmap_GetSubBitmap 1044 -#define wxBitmap_LoadFile 1045 -#define wxBitmap_Ok 1046 -#define wxBitmap_SaveFile 1047 -#define wxBitmap_SetDepth 1048 -#define wxBitmap_SetHeight 1049 -#define wxBitmap_SetMask 1050 -#define wxBitmap_SetPalette 1051 -#define wxBitmap_SetWidth 1052 -#define wxIcon_new_0 1053 -#define wxIcon_new_2 1054 -#define wxIcon_new_1 1055 -#define wxIcon_CopyFromBitmap 1056 -#define wxIcon_destroy 1057 -#define wxIconBundle_new_0 1058 -#define wxIconBundle_new_2 1059 -#define wxIconBundle_new_1_0 1060 -#define wxIconBundle_new_1_1 1061 -#define wxIconBundle_destruct 1062 -#define wxIconBundle_AddIcon_2 1063 -#define wxIconBundle_AddIcon_1 1064 -#define wxIconBundle_GetIcon_1_1 1065 -#define wxIconBundle_GetIcon_1_0 1066 -#define wxCursor_new_0 1067 -#define wxCursor_new_1_0 1068 -#define wxCursor_new_1_1 1069 -#define wxCursor_new_4 1070 -#define wxCursor_destruct 1071 -#define wxCursor_Ok 1072 -#define wxMask_new_0 1073 -#define wxMask_new_2_1 1074 -#define wxMask_new_2_0 1075 -#define wxMask_new_1 1076 -#define wxMask_destruct 1077 -#define wxMask_Create_2_1 1078 -#define wxMask_Create_2_0 1079 -#define wxMask_Create_1 1080 -#define wxImage_new_0 1081 -#define wxImage_new_3_0 1082 -#define wxImage_new_4 1083 -#define wxImage_new_5 1084 -#define wxImage_new_2 1085 -#define wxImage_new_3_1 1086 -#define wxImage_Blur 1087 -#define wxImage_BlurHorizontal 1088 -#define wxImage_BlurVertical 1089 -#define wxImage_ConvertAlphaToMask 1090 -#define wxImage_ConvertToGreyscale 1091 -#define wxImage_ConvertToMono 1092 -#define wxImage_Copy 1093 -#define wxImage_Create_3 1094 -#define wxImage_Create_4 1095 -#define wxImage_Create_5 1096 -#define wxImage_Destroy 1097 -#define wxImage_FindFirstUnusedColour 1098 -#define wxImage_GetImageExtWildcard 1099 -#define wxImage_GetAlpha_2 1100 -#define wxImage_GetAlpha_0 1101 -#define wxImage_GetBlue 1102 -#define wxImage_GetData 1103 -#define wxImage_GetGreen 1104 -#define wxImage_GetImageCount 1105 -#define wxImage_GetHeight 1106 -#define wxImage_GetMaskBlue 1107 -#define wxImage_GetMaskGreen 1108 -#define wxImage_GetMaskRed 1109 -#define wxImage_GetOrFindMaskColour 1110 -#define wxImage_GetPalette 1111 -#define wxImage_GetRed 1112 -#define wxImage_GetSubImage 1113 -#define wxImage_GetWidth 1114 -#define wxImage_HasAlpha 1115 -#define wxImage_HasMask 1116 -#define wxImage_GetOption 1117 -#define wxImage_GetOptionInt 1118 -#define wxImage_HasOption 1119 -#define wxImage_InitAlpha 1120 -#define wxImage_InitStandardHandlers 1121 -#define wxImage_IsTransparent 1122 -#define wxImage_LoadFile_2 1123 -#define wxImage_LoadFile_3 1124 -#define wxImage_Ok 1125 -#define wxImage_RemoveHandler 1126 -#define wxImage_Mirror 1127 -#define wxImage_Replace 1128 -#define wxImage_Rescale 1129 -#define wxImage_Resize 1130 -#define wxImage_Rotate 1131 -#define wxImage_RotateHue 1132 -#define wxImage_Rotate90 1133 -#define wxImage_SaveFile_1 1134 -#define wxImage_SaveFile_2_0 1135 -#define wxImage_SaveFile_2_1 1136 -#define wxImage_Scale 1137 -#define wxImage_Size 1138 -#define wxImage_SetAlpha_3 1139 -#define wxImage_SetAlpha_2 1140 -#define wxImage_SetData_2 1141 -#define wxImage_SetData_4 1142 -#define wxImage_SetMask 1143 -#define wxImage_SetMaskColour 1144 -#define wxImage_SetMaskFromImage 1145 -#define wxImage_SetOption_2_1 1146 -#define wxImage_SetOption_2_0 1147 -#define wxImage_SetPalette 1148 -#define wxImage_SetRGB_5 1149 -#define wxImage_SetRGB_4 1150 -#define wxImage_destroy 1151 -#define wxBrush_new_0 1152 -#define wxBrush_new_2 1153 -#define wxBrush_new_1 1154 -#define wxBrush_destruct 1156 -#define wxBrush_GetColour 1157 -#define wxBrush_GetStipple 1158 -#define wxBrush_GetStyle 1159 -#define wxBrush_IsHatch 1160 -#define wxBrush_IsOk 1161 -#define wxBrush_SetColour_1 1162 -#define wxBrush_SetColour_3 1163 -#define wxBrush_SetStipple 1164 -#define wxBrush_SetStyle 1165 -#define wxPen_new_0 1166 -#define wxPen_new_2 1167 -#define wxPen_destruct 1168 -#define wxPen_GetCap 1169 -#define wxPen_GetColour 1170 -#define wxPen_GetJoin 1171 -#define wxPen_GetStyle 1172 -#define wxPen_GetWidth 1173 -#define wxPen_IsOk 1174 -#define wxPen_SetCap 1175 -#define wxPen_SetColour_1 1176 -#define wxPen_SetColour_3 1177 -#define wxPen_SetJoin 1178 -#define wxPen_SetStyle 1179 -#define wxPen_SetWidth 1180 -#define wxRegion_new_0 1181 -#define wxRegion_new_4 1182 -#define wxRegion_new_2 1183 -#define wxRegion_new_1_1 1184 -#define wxRegion_new_1_0 1186 -#define wxRegion_destruct 1188 -#define wxRegion_Clear 1189 -#define wxRegion_Contains_2 1190 -#define wxRegion_Contains_1_0 1191 -#define wxRegion_Contains_4 1192 -#define wxRegion_Contains_1_1 1193 -#define wxRegion_ConvertToBitmap 1194 -#define wxRegion_GetBox 1195 -#define wxRegion_Intersect_4 1196 -#define wxRegion_Intersect_1_1 1197 -#define wxRegion_Intersect_1_0 1198 -#define wxRegion_IsEmpty 1199 -#define wxRegion_Subtract_4 1200 -#define wxRegion_Subtract_1_1 1201 -#define wxRegion_Subtract_1_0 1202 -#define wxRegion_Offset_2 1203 -#define wxRegion_Offset_1 1204 -#define wxRegion_Union_4 1205 -#define wxRegion_Union_1_2 1206 -#define wxRegion_Union_1_1 1207 -#define wxRegion_Union_1_0 1208 -#define wxRegion_Union_3 1209 -#define wxRegion_Xor_4 1210 -#define wxRegion_Xor_1_1 1211 -#define wxRegion_Xor_1_0 1212 -#define wxAcceleratorTable_new_0 1213 -#define wxAcceleratorTable_new_2 1214 -#define wxAcceleratorTable_destruct 1215 -#define wxAcceleratorTable_Ok 1216 -#define wxAcceleratorEntry_new_1_0 1217 -#define wxAcceleratorEntry_new_1_1 1218 -#define wxAcceleratorEntry_GetCommand 1219 -#define wxAcceleratorEntry_GetFlags 1220 -#define wxAcceleratorEntry_GetKeyCode 1221 -#define wxAcceleratorEntry_Set 1222 -#define wxAcceleratorEntry_destroy 1223 -#define wxCaret_new_3 1228 -#define wxCaret_new_2 1229 -#define wxCaret_destruct 1231 -#define wxCaret_Create_3 1232 -#define wxCaret_Create_2 1233 -#define wxCaret_GetBlinkTime 1234 -#define wxCaret_GetPosition 1236 -#define wxCaret_GetSize 1238 -#define wxCaret_GetWindow 1239 -#define wxCaret_Hide 1240 -#define wxCaret_IsOk 1241 -#define wxCaret_IsVisible 1242 -#define wxCaret_Move_2 1243 -#define wxCaret_Move_1 1244 -#define wxCaret_SetBlinkTime 1245 -#define wxCaret_SetSize_2 1246 -#define wxCaret_SetSize_1 1247 -#define wxCaret_Show 1248 -#define wxSizer_Add_2_1 1249 -#define wxSizer_Add_2_0 1250 -#define wxSizer_Add_3 1251 -#define wxSizer_Add_2_3 1252 -#define wxSizer_Add_2_2 1253 -#define wxSizer_AddSpacer 1254 -#define wxSizer_AddStretchSpacer 1255 -#define wxSizer_CalcMin 1256 -#define wxSizer_Clear 1257 -#define wxSizer_Detach_1_2 1258 -#define wxSizer_Detach_1_1 1259 -#define wxSizer_Detach_1_0 1260 -#define wxSizer_Fit 1261 -#define wxSizer_FitInside 1262 -#define wxSizer_GetChildren 1263 -#define wxSizer_GetItem_2_1 1264 -#define wxSizer_GetItem_2_0 1265 -#define wxSizer_GetItem_1 1266 -#define wxSizer_GetSize 1267 -#define wxSizer_GetPosition 1268 -#define wxSizer_GetMinSize 1269 -#define wxSizer_Hide_2_0 1270 -#define wxSizer_Hide_2_1 1271 -#define wxSizer_Hide_1 1272 -#define wxSizer_Insert_3_1 1273 -#define wxSizer_Insert_3_0 1274 -#define wxSizer_Insert_4 1275 -#define wxSizer_Insert_3_3 1276 -#define wxSizer_Insert_3_2 1277 -#define wxSizer_Insert_2 1278 -#define wxSizer_InsertSpacer 1279 -#define wxSizer_InsertStretchSpacer 1280 -#define wxSizer_IsShown_1_2 1281 -#define wxSizer_IsShown_1_1 1282 -#define wxSizer_IsShown_1_0 1283 -#define wxSizer_Layout 1284 -#define wxSizer_Prepend_2_1 1285 -#define wxSizer_Prepend_2_0 1286 -#define wxSizer_Prepend_3 1287 -#define wxSizer_Prepend_2_3 1288 -#define wxSizer_Prepend_2_2 1289 -#define wxSizer_Prepend_1 1290 -#define wxSizer_PrependSpacer 1291 -#define wxSizer_PrependStretchSpacer 1292 -#define wxSizer_RecalcSizes 1293 -#define wxSizer_Remove_1_1 1294 -#define wxSizer_Remove_1_0 1295 -#define wxSizer_Replace_3_1 1296 -#define wxSizer_Replace_3_0 1297 -#define wxSizer_Replace_2 1298 -#define wxSizer_SetDimension 1299 -#define wxSizer_SetMinSize_2 1300 -#define wxSizer_SetMinSize_1 1301 -#define wxSizer_SetItemMinSize_3_2 1302 -#define wxSizer_SetItemMinSize_2_2 1303 -#define wxSizer_SetItemMinSize_3_1 1304 -#define wxSizer_SetItemMinSize_2_1 1305 -#define wxSizer_SetItemMinSize_3_0 1306 -#define wxSizer_SetItemMinSize_2_0 1307 -#define wxSizer_SetSizeHints 1308 -#define wxSizer_SetVirtualSizeHints 1309 -#define wxSizer_Show_2_2 1310 -#define wxSizer_Show_2_1 1311 -#define wxSizer_Show_2_0 1312 -#define wxSizer_Show_1 1313 -#define wxSizerFlags_new 1314 -#define wxSizerFlags_Align 1315 -#define wxSizerFlags_Border_2 1316 -#define wxSizerFlags_Border_1 1317 -#define wxSizerFlags_Center 1318 -#define wxSizerFlags_Centre 1319 -#define wxSizerFlags_Expand 1320 -#define wxSizerFlags_Left 1321 -#define wxSizerFlags_Proportion 1322 -#define wxSizerFlags_Right 1323 -#define wxSizerFlags_destroy 1324 -#define wxSizerItem_new_5_1 1325 -#define wxSizerItem_new_2_1 1326 -#define wxSizerItem_new_5_0 1327 -#define wxSizerItem_new_2_0 1328 -#define wxSizerItem_new_6 1329 -#define wxSizerItem_new_3 1330 -#define wxSizerItem_new_0 1331 -#define wxSizerItem_destruct 1332 -#define wxSizerItem_CalcMin 1333 -#define wxSizerItem_DeleteWindows 1334 -#define wxSizerItem_DetachSizer 1335 -#define wxSizerItem_GetBorder 1336 -#define wxSizerItem_GetFlag 1337 -#define wxSizerItem_GetMinSize 1338 -#define wxSizerItem_GetPosition 1339 -#define wxSizerItem_GetProportion 1340 -#define wxSizerItem_GetRatio 1341 -#define wxSizerItem_GetRect 1342 -#define wxSizerItem_GetSize 1343 -#define wxSizerItem_GetSizer 1344 -#define wxSizerItem_GetSpacer 1345 -#define wxSizerItem_GetUserData 1346 -#define wxSizerItem_GetWindow 1347 -#define wxSizerItem_IsSizer 1348 -#define wxSizerItem_IsShown 1349 -#define wxSizerItem_IsSpacer 1350 -#define wxSizerItem_IsWindow 1351 -#define wxSizerItem_SetBorder 1352 -#define wxSizerItem_SetDimension 1353 -#define wxSizerItem_SetFlag 1354 -#define wxSizerItem_SetInitSize 1355 -#define wxSizerItem_SetMinSize_1 1356 -#define wxSizerItem_SetMinSize_2 1357 -#define wxSizerItem_SetProportion 1358 -#define wxSizerItem_SetRatio_2 1359 -#define wxSizerItem_SetRatio_1_1 1360 -#define wxSizerItem_SetRatio_1_0 1361 -#define wxSizerItem_SetSizer 1362 -#define wxSizerItem_SetSpacer_1 1363 -#define wxSizerItem_SetSpacer_2 1364 -#define wxSizerItem_SetWindow 1365 -#define wxSizerItem_Show 1366 -#define wxBoxSizer_new 1367 -#define wxBoxSizer_GetOrientation 1368 -#define wxBoxSizer_destroy 1369 -#define wxStaticBoxSizer_new_2 1370 -#define wxStaticBoxSizer_new_3 1371 -#define wxStaticBoxSizer_GetStaticBox 1372 -#define wxStaticBoxSizer_destroy 1373 -#define wxGridSizer_new_4 1374 -#define wxGridSizer_new_2 1375 -#define wxGridSizer_GetCols 1376 -#define wxGridSizer_GetHGap 1377 -#define wxGridSizer_GetRows 1378 -#define wxGridSizer_GetVGap 1379 -#define wxGridSizer_SetCols 1380 -#define wxGridSizer_SetHGap 1381 -#define wxGridSizer_SetRows 1382 -#define wxGridSizer_SetVGap 1383 -#define wxGridSizer_destroy 1384 -#define wxFlexGridSizer_new_4 1385 -#define wxFlexGridSizer_new_2 1386 -#define wxFlexGridSizer_AddGrowableCol 1387 -#define wxFlexGridSizer_AddGrowableRow 1388 -#define wxFlexGridSizer_GetFlexibleDirection 1389 -#define wxFlexGridSizer_GetNonFlexibleGrowMode 1390 -#define wxFlexGridSizer_RemoveGrowableCol 1391 -#define wxFlexGridSizer_RemoveGrowableRow 1392 -#define wxFlexGridSizer_SetFlexibleDirection 1393 -#define wxFlexGridSizer_SetNonFlexibleGrowMode 1394 -#define wxFlexGridSizer_destroy 1395 -#define wxGridBagSizer_new 1396 -#define wxGridBagSizer_Add_3_2 1397 -#define wxGridBagSizer_Add_3_1 1398 -#define wxGridBagSizer_Add_4 1399 -#define wxGridBagSizer_Add_1_0 1400 -#define wxGridBagSizer_Add_2_1 1401 -#define wxGridBagSizer_Add_2_0 1402 -#define wxGridBagSizer_Add_3_0 1403 -#define wxGridBagSizer_Add_1_1 1404 -#define wxGridBagSizer_CalcMin 1405 -#define wxGridBagSizer_CheckForIntersection_2 1406 -#define wxGridBagSizer_CheckForIntersection_3 1407 -#define wxGridBagSizer_FindItem_1_1 1408 -#define wxGridBagSizer_FindItem_1_0 1409 -#define wxGridBagSizer_FindItemAtPoint 1410 -#define wxGridBagSizer_FindItemAtPosition 1411 -#define wxGridBagSizer_FindItemWithData 1412 -#define wxGridBagSizer_GetCellSize 1413 -#define wxGridBagSizer_GetEmptyCellSize 1414 -#define wxGridBagSizer_GetItemPosition_1_2 1415 -#define wxGridBagSizer_GetItemPosition_1_1 1416 -#define wxGridBagSizer_GetItemPosition_1_0 1417 -#define wxGridBagSizer_GetItemSpan_1_2 1418 -#define wxGridBagSizer_GetItemSpan_1_1 1419 -#define wxGridBagSizer_GetItemSpan_1_0 1420 -#define wxGridBagSizer_SetEmptyCellSize 1421 -#define wxGridBagSizer_SetItemPosition_2_2 1422 -#define wxGridBagSizer_SetItemPosition_2_1 1423 -#define wxGridBagSizer_SetItemPosition_2_0 1424 -#define wxGridBagSizer_SetItemSpan_2_2 1425 -#define wxGridBagSizer_SetItemSpan_2_1 1426 -#define wxGridBagSizer_SetItemSpan_2_0 1427 -#define wxGridBagSizer_destroy 1428 -#define wxStdDialogButtonSizer_new 1429 -#define wxStdDialogButtonSizer_AddButton 1430 -#define wxStdDialogButtonSizer_Realize 1431 -#define wxStdDialogButtonSizer_SetAffirmativeButton 1432 -#define wxStdDialogButtonSizer_SetCancelButton 1433 -#define wxStdDialogButtonSizer_SetNegativeButton 1434 -#define wxStdDialogButtonSizer_destroy 1435 -#define wxFont_new_0 1436 -#define wxFont_new_1 1437 -#define wxFont_new_5 1438 -#define wxFont_destruct 1440 -#define wxFont_IsFixedWidth 1441 -#define wxFont_GetDefaultEncoding 1442 -#define wxFont_GetFaceName 1443 -#define wxFont_GetFamily 1444 -#define wxFont_GetNativeFontInfoDesc 1445 -#define wxFont_GetNativeFontInfoUserDesc 1446 -#define wxFont_GetPointSize 1447 -#define wxFont_GetStyle 1448 -#define wxFont_GetUnderlined 1449 -#define wxFont_GetWeight 1450 -#define wxFont_Ok 1451 -#define wxFont_SetDefaultEncoding 1452 -#define wxFont_SetFaceName 1453 -#define wxFont_SetFamily 1454 -#define wxFont_SetPointSize 1455 -#define wxFont_SetStyle 1456 -#define wxFont_SetUnderlined 1457 -#define wxFont_SetWeight 1458 -#define wxToolTip_Enable 1459 -#define wxToolTip_SetDelay 1460 -#define wxToolTip_new 1461 -#define wxToolTip_SetTip 1462 -#define wxToolTip_GetTip 1463 -#define wxToolTip_GetWindow 1464 -#define wxToolTip_destroy 1465 -#define wxButton_new_3 1467 -#define wxButton_new_0 1468 -#define wxButton_destruct 1469 -#define wxButton_Create 1470 -#define wxButton_GetDefaultSize 1471 -#define wxButton_SetDefault 1472 -#define wxButton_SetLabel 1473 -#define wxBitmapButton_new_4 1475 -#define wxBitmapButton_new_0 1476 -#define wxBitmapButton_Create 1477 -#define wxBitmapButton_GetBitmapDisabled 1478 -#define wxBitmapButton_GetBitmapFocus 1480 -#define wxBitmapButton_GetBitmapLabel 1482 -#define wxBitmapButton_GetBitmapSelected 1484 -#define wxBitmapButton_SetBitmapDisabled 1486 -#define wxBitmapButton_SetBitmapFocus 1487 -#define wxBitmapButton_SetBitmapLabel 1488 -#define wxBitmapButton_SetBitmapSelected 1489 -#define wxBitmapButton_destroy 1490 -#define wxToggleButton_new_0 1491 -#define wxToggleButton_new_4 1492 -#define wxToggleButton_Create 1493 -#define wxToggleButton_GetValue 1494 -#define wxToggleButton_SetValue 1495 -#define wxToggleButton_destroy 1496 -#define wxCalendarCtrl_new_0 1497 -#define wxCalendarCtrl_new_3 1498 -#define wxCalendarCtrl_Create 1499 -#define wxCalendarCtrl_destruct 1500 -#define wxCalendarCtrl_SetDate 1501 -#define wxCalendarCtrl_GetDate 1502 -#define wxCalendarCtrl_EnableYearChange 1503 -#define wxCalendarCtrl_EnableMonthChange 1504 -#define wxCalendarCtrl_EnableHolidayDisplay 1505 -#define wxCalendarCtrl_SetHeaderColours 1506 -#define wxCalendarCtrl_GetHeaderColourFg 1507 -#define wxCalendarCtrl_GetHeaderColourBg 1508 -#define wxCalendarCtrl_SetHighlightColours 1509 -#define wxCalendarCtrl_GetHighlightColourFg 1510 -#define wxCalendarCtrl_GetHighlightColourBg 1511 -#define wxCalendarCtrl_SetHolidayColours 1512 -#define wxCalendarCtrl_GetHolidayColourFg 1513 -#define wxCalendarCtrl_GetHolidayColourBg 1514 -#define wxCalendarCtrl_GetAttr 1515 -#define wxCalendarCtrl_SetAttr 1516 -#define wxCalendarCtrl_SetHoliday 1517 -#define wxCalendarCtrl_ResetAttr 1518 -#define wxCalendarCtrl_HitTest 1519 -#define wxCalendarDateAttr_new_0 1520 -#define wxCalendarDateAttr_new_2_1 1521 -#define wxCalendarDateAttr_new_2_0 1522 -#define wxCalendarDateAttr_SetTextColour 1523 -#define wxCalendarDateAttr_SetBackgroundColour 1524 -#define wxCalendarDateAttr_SetBorderColour 1525 -#define wxCalendarDateAttr_SetFont 1526 -#define wxCalendarDateAttr_SetBorder 1527 -#define wxCalendarDateAttr_SetHoliday 1528 -#define wxCalendarDateAttr_HasTextColour 1529 -#define wxCalendarDateAttr_HasBackgroundColour 1530 -#define wxCalendarDateAttr_HasBorderColour 1531 -#define wxCalendarDateAttr_HasFont 1532 -#define wxCalendarDateAttr_HasBorder 1533 -#define wxCalendarDateAttr_IsHoliday 1534 -#define wxCalendarDateAttr_GetTextColour 1535 -#define wxCalendarDateAttr_GetBackgroundColour 1536 -#define wxCalendarDateAttr_GetBorderColour 1537 -#define wxCalendarDateAttr_GetFont 1538 -#define wxCalendarDateAttr_GetBorder 1539 -#define wxCalendarDateAttr_destroy 1540 -#define wxCheckBox_new_4 1542 -#define wxCheckBox_new_0 1543 -#define wxCheckBox_Create 1544 -#define wxCheckBox_GetValue 1545 -#define wxCheckBox_Get3StateValue 1546 -#define wxCheckBox_Is3rdStateAllowedForUser 1547 -#define wxCheckBox_Is3State 1548 -#define wxCheckBox_IsChecked 1549 -#define wxCheckBox_SetValue 1550 -#define wxCheckBox_Set3StateValue 1551 -#define wxCheckBox_destroy 1552 -#define wxCheckListBox_new_0 1553 -#define wxCheckListBox_new_3 1555 -#define wxCheckListBox_Check 1556 -#define wxCheckListBox_IsChecked 1557 -#define wxCheckListBox_destroy 1558 -#define wxChoice_new_3 1561 -#define wxChoice_new_0 1562 -#define wxChoice_destruct 1564 -#define wxChoice_Create 1566 -#define wxChoice_Delete 1567 -#define wxChoice_GetColumns 1568 -#define wxChoice_SetColumns 1569 -#define wxComboBox_new_0 1570 -#define wxComboBox_new_3 1572 -#define wxComboBox_destruct 1573 -#define wxComboBox_Create 1575 -#define wxComboBox_CanCopy 1576 -#define wxComboBox_CanCut 1577 -#define wxComboBox_CanPaste 1578 -#define wxComboBox_CanRedo 1579 -#define wxComboBox_CanUndo 1580 -#define wxComboBox_Copy 1581 -#define wxComboBox_Cut 1582 -#define wxComboBox_GetInsertionPoint 1583 -#define wxComboBox_GetLastPosition 1584 -#define wxComboBox_GetValue 1585 -#define wxComboBox_Paste 1586 -#define wxComboBox_Redo 1587 -#define wxComboBox_Replace 1588 -#define wxComboBox_Remove 1589 -#define wxComboBox_SetInsertionPoint 1590 -#define wxComboBox_SetInsertionPointEnd 1591 -#define wxComboBox_SetSelection_1 1592 -#define wxComboBox_SetSelection_2 1593 -#define wxComboBox_SetValue 1594 -#define wxComboBox_Undo 1595 -#define wxGauge_new_0 1596 -#define wxGauge_new_4 1597 -#define wxGauge_Create 1598 -#define wxGauge_GetBezelFace 1599 -#define wxGauge_GetRange 1600 -#define wxGauge_GetShadowWidth 1601 -#define wxGauge_GetValue 1602 -#define wxGauge_IsVertical 1603 -#define wxGauge_SetBezelFace 1604 -#define wxGauge_SetRange 1605 -#define wxGauge_SetShadowWidth 1606 -#define wxGauge_SetValue 1607 -#define wxGauge_Pulse 1608 -#define wxGauge_destroy 1609 -#define wxGenericDirCtrl_new_0 1610 -#define wxGenericDirCtrl_new_2 1611 -#define wxGenericDirCtrl_destruct 1612 -#define wxGenericDirCtrl_Create 1613 -#define wxGenericDirCtrl_Init 1614 -#define wxGenericDirCtrl_CollapseTree 1615 -#define wxGenericDirCtrl_ExpandPath 1616 -#define wxGenericDirCtrl_GetDefaultPath 1617 -#define wxGenericDirCtrl_GetPath 1618 -#define wxGenericDirCtrl_GetFilePath 1619 -#define wxGenericDirCtrl_GetFilter 1620 -#define wxGenericDirCtrl_GetFilterIndex 1621 -#define wxGenericDirCtrl_GetRootId 1622 -#define wxGenericDirCtrl_GetTreeCtrl 1623 -#define wxGenericDirCtrl_ReCreateTree 1624 -#define wxGenericDirCtrl_SetDefaultPath 1625 -#define wxGenericDirCtrl_SetFilter 1626 -#define wxGenericDirCtrl_SetFilterIndex 1627 -#define wxGenericDirCtrl_SetPath 1628 -#define wxStaticBox_new_4 1630 -#define wxStaticBox_new_0 1631 -#define wxStaticBox_Create 1632 -#define wxStaticBox_destroy 1633 -#define wxStaticLine_new_2 1635 -#define wxStaticLine_new_0 1636 -#define wxStaticLine_Create 1637 -#define wxStaticLine_IsVertical 1638 -#define wxStaticLine_GetDefaultSize 1639 -#define wxStaticLine_destroy 1640 -#define wxListBox_new_3 1643 -#define wxListBox_new_0 1644 -#define wxListBox_destruct 1646 -#define wxListBox_Create 1648 -#define wxListBox_Deselect 1649 -#define wxListBox_GetSelections 1650 -#define wxListBox_InsertItems 1651 -#define wxListBox_IsSelected 1652 -#define wxListBox_Set 1653 -#define wxListBox_HitTest 1654 -#define wxListBox_SetFirstItem_1_0 1655 -#define wxListBox_SetFirstItem_1_1 1656 -#define wxListCtrl_new_0 1657 -#define wxListCtrl_new_2 1658 -#define wxListCtrl_Arrange 1659 -#define wxListCtrl_AssignImageList 1660 -#define wxListCtrl_ClearAll 1661 -#define wxListCtrl_Create 1662 -#define wxListCtrl_DeleteAllItems 1663 -#define wxListCtrl_DeleteColumn 1664 -#define wxListCtrl_DeleteItem 1665 -#define wxListCtrl_EditLabel 1666 -#define wxListCtrl_EnsureVisible 1667 -#define wxListCtrl_FindItem_3_0 1668 -#define wxListCtrl_FindItem_3_1 1669 -#define wxListCtrl_GetColumn 1670 -#define wxListCtrl_GetColumnCount 1671 -#define wxListCtrl_GetColumnWidth 1672 -#define wxListCtrl_GetCountPerPage 1673 -#define wxListCtrl_GetEditControl 1674 -#define wxListCtrl_GetImageList 1675 -#define wxListCtrl_GetItem 1676 -#define wxListCtrl_GetItemBackgroundColour 1677 -#define wxListCtrl_GetItemCount 1678 -#define wxListCtrl_GetItemData 1679 -#define wxListCtrl_GetItemFont 1680 -#define wxListCtrl_GetItemPosition 1681 -#define wxListCtrl_GetItemRect 1682 -#define wxListCtrl_GetItemSpacing 1683 -#define wxListCtrl_GetItemState 1684 -#define wxListCtrl_GetItemText 1685 -#define wxListCtrl_GetItemTextColour 1686 -#define wxListCtrl_GetNextItem 1687 -#define wxListCtrl_GetSelectedItemCount 1688 -#define wxListCtrl_GetTextColour 1689 -#define wxListCtrl_GetTopItem 1690 -#define wxListCtrl_GetViewRect 1691 -#define wxListCtrl_HitTest 1692 -#define wxListCtrl_InsertColumn_2 1693 -#define wxListCtrl_InsertColumn_3 1694 -#define wxListCtrl_InsertItem_1 1695 -#define wxListCtrl_InsertItem_2_1 1696 -#define wxListCtrl_InsertItem_2_0 1697 -#define wxListCtrl_InsertItem_3 1698 -#define wxListCtrl_RefreshItem 1699 -#define wxListCtrl_RefreshItems 1700 -#define wxListCtrl_ScrollList 1701 -#define wxListCtrl_SetBackgroundColour 1702 -#define wxListCtrl_SetColumn 1703 -#define wxListCtrl_SetColumnWidth 1704 -#define wxListCtrl_SetImageList 1705 -#define wxListCtrl_SetItem_1 1706 -#define wxListCtrl_SetItem_4 1707 -#define wxListCtrl_SetItemBackgroundColour 1708 -#define wxListCtrl_SetItemCount 1709 -#define wxListCtrl_SetItemData 1710 -#define wxListCtrl_SetItemFont 1711 -#define wxListCtrl_SetItemImage 1712 -#define wxListCtrl_SetItemColumnImage 1713 -#define wxListCtrl_SetItemPosition 1714 -#define wxListCtrl_SetItemState 1715 -#define wxListCtrl_SetItemText 1716 -#define wxListCtrl_SetItemTextColour 1717 -#define wxListCtrl_SetSingleStyle 1718 -#define wxListCtrl_SetTextColour 1719 -#define wxListCtrl_SetWindowStyleFlag 1720 -#define wxListCtrl_SortItems 1721 -#define wxListCtrl_destroy 1722 -#define wxListView_ClearColumnImage 1723 -#define wxListView_Focus 1724 -#define wxListView_GetFirstSelected 1725 -#define wxListView_GetFocusedItem 1726 -#define wxListView_GetNextSelected 1727 -#define wxListView_IsSelected 1728 -#define wxListView_Select 1729 -#define wxListView_SetColumnImage 1730 -#define wxListItem_new_0 1731 -#define wxListItem_new_1 1732 -#define wxListItem_destruct 1733 -#define wxListItem_Clear 1734 -#define wxListItem_GetAlign 1735 -#define wxListItem_GetBackgroundColour 1736 -#define wxListItem_GetColumn 1737 -#define wxListItem_GetFont 1738 -#define wxListItem_GetId 1739 -#define wxListItem_GetImage 1740 -#define wxListItem_GetMask 1741 -#define wxListItem_GetState 1742 -#define wxListItem_GetText 1743 -#define wxListItem_GetTextColour 1744 -#define wxListItem_GetWidth 1745 -#define wxListItem_SetAlign 1746 -#define wxListItem_SetBackgroundColour 1747 -#define wxListItem_SetColumn 1748 -#define wxListItem_SetFont 1749 -#define wxListItem_SetId 1750 -#define wxListItem_SetImage 1751 -#define wxListItem_SetMask 1752 -#define wxListItem_SetState 1753 -#define wxListItem_SetStateMask 1754 -#define wxListItem_SetText 1755 -#define wxListItem_SetTextColour 1756 -#define wxListItem_SetWidth 1757 -#define wxListItemAttr_new_0 1758 -#define wxListItemAttr_new_3 1759 -#define wxListItemAttr_GetBackgroundColour 1760 -#define wxListItemAttr_GetFont 1761 -#define wxListItemAttr_GetTextColour 1762 -#define wxListItemAttr_HasBackgroundColour 1763 -#define wxListItemAttr_HasFont 1764 -#define wxListItemAttr_HasTextColour 1765 -#define wxListItemAttr_SetBackgroundColour 1766 -#define wxListItemAttr_SetFont 1767 -#define wxListItemAttr_SetTextColour 1768 -#define wxListItemAttr_destroy 1769 -#define wxImageList_new_0 1770 -#define wxImageList_new_3 1771 -#define wxImageList_Add_1 1772 -#define wxImageList_Add_2_0 1773 -#define wxImageList_Add_2_1 1774 -#define wxImageList_Create 1775 -#define wxImageList_Draw 1777 -#define wxImageList_GetBitmap 1778 -#define wxImageList_GetIcon 1779 -#define wxImageList_GetImageCount 1780 -#define wxImageList_GetSize 1781 -#define wxImageList_Remove 1782 -#define wxImageList_RemoveAll 1783 -#define wxImageList_Replace_2 1784 -#define wxImageList_Replace_3 1785 -#define wxImageList_destroy 1786 -#define wxTextAttr_new_0 1787 -#define wxTextAttr_new_2 1788 -#define wxTextAttr_GetAlignment 1789 -#define wxTextAttr_GetBackgroundColour 1790 -#define wxTextAttr_GetFont 1791 -#define wxTextAttr_GetLeftIndent 1792 -#define wxTextAttr_GetLeftSubIndent 1793 -#define wxTextAttr_GetRightIndent 1794 -#define wxTextAttr_GetTabs 1795 -#define wxTextAttr_GetTextColour 1796 -#define wxTextAttr_HasBackgroundColour 1797 -#define wxTextAttr_HasFont 1798 -#define wxTextAttr_HasTextColour 1799 -#define wxTextAttr_GetFlags 1800 -#define wxTextAttr_IsDefault 1801 -#define wxTextAttr_SetAlignment 1802 -#define wxTextAttr_SetBackgroundColour 1803 -#define wxTextAttr_SetFlags 1804 -#define wxTextAttr_SetFont 1805 -#define wxTextAttr_SetLeftIndent 1806 -#define wxTextAttr_SetRightIndent 1807 -#define wxTextAttr_SetTabs 1808 -#define wxTextAttr_SetTextColour 1809 -#define wxTextAttr_destroy 1810 -#define wxTextCtrl_new_3 1812 -#define wxTextCtrl_new_0 1813 -#define wxTextCtrl_destruct 1815 -#define wxTextCtrl_AppendText 1816 -#define wxTextCtrl_CanCopy 1817 -#define wxTextCtrl_CanCut 1818 -#define wxTextCtrl_CanPaste 1819 -#define wxTextCtrl_CanRedo 1820 -#define wxTextCtrl_CanUndo 1821 -#define wxTextCtrl_Clear 1822 -#define wxTextCtrl_Copy 1823 -#define wxTextCtrl_Create 1824 -#define wxTextCtrl_Cut 1825 -#define wxTextCtrl_DiscardEdits 1826 -#define wxTextCtrl_ChangeValue 1827 -#define wxTextCtrl_EmulateKeyPress 1828 -#define wxTextCtrl_GetDefaultStyle 1829 -#define wxTextCtrl_GetInsertionPoint 1830 -#define wxTextCtrl_GetLastPosition 1831 -#define wxTextCtrl_GetLineLength 1832 -#define wxTextCtrl_GetLineText 1833 -#define wxTextCtrl_GetNumberOfLines 1834 -#define wxTextCtrl_GetRange 1835 -#define wxTextCtrl_GetSelection 1836 -#define wxTextCtrl_GetStringSelection 1837 -#define wxTextCtrl_GetStyle 1838 -#define wxTextCtrl_GetValue 1839 -#define wxTextCtrl_IsEditable 1840 -#define wxTextCtrl_IsModified 1841 -#define wxTextCtrl_IsMultiLine 1842 -#define wxTextCtrl_IsSingleLine 1843 -#define wxTextCtrl_LoadFile 1844 -#define wxTextCtrl_MarkDirty 1845 -#define wxTextCtrl_Paste 1846 -#define wxTextCtrl_PositionToXY 1847 -#define wxTextCtrl_Redo 1848 -#define wxTextCtrl_Remove 1849 -#define wxTextCtrl_Replace 1850 -#define wxTextCtrl_SaveFile 1851 -#define wxTextCtrl_SetDefaultStyle 1852 -#define wxTextCtrl_SetEditable 1853 -#define wxTextCtrl_SetInsertionPoint 1854 -#define wxTextCtrl_SetInsertionPointEnd 1855 -#define wxTextCtrl_SetMaxLength 1857 -#define wxTextCtrl_SetSelection 1858 -#define wxTextCtrl_SetStyle 1859 -#define wxTextCtrl_SetValue 1860 -#define wxTextCtrl_ShowPosition 1861 -#define wxTextCtrl_Undo 1862 -#define wxTextCtrl_WriteText 1863 -#define wxTextCtrl_XYToPosition 1864 -#define wxNotebook_new_0 1867 -#define wxNotebook_new_3 1868 -#define wxNotebook_destruct 1869 -#define wxNotebook_AddPage 1870 -#define wxNotebook_AdvanceSelection 1871 -#define wxNotebook_AssignImageList 1872 -#define wxNotebook_Create 1873 -#define wxNotebook_DeleteAllPages 1874 -#define wxNotebook_DeletePage 1875 -#define wxNotebook_RemovePage 1876 -#define wxNotebook_GetCurrentPage 1877 -#define wxNotebook_GetImageList 1878 -#define wxNotebook_GetPage 1880 -#define wxNotebook_GetPageCount 1881 -#define wxNotebook_GetPageImage 1882 -#define wxNotebook_GetPageText 1883 -#define wxNotebook_GetRowCount 1884 -#define wxNotebook_GetSelection 1885 -#define wxNotebook_GetThemeBackgroundColour 1886 -#define wxNotebook_HitTest 1888 -#define wxNotebook_InsertPage 1890 -#define wxNotebook_SetImageList 1891 -#define wxNotebook_SetPadding 1892 -#define wxNotebook_SetPageSize 1893 -#define wxNotebook_SetPageImage 1894 -#define wxNotebook_SetPageText 1895 -#define wxNotebook_SetSelection 1896 -#define wxNotebook_ChangeSelection 1897 -#define wxChoicebook_new_0 1898 -#define wxChoicebook_new_3 1899 -#define wxChoicebook_AddPage 1900 -#define wxChoicebook_AdvanceSelection 1901 -#define wxChoicebook_AssignImageList 1902 -#define wxChoicebook_Create 1903 -#define wxChoicebook_DeleteAllPages 1904 -#define wxChoicebook_DeletePage 1905 -#define wxChoicebook_RemovePage 1906 -#define wxChoicebook_GetCurrentPage 1907 -#define wxChoicebook_GetImageList 1908 -#define wxChoicebook_GetPage 1910 -#define wxChoicebook_GetPageCount 1911 -#define wxChoicebook_GetPageImage 1912 -#define wxChoicebook_GetPageText 1913 -#define wxChoicebook_GetSelection 1914 -#define wxChoicebook_HitTest 1915 -#define wxChoicebook_InsertPage 1916 -#define wxChoicebook_SetImageList 1917 -#define wxChoicebook_SetPageSize 1918 -#define wxChoicebook_SetPageImage 1919 -#define wxChoicebook_SetPageText 1920 -#define wxChoicebook_SetSelection 1921 -#define wxChoicebook_ChangeSelection 1922 -#define wxChoicebook_destroy 1923 -#define wxToolbook_new_0 1924 -#define wxToolbook_new_3 1925 -#define wxToolbook_AddPage 1926 -#define wxToolbook_AdvanceSelection 1927 -#define wxToolbook_AssignImageList 1928 -#define wxToolbook_Create 1929 -#define wxToolbook_DeleteAllPages 1930 -#define wxToolbook_DeletePage 1931 -#define wxToolbook_RemovePage 1932 -#define wxToolbook_GetCurrentPage 1933 -#define wxToolbook_GetImageList 1934 -#define wxToolbook_GetPage 1936 -#define wxToolbook_GetPageCount 1937 -#define wxToolbook_GetPageImage 1938 -#define wxToolbook_GetPageText 1939 -#define wxToolbook_GetSelection 1940 -#define wxToolbook_HitTest 1942 -#define wxToolbook_InsertPage 1943 -#define wxToolbook_SetImageList 1944 -#define wxToolbook_SetPageSize 1945 -#define wxToolbook_SetPageImage 1946 -#define wxToolbook_SetPageText 1947 -#define wxToolbook_SetSelection 1948 -#define wxToolbook_ChangeSelection 1949 -#define wxToolbook_destroy 1950 -#define wxListbook_new_0 1951 -#define wxListbook_new_3 1952 -#define wxListbook_AddPage 1953 -#define wxListbook_AdvanceSelection 1954 -#define wxListbook_AssignImageList 1955 -#define wxListbook_Create 1956 -#define wxListbook_DeleteAllPages 1957 -#define wxListbook_DeletePage 1958 -#define wxListbook_RemovePage 1959 -#define wxListbook_GetCurrentPage 1960 -#define wxListbook_GetImageList 1961 -#define wxListbook_GetPage 1963 -#define wxListbook_GetPageCount 1964 -#define wxListbook_GetPageImage 1965 -#define wxListbook_GetPageText 1966 -#define wxListbook_GetSelection 1967 -#define wxListbook_HitTest 1969 -#define wxListbook_InsertPage 1970 -#define wxListbook_SetImageList 1971 -#define wxListbook_SetPageSize 1972 -#define wxListbook_SetPageImage 1973 -#define wxListbook_SetPageText 1974 -#define wxListbook_SetSelection 1975 -#define wxListbook_ChangeSelection 1976 -#define wxListbook_destroy 1977 -#define wxTreebook_new_0 1978 -#define wxTreebook_new_3 1979 -#define wxTreebook_AddPage 1980 -#define wxTreebook_AdvanceSelection 1981 -#define wxTreebook_AssignImageList 1982 -#define wxTreebook_Create 1983 -#define wxTreebook_DeleteAllPages 1984 -#define wxTreebook_DeletePage 1985 -#define wxTreebook_RemovePage 1986 -#define wxTreebook_GetCurrentPage 1987 -#define wxTreebook_GetImageList 1988 -#define wxTreebook_GetPage 1990 -#define wxTreebook_GetPageCount 1991 -#define wxTreebook_GetPageImage 1992 -#define wxTreebook_GetPageText 1993 -#define wxTreebook_GetSelection 1994 -#define wxTreebook_ExpandNode 1995 -#define wxTreebook_IsNodeExpanded 1996 -#define wxTreebook_HitTest 1998 -#define wxTreebook_InsertPage 1999 -#define wxTreebook_InsertSubPage 2000 -#define wxTreebook_SetImageList 2001 -#define wxTreebook_SetPageSize 2002 -#define wxTreebook_SetPageImage 2003 -#define wxTreebook_SetPageText 2004 -#define wxTreebook_SetSelection 2005 -#define wxTreebook_ChangeSelection 2006 -#define wxTreebook_destroy 2007 -#define wxTreeCtrl_new_2 2010 -#define wxTreeCtrl_new_0 2011 -#define wxTreeCtrl_destruct 2013 -#define wxTreeCtrl_AddRoot 2014 -#define wxTreeCtrl_AppendItem 2015 -#define wxTreeCtrl_AssignImageList 2016 -#define wxTreeCtrl_AssignStateImageList 2017 -#define wxTreeCtrl_Collapse 2018 -#define wxTreeCtrl_CollapseAndReset 2019 -#define wxTreeCtrl_Create 2020 -#define wxTreeCtrl_Delete 2021 -#define wxTreeCtrl_DeleteAllItems 2022 -#define wxTreeCtrl_DeleteChildren 2023 -#define wxTreeCtrl_EditLabel 2024 -#define wxTreeCtrl_EnsureVisible 2025 -#define wxTreeCtrl_Expand 2026 -#define wxTreeCtrl_GetBoundingRect 2027 -#define wxTreeCtrl_GetChildrenCount 2029 -#define wxTreeCtrl_GetCount 2030 -#define wxTreeCtrl_GetEditControl 2031 -#define wxTreeCtrl_GetFirstChild 2032 -#define wxTreeCtrl_GetNextChild 2033 -#define wxTreeCtrl_GetFirstVisibleItem 2034 -#define wxTreeCtrl_GetImageList 2035 -#define wxTreeCtrl_GetIndent 2036 -#define wxTreeCtrl_GetItemBackgroundColour 2037 -#define wxTreeCtrl_GetItemData 2038 -#define wxTreeCtrl_GetItemFont 2039 -#define wxTreeCtrl_GetItemImage_1 2040 -#define wxTreeCtrl_GetItemImage_2 2041 -#define wxTreeCtrl_GetItemText 2042 -#define wxTreeCtrl_GetItemTextColour 2043 -#define wxTreeCtrl_GetLastChild 2044 -#define wxTreeCtrl_GetNextSibling 2045 -#define wxTreeCtrl_GetNextVisible 2046 -#define wxTreeCtrl_GetItemParent 2047 -#define wxTreeCtrl_GetPrevSibling 2048 -#define wxTreeCtrl_GetPrevVisible 2049 -#define wxTreeCtrl_GetRootItem 2050 -#define wxTreeCtrl_GetSelection 2051 -#define wxTreeCtrl_GetSelections 2052 -#define wxTreeCtrl_GetStateImageList 2053 -#define wxTreeCtrl_HitTest 2054 -#define wxTreeCtrl_InsertItem 2056 -#define wxTreeCtrl_IsBold 2057 -#define wxTreeCtrl_IsExpanded 2058 -#define wxTreeCtrl_IsSelected 2059 -#define wxTreeCtrl_IsVisible 2060 -#define wxTreeCtrl_ItemHasChildren 2061 -#define wxTreeCtrl_IsTreeItemIdOk 2062 -#define wxTreeCtrl_PrependItem 2063 -#define wxTreeCtrl_ScrollTo 2064 -#define wxTreeCtrl_SelectItem_1 2065 -#define wxTreeCtrl_SelectItem_2 2066 -#define wxTreeCtrl_SetIndent 2067 -#define wxTreeCtrl_SetImageList 2068 -#define wxTreeCtrl_SetItemBackgroundColour 2069 -#define wxTreeCtrl_SetItemBold 2070 -#define wxTreeCtrl_SetItemData 2071 -#define wxTreeCtrl_SetItemDropHighlight 2072 -#define wxTreeCtrl_SetItemFont 2073 -#define wxTreeCtrl_SetItemHasChildren 2074 -#define wxTreeCtrl_SetItemImage_2 2075 -#define wxTreeCtrl_SetItemImage_3 2076 -#define wxTreeCtrl_SetItemText 2077 -#define wxTreeCtrl_SetItemTextColour 2078 -#define wxTreeCtrl_SetStateImageList 2079 -#define wxTreeCtrl_SetWindowStyle 2080 -#define wxTreeCtrl_SortChildren 2081 -#define wxTreeCtrl_Toggle 2082 -#define wxTreeCtrl_ToggleItemSelection 2083 -#define wxTreeCtrl_Unselect 2084 -#define wxTreeCtrl_UnselectAll 2085 -#define wxTreeCtrl_UnselectItem 2086 -#define wxScrollBar_new_0 2087 -#define wxScrollBar_new_3 2088 -#define wxScrollBar_destruct 2089 -#define wxScrollBar_Create 2090 -#define wxScrollBar_GetRange 2091 -#define wxScrollBar_GetPageSize 2092 -#define wxScrollBar_GetThumbPosition 2093 -#define wxScrollBar_GetThumbSize 2094 -#define wxScrollBar_SetThumbPosition 2095 -#define wxScrollBar_SetScrollbar 2096 -#define wxSpinButton_new_2 2098 -#define wxSpinButton_new_0 2099 -#define wxSpinButton_Create 2100 -#define wxSpinButton_GetMax 2101 -#define wxSpinButton_GetMin 2102 -#define wxSpinButton_GetValue 2103 -#define wxSpinButton_SetRange 2104 -#define wxSpinButton_SetValue 2105 -#define wxSpinButton_destroy 2106 -#define wxSpinCtrl_new_0 2107 -#define wxSpinCtrl_new_2 2108 -#define wxSpinCtrl_Create 2110 -#define wxSpinCtrl_SetValue_1_1 2113 -#define wxSpinCtrl_SetValue_1_0 2114 -#define wxSpinCtrl_GetValue 2116 -#define wxSpinCtrl_SetRange 2118 -#define wxSpinCtrl_SetSelection 2119 -#define wxSpinCtrl_GetMin 2121 -#define wxSpinCtrl_GetMax 2123 -#define wxSpinCtrl_destroy 2124 -#define wxStaticText_new_0 2125 -#define wxStaticText_new_4 2126 -#define wxStaticText_Create 2127 -#define wxStaticText_GetLabel 2128 -#define wxStaticText_SetLabel 2129 -#define wxStaticText_Wrap 2130 -#define wxStaticText_destroy 2131 -#define wxStaticBitmap_new_0 2132 -#define wxStaticBitmap_new_4 2133 -#define wxStaticBitmap_Create 2134 -#define wxStaticBitmap_GetBitmap 2135 -#define wxStaticBitmap_SetBitmap 2136 -#define wxStaticBitmap_destroy 2137 -#define wxRadioBox_new 2138 -#define wxRadioBox_destruct 2140 -#define wxRadioBox_Create 2141 -#define wxRadioBox_Enable_2 2142 -#define wxRadioBox_Enable_1 2143 -#define wxRadioBox_GetSelection 2144 -#define wxRadioBox_GetString 2145 -#define wxRadioBox_SetSelection 2146 -#define wxRadioBox_Show_2 2147 -#define wxRadioBox_Show_1 2148 -#define wxRadioBox_GetColumnCount 2149 -#define wxRadioBox_GetItemHelpText 2150 -#define wxRadioBox_GetItemToolTip 2151 -#define wxRadioBox_GetItemFromPoint 2153 -#define wxRadioBox_GetRowCount 2154 -#define wxRadioBox_IsItemEnabled 2155 -#define wxRadioBox_IsItemShown 2156 -#define wxRadioBox_SetItemHelpText 2157 -#define wxRadioBox_SetItemToolTip 2158 -#define wxRadioButton_new_0 2159 -#define wxRadioButton_new_4 2160 -#define wxRadioButton_Create 2161 -#define wxRadioButton_GetValue 2162 -#define wxRadioButton_SetValue 2163 -#define wxRadioButton_destroy 2164 -#define wxSlider_new_6 2166 -#define wxSlider_new_0 2167 -#define wxSlider_Create 2168 -#define wxSlider_GetLineSize 2169 -#define wxSlider_GetMax 2170 -#define wxSlider_GetMin 2171 -#define wxSlider_GetPageSize 2172 -#define wxSlider_GetThumbLength 2173 -#define wxSlider_GetValue 2174 -#define wxSlider_SetLineSize 2175 -#define wxSlider_SetPageSize 2176 -#define wxSlider_SetRange 2177 -#define wxSlider_SetThumbLength 2178 -#define wxSlider_SetValue 2179 -#define wxSlider_destroy 2180 -#define wxDialog_new_4 2182 -#define wxDialog_new_0 2183 -#define wxDialog_destruct 2185 -#define wxDialog_Create 2186 -#define wxDialog_CreateButtonSizer 2187 -#define wxDialog_CreateStdDialogButtonSizer 2188 -#define wxDialog_EndModal 2189 -#define wxDialog_GetAffirmativeId 2190 -#define wxDialog_GetReturnCode 2191 -#define wxDialog_IsModal 2192 -#define wxDialog_SetAffirmativeId 2193 -#define wxDialog_SetReturnCode 2194 -#define wxDialog_Show 2195 -#define wxDialog_ShowModal 2196 -#define wxColourDialog_new_0 2197 -#define wxColourDialog_new_2 2198 -#define wxColourDialog_destruct 2199 -#define wxColourDialog_Create 2200 -#define wxColourDialog_GetColourData 2201 -#define wxColourData_new_0 2202 -#define wxColourData_new_1 2203 -#define wxColourData_destruct 2204 -#define wxColourData_GetChooseFull 2205 -#define wxColourData_GetColour 2206 -#define wxColourData_GetCustomColour 2208 -#define wxColourData_SetChooseFull 2209 -#define wxColourData_SetColour 2210 -#define wxColourData_SetCustomColour 2211 -#define wxPalette_new_0 2212 -#define wxPalette_new_4 2213 -#define wxPalette_destruct 2215 -#define wxPalette_Create 2216 -#define wxPalette_GetColoursCount 2217 -#define wxPalette_GetPixel 2218 -#define wxPalette_GetRGB 2219 -#define wxPalette_IsOk 2220 -#define wxDirDialog_new 2224 -#define wxDirDialog_destruct 2225 -#define wxDirDialog_GetPath 2226 -#define wxDirDialog_GetMessage 2227 -#define wxDirDialog_SetMessage 2228 -#define wxDirDialog_SetPath 2229 -#define wxFileDialog_new 2233 -#define wxFileDialog_destruct 2234 -#define wxFileDialog_GetDirectory 2235 -#define wxFileDialog_GetFilename 2236 -#define wxFileDialog_GetFilenames 2237 -#define wxFileDialog_GetFilterIndex 2238 -#define wxFileDialog_GetMessage 2239 -#define wxFileDialog_GetPath 2240 -#define wxFileDialog_GetPaths 2241 -#define wxFileDialog_GetWildcard 2242 -#define wxFileDialog_SetDirectory 2243 -#define wxFileDialog_SetFilename 2244 -#define wxFileDialog_SetFilterIndex 2245 -#define wxFileDialog_SetMessage 2246 -#define wxFileDialog_SetPath 2247 -#define wxFileDialog_SetWildcard 2248 -#define wxPickerBase_SetInternalMargin 2249 -#define wxPickerBase_GetInternalMargin 2250 -#define wxPickerBase_SetTextCtrlProportion 2251 -#define wxPickerBase_SetPickerCtrlProportion 2252 -#define wxPickerBase_GetTextCtrlProportion 2253 -#define wxPickerBase_GetPickerCtrlProportion 2254 -#define wxPickerBase_HasTextCtrl 2255 -#define wxPickerBase_GetTextCtrl 2256 -#define wxPickerBase_IsTextCtrlGrowable 2257 -#define wxPickerBase_SetPickerCtrlGrowable 2258 -#define wxPickerBase_SetTextCtrlGrowable 2259 -#define wxPickerBase_IsPickerCtrlGrowable 2260 -#define wxFilePickerCtrl_new_0 2261 -#define wxFilePickerCtrl_new_3 2262 -#define wxFilePickerCtrl_Create 2263 -#define wxFilePickerCtrl_GetPath 2264 -#define wxFilePickerCtrl_SetPath 2265 -#define wxFilePickerCtrl_destroy 2266 -#define wxDirPickerCtrl_new_0 2267 -#define wxDirPickerCtrl_new_3 2268 -#define wxDirPickerCtrl_Create 2269 -#define wxDirPickerCtrl_GetPath 2270 -#define wxDirPickerCtrl_SetPath 2271 -#define wxDirPickerCtrl_destroy 2272 -#define wxColourPickerCtrl_new_0 2273 -#define wxColourPickerCtrl_new_3 2274 -#define wxColourPickerCtrl_Create 2275 -#define wxColourPickerCtrl_GetColour 2276 -#define wxColourPickerCtrl_SetColour_1_1 2277 -#define wxColourPickerCtrl_SetColour_1_0 2278 -#define wxColourPickerCtrl_destroy 2279 -#define wxDatePickerCtrl_new_0 2280 -#define wxDatePickerCtrl_new_3 2281 -#define wxDatePickerCtrl_GetRange 2282 -#define wxDatePickerCtrl_GetValue 2283 -#define wxDatePickerCtrl_SetRange 2284 -#define wxDatePickerCtrl_SetValue 2285 -#define wxDatePickerCtrl_destroy 2286 -#define wxFontPickerCtrl_new_0 2287 -#define wxFontPickerCtrl_new_3 2288 -#define wxFontPickerCtrl_Create 2289 -#define wxFontPickerCtrl_GetSelectedFont 2290 -#define wxFontPickerCtrl_SetSelectedFont 2291 -#define wxFontPickerCtrl_GetMaxPointSize 2292 -#define wxFontPickerCtrl_SetMaxPointSize 2293 -#define wxFontPickerCtrl_destroy 2294 -#define wxFindReplaceDialog_new_0 2297 -#define wxFindReplaceDialog_new_4 2298 -#define wxFindReplaceDialog_destruct 2299 -#define wxFindReplaceDialog_Create 2300 -#define wxFindReplaceDialog_GetData 2301 -#define wxFindReplaceData_new_0 2302 -#define wxFindReplaceData_new_1 2303 -#define wxFindReplaceData_GetFindString 2304 -#define wxFindReplaceData_GetReplaceString 2305 -#define wxFindReplaceData_GetFlags 2306 -#define wxFindReplaceData_SetFlags 2307 -#define wxFindReplaceData_SetFindString 2308 -#define wxFindReplaceData_SetReplaceString 2309 -#define wxFindReplaceData_destroy 2310 -#define wxMultiChoiceDialog_new_0 2311 -#define wxMultiChoiceDialog_new_5 2313 -#define wxMultiChoiceDialog_GetSelections 2314 -#define wxMultiChoiceDialog_SetSelections 2315 -#define wxMultiChoiceDialog_destroy 2316 -#define wxSingleChoiceDialog_new_0 2317 -#define wxSingleChoiceDialog_new_5 2319 -#define wxSingleChoiceDialog_GetSelection 2320 -#define wxSingleChoiceDialog_GetStringSelection 2321 -#define wxSingleChoiceDialog_SetSelection 2322 -#define wxSingleChoiceDialog_destroy 2323 -#define wxTextEntryDialog_new 2324 -#define wxTextEntryDialog_GetValue 2325 -#define wxTextEntryDialog_SetValue 2326 -#define wxTextEntryDialog_destroy 2327 -#define wxPasswordEntryDialog_new 2328 -#define wxPasswordEntryDialog_destroy 2329 -#define wxFontData_new_0 2330 -#define wxFontData_new_1 2331 -#define wxFontData_destruct 2332 -#define wxFontData_EnableEffects 2333 -#define wxFontData_GetAllowSymbols 2334 -#define wxFontData_GetColour 2335 -#define wxFontData_GetChosenFont 2336 -#define wxFontData_GetEnableEffects 2337 -#define wxFontData_GetInitialFont 2338 -#define wxFontData_GetShowHelp 2339 -#define wxFontData_SetAllowSymbols 2340 -#define wxFontData_SetChosenFont 2341 -#define wxFontData_SetColour 2342 -#define wxFontData_SetInitialFont 2343 -#define wxFontData_SetRange 2344 -#define wxFontData_SetShowHelp 2345 -#define wxFontDialog_new_0 2349 -#define wxFontDialog_new_2 2351 -#define wxFontDialog_Create 2353 -#define wxFontDialog_GetFontData 2354 -#define wxFontDialog_destroy 2356 -#define wxProgressDialog_new 2357 -#define wxProgressDialog_destruct 2358 -#define wxProgressDialog_Resume 2359 -#define wxProgressDialog_Update_2 2360 -#define wxProgressDialog_Update_0 2361 -#define wxMessageDialog_new 2362 -#define wxMessageDialog_destruct 2363 -#define wxPageSetupDialog_new 2364 -#define wxPageSetupDialog_destruct 2365 -#define wxPageSetupDialog_GetPageSetupData 2366 -#define wxPageSetupDialog_ShowModal 2367 -#define wxPageSetupDialogData_new_0 2368 -#define wxPageSetupDialogData_new_1_0 2369 -#define wxPageSetupDialogData_new_1_1 2370 -#define wxPageSetupDialogData_destruct 2371 -#define wxPageSetupDialogData_EnableHelp 2372 -#define wxPageSetupDialogData_EnableMargins 2373 -#define wxPageSetupDialogData_EnableOrientation 2374 -#define wxPageSetupDialogData_EnablePaper 2375 -#define wxPageSetupDialogData_EnablePrinter 2376 -#define wxPageSetupDialogData_GetDefaultMinMargins 2377 -#define wxPageSetupDialogData_GetEnableMargins 2378 -#define wxPageSetupDialogData_GetEnableOrientation 2379 -#define wxPageSetupDialogData_GetEnablePaper 2380 -#define wxPageSetupDialogData_GetEnablePrinter 2381 -#define wxPageSetupDialogData_GetEnableHelp 2382 -#define wxPageSetupDialogData_GetDefaultInfo 2383 -#define wxPageSetupDialogData_GetMarginTopLeft 2384 -#define wxPageSetupDialogData_GetMarginBottomRight 2385 -#define wxPageSetupDialogData_GetMinMarginTopLeft 2386 -#define wxPageSetupDialogData_GetMinMarginBottomRight 2387 -#define wxPageSetupDialogData_GetPaperId 2388 -#define wxPageSetupDialogData_GetPaperSize 2389 -#define wxPageSetupDialogData_GetPrintData 2391 -#define wxPageSetupDialogData_IsOk 2392 -#define wxPageSetupDialogData_SetDefaultInfo 2393 -#define wxPageSetupDialogData_SetDefaultMinMargins 2394 -#define wxPageSetupDialogData_SetMarginTopLeft 2395 -#define wxPageSetupDialogData_SetMarginBottomRight 2396 -#define wxPageSetupDialogData_SetMinMarginTopLeft 2397 -#define wxPageSetupDialogData_SetMinMarginBottomRight 2398 -#define wxPageSetupDialogData_SetPaperId 2399 -#define wxPageSetupDialogData_SetPaperSize_1_1 2400 -#define wxPageSetupDialogData_SetPaperSize_1_0 2401 -#define wxPageSetupDialogData_SetPrintData 2402 -#define wxPrintDialog_new_2_0 2403 -#define wxPrintDialog_new_2_1 2404 -#define wxPrintDialog_destruct 2405 -#define wxPrintDialog_GetPrintDialogData 2406 -#define wxPrintDialog_GetPrintDC 2407 -#define wxPrintDialogData_new_0 2408 -#define wxPrintDialogData_new_1_1 2409 -#define wxPrintDialogData_new_1_0 2410 -#define wxPrintDialogData_destruct 2411 -#define wxPrintDialogData_EnableHelp 2412 -#define wxPrintDialogData_EnablePageNumbers 2413 -#define wxPrintDialogData_EnablePrintToFile 2414 -#define wxPrintDialogData_EnableSelection 2415 -#define wxPrintDialogData_GetAllPages 2416 -#define wxPrintDialogData_GetCollate 2417 -#define wxPrintDialogData_GetFromPage 2418 -#define wxPrintDialogData_GetMaxPage 2419 -#define wxPrintDialogData_GetMinPage 2420 -#define wxPrintDialogData_GetNoCopies 2421 -#define wxPrintDialogData_GetPrintData 2422 -#define wxPrintDialogData_GetPrintToFile 2423 -#define wxPrintDialogData_GetSelection 2424 -#define wxPrintDialogData_GetToPage 2425 -#define wxPrintDialogData_IsOk 2426 -#define wxPrintDialogData_SetCollate 2427 -#define wxPrintDialogData_SetFromPage 2428 -#define wxPrintDialogData_SetMaxPage 2429 -#define wxPrintDialogData_SetMinPage 2430 -#define wxPrintDialogData_SetNoCopies 2431 -#define wxPrintDialogData_SetPrintData 2432 -#define wxPrintDialogData_SetPrintToFile 2433 -#define wxPrintDialogData_SetSelection 2434 -#define wxPrintDialogData_SetToPage 2435 -#define wxPrintData_new_0 2436 -#define wxPrintData_new_1 2437 -#define wxPrintData_destruct 2438 -#define wxPrintData_GetCollate 2439 -#define wxPrintData_GetBin 2440 -#define wxPrintData_GetColour 2441 -#define wxPrintData_GetDuplex 2442 -#define wxPrintData_GetNoCopies 2443 -#define wxPrintData_GetOrientation 2444 -#define wxPrintData_GetPaperId 2445 -#define wxPrintData_GetPrinterName 2446 -#define wxPrintData_GetQuality 2447 -#define wxPrintData_IsOk 2448 -#define wxPrintData_SetBin 2449 -#define wxPrintData_SetCollate 2450 -#define wxPrintData_SetColour 2451 -#define wxPrintData_SetDuplex 2452 -#define wxPrintData_SetNoCopies 2453 -#define wxPrintData_SetOrientation 2454 -#define wxPrintData_SetPaperId 2455 -#define wxPrintData_SetPrinterName 2456 -#define wxPrintData_SetQuality 2457 -#define wxPrintPreview_new_2 2460 -#define wxPrintPreview_new_3 2461 -#define wxPrintPreview_destruct 2463 -#define wxPrintPreview_GetCanvas 2464 -#define wxPrintPreview_GetCurrentPage 2465 -#define wxPrintPreview_GetFrame 2466 -#define wxPrintPreview_GetMaxPage 2467 -#define wxPrintPreview_GetMinPage 2468 -#define wxPrintPreview_GetPrintout 2469 -#define wxPrintPreview_GetPrintoutForPrinting 2470 -#define wxPrintPreview_IsOk 2471 -#define wxPrintPreview_PaintPage 2472 -#define wxPrintPreview_Print 2473 -#define wxPrintPreview_RenderPage 2474 -#define wxPrintPreview_SetCanvas 2475 -#define wxPrintPreview_SetCurrentPage 2476 -#define wxPrintPreview_SetFrame 2477 -#define wxPrintPreview_SetPrintout 2478 -#define wxPrintPreview_SetZoom 2479 -#define wxPreviewFrame_new 2480 -#define wxPreviewFrame_destruct 2481 -#define wxPreviewFrame_CreateControlBar 2482 -#define wxPreviewFrame_CreateCanvas 2483 -#define wxPreviewFrame_Initialize 2484 -#define wxPreviewFrame_OnCloseWindow 2485 -#define wxPreviewControlBar_new 2486 -#define wxPreviewControlBar_destruct 2487 -#define wxPreviewControlBar_CreateButtons 2488 -#define wxPreviewControlBar_GetPrintPreview 2489 -#define wxPreviewControlBar_GetZoomControl 2490 -#define wxPreviewControlBar_SetZoomControl 2491 -#define wxPrinter_new 2493 -#define wxPrinter_CreateAbortWindow 2494 -#define wxPrinter_GetAbort 2495 -#define wxPrinter_GetLastError 2496 -#define wxPrinter_GetPrintDialogData 2497 -#define wxPrinter_Print 2498 -#define wxPrinter_PrintDialog 2499 -#define wxPrinter_ReportError 2500 -#define wxPrinter_Setup 2501 -#define wxPrinter_destroy 2502 -#define wxXmlResource_new_1 2503 -#define wxXmlResource_new_2 2504 -#define wxXmlResource_destruct 2505 -#define wxXmlResource_AttachUnknownControl 2506 -#define wxXmlResource_ClearHandlers 2507 -#define wxXmlResource_CompareVersion 2508 -#define wxXmlResource_Get 2509 -#define wxXmlResource_GetFlags 2510 -#define wxXmlResource_GetVersion 2511 -#define wxXmlResource_GetXRCID 2512 -#define wxXmlResource_InitAllHandlers 2513 -#define wxXmlResource_Load 2514 -#define wxXmlResource_LoadBitmap 2515 -#define wxXmlResource_LoadDialog_2 2516 -#define wxXmlResource_LoadDialog_3 2517 -#define wxXmlResource_LoadFrame_2 2518 -#define wxXmlResource_LoadFrame_3 2519 -#define wxXmlResource_LoadIcon 2520 -#define wxXmlResource_LoadMenu 2521 -#define wxXmlResource_LoadMenuBar_2 2522 -#define wxXmlResource_LoadMenuBar_1 2523 -#define wxXmlResource_LoadPanel_2 2524 -#define wxXmlResource_LoadPanel_3 2525 -#define wxXmlResource_LoadToolBar 2526 -#define wxXmlResource_Set 2527 -#define wxXmlResource_SetFlags 2528 -#define wxXmlResource_Unload 2529 -#define wxXmlResource_xrcctrl 2530 -#define wxHtmlEasyPrinting_new 2531 -#define wxHtmlEasyPrinting_destruct 2532 -#define wxHtmlEasyPrinting_GetPrintData 2533 -#define wxHtmlEasyPrinting_GetPageSetupData 2534 -#define wxHtmlEasyPrinting_PreviewFile 2535 -#define wxHtmlEasyPrinting_PreviewText 2536 -#define wxHtmlEasyPrinting_PrintFile 2537 -#define wxHtmlEasyPrinting_PrintText 2538 -#define wxHtmlEasyPrinting_PageSetup 2539 -#define wxHtmlEasyPrinting_SetFonts 2540 -#define wxHtmlEasyPrinting_SetHeader 2541 -#define wxHtmlEasyPrinting_SetFooter 2542 -#define wxGLCanvas_new_2 2544 -#define wxGLCanvas_new_3_1 2545 -#define wxGLCanvas_new_3_0 2546 -#define wxGLCanvas_GetContext 2547 -#define wxGLCanvas_SetCurrent 2549 -#define wxGLCanvas_SwapBuffers 2550 -#define wxGLCanvas_destroy 2551 -#define wxAuiManager_new 2552 -#define wxAuiManager_destruct 2553 -#define wxAuiManager_AddPane_2_1 2554 -#define wxAuiManager_AddPane_3 2555 -#define wxAuiManager_AddPane_2_0 2556 -#define wxAuiManager_DetachPane 2557 -#define wxAuiManager_GetAllPanes 2558 -#define wxAuiManager_GetArtProvider 2559 -#define wxAuiManager_GetDockSizeConstraint 2560 -#define wxAuiManager_GetFlags 2561 -#define wxAuiManager_GetManagedWindow 2562 -#define wxAuiManager_GetManager 2563 -#define wxAuiManager_GetPane_1_1 2564 -#define wxAuiManager_GetPane_1_0 2565 -#define wxAuiManager_HideHint 2566 -#define wxAuiManager_InsertPane 2567 -#define wxAuiManager_LoadPaneInfo 2568 -#define wxAuiManager_LoadPerspective 2569 -#define wxAuiManager_SavePaneInfo 2570 -#define wxAuiManager_SavePerspective 2571 -#define wxAuiManager_SetArtProvider 2572 -#define wxAuiManager_SetDockSizeConstraint 2573 -#define wxAuiManager_SetFlags 2574 -#define wxAuiManager_SetManagedWindow 2575 -#define wxAuiManager_ShowHint 2576 -#define wxAuiManager_UnInit 2577 -#define wxAuiManager_Update 2578 -#define wxAuiPaneInfo_new_0 2579 -#define wxAuiPaneInfo_new_1 2580 -#define wxAuiPaneInfo_destruct 2581 -#define wxAuiPaneInfo_BestSize_1 2582 -#define wxAuiPaneInfo_BestSize_2 2583 -#define wxAuiPaneInfo_Bottom 2584 -#define wxAuiPaneInfo_BottomDockable 2585 -#define wxAuiPaneInfo_Caption 2586 -#define wxAuiPaneInfo_CaptionVisible 2587 -#define wxAuiPaneInfo_Centre 2588 -#define wxAuiPaneInfo_CentrePane 2589 -#define wxAuiPaneInfo_CloseButton 2590 -#define wxAuiPaneInfo_DefaultPane 2591 -#define wxAuiPaneInfo_DestroyOnClose 2592 -#define wxAuiPaneInfo_Direction 2593 -#define wxAuiPaneInfo_Dock 2594 -#define wxAuiPaneInfo_Dockable 2595 -#define wxAuiPaneInfo_Fixed 2596 -#define wxAuiPaneInfo_Float 2597 -#define wxAuiPaneInfo_Floatable 2598 -#define wxAuiPaneInfo_FloatingPosition_1 2599 -#define wxAuiPaneInfo_FloatingPosition_2 2600 -#define wxAuiPaneInfo_FloatingSize_1 2601 -#define wxAuiPaneInfo_FloatingSize_2 2602 -#define wxAuiPaneInfo_Gripper 2603 -#define wxAuiPaneInfo_GripperTop 2604 -#define wxAuiPaneInfo_HasBorder 2605 -#define wxAuiPaneInfo_HasCaption 2606 -#define wxAuiPaneInfo_HasCloseButton 2607 -#define wxAuiPaneInfo_HasFlag 2608 -#define wxAuiPaneInfo_HasGripper 2609 -#define wxAuiPaneInfo_HasGripperTop 2610 -#define wxAuiPaneInfo_HasMaximizeButton 2611 -#define wxAuiPaneInfo_HasMinimizeButton 2612 -#define wxAuiPaneInfo_HasPinButton 2613 -#define wxAuiPaneInfo_Hide 2614 -#define wxAuiPaneInfo_IsBottomDockable 2615 -#define wxAuiPaneInfo_IsDocked 2616 -#define wxAuiPaneInfo_IsFixed 2617 -#define wxAuiPaneInfo_IsFloatable 2618 -#define wxAuiPaneInfo_IsFloating 2619 -#define wxAuiPaneInfo_IsLeftDockable 2620 -#define wxAuiPaneInfo_IsMovable 2621 -#define wxAuiPaneInfo_IsOk 2622 -#define wxAuiPaneInfo_IsResizable 2623 -#define wxAuiPaneInfo_IsRightDockable 2624 -#define wxAuiPaneInfo_IsShown 2625 -#define wxAuiPaneInfo_IsToolbar 2626 -#define wxAuiPaneInfo_IsTopDockable 2627 -#define wxAuiPaneInfo_Layer 2628 -#define wxAuiPaneInfo_Left 2629 -#define wxAuiPaneInfo_LeftDockable 2630 -#define wxAuiPaneInfo_MaxSize_1 2631 -#define wxAuiPaneInfo_MaxSize_2 2632 -#define wxAuiPaneInfo_MaximizeButton 2633 -#define wxAuiPaneInfo_MinSize_1 2634 -#define wxAuiPaneInfo_MinSize_2 2635 -#define wxAuiPaneInfo_MinimizeButton 2636 -#define wxAuiPaneInfo_Movable 2637 -#define wxAuiPaneInfo_Name 2638 -#define wxAuiPaneInfo_PaneBorder 2639 -#define wxAuiPaneInfo_PinButton 2640 -#define wxAuiPaneInfo_Position 2641 -#define wxAuiPaneInfo_Resizable 2642 -#define wxAuiPaneInfo_Right 2643 -#define wxAuiPaneInfo_RightDockable 2644 -#define wxAuiPaneInfo_Row 2645 -#define wxAuiPaneInfo_SafeSet 2646 -#define wxAuiPaneInfo_SetFlag 2647 -#define wxAuiPaneInfo_Show 2648 -#define wxAuiPaneInfo_ToolbarPane 2649 -#define wxAuiPaneInfo_Top 2650 -#define wxAuiPaneInfo_TopDockable 2651 -#define wxAuiPaneInfo_Window 2652 -#define wxAuiPaneInfo_GetWindow 2653 -#define wxAuiPaneInfo_GetFrame 2654 -#define wxAuiPaneInfo_GetDirection 2655 -#define wxAuiPaneInfo_GetLayer 2656 -#define wxAuiPaneInfo_GetRow 2657 -#define wxAuiPaneInfo_GetPosition 2658 -#define wxAuiPaneInfo_GetFloatingPosition 2659 -#define wxAuiPaneInfo_GetFloatingSize 2660 -#define wxAuiNotebook_new_0 2661 -#define wxAuiNotebook_new_2 2662 -#define wxAuiNotebook_AddPage 2663 -#define wxAuiNotebook_Create 2664 -#define wxAuiNotebook_DeletePage 2665 -#define wxAuiNotebook_GetArtProvider 2666 -#define wxAuiNotebook_GetPage 2667 -#define wxAuiNotebook_GetPageBitmap 2668 -#define wxAuiNotebook_GetPageCount 2669 -#define wxAuiNotebook_GetPageIndex 2670 -#define wxAuiNotebook_GetPageText 2671 -#define wxAuiNotebook_GetSelection 2672 -#define wxAuiNotebook_InsertPage 2673 -#define wxAuiNotebook_RemovePage 2674 -#define wxAuiNotebook_SetArtProvider 2675 -#define wxAuiNotebook_SetFont 2676 -#define wxAuiNotebook_SetPageBitmap 2677 -#define wxAuiNotebook_SetPageText 2678 -#define wxAuiNotebook_SetSelection 2679 -#define wxAuiNotebook_SetTabCtrlHeight 2680 -#define wxAuiNotebook_SetUniformBitmapSize 2681 -#define wxAuiNotebook_destroy 2682 -#define wxAuiTabArt_SetFlags 2683 -#define wxAuiTabArt_SetMeasuringFont 2684 -#define wxAuiTabArt_SetNormalFont 2685 -#define wxAuiTabArt_SetSelectedFont 2686 -#define wxAuiTabArt_SetColour 2687 -#define wxAuiTabArt_SetActiveColour 2688 -#define wxAuiDockArt_GetColour 2689 -#define wxAuiDockArt_GetFont 2690 -#define wxAuiDockArt_GetMetric 2691 -#define wxAuiDockArt_SetColour 2692 -#define wxAuiDockArt_SetFont 2693 -#define wxAuiDockArt_SetMetric 2694 -#define wxAuiSimpleTabArt_new 2695 -#define wxAuiSimpleTabArt_destroy 2696 -#define wxMDIParentFrame_new_0 2697 -#define wxMDIParentFrame_new_4 2698 -#define wxMDIParentFrame_destruct 2699 -#define wxMDIParentFrame_ActivateNext 2700 -#define wxMDIParentFrame_ActivatePrevious 2701 -#define wxMDIParentFrame_ArrangeIcons 2702 -#define wxMDIParentFrame_Cascade 2703 -#define wxMDIParentFrame_Create 2704 -#define wxMDIParentFrame_GetActiveChild 2705 -#define wxMDIParentFrame_GetClientWindow 2706 -#define wxMDIParentFrame_Tile 2707 -#define wxMDIChildFrame_new_0 2708 -#define wxMDIChildFrame_new_4 2709 -#define wxMDIChildFrame_destruct 2710 -#define wxMDIChildFrame_Activate 2711 -#define wxMDIChildFrame_Create 2712 -#define wxMDIChildFrame_Maximize 2713 -#define wxMDIChildFrame_Restore 2714 -#define wxMDIClientWindow_new_0 2715 -#define wxMDIClientWindow_new_2 2716 -#define wxMDIClientWindow_destruct 2717 -#define wxMDIClientWindow_CreateClient 2718 -#define wxLayoutAlgorithm_new 2719 -#define wxLayoutAlgorithm_LayoutFrame 2720 -#define wxLayoutAlgorithm_LayoutMDIFrame 2721 -#define wxLayoutAlgorithm_LayoutWindow 2722 -#define wxLayoutAlgorithm_destroy 2723 -#define wxEvent_GetId 2724 -#define wxEvent_GetSkipped 2725 -#define wxEvent_GetTimestamp 2726 -#define wxEvent_IsCommandEvent 2727 -#define wxEvent_ResumePropagation 2728 -#define wxEvent_ShouldPropagate 2729 -#define wxEvent_Skip 2730 -#define wxEvent_StopPropagation 2731 -#define wxCommandEvent_getClientData 2732 -#define wxCommandEvent_GetExtraLong 2733 -#define wxCommandEvent_GetInt 2734 -#define wxCommandEvent_GetSelection 2735 -#define wxCommandEvent_GetString 2736 -#define wxCommandEvent_IsChecked 2737 -#define wxCommandEvent_IsSelection 2738 -#define wxCommandEvent_SetInt 2739 -#define wxCommandEvent_SetString 2740 -#define wxScrollEvent_GetOrientation 2741 -#define wxScrollEvent_GetPosition 2742 -#define wxScrollWinEvent_GetOrientation 2743 -#define wxScrollWinEvent_GetPosition 2744 -#define wxMouseEvent_AltDown 2745 -#define wxMouseEvent_Button 2746 -#define wxMouseEvent_ButtonDClick 2747 -#define wxMouseEvent_ButtonDown 2748 -#define wxMouseEvent_ButtonUp 2749 -#define wxMouseEvent_CmdDown 2750 -#define wxMouseEvent_ControlDown 2751 -#define wxMouseEvent_Dragging 2752 -#define wxMouseEvent_Entering 2753 -#define wxMouseEvent_GetButton 2754 -#define wxMouseEvent_GetPosition 2757 -#define wxMouseEvent_GetLogicalPosition 2758 -#define wxMouseEvent_GetLinesPerAction 2759 -#define wxMouseEvent_GetWheelRotation 2760 -#define wxMouseEvent_GetWheelDelta 2761 -#define wxMouseEvent_GetX 2762 -#define wxMouseEvent_GetY 2763 -#define wxMouseEvent_IsButton 2764 -#define wxMouseEvent_IsPageScroll 2765 -#define wxMouseEvent_Leaving 2766 -#define wxMouseEvent_LeftDClick 2767 -#define wxMouseEvent_LeftDown 2768 -#define wxMouseEvent_LeftIsDown 2769 -#define wxMouseEvent_LeftUp 2770 -#define wxMouseEvent_MetaDown 2771 -#define wxMouseEvent_MiddleDClick 2772 -#define wxMouseEvent_MiddleDown 2773 -#define wxMouseEvent_MiddleIsDown 2774 -#define wxMouseEvent_MiddleUp 2775 -#define wxMouseEvent_Moving 2776 -#define wxMouseEvent_RightDClick 2777 -#define wxMouseEvent_RightDown 2778 -#define wxMouseEvent_RightIsDown 2779 -#define wxMouseEvent_RightUp 2780 -#define wxMouseEvent_ShiftDown 2781 -#define wxSetCursorEvent_GetCursor 2782 -#define wxSetCursorEvent_GetX 2783 -#define wxSetCursorEvent_GetY 2784 -#define wxSetCursorEvent_HasCursor 2785 -#define wxSetCursorEvent_SetCursor 2786 -#define wxKeyEvent_AltDown 2787 -#define wxKeyEvent_CmdDown 2788 -#define wxKeyEvent_ControlDown 2789 -#define wxKeyEvent_GetKeyCode 2790 -#define wxKeyEvent_GetModifiers 2791 -#define wxKeyEvent_GetPosition 2794 -#define wxKeyEvent_GetRawKeyCode 2795 -#define wxKeyEvent_GetRawKeyFlags 2796 -#define wxKeyEvent_GetUnicodeKey 2797 -#define wxKeyEvent_GetX 2798 -#define wxKeyEvent_GetY 2799 -#define wxKeyEvent_HasModifiers 2800 -#define wxKeyEvent_MetaDown 2801 -#define wxKeyEvent_ShiftDown 2802 -#define wxSizeEvent_GetSize 2803 -#define wxMoveEvent_GetPosition 2804 -#define wxEraseEvent_GetDC 2805 -#define wxFocusEvent_GetWindow 2806 -#define wxChildFocusEvent_GetWindow 2807 -#define wxMenuEvent_GetMenu 2808 -#define wxMenuEvent_GetMenuId 2809 -#define wxMenuEvent_IsPopup 2810 -#define wxCloseEvent_CanVeto 2811 -#define wxCloseEvent_GetLoggingOff 2812 -#define wxCloseEvent_SetCanVeto 2813 -#define wxCloseEvent_SetLoggingOff 2814 -#define wxCloseEvent_Veto 2815 -#define wxShowEvent_SetShow 2816 -#define wxShowEvent_GetShow 2817 -#define wxIconizeEvent_Iconized 2818 -#define wxJoystickEvent_ButtonDown 2819 -#define wxJoystickEvent_ButtonIsDown 2820 -#define wxJoystickEvent_ButtonUp 2821 -#define wxJoystickEvent_GetButtonChange 2822 -#define wxJoystickEvent_GetButtonState 2823 -#define wxJoystickEvent_GetJoystick 2824 -#define wxJoystickEvent_GetPosition 2825 -#define wxJoystickEvent_GetZPosition 2826 -#define wxJoystickEvent_IsButton 2827 -#define wxJoystickEvent_IsMove 2828 -#define wxJoystickEvent_IsZMove 2829 -#define wxUpdateUIEvent_CanUpdate 2830 -#define wxUpdateUIEvent_Check 2831 -#define wxUpdateUIEvent_Enable 2832 -#define wxUpdateUIEvent_Show 2833 -#define wxUpdateUIEvent_GetChecked 2834 -#define wxUpdateUIEvent_GetEnabled 2835 -#define wxUpdateUIEvent_GetShown 2836 -#define wxUpdateUIEvent_GetSetChecked 2837 -#define wxUpdateUIEvent_GetSetEnabled 2838 -#define wxUpdateUIEvent_GetSetShown 2839 -#define wxUpdateUIEvent_GetSetText 2840 -#define wxUpdateUIEvent_GetText 2841 -#define wxUpdateUIEvent_GetMode 2842 -#define wxUpdateUIEvent_GetUpdateInterval 2843 -#define wxUpdateUIEvent_ResetUpdateTime 2844 -#define wxUpdateUIEvent_SetMode 2845 -#define wxUpdateUIEvent_SetText 2846 -#define wxUpdateUIEvent_SetUpdateInterval 2847 -#define wxMouseCaptureChangedEvent_GetCapturedWindow 2848 -#define wxPaletteChangedEvent_SetChangedWindow 2849 -#define wxPaletteChangedEvent_GetChangedWindow 2850 -#define wxQueryNewPaletteEvent_SetPaletteRealized 2851 -#define wxQueryNewPaletteEvent_GetPaletteRealized 2852 -#define wxNavigationKeyEvent_GetDirection 2853 -#define wxNavigationKeyEvent_SetDirection 2854 -#define wxNavigationKeyEvent_IsWindowChange 2855 -#define wxNavigationKeyEvent_SetWindowChange 2856 -#define wxNavigationKeyEvent_IsFromTab 2857 -#define wxNavigationKeyEvent_SetFromTab 2858 -#define wxNavigationKeyEvent_GetCurrentFocus 2859 -#define wxNavigationKeyEvent_SetCurrentFocus 2860 -#define wxHelpEvent_GetOrigin 2861 -#define wxHelpEvent_GetPosition 2862 -#define wxHelpEvent_SetOrigin 2863 -#define wxHelpEvent_SetPosition 2864 -#define wxContextMenuEvent_GetPosition 2865 -#define wxContextMenuEvent_SetPosition 2866 -#define wxIdleEvent_CanSend 2867 -#define wxIdleEvent_GetMode 2868 -#define wxIdleEvent_RequestMore 2869 -#define wxIdleEvent_MoreRequested 2870 -#define wxIdleEvent_SetMode 2871 -#define wxGridEvent_AltDown 2872 -#define wxGridEvent_ControlDown 2873 -#define wxGridEvent_GetCol 2874 -#define wxGridEvent_GetPosition 2875 -#define wxGridEvent_GetRow 2876 -#define wxGridEvent_MetaDown 2877 -#define wxGridEvent_Selecting 2878 -#define wxGridEvent_ShiftDown 2879 -#define wxNotifyEvent_Allow 2880 -#define wxNotifyEvent_IsAllowed 2881 -#define wxNotifyEvent_Veto 2882 -#define wxSashEvent_GetEdge 2883 -#define wxSashEvent_GetDragRect 2884 -#define wxSashEvent_GetDragStatus 2885 -#define wxListEvent_GetCacheFrom 2886 -#define wxListEvent_GetCacheTo 2887 -#define wxListEvent_GetKeyCode 2888 -#define wxListEvent_GetIndex 2889 -#define wxListEvent_GetColumn 2890 -#define wxListEvent_GetPoint 2891 -#define wxListEvent_GetLabel 2892 -#define wxListEvent_GetText 2893 -#define wxListEvent_GetImage 2894 -#define wxListEvent_GetData 2895 -#define wxListEvent_GetMask 2896 -#define wxListEvent_GetItem 2897 -#define wxListEvent_IsEditCancelled 2898 -#define wxDateEvent_GetDate 2899 -#define wxCalendarEvent_GetWeekDay 2900 -#define wxFileDirPickerEvent_GetPath 2901 -#define wxColourPickerEvent_GetColour 2902 -#define wxFontPickerEvent_GetFont 2903 -#define wxStyledTextEvent_GetPosition 2904 -#define wxStyledTextEvent_GetKey 2905 -#define wxStyledTextEvent_GetModifiers 2906 -#define wxStyledTextEvent_GetModificationType 2907 -#define wxStyledTextEvent_GetText 2908 -#define wxStyledTextEvent_GetLength 2909 -#define wxStyledTextEvent_GetLinesAdded 2910 -#define wxStyledTextEvent_GetLine 2911 -#define wxStyledTextEvent_GetFoldLevelNow 2912 -#define wxStyledTextEvent_GetFoldLevelPrev 2913 -#define wxStyledTextEvent_GetMargin 2914 -#define wxStyledTextEvent_GetMessage 2915 -#define wxStyledTextEvent_GetWParam 2916 -#define wxStyledTextEvent_GetLParam 2917 -#define wxStyledTextEvent_GetListType 2918 -#define wxStyledTextEvent_GetX 2919 -#define wxStyledTextEvent_GetY 2920 -#define wxStyledTextEvent_GetDragText 2921 -#define wxStyledTextEvent_GetDragAllowMove 2922 -#define wxStyledTextEvent_GetDragResult 2923 -#define wxStyledTextEvent_GetShift 2924 -#define wxStyledTextEvent_GetControl 2925 -#define wxStyledTextEvent_GetAlt 2926 -#define utils_wxGetKeyState 2927 -#define utils_wxGetMousePosition 2928 -#define utils_wxGetMouseState 2929 -#define utils_wxSetDetectableAutoRepeat 2930 -#define utils_wxBell 2931 -#define utils_wxFindMenuItemId 2932 -#define utils_wxGenericFindWindowAtPoint 2933 -#define utils_wxFindWindowAtPoint 2934 -#define utils_wxBeginBusyCursor 2935 -#define utils_wxEndBusyCursor 2936 -#define utils_wxIsBusy 2937 -#define utils_wxShutdown 2938 -#define utils_wxShell 2939 -#define utils_wxLaunchDefaultBrowser 2940 -#define utils_wxGetEmailAddress 2941 -#define utils_wxGetUserId 2942 -#define utils_wxGetHomeDir 2943 -#define utils_wxNewId 2944 -#define utils_wxRegisterId 2945 -#define utils_wxGetCurrentId 2946 -#define utils_wxGetOsDescription 2947 -#define utils_wxIsPlatformLittleEndian 2948 -#define utils_wxIsPlatform64Bit 2949 -#define gdicmn_wxDisplaySize 2950 -#define gdicmn_wxSetCursor 2951 -#define wxPrintout_new 2952 -#define wxPrintout_destruct 2953 -#define wxPrintout_GetDC 2954 -#define wxPrintout_GetPageSizeMM 2955 -#define wxPrintout_GetPageSizePixels 2956 -#define wxPrintout_GetPaperRectPixels 2957 -#define wxPrintout_GetPPIPrinter 2958 -#define wxPrintout_GetPPIScreen 2959 -#define wxPrintout_GetTitle 2960 -#define wxPrintout_IsPreview 2961 -#define wxPrintout_FitThisSizeToPaper 2962 -#define wxPrintout_FitThisSizeToPage 2963 -#define wxPrintout_FitThisSizeToPageMargins 2964 -#define wxPrintout_MapScreenSizeToPaper 2965 -#define wxPrintout_MapScreenSizeToPage 2966 -#define wxPrintout_MapScreenSizeToPageMargins 2967 -#define wxPrintout_MapScreenSizeToDevice 2968 -#define wxPrintout_GetLogicalPaperRect 2969 -#define wxPrintout_GetLogicalPageRect 2970 -#define wxPrintout_GetLogicalPageMarginsRect 2971 -#define wxPrintout_SetLogicalOrigin 2972 -#define wxPrintout_OffsetLogicalOrigin 2973 -#define wxStyledTextCtrl_new_2 2974 -#define wxStyledTextCtrl_new_0 2975 -#define wxStyledTextCtrl_destruct 2976 -#define wxStyledTextCtrl_Create 2977 -#define wxStyledTextCtrl_AddText 2978 -#define wxStyledTextCtrl_AddStyledText 2979 -#define wxStyledTextCtrl_InsertText 2980 -#define wxStyledTextCtrl_ClearAll 2981 -#define wxStyledTextCtrl_ClearDocumentStyle 2982 -#define wxStyledTextCtrl_GetLength 2983 -#define wxStyledTextCtrl_GetCharAt 2984 -#define wxStyledTextCtrl_GetCurrentPos 2985 -#define wxStyledTextCtrl_GetAnchor 2986 -#define wxStyledTextCtrl_GetStyleAt 2987 -#define wxStyledTextCtrl_Redo 2988 -#define wxStyledTextCtrl_SetUndoCollection 2989 -#define wxStyledTextCtrl_SelectAll 2990 -#define wxStyledTextCtrl_SetSavePoint 2991 -#define wxStyledTextCtrl_GetStyledText 2992 -#define wxStyledTextCtrl_CanRedo 2993 -#define wxStyledTextCtrl_MarkerLineFromHandle 2994 -#define wxStyledTextCtrl_MarkerDeleteHandle 2995 -#define wxStyledTextCtrl_GetUndoCollection 2996 -#define wxStyledTextCtrl_GetViewWhiteSpace 2997 -#define wxStyledTextCtrl_SetViewWhiteSpace 2998 -#define wxStyledTextCtrl_PositionFromPoint 2999 -#define wxStyledTextCtrl_PositionFromPointClose 3000 -#define wxStyledTextCtrl_GotoLine 3001 -#define wxStyledTextCtrl_GotoPos 3002 -#define wxStyledTextCtrl_SetAnchor 3003 -#define wxStyledTextCtrl_GetCurLine 3004 -#define wxStyledTextCtrl_GetEndStyled 3005 -#define wxStyledTextCtrl_ConvertEOLs 3006 -#define wxStyledTextCtrl_GetEOLMode 3007 -#define wxStyledTextCtrl_SetEOLMode 3008 -#define wxStyledTextCtrl_StartStyling 3009 -#define wxStyledTextCtrl_SetStyling 3010 -#define wxStyledTextCtrl_GetBufferedDraw 3011 -#define wxStyledTextCtrl_SetBufferedDraw 3012 -#define wxStyledTextCtrl_SetTabWidth 3013 -#define wxStyledTextCtrl_GetTabWidth 3014 -#define wxStyledTextCtrl_SetCodePage 3015 -#define wxStyledTextCtrl_MarkerDefine 3016 -#define wxStyledTextCtrl_MarkerSetForeground 3017 -#define wxStyledTextCtrl_MarkerSetBackground 3018 -#define wxStyledTextCtrl_MarkerAdd 3019 -#define wxStyledTextCtrl_MarkerDelete 3020 -#define wxStyledTextCtrl_MarkerDeleteAll 3021 -#define wxStyledTextCtrl_MarkerGet 3022 -#define wxStyledTextCtrl_MarkerNext 3023 -#define wxStyledTextCtrl_MarkerPrevious 3024 -#define wxStyledTextCtrl_MarkerDefineBitmap 3025 -#define wxStyledTextCtrl_MarkerAddSet 3026 -#define wxStyledTextCtrl_MarkerSetAlpha 3027 -#define wxStyledTextCtrl_SetMarginType 3028 -#define wxStyledTextCtrl_GetMarginType 3029 -#define wxStyledTextCtrl_SetMarginWidth 3030 -#define wxStyledTextCtrl_GetMarginWidth 3031 -#define wxStyledTextCtrl_SetMarginMask 3032 -#define wxStyledTextCtrl_GetMarginMask 3033 -#define wxStyledTextCtrl_SetMarginSensitive 3034 -#define wxStyledTextCtrl_GetMarginSensitive 3035 -#define wxStyledTextCtrl_StyleClearAll 3036 -#define wxStyledTextCtrl_StyleSetForeground 3037 -#define wxStyledTextCtrl_StyleSetBackground 3038 -#define wxStyledTextCtrl_StyleSetBold 3039 -#define wxStyledTextCtrl_StyleSetItalic 3040 -#define wxStyledTextCtrl_StyleSetSize 3041 -#define wxStyledTextCtrl_StyleSetFaceName 3042 -#define wxStyledTextCtrl_StyleSetEOLFilled 3043 -#define wxStyledTextCtrl_StyleResetDefault 3044 -#define wxStyledTextCtrl_StyleSetUnderline 3045 -#define wxStyledTextCtrl_StyleSetCase 3046 -#define wxStyledTextCtrl_StyleSetHotSpot 3047 -#define wxStyledTextCtrl_SetSelForeground 3048 -#define wxStyledTextCtrl_SetSelBackground 3049 -#define wxStyledTextCtrl_GetSelAlpha 3050 -#define wxStyledTextCtrl_SetSelAlpha 3051 -#define wxStyledTextCtrl_SetCaretForeground 3052 -#define wxStyledTextCtrl_CmdKeyAssign 3053 -#define wxStyledTextCtrl_CmdKeyClear 3054 -#define wxStyledTextCtrl_CmdKeyClearAll 3055 -#define wxStyledTextCtrl_SetStyleBytes 3056 -#define wxStyledTextCtrl_StyleSetVisible 3057 -#define wxStyledTextCtrl_GetCaretPeriod 3058 -#define wxStyledTextCtrl_SetCaretPeriod 3059 -#define wxStyledTextCtrl_SetWordChars 3060 -#define wxStyledTextCtrl_BeginUndoAction 3061 -#define wxStyledTextCtrl_EndUndoAction 3062 -#define wxStyledTextCtrl_IndicatorSetStyle 3063 -#define wxStyledTextCtrl_IndicatorGetStyle 3064 -#define wxStyledTextCtrl_IndicatorSetForeground 3065 -#define wxStyledTextCtrl_IndicatorGetForeground 3066 -#define wxStyledTextCtrl_SetWhitespaceForeground 3067 -#define wxStyledTextCtrl_SetWhitespaceBackground 3068 -#define wxStyledTextCtrl_GetStyleBits 3069 -#define wxStyledTextCtrl_SetLineState 3070 -#define wxStyledTextCtrl_GetLineState 3071 -#define wxStyledTextCtrl_GetMaxLineState 3072 -#define wxStyledTextCtrl_GetCaretLineVisible 3073 -#define wxStyledTextCtrl_SetCaretLineVisible 3074 -#define wxStyledTextCtrl_GetCaretLineBackground 3075 -#define wxStyledTextCtrl_SetCaretLineBackground 3076 -#define wxStyledTextCtrl_AutoCompShow 3077 -#define wxStyledTextCtrl_AutoCompCancel 3078 -#define wxStyledTextCtrl_AutoCompActive 3079 -#define wxStyledTextCtrl_AutoCompPosStart 3080 -#define wxStyledTextCtrl_AutoCompComplete 3081 -#define wxStyledTextCtrl_AutoCompStops 3082 -#define wxStyledTextCtrl_AutoCompSetSeparator 3083 -#define wxStyledTextCtrl_AutoCompGetSeparator 3084 -#define wxStyledTextCtrl_AutoCompSelect 3085 -#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3086 -#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3087 -#define wxStyledTextCtrl_AutoCompSetFillUps 3088 -#define wxStyledTextCtrl_AutoCompSetChooseSingle 3089 -#define wxStyledTextCtrl_AutoCompGetChooseSingle 3090 -#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3091 -#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3092 -#define wxStyledTextCtrl_UserListShow 3093 -#define wxStyledTextCtrl_AutoCompSetAutoHide 3094 -#define wxStyledTextCtrl_AutoCompGetAutoHide 3095 -#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3096 -#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3097 -#define wxStyledTextCtrl_RegisterImage 3098 -#define wxStyledTextCtrl_ClearRegisteredImages 3099 -#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3100 -#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3101 -#define wxStyledTextCtrl_AutoCompSetMaxWidth 3102 -#define wxStyledTextCtrl_AutoCompGetMaxWidth 3103 -#define wxStyledTextCtrl_AutoCompSetMaxHeight 3104 -#define wxStyledTextCtrl_AutoCompGetMaxHeight 3105 -#define wxStyledTextCtrl_SetIndent 3106 -#define wxStyledTextCtrl_GetIndent 3107 -#define wxStyledTextCtrl_SetUseTabs 3108 -#define wxStyledTextCtrl_GetUseTabs 3109 -#define wxStyledTextCtrl_SetLineIndentation 3110 -#define wxStyledTextCtrl_GetLineIndentation 3111 -#define wxStyledTextCtrl_GetLineIndentPosition 3112 -#define wxStyledTextCtrl_GetColumn 3113 -#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3114 -#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3115 -#define wxStyledTextCtrl_SetIndentationGuides 3116 -#define wxStyledTextCtrl_GetIndentationGuides 3117 -#define wxStyledTextCtrl_SetHighlightGuide 3118 -#define wxStyledTextCtrl_GetHighlightGuide 3119 -#define wxStyledTextCtrl_GetLineEndPosition 3120 -#define wxStyledTextCtrl_GetCodePage 3121 -#define wxStyledTextCtrl_GetCaretForeground 3122 -#define wxStyledTextCtrl_GetReadOnly 3123 -#define wxStyledTextCtrl_SetCurrentPos 3124 -#define wxStyledTextCtrl_SetSelectionStart 3125 -#define wxStyledTextCtrl_GetSelectionStart 3126 -#define wxStyledTextCtrl_SetSelectionEnd 3127 -#define wxStyledTextCtrl_GetSelectionEnd 3128 -#define wxStyledTextCtrl_SetPrintMagnification 3129 -#define wxStyledTextCtrl_GetPrintMagnification 3130 -#define wxStyledTextCtrl_SetPrintColourMode 3131 -#define wxStyledTextCtrl_GetPrintColourMode 3132 -#define wxStyledTextCtrl_FindText 3133 -#define wxStyledTextCtrl_FormatRange 3134 -#define wxStyledTextCtrl_GetFirstVisibleLine 3135 -#define wxStyledTextCtrl_GetLine 3136 -#define wxStyledTextCtrl_GetLineCount 3137 -#define wxStyledTextCtrl_SetMarginLeft 3138 -#define wxStyledTextCtrl_GetMarginLeft 3139 -#define wxStyledTextCtrl_SetMarginRight 3140 -#define wxStyledTextCtrl_GetMarginRight 3141 -#define wxStyledTextCtrl_GetModify 3142 -#define wxStyledTextCtrl_SetSelection 3143 -#define wxStyledTextCtrl_GetSelectedText 3144 -#define wxStyledTextCtrl_GetTextRange 3145 -#define wxStyledTextCtrl_HideSelection 3146 -#define wxStyledTextCtrl_LineFromPosition 3147 -#define wxStyledTextCtrl_PositionFromLine 3148 -#define wxStyledTextCtrl_LineScroll 3149 -#define wxStyledTextCtrl_EnsureCaretVisible 3150 -#define wxStyledTextCtrl_ReplaceSelection 3151 -#define wxStyledTextCtrl_SetReadOnly 3152 -#define wxStyledTextCtrl_CanPaste 3153 -#define wxStyledTextCtrl_CanUndo 3154 -#define wxStyledTextCtrl_EmptyUndoBuffer 3155 -#define wxStyledTextCtrl_Undo 3156 -#define wxStyledTextCtrl_Cut 3157 -#define wxStyledTextCtrl_Copy 3158 -#define wxStyledTextCtrl_Paste 3159 -#define wxStyledTextCtrl_Clear 3160 -#define wxStyledTextCtrl_SetText 3161 -#define wxStyledTextCtrl_GetText 3162 -#define wxStyledTextCtrl_GetTextLength 3163 -#define wxStyledTextCtrl_GetOvertype 3164 -#define wxStyledTextCtrl_SetCaretWidth 3165 -#define wxStyledTextCtrl_GetCaretWidth 3166 -#define wxStyledTextCtrl_SetTargetStart 3167 -#define wxStyledTextCtrl_GetTargetStart 3168 -#define wxStyledTextCtrl_SetTargetEnd 3169 -#define wxStyledTextCtrl_GetTargetEnd 3170 -#define wxStyledTextCtrl_ReplaceTarget 3171 -#define wxStyledTextCtrl_SearchInTarget 3172 -#define wxStyledTextCtrl_SetSearchFlags 3173 -#define wxStyledTextCtrl_GetSearchFlags 3174 -#define wxStyledTextCtrl_CallTipShow 3175 -#define wxStyledTextCtrl_CallTipCancel 3176 -#define wxStyledTextCtrl_CallTipActive 3177 -#define wxStyledTextCtrl_CallTipPosAtStart 3178 -#define wxStyledTextCtrl_CallTipSetHighlight 3179 -#define wxStyledTextCtrl_CallTipSetBackground 3180 -#define wxStyledTextCtrl_CallTipSetForeground 3181 -#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3182 -#define wxStyledTextCtrl_CallTipUseStyle 3183 -#define wxStyledTextCtrl_VisibleFromDocLine 3184 -#define wxStyledTextCtrl_DocLineFromVisible 3185 -#define wxStyledTextCtrl_WrapCount 3186 -#define wxStyledTextCtrl_SetFoldLevel 3187 -#define wxStyledTextCtrl_GetFoldLevel 3188 -#define wxStyledTextCtrl_GetLastChild 3189 -#define wxStyledTextCtrl_GetFoldParent 3190 -#define wxStyledTextCtrl_ShowLines 3191 -#define wxStyledTextCtrl_HideLines 3192 -#define wxStyledTextCtrl_GetLineVisible 3193 -#define wxStyledTextCtrl_SetFoldExpanded 3194 -#define wxStyledTextCtrl_GetFoldExpanded 3195 -#define wxStyledTextCtrl_ToggleFold 3196 -#define wxStyledTextCtrl_EnsureVisible 3197 -#define wxStyledTextCtrl_SetFoldFlags 3198 -#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3199 -#define wxStyledTextCtrl_SetTabIndents 3200 -#define wxStyledTextCtrl_GetTabIndents 3201 -#define wxStyledTextCtrl_SetBackSpaceUnIndents 3202 -#define wxStyledTextCtrl_GetBackSpaceUnIndents 3203 -#define wxStyledTextCtrl_SetMouseDwellTime 3204 -#define wxStyledTextCtrl_GetMouseDwellTime 3205 -#define wxStyledTextCtrl_WordStartPosition 3206 -#define wxStyledTextCtrl_WordEndPosition 3207 -#define wxStyledTextCtrl_SetWrapMode 3208 -#define wxStyledTextCtrl_GetWrapMode 3209 -#define wxStyledTextCtrl_SetWrapVisualFlags 3210 -#define wxStyledTextCtrl_GetWrapVisualFlags 3211 -#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3212 -#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3213 -#define wxStyledTextCtrl_SetWrapStartIndent 3214 -#define wxStyledTextCtrl_GetWrapStartIndent 3215 -#define wxStyledTextCtrl_SetLayoutCache 3216 -#define wxStyledTextCtrl_GetLayoutCache 3217 -#define wxStyledTextCtrl_SetScrollWidth 3218 -#define wxStyledTextCtrl_GetScrollWidth 3219 -#define wxStyledTextCtrl_TextWidth 3220 -#define wxStyledTextCtrl_GetEndAtLastLine 3221 -#define wxStyledTextCtrl_TextHeight 3222 -#define wxStyledTextCtrl_SetUseVerticalScrollBar 3223 -#define wxStyledTextCtrl_GetUseVerticalScrollBar 3224 -#define wxStyledTextCtrl_AppendText 3225 -#define wxStyledTextCtrl_GetTwoPhaseDraw 3226 -#define wxStyledTextCtrl_SetTwoPhaseDraw 3227 -#define wxStyledTextCtrl_TargetFromSelection 3228 -#define wxStyledTextCtrl_LinesJoin 3229 -#define wxStyledTextCtrl_LinesSplit 3230 -#define wxStyledTextCtrl_SetFoldMarginColour 3231 -#define wxStyledTextCtrl_SetFoldMarginHiColour 3232 -#define wxStyledTextCtrl_LineDown 3233 -#define wxStyledTextCtrl_LineDownExtend 3234 -#define wxStyledTextCtrl_LineUp 3235 -#define wxStyledTextCtrl_LineUpExtend 3236 -#define wxStyledTextCtrl_CharLeft 3237 -#define wxStyledTextCtrl_CharLeftExtend 3238 -#define wxStyledTextCtrl_CharRight 3239 -#define wxStyledTextCtrl_CharRightExtend 3240 -#define wxStyledTextCtrl_WordLeft 3241 -#define wxStyledTextCtrl_WordLeftExtend 3242 -#define wxStyledTextCtrl_WordRight 3243 -#define wxStyledTextCtrl_WordRightExtend 3244 -#define wxStyledTextCtrl_Home 3245 -#define wxStyledTextCtrl_HomeExtend 3246 -#define wxStyledTextCtrl_LineEnd 3247 -#define wxStyledTextCtrl_LineEndExtend 3248 -#define wxStyledTextCtrl_DocumentStart 3249 -#define wxStyledTextCtrl_DocumentStartExtend 3250 -#define wxStyledTextCtrl_DocumentEnd 3251 -#define wxStyledTextCtrl_DocumentEndExtend 3252 -#define wxStyledTextCtrl_PageUp 3253 -#define wxStyledTextCtrl_PageUpExtend 3254 -#define wxStyledTextCtrl_PageDown 3255 -#define wxStyledTextCtrl_PageDownExtend 3256 -#define wxStyledTextCtrl_EditToggleOvertype 3257 -#define wxStyledTextCtrl_Cancel 3258 -#define wxStyledTextCtrl_DeleteBack 3259 -#define wxStyledTextCtrl_Tab 3260 -#define wxStyledTextCtrl_BackTab 3261 -#define wxStyledTextCtrl_NewLine 3262 -#define wxStyledTextCtrl_FormFeed 3263 -#define wxStyledTextCtrl_VCHome 3264 -#define wxStyledTextCtrl_VCHomeExtend 3265 -#define wxStyledTextCtrl_ZoomIn 3266 -#define wxStyledTextCtrl_ZoomOut 3267 -#define wxStyledTextCtrl_DelWordLeft 3268 -#define wxStyledTextCtrl_DelWordRight 3269 -#define wxStyledTextCtrl_LineCut 3270 -#define wxStyledTextCtrl_LineDelete 3271 -#define wxStyledTextCtrl_LineTranspose 3272 -#define wxStyledTextCtrl_LineDuplicate 3273 -#define wxStyledTextCtrl_LowerCase 3274 -#define wxStyledTextCtrl_UpperCase 3275 -#define wxStyledTextCtrl_LineScrollDown 3276 -#define wxStyledTextCtrl_LineScrollUp 3277 -#define wxStyledTextCtrl_DeleteBackNotLine 3278 -#define wxStyledTextCtrl_HomeDisplay 3279 -#define wxStyledTextCtrl_HomeDisplayExtend 3280 -#define wxStyledTextCtrl_LineEndDisplay 3281 -#define wxStyledTextCtrl_LineEndDisplayExtend 3282 -#define wxStyledTextCtrl_HomeWrapExtend 3283 -#define wxStyledTextCtrl_LineEndWrap 3284 -#define wxStyledTextCtrl_LineEndWrapExtend 3285 -#define wxStyledTextCtrl_VCHomeWrap 3286 -#define wxStyledTextCtrl_VCHomeWrapExtend 3287 -#define wxStyledTextCtrl_LineCopy 3288 -#define wxStyledTextCtrl_MoveCaretInsideView 3289 -#define wxStyledTextCtrl_LineLength 3290 -#define wxStyledTextCtrl_BraceHighlight 3291 -#define wxStyledTextCtrl_BraceBadLight 3292 -#define wxStyledTextCtrl_BraceMatch 3293 -#define wxStyledTextCtrl_GetViewEOL 3294 -#define wxStyledTextCtrl_SetViewEOL 3295 -#define wxStyledTextCtrl_SetModEventMask 3296 -#define wxStyledTextCtrl_GetEdgeColumn 3297 -#define wxStyledTextCtrl_SetEdgeColumn 3298 -#define wxStyledTextCtrl_SetEdgeMode 3299 -#define wxStyledTextCtrl_GetEdgeMode 3300 -#define wxStyledTextCtrl_GetEdgeColour 3301 -#define wxStyledTextCtrl_SetEdgeColour 3302 -#define wxStyledTextCtrl_SearchAnchor 3303 -#define wxStyledTextCtrl_SearchNext 3304 -#define wxStyledTextCtrl_SearchPrev 3305 -#define wxStyledTextCtrl_LinesOnScreen 3306 -#define wxStyledTextCtrl_UsePopUp 3307 -#define wxStyledTextCtrl_SelectionIsRectangle 3308 -#define wxStyledTextCtrl_SetZoom 3309 -#define wxStyledTextCtrl_GetZoom 3310 -#define wxStyledTextCtrl_GetModEventMask 3311 -#define wxStyledTextCtrl_SetSTCFocus 3312 -#define wxStyledTextCtrl_GetSTCFocus 3313 -#define wxStyledTextCtrl_SetStatus 3314 -#define wxStyledTextCtrl_GetStatus 3315 -#define wxStyledTextCtrl_SetMouseDownCaptures 3316 -#define wxStyledTextCtrl_GetMouseDownCaptures 3317 -#define wxStyledTextCtrl_SetSTCCursor 3318 -#define wxStyledTextCtrl_GetSTCCursor 3319 -#define wxStyledTextCtrl_SetControlCharSymbol 3320 -#define wxStyledTextCtrl_GetControlCharSymbol 3321 -#define wxStyledTextCtrl_WordPartLeft 3322 -#define wxStyledTextCtrl_WordPartLeftExtend 3323 -#define wxStyledTextCtrl_WordPartRight 3324 -#define wxStyledTextCtrl_WordPartRightExtend 3325 -#define wxStyledTextCtrl_SetVisiblePolicy 3326 -#define wxStyledTextCtrl_DelLineLeft 3327 -#define wxStyledTextCtrl_DelLineRight 3328 -#define wxStyledTextCtrl_GetXOffset 3329 -#define wxStyledTextCtrl_ChooseCaretX 3330 -#define wxStyledTextCtrl_SetXCaretPolicy 3331 -#define wxStyledTextCtrl_SetYCaretPolicy 3332 -#define wxStyledTextCtrl_GetPrintWrapMode 3333 -#define wxStyledTextCtrl_SetHotspotActiveForeground 3334 -#define wxStyledTextCtrl_SetHotspotActiveBackground 3335 -#define wxStyledTextCtrl_SetHotspotActiveUnderline 3336 -#define wxStyledTextCtrl_SetHotspotSingleLine 3337 -#define wxStyledTextCtrl_ParaDownExtend 3338 -#define wxStyledTextCtrl_ParaUp 3339 -#define wxStyledTextCtrl_ParaUpExtend 3340 -#define wxStyledTextCtrl_PositionBefore 3341 -#define wxStyledTextCtrl_PositionAfter 3342 -#define wxStyledTextCtrl_CopyRange 3343 -#define wxStyledTextCtrl_CopyText 3344 -#define wxStyledTextCtrl_SetSelectionMode 3345 -#define wxStyledTextCtrl_GetSelectionMode 3346 -#define wxStyledTextCtrl_LineDownRectExtend 3347 -#define wxStyledTextCtrl_LineUpRectExtend 3348 -#define wxStyledTextCtrl_CharLeftRectExtend 3349 -#define wxStyledTextCtrl_CharRightRectExtend 3350 -#define wxStyledTextCtrl_HomeRectExtend 3351 -#define wxStyledTextCtrl_VCHomeRectExtend 3352 -#define wxStyledTextCtrl_LineEndRectExtend 3353 -#define wxStyledTextCtrl_PageUpRectExtend 3354 -#define wxStyledTextCtrl_PageDownRectExtend 3355 -#define wxStyledTextCtrl_StutteredPageUp 3356 -#define wxStyledTextCtrl_StutteredPageUpExtend 3357 -#define wxStyledTextCtrl_StutteredPageDown 3358 -#define wxStyledTextCtrl_StutteredPageDownExtend 3359 -#define wxStyledTextCtrl_WordLeftEnd 3360 -#define wxStyledTextCtrl_WordLeftEndExtend 3361 -#define wxStyledTextCtrl_WordRightEnd 3362 -#define wxStyledTextCtrl_WordRightEndExtend 3363 -#define wxStyledTextCtrl_SetWhitespaceChars 3364 -#define wxStyledTextCtrl_SetCharsDefault 3365 -#define wxStyledTextCtrl_AutoCompGetCurrent 3366 -#define wxStyledTextCtrl_Allocate 3367 -#define wxStyledTextCtrl_FindColumn 3368 -#define wxStyledTextCtrl_GetCaretSticky 3369 -#define wxStyledTextCtrl_SetCaretSticky 3370 -#define wxStyledTextCtrl_ToggleCaretSticky 3371 -#define wxStyledTextCtrl_SetPasteConvertEndings 3372 -#define wxStyledTextCtrl_GetPasteConvertEndings 3373 -#define wxStyledTextCtrl_SelectionDuplicate 3374 -#define wxStyledTextCtrl_SetCaretLineBackAlpha 3375 -#define wxStyledTextCtrl_GetCaretLineBackAlpha 3376 -#define wxStyledTextCtrl_StartRecord 3377 -#define wxStyledTextCtrl_StopRecord 3378 -#define wxStyledTextCtrl_SetLexer 3379 -#define wxStyledTextCtrl_GetLexer 3380 -#define wxStyledTextCtrl_Colourise 3381 -#define wxStyledTextCtrl_SetProperty 3382 -#define wxStyledTextCtrl_SetKeyWords 3383 -#define wxStyledTextCtrl_SetLexerLanguage 3384 -#define wxStyledTextCtrl_GetProperty 3385 -#define wxStyledTextCtrl_GetStyleBitsNeeded 3386 -#define wxStyledTextCtrl_GetCurrentLine 3387 -#define wxStyledTextCtrl_StyleSetSpec 3388 -#define wxStyledTextCtrl_StyleSetFont 3389 -#define wxStyledTextCtrl_StyleSetFontAttr 3390 -#define wxStyledTextCtrl_StyleSetCharacterSet 3391 -#define wxStyledTextCtrl_StyleSetFontEncoding 3392 -#define wxStyledTextCtrl_CmdKeyExecute 3393 -#define wxStyledTextCtrl_SetMargins 3394 -#define wxStyledTextCtrl_GetSelection 3395 -#define wxStyledTextCtrl_PointFromPosition 3396 -#define wxStyledTextCtrl_ScrollToLine 3397 -#define wxStyledTextCtrl_ScrollToColumn 3398 -#define wxStyledTextCtrl_SetVScrollBar 3399 -#define wxStyledTextCtrl_SetHScrollBar 3400 -#define wxStyledTextCtrl_GetLastKeydownProcessed 3401 -#define wxStyledTextCtrl_SetLastKeydownProcessed 3402 -#define wxStyledTextCtrl_SaveFile 3403 -#define wxStyledTextCtrl_LoadFile 3404 -#define wxStyledTextCtrl_DoDragOver 3405 -#define wxStyledTextCtrl_DoDropText 3406 -#define wxStyledTextCtrl_GetUseAntiAliasing 3407 -#define wxStyledTextCtrl_AddTextRaw 3408 -#define wxStyledTextCtrl_InsertTextRaw 3409 -#define wxStyledTextCtrl_GetCurLineRaw 3410 -#define wxStyledTextCtrl_GetLineRaw 3411 -#define wxStyledTextCtrl_GetSelectedTextRaw 3412 -#define wxStyledTextCtrl_GetTextRangeRaw 3413 -#define wxStyledTextCtrl_SetTextRaw 3414 -#define wxStyledTextCtrl_GetTextRaw 3415 -#define wxStyledTextCtrl_AppendTextRaw 3416 -#define wxArtProvider_GetBitmap 3417 -#define wxArtProvider_GetIcon 3418 -#define wxTreeEvent_GetKeyCode 3419 -#define wxTreeEvent_GetItem 3420 -#define wxTreeEvent_GetKeyEvent 3421 -#define wxTreeEvent_GetLabel 3422 -#define wxTreeEvent_GetOldItem 3423 -#define wxTreeEvent_GetPoint 3424 -#define wxTreeEvent_IsEditCancelled 3425 -#define wxTreeEvent_SetToolTip 3426 -#define wxNotebookEvent_GetOldSelection 3427 -#define wxNotebookEvent_GetSelection 3428 -#define wxNotebookEvent_SetOldSelection 3429 -#define wxNotebookEvent_SetSelection 3430 -#define wxFileDataObject_new 3431 -#define wxFileDataObject_AddFile 3432 -#define wxFileDataObject_GetFilenames 3433 -#define wxFileDataObject_destroy 3434 -#define wxTextDataObject_new 3435 -#define wxTextDataObject_GetTextLength 3436 -#define wxTextDataObject_GetText 3437 -#define wxTextDataObject_SetText 3438 -#define wxTextDataObject_destroy 3439 -#define wxBitmapDataObject_new_1_1 3440 -#define wxBitmapDataObject_new_1_0 3441 -#define wxBitmapDataObject_GetBitmap 3442 -#define wxBitmapDataObject_SetBitmap 3443 -#define wxBitmapDataObject_destroy 3444 -#define wxClipboard_new 3446 -#define wxClipboard_destruct 3447 -#define wxClipboard_AddData 3448 -#define wxClipboard_Clear 3449 -#define wxClipboard_Close 3450 -#define wxClipboard_Flush 3451 -#define wxClipboard_GetData 3452 -#define wxClipboard_IsOpened 3453 -#define wxClipboard_Open 3454 -#define wxClipboard_SetData 3455 -#define wxClipboard_UsePrimarySelection 3457 -#define wxClipboard_IsSupported 3458 -#define wxClipboard_Get 3459 -#define wxSpinEvent_GetPosition 3460 -#define wxSpinEvent_SetPosition 3461 -#define wxSplitterWindow_new_0 3462 -#define wxSplitterWindow_new_2 3463 -#define wxSplitterWindow_destruct 3464 -#define wxSplitterWindow_Create 3465 -#define wxSplitterWindow_GetMinimumPaneSize 3466 -#define wxSplitterWindow_GetSashGravity 3467 -#define wxSplitterWindow_GetSashPosition 3468 -#define wxSplitterWindow_GetSplitMode 3469 -#define wxSplitterWindow_GetWindow1 3470 -#define wxSplitterWindow_GetWindow2 3471 -#define wxSplitterWindow_Initialize 3472 -#define wxSplitterWindow_IsSplit 3473 -#define wxSplitterWindow_ReplaceWindow 3474 -#define wxSplitterWindow_SetSashGravity 3475 -#define wxSplitterWindow_SetSashPosition 3476 -#define wxSplitterWindow_SetSashSize 3477 -#define wxSplitterWindow_SetMinimumPaneSize 3478 -#define wxSplitterWindow_SetSplitMode 3479 -#define wxSplitterWindow_SplitHorizontally 3480 -#define wxSplitterWindow_SplitVertically 3481 -#define wxSplitterWindow_Unsplit 3482 -#define wxSplitterWindow_UpdateSize 3483 -#define wxSplitterEvent_GetSashPosition 3484 -#define wxSplitterEvent_GetX 3485 -#define wxSplitterEvent_GetY 3486 -#define wxSplitterEvent_GetWindowBeingRemoved 3487 -#define wxSplitterEvent_SetSashPosition 3488 -#define wxHtmlWindow_new_0 3489 -#define wxHtmlWindow_new_2 3490 -#define wxHtmlWindow_AppendToPage 3491 -#define wxHtmlWindow_GetOpenedAnchor 3492 -#define wxHtmlWindow_GetOpenedPage 3493 -#define wxHtmlWindow_GetOpenedPageTitle 3494 -#define wxHtmlWindow_GetRelatedFrame 3495 -#define wxHtmlWindow_HistoryBack 3496 -#define wxHtmlWindow_HistoryCanBack 3497 -#define wxHtmlWindow_HistoryCanForward 3498 -#define wxHtmlWindow_HistoryClear 3499 -#define wxHtmlWindow_HistoryForward 3500 -#define wxHtmlWindow_LoadFile 3501 -#define wxHtmlWindow_LoadPage 3502 -#define wxHtmlWindow_SelectAll 3503 -#define wxHtmlWindow_SelectionToText 3504 -#define wxHtmlWindow_SelectLine 3505 -#define wxHtmlWindow_SelectWord 3506 -#define wxHtmlWindow_SetBorders 3507 -#define wxHtmlWindow_SetFonts 3508 -#define wxHtmlWindow_SetPage 3509 -#define wxHtmlWindow_SetRelatedFrame 3510 -#define wxHtmlWindow_SetRelatedStatusBar 3511 -#define wxHtmlWindow_ToText 3512 -#define wxHtmlWindow_destroy 3513 -#define wxHtmlLinkEvent_GetLinkInfo 3514 -#define wxSystemSettings_GetColour 3515 -#define wxSystemSettings_GetFont 3516 -#define wxSystemSettings_GetMetric 3517 -#define wxSystemSettings_GetScreenType 3518 -#define wxSystemOptions_GetOption 3519 -#define wxSystemOptions_GetOptionInt 3520 -#define wxSystemOptions_HasOption 3521 -#define wxSystemOptions_IsFalse 3522 -#define wxSystemOptions_SetOption_2_1 3523 -#define wxSystemOptions_SetOption_2_0 3524 -#define wxAuiNotebookEvent_SetSelection 3525 -#define wxAuiNotebookEvent_GetSelection 3526 -#define wxAuiNotebookEvent_SetOldSelection 3527 -#define wxAuiNotebookEvent_GetOldSelection 3528 -#define wxAuiNotebookEvent_SetDragSource 3529 -#define wxAuiNotebookEvent_GetDragSource 3530 -#define wxAuiManagerEvent_SetManager 3531 -#define wxAuiManagerEvent_GetManager 3532 -#define wxAuiManagerEvent_SetPane 3533 -#define wxAuiManagerEvent_GetPane 3534 -#define wxAuiManagerEvent_SetButton 3535 -#define wxAuiManagerEvent_GetButton 3536 -#define wxAuiManagerEvent_SetDC 3537 -#define wxAuiManagerEvent_GetDC 3538 -#define wxAuiManagerEvent_Veto 3539 -#define wxAuiManagerEvent_GetVeto 3540 -#define wxAuiManagerEvent_SetCanVeto 3541 -#define wxAuiManagerEvent_CanVeto 3542 -#define wxLogNull_new 3543 -#define wxLogNull_destroy 3544 -#define wxTaskBarIcon_new 3545 -#define wxTaskBarIcon_destruct 3546 -#define wxTaskBarIcon_PopupMenu 3547 -#define wxTaskBarIcon_RemoveIcon 3548 -#define wxTaskBarIcon_SetIcon 3549 -#define wxLocale_new_0 3550 -#define wxLocale_new_2 3552 -#define wxLocale_destruct 3553 -#define wxLocale_Init 3555 -#define wxLocale_AddCatalog_1 3556 -#define wxLocale_AddCatalog_3 3557 -#define wxLocale_AddCatalogLookupPathPrefix 3558 -#define wxLocale_GetCanonicalName 3559 -#define wxLocale_GetLanguage 3560 -#define wxLocale_GetLanguageName 3561 -#define wxLocale_GetLocale 3562 -#define wxLocale_GetName 3563 -#define wxLocale_GetString_2 3564 -#define wxLocale_GetString_4 3565 -#define wxLocale_GetHeaderValue 3566 -#define wxLocale_GetSysName 3567 -#define wxLocale_GetSystemEncoding 3568 -#define wxLocale_GetSystemEncodingName 3569 -#define wxLocale_GetSystemLanguage 3570 -#define wxLocale_IsLoaded 3571 -#define wxLocale_IsOk 3572 -#define wxActivateEvent_GetActive 3573 -#define wxPopupWindow_new_2 3575 -#define wxPopupWindow_new_0 3576 -#define wxPopupWindow_destruct 3578 -#define wxPopupWindow_Create 3579 -#define wxPopupWindow_Position 3580 -#define wxPopupTransientWindow_new_0 3581 -#define wxPopupTransientWindow_new_2 3582 -#define wxPopupTransientWindow_destruct 3583 -#define wxPopupTransientWindow_Popup 3584 -#define wxPopupTransientWindow_Dismiss 3585 -#define wxOverlay_new 3586 -#define wxOverlay_destruct 3587 -#define wxOverlay_Reset 3588 -#define wxDCOverlay_new_6 3589 -#define wxDCOverlay_new_2 3590 -#define wxDCOverlay_destruct 3591 -#define wxDCOverlay_Clear 3592 +#define wxToolBar_AddStretchableSpace 984 +#define wxToolBar_InsertStretchableSpace 985 +#define wxToolBar_DeleteTool 986 +#define wxToolBar_DeleteToolByPos 987 +#define wxToolBar_EnableTool 988 +#define wxToolBar_FindById 989 +#define wxToolBar_FindControl 990 +#define wxToolBar_FindToolForPosition 991 +#define wxToolBar_GetToolSize 992 +#define wxToolBar_GetToolBitmapSize 993 +#define wxToolBar_GetMargins 994 +#define wxToolBar_GetToolEnabled 995 +#define wxToolBar_GetToolLongHelp 996 +#define wxToolBar_GetToolPacking 997 +#define wxToolBar_GetToolPos 998 +#define wxToolBar_GetToolSeparation 999 +#define wxToolBar_GetToolShortHelp 1000 +#define wxToolBar_GetToolState 1001 +#define wxToolBar_InsertControl 1002 +#define wxToolBar_InsertSeparator 1003 +#define wxToolBar_InsertTool_5 1004 +#define wxToolBar_InsertTool_2 1005 +#define wxToolBar_InsertTool_4 1006 +#define wxToolBar_Realize 1007 +#define wxToolBar_RemoveTool 1008 +#define wxToolBar_SetMargins 1009 +#define wxToolBar_SetToolBitmapSize 1010 +#define wxToolBar_SetToolLongHelp 1011 +#define wxToolBar_SetToolPacking 1012 +#define wxToolBar_SetToolShortHelp 1013 +#define wxToolBar_SetToolSeparation 1014 +#define wxToolBar_ToggleTool 1015 +#define wxStatusBar_new_0 1017 +#define wxStatusBar_new_2 1018 +#define wxStatusBar_destruct 1020 +#define wxStatusBar_Create 1021 +#define wxStatusBar_GetFieldRect 1022 +#define wxStatusBar_GetFieldsCount 1023 +#define wxStatusBar_GetStatusText 1024 +#define wxStatusBar_PopStatusText 1025 +#define wxStatusBar_PushStatusText 1026 +#define wxStatusBar_SetFieldsCount 1027 +#define wxStatusBar_SetMinHeight 1028 +#define wxStatusBar_SetStatusText 1029 +#define wxStatusBar_SetStatusWidths 1030 +#define wxStatusBar_SetStatusStyles 1031 +#define wxBitmap_new_0 1032 +#define wxBitmap_new_3 1033 +#define wxBitmap_new_4 1034 +#define wxBitmap_new_2_0 1035 +#define wxBitmap_new_2_1 1036 +#define wxBitmap_destruct 1037 +#define wxBitmap_ConvertToImage 1038 +#define wxBitmap_CopyFromIcon 1039 +#define wxBitmap_Create 1040 +#define wxBitmap_GetDepth 1041 +#define wxBitmap_GetHeight 1042 +#define wxBitmap_GetPalette 1043 +#define wxBitmap_GetMask 1044 +#define wxBitmap_GetWidth 1045 +#define wxBitmap_GetSubBitmap 1046 +#define wxBitmap_LoadFile 1047 +#define wxBitmap_Ok 1048 +#define wxBitmap_SaveFile 1049 +#define wxBitmap_SetDepth 1050 +#define wxBitmap_SetHeight 1051 +#define wxBitmap_SetMask 1052 +#define wxBitmap_SetPalette 1053 +#define wxBitmap_SetWidth 1054 +#define wxIcon_new_0 1055 +#define wxIcon_new_2 1056 +#define wxIcon_new_1 1057 +#define wxIcon_CopyFromBitmap 1058 +#define wxIcon_destroy 1059 +#define wxIconBundle_new_0 1060 +#define wxIconBundle_new_2 1061 +#define wxIconBundle_new_1_0 1062 +#define wxIconBundle_new_1_1 1063 +#define wxIconBundle_destruct 1064 +#define wxIconBundle_AddIcon_2 1065 +#define wxIconBundle_AddIcon_1 1066 +#define wxIconBundle_GetIcon_1_1 1067 +#define wxIconBundle_GetIcon_1_0 1068 +#define wxCursor_new_0 1069 +#define wxCursor_new_1_0 1070 +#define wxCursor_new_1_1 1071 +#define wxCursor_new_4 1072 +#define wxCursor_destruct 1073 +#define wxCursor_Ok 1074 +#define wxMask_new_0 1075 +#define wxMask_new_2_1 1076 +#define wxMask_new_2_0 1077 +#define wxMask_new_1 1078 +#define wxMask_destruct 1079 +#define wxMask_Create_2_1 1080 +#define wxMask_Create_2_0 1081 +#define wxMask_Create_1 1082 +#define wxImage_new_0 1083 +#define wxImage_new_3_0 1084 +#define wxImage_new_4 1085 +#define wxImage_new_5 1086 +#define wxImage_new_2 1087 +#define wxImage_new_3_1 1088 +#define wxImage_Blur 1089 +#define wxImage_BlurHorizontal 1090 +#define wxImage_BlurVertical 1091 +#define wxImage_ConvertAlphaToMask 1092 +#define wxImage_ConvertToGreyscale 1093 +#define wxImage_ConvertToMono 1094 +#define wxImage_Copy 1095 +#define wxImage_Create_3 1096 +#define wxImage_Create_4 1097 +#define wxImage_Create_5 1098 +#define wxImage_Destroy 1099 +#define wxImage_FindFirstUnusedColour 1100 +#define wxImage_GetImageExtWildcard 1101 +#define wxImage_GetAlpha_2 1102 +#define wxImage_GetAlpha_0 1103 +#define wxImage_GetBlue 1104 +#define wxImage_GetData 1105 +#define wxImage_GetGreen 1106 +#define wxImage_GetImageCount 1107 +#define wxImage_GetHeight 1108 +#define wxImage_GetMaskBlue 1109 +#define wxImage_GetMaskGreen 1110 +#define wxImage_GetMaskRed 1111 +#define wxImage_GetOrFindMaskColour 1112 +#define wxImage_GetPalette 1113 +#define wxImage_GetRed 1114 +#define wxImage_GetSubImage 1115 +#define wxImage_GetWidth 1116 +#define wxImage_HasAlpha 1117 +#define wxImage_HasMask 1118 +#define wxImage_GetOption 1119 +#define wxImage_GetOptionInt 1120 +#define wxImage_HasOption 1121 +#define wxImage_InitAlpha 1122 +#define wxImage_InitStandardHandlers 1123 +#define wxImage_IsTransparent 1124 +#define wxImage_LoadFile_2 1125 +#define wxImage_LoadFile_3 1126 +#define wxImage_Ok 1127 +#define wxImage_RemoveHandler 1128 +#define wxImage_Mirror 1129 +#define wxImage_Replace 1130 +#define wxImage_Rescale 1131 +#define wxImage_Resize 1132 +#define wxImage_Rotate 1133 +#define wxImage_RotateHue 1134 +#define wxImage_Rotate90 1135 +#define wxImage_SaveFile_1 1136 +#define wxImage_SaveFile_2_0 1137 +#define wxImage_SaveFile_2_1 1138 +#define wxImage_Scale 1139 +#define wxImage_Size 1140 +#define wxImage_SetAlpha_3 1141 +#define wxImage_SetAlpha_2 1142 +#define wxImage_SetData_2 1143 +#define wxImage_SetData_4 1144 +#define wxImage_SetMask 1145 +#define wxImage_SetMaskColour 1146 +#define wxImage_SetMaskFromImage 1147 +#define wxImage_SetOption_2_1 1148 +#define wxImage_SetOption_2_0 1149 +#define wxImage_SetPalette 1150 +#define wxImage_SetRGB_5 1151 +#define wxImage_SetRGB_4 1152 +#define wxImage_destroy 1153 +#define wxBrush_new_0 1154 +#define wxBrush_new_2 1155 +#define wxBrush_new_1 1156 +#define wxBrush_destruct 1158 +#define wxBrush_GetColour 1159 +#define wxBrush_GetStipple 1160 +#define wxBrush_GetStyle 1161 +#define wxBrush_IsHatch 1162 +#define wxBrush_IsOk 1163 +#define wxBrush_SetColour_1 1164 +#define wxBrush_SetColour_3 1165 +#define wxBrush_SetStipple 1166 +#define wxBrush_SetStyle 1167 +#define wxPen_new_0 1168 +#define wxPen_new_2 1169 +#define wxPen_destruct 1170 +#define wxPen_GetCap 1171 +#define wxPen_GetColour 1172 +#define wxPen_GetJoin 1173 +#define wxPen_GetStyle 1174 +#define wxPen_GetWidth 1175 +#define wxPen_IsOk 1176 +#define wxPen_SetCap 1177 +#define wxPen_SetColour_1 1178 +#define wxPen_SetColour_3 1179 +#define wxPen_SetJoin 1180 +#define wxPen_SetStyle 1181 +#define wxPen_SetWidth 1182 +#define wxRegion_new_0 1183 +#define wxRegion_new_4 1184 +#define wxRegion_new_2 1185 +#define wxRegion_new_1_1 1186 +#define wxRegion_new_1_0 1188 +#define wxRegion_destruct 1190 +#define wxRegion_Clear 1191 +#define wxRegion_Contains_2 1192 +#define wxRegion_Contains_1_0 1193 +#define wxRegion_Contains_4 1194 +#define wxRegion_Contains_1_1 1195 +#define wxRegion_ConvertToBitmap 1196 +#define wxRegion_GetBox 1197 +#define wxRegion_Intersect_4 1198 +#define wxRegion_Intersect_1_1 1199 +#define wxRegion_Intersect_1_0 1200 +#define wxRegion_IsEmpty 1201 +#define wxRegion_Subtract_4 1202 +#define wxRegion_Subtract_1_1 1203 +#define wxRegion_Subtract_1_0 1204 +#define wxRegion_Offset_2 1205 +#define wxRegion_Offset_1 1206 +#define wxRegion_Union_4 1207 +#define wxRegion_Union_1_2 1208 +#define wxRegion_Union_1_1 1209 +#define wxRegion_Union_1_0 1210 +#define wxRegion_Union_3 1211 +#define wxRegion_Xor_4 1212 +#define wxRegion_Xor_1_1 1213 +#define wxRegion_Xor_1_0 1214 +#define wxAcceleratorTable_new_0 1215 +#define wxAcceleratorTable_new_2 1216 +#define wxAcceleratorTable_destruct 1217 +#define wxAcceleratorTable_Ok 1218 +#define wxAcceleratorEntry_new_1_0 1219 +#define wxAcceleratorEntry_new_1_1 1220 +#define wxAcceleratorEntry_GetCommand 1221 +#define wxAcceleratorEntry_GetFlags 1222 +#define wxAcceleratorEntry_GetKeyCode 1223 +#define wxAcceleratorEntry_Set 1224 +#define wxAcceleratorEntry_destroy 1225 +#define wxCaret_new_3 1230 +#define wxCaret_new_2 1231 +#define wxCaret_destruct 1233 +#define wxCaret_Create_3 1234 +#define wxCaret_Create_2 1235 +#define wxCaret_GetBlinkTime 1236 +#define wxCaret_GetPosition 1238 +#define wxCaret_GetSize 1240 +#define wxCaret_GetWindow 1241 +#define wxCaret_Hide 1242 +#define wxCaret_IsOk 1243 +#define wxCaret_IsVisible 1244 +#define wxCaret_Move_2 1245 +#define wxCaret_Move_1 1246 +#define wxCaret_SetBlinkTime 1247 +#define wxCaret_SetSize_2 1248 +#define wxCaret_SetSize_1 1249 +#define wxCaret_Show 1250 +#define wxSizer_Add_2_1 1251 +#define wxSizer_Add_2_0 1252 +#define wxSizer_Add_3 1253 +#define wxSizer_Add_2_3 1254 +#define wxSizer_Add_2_2 1255 +#define wxSizer_AddSpacer 1256 +#define wxSizer_AddStretchSpacer 1257 +#define wxSizer_CalcMin 1258 +#define wxSizer_Clear 1259 +#define wxSizer_Detach_1_2 1260 +#define wxSizer_Detach_1_1 1261 +#define wxSizer_Detach_1_0 1262 +#define wxSizer_Fit 1263 +#define wxSizer_FitInside 1264 +#define wxSizer_GetChildren 1265 +#define wxSizer_GetItem_2_1 1266 +#define wxSizer_GetItem_2_0 1267 +#define wxSizer_GetItem_1 1268 +#define wxSizer_GetSize 1269 +#define wxSizer_GetPosition 1270 +#define wxSizer_GetMinSize 1271 +#define wxSizer_Hide_2_0 1272 +#define wxSizer_Hide_2_1 1273 +#define wxSizer_Hide_1 1274 +#define wxSizer_Insert_3_1 1275 +#define wxSizer_Insert_3_0 1276 +#define wxSizer_Insert_4 1277 +#define wxSizer_Insert_3_3 1278 +#define wxSizer_Insert_3_2 1279 +#define wxSizer_Insert_2 1280 +#define wxSizer_InsertSpacer 1281 +#define wxSizer_InsertStretchSpacer 1282 +#define wxSizer_IsShown_1_2 1283 +#define wxSizer_IsShown_1_1 1284 +#define wxSizer_IsShown_1_0 1285 +#define wxSizer_Layout 1286 +#define wxSizer_Prepend_2_1 1287 +#define wxSizer_Prepend_2_0 1288 +#define wxSizer_Prepend_3 1289 +#define wxSizer_Prepend_2_3 1290 +#define wxSizer_Prepend_2_2 1291 +#define wxSizer_Prepend_1 1292 +#define wxSizer_PrependSpacer 1293 +#define wxSizer_PrependStretchSpacer 1294 +#define wxSizer_RecalcSizes 1295 +#define wxSizer_Remove_1_1 1296 +#define wxSizer_Remove_1_0 1297 +#define wxSizer_Replace_3_1 1298 +#define wxSizer_Replace_3_0 1299 +#define wxSizer_Replace_2 1300 +#define wxSizer_SetDimension 1301 +#define wxSizer_SetMinSize_2 1302 +#define wxSizer_SetMinSize_1 1303 +#define wxSizer_SetItemMinSize_3_2 1304 +#define wxSizer_SetItemMinSize_2_2 1305 +#define wxSizer_SetItemMinSize_3_1 1306 +#define wxSizer_SetItemMinSize_2_1 1307 +#define wxSizer_SetItemMinSize_3_0 1308 +#define wxSizer_SetItemMinSize_2_0 1309 +#define wxSizer_SetSizeHints 1310 +#define wxSizer_SetVirtualSizeHints 1311 +#define wxSizer_Show_2_2 1312 +#define wxSizer_Show_2_1 1313 +#define wxSizer_Show_2_0 1314 +#define wxSizer_Show_1 1315 +#define wxSizerFlags_new 1316 +#define wxSizerFlags_Align 1317 +#define wxSizerFlags_Border_2 1318 +#define wxSizerFlags_Border_1 1319 +#define wxSizerFlags_Center 1320 +#define wxSizerFlags_Centre 1321 +#define wxSizerFlags_Expand 1322 +#define wxSizerFlags_Left 1323 +#define wxSizerFlags_Proportion 1324 +#define wxSizerFlags_Right 1325 +#define wxSizerFlags_destroy 1326 +#define wxSizerItem_new_5_1 1327 +#define wxSizerItem_new_2_1 1328 +#define wxSizerItem_new_5_0 1329 +#define wxSizerItem_new_2_0 1330 +#define wxSizerItem_new_6 1331 +#define wxSizerItem_new_3 1332 +#define wxSizerItem_new_0 1333 +#define wxSizerItem_destruct 1334 +#define wxSizerItem_CalcMin 1335 +#define wxSizerItem_DeleteWindows 1336 +#define wxSizerItem_DetachSizer 1337 +#define wxSizerItem_GetBorder 1338 +#define wxSizerItem_GetFlag 1339 +#define wxSizerItem_GetMinSize 1340 +#define wxSizerItem_GetPosition 1341 +#define wxSizerItem_GetProportion 1342 +#define wxSizerItem_GetRatio 1343 +#define wxSizerItem_GetRect 1344 +#define wxSizerItem_GetSize 1345 +#define wxSizerItem_GetSizer 1346 +#define wxSizerItem_GetSpacer 1347 +#define wxSizerItem_GetUserData 1348 +#define wxSizerItem_GetWindow 1349 +#define wxSizerItem_IsSizer 1350 +#define wxSizerItem_IsShown 1351 +#define wxSizerItem_IsSpacer 1352 +#define wxSizerItem_IsWindow 1353 +#define wxSizerItem_SetBorder 1354 +#define wxSizerItem_SetDimension 1355 +#define wxSizerItem_SetFlag 1356 +#define wxSizerItem_SetInitSize 1357 +#define wxSizerItem_SetMinSize_1 1358 +#define wxSizerItem_SetMinSize_2 1359 +#define wxSizerItem_SetProportion 1360 +#define wxSizerItem_SetRatio_2 1361 +#define wxSizerItem_SetRatio_1_1 1362 +#define wxSizerItem_SetRatio_1_0 1363 +#define wxSizerItem_SetSizer 1364 +#define wxSizerItem_SetSpacer_1 1365 +#define wxSizerItem_SetSpacer_2 1366 +#define wxSizerItem_SetWindow 1367 +#define wxSizerItem_Show 1368 +#define wxBoxSizer_new 1369 +#define wxBoxSizer_GetOrientation 1370 +#define wxBoxSizer_destroy 1371 +#define wxStaticBoxSizer_new_2 1372 +#define wxStaticBoxSizer_new_3 1373 +#define wxStaticBoxSizer_GetStaticBox 1374 +#define wxStaticBoxSizer_destroy 1375 +#define wxGridSizer_new_4 1376 +#define wxGridSizer_new_2 1377 +#define wxGridSizer_GetCols 1378 +#define wxGridSizer_GetHGap 1379 +#define wxGridSizer_GetRows 1380 +#define wxGridSizer_GetVGap 1381 +#define wxGridSizer_SetCols 1382 +#define wxGridSizer_SetHGap 1383 +#define wxGridSizer_SetRows 1384 +#define wxGridSizer_SetVGap 1385 +#define wxGridSizer_destroy 1386 +#define wxFlexGridSizer_new_4 1387 +#define wxFlexGridSizer_new_2 1388 +#define wxFlexGridSizer_AddGrowableCol 1389 +#define wxFlexGridSizer_AddGrowableRow 1390 +#define wxFlexGridSizer_GetFlexibleDirection 1391 +#define wxFlexGridSizer_GetNonFlexibleGrowMode 1392 +#define wxFlexGridSizer_RemoveGrowableCol 1393 +#define wxFlexGridSizer_RemoveGrowableRow 1394 +#define wxFlexGridSizer_SetFlexibleDirection 1395 +#define wxFlexGridSizer_SetNonFlexibleGrowMode 1396 +#define wxFlexGridSizer_destroy 1397 +#define wxGridBagSizer_new 1398 +#define wxGridBagSizer_Add_3_2 1399 +#define wxGridBagSizer_Add_3_1 1400 +#define wxGridBagSizer_Add_4 1401 +#define wxGridBagSizer_Add_1_0 1402 +#define wxGridBagSizer_Add_2_1 1403 +#define wxGridBagSizer_Add_2_0 1404 +#define wxGridBagSizer_Add_3_0 1405 +#define wxGridBagSizer_Add_1_1 1406 +#define wxGridBagSizer_CalcMin 1407 +#define wxGridBagSizer_CheckForIntersection_2 1408 +#define wxGridBagSizer_CheckForIntersection_3 1409 +#define wxGridBagSizer_FindItem_1_1 1410 +#define wxGridBagSizer_FindItem_1_0 1411 +#define wxGridBagSizer_FindItemAtPoint 1412 +#define wxGridBagSizer_FindItemAtPosition 1413 +#define wxGridBagSizer_FindItemWithData 1414 +#define wxGridBagSizer_GetCellSize 1415 +#define wxGridBagSizer_GetEmptyCellSize 1416 +#define wxGridBagSizer_GetItemPosition_1_2 1417 +#define wxGridBagSizer_GetItemPosition_1_1 1418 +#define wxGridBagSizer_GetItemPosition_1_0 1419 +#define wxGridBagSizer_GetItemSpan_1_2 1420 +#define wxGridBagSizer_GetItemSpan_1_1 1421 +#define wxGridBagSizer_GetItemSpan_1_0 1422 +#define wxGridBagSizer_SetEmptyCellSize 1423 +#define wxGridBagSizer_SetItemPosition_2_2 1424 +#define wxGridBagSizer_SetItemPosition_2_1 1425 +#define wxGridBagSizer_SetItemPosition_2_0 1426 +#define wxGridBagSizer_SetItemSpan_2_2 1427 +#define wxGridBagSizer_SetItemSpan_2_1 1428 +#define wxGridBagSizer_SetItemSpan_2_0 1429 +#define wxGridBagSizer_destroy 1430 +#define wxStdDialogButtonSizer_new 1431 +#define wxStdDialogButtonSizer_AddButton 1432 +#define wxStdDialogButtonSizer_Realize 1433 +#define wxStdDialogButtonSizer_SetAffirmativeButton 1434 +#define wxStdDialogButtonSizer_SetCancelButton 1435 +#define wxStdDialogButtonSizer_SetNegativeButton 1436 +#define wxStdDialogButtonSizer_destroy 1437 +#define wxFont_new_0 1438 +#define wxFont_new_1 1439 +#define wxFont_new_5 1440 +#define wxFont_destruct 1442 +#define wxFont_IsFixedWidth 1443 +#define wxFont_GetDefaultEncoding 1444 +#define wxFont_GetFaceName 1445 +#define wxFont_GetFamily 1446 +#define wxFont_GetNativeFontInfoDesc 1447 +#define wxFont_GetNativeFontInfoUserDesc 1448 +#define wxFont_GetPointSize 1449 +#define wxFont_GetStyle 1450 +#define wxFont_GetUnderlined 1451 +#define wxFont_GetWeight 1452 +#define wxFont_Ok 1453 +#define wxFont_SetDefaultEncoding 1454 +#define wxFont_SetFaceName 1455 +#define wxFont_SetFamily 1456 +#define wxFont_SetPointSize 1457 +#define wxFont_SetStyle 1458 +#define wxFont_SetUnderlined 1459 +#define wxFont_SetWeight 1460 +#define wxToolTip_Enable 1461 +#define wxToolTip_SetDelay 1462 +#define wxToolTip_new 1463 +#define wxToolTip_SetTip 1464 +#define wxToolTip_GetTip 1465 +#define wxToolTip_GetWindow 1466 +#define wxToolTip_destroy 1467 +#define wxButton_new_3 1469 +#define wxButton_new_0 1470 +#define wxButton_destruct 1471 +#define wxButton_Create 1472 +#define wxButton_GetDefaultSize 1473 +#define wxButton_SetDefault 1474 +#define wxButton_SetLabel 1475 +#define wxBitmapButton_new_4 1477 +#define wxBitmapButton_new_0 1478 +#define wxBitmapButton_Create 1479 +#define wxBitmapButton_GetBitmapDisabled 1480 +#define wxBitmapButton_GetBitmapFocus 1482 +#define wxBitmapButton_GetBitmapLabel 1484 +#define wxBitmapButton_GetBitmapSelected 1486 +#define wxBitmapButton_SetBitmapDisabled 1488 +#define wxBitmapButton_SetBitmapFocus 1489 +#define wxBitmapButton_SetBitmapLabel 1490 +#define wxBitmapButton_SetBitmapSelected 1491 +#define wxBitmapButton_destroy 1492 +#define wxToggleButton_new_0 1493 +#define wxToggleButton_new_4 1494 +#define wxToggleButton_Create 1495 +#define wxToggleButton_GetValue 1496 +#define wxToggleButton_SetValue 1497 +#define wxToggleButton_destroy 1498 +#define wxCalendarCtrl_new_0 1499 +#define wxCalendarCtrl_new_3 1500 +#define wxCalendarCtrl_Create 1501 +#define wxCalendarCtrl_destruct 1502 +#define wxCalendarCtrl_SetDate 1503 +#define wxCalendarCtrl_GetDate 1504 +#define wxCalendarCtrl_EnableYearChange 1505 +#define wxCalendarCtrl_EnableMonthChange 1506 +#define wxCalendarCtrl_EnableHolidayDisplay 1507 +#define wxCalendarCtrl_SetHeaderColours 1508 +#define wxCalendarCtrl_GetHeaderColourFg 1509 +#define wxCalendarCtrl_GetHeaderColourBg 1510 +#define wxCalendarCtrl_SetHighlightColours 1511 +#define wxCalendarCtrl_GetHighlightColourFg 1512 +#define wxCalendarCtrl_GetHighlightColourBg 1513 +#define wxCalendarCtrl_SetHolidayColours 1514 +#define wxCalendarCtrl_GetHolidayColourFg 1515 +#define wxCalendarCtrl_GetHolidayColourBg 1516 +#define wxCalendarCtrl_GetAttr 1517 +#define wxCalendarCtrl_SetAttr 1518 +#define wxCalendarCtrl_SetHoliday 1519 +#define wxCalendarCtrl_ResetAttr 1520 +#define wxCalendarCtrl_HitTest 1521 +#define wxCalendarDateAttr_new_0 1522 +#define wxCalendarDateAttr_new_2_1 1523 +#define wxCalendarDateAttr_new_2_0 1524 +#define wxCalendarDateAttr_SetTextColour 1525 +#define wxCalendarDateAttr_SetBackgroundColour 1526 +#define wxCalendarDateAttr_SetBorderColour 1527 +#define wxCalendarDateAttr_SetFont 1528 +#define wxCalendarDateAttr_SetBorder 1529 +#define wxCalendarDateAttr_SetHoliday 1530 +#define wxCalendarDateAttr_HasTextColour 1531 +#define wxCalendarDateAttr_HasBackgroundColour 1532 +#define wxCalendarDateAttr_HasBorderColour 1533 +#define wxCalendarDateAttr_HasFont 1534 +#define wxCalendarDateAttr_HasBorder 1535 +#define wxCalendarDateAttr_IsHoliday 1536 +#define wxCalendarDateAttr_GetTextColour 1537 +#define wxCalendarDateAttr_GetBackgroundColour 1538 +#define wxCalendarDateAttr_GetBorderColour 1539 +#define wxCalendarDateAttr_GetFont 1540 +#define wxCalendarDateAttr_GetBorder 1541 +#define wxCalendarDateAttr_destroy 1542 +#define wxCheckBox_new_4 1544 +#define wxCheckBox_new_0 1545 +#define wxCheckBox_Create 1546 +#define wxCheckBox_GetValue 1547 +#define wxCheckBox_Get3StateValue 1548 +#define wxCheckBox_Is3rdStateAllowedForUser 1549 +#define wxCheckBox_Is3State 1550 +#define wxCheckBox_IsChecked 1551 +#define wxCheckBox_SetValue 1552 +#define wxCheckBox_Set3StateValue 1553 +#define wxCheckBox_destroy 1554 +#define wxCheckListBox_new_0 1555 +#define wxCheckListBox_new_3 1557 +#define wxCheckListBox_Check 1558 +#define wxCheckListBox_IsChecked 1559 +#define wxCheckListBox_destroy 1560 +#define wxChoice_new_3 1563 +#define wxChoice_new_0 1564 +#define wxChoice_destruct 1566 +#define wxChoice_Create 1568 +#define wxChoice_Delete 1569 +#define wxChoice_GetColumns 1570 +#define wxChoice_SetColumns 1571 +#define wxComboBox_new_0 1572 +#define wxComboBox_new_3 1574 +#define wxComboBox_destruct 1575 +#define wxComboBox_Create 1577 +#define wxComboBox_CanCopy 1578 +#define wxComboBox_CanCut 1579 +#define wxComboBox_CanPaste 1580 +#define wxComboBox_CanRedo 1581 +#define wxComboBox_CanUndo 1582 +#define wxComboBox_Copy 1583 +#define wxComboBox_Cut 1584 +#define wxComboBox_GetInsertionPoint 1585 +#define wxComboBox_GetLastPosition 1586 +#define wxComboBox_GetValue 1587 +#define wxComboBox_Paste 1588 +#define wxComboBox_Redo 1589 +#define wxComboBox_Replace 1590 +#define wxComboBox_Remove 1591 +#define wxComboBox_SetInsertionPoint 1592 +#define wxComboBox_SetInsertionPointEnd 1593 +#define wxComboBox_SetSelection_1 1594 +#define wxComboBox_SetSelection_2 1595 +#define wxComboBox_SetValue 1596 +#define wxComboBox_Undo 1597 +#define wxGauge_new_0 1598 +#define wxGauge_new_4 1599 +#define wxGauge_Create 1600 +#define wxGauge_GetBezelFace 1601 +#define wxGauge_GetRange 1602 +#define wxGauge_GetShadowWidth 1603 +#define wxGauge_GetValue 1604 +#define wxGauge_IsVertical 1605 +#define wxGauge_SetBezelFace 1606 +#define wxGauge_SetRange 1607 +#define wxGauge_SetShadowWidth 1608 +#define wxGauge_SetValue 1609 +#define wxGauge_Pulse 1610 +#define wxGauge_destroy 1611 +#define wxGenericDirCtrl_new_0 1612 +#define wxGenericDirCtrl_new_2 1613 +#define wxGenericDirCtrl_destruct 1614 +#define wxGenericDirCtrl_Create 1615 +#define wxGenericDirCtrl_Init 1616 +#define wxGenericDirCtrl_CollapseTree 1617 +#define wxGenericDirCtrl_ExpandPath 1618 +#define wxGenericDirCtrl_GetDefaultPath 1619 +#define wxGenericDirCtrl_GetPath 1620 +#define wxGenericDirCtrl_GetFilePath 1621 +#define wxGenericDirCtrl_GetFilter 1622 +#define wxGenericDirCtrl_GetFilterIndex 1623 +#define wxGenericDirCtrl_GetRootId 1624 +#define wxGenericDirCtrl_GetTreeCtrl 1625 +#define wxGenericDirCtrl_ReCreateTree 1626 +#define wxGenericDirCtrl_SetDefaultPath 1627 +#define wxGenericDirCtrl_SetFilter 1628 +#define wxGenericDirCtrl_SetFilterIndex 1629 +#define wxGenericDirCtrl_SetPath 1630 +#define wxStaticBox_new_4 1632 +#define wxStaticBox_new_0 1633 +#define wxStaticBox_Create 1634 +#define wxStaticBox_destroy 1635 +#define wxStaticLine_new_2 1637 +#define wxStaticLine_new_0 1638 +#define wxStaticLine_Create 1639 +#define wxStaticLine_IsVertical 1640 +#define wxStaticLine_GetDefaultSize 1641 +#define wxStaticLine_destroy 1642 +#define wxListBox_new_3 1645 +#define wxListBox_new_0 1646 +#define wxListBox_destruct 1648 +#define wxListBox_Create 1650 +#define wxListBox_Deselect 1651 +#define wxListBox_GetSelections 1652 +#define wxListBox_InsertItems 1653 +#define wxListBox_IsSelected 1654 +#define wxListBox_Set 1655 +#define wxListBox_HitTest 1656 +#define wxListBox_SetFirstItem_1_0 1657 +#define wxListBox_SetFirstItem_1_1 1658 +#define wxListCtrl_new_0 1659 +#define wxListCtrl_new_2 1660 +#define wxListCtrl_Arrange 1661 +#define wxListCtrl_AssignImageList 1662 +#define wxListCtrl_ClearAll 1663 +#define wxListCtrl_Create 1664 +#define wxListCtrl_DeleteAllItems 1665 +#define wxListCtrl_DeleteColumn 1666 +#define wxListCtrl_DeleteItem 1667 +#define wxListCtrl_EditLabel 1668 +#define wxListCtrl_EnsureVisible 1669 +#define wxListCtrl_FindItem_3_0 1670 +#define wxListCtrl_FindItem_3_1 1671 +#define wxListCtrl_GetColumn 1672 +#define wxListCtrl_GetColumnCount 1673 +#define wxListCtrl_GetColumnWidth 1674 +#define wxListCtrl_GetCountPerPage 1675 +#define wxListCtrl_GetEditControl 1676 +#define wxListCtrl_GetImageList 1677 +#define wxListCtrl_GetItem 1678 +#define wxListCtrl_GetItemBackgroundColour 1679 +#define wxListCtrl_GetItemCount 1680 +#define wxListCtrl_GetItemData 1681 +#define wxListCtrl_GetItemFont 1682 +#define wxListCtrl_GetItemPosition 1683 +#define wxListCtrl_GetItemRect 1684 +#define wxListCtrl_GetItemSpacing 1685 +#define wxListCtrl_GetItemState 1686 +#define wxListCtrl_GetItemText 1687 +#define wxListCtrl_GetItemTextColour 1688 +#define wxListCtrl_GetNextItem 1689 +#define wxListCtrl_GetSelectedItemCount 1690 +#define wxListCtrl_GetTextColour 1691 +#define wxListCtrl_GetTopItem 1692 +#define wxListCtrl_GetViewRect 1693 +#define wxListCtrl_HitTest 1694 +#define wxListCtrl_InsertColumn_2 1695 +#define wxListCtrl_InsertColumn_3 1696 +#define wxListCtrl_InsertItem_1 1697 +#define wxListCtrl_InsertItem_2_1 1698 +#define wxListCtrl_InsertItem_2_0 1699 +#define wxListCtrl_InsertItem_3 1700 +#define wxListCtrl_RefreshItem 1701 +#define wxListCtrl_RefreshItems 1702 +#define wxListCtrl_ScrollList 1703 +#define wxListCtrl_SetBackgroundColour 1704 +#define wxListCtrl_SetColumn 1705 +#define wxListCtrl_SetColumnWidth 1706 +#define wxListCtrl_SetImageList 1707 +#define wxListCtrl_SetItem_1 1708 +#define wxListCtrl_SetItem_4 1709 +#define wxListCtrl_SetItemBackgroundColour 1710 +#define wxListCtrl_SetItemCount 1711 +#define wxListCtrl_SetItemData 1712 +#define wxListCtrl_SetItemFont 1713 +#define wxListCtrl_SetItemImage 1714 +#define wxListCtrl_SetItemColumnImage 1715 +#define wxListCtrl_SetItemPosition 1716 +#define wxListCtrl_SetItemState 1717 +#define wxListCtrl_SetItemText 1718 +#define wxListCtrl_SetItemTextColour 1719 +#define wxListCtrl_SetSingleStyle 1720 +#define wxListCtrl_SetTextColour 1721 +#define wxListCtrl_SetWindowStyleFlag 1722 +#define wxListCtrl_SortItems 1723 +#define wxListCtrl_destroy 1724 +#define wxListView_ClearColumnImage 1725 +#define wxListView_Focus 1726 +#define wxListView_GetFirstSelected 1727 +#define wxListView_GetFocusedItem 1728 +#define wxListView_GetNextSelected 1729 +#define wxListView_IsSelected 1730 +#define wxListView_Select 1731 +#define wxListView_SetColumnImage 1732 +#define wxListItem_new_0 1733 +#define wxListItem_new_1 1734 +#define wxListItem_destruct 1735 +#define wxListItem_Clear 1736 +#define wxListItem_GetAlign 1737 +#define wxListItem_GetBackgroundColour 1738 +#define wxListItem_GetColumn 1739 +#define wxListItem_GetFont 1740 +#define wxListItem_GetId 1741 +#define wxListItem_GetImage 1742 +#define wxListItem_GetMask 1743 +#define wxListItem_GetState 1744 +#define wxListItem_GetText 1745 +#define wxListItem_GetTextColour 1746 +#define wxListItem_GetWidth 1747 +#define wxListItem_SetAlign 1748 +#define wxListItem_SetBackgroundColour 1749 +#define wxListItem_SetColumn 1750 +#define wxListItem_SetFont 1751 +#define wxListItem_SetId 1752 +#define wxListItem_SetImage 1753 +#define wxListItem_SetMask 1754 +#define wxListItem_SetState 1755 +#define wxListItem_SetStateMask 1756 +#define wxListItem_SetText 1757 +#define wxListItem_SetTextColour 1758 +#define wxListItem_SetWidth 1759 +#define wxListItemAttr_new_0 1760 +#define wxListItemAttr_new_3 1761 +#define wxListItemAttr_GetBackgroundColour 1762 +#define wxListItemAttr_GetFont 1763 +#define wxListItemAttr_GetTextColour 1764 +#define wxListItemAttr_HasBackgroundColour 1765 +#define wxListItemAttr_HasFont 1766 +#define wxListItemAttr_HasTextColour 1767 +#define wxListItemAttr_SetBackgroundColour 1768 +#define wxListItemAttr_SetFont 1769 +#define wxListItemAttr_SetTextColour 1770 +#define wxListItemAttr_destroy 1771 +#define wxImageList_new_0 1772 +#define wxImageList_new_3 1773 +#define wxImageList_Add_1 1774 +#define wxImageList_Add_2_0 1775 +#define wxImageList_Add_2_1 1776 +#define wxImageList_Create 1777 +#define wxImageList_Draw 1779 +#define wxImageList_GetBitmap 1780 +#define wxImageList_GetIcon 1781 +#define wxImageList_GetImageCount 1782 +#define wxImageList_GetSize 1783 +#define wxImageList_Remove 1784 +#define wxImageList_RemoveAll 1785 +#define wxImageList_Replace_2 1786 +#define wxImageList_Replace_3 1787 +#define wxImageList_destroy 1788 +#define wxTextAttr_new_0 1789 +#define wxTextAttr_new_2 1790 +#define wxTextAttr_GetAlignment 1791 +#define wxTextAttr_GetBackgroundColour 1792 +#define wxTextAttr_GetFont 1793 +#define wxTextAttr_GetLeftIndent 1794 +#define wxTextAttr_GetLeftSubIndent 1795 +#define wxTextAttr_GetRightIndent 1796 +#define wxTextAttr_GetTabs 1797 +#define wxTextAttr_GetTextColour 1798 +#define wxTextAttr_HasBackgroundColour 1799 +#define wxTextAttr_HasFont 1800 +#define wxTextAttr_HasTextColour 1801 +#define wxTextAttr_GetFlags 1802 +#define wxTextAttr_IsDefault 1803 +#define wxTextAttr_SetAlignment 1804 +#define wxTextAttr_SetBackgroundColour 1805 +#define wxTextAttr_SetFlags 1806 +#define wxTextAttr_SetFont 1807 +#define wxTextAttr_SetLeftIndent 1808 +#define wxTextAttr_SetRightIndent 1809 +#define wxTextAttr_SetTabs 1810 +#define wxTextAttr_SetTextColour 1811 +#define wxTextAttr_destroy 1812 +#define wxTextCtrl_new_3 1814 +#define wxTextCtrl_new_0 1815 +#define wxTextCtrl_destruct 1817 +#define wxTextCtrl_AppendText 1818 +#define wxTextCtrl_CanCopy 1819 +#define wxTextCtrl_CanCut 1820 +#define wxTextCtrl_CanPaste 1821 +#define wxTextCtrl_CanRedo 1822 +#define wxTextCtrl_CanUndo 1823 +#define wxTextCtrl_Clear 1824 +#define wxTextCtrl_Copy 1825 +#define wxTextCtrl_Create 1826 +#define wxTextCtrl_Cut 1827 +#define wxTextCtrl_DiscardEdits 1828 +#define wxTextCtrl_ChangeValue 1829 +#define wxTextCtrl_EmulateKeyPress 1830 +#define wxTextCtrl_GetDefaultStyle 1831 +#define wxTextCtrl_GetInsertionPoint 1832 +#define wxTextCtrl_GetLastPosition 1833 +#define wxTextCtrl_GetLineLength 1834 +#define wxTextCtrl_GetLineText 1835 +#define wxTextCtrl_GetNumberOfLines 1836 +#define wxTextCtrl_GetRange 1837 +#define wxTextCtrl_GetSelection 1838 +#define wxTextCtrl_GetStringSelection 1839 +#define wxTextCtrl_GetStyle 1840 +#define wxTextCtrl_GetValue 1841 +#define wxTextCtrl_IsEditable 1842 +#define wxTextCtrl_IsModified 1843 +#define wxTextCtrl_IsMultiLine 1844 +#define wxTextCtrl_IsSingleLine 1845 +#define wxTextCtrl_LoadFile 1846 +#define wxTextCtrl_MarkDirty 1847 +#define wxTextCtrl_Paste 1848 +#define wxTextCtrl_PositionToXY 1849 +#define wxTextCtrl_Redo 1850 +#define wxTextCtrl_Remove 1851 +#define wxTextCtrl_Replace 1852 +#define wxTextCtrl_SaveFile 1853 +#define wxTextCtrl_SetDefaultStyle 1854 +#define wxTextCtrl_SetEditable 1855 +#define wxTextCtrl_SetInsertionPoint 1856 +#define wxTextCtrl_SetInsertionPointEnd 1857 +#define wxTextCtrl_SetMaxLength 1859 +#define wxTextCtrl_SetSelection 1860 +#define wxTextCtrl_SetStyle 1861 +#define wxTextCtrl_SetValue 1862 +#define wxTextCtrl_ShowPosition 1863 +#define wxTextCtrl_Undo 1864 +#define wxTextCtrl_WriteText 1865 +#define wxTextCtrl_XYToPosition 1866 +#define wxNotebook_new_0 1869 +#define wxNotebook_new_3 1870 +#define wxNotebook_destruct 1871 +#define wxNotebook_AddPage 1872 +#define wxNotebook_AdvanceSelection 1873 +#define wxNotebook_AssignImageList 1874 +#define wxNotebook_Create 1875 +#define wxNotebook_DeleteAllPages 1876 +#define wxNotebook_DeletePage 1877 +#define wxNotebook_RemovePage 1878 +#define wxNotebook_GetCurrentPage 1879 +#define wxNotebook_GetImageList 1880 +#define wxNotebook_GetPage 1882 +#define wxNotebook_GetPageCount 1883 +#define wxNotebook_GetPageImage 1884 +#define wxNotebook_GetPageText 1885 +#define wxNotebook_GetRowCount 1886 +#define wxNotebook_GetSelection 1887 +#define wxNotebook_GetThemeBackgroundColour 1888 +#define wxNotebook_HitTest 1890 +#define wxNotebook_InsertPage 1892 +#define wxNotebook_SetImageList 1893 +#define wxNotebook_SetPadding 1894 +#define wxNotebook_SetPageSize 1895 +#define wxNotebook_SetPageImage 1896 +#define wxNotebook_SetPageText 1897 +#define wxNotebook_SetSelection 1898 +#define wxNotebook_ChangeSelection 1899 +#define wxChoicebook_new_0 1900 +#define wxChoicebook_new_3 1901 +#define wxChoicebook_AddPage 1902 +#define wxChoicebook_AdvanceSelection 1903 +#define wxChoicebook_AssignImageList 1904 +#define wxChoicebook_Create 1905 +#define wxChoicebook_DeleteAllPages 1906 +#define wxChoicebook_DeletePage 1907 +#define wxChoicebook_RemovePage 1908 +#define wxChoicebook_GetCurrentPage 1909 +#define wxChoicebook_GetImageList 1910 +#define wxChoicebook_GetPage 1912 +#define wxChoicebook_GetPageCount 1913 +#define wxChoicebook_GetPageImage 1914 +#define wxChoicebook_GetPageText 1915 +#define wxChoicebook_GetSelection 1916 +#define wxChoicebook_HitTest 1917 +#define wxChoicebook_InsertPage 1918 +#define wxChoicebook_SetImageList 1919 +#define wxChoicebook_SetPageSize 1920 +#define wxChoicebook_SetPageImage 1921 +#define wxChoicebook_SetPageText 1922 +#define wxChoicebook_SetSelection 1923 +#define wxChoicebook_ChangeSelection 1924 +#define wxChoicebook_destroy 1925 +#define wxToolbook_new_0 1926 +#define wxToolbook_new_3 1927 +#define wxToolbook_AddPage 1928 +#define wxToolbook_AdvanceSelection 1929 +#define wxToolbook_AssignImageList 1930 +#define wxToolbook_Create 1931 +#define wxToolbook_DeleteAllPages 1932 +#define wxToolbook_DeletePage 1933 +#define wxToolbook_RemovePage 1934 +#define wxToolbook_GetCurrentPage 1935 +#define wxToolbook_GetImageList 1936 +#define wxToolbook_GetPage 1938 +#define wxToolbook_GetPageCount 1939 +#define wxToolbook_GetPageImage 1940 +#define wxToolbook_GetPageText 1941 +#define wxToolbook_GetSelection 1942 +#define wxToolbook_HitTest 1944 +#define wxToolbook_InsertPage 1945 +#define wxToolbook_SetImageList 1946 +#define wxToolbook_SetPageSize 1947 +#define wxToolbook_SetPageImage 1948 +#define wxToolbook_SetPageText 1949 +#define wxToolbook_SetSelection 1950 +#define wxToolbook_ChangeSelection 1951 +#define wxToolbook_destroy 1952 +#define wxListbook_new_0 1953 +#define wxListbook_new_3 1954 +#define wxListbook_AddPage 1955 +#define wxListbook_AdvanceSelection 1956 +#define wxListbook_AssignImageList 1957 +#define wxListbook_Create 1958 +#define wxListbook_DeleteAllPages 1959 +#define wxListbook_DeletePage 1960 +#define wxListbook_RemovePage 1961 +#define wxListbook_GetCurrentPage 1962 +#define wxListbook_GetImageList 1963 +#define wxListbook_GetPage 1965 +#define wxListbook_GetPageCount 1966 +#define wxListbook_GetPageImage 1967 +#define wxListbook_GetPageText 1968 +#define wxListbook_GetSelection 1969 +#define wxListbook_HitTest 1971 +#define wxListbook_InsertPage 1972 +#define wxListbook_SetImageList 1973 +#define wxListbook_SetPageSize 1974 +#define wxListbook_SetPageImage 1975 +#define wxListbook_SetPageText 1976 +#define wxListbook_SetSelection 1977 +#define wxListbook_ChangeSelection 1978 +#define wxListbook_destroy 1979 +#define wxTreebook_new_0 1980 +#define wxTreebook_new_3 1981 +#define wxTreebook_AddPage 1982 +#define wxTreebook_AdvanceSelection 1983 +#define wxTreebook_AssignImageList 1984 +#define wxTreebook_Create 1985 +#define wxTreebook_DeleteAllPages 1986 +#define wxTreebook_DeletePage 1987 +#define wxTreebook_RemovePage 1988 +#define wxTreebook_GetCurrentPage 1989 +#define wxTreebook_GetImageList 1990 +#define wxTreebook_GetPage 1992 +#define wxTreebook_GetPageCount 1993 +#define wxTreebook_GetPageImage 1994 +#define wxTreebook_GetPageText 1995 +#define wxTreebook_GetSelection 1996 +#define wxTreebook_ExpandNode 1997 +#define wxTreebook_IsNodeExpanded 1998 +#define wxTreebook_HitTest 2000 +#define wxTreebook_InsertPage 2001 +#define wxTreebook_InsertSubPage 2002 +#define wxTreebook_SetImageList 2003 +#define wxTreebook_SetPageSize 2004 +#define wxTreebook_SetPageImage 2005 +#define wxTreebook_SetPageText 2006 +#define wxTreebook_SetSelection 2007 +#define wxTreebook_ChangeSelection 2008 +#define wxTreebook_destroy 2009 +#define wxTreeCtrl_new_2 2012 +#define wxTreeCtrl_new_0 2013 +#define wxTreeCtrl_destruct 2015 +#define wxTreeCtrl_AddRoot 2016 +#define wxTreeCtrl_AppendItem 2017 +#define wxTreeCtrl_AssignImageList 2018 +#define wxTreeCtrl_AssignStateImageList 2019 +#define wxTreeCtrl_Collapse 2020 +#define wxTreeCtrl_CollapseAndReset 2021 +#define wxTreeCtrl_Create 2022 +#define wxTreeCtrl_Delete 2023 +#define wxTreeCtrl_DeleteAllItems 2024 +#define wxTreeCtrl_DeleteChildren 2025 +#define wxTreeCtrl_EditLabel 2026 +#define wxTreeCtrl_EnsureVisible 2027 +#define wxTreeCtrl_Expand 2028 +#define wxTreeCtrl_GetBoundingRect 2029 +#define wxTreeCtrl_GetChildrenCount 2031 +#define wxTreeCtrl_GetCount 2032 +#define wxTreeCtrl_GetEditControl 2033 +#define wxTreeCtrl_GetFirstChild 2034 +#define wxTreeCtrl_GetNextChild 2035 +#define wxTreeCtrl_GetFirstVisibleItem 2036 +#define wxTreeCtrl_GetImageList 2037 +#define wxTreeCtrl_GetIndent 2038 +#define wxTreeCtrl_GetItemBackgroundColour 2039 +#define wxTreeCtrl_GetItemData 2040 +#define wxTreeCtrl_GetItemFont 2041 +#define wxTreeCtrl_GetItemImage_1 2042 +#define wxTreeCtrl_GetItemImage_2 2043 +#define wxTreeCtrl_GetItemText 2044 +#define wxTreeCtrl_GetItemTextColour 2045 +#define wxTreeCtrl_GetLastChild 2046 +#define wxTreeCtrl_GetNextSibling 2047 +#define wxTreeCtrl_GetNextVisible 2048 +#define wxTreeCtrl_GetItemParent 2049 +#define wxTreeCtrl_GetPrevSibling 2050 +#define wxTreeCtrl_GetPrevVisible 2051 +#define wxTreeCtrl_GetRootItem 2052 +#define wxTreeCtrl_GetSelection 2053 +#define wxTreeCtrl_GetSelections 2054 +#define wxTreeCtrl_GetStateImageList 2055 +#define wxTreeCtrl_HitTest 2056 +#define wxTreeCtrl_InsertItem 2058 +#define wxTreeCtrl_IsBold 2059 +#define wxTreeCtrl_IsExpanded 2060 +#define wxTreeCtrl_IsSelected 2061 +#define wxTreeCtrl_IsVisible 2062 +#define wxTreeCtrl_ItemHasChildren 2063 +#define wxTreeCtrl_IsTreeItemIdOk 2064 +#define wxTreeCtrl_PrependItem 2065 +#define wxTreeCtrl_ScrollTo 2066 +#define wxTreeCtrl_SelectItem_1 2067 +#define wxTreeCtrl_SelectItem_2 2068 +#define wxTreeCtrl_SetIndent 2069 +#define wxTreeCtrl_SetImageList 2070 +#define wxTreeCtrl_SetItemBackgroundColour 2071 +#define wxTreeCtrl_SetItemBold 2072 +#define wxTreeCtrl_SetItemData 2073 +#define wxTreeCtrl_SetItemDropHighlight 2074 +#define wxTreeCtrl_SetItemFont 2075 +#define wxTreeCtrl_SetItemHasChildren 2076 +#define wxTreeCtrl_SetItemImage_2 2077 +#define wxTreeCtrl_SetItemImage_3 2078 +#define wxTreeCtrl_SetItemText 2079 +#define wxTreeCtrl_SetItemTextColour 2080 +#define wxTreeCtrl_SetStateImageList 2081 +#define wxTreeCtrl_SetWindowStyle 2082 +#define wxTreeCtrl_SortChildren 2083 +#define wxTreeCtrl_Toggle 2084 +#define wxTreeCtrl_ToggleItemSelection 2085 +#define wxTreeCtrl_Unselect 2086 +#define wxTreeCtrl_UnselectAll 2087 +#define wxTreeCtrl_UnselectItem 2088 +#define wxScrollBar_new_0 2089 +#define wxScrollBar_new_3 2090 +#define wxScrollBar_destruct 2091 +#define wxScrollBar_Create 2092 +#define wxScrollBar_GetRange 2093 +#define wxScrollBar_GetPageSize 2094 +#define wxScrollBar_GetThumbPosition 2095 +#define wxScrollBar_GetThumbSize 2096 +#define wxScrollBar_SetThumbPosition 2097 +#define wxScrollBar_SetScrollbar 2098 +#define wxSpinButton_new_2 2100 +#define wxSpinButton_new_0 2101 +#define wxSpinButton_Create 2102 +#define wxSpinButton_GetMax 2103 +#define wxSpinButton_GetMin 2104 +#define wxSpinButton_GetValue 2105 +#define wxSpinButton_SetRange 2106 +#define wxSpinButton_SetValue 2107 +#define wxSpinButton_destroy 2108 +#define wxSpinCtrl_new_0 2109 +#define wxSpinCtrl_new_2 2110 +#define wxSpinCtrl_Create 2112 +#define wxSpinCtrl_SetValue_1_1 2115 +#define wxSpinCtrl_SetValue_1_0 2116 +#define wxSpinCtrl_GetValue 2118 +#define wxSpinCtrl_SetRange 2120 +#define wxSpinCtrl_SetSelection 2121 +#define wxSpinCtrl_GetMin 2123 +#define wxSpinCtrl_GetMax 2125 +#define wxSpinCtrl_destroy 2126 +#define wxStaticText_new_0 2127 +#define wxStaticText_new_4 2128 +#define wxStaticText_Create 2129 +#define wxStaticText_GetLabel 2130 +#define wxStaticText_SetLabel 2131 +#define wxStaticText_Wrap 2132 +#define wxStaticText_destroy 2133 +#define wxStaticBitmap_new_0 2134 +#define wxStaticBitmap_new_4 2135 +#define wxStaticBitmap_Create 2136 +#define wxStaticBitmap_GetBitmap 2137 +#define wxStaticBitmap_SetBitmap 2138 +#define wxStaticBitmap_destroy 2139 +#define wxRadioBox_new 2140 +#define wxRadioBox_destruct 2142 +#define wxRadioBox_Create 2143 +#define wxRadioBox_Enable_2 2144 +#define wxRadioBox_Enable_1 2145 +#define wxRadioBox_GetSelection 2146 +#define wxRadioBox_GetString 2147 +#define wxRadioBox_SetSelection 2148 +#define wxRadioBox_Show_2 2149 +#define wxRadioBox_Show_1 2150 +#define wxRadioBox_GetColumnCount 2151 +#define wxRadioBox_GetItemHelpText 2152 +#define wxRadioBox_GetItemToolTip 2153 +#define wxRadioBox_GetItemFromPoint 2155 +#define wxRadioBox_GetRowCount 2156 +#define wxRadioBox_IsItemEnabled 2157 +#define wxRadioBox_IsItemShown 2158 +#define wxRadioBox_SetItemHelpText 2159 +#define wxRadioBox_SetItemToolTip 2160 +#define wxRadioButton_new_0 2161 +#define wxRadioButton_new_4 2162 +#define wxRadioButton_Create 2163 +#define wxRadioButton_GetValue 2164 +#define wxRadioButton_SetValue 2165 +#define wxRadioButton_destroy 2166 +#define wxSlider_new_6 2168 +#define wxSlider_new_0 2169 +#define wxSlider_Create 2170 +#define wxSlider_GetLineSize 2171 +#define wxSlider_GetMax 2172 +#define wxSlider_GetMin 2173 +#define wxSlider_GetPageSize 2174 +#define wxSlider_GetThumbLength 2175 +#define wxSlider_GetValue 2176 +#define wxSlider_SetLineSize 2177 +#define wxSlider_SetPageSize 2178 +#define wxSlider_SetRange 2179 +#define wxSlider_SetThumbLength 2180 +#define wxSlider_SetValue 2181 +#define wxSlider_destroy 2182 +#define wxDialog_new_4 2184 +#define wxDialog_new_0 2185 +#define wxDialog_destruct 2187 +#define wxDialog_Create 2188 +#define wxDialog_CreateButtonSizer 2189 +#define wxDialog_CreateStdDialogButtonSizer 2190 +#define wxDialog_EndModal 2191 +#define wxDialog_GetAffirmativeId 2192 +#define wxDialog_GetReturnCode 2193 +#define wxDialog_IsModal 2194 +#define wxDialog_SetAffirmativeId 2195 +#define wxDialog_SetReturnCode 2196 +#define wxDialog_Show 2197 +#define wxDialog_ShowModal 2198 +#define wxColourDialog_new_0 2199 +#define wxColourDialog_new_2 2200 +#define wxColourDialog_destruct 2201 +#define wxColourDialog_Create 2202 +#define wxColourDialog_GetColourData 2203 +#define wxColourData_new_0 2204 +#define wxColourData_new_1 2205 +#define wxColourData_destruct 2206 +#define wxColourData_GetChooseFull 2207 +#define wxColourData_GetColour 2208 +#define wxColourData_GetCustomColour 2210 +#define wxColourData_SetChooseFull 2211 +#define wxColourData_SetColour 2212 +#define wxColourData_SetCustomColour 2213 +#define wxPalette_new_0 2214 +#define wxPalette_new_4 2215 +#define wxPalette_destruct 2217 +#define wxPalette_Create 2218 +#define wxPalette_GetColoursCount 2219 +#define wxPalette_GetPixel 2220 +#define wxPalette_GetRGB 2221 +#define wxPalette_IsOk 2222 +#define wxDirDialog_new 2226 +#define wxDirDialog_destruct 2227 +#define wxDirDialog_GetPath 2228 +#define wxDirDialog_GetMessage 2229 +#define wxDirDialog_SetMessage 2230 +#define wxDirDialog_SetPath 2231 +#define wxFileDialog_new 2235 +#define wxFileDialog_destruct 2236 +#define wxFileDialog_GetDirectory 2237 +#define wxFileDialog_GetFilename 2238 +#define wxFileDialog_GetFilenames 2239 +#define wxFileDialog_GetFilterIndex 2240 +#define wxFileDialog_GetMessage 2241 +#define wxFileDialog_GetPath 2242 +#define wxFileDialog_GetPaths 2243 +#define wxFileDialog_GetWildcard 2244 +#define wxFileDialog_SetDirectory 2245 +#define wxFileDialog_SetFilename 2246 +#define wxFileDialog_SetFilterIndex 2247 +#define wxFileDialog_SetMessage 2248 +#define wxFileDialog_SetPath 2249 +#define wxFileDialog_SetWildcard 2250 +#define wxPickerBase_SetInternalMargin 2251 +#define wxPickerBase_GetInternalMargin 2252 +#define wxPickerBase_SetTextCtrlProportion 2253 +#define wxPickerBase_SetPickerCtrlProportion 2254 +#define wxPickerBase_GetTextCtrlProportion 2255 +#define wxPickerBase_GetPickerCtrlProportion 2256 +#define wxPickerBase_HasTextCtrl 2257 +#define wxPickerBase_GetTextCtrl 2258 +#define wxPickerBase_IsTextCtrlGrowable 2259 +#define wxPickerBase_SetPickerCtrlGrowable 2260 +#define wxPickerBase_SetTextCtrlGrowable 2261 +#define wxPickerBase_IsPickerCtrlGrowable 2262 +#define wxFilePickerCtrl_new_0 2263 +#define wxFilePickerCtrl_new_3 2264 +#define wxFilePickerCtrl_Create 2265 +#define wxFilePickerCtrl_GetPath 2266 +#define wxFilePickerCtrl_SetPath 2267 +#define wxFilePickerCtrl_destroy 2268 +#define wxDirPickerCtrl_new_0 2269 +#define wxDirPickerCtrl_new_3 2270 +#define wxDirPickerCtrl_Create 2271 +#define wxDirPickerCtrl_GetPath 2272 +#define wxDirPickerCtrl_SetPath 2273 +#define wxDirPickerCtrl_destroy 2274 +#define wxColourPickerCtrl_new_0 2275 +#define wxColourPickerCtrl_new_3 2276 +#define wxColourPickerCtrl_Create 2277 +#define wxColourPickerCtrl_GetColour 2278 +#define wxColourPickerCtrl_SetColour_1_1 2279 +#define wxColourPickerCtrl_SetColour_1_0 2280 +#define wxColourPickerCtrl_destroy 2281 +#define wxDatePickerCtrl_new_0 2282 +#define wxDatePickerCtrl_new_3 2283 +#define wxDatePickerCtrl_GetRange 2284 +#define wxDatePickerCtrl_GetValue 2285 +#define wxDatePickerCtrl_SetRange 2286 +#define wxDatePickerCtrl_SetValue 2287 +#define wxDatePickerCtrl_destroy 2288 +#define wxFontPickerCtrl_new_0 2289 +#define wxFontPickerCtrl_new_3 2290 +#define wxFontPickerCtrl_Create 2291 +#define wxFontPickerCtrl_GetSelectedFont 2292 +#define wxFontPickerCtrl_SetSelectedFont 2293 +#define wxFontPickerCtrl_GetMaxPointSize 2294 +#define wxFontPickerCtrl_SetMaxPointSize 2295 +#define wxFontPickerCtrl_destroy 2296 +#define wxFindReplaceDialog_new_0 2299 +#define wxFindReplaceDialog_new_4 2300 +#define wxFindReplaceDialog_destruct 2301 +#define wxFindReplaceDialog_Create 2302 +#define wxFindReplaceDialog_GetData 2303 +#define wxFindReplaceData_new_0 2304 +#define wxFindReplaceData_new_1 2305 +#define wxFindReplaceData_GetFindString 2306 +#define wxFindReplaceData_GetReplaceString 2307 +#define wxFindReplaceData_GetFlags 2308 +#define wxFindReplaceData_SetFlags 2309 +#define wxFindReplaceData_SetFindString 2310 +#define wxFindReplaceData_SetReplaceString 2311 +#define wxFindReplaceData_destroy 2312 +#define wxMultiChoiceDialog_new_0 2313 +#define wxMultiChoiceDialog_new_5 2315 +#define wxMultiChoiceDialog_GetSelections 2316 +#define wxMultiChoiceDialog_SetSelections 2317 +#define wxMultiChoiceDialog_destroy 2318 +#define wxSingleChoiceDialog_new_0 2319 +#define wxSingleChoiceDialog_new_5 2321 +#define wxSingleChoiceDialog_GetSelection 2322 +#define wxSingleChoiceDialog_GetStringSelection 2323 +#define wxSingleChoiceDialog_SetSelection 2324 +#define wxSingleChoiceDialog_destroy 2325 +#define wxTextEntryDialog_new 2326 +#define wxTextEntryDialog_GetValue 2327 +#define wxTextEntryDialog_SetValue 2328 +#define wxTextEntryDialog_destroy 2329 +#define wxPasswordEntryDialog_new 2330 +#define wxPasswordEntryDialog_destroy 2331 +#define wxFontData_new_0 2332 +#define wxFontData_new_1 2333 +#define wxFontData_destruct 2334 +#define wxFontData_EnableEffects 2335 +#define wxFontData_GetAllowSymbols 2336 +#define wxFontData_GetColour 2337 +#define wxFontData_GetChosenFont 2338 +#define wxFontData_GetEnableEffects 2339 +#define wxFontData_GetInitialFont 2340 +#define wxFontData_GetShowHelp 2341 +#define wxFontData_SetAllowSymbols 2342 +#define wxFontData_SetChosenFont 2343 +#define wxFontData_SetColour 2344 +#define wxFontData_SetInitialFont 2345 +#define wxFontData_SetRange 2346 +#define wxFontData_SetShowHelp 2347 +#define wxFontDialog_new_0 2351 +#define wxFontDialog_new_2 2353 +#define wxFontDialog_Create 2355 +#define wxFontDialog_GetFontData 2356 +#define wxFontDialog_destroy 2358 +#define wxProgressDialog_new 2359 +#define wxProgressDialog_destruct 2360 +#define wxProgressDialog_Resume 2361 +#define wxProgressDialog_Update_2 2362 +#define wxProgressDialog_Update_0 2363 +#define wxMessageDialog_new 2364 +#define wxMessageDialog_destruct 2365 +#define wxPageSetupDialog_new 2366 +#define wxPageSetupDialog_destruct 2367 +#define wxPageSetupDialog_GetPageSetupData 2368 +#define wxPageSetupDialog_ShowModal 2369 +#define wxPageSetupDialogData_new_0 2370 +#define wxPageSetupDialogData_new_1_0 2371 +#define wxPageSetupDialogData_new_1_1 2372 +#define wxPageSetupDialogData_destruct 2373 +#define wxPageSetupDialogData_EnableHelp 2374 +#define wxPageSetupDialogData_EnableMargins 2375 +#define wxPageSetupDialogData_EnableOrientation 2376 +#define wxPageSetupDialogData_EnablePaper 2377 +#define wxPageSetupDialogData_EnablePrinter 2378 +#define wxPageSetupDialogData_GetDefaultMinMargins 2379 +#define wxPageSetupDialogData_GetEnableMargins 2380 +#define wxPageSetupDialogData_GetEnableOrientation 2381 +#define wxPageSetupDialogData_GetEnablePaper 2382 +#define wxPageSetupDialogData_GetEnablePrinter 2383 +#define wxPageSetupDialogData_GetEnableHelp 2384 +#define wxPageSetupDialogData_GetDefaultInfo 2385 +#define wxPageSetupDialogData_GetMarginTopLeft 2386 +#define wxPageSetupDialogData_GetMarginBottomRight 2387 +#define wxPageSetupDialogData_GetMinMarginTopLeft 2388 +#define wxPageSetupDialogData_GetMinMarginBottomRight 2389 +#define wxPageSetupDialogData_GetPaperId 2390 +#define wxPageSetupDialogData_GetPaperSize 2391 +#define wxPageSetupDialogData_GetPrintData 2393 +#define wxPageSetupDialogData_IsOk 2394 +#define wxPageSetupDialogData_SetDefaultInfo 2395 +#define wxPageSetupDialogData_SetDefaultMinMargins 2396 +#define wxPageSetupDialogData_SetMarginTopLeft 2397 +#define wxPageSetupDialogData_SetMarginBottomRight 2398 +#define wxPageSetupDialogData_SetMinMarginTopLeft 2399 +#define wxPageSetupDialogData_SetMinMarginBottomRight 2400 +#define wxPageSetupDialogData_SetPaperId 2401 +#define wxPageSetupDialogData_SetPaperSize_1_1 2402 +#define wxPageSetupDialogData_SetPaperSize_1_0 2403 +#define wxPageSetupDialogData_SetPrintData 2404 +#define wxPrintDialog_new_2_0 2405 +#define wxPrintDialog_new_2_1 2406 +#define wxPrintDialog_destruct 2407 +#define wxPrintDialog_GetPrintDialogData 2408 +#define wxPrintDialog_GetPrintDC 2409 +#define wxPrintDialogData_new_0 2410 +#define wxPrintDialogData_new_1_1 2411 +#define wxPrintDialogData_new_1_0 2412 +#define wxPrintDialogData_destruct 2413 +#define wxPrintDialogData_EnableHelp 2414 +#define wxPrintDialogData_EnablePageNumbers 2415 +#define wxPrintDialogData_EnablePrintToFile 2416 +#define wxPrintDialogData_EnableSelection 2417 +#define wxPrintDialogData_GetAllPages 2418 +#define wxPrintDialogData_GetCollate 2419 +#define wxPrintDialogData_GetFromPage 2420 +#define wxPrintDialogData_GetMaxPage 2421 +#define wxPrintDialogData_GetMinPage 2422 +#define wxPrintDialogData_GetNoCopies 2423 +#define wxPrintDialogData_GetPrintData 2424 +#define wxPrintDialogData_GetPrintToFile 2425 +#define wxPrintDialogData_GetSelection 2426 +#define wxPrintDialogData_GetToPage 2427 +#define wxPrintDialogData_IsOk 2428 +#define wxPrintDialogData_SetCollate 2429 +#define wxPrintDialogData_SetFromPage 2430 +#define wxPrintDialogData_SetMaxPage 2431 +#define wxPrintDialogData_SetMinPage 2432 +#define wxPrintDialogData_SetNoCopies 2433 +#define wxPrintDialogData_SetPrintData 2434 +#define wxPrintDialogData_SetPrintToFile 2435 +#define wxPrintDialogData_SetSelection 2436 +#define wxPrintDialogData_SetToPage 2437 +#define wxPrintData_new_0 2438 +#define wxPrintData_new_1 2439 +#define wxPrintData_destruct 2440 +#define wxPrintData_GetCollate 2441 +#define wxPrintData_GetBin 2442 +#define wxPrintData_GetColour 2443 +#define wxPrintData_GetDuplex 2444 +#define wxPrintData_GetNoCopies 2445 +#define wxPrintData_GetOrientation 2446 +#define wxPrintData_GetPaperId 2447 +#define wxPrintData_GetPrinterName 2448 +#define wxPrintData_GetQuality 2449 +#define wxPrintData_IsOk 2450 +#define wxPrintData_SetBin 2451 +#define wxPrintData_SetCollate 2452 +#define wxPrintData_SetColour 2453 +#define wxPrintData_SetDuplex 2454 +#define wxPrintData_SetNoCopies 2455 +#define wxPrintData_SetOrientation 2456 +#define wxPrintData_SetPaperId 2457 +#define wxPrintData_SetPrinterName 2458 +#define wxPrintData_SetQuality 2459 +#define wxPrintPreview_new_2 2462 +#define wxPrintPreview_new_3 2463 +#define wxPrintPreview_destruct 2465 +#define wxPrintPreview_GetCanvas 2466 +#define wxPrintPreview_GetCurrentPage 2467 +#define wxPrintPreview_GetFrame 2468 +#define wxPrintPreview_GetMaxPage 2469 +#define wxPrintPreview_GetMinPage 2470 +#define wxPrintPreview_GetPrintout 2471 +#define wxPrintPreview_GetPrintoutForPrinting 2472 +#define wxPrintPreview_IsOk 2473 +#define wxPrintPreview_PaintPage 2474 +#define wxPrintPreview_Print 2475 +#define wxPrintPreview_RenderPage 2476 +#define wxPrintPreview_SetCanvas 2477 +#define wxPrintPreview_SetCurrentPage 2478 +#define wxPrintPreview_SetFrame 2479 +#define wxPrintPreview_SetPrintout 2480 +#define wxPrintPreview_SetZoom 2481 +#define wxPreviewFrame_new 2482 +#define wxPreviewFrame_destruct 2483 +#define wxPreviewFrame_CreateControlBar 2484 +#define wxPreviewFrame_CreateCanvas 2485 +#define wxPreviewFrame_Initialize 2486 +#define wxPreviewFrame_OnCloseWindow 2487 +#define wxPreviewControlBar_new 2488 +#define wxPreviewControlBar_destruct 2489 +#define wxPreviewControlBar_CreateButtons 2490 +#define wxPreviewControlBar_GetPrintPreview 2491 +#define wxPreviewControlBar_GetZoomControl 2492 +#define wxPreviewControlBar_SetZoomControl 2493 +#define wxPrinter_new 2495 +#define wxPrinter_CreateAbortWindow 2496 +#define wxPrinter_GetAbort 2497 +#define wxPrinter_GetLastError 2498 +#define wxPrinter_GetPrintDialogData 2499 +#define wxPrinter_Print 2500 +#define wxPrinter_PrintDialog 2501 +#define wxPrinter_ReportError 2502 +#define wxPrinter_Setup 2503 +#define wxPrinter_destroy 2504 +#define wxXmlResource_new_1 2505 +#define wxXmlResource_new_2 2506 +#define wxXmlResource_destruct 2507 +#define wxXmlResource_AttachUnknownControl 2508 +#define wxXmlResource_ClearHandlers 2509 +#define wxXmlResource_CompareVersion 2510 +#define wxXmlResource_Get 2511 +#define wxXmlResource_GetFlags 2512 +#define wxXmlResource_GetVersion 2513 +#define wxXmlResource_GetXRCID 2514 +#define wxXmlResource_InitAllHandlers 2515 +#define wxXmlResource_Load 2516 +#define wxXmlResource_LoadBitmap 2517 +#define wxXmlResource_LoadDialog_2 2518 +#define wxXmlResource_LoadDialog_3 2519 +#define wxXmlResource_LoadFrame_2 2520 +#define wxXmlResource_LoadFrame_3 2521 +#define wxXmlResource_LoadIcon 2522 +#define wxXmlResource_LoadMenu 2523 +#define wxXmlResource_LoadMenuBar_2 2524 +#define wxXmlResource_LoadMenuBar_1 2525 +#define wxXmlResource_LoadPanel_2 2526 +#define wxXmlResource_LoadPanel_3 2527 +#define wxXmlResource_LoadToolBar 2528 +#define wxXmlResource_Set 2529 +#define wxXmlResource_SetFlags 2530 +#define wxXmlResource_Unload 2531 +#define wxXmlResource_xrcctrl 2532 +#define wxHtmlEasyPrinting_new 2533 +#define wxHtmlEasyPrinting_destruct 2534 +#define wxHtmlEasyPrinting_GetPrintData 2535 +#define wxHtmlEasyPrinting_GetPageSetupData 2536 +#define wxHtmlEasyPrinting_PreviewFile 2537 +#define wxHtmlEasyPrinting_PreviewText 2538 +#define wxHtmlEasyPrinting_PrintFile 2539 +#define wxHtmlEasyPrinting_PrintText 2540 +#define wxHtmlEasyPrinting_PageSetup 2541 +#define wxHtmlEasyPrinting_SetFonts 2542 +#define wxHtmlEasyPrinting_SetHeader 2543 +#define wxHtmlEasyPrinting_SetFooter 2544 +#define wxGLCanvas_new_2 2546 +#define wxGLCanvas_new_3_1 2547 +#define wxGLCanvas_new_3_0 2548 +#define wxGLCanvas_GetContext 2549 +#define wxGLCanvas_SetCurrent 2551 +#define wxGLCanvas_SwapBuffers 2552 +#define wxGLCanvas_destroy 2553 +#define wxAuiManager_new 2554 +#define wxAuiManager_destruct 2555 +#define wxAuiManager_AddPane_2_1 2556 +#define wxAuiManager_AddPane_3 2557 +#define wxAuiManager_AddPane_2_0 2558 +#define wxAuiManager_DetachPane 2559 +#define wxAuiManager_GetAllPanes 2560 +#define wxAuiManager_GetArtProvider 2561 +#define wxAuiManager_GetDockSizeConstraint 2562 +#define wxAuiManager_GetFlags 2563 +#define wxAuiManager_GetManagedWindow 2564 +#define wxAuiManager_GetManager 2565 +#define wxAuiManager_GetPane_1_1 2566 +#define wxAuiManager_GetPane_1_0 2567 +#define wxAuiManager_HideHint 2568 +#define wxAuiManager_InsertPane 2569 +#define wxAuiManager_LoadPaneInfo 2570 +#define wxAuiManager_LoadPerspective 2571 +#define wxAuiManager_SavePaneInfo 2572 +#define wxAuiManager_SavePerspective 2573 +#define wxAuiManager_SetArtProvider 2574 +#define wxAuiManager_SetDockSizeConstraint 2575 +#define wxAuiManager_SetFlags 2576 +#define wxAuiManager_SetManagedWindow 2577 +#define wxAuiManager_ShowHint 2578 +#define wxAuiManager_UnInit 2579 +#define wxAuiManager_Update 2580 +#define wxAuiPaneInfo_new_0 2581 +#define wxAuiPaneInfo_new_1 2582 +#define wxAuiPaneInfo_destruct 2583 +#define wxAuiPaneInfo_BestSize_1 2584 +#define wxAuiPaneInfo_BestSize_2 2585 +#define wxAuiPaneInfo_Bottom 2586 +#define wxAuiPaneInfo_BottomDockable 2587 +#define wxAuiPaneInfo_Caption 2588 +#define wxAuiPaneInfo_CaptionVisible 2589 +#define wxAuiPaneInfo_Centre 2590 +#define wxAuiPaneInfo_CentrePane 2591 +#define wxAuiPaneInfo_CloseButton 2592 +#define wxAuiPaneInfo_DefaultPane 2593 +#define wxAuiPaneInfo_DestroyOnClose 2594 +#define wxAuiPaneInfo_Direction 2595 +#define wxAuiPaneInfo_Dock 2596 +#define wxAuiPaneInfo_Dockable 2597 +#define wxAuiPaneInfo_Fixed 2598 +#define wxAuiPaneInfo_Float 2599 +#define wxAuiPaneInfo_Floatable 2600 +#define wxAuiPaneInfo_FloatingPosition_1 2601 +#define wxAuiPaneInfo_FloatingPosition_2 2602 +#define wxAuiPaneInfo_FloatingSize_1 2603 +#define wxAuiPaneInfo_FloatingSize_2 2604 +#define wxAuiPaneInfo_Gripper 2605 +#define wxAuiPaneInfo_GripperTop 2606 +#define wxAuiPaneInfo_HasBorder 2607 +#define wxAuiPaneInfo_HasCaption 2608 +#define wxAuiPaneInfo_HasCloseButton 2609 +#define wxAuiPaneInfo_HasFlag 2610 +#define wxAuiPaneInfo_HasGripper 2611 +#define wxAuiPaneInfo_HasGripperTop 2612 +#define wxAuiPaneInfo_HasMaximizeButton 2613 +#define wxAuiPaneInfo_HasMinimizeButton 2614 +#define wxAuiPaneInfo_HasPinButton 2615 +#define wxAuiPaneInfo_Hide 2616 +#define wxAuiPaneInfo_IsBottomDockable 2617 +#define wxAuiPaneInfo_IsDocked 2618 +#define wxAuiPaneInfo_IsFixed 2619 +#define wxAuiPaneInfo_IsFloatable 2620 +#define wxAuiPaneInfo_IsFloating 2621 +#define wxAuiPaneInfo_IsLeftDockable 2622 +#define wxAuiPaneInfo_IsMovable 2623 +#define wxAuiPaneInfo_IsOk 2624 +#define wxAuiPaneInfo_IsResizable 2625 +#define wxAuiPaneInfo_IsRightDockable 2626 +#define wxAuiPaneInfo_IsShown 2627 +#define wxAuiPaneInfo_IsToolbar 2628 +#define wxAuiPaneInfo_IsTopDockable 2629 +#define wxAuiPaneInfo_Layer 2630 +#define wxAuiPaneInfo_Left 2631 +#define wxAuiPaneInfo_LeftDockable 2632 +#define wxAuiPaneInfo_MaxSize_1 2633 +#define wxAuiPaneInfo_MaxSize_2 2634 +#define wxAuiPaneInfo_MaximizeButton 2635 +#define wxAuiPaneInfo_MinSize_1 2636 +#define wxAuiPaneInfo_MinSize_2 2637 +#define wxAuiPaneInfo_MinimizeButton 2638 +#define wxAuiPaneInfo_Movable 2639 +#define wxAuiPaneInfo_Name 2640 +#define wxAuiPaneInfo_PaneBorder 2641 +#define wxAuiPaneInfo_PinButton 2642 +#define wxAuiPaneInfo_Position 2643 +#define wxAuiPaneInfo_Resizable 2644 +#define wxAuiPaneInfo_Right 2645 +#define wxAuiPaneInfo_RightDockable 2646 +#define wxAuiPaneInfo_Row 2647 +#define wxAuiPaneInfo_SafeSet 2648 +#define wxAuiPaneInfo_SetFlag 2649 +#define wxAuiPaneInfo_Show 2650 +#define wxAuiPaneInfo_ToolbarPane 2651 +#define wxAuiPaneInfo_Top 2652 +#define wxAuiPaneInfo_TopDockable 2653 +#define wxAuiPaneInfo_Window 2654 +#define wxAuiPaneInfo_GetWindow 2655 +#define wxAuiPaneInfo_GetFrame 2656 +#define wxAuiPaneInfo_GetDirection 2657 +#define wxAuiPaneInfo_GetLayer 2658 +#define wxAuiPaneInfo_GetRow 2659 +#define wxAuiPaneInfo_GetPosition 2660 +#define wxAuiPaneInfo_GetFloatingPosition 2661 +#define wxAuiPaneInfo_GetFloatingSize 2662 +#define wxAuiNotebook_new_0 2663 +#define wxAuiNotebook_new_2 2664 +#define wxAuiNotebook_AddPage 2665 +#define wxAuiNotebook_Create 2666 +#define wxAuiNotebook_DeletePage 2667 +#define wxAuiNotebook_GetArtProvider 2668 +#define wxAuiNotebook_GetPage 2669 +#define wxAuiNotebook_GetPageBitmap 2670 +#define wxAuiNotebook_GetPageCount 2671 +#define wxAuiNotebook_GetPageIndex 2672 +#define wxAuiNotebook_GetPageText 2673 +#define wxAuiNotebook_GetSelection 2674 +#define wxAuiNotebook_InsertPage 2675 +#define wxAuiNotebook_RemovePage 2676 +#define wxAuiNotebook_SetArtProvider 2677 +#define wxAuiNotebook_SetFont 2678 +#define wxAuiNotebook_SetPageBitmap 2679 +#define wxAuiNotebook_SetPageText 2680 +#define wxAuiNotebook_SetSelection 2681 +#define wxAuiNotebook_SetTabCtrlHeight 2682 +#define wxAuiNotebook_SetUniformBitmapSize 2683 +#define wxAuiNotebook_destroy 2684 +#define wxAuiTabArt_SetFlags 2685 +#define wxAuiTabArt_SetMeasuringFont 2686 +#define wxAuiTabArt_SetNormalFont 2687 +#define wxAuiTabArt_SetSelectedFont 2688 +#define wxAuiTabArt_SetColour 2689 +#define wxAuiTabArt_SetActiveColour 2690 +#define wxAuiDockArt_GetColour 2691 +#define wxAuiDockArt_GetFont 2692 +#define wxAuiDockArt_GetMetric 2693 +#define wxAuiDockArt_SetColour 2694 +#define wxAuiDockArt_SetFont 2695 +#define wxAuiDockArt_SetMetric 2696 +#define wxAuiSimpleTabArt_new 2697 +#define wxAuiSimpleTabArt_destroy 2698 +#define wxMDIParentFrame_new_0 2699 +#define wxMDIParentFrame_new_4 2700 +#define wxMDIParentFrame_destruct 2701 +#define wxMDIParentFrame_ActivateNext 2702 +#define wxMDIParentFrame_ActivatePrevious 2703 +#define wxMDIParentFrame_ArrangeIcons 2704 +#define wxMDIParentFrame_Cascade 2705 +#define wxMDIParentFrame_Create 2706 +#define wxMDIParentFrame_GetActiveChild 2707 +#define wxMDIParentFrame_GetClientWindow 2708 +#define wxMDIParentFrame_Tile 2709 +#define wxMDIChildFrame_new_0 2710 +#define wxMDIChildFrame_new_4 2711 +#define wxMDIChildFrame_destruct 2712 +#define wxMDIChildFrame_Activate 2713 +#define wxMDIChildFrame_Create 2714 +#define wxMDIChildFrame_Maximize 2715 +#define wxMDIChildFrame_Restore 2716 +#define wxMDIClientWindow_new_0 2717 +#define wxMDIClientWindow_new_2 2718 +#define wxMDIClientWindow_destruct 2719 +#define wxMDIClientWindow_CreateClient 2720 +#define wxLayoutAlgorithm_new 2721 +#define wxLayoutAlgorithm_LayoutFrame 2722 +#define wxLayoutAlgorithm_LayoutMDIFrame 2723 +#define wxLayoutAlgorithm_LayoutWindow 2724 +#define wxLayoutAlgorithm_destroy 2725 +#define wxEvent_GetId 2726 +#define wxEvent_GetSkipped 2727 +#define wxEvent_GetTimestamp 2728 +#define wxEvent_IsCommandEvent 2729 +#define wxEvent_ResumePropagation 2730 +#define wxEvent_ShouldPropagate 2731 +#define wxEvent_Skip 2732 +#define wxEvent_StopPropagation 2733 +#define wxCommandEvent_getClientData 2734 +#define wxCommandEvent_GetExtraLong 2735 +#define wxCommandEvent_GetInt 2736 +#define wxCommandEvent_GetSelection 2737 +#define wxCommandEvent_GetString 2738 +#define wxCommandEvent_IsChecked 2739 +#define wxCommandEvent_IsSelection 2740 +#define wxCommandEvent_SetInt 2741 +#define wxCommandEvent_SetString 2742 +#define wxScrollEvent_GetOrientation 2743 +#define wxScrollEvent_GetPosition 2744 +#define wxScrollWinEvent_GetOrientation 2745 +#define wxScrollWinEvent_GetPosition 2746 +#define wxMouseEvent_AltDown 2747 +#define wxMouseEvent_Button 2748 +#define wxMouseEvent_ButtonDClick 2749 +#define wxMouseEvent_ButtonDown 2750 +#define wxMouseEvent_ButtonUp 2751 +#define wxMouseEvent_CmdDown 2752 +#define wxMouseEvent_ControlDown 2753 +#define wxMouseEvent_Dragging 2754 +#define wxMouseEvent_Entering 2755 +#define wxMouseEvent_GetButton 2756 +#define wxMouseEvent_GetPosition 2759 +#define wxMouseEvent_GetLogicalPosition 2760 +#define wxMouseEvent_GetLinesPerAction 2761 +#define wxMouseEvent_GetWheelRotation 2762 +#define wxMouseEvent_GetWheelDelta 2763 +#define wxMouseEvent_GetX 2764 +#define wxMouseEvent_GetY 2765 +#define wxMouseEvent_IsButton 2766 +#define wxMouseEvent_IsPageScroll 2767 +#define wxMouseEvent_Leaving 2768 +#define wxMouseEvent_LeftDClick 2769 +#define wxMouseEvent_LeftDown 2770 +#define wxMouseEvent_LeftIsDown 2771 +#define wxMouseEvent_LeftUp 2772 +#define wxMouseEvent_MetaDown 2773 +#define wxMouseEvent_MiddleDClick 2774 +#define wxMouseEvent_MiddleDown 2775 +#define wxMouseEvent_MiddleIsDown 2776 +#define wxMouseEvent_MiddleUp 2777 +#define wxMouseEvent_Moving 2778 +#define wxMouseEvent_RightDClick 2779 +#define wxMouseEvent_RightDown 2780 +#define wxMouseEvent_RightIsDown 2781 +#define wxMouseEvent_RightUp 2782 +#define wxMouseEvent_ShiftDown 2783 +#define wxSetCursorEvent_GetCursor 2784 +#define wxSetCursorEvent_GetX 2785 +#define wxSetCursorEvent_GetY 2786 +#define wxSetCursorEvent_HasCursor 2787 +#define wxSetCursorEvent_SetCursor 2788 +#define wxKeyEvent_AltDown 2789 +#define wxKeyEvent_CmdDown 2790 +#define wxKeyEvent_ControlDown 2791 +#define wxKeyEvent_GetKeyCode 2792 +#define wxKeyEvent_GetModifiers 2793 +#define wxKeyEvent_GetPosition 2796 +#define wxKeyEvent_GetRawKeyCode 2797 +#define wxKeyEvent_GetRawKeyFlags 2798 +#define wxKeyEvent_GetUnicodeKey 2799 +#define wxKeyEvent_GetX 2800 +#define wxKeyEvent_GetY 2801 +#define wxKeyEvent_HasModifiers 2802 +#define wxKeyEvent_MetaDown 2803 +#define wxKeyEvent_ShiftDown 2804 +#define wxSizeEvent_GetSize 2805 +#define wxMoveEvent_GetPosition 2806 +#define wxEraseEvent_GetDC 2807 +#define wxFocusEvent_GetWindow 2808 +#define wxChildFocusEvent_GetWindow 2809 +#define wxMenuEvent_GetMenu 2810 +#define wxMenuEvent_GetMenuId 2811 +#define wxMenuEvent_IsPopup 2812 +#define wxCloseEvent_CanVeto 2813 +#define wxCloseEvent_GetLoggingOff 2814 +#define wxCloseEvent_SetCanVeto 2815 +#define wxCloseEvent_SetLoggingOff 2816 +#define wxCloseEvent_Veto 2817 +#define wxShowEvent_SetShow 2818 +#define wxShowEvent_GetShow 2819 +#define wxIconizeEvent_Iconized 2820 +#define wxJoystickEvent_ButtonDown 2821 +#define wxJoystickEvent_ButtonIsDown 2822 +#define wxJoystickEvent_ButtonUp 2823 +#define wxJoystickEvent_GetButtonChange 2824 +#define wxJoystickEvent_GetButtonState 2825 +#define wxJoystickEvent_GetJoystick 2826 +#define wxJoystickEvent_GetPosition 2827 +#define wxJoystickEvent_GetZPosition 2828 +#define wxJoystickEvent_IsButton 2829 +#define wxJoystickEvent_IsMove 2830 +#define wxJoystickEvent_IsZMove 2831 +#define wxUpdateUIEvent_CanUpdate 2832 +#define wxUpdateUIEvent_Check 2833 +#define wxUpdateUIEvent_Enable 2834 +#define wxUpdateUIEvent_Show 2835 +#define wxUpdateUIEvent_GetChecked 2836 +#define wxUpdateUIEvent_GetEnabled 2837 +#define wxUpdateUIEvent_GetShown 2838 +#define wxUpdateUIEvent_GetSetChecked 2839 +#define wxUpdateUIEvent_GetSetEnabled 2840 +#define wxUpdateUIEvent_GetSetShown 2841 +#define wxUpdateUIEvent_GetSetText 2842 +#define wxUpdateUIEvent_GetText 2843 +#define wxUpdateUIEvent_GetMode 2844 +#define wxUpdateUIEvent_GetUpdateInterval 2845 +#define wxUpdateUIEvent_ResetUpdateTime 2846 +#define wxUpdateUIEvent_SetMode 2847 +#define wxUpdateUIEvent_SetText 2848 +#define wxUpdateUIEvent_SetUpdateInterval 2849 +#define wxMouseCaptureChangedEvent_GetCapturedWindow 2850 +#define wxPaletteChangedEvent_SetChangedWindow 2851 +#define wxPaletteChangedEvent_GetChangedWindow 2852 +#define wxQueryNewPaletteEvent_SetPaletteRealized 2853 +#define wxQueryNewPaletteEvent_GetPaletteRealized 2854 +#define wxNavigationKeyEvent_GetDirection 2855 +#define wxNavigationKeyEvent_SetDirection 2856 +#define wxNavigationKeyEvent_IsWindowChange 2857 +#define wxNavigationKeyEvent_SetWindowChange 2858 +#define wxNavigationKeyEvent_IsFromTab 2859 +#define wxNavigationKeyEvent_SetFromTab 2860 +#define wxNavigationKeyEvent_GetCurrentFocus 2861 +#define wxNavigationKeyEvent_SetCurrentFocus 2862 +#define wxHelpEvent_GetOrigin 2863 +#define wxHelpEvent_GetPosition 2864 +#define wxHelpEvent_SetOrigin 2865 +#define wxHelpEvent_SetPosition 2866 +#define wxContextMenuEvent_GetPosition 2867 +#define wxContextMenuEvent_SetPosition 2868 +#define wxIdleEvent_CanSend 2869 +#define wxIdleEvent_GetMode 2870 +#define wxIdleEvent_RequestMore 2871 +#define wxIdleEvent_MoreRequested 2872 +#define wxIdleEvent_SetMode 2873 +#define wxGridEvent_AltDown 2874 +#define wxGridEvent_ControlDown 2875 +#define wxGridEvent_GetCol 2876 +#define wxGridEvent_GetPosition 2877 +#define wxGridEvent_GetRow 2878 +#define wxGridEvent_MetaDown 2879 +#define wxGridEvent_Selecting 2880 +#define wxGridEvent_ShiftDown 2881 +#define wxNotifyEvent_Allow 2882 +#define wxNotifyEvent_IsAllowed 2883 +#define wxNotifyEvent_Veto 2884 +#define wxSashEvent_GetEdge 2885 +#define wxSashEvent_GetDragRect 2886 +#define wxSashEvent_GetDragStatus 2887 +#define wxListEvent_GetCacheFrom 2888 +#define wxListEvent_GetCacheTo 2889 +#define wxListEvent_GetKeyCode 2890 +#define wxListEvent_GetIndex 2891 +#define wxListEvent_GetColumn 2892 +#define wxListEvent_GetPoint 2893 +#define wxListEvent_GetLabel 2894 +#define wxListEvent_GetText 2895 +#define wxListEvent_GetImage 2896 +#define wxListEvent_GetData 2897 +#define wxListEvent_GetMask 2898 +#define wxListEvent_GetItem 2899 +#define wxListEvent_IsEditCancelled 2900 +#define wxDateEvent_GetDate 2901 +#define wxCalendarEvent_GetWeekDay 2902 +#define wxFileDirPickerEvent_GetPath 2903 +#define wxColourPickerEvent_GetColour 2904 +#define wxFontPickerEvent_GetFont 2905 +#define wxStyledTextEvent_GetPosition 2906 +#define wxStyledTextEvent_GetKey 2907 +#define wxStyledTextEvent_GetModifiers 2908 +#define wxStyledTextEvent_GetModificationType 2909 +#define wxStyledTextEvent_GetText 2910 +#define wxStyledTextEvent_GetLength 2911 +#define wxStyledTextEvent_GetLinesAdded 2912 +#define wxStyledTextEvent_GetLine 2913 +#define wxStyledTextEvent_GetFoldLevelNow 2914 +#define wxStyledTextEvent_GetFoldLevelPrev 2915 +#define wxStyledTextEvent_GetMargin 2916 +#define wxStyledTextEvent_GetMessage 2917 +#define wxStyledTextEvent_GetWParam 2918 +#define wxStyledTextEvent_GetLParam 2919 +#define wxStyledTextEvent_GetListType 2920 +#define wxStyledTextEvent_GetX 2921 +#define wxStyledTextEvent_GetY 2922 +#define wxStyledTextEvent_GetDragText 2923 +#define wxStyledTextEvent_GetDragAllowMove 2924 +#define wxStyledTextEvent_GetDragResult 2925 +#define wxStyledTextEvent_GetShift 2926 +#define wxStyledTextEvent_GetControl 2927 +#define wxStyledTextEvent_GetAlt 2928 +#define utils_wxGetKeyState 2929 +#define utils_wxGetMousePosition 2930 +#define utils_wxGetMouseState 2931 +#define utils_wxSetDetectableAutoRepeat 2932 +#define utils_wxBell 2933 +#define utils_wxFindMenuItemId 2934 +#define utils_wxGenericFindWindowAtPoint 2935 +#define utils_wxFindWindowAtPoint 2936 +#define utils_wxBeginBusyCursor 2937 +#define utils_wxEndBusyCursor 2938 +#define utils_wxIsBusy 2939 +#define utils_wxShutdown 2940 +#define utils_wxShell 2941 +#define utils_wxLaunchDefaultBrowser 2942 +#define utils_wxGetEmailAddress 2943 +#define utils_wxGetUserId 2944 +#define utils_wxGetHomeDir 2945 +#define utils_wxNewId 2946 +#define utils_wxRegisterId 2947 +#define utils_wxGetCurrentId 2948 +#define utils_wxGetOsDescription 2949 +#define utils_wxIsPlatformLittleEndian 2950 +#define utils_wxIsPlatform64Bit 2951 +#define gdicmn_wxDisplaySize 2952 +#define gdicmn_wxSetCursor 2953 +#define wxPrintout_new 2954 +#define wxPrintout_destruct 2955 +#define wxPrintout_GetDC 2956 +#define wxPrintout_GetPageSizeMM 2957 +#define wxPrintout_GetPageSizePixels 2958 +#define wxPrintout_GetPaperRectPixels 2959 +#define wxPrintout_GetPPIPrinter 2960 +#define wxPrintout_GetPPIScreen 2961 +#define wxPrintout_GetTitle 2962 +#define wxPrintout_IsPreview 2963 +#define wxPrintout_FitThisSizeToPaper 2964 +#define wxPrintout_FitThisSizeToPage 2965 +#define wxPrintout_FitThisSizeToPageMargins 2966 +#define wxPrintout_MapScreenSizeToPaper 2967 +#define wxPrintout_MapScreenSizeToPage 2968 +#define wxPrintout_MapScreenSizeToPageMargins 2969 +#define wxPrintout_MapScreenSizeToDevice 2970 +#define wxPrintout_GetLogicalPaperRect 2971 +#define wxPrintout_GetLogicalPageRect 2972 +#define wxPrintout_GetLogicalPageMarginsRect 2973 +#define wxPrintout_SetLogicalOrigin 2974 +#define wxPrintout_OffsetLogicalOrigin 2975 +#define wxStyledTextCtrl_new_2 2976 +#define wxStyledTextCtrl_new_0 2977 +#define wxStyledTextCtrl_destruct 2978 +#define wxStyledTextCtrl_Create 2979 +#define wxStyledTextCtrl_AddText 2980 +#define wxStyledTextCtrl_AddStyledText 2981 +#define wxStyledTextCtrl_InsertText 2982 +#define wxStyledTextCtrl_ClearAll 2983 +#define wxStyledTextCtrl_ClearDocumentStyle 2984 +#define wxStyledTextCtrl_GetLength 2985 +#define wxStyledTextCtrl_GetCharAt 2986 +#define wxStyledTextCtrl_GetCurrentPos 2987 +#define wxStyledTextCtrl_GetAnchor 2988 +#define wxStyledTextCtrl_GetStyleAt 2989 +#define wxStyledTextCtrl_Redo 2990 +#define wxStyledTextCtrl_SetUndoCollection 2991 +#define wxStyledTextCtrl_SelectAll 2992 +#define wxStyledTextCtrl_SetSavePoint 2993 +#define wxStyledTextCtrl_GetStyledText 2994 +#define wxStyledTextCtrl_CanRedo 2995 +#define wxStyledTextCtrl_MarkerLineFromHandle 2996 +#define wxStyledTextCtrl_MarkerDeleteHandle 2997 +#define wxStyledTextCtrl_GetUndoCollection 2998 +#define wxStyledTextCtrl_GetViewWhiteSpace 2999 +#define wxStyledTextCtrl_SetViewWhiteSpace 3000 +#define wxStyledTextCtrl_PositionFromPoint 3001 +#define wxStyledTextCtrl_PositionFromPointClose 3002 +#define wxStyledTextCtrl_GotoLine 3003 +#define wxStyledTextCtrl_GotoPos 3004 +#define wxStyledTextCtrl_SetAnchor 3005 +#define wxStyledTextCtrl_GetCurLine 3006 +#define wxStyledTextCtrl_GetEndStyled 3007 +#define wxStyledTextCtrl_ConvertEOLs 3008 +#define wxStyledTextCtrl_GetEOLMode 3009 +#define wxStyledTextCtrl_SetEOLMode 3010 +#define wxStyledTextCtrl_StartStyling 3011 +#define wxStyledTextCtrl_SetStyling 3012 +#define wxStyledTextCtrl_GetBufferedDraw 3013 +#define wxStyledTextCtrl_SetBufferedDraw 3014 +#define wxStyledTextCtrl_SetTabWidth 3015 +#define wxStyledTextCtrl_GetTabWidth 3016 +#define wxStyledTextCtrl_SetCodePage 3017 +#define wxStyledTextCtrl_MarkerDefine 3018 +#define wxStyledTextCtrl_MarkerSetForeground 3019 +#define wxStyledTextCtrl_MarkerSetBackground 3020 +#define wxStyledTextCtrl_MarkerAdd 3021 +#define wxStyledTextCtrl_MarkerDelete 3022 +#define wxStyledTextCtrl_MarkerDeleteAll 3023 +#define wxStyledTextCtrl_MarkerGet 3024 +#define wxStyledTextCtrl_MarkerNext 3025 +#define wxStyledTextCtrl_MarkerPrevious 3026 +#define wxStyledTextCtrl_MarkerDefineBitmap 3027 +#define wxStyledTextCtrl_MarkerAddSet 3028 +#define wxStyledTextCtrl_MarkerSetAlpha 3029 +#define wxStyledTextCtrl_SetMarginType 3030 +#define wxStyledTextCtrl_GetMarginType 3031 +#define wxStyledTextCtrl_SetMarginWidth 3032 +#define wxStyledTextCtrl_GetMarginWidth 3033 +#define wxStyledTextCtrl_SetMarginMask 3034 +#define wxStyledTextCtrl_GetMarginMask 3035 +#define wxStyledTextCtrl_SetMarginSensitive 3036 +#define wxStyledTextCtrl_GetMarginSensitive 3037 +#define wxStyledTextCtrl_StyleClearAll 3038 +#define wxStyledTextCtrl_StyleSetForeground 3039 +#define wxStyledTextCtrl_StyleSetBackground 3040 +#define wxStyledTextCtrl_StyleSetBold 3041 +#define wxStyledTextCtrl_StyleSetItalic 3042 +#define wxStyledTextCtrl_StyleSetSize 3043 +#define wxStyledTextCtrl_StyleSetFaceName 3044 +#define wxStyledTextCtrl_StyleSetEOLFilled 3045 +#define wxStyledTextCtrl_StyleResetDefault 3046 +#define wxStyledTextCtrl_StyleSetUnderline 3047 +#define wxStyledTextCtrl_StyleSetCase 3048 +#define wxStyledTextCtrl_StyleSetHotSpot 3049 +#define wxStyledTextCtrl_SetSelForeground 3050 +#define wxStyledTextCtrl_SetSelBackground 3051 +#define wxStyledTextCtrl_GetSelAlpha 3052 +#define wxStyledTextCtrl_SetSelAlpha 3053 +#define wxStyledTextCtrl_SetCaretForeground 3054 +#define wxStyledTextCtrl_CmdKeyAssign 3055 +#define wxStyledTextCtrl_CmdKeyClear 3056 +#define wxStyledTextCtrl_CmdKeyClearAll 3057 +#define wxStyledTextCtrl_SetStyleBytes 3058 +#define wxStyledTextCtrl_StyleSetVisible 3059 +#define wxStyledTextCtrl_GetCaretPeriod 3060 +#define wxStyledTextCtrl_SetCaretPeriod 3061 +#define wxStyledTextCtrl_SetWordChars 3062 +#define wxStyledTextCtrl_BeginUndoAction 3063 +#define wxStyledTextCtrl_EndUndoAction 3064 +#define wxStyledTextCtrl_IndicatorSetStyle 3065 +#define wxStyledTextCtrl_IndicatorGetStyle 3066 +#define wxStyledTextCtrl_IndicatorSetForeground 3067 +#define wxStyledTextCtrl_IndicatorGetForeground 3068 +#define wxStyledTextCtrl_SetWhitespaceForeground 3069 +#define wxStyledTextCtrl_SetWhitespaceBackground 3070 +#define wxStyledTextCtrl_GetStyleBits 3071 +#define wxStyledTextCtrl_SetLineState 3072 +#define wxStyledTextCtrl_GetLineState 3073 +#define wxStyledTextCtrl_GetMaxLineState 3074 +#define wxStyledTextCtrl_GetCaretLineVisible 3075 +#define wxStyledTextCtrl_SetCaretLineVisible 3076 +#define wxStyledTextCtrl_GetCaretLineBackground 3077 +#define wxStyledTextCtrl_SetCaretLineBackground 3078 +#define wxStyledTextCtrl_AutoCompShow 3079 +#define wxStyledTextCtrl_AutoCompCancel 3080 +#define wxStyledTextCtrl_AutoCompActive 3081 +#define wxStyledTextCtrl_AutoCompPosStart 3082 +#define wxStyledTextCtrl_AutoCompComplete 3083 +#define wxStyledTextCtrl_AutoCompStops 3084 +#define wxStyledTextCtrl_AutoCompSetSeparator 3085 +#define wxStyledTextCtrl_AutoCompGetSeparator 3086 +#define wxStyledTextCtrl_AutoCompSelect 3087 +#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3088 +#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3089 +#define wxStyledTextCtrl_AutoCompSetFillUps 3090 +#define wxStyledTextCtrl_AutoCompSetChooseSingle 3091 +#define wxStyledTextCtrl_AutoCompGetChooseSingle 3092 +#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3093 +#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3094 +#define wxStyledTextCtrl_UserListShow 3095 +#define wxStyledTextCtrl_AutoCompSetAutoHide 3096 +#define wxStyledTextCtrl_AutoCompGetAutoHide 3097 +#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3098 +#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3099 +#define wxStyledTextCtrl_RegisterImage 3100 +#define wxStyledTextCtrl_ClearRegisteredImages 3101 +#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3102 +#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3103 +#define wxStyledTextCtrl_AutoCompSetMaxWidth 3104 +#define wxStyledTextCtrl_AutoCompGetMaxWidth 3105 +#define wxStyledTextCtrl_AutoCompSetMaxHeight 3106 +#define wxStyledTextCtrl_AutoCompGetMaxHeight 3107 +#define wxStyledTextCtrl_SetIndent 3108 +#define wxStyledTextCtrl_GetIndent 3109 +#define wxStyledTextCtrl_SetUseTabs 3110 +#define wxStyledTextCtrl_GetUseTabs 3111 +#define wxStyledTextCtrl_SetLineIndentation 3112 +#define wxStyledTextCtrl_GetLineIndentation 3113 +#define wxStyledTextCtrl_GetLineIndentPosition 3114 +#define wxStyledTextCtrl_GetColumn 3115 +#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3116 +#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3117 +#define wxStyledTextCtrl_SetIndentationGuides 3118 +#define wxStyledTextCtrl_GetIndentationGuides 3119 +#define wxStyledTextCtrl_SetHighlightGuide 3120 +#define wxStyledTextCtrl_GetHighlightGuide 3121 +#define wxStyledTextCtrl_GetLineEndPosition 3122 +#define wxStyledTextCtrl_GetCodePage 3123 +#define wxStyledTextCtrl_GetCaretForeground 3124 +#define wxStyledTextCtrl_GetReadOnly 3125 +#define wxStyledTextCtrl_SetCurrentPos 3126 +#define wxStyledTextCtrl_SetSelectionStart 3127 +#define wxStyledTextCtrl_GetSelectionStart 3128 +#define wxStyledTextCtrl_SetSelectionEnd 3129 +#define wxStyledTextCtrl_GetSelectionEnd 3130 +#define wxStyledTextCtrl_SetPrintMagnification 3131 +#define wxStyledTextCtrl_GetPrintMagnification 3132 +#define wxStyledTextCtrl_SetPrintColourMode 3133 +#define wxStyledTextCtrl_GetPrintColourMode 3134 +#define wxStyledTextCtrl_FindText 3135 +#define wxStyledTextCtrl_FormatRange 3136 +#define wxStyledTextCtrl_GetFirstVisibleLine 3137 +#define wxStyledTextCtrl_GetLine 3138 +#define wxStyledTextCtrl_GetLineCount 3139 +#define wxStyledTextCtrl_SetMarginLeft 3140 +#define wxStyledTextCtrl_GetMarginLeft 3141 +#define wxStyledTextCtrl_SetMarginRight 3142 +#define wxStyledTextCtrl_GetMarginRight 3143 +#define wxStyledTextCtrl_GetModify 3144 +#define wxStyledTextCtrl_SetSelection 3145 +#define wxStyledTextCtrl_GetSelectedText 3146 +#define wxStyledTextCtrl_GetTextRange 3147 +#define wxStyledTextCtrl_HideSelection 3148 +#define wxStyledTextCtrl_LineFromPosition 3149 +#define wxStyledTextCtrl_PositionFromLine 3150 +#define wxStyledTextCtrl_LineScroll 3151 +#define wxStyledTextCtrl_EnsureCaretVisible 3152 +#define wxStyledTextCtrl_ReplaceSelection 3153 +#define wxStyledTextCtrl_SetReadOnly 3154 +#define wxStyledTextCtrl_CanPaste 3155 +#define wxStyledTextCtrl_CanUndo 3156 +#define wxStyledTextCtrl_EmptyUndoBuffer 3157 +#define wxStyledTextCtrl_Undo 3158 +#define wxStyledTextCtrl_Cut 3159 +#define wxStyledTextCtrl_Copy 3160 +#define wxStyledTextCtrl_Paste 3161 +#define wxStyledTextCtrl_Clear 3162 +#define wxStyledTextCtrl_SetText 3163 +#define wxStyledTextCtrl_GetText 3164 +#define wxStyledTextCtrl_GetTextLength 3165 +#define wxStyledTextCtrl_GetOvertype 3166 +#define wxStyledTextCtrl_SetCaretWidth 3167 +#define wxStyledTextCtrl_GetCaretWidth 3168 +#define wxStyledTextCtrl_SetTargetStart 3169 +#define wxStyledTextCtrl_GetTargetStart 3170 +#define wxStyledTextCtrl_SetTargetEnd 3171 +#define wxStyledTextCtrl_GetTargetEnd 3172 +#define wxStyledTextCtrl_ReplaceTarget 3173 +#define wxStyledTextCtrl_SearchInTarget 3174 +#define wxStyledTextCtrl_SetSearchFlags 3175 +#define wxStyledTextCtrl_GetSearchFlags 3176 +#define wxStyledTextCtrl_CallTipShow 3177 +#define wxStyledTextCtrl_CallTipCancel 3178 +#define wxStyledTextCtrl_CallTipActive 3179 +#define wxStyledTextCtrl_CallTipPosAtStart 3180 +#define wxStyledTextCtrl_CallTipSetHighlight 3181 +#define wxStyledTextCtrl_CallTipSetBackground 3182 +#define wxStyledTextCtrl_CallTipSetForeground 3183 +#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3184 +#define wxStyledTextCtrl_CallTipUseStyle 3185 +#define wxStyledTextCtrl_VisibleFromDocLine 3186 +#define wxStyledTextCtrl_DocLineFromVisible 3187 +#define wxStyledTextCtrl_WrapCount 3188 +#define wxStyledTextCtrl_SetFoldLevel 3189 +#define wxStyledTextCtrl_GetFoldLevel 3190 +#define wxStyledTextCtrl_GetLastChild 3191 +#define wxStyledTextCtrl_GetFoldParent 3192 +#define wxStyledTextCtrl_ShowLines 3193 +#define wxStyledTextCtrl_HideLines 3194 +#define wxStyledTextCtrl_GetLineVisible 3195 +#define wxStyledTextCtrl_SetFoldExpanded 3196 +#define wxStyledTextCtrl_GetFoldExpanded 3197 +#define wxStyledTextCtrl_ToggleFold 3198 +#define wxStyledTextCtrl_EnsureVisible 3199 +#define wxStyledTextCtrl_SetFoldFlags 3200 +#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3201 +#define wxStyledTextCtrl_SetTabIndents 3202 +#define wxStyledTextCtrl_GetTabIndents 3203 +#define wxStyledTextCtrl_SetBackSpaceUnIndents 3204 +#define wxStyledTextCtrl_GetBackSpaceUnIndents 3205 +#define wxStyledTextCtrl_SetMouseDwellTime 3206 +#define wxStyledTextCtrl_GetMouseDwellTime 3207 +#define wxStyledTextCtrl_WordStartPosition 3208 +#define wxStyledTextCtrl_WordEndPosition 3209 +#define wxStyledTextCtrl_SetWrapMode 3210 +#define wxStyledTextCtrl_GetWrapMode 3211 +#define wxStyledTextCtrl_SetWrapVisualFlags 3212 +#define wxStyledTextCtrl_GetWrapVisualFlags 3213 +#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3214 +#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3215 +#define wxStyledTextCtrl_SetWrapStartIndent 3216 +#define wxStyledTextCtrl_GetWrapStartIndent 3217 +#define wxStyledTextCtrl_SetLayoutCache 3218 +#define wxStyledTextCtrl_GetLayoutCache 3219 +#define wxStyledTextCtrl_SetScrollWidth 3220 +#define wxStyledTextCtrl_GetScrollWidth 3221 +#define wxStyledTextCtrl_TextWidth 3222 +#define wxStyledTextCtrl_GetEndAtLastLine 3223 +#define wxStyledTextCtrl_TextHeight 3224 +#define wxStyledTextCtrl_SetUseVerticalScrollBar 3225 +#define wxStyledTextCtrl_GetUseVerticalScrollBar 3226 +#define wxStyledTextCtrl_AppendText 3227 +#define wxStyledTextCtrl_GetTwoPhaseDraw 3228 +#define wxStyledTextCtrl_SetTwoPhaseDraw 3229 +#define wxStyledTextCtrl_TargetFromSelection 3230 +#define wxStyledTextCtrl_LinesJoin 3231 +#define wxStyledTextCtrl_LinesSplit 3232 +#define wxStyledTextCtrl_SetFoldMarginColour 3233 +#define wxStyledTextCtrl_SetFoldMarginHiColour 3234 +#define wxStyledTextCtrl_LineDown 3235 +#define wxStyledTextCtrl_LineDownExtend 3236 +#define wxStyledTextCtrl_LineUp 3237 +#define wxStyledTextCtrl_LineUpExtend 3238 +#define wxStyledTextCtrl_CharLeft 3239 +#define wxStyledTextCtrl_CharLeftExtend 3240 +#define wxStyledTextCtrl_CharRight 3241 +#define wxStyledTextCtrl_CharRightExtend 3242 +#define wxStyledTextCtrl_WordLeft 3243 +#define wxStyledTextCtrl_WordLeftExtend 3244 +#define wxStyledTextCtrl_WordRight 3245 +#define wxStyledTextCtrl_WordRightExtend 3246 +#define wxStyledTextCtrl_Home 3247 +#define wxStyledTextCtrl_HomeExtend 3248 +#define wxStyledTextCtrl_LineEnd 3249 +#define wxStyledTextCtrl_LineEndExtend 3250 +#define wxStyledTextCtrl_DocumentStart 3251 +#define wxStyledTextCtrl_DocumentStartExtend 3252 +#define wxStyledTextCtrl_DocumentEnd 3253 +#define wxStyledTextCtrl_DocumentEndExtend 3254 +#define wxStyledTextCtrl_PageUp 3255 +#define wxStyledTextCtrl_PageUpExtend 3256 +#define wxStyledTextCtrl_PageDown 3257 +#define wxStyledTextCtrl_PageDownExtend 3258 +#define wxStyledTextCtrl_EditToggleOvertype 3259 +#define wxStyledTextCtrl_Cancel 3260 +#define wxStyledTextCtrl_DeleteBack 3261 +#define wxStyledTextCtrl_Tab 3262 +#define wxStyledTextCtrl_BackTab 3263 +#define wxStyledTextCtrl_NewLine 3264 +#define wxStyledTextCtrl_FormFeed 3265 +#define wxStyledTextCtrl_VCHome 3266 +#define wxStyledTextCtrl_VCHomeExtend 3267 +#define wxStyledTextCtrl_ZoomIn 3268 +#define wxStyledTextCtrl_ZoomOut 3269 +#define wxStyledTextCtrl_DelWordLeft 3270 +#define wxStyledTextCtrl_DelWordRight 3271 +#define wxStyledTextCtrl_LineCut 3272 +#define wxStyledTextCtrl_LineDelete 3273 +#define wxStyledTextCtrl_LineTranspose 3274 +#define wxStyledTextCtrl_LineDuplicate 3275 +#define wxStyledTextCtrl_LowerCase 3276 +#define wxStyledTextCtrl_UpperCase 3277 +#define wxStyledTextCtrl_LineScrollDown 3278 +#define wxStyledTextCtrl_LineScrollUp 3279 +#define wxStyledTextCtrl_DeleteBackNotLine 3280 +#define wxStyledTextCtrl_HomeDisplay 3281 +#define wxStyledTextCtrl_HomeDisplayExtend 3282 +#define wxStyledTextCtrl_LineEndDisplay 3283 +#define wxStyledTextCtrl_LineEndDisplayExtend 3284 +#define wxStyledTextCtrl_HomeWrapExtend 3285 +#define wxStyledTextCtrl_LineEndWrap 3286 +#define wxStyledTextCtrl_LineEndWrapExtend 3287 +#define wxStyledTextCtrl_VCHomeWrap 3288 +#define wxStyledTextCtrl_VCHomeWrapExtend 3289 +#define wxStyledTextCtrl_LineCopy 3290 +#define wxStyledTextCtrl_MoveCaretInsideView 3291 +#define wxStyledTextCtrl_LineLength 3292 +#define wxStyledTextCtrl_BraceHighlight 3293 +#define wxStyledTextCtrl_BraceBadLight 3294 +#define wxStyledTextCtrl_BraceMatch 3295 +#define wxStyledTextCtrl_GetViewEOL 3296 +#define wxStyledTextCtrl_SetViewEOL 3297 +#define wxStyledTextCtrl_SetModEventMask 3298 +#define wxStyledTextCtrl_GetEdgeColumn 3299 +#define wxStyledTextCtrl_SetEdgeColumn 3300 +#define wxStyledTextCtrl_SetEdgeMode 3301 +#define wxStyledTextCtrl_GetEdgeMode 3302 +#define wxStyledTextCtrl_GetEdgeColour 3303 +#define wxStyledTextCtrl_SetEdgeColour 3304 +#define wxStyledTextCtrl_SearchAnchor 3305 +#define wxStyledTextCtrl_SearchNext 3306 +#define wxStyledTextCtrl_SearchPrev 3307 +#define wxStyledTextCtrl_LinesOnScreen 3308 +#define wxStyledTextCtrl_UsePopUp 3309 +#define wxStyledTextCtrl_SelectionIsRectangle 3310 +#define wxStyledTextCtrl_SetZoom 3311 +#define wxStyledTextCtrl_GetZoom 3312 +#define wxStyledTextCtrl_GetModEventMask 3313 +#define wxStyledTextCtrl_SetSTCFocus 3314 +#define wxStyledTextCtrl_GetSTCFocus 3315 +#define wxStyledTextCtrl_SetStatus 3316 +#define wxStyledTextCtrl_GetStatus 3317 +#define wxStyledTextCtrl_SetMouseDownCaptures 3318 +#define wxStyledTextCtrl_GetMouseDownCaptures 3319 +#define wxStyledTextCtrl_SetSTCCursor 3320 +#define wxStyledTextCtrl_GetSTCCursor 3321 +#define wxStyledTextCtrl_SetControlCharSymbol 3322 +#define wxStyledTextCtrl_GetControlCharSymbol 3323 +#define wxStyledTextCtrl_WordPartLeft 3324 +#define wxStyledTextCtrl_WordPartLeftExtend 3325 +#define wxStyledTextCtrl_WordPartRight 3326 +#define wxStyledTextCtrl_WordPartRightExtend 3327 +#define wxStyledTextCtrl_SetVisiblePolicy 3328 +#define wxStyledTextCtrl_DelLineLeft 3329 +#define wxStyledTextCtrl_DelLineRight 3330 +#define wxStyledTextCtrl_GetXOffset 3331 +#define wxStyledTextCtrl_ChooseCaretX 3332 +#define wxStyledTextCtrl_SetXCaretPolicy 3333 +#define wxStyledTextCtrl_SetYCaretPolicy 3334 +#define wxStyledTextCtrl_GetPrintWrapMode 3335 +#define wxStyledTextCtrl_SetHotspotActiveForeground 3336 +#define wxStyledTextCtrl_SetHotspotActiveBackground 3337 +#define wxStyledTextCtrl_SetHotspotActiveUnderline 3338 +#define wxStyledTextCtrl_SetHotspotSingleLine 3339 +#define wxStyledTextCtrl_ParaDownExtend 3340 +#define wxStyledTextCtrl_ParaUp 3341 +#define wxStyledTextCtrl_ParaUpExtend 3342 +#define wxStyledTextCtrl_PositionBefore 3343 +#define wxStyledTextCtrl_PositionAfter 3344 +#define wxStyledTextCtrl_CopyRange 3345 +#define wxStyledTextCtrl_CopyText 3346 +#define wxStyledTextCtrl_SetSelectionMode 3347 +#define wxStyledTextCtrl_GetSelectionMode 3348 +#define wxStyledTextCtrl_LineDownRectExtend 3349 +#define wxStyledTextCtrl_LineUpRectExtend 3350 +#define wxStyledTextCtrl_CharLeftRectExtend 3351 +#define wxStyledTextCtrl_CharRightRectExtend 3352 +#define wxStyledTextCtrl_HomeRectExtend 3353 +#define wxStyledTextCtrl_VCHomeRectExtend 3354 +#define wxStyledTextCtrl_LineEndRectExtend 3355 +#define wxStyledTextCtrl_PageUpRectExtend 3356 +#define wxStyledTextCtrl_PageDownRectExtend 3357 +#define wxStyledTextCtrl_StutteredPageUp 3358 +#define wxStyledTextCtrl_StutteredPageUpExtend 3359 +#define wxStyledTextCtrl_StutteredPageDown 3360 +#define wxStyledTextCtrl_StutteredPageDownExtend 3361 +#define wxStyledTextCtrl_WordLeftEnd 3362 +#define wxStyledTextCtrl_WordLeftEndExtend 3363 +#define wxStyledTextCtrl_WordRightEnd 3364 +#define wxStyledTextCtrl_WordRightEndExtend 3365 +#define wxStyledTextCtrl_SetWhitespaceChars 3366 +#define wxStyledTextCtrl_SetCharsDefault 3367 +#define wxStyledTextCtrl_AutoCompGetCurrent 3368 +#define wxStyledTextCtrl_Allocate 3369 +#define wxStyledTextCtrl_FindColumn 3370 +#define wxStyledTextCtrl_GetCaretSticky 3371 +#define wxStyledTextCtrl_SetCaretSticky 3372 +#define wxStyledTextCtrl_ToggleCaretSticky 3373 +#define wxStyledTextCtrl_SetPasteConvertEndings 3374 +#define wxStyledTextCtrl_GetPasteConvertEndings 3375 +#define wxStyledTextCtrl_SelectionDuplicate 3376 +#define wxStyledTextCtrl_SetCaretLineBackAlpha 3377 +#define wxStyledTextCtrl_GetCaretLineBackAlpha 3378 +#define wxStyledTextCtrl_StartRecord 3379 +#define wxStyledTextCtrl_StopRecord 3380 +#define wxStyledTextCtrl_SetLexer 3381 +#define wxStyledTextCtrl_GetLexer 3382 +#define wxStyledTextCtrl_Colourise 3383 +#define wxStyledTextCtrl_SetProperty 3384 +#define wxStyledTextCtrl_SetKeyWords 3385 +#define wxStyledTextCtrl_SetLexerLanguage 3386 +#define wxStyledTextCtrl_GetProperty 3387 +#define wxStyledTextCtrl_GetStyleBitsNeeded 3388 +#define wxStyledTextCtrl_GetCurrentLine 3389 +#define wxStyledTextCtrl_StyleSetSpec 3390 +#define wxStyledTextCtrl_StyleSetFont 3391 +#define wxStyledTextCtrl_StyleSetFontAttr 3392 +#define wxStyledTextCtrl_StyleSetCharacterSet 3393 +#define wxStyledTextCtrl_StyleSetFontEncoding 3394 +#define wxStyledTextCtrl_CmdKeyExecute 3395 +#define wxStyledTextCtrl_SetMargins 3396 +#define wxStyledTextCtrl_GetSelection 3397 +#define wxStyledTextCtrl_PointFromPosition 3398 +#define wxStyledTextCtrl_ScrollToLine 3399 +#define wxStyledTextCtrl_ScrollToColumn 3400 +#define wxStyledTextCtrl_SetVScrollBar 3401 +#define wxStyledTextCtrl_SetHScrollBar 3402 +#define wxStyledTextCtrl_GetLastKeydownProcessed 3403 +#define wxStyledTextCtrl_SetLastKeydownProcessed 3404 +#define wxStyledTextCtrl_SaveFile 3405 +#define wxStyledTextCtrl_LoadFile 3406 +#define wxStyledTextCtrl_DoDragOver 3407 +#define wxStyledTextCtrl_DoDropText 3408 +#define wxStyledTextCtrl_GetUseAntiAliasing 3409 +#define wxStyledTextCtrl_AddTextRaw 3410 +#define wxStyledTextCtrl_InsertTextRaw 3411 +#define wxStyledTextCtrl_GetCurLineRaw 3412 +#define wxStyledTextCtrl_GetLineRaw 3413 +#define wxStyledTextCtrl_GetSelectedTextRaw 3414 +#define wxStyledTextCtrl_GetTextRangeRaw 3415 +#define wxStyledTextCtrl_SetTextRaw 3416 +#define wxStyledTextCtrl_GetTextRaw 3417 +#define wxStyledTextCtrl_AppendTextRaw 3418 +#define wxArtProvider_GetBitmap 3419 +#define wxArtProvider_GetIcon 3420 +#define wxTreeEvent_GetKeyCode 3421 +#define wxTreeEvent_GetItem 3422 +#define wxTreeEvent_GetKeyEvent 3423 +#define wxTreeEvent_GetLabel 3424 +#define wxTreeEvent_GetOldItem 3425 +#define wxTreeEvent_GetPoint 3426 +#define wxTreeEvent_IsEditCancelled 3427 +#define wxTreeEvent_SetToolTip 3428 +#define wxNotebookEvent_GetOldSelection 3429 +#define wxNotebookEvent_GetSelection 3430 +#define wxNotebookEvent_SetOldSelection 3431 +#define wxNotebookEvent_SetSelection 3432 +#define wxFileDataObject_new 3433 +#define wxFileDataObject_AddFile 3434 +#define wxFileDataObject_GetFilenames 3435 +#define wxFileDataObject_destroy 3436 +#define wxTextDataObject_new 3437 +#define wxTextDataObject_GetTextLength 3438 +#define wxTextDataObject_GetText 3439 +#define wxTextDataObject_SetText 3440 +#define wxTextDataObject_destroy 3441 +#define wxBitmapDataObject_new_1_1 3442 +#define wxBitmapDataObject_new_1_0 3443 +#define wxBitmapDataObject_GetBitmap 3444 +#define wxBitmapDataObject_SetBitmap 3445 +#define wxBitmapDataObject_destroy 3446 +#define wxClipboard_new 3448 +#define wxClipboard_destruct 3449 +#define wxClipboard_AddData 3450 +#define wxClipboard_Clear 3451 +#define wxClipboard_Close 3452 +#define wxClipboard_Flush 3453 +#define wxClipboard_GetData 3454 +#define wxClipboard_IsOpened 3455 +#define wxClipboard_Open 3456 +#define wxClipboard_SetData 3457 +#define wxClipboard_UsePrimarySelection 3459 +#define wxClipboard_IsSupported 3460 +#define wxClipboard_Get 3461 +#define wxSpinEvent_GetPosition 3462 +#define wxSpinEvent_SetPosition 3463 +#define wxSplitterWindow_new_0 3464 +#define wxSplitterWindow_new_2 3465 +#define wxSplitterWindow_destruct 3466 +#define wxSplitterWindow_Create 3467 +#define wxSplitterWindow_GetMinimumPaneSize 3468 +#define wxSplitterWindow_GetSashGravity 3469 +#define wxSplitterWindow_GetSashPosition 3470 +#define wxSplitterWindow_GetSplitMode 3471 +#define wxSplitterWindow_GetWindow1 3472 +#define wxSplitterWindow_GetWindow2 3473 +#define wxSplitterWindow_Initialize 3474 +#define wxSplitterWindow_IsSplit 3475 +#define wxSplitterWindow_ReplaceWindow 3476 +#define wxSplitterWindow_SetSashGravity 3477 +#define wxSplitterWindow_SetSashPosition 3478 +#define wxSplitterWindow_SetSashSize 3479 +#define wxSplitterWindow_SetMinimumPaneSize 3480 +#define wxSplitterWindow_SetSplitMode 3481 +#define wxSplitterWindow_SplitHorizontally 3482 +#define wxSplitterWindow_SplitVertically 3483 +#define wxSplitterWindow_Unsplit 3484 +#define wxSplitterWindow_UpdateSize 3485 +#define wxSplitterEvent_GetSashPosition 3486 +#define wxSplitterEvent_GetX 3487 +#define wxSplitterEvent_GetY 3488 +#define wxSplitterEvent_GetWindowBeingRemoved 3489 +#define wxSplitterEvent_SetSashPosition 3490 +#define wxHtmlWindow_new_0 3491 +#define wxHtmlWindow_new_2 3492 +#define wxHtmlWindow_AppendToPage 3493 +#define wxHtmlWindow_GetOpenedAnchor 3494 +#define wxHtmlWindow_GetOpenedPage 3495 +#define wxHtmlWindow_GetOpenedPageTitle 3496 +#define wxHtmlWindow_GetRelatedFrame 3497 +#define wxHtmlWindow_HistoryBack 3498 +#define wxHtmlWindow_HistoryCanBack 3499 +#define wxHtmlWindow_HistoryCanForward 3500 +#define wxHtmlWindow_HistoryClear 3501 +#define wxHtmlWindow_HistoryForward 3502 +#define wxHtmlWindow_LoadFile 3503 +#define wxHtmlWindow_LoadPage 3504 +#define wxHtmlWindow_SelectAll 3505 +#define wxHtmlWindow_SelectionToText 3506 +#define wxHtmlWindow_SelectLine 3507 +#define wxHtmlWindow_SelectWord 3508 +#define wxHtmlWindow_SetBorders 3509 +#define wxHtmlWindow_SetFonts 3510 +#define wxHtmlWindow_SetPage 3511 +#define wxHtmlWindow_SetRelatedFrame 3512 +#define wxHtmlWindow_SetRelatedStatusBar 3513 +#define wxHtmlWindow_ToText 3514 +#define wxHtmlWindow_destroy 3515 +#define wxHtmlLinkEvent_GetLinkInfo 3516 +#define wxSystemSettings_GetColour 3517 +#define wxSystemSettings_GetFont 3518 +#define wxSystemSettings_GetMetric 3519 +#define wxSystemSettings_GetScreenType 3520 +#define wxSystemOptions_GetOption 3521 +#define wxSystemOptions_GetOptionInt 3522 +#define wxSystemOptions_HasOption 3523 +#define wxSystemOptions_IsFalse 3524 +#define wxSystemOptions_SetOption_2_1 3525 +#define wxSystemOptions_SetOption_2_0 3526 +#define wxAuiNotebookEvent_SetSelection 3527 +#define wxAuiNotebookEvent_GetSelection 3528 +#define wxAuiNotebookEvent_SetOldSelection 3529 +#define wxAuiNotebookEvent_GetOldSelection 3530 +#define wxAuiNotebookEvent_SetDragSource 3531 +#define wxAuiNotebookEvent_GetDragSource 3532 +#define wxAuiManagerEvent_SetManager 3533 +#define wxAuiManagerEvent_GetManager 3534 +#define wxAuiManagerEvent_SetPane 3535 +#define wxAuiManagerEvent_GetPane 3536 +#define wxAuiManagerEvent_SetButton 3537 +#define wxAuiManagerEvent_GetButton 3538 +#define wxAuiManagerEvent_SetDC 3539 +#define wxAuiManagerEvent_GetDC 3540 +#define wxAuiManagerEvent_Veto 3541 +#define wxAuiManagerEvent_GetVeto 3542 +#define wxAuiManagerEvent_SetCanVeto 3543 +#define wxAuiManagerEvent_CanVeto 3544 +#define wxLogNull_new 3545 +#define wxLogNull_destroy 3546 +#define wxTaskBarIcon_new 3547 +#define wxTaskBarIcon_destruct 3548 +#define wxTaskBarIcon_PopupMenu 3549 +#define wxTaskBarIcon_RemoveIcon 3550 +#define wxTaskBarIcon_SetIcon 3551 +#define wxLocale_new_0 3552 +#define wxLocale_new_2 3554 +#define wxLocale_destruct 3555 +#define wxLocale_Init 3557 +#define wxLocale_AddCatalog_1 3558 +#define wxLocale_AddCatalog_3 3559 +#define wxLocale_AddCatalogLookupPathPrefix 3560 +#define wxLocale_GetCanonicalName 3561 +#define wxLocale_GetLanguage 3562 +#define wxLocale_GetLanguageName 3563 +#define wxLocale_GetLocale 3564 +#define wxLocale_GetName 3565 +#define wxLocale_GetString_2 3566 +#define wxLocale_GetString_4 3567 +#define wxLocale_GetHeaderValue 3568 +#define wxLocale_GetSysName 3569 +#define wxLocale_GetSystemEncoding 3570 +#define wxLocale_GetSystemEncodingName 3571 +#define wxLocale_GetSystemLanguage 3572 +#define wxLocale_IsLoaded 3573 +#define wxLocale_IsOk 3574 +#define wxActivateEvent_GetActive 3575 +#define wxPopupWindow_new_2 3577 +#define wxPopupWindow_new_0 3578 +#define wxPopupWindow_destruct 3580 +#define wxPopupWindow_Create 3581 +#define wxPopupWindow_Position 3582 +#define wxPopupTransientWindow_new_0 3583 +#define wxPopupTransientWindow_new_2 3584 +#define wxPopupTransientWindow_destruct 3585 +#define wxPopupTransientWindow_Popup 3586 +#define wxPopupTransientWindow_Dismiss 3587 +#define wxOverlay_new 3588 +#define wxOverlay_destruct 3589 +#define wxOverlay_Reset 3590 +#define wxDCOverlay_new_6 3591 +#define wxDCOverlay_new_2 3592 +#define wxDCOverlay_destruct 3593 +#define wxDCOverlay_Clear 3594 diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp index c5bad41573..f81d0bbbd9 100644 --- a/lib/wx/c_src/wxe_impl.cpp +++ b/lib/wx/c_src/wxe_impl.cpp @@ -225,9 +225,9 @@ void handle_event_callback(ErlDrvPort port, ErlDrvTermData process) if(driver_monitor_process(port, process, &monitor) == 0) { // Should we be able to handle commands when recursing? probably // fprintf(stderr, "\r\nCB EV Start %lu \r\n", process);fflush(stderr); - app->recurse_level += 2; + app->recurse_level++; app->dispatch_cb(wxe_queue, process); - app->recurse_level -= 2; + app->recurse_level--; // fprintf(stderr, "CB EV done %lu \r\n", process);fflush(stderr); driver_demonitor_process(port, &monitor); } diff --git a/lib/wx/src/gen/wxToolBar.erl b/lib/wx/src/gen/wxToolBar.erl index 5c079fec1e..bee20b97f4 100644 --- a/lib/wx/src/gen/wxToolBar.erl +++ b/lib/wx/src/gen/wxToolBar.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2013. All Rights Reserved. +%% Copyright Ericsson AB 2008-2015. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -31,14 +31,15 @@ -module(wxToolBar). -include("wxe.hrl"). -export([addCheckTool/4,addCheckTool/5,addControl/2,addRadioTool/4,addRadioTool/5, - addSeparator/1,addTool/2,addTool/3,addTool/4,addTool/5,addTool/6,addTool/7, - deleteTool/2,deleteToolByPos/2,enableTool/3,findById/2,findControl/2, - findToolForPosition/3,getMargins/1,getToolBitmapSize/1,getToolEnabled/2, - getToolLongHelp/2,getToolPacking/1,getToolPos/2,getToolSeparation/1, - getToolShortHelp/2,getToolSize/1,getToolState/2,insertControl/3,insertSeparator/2, - insertTool/3,insertTool/4,insertTool/5,insertTool/6,realize/1,removeTool/2, - setMargins/3,setToolBitmapSize/2,setToolLongHelp/3,setToolPacking/2, - setToolSeparation/2,setToolShortHelp/3,toggleTool/3]). + addSeparator/1,addStretchableSpace/1,addTool/2,addTool/3,addTool/4, + addTool/5,addTool/6,addTool/7,deleteTool/2,deleteToolByPos/2,enableTool/3, + findById/2,findControl/2,findToolForPosition/3,getMargins/1,getToolBitmapSize/1, + getToolEnabled/2,getToolLongHelp/2,getToolPacking/1,getToolPos/2, + getToolSeparation/1,getToolShortHelp/2,getToolSize/1,getToolState/2, + insertControl/3,insertSeparator/2,insertStretchableSpace/2,insertTool/3, + insertTool/4,insertTool/5,insertTool/6,realize/1,removeTool/2,setMargins/3, + setToolBitmapSize/2,setToolLongHelp/3,setToolPacking/2,setToolSeparation/2, + setToolShortHelp/3,toggleTool/3]). %% inherited exports -export([cacheBestSize/2,captureMouse/1,center/1,center/2,centerOnParent/1, @@ -328,6 +329,23 @@ addRadioTool(#wx_ref{type=ThisT,ref=ThisRef},Toolid,Label,#wx_ref{type=BitmapT,r wxe_util:call(?wxToolBar_AddRadioTool, <<ThisRef:32/?UI,Toolid:32/?UI,(byte_size(Label_UC)):32/?UI,(Label_UC)/binary, 0:(((8- ((4+byte_size(Label_UC)) band 16#7)) band 16#7))/unit:8,BitmapRef:32/?UI, 0:32,BinOpt/binary>>). +%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtoolbar.html#wxtoolbaraddstretchablespace">external documentation</a>. +-spec addStretchableSpace(This) -> wx:wx_object() when + This::wxToolBar(). +addStretchableSpace(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxToolBar), + wxe_util:call(?wxToolBar_AddStretchableSpace, + <<ThisRef:32/?UI>>). + +%% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtoolbar.html#wxtoolbarinsertstretchablespace">external documentation</a>. +-spec insertStretchableSpace(This, Pos) -> wx:wx_object() when + This::wxToolBar(), Pos::integer(). +insertStretchableSpace(#wx_ref{type=ThisT,ref=ThisRef},Pos) + when is_integer(Pos) -> + ?CLASS(ThisT,wxToolBar), + wxe_util:call(?wxToolBar_InsertStretchableSpace, + <<ThisRef:32/?UI,Pos:32/?UI>>). + %% @doc See <a href="http://www.wxwidgets.org/manuals/2.8.12/wx_wxtoolbar.html#wxtoolbardeletetool">external documentation</a>. -spec deleteTool(This, Toolid) -> boolean() when This::wxToolBar(), Toolid::integer(). diff --git a/lib/wx/src/gen/wxe_debug.hrl b/lib/wx/src/gen/wxe_debug.hrl index 6c7602acd3..375adde47d 100644 --- a/lib/wx/src/gen/wxe_debug.hrl +++ b/lib/wx/src/gen/wxe_debug.hrl @@ -863,2513 +863,2515 @@ wxdebug_table() -> {981, {wxToolBar, addTool_6, 6}}, {982, {wxToolBar, addCheckTool, 4}}, {983, {wxToolBar, addRadioTool, 4}}, - {984, {wxToolBar, deleteTool, 1}}, - {985, {wxToolBar, deleteToolByPos, 1}}, - {986, {wxToolBar, enableTool, 2}}, - {987, {wxToolBar, findById, 1}}, - {988, {wxToolBar, findControl, 1}}, - {989, {wxToolBar, findToolForPosition, 2}}, - {990, {wxToolBar, getToolSize, 0}}, - {991, {wxToolBar, getToolBitmapSize, 0}}, - {992, {wxToolBar, getMargins, 0}}, - {993, {wxToolBar, getToolEnabled, 1}}, - {994, {wxToolBar, getToolLongHelp, 1}}, - {995, {wxToolBar, getToolPacking, 0}}, - {996, {wxToolBar, getToolPos, 1}}, - {997, {wxToolBar, getToolSeparation, 0}}, - {998, {wxToolBar, getToolShortHelp, 1}}, - {999, {wxToolBar, getToolState, 1}}, - {1000, {wxToolBar, insertControl, 2}}, - {1001, {wxToolBar, insertSeparator, 1}}, - {1002, {wxToolBar, insertTool_5, 5}}, - {1003, {wxToolBar, insertTool_2, 2}}, - {1004, {wxToolBar, insertTool_4, 4}}, - {1005, {wxToolBar, realize, 0}}, - {1006, {wxToolBar, removeTool, 1}}, - {1007, {wxToolBar, setMargins, 2}}, - {1008, {wxToolBar, setToolBitmapSize, 1}}, - {1009, {wxToolBar, setToolLongHelp, 2}}, - {1010, {wxToolBar, setToolPacking, 1}}, - {1011, {wxToolBar, setToolShortHelp, 2}}, - {1012, {wxToolBar, setToolSeparation, 1}}, - {1013, {wxToolBar, toggleTool, 2}}, - {1015, {wxStatusBar, new_0, 0}}, - {1016, {wxStatusBar, new_2, 2}}, - {1018, {wxStatusBar, destruct, 0}}, - {1019, {wxStatusBar, create, 2}}, - {1020, {wxStatusBar, getFieldRect, 2}}, - {1021, {wxStatusBar, getFieldsCount, 0}}, - {1022, {wxStatusBar, getStatusText, 1}}, - {1023, {wxStatusBar, popStatusText, 1}}, - {1024, {wxStatusBar, pushStatusText, 2}}, - {1025, {wxStatusBar, setFieldsCount, 2}}, - {1026, {wxStatusBar, setMinHeight, 1}}, - {1027, {wxStatusBar, setStatusText, 2}}, - {1028, {wxStatusBar, setStatusWidths, 2}}, - {1029, {wxStatusBar, setStatusStyles, 2}}, - {1030, {wxBitmap, new_0, 0}}, - {1031, {wxBitmap, new_3, 3}}, - {1032, {wxBitmap, new_4, 4}}, - {1033, {wxBitmap, new_2_0, 2}}, - {1034, {wxBitmap, new_2_1, 2}}, - {1035, {wxBitmap, destruct, 0}}, - {1036, {wxBitmap, convertToImage, 0}}, - {1037, {wxBitmap, copyFromIcon, 1}}, - {1038, {wxBitmap, create, 3}}, - {1039, {wxBitmap, getDepth, 0}}, - {1040, {wxBitmap, getHeight, 0}}, - {1041, {wxBitmap, getPalette, 0}}, - {1042, {wxBitmap, getMask, 0}}, - {1043, {wxBitmap, getWidth, 0}}, - {1044, {wxBitmap, getSubBitmap, 1}}, - {1045, {wxBitmap, loadFile, 2}}, - {1046, {wxBitmap, ok, 0}}, - {1047, {wxBitmap, saveFile, 3}}, - {1048, {wxBitmap, setDepth, 1}}, - {1049, {wxBitmap, setHeight, 1}}, - {1050, {wxBitmap, setMask, 1}}, - {1051, {wxBitmap, setPalette, 1}}, - {1052, {wxBitmap, setWidth, 1}}, - {1053, {wxIcon, new_0, 0}}, - {1054, {wxIcon, new_2, 2}}, - {1055, {wxIcon, new_1, 1}}, - {1056, {wxIcon, copyFromBitmap, 1}}, - {1057, {wxIcon, 'Destroy', undefined}}, - {1058, {wxIconBundle, new_0, 0}}, - {1059, {wxIconBundle, new_2, 2}}, - {1060, {wxIconBundle, new_1_0, 1}}, - {1061, {wxIconBundle, new_1_1, 1}}, - {1062, {wxIconBundle, destruct, 0}}, - {1063, {wxIconBundle, addIcon_2, 2}}, - {1064, {wxIconBundle, addIcon_1, 1}}, - {1065, {wxIconBundle, getIcon_1_1, 1}}, - {1066, {wxIconBundle, getIcon_1_0, 1}}, - {1067, {wxCursor, new_0, 0}}, - {1068, {wxCursor, new_1_0, 1}}, - {1069, {wxCursor, new_1_1, 1}}, - {1070, {wxCursor, new_4, 4}}, - {1071, {wxCursor, destruct, 0}}, - {1072, {wxCursor, ok, 0}}, - {1073, {wxMask, new_0, 0}}, - {1074, {wxMask, new_2_1, 2}}, - {1075, {wxMask, new_2_0, 2}}, - {1076, {wxMask, new_1, 1}}, - {1077, {wxMask, destruct, 0}}, - {1078, {wxMask, create_2_1, 2}}, - {1079, {wxMask, create_2_0, 2}}, - {1080, {wxMask, create_1, 1}}, - {1081, {wxImage, new_0, 0}}, - {1082, {wxImage, new_3_0, 3}}, - {1083, {wxImage, new_4, 4}}, - {1084, {wxImage, new_5, 5}}, - {1085, {wxImage, new_2, 2}}, - {1086, {wxImage, new_3_1, 3}}, - {1087, {wxImage, blur, 1}}, - {1088, {wxImage, blurHorizontal, 1}}, - {1089, {wxImage, blurVertical, 1}}, - {1090, {wxImage, convertAlphaToMask, 1}}, - {1091, {wxImage, convertToGreyscale, 1}}, - {1092, {wxImage, convertToMono, 3}}, - {1093, {wxImage, copy, 0}}, - {1094, {wxImage, create_3, 3}}, - {1095, {wxImage, create_4, 4}}, - {1096, {wxImage, create_5, 5}}, - {1097, {wxImage, 'Destroy', 0}}, - {1098, {wxImage, findFirstUnusedColour, 4}}, - {1099, {wxImage, getImageExtWildcard, 0}}, - {1100, {wxImage, getAlpha_2, 2}}, - {1101, {wxImage, getAlpha_0, 0}}, - {1102, {wxImage, getBlue, 2}}, - {1103, {wxImage, getData, 0}}, - {1104, {wxImage, getGreen, 2}}, - {1105, {wxImage, getImageCount, 2}}, - {1106, {wxImage, getHeight, 0}}, - {1107, {wxImage, getMaskBlue, 0}}, - {1108, {wxImage, getMaskGreen, 0}}, - {1109, {wxImage, getMaskRed, 0}}, - {1110, {wxImage, getOrFindMaskColour, 3}}, - {1111, {wxImage, getPalette, 0}}, - {1112, {wxImage, getRed, 2}}, - {1113, {wxImage, getSubImage, 1}}, - {1114, {wxImage, getWidth, 0}}, - {1115, {wxImage, hasAlpha, 0}}, - {1116, {wxImage, hasMask, 0}}, - {1117, {wxImage, getOption, 1}}, - {1118, {wxImage, getOptionInt, 1}}, - {1119, {wxImage, hasOption, 1}}, - {1120, {wxImage, initAlpha, 0}}, - {1121, {wxImage, initStandardHandlers, 0}}, - {1122, {wxImage, isTransparent, 3}}, - {1123, {wxImage, loadFile_2, 2}}, - {1124, {wxImage, loadFile_3, 3}}, - {1125, {wxImage, ok, 0}}, - {1126, {wxImage, removeHandler, 1}}, - {1127, {wxImage, mirror, 1}}, - {1128, {wxImage, replace, 6}}, - {1129, {wxImage, rescale, 3}}, - {1130, {wxImage, resize, 3}}, - {1131, {wxImage, rotate, 3}}, - {1132, {wxImage, rotateHue, 1}}, - {1133, {wxImage, rotate90, 1}}, - {1134, {wxImage, saveFile_1, 1}}, - {1135, {wxImage, saveFile_2_0, 2}}, - {1136, {wxImage, saveFile_2_1, 2}}, - {1137, {wxImage, scale, 3}}, - {1138, {wxImage, size, 3}}, - {1139, {wxImage, setAlpha_3, 3}}, - {1140, {wxImage, setAlpha_2, 2}}, - {1141, {wxImage, setData_2, 2}}, - {1142, {wxImage, setData_4, 4}}, - {1143, {wxImage, setMask, 1}}, - {1144, {wxImage, setMaskColour, 3}}, - {1145, {wxImage, setMaskFromImage, 4}}, - {1146, {wxImage, setOption_2_1, 2}}, - {1147, {wxImage, setOption_2_0, 2}}, - {1148, {wxImage, setPalette, 1}}, - {1149, {wxImage, setRGB_5, 5}}, - {1150, {wxImage, setRGB_4, 4}}, - {1151, {wxImage, 'Destroy', undefined}}, - {1152, {wxBrush, new_0, 0}}, - {1153, {wxBrush, new_2, 2}}, - {1154, {wxBrush, new_1, 1}}, - {1156, {wxBrush, destruct, 0}}, - {1157, {wxBrush, getColour, 0}}, - {1158, {wxBrush, getStipple, 0}}, - {1159, {wxBrush, getStyle, 0}}, - {1160, {wxBrush, isHatch, 0}}, - {1161, {wxBrush, isOk, 0}}, - {1162, {wxBrush, setColour_1, 1}}, - {1163, {wxBrush, setColour_3, 3}}, - {1164, {wxBrush, setStipple, 1}}, - {1165, {wxBrush, setStyle, 1}}, - {1166, {wxPen, new_0, 0}}, - {1167, {wxPen, new_2, 2}}, - {1168, {wxPen, destruct, 0}}, - {1169, {wxPen, getCap, 0}}, - {1170, {wxPen, getColour, 0}}, - {1171, {wxPen, getJoin, 0}}, - {1172, {wxPen, getStyle, 0}}, - {1173, {wxPen, getWidth, 0}}, - {1174, {wxPen, isOk, 0}}, - {1175, {wxPen, setCap, 1}}, - {1176, {wxPen, setColour_1, 1}}, - {1177, {wxPen, setColour_3, 3}}, - {1178, {wxPen, setJoin, 1}}, - {1179, {wxPen, setStyle, 1}}, - {1180, {wxPen, setWidth, 1}}, - {1181, {wxRegion, new_0, 0}}, - {1182, {wxRegion, new_4, 4}}, - {1183, {wxRegion, new_2, 2}}, - {1184, {wxRegion, new_1_1, 1}}, - {1186, {wxRegion, new_1_0, 1}}, - {1188, {wxRegion, destruct, 0}}, - {1189, {wxRegion, clear, 0}}, - {1190, {wxRegion, contains_2, 2}}, - {1191, {wxRegion, contains_1_0, 1}}, - {1192, {wxRegion, contains_4, 4}}, - {1193, {wxRegion, contains_1_1, 1}}, - {1194, {wxRegion, convertToBitmap, 0}}, - {1195, {wxRegion, getBox, 0}}, - {1196, {wxRegion, intersect_4, 4}}, - {1197, {wxRegion, intersect_1_1, 1}}, - {1198, {wxRegion, intersect_1_0, 1}}, - {1199, {wxRegion, isEmpty, 0}}, - {1200, {wxRegion, subtract_4, 4}}, - {1201, {wxRegion, subtract_1_1, 1}}, - {1202, {wxRegion, subtract_1_0, 1}}, - {1203, {wxRegion, offset_2, 2}}, - {1204, {wxRegion, offset_1, 1}}, - {1205, {wxRegion, union_4, 4}}, - {1206, {wxRegion, union_1_2, 1}}, - {1207, {wxRegion, union_1_1, 1}}, - {1208, {wxRegion, union_1_0, 1}}, - {1209, {wxRegion, union_3, 3}}, - {1210, {wxRegion, xor_4, 4}}, - {1211, {wxRegion, xor_1_1, 1}}, - {1212, {wxRegion, xor_1_0, 1}}, - {1213, {wxAcceleratorTable, new_0, 0}}, - {1214, {wxAcceleratorTable, new_2, 2}}, - {1215, {wxAcceleratorTable, destruct, 0}}, - {1216, {wxAcceleratorTable, ok, 0}}, - {1217, {wxAcceleratorEntry, new_1_0, 1}}, - {1218, {wxAcceleratorEntry, new_1_1, 1}}, - {1219, {wxAcceleratorEntry, getCommand, 0}}, - {1220, {wxAcceleratorEntry, getFlags, 0}}, - {1221, {wxAcceleratorEntry, getKeyCode, 0}}, - {1222, {wxAcceleratorEntry, set, 4}}, - {1223, {wxAcceleratorEntry, 'Destroy', undefined}}, - {1228, {wxCaret, new_3, 3}}, - {1229, {wxCaret, new_2, 2}}, - {1231, {wxCaret, destruct, 0}}, - {1232, {wxCaret, create_3, 3}}, - {1233, {wxCaret, create_2, 2}}, - {1234, {wxCaret, getBlinkTime, 0}}, - {1236, {wxCaret, getPosition, 0}}, - {1238, {wxCaret, getSize, 0}}, - {1239, {wxCaret, getWindow, 0}}, - {1240, {wxCaret, hide, 0}}, - {1241, {wxCaret, isOk, 0}}, - {1242, {wxCaret, isVisible, 0}}, - {1243, {wxCaret, move_2, 2}}, - {1244, {wxCaret, move_1, 1}}, - {1245, {wxCaret, setBlinkTime, 1}}, - {1246, {wxCaret, setSize_2, 2}}, - {1247, {wxCaret, setSize_1, 1}}, - {1248, {wxCaret, show, 1}}, - {1249, {wxSizer, add_2_1, 2}}, - {1250, {wxSizer, add_2_0, 2}}, - {1251, {wxSizer, add_3, 3}}, - {1252, {wxSizer, add_2_3, 2}}, - {1253, {wxSizer, add_2_2, 2}}, - {1254, {wxSizer, addSpacer, 1}}, - {1255, {wxSizer, addStretchSpacer, 1}}, - {1256, {wxSizer, calcMin, 0}}, - {1257, {wxSizer, clear, 1}}, - {1258, {wxSizer, detach_1_2, 1}}, - {1259, {wxSizer, detach_1_1, 1}}, - {1260, {wxSizer, detach_1_0, 1}}, - {1261, {wxSizer, fit, 1}}, - {1262, {wxSizer, fitInside, 1}}, - {1263, {wxSizer, getChildren, 0}}, - {1264, {wxSizer, getItem_2_1, 2}}, - {1265, {wxSizer, getItem_2_0, 2}}, - {1266, {wxSizer, getItem_1, 1}}, - {1267, {wxSizer, getSize, 0}}, - {1268, {wxSizer, getPosition, 0}}, - {1269, {wxSizer, getMinSize, 0}}, - {1270, {wxSizer, hide_2_0, 2}}, - {1271, {wxSizer, hide_2_1, 2}}, - {1272, {wxSizer, hide_1, 1}}, - {1273, {wxSizer, insert_3_1, 3}}, - {1274, {wxSizer, insert_3_0, 3}}, - {1275, {wxSizer, insert_4, 4}}, - {1276, {wxSizer, insert_3_3, 3}}, - {1277, {wxSizer, insert_3_2, 3}}, - {1278, {wxSizer, insert_2, 2}}, - {1279, {wxSizer, insertSpacer, 2}}, - {1280, {wxSizer, insertStretchSpacer, 2}}, - {1281, {wxSizer, isShown_1_2, 1}}, - {1282, {wxSizer, isShown_1_1, 1}}, - {1283, {wxSizer, isShown_1_0, 1}}, - {1284, {wxSizer, layout, 0}}, - {1285, {wxSizer, prepend_2_1, 2}}, - {1286, {wxSizer, prepend_2_0, 2}}, - {1287, {wxSizer, prepend_3, 3}}, - {1288, {wxSizer, prepend_2_3, 2}}, - {1289, {wxSizer, prepend_2_2, 2}}, - {1290, {wxSizer, prepend_1, 1}}, - {1291, {wxSizer, prependSpacer, 1}}, - {1292, {wxSizer, prependStretchSpacer, 1}}, - {1293, {wxSizer, recalcSizes, 0}}, - {1294, {wxSizer, remove_1_1, 1}}, - {1295, {wxSizer, remove_1_0, 1}}, - {1296, {wxSizer, replace_3_1, 3}}, - {1297, {wxSizer, replace_3_0, 3}}, - {1298, {wxSizer, replace_2, 2}}, - {1299, {wxSizer, setDimension, 4}}, - {1300, {wxSizer, setMinSize_2, 2}}, - {1301, {wxSizer, setMinSize_1, 1}}, - {1302, {wxSizer, setItemMinSize_3_2, 3}}, - {1303, {wxSizer, setItemMinSize_2_2, 2}}, - {1304, {wxSizer, setItemMinSize_3_1, 3}}, - {1305, {wxSizer, setItemMinSize_2_1, 2}}, - {1306, {wxSizer, setItemMinSize_3_0, 3}}, - {1307, {wxSizer, setItemMinSize_2_0, 2}}, - {1308, {wxSizer, setSizeHints, 1}}, - {1309, {wxSizer, setVirtualSizeHints, 1}}, - {1310, {wxSizer, show_2_2, 2}}, - {1311, {wxSizer, show_2_1, 2}}, - {1312, {wxSizer, show_2_0, 2}}, - {1313, {wxSizer, show_1, 1}}, - {1314, {wxSizerFlags, new, 1}}, - {1315, {wxSizerFlags, align, 1}}, - {1316, {wxSizerFlags, border_2, 2}}, - {1317, {wxSizerFlags, border_1, 1}}, - {1318, {wxSizerFlags, center, 0}}, - {1319, {wxSizerFlags, centre, 0}}, - {1320, {wxSizerFlags, expand, 0}}, - {1321, {wxSizerFlags, left, 0}}, - {1322, {wxSizerFlags, proportion, 1}}, - {1323, {wxSizerFlags, right, 0}}, - {1324, {wxSizerFlags, 'Destroy', undefined}}, - {1325, {wxSizerItem, new_5_1, 5}}, - {1326, {wxSizerItem, new_2_1, 2}}, - {1327, {wxSizerItem, new_5_0, 5}}, - {1328, {wxSizerItem, new_2_0, 2}}, - {1329, {wxSizerItem, new_6, 6}}, - {1330, {wxSizerItem, new_3, 3}}, - {1331, {wxSizerItem, new_0, 0}}, - {1332, {wxSizerItem, destruct, 0}}, - {1333, {wxSizerItem, calcMin, 0}}, - {1334, {wxSizerItem, deleteWindows, 0}}, - {1335, {wxSizerItem, detachSizer, 0}}, - {1336, {wxSizerItem, getBorder, 0}}, - {1337, {wxSizerItem, getFlag, 0}}, - {1338, {wxSizerItem, getMinSize, 0}}, - {1339, {wxSizerItem, getPosition, 0}}, - {1340, {wxSizerItem, getProportion, 0}}, - {1341, {wxSizerItem, getRatio, 0}}, - {1342, {wxSizerItem, getRect, 0}}, - {1343, {wxSizerItem, getSize, 0}}, - {1344, {wxSizerItem, getSizer, 0}}, - {1345, {wxSizerItem, getSpacer, 0}}, - {1346, {wxSizerItem, getUserData, 0}}, - {1347, {wxSizerItem, getWindow, 0}}, - {1348, {wxSizerItem, isSizer, 0}}, - {1349, {wxSizerItem, isShown, 0}}, - {1350, {wxSizerItem, isSpacer, 0}}, - {1351, {wxSizerItem, isWindow, 0}}, - {1352, {wxSizerItem, setBorder, 1}}, - {1353, {wxSizerItem, setDimension, 2}}, - {1354, {wxSizerItem, setFlag, 1}}, - {1355, {wxSizerItem, setInitSize, 2}}, - {1356, {wxSizerItem, setMinSize_1, 1}}, - {1357, {wxSizerItem, setMinSize_2, 2}}, - {1358, {wxSizerItem, setProportion, 1}}, - {1359, {wxSizerItem, setRatio_2, 2}}, - {1360, {wxSizerItem, setRatio_1_1, 1}}, - {1361, {wxSizerItem, setRatio_1_0, 1}}, - {1362, {wxSizerItem, setSizer, 1}}, - {1363, {wxSizerItem, setSpacer_1, 1}}, - {1364, {wxSizerItem, setSpacer_2, 2}}, - {1365, {wxSizerItem, setWindow, 1}}, - {1366, {wxSizerItem, show, 1}}, - {1367, {wxBoxSizer, new, 1}}, - {1368, {wxBoxSizer, getOrientation, 0}}, - {1369, {wxBoxSizer, 'Destroy', undefined}}, - {1370, {wxStaticBoxSizer, new_2, 2}}, - {1371, {wxStaticBoxSizer, new_3, 3}}, - {1372, {wxStaticBoxSizer, getStaticBox, 0}}, - {1373, {wxStaticBoxSizer, 'Destroy', undefined}}, - {1374, {wxGridSizer, new_4, 4}}, - {1375, {wxGridSizer, new_2, 2}}, - {1376, {wxGridSizer, getCols, 0}}, - {1377, {wxGridSizer, getHGap, 0}}, - {1378, {wxGridSizer, getRows, 0}}, - {1379, {wxGridSizer, getVGap, 0}}, - {1380, {wxGridSizer, setCols, 1}}, - {1381, {wxGridSizer, setHGap, 1}}, - {1382, {wxGridSizer, setRows, 1}}, - {1383, {wxGridSizer, setVGap, 1}}, - {1384, {wxGridSizer, 'Destroy', undefined}}, - {1385, {wxFlexGridSizer, new_4, 4}}, - {1386, {wxFlexGridSizer, new_2, 2}}, - {1387, {wxFlexGridSizer, addGrowableCol, 2}}, - {1388, {wxFlexGridSizer, addGrowableRow, 2}}, - {1389, {wxFlexGridSizer, getFlexibleDirection, 0}}, - {1390, {wxFlexGridSizer, getNonFlexibleGrowMode, 0}}, - {1391, {wxFlexGridSizer, removeGrowableCol, 1}}, - {1392, {wxFlexGridSizer, removeGrowableRow, 1}}, - {1393, {wxFlexGridSizer, setFlexibleDirection, 1}}, - {1394, {wxFlexGridSizer, setNonFlexibleGrowMode, 1}}, - {1395, {wxFlexGridSizer, 'Destroy', undefined}}, - {1396, {wxGridBagSizer, new, 1}}, - {1397, {wxGridBagSizer, add_3_2, 3}}, - {1398, {wxGridBagSizer, add_3_1, 3}}, - {1399, {wxGridBagSizer, add_4, 4}}, - {1400, {wxGridBagSizer, add_1_0, 1}}, - {1401, {wxGridBagSizer, add_2_1, 2}}, - {1402, {wxGridBagSizer, add_2_0, 2}}, - {1403, {wxGridBagSizer, add_3_0, 3}}, - {1404, {wxGridBagSizer, add_1_1, 1}}, - {1405, {wxGridBagSizer, calcMin, 0}}, - {1406, {wxGridBagSizer, checkForIntersection_2, 2}}, - {1407, {wxGridBagSizer, checkForIntersection_3, 3}}, - {1408, {wxGridBagSizer, findItem_1_1, 1}}, - {1409, {wxGridBagSizer, findItem_1_0, 1}}, - {1410, {wxGridBagSizer, findItemAtPoint, 1}}, - {1411, {wxGridBagSizer, findItemAtPosition, 1}}, - {1412, {wxGridBagSizer, findItemWithData, 1}}, - {1413, {wxGridBagSizer, getCellSize, 2}}, - {1414, {wxGridBagSizer, getEmptyCellSize, 0}}, - {1415, {wxGridBagSizer, getItemPosition_1_2, 1}}, - {1416, {wxGridBagSizer, getItemPosition_1_1, 1}}, - {1417, {wxGridBagSizer, getItemPosition_1_0, 1}}, - {1418, {wxGridBagSizer, getItemSpan_1_2, 1}}, - {1419, {wxGridBagSizer, getItemSpan_1_1, 1}}, - {1420, {wxGridBagSizer, getItemSpan_1_0, 1}}, - {1421, {wxGridBagSizer, setEmptyCellSize, 1}}, - {1422, {wxGridBagSizer, setItemPosition_2_2, 2}}, - {1423, {wxGridBagSizer, setItemPosition_2_1, 2}}, - {1424, {wxGridBagSizer, setItemPosition_2_0, 2}}, - {1425, {wxGridBagSizer, setItemSpan_2_2, 2}}, - {1426, {wxGridBagSizer, setItemSpan_2_1, 2}}, - {1427, {wxGridBagSizer, setItemSpan_2_0, 2}}, - {1428, {wxGridBagSizer, 'Destroy', undefined}}, - {1429, {wxStdDialogButtonSizer, new, 0}}, - {1430, {wxStdDialogButtonSizer, addButton, 1}}, - {1431, {wxStdDialogButtonSizer, realize, 0}}, - {1432, {wxStdDialogButtonSizer, setAffirmativeButton, 1}}, - {1433, {wxStdDialogButtonSizer, setCancelButton, 1}}, - {1434, {wxStdDialogButtonSizer, setNegativeButton, 1}}, - {1435, {wxStdDialogButtonSizer, 'Destroy', undefined}}, - {1436, {wxFont, new_0, 0}}, - {1437, {wxFont, new_1, 1}}, - {1438, {wxFont, new_5, 5}}, - {1440, {wxFont, destruct, 0}}, - {1441, {wxFont, isFixedWidth, 0}}, - {1442, {wxFont, getDefaultEncoding, 0}}, - {1443, {wxFont, getFaceName, 0}}, - {1444, {wxFont, getFamily, 0}}, - {1445, {wxFont, getNativeFontInfoDesc, 0}}, - {1446, {wxFont, getNativeFontInfoUserDesc, 0}}, - {1447, {wxFont, getPointSize, 0}}, - {1448, {wxFont, getStyle, 0}}, - {1449, {wxFont, getUnderlined, 0}}, - {1450, {wxFont, getWeight, 0}}, - {1451, {wxFont, ok, 0}}, - {1452, {wxFont, setDefaultEncoding, 1}}, - {1453, {wxFont, setFaceName, 1}}, - {1454, {wxFont, setFamily, 1}}, - {1455, {wxFont, setPointSize, 1}}, - {1456, {wxFont, setStyle, 1}}, - {1457, {wxFont, setUnderlined, 1}}, - {1458, {wxFont, setWeight, 1}}, - {1459, {wxToolTip, enable, 1}}, - {1460, {wxToolTip, setDelay, 1}}, - {1461, {wxToolTip, new, 1}}, - {1462, {wxToolTip, setTip, 1}}, - {1463, {wxToolTip, getTip, 0}}, - {1464, {wxToolTip, getWindow, 0}}, - {1465, {wxToolTip, 'Destroy', undefined}}, - {1467, {wxButton, new_3, 3}}, - {1468, {wxButton, new_0, 0}}, - {1469, {wxButton, destruct, 0}}, - {1470, {wxButton, create, 3}}, - {1471, {wxButton, getDefaultSize, 0}}, - {1472, {wxButton, setDefault, 0}}, - {1473, {wxButton, setLabel, 1}}, - {1475, {wxBitmapButton, new_4, 4}}, - {1476, {wxBitmapButton, new_0, 0}}, - {1477, {wxBitmapButton, create, 4}}, - {1478, {wxBitmapButton, getBitmapDisabled, 0}}, - {1480, {wxBitmapButton, getBitmapFocus, 0}}, - {1482, {wxBitmapButton, getBitmapLabel, 0}}, - {1484, {wxBitmapButton, getBitmapSelected, 0}}, - {1486, {wxBitmapButton, setBitmapDisabled, 1}}, - {1487, {wxBitmapButton, setBitmapFocus, 1}}, - {1488, {wxBitmapButton, setBitmapLabel, 1}}, - {1489, {wxBitmapButton, setBitmapSelected, 1}}, - {1490, {wxBitmapButton, 'Destroy', undefined}}, - {1491, {wxToggleButton, new_0, 0}}, - {1492, {wxToggleButton, new_4, 4}}, - {1493, {wxToggleButton, create, 4}}, - {1494, {wxToggleButton, getValue, 0}}, - {1495, {wxToggleButton, setValue, 1}}, - {1496, {wxToggleButton, 'Destroy', undefined}}, - {1497, {wxCalendarCtrl, new_0, 0}}, - {1498, {wxCalendarCtrl, new_3, 3}}, - {1499, {wxCalendarCtrl, create, 3}}, - {1500, {wxCalendarCtrl, destruct, 0}}, - {1501, {wxCalendarCtrl, setDate, 1}}, - {1502, {wxCalendarCtrl, getDate, 0}}, - {1503, {wxCalendarCtrl, enableYearChange, 1}}, - {1504, {wxCalendarCtrl, enableMonthChange, 1}}, - {1505, {wxCalendarCtrl, enableHolidayDisplay, 1}}, - {1506, {wxCalendarCtrl, setHeaderColours, 2}}, - {1507, {wxCalendarCtrl, getHeaderColourFg, 0}}, - {1508, {wxCalendarCtrl, getHeaderColourBg, 0}}, - {1509, {wxCalendarCtrl, setHighlightColours, 2}}, - {1510, {wxCalendarCtrl, getHighlightColourFg, 0}}, - {1511, {wxCalendarCtrl, getHighlightColourBg, 0}}, - {1512, {wxCalendarCtrl, setHolidayColours, 2}}, - {1513, {wxCalendarCtrl, getHolidayColourFg, 0}}, - {1514, {wxCalendarCtrl, getHolidayColourBg, 0}}, - {1515, {wxCalendarCtrl, getAttr, 1}}, - {1516, {wxCalendarCtrl, setAttr, 2}}, - {1517, {wxCalendarCtrl, setHoliday, 1}}, - {1518, {wxCalendarCtrl, resetAttr, 1}}, - {1519, {wxCalendarCtrl, hitTest, 2}}, - {1520, {wxCalendarDateAttr, new_0, 0}}, - {1521, {wxCalendarDateAttr, new_2_1, 2}}, - {1522, {wxCalendarDateAttr, new_2_0, 2}}, - {1523, {wxCalendarDateAttr, setTextColour, 1}}, - {1524, {wxCalendarDateAttr, setBackgroundColour, 1}}, - {1525, {wxCalendarDateAttr, setBorderColour, 1}}, - {1526, {wxCalendarDateAttr, setFont, 1}}, - {1527, {wxCalendarDateAttr, setBorder, 1}}, - {1528, {wxCalendarDateAttr, setHoliday, 1}}, - {1529, {wxCalendarDateAttr, hasTextColour, 0}}, - {1530, {wxCalendarDateAttr, hasBackgroundColour, 0}}, - {1531, {wxCalendarDateAttr, hasBorderColour, 0}}, - {1532, {wxCalendarDateAttr, hasFont, 0}}, - {1533, {wxCalendarDateAttr, hasBorder, 0}}, - {1534, {wxCalendarDateAttr, isHoliday, 0}}, - {1535, {wxCalendarDateAttr, getTextColour, 0}}, - {1536, {wxCalendarDateAttr, getBackgroundColour, 0}}, - {1537, {wxCalendarDateAttr, getBorderColour, 0}}, - {1538, {wxCalendarDateAttr, getFont, 0}}, - {1539, {wxCalendarDateAttr, getBorder, 0}}, - {1540, {wxCalendarDateAttr, 'Destroy', undefined}}, - {1542, {wxCheckBox, new_4, 4}}, - {1543, {wxCheckBox, new_0, 0}}, - {1544, {wxCheckBox, create, 4}}, - {1545, {wxCheckBox, getValue, 0}}, - {1546, {wxCheckBox, get3StateValue, 0}}, - {1547, {wxCheckBox, is3rdStateAllowedForUser, 0}}, - {1548, {wxCheckBox, is3State, 0}}, - {1549, {wxCheckBox, isChecked, 0}}, - {1550, {wxCheckBox, setValue, 1}}, - {1551, {wxCheckBox, set3StateValue, 1}}, - {1552, {wxCheckBox, 'Destroy', undefined}}, - {1553, {wxCheckListBox, new_0, 0}}, - {1555, {wxCheckListBox, new_3, 3}}, - {1556, {wxCheckListBox, check, 2}}, - {1557, {wxCheckListBox, isChecked, 1}}, - {1558, {wxCheckListBox, 'Destroy', undefined}}, - {1561, {wxChoice, new_3, 3}}, - {1562, {wxChoice, new_0, 0}}, - {1564, {wxChoice, destruct, 0}}, - {1566, {wxChoice, create, 6}}, - {1567, {wxChoice, delete, 1}}, - {1568, {wxChoice, getColumns, 0}}, - {1569, {wxChoice, setColumns, 1}}, - {1570, {wxComboBox, new_0, 0}}, - {1572, {wxComboBox, new_3, 3}}, - {1573, {wxComboBox, destruct, 0}}, - {1575, {wxComboBox, create, 7}}, - {1576, {wxComboBox, canCopy, 0}}, - {1577, {wxComboBox, canCut, 0}}, - {1578, {wxComboBox, canPaste, 0}}, - {1579, {wxComboBox, canRedo, 0}}, - {1580, {wxComboBox, canUndo, 0}}, - {1581, {wxComboBox, copy, 0}}, - {1582, {wxComboBox, cut, 0}}, - {1583, {wxComboBox, getInsertionPoint, 0}}, - {1584, {wxComboBox, getLastPosition, 0}}, - {1585, {wxComboBox, getValue, 0}}, - {1586, {wxComboBox, paste, 0}}, - {1587, {wxComboBox, redo, 0}}, - {1588, {wxComboBox, replace, 3}}, - {1589, {wxComboBox, remove, 2}}, - {1590, {wxComboBox, setInsertionPoint, 1}}, - {1591, {wxComboBox, setInsertionPointEnd, 0}}, - {1592, {wxComboBox, setSelection_1, 1}}, - {1593, {wxComboBox, setSelection_2, 2}}, - {1594, {wxComboBox, setValue, 1}}, - {1595, {wxComboBox, undo, 0}}, - {1596, {wxGauge, new_0, 0}}, - {1597, {wxGauge, new_4, 4}}, - {1598, {wxGauge, create, 4}}, - {1599, {wxGauge, getBezelFace, 0}}, - {1600, {wxGauge, getRange, 0}}, - {1601, {wxGauge, getShadowWidth, 0}}, - {1602, {wxGauge, getValue, 0}}, - {1603, {wxGauge, isVertical, 0}}, - {1604, {wxGauge, setBezelFace, 1}}, - {1605, {wxGauge, setRange, 1}}, - {1606, {wxGauge, setShadowWidth, 1}}, - {1607, {wxGauge, setValue, 1}}, - {1608, {wxGauge, pulse, 0}}, - {1609, {wxGauge, 'Destroy', undefined}}, - {1610, {wxGenericDirCtrl, new_0, 0}}, - {1611, {wxGenericDirCtrl, new_2, 2}}, - {1612, {wxGenericDirCtrl, destruct, 0}}, - {1613, {wxGenericDirCtrl, create, 2}}, - {1614, {wxGenericDirCtrl, init, 0}}, - {1615, {wxGenericDirCtrl, collapseTree, 0}}, - {1616, {wxGenericDirCtrl, expandPath, 1}}, - {1617, {wxGenericDirCtrl, getDefaultPath, 0}}, - {1618, {wxGenericDirCtrl, getPath, 0}}, - {1619, {wxGenericDirCtrl, getFilePath, 0}}, - {1620, {wxGenericDirCtrl, getFilter, 0}}, - {1621, {wxGenericDirCtrl, getFilterIndex, 0}}, - {1622, {wxGenericDirCtrl, getRootId, 0}}, - {1623, {wxGenericDirCtrl, getTreeCtrl, 0}}, - {1624, {wxGenericDirCtrl, reCreateTree, 0}}, - {1625, {wxGenericDirCtrl, setDefaultPath, 1}}, - {1626, {wxGenericDirCtrl, setFilter, 1}}, - {1627, {wxGenericDirCtrl, setFilterIndex, 1}}, - {1628, {wxGenericDirCtrl, setPath, 1}}, - {1630, {wxStaticBox, new_4, 4}}, - {1631, {wxStaticBox, new_0, 0}}, - {1632, {wxStaticBox, create, 4}}, - {1633, {wxStaticBox, 'Destroy', undefined}}, - {1635, {wxStaticLine, new_2, 2}}, - {1636, {wxStaticLine, new_0, 0}}, - {1637, {wxStaticLine, create, 2}}, - {1638, {wxStaticLine, isVertical, 0}}, - {1639, {wxStaticLine, getDefaultSize, 0}}, - {1640, {wxStaticLine, 'Destroy', undefined}}, - {1643, {wxListBox, new_3, 3}}, - {1644, {wxListBox, new_0, 0}}, - {1646, {wxListBox, destruct, 0}}, - {1648, {wxListBox, create, 6}}, - {1649, {wxListBox, deselect, 1}}, - {1650, {wxListBox, getSelections, 1}}, - {1651, {wxListBox, insertItems, 2}}, - {1652, {wxListBox, isSelected, 1}}, - {1653, {wxListBox, set, 1}}, - {1654, {wxListBox, hitTest, 1}}, - {1655, {wxListBox, setFirstItem_1_0, 1}}, - {1656, {wxListBox, setFirstItem_1_1, 1}}, - {1657, {wxListCtrl, new_0, 0}}, - {1658, {wxListCtrl, new_2, 2}}, - {1659, {wxListCtrl, arrange, 1}}, - {1660, {wxListCtrl, assignImageList, 2}}, - {1661, {wxListCtrl, clearAll, 0}}, - {1662, {wxListCtrl, create, 2}}, - {1663, {wxListCtrl, deleteAllItems, 0}}, - {1664, {wxListCtrl, deleteColumn, 1}}, - {1665, {wxListCtrl, deleteItem, 1}}, - {1666, {wxListCtrl, editLabel, 1}}, - {1667, {wxListCtrl, ensureVisible, 1}}, - {1668, {wxListCtrl, findItem_3_0, 3}}, - {1669, {wxListCtrl, findItem_3_1, 3}}, - {1670, {wxListCtrl, getColumn, 2}}, - {1671, {wxListCtrl, getColumnCount, 0}}, - {1672, {wxListCtrl, getColumnWidth, 1}}, - {1673, {wxListCtrl, getCountPerPage, 0}}, - {1674, {wxListCtrl, getEditControl, 0}}, - {1675, {wxListCtrl, getImageList, 1}}, - {1676, {wxListCtrl, getItem, 1}}, - {1677, {wxListCtrl, getItemBackgroundColour, 1}}, - {1678, {wxListCtrl, getItemCount, 0}}, - {1679, {wxListCtrl, getItemData, 1}}, - {1680, {wxListCtrl, getItemFont, 1}}, - {1681, {wxListCtrl, getItemPosition, 2}}, - {1682, {wxListCtrl, getItemRect, 3}}, - {1683, {wxListCtrl, getItemSpacing, 0}}, - {1684, {wxListCtrl, getItemState, 2}}, - {1685, {wxListCtrl, getItemText, 1}}, - {1686, {wxListCtrl, getItemTextColour, 1}}, - {1687, {wxListCtrl, getNextItem, 2}}, - {1688, {wxListCtrl, getSelectedItemCount, 0}}, - {1689, {wxListCtrl, getTextColour, 0}}, - {1690, {wxListCtrl, getTopItem, 0}}, - {1691, {wxListCtrl, getViewRect, 0}}, - {1692, {wxListCtrl, hitTest, 2}}, - {1693, {wxListCtrl, insertColumn_2, 2}}, - {1694, {wxListCtrl, insertColumn_3, 3}}, - {1695, {wxListCtrl, insertItem_1, 1}}, - {1696, {wxListCtrl, insertItem_2_1, 2}}, - {1697, {wxListCtrl, insertItem_2_0, 2}}, - {1698, {wxListCtrl, insertItem_3, 3}}, - {1699, {wxListCtrl, refreshItem, 1}}, - {1700, {wxListCtrl, refreshItems, 2}}, - {1701, {wxListCtrl, scrollList, 2}}, - {1702, {wxListCtrl, setBackgroundColour, 1}}, - {1703, {wxListCtrl, setColumn, 2}}, - {1704, {wxListCtrl, setColumnWidth, 2}}, - {1705, {wxListCtrl, setImageList, 2}}, - {1706, {wxListCtrl, setItem_1, 1}}, - {1707, {wxListCtrl, setItem_4, 4}}, - {1708, {wxListCtrl, setItemBackgroundColour, 2}}, - {1709, {wxListCtrl, setItemCount, 1}}, - {1710, {wxListCtrl, setItemData, 2}}, - {1711, {wxListCtrl, setItemFont, 2}}, - {1712, {wxListCtrl, setItemImage, 3}}, - {1713, {wxListCtrl, setItemColumnImage, 3}}, - {1714, {wxListCtrl, setItemPosition, 2}}, - {1715, {wxListCtrl, setItemState, 3}}, - {1716, {wxListCtrl, setItemText, 2}}, - {1717, {wxListCtrl, setItemTextColour, 2}}, - {1718, {wxListCtrl, setSingleStyle, 2}}, - {1719, {wxListCtrl, setTextColour, 1}}, - {1720, {wxListCtrl, setWindowStyleFlag, 1}}, - {1721, {wxListCtrl, sortItems, 2}}, - {1722, {wxListCtrl, 'Destroy', undefined}}, - {1723, {wxListView, clearColumnImage, 1}}, - {1724, {wxListView, focus, 1}}, - {1725, {wxListView, getFirstSelected, 0}}, - {1726, {wxListView, getFocusedItem, 0}}, - {1727, {wxListView, getNextSelected, 1}}, - {1728, {wxListView, isSelected, 1}}, - {1729, {wxListView, select, 2}}, - {1730, {wxListView, setColumnImage, 2}}, - {1731, {wxListItem, new_0, 0}}, - {1732, {wxListItem, new_1, 1}}, - {1733, {wxListItem, destruct, 0}}, - {1734, {wxListItem, clear, 0}}, - {1735, {wxListItem, getAlign, 0}}, - {1736, {wxListItem, getBackgroundColour, 0}}, - {1737, {wxListItem, getColumn, 0}}, - {1738, {wxListItem, getFont, 0}}, - {1739, {wxListItem, getId, 0}}, - {1740, {wxListItem, getImage, 0}}, - {1741, {wxListItem, getMask, 0}}, - {1742, {wxListItem, getState, 0}}, - {1743, {wxListItem, getText, 0}}, - {1744, {wxListItem, getTextColour, 0}}, - {1745, {wxListItem, getWidth, 0}}, - {1746, {wxListItem, setAlign, 1}}, - {1747, {wxListItem, setBackgroundColour, 1}}, - {1748, {wxListItem, setColumn, 1}}, - {1749, {wxListItem, setFont, 1}}, - {1750, {wxListItem, setId, 1}}, - {1751, {wxListItem, setImage, 1}}, - {1752, {wxListItem, setMask, 1}}, - {1753, {wxListItem, setState, 1}}, - {1754, {wxListItem, setStateMask, 1}}, - {1755, {wxListItem, setText, 1}}, - {1756, {wxListItem, setTextColour, 1}}, - {1757, {wxListItem, setWidth, 1}}, - {1758, {wxListItemAttr, new_0, 0}}, - {1759, {wxListItemAttr, new_3, 3}}, - {1760, {wxListItemAttr, getBackgroundColour, 0}}, - {1761, {wxListItemAttr, getFont, 0}}, - {1762, {wxListItemAttr, getTextColour, 0}}, - {1763, {wxListItemAttr, hasBackgroundColour, 0}}, - {1764, {wxListItemAttr, hasFont, 0}}, - {1765, {wxListItemAttr, hasTextColour, 0}}, - {1766, {wxListItemAttr, setBackgroundColour, 1}}, - {1767, {wxListItemAttr, setFont, 1}}, - {1768, {wxListItemAttr, setTextColour, 1}}, - {1769, {wxListItemAttr, 'Destroy', undefined}}, - {1770, {wxImageList, new_0, 0}}, - {1771, {wxImageList, new_3, 3}}, - {1772, {wxImageList, add_1, 1}}, - {1773, {wxImageList, add_2_0, 2}}, - {1774, {wxImageList, add_2_1, 2}}, - {1775, {wxImageList, create, 3}}, - {1777, {wxImageList, draw, 5}}, - {1778, {wxImageList, getBitmap, 1}}, - {1779, {wxImageList, getIcon, 1}}, - {1780, {wxImageList, getImageCount, 0}}, - {1781, {wxImageList, getSize, 3}}, - {1782, {wxImageList, remove, 1}}, - {1783, {wxImageList, removeAll, 0}}, - {1784, {wxImageList, replace_2, 2}}, - {1785, {wxImageList, replace_3, 3}}, - {1786, {wxImageList, 'Destroy', undefined}}, - {1787, {wxTextAttr, new_0, 0}}, - {1788, {wxTextAttr, new_2, 2}}, - {1789, {wxTextAttr, getAlignment, 0}}, - {1790, {wxTextAttr, getBackgroundColour, 0}}, - {1791, {wxTextAttr, getFont, 0}}, - {1792, {wxTextAttr, getLeftIndent, 0}}, - {1793, {wxTextAttr, getLeftSubIndent, 0}}, - {1794, {wxTextAttr, getRightIndent, 0}}, - {1795, {wxTextAttr, getTabs, 0}}, - {1796, {wxTextAttr, getTextColour, 0}}, - {1797, {wxTextAttr, hasBackgroundColour, 0}}, - {1798, {wxTextAttr, hasFont, 0}}, - {1799, {wxTextAttr, hasTextColour, 0}}, - {1800, {wxTextAttr, getFlags, 0}}, - {1801, {wxTextAttr, isDefault, 0}}, - {1802, {wxTextAttr, setAlignment, 1}}, - {1803, {wxTextAttr, setBackgroundColour, 1}}, - {1804, {wxTextAttr, setFlags, 1}}, - {1805, {wxTextAttr, setFont, 2}}, - {1806, {wxTextAttr, setLeftIndent, 2}}, - {1807, {wxTextAttr, setRightIndent, 1}}, - {1808, {wxTextAttr, setTabs, 1}}, - {1809, {wxTextAttr, setTextColour, 1}}, - {1810, {wxTextAttr, 'Destroy', undefined}}, - {1812, {wxTextCtrl, new_3, 3}}, - {1813, {wxTextCtrl, new_0, 0}}, - {1815, {wxTextCtrl, destruct, 0}}, - {1816, {wxTextCtrl, appendText, 1}}, - {1817, {wxTextCtrl, canCopy, 0}}, - {1818, {wxTextCtrl, canCut, 0}}, - {1819, {wxTextCtrl, canPaste, 0}}, - {1820, {wxTextCtrl, canRedo, 0}}, - {1821, {wxTextCtrl, canUndo, 0}}, - {1822, {wxTextCtrl, clear, 0}}, - {1823, {wxTextCtrl, copy, 0}}, - {1824, {wxTextCtrl, create, 3}}, - {1825, {wxTextCtrl, cut, 0}}, - {1826, {wxTextCtrl, discardEdits, 0}}, - {1827, {wxTextCtrl, changeValue, 1}}, - {1828, {wxTextCtrl, emulateKeyPress, 1}}, - {1829, {wxTextCtrl, getDefaultStyle, 0}}, - {1830, {wxTextCtrl, getInsertionPoint, 0}}, - {1831, {wxTextCtrl, getLastPosition, 0}}, - {1832, {wxTextCtrl, getLineLength, 1}}, - {1833, {wxTextCtrl, getLineText, 1}}, - {1834, {wxTextCtrl, getNumberOfLines, 0}}, - {1835, {wxTextCtrl, getRange, 2}}, - {1836, {wxTextCtrl, getSelection, 2}}, - {1837, {wxTextCtrl, getStringSelection, 0}}, - {1838, {wxTextCtrl, getStyle, 2}}, - {1839, {wxTextCtrl, getValue, 0}}, - {1840, {wxTextCtrl, isEditable, 0}}, - {1841, {wxTextCtrl, isModified, 0}}, - {1842, {wxTextCtrl, isMultiLine, 0}}, - {1843, {wxTextCtrl, isSingleLine, 0}}, - {1844, {wxTextCtrl, loadFile, 2}}, - {1845, {wxTextCtrl, markDirty, 0}}, - {1846, {wxTextCtrl, paste, 0}}, - {1847, {wxTextCtrl, positionToXY, 3}}, - {1848, {wxTextCtrl, redo, 0}}, - {1849, {wxTextCtrl, remove, 2}}, - {1850, {wxTextCtrl, replace, 3}}, - {1851, {wxTextCtrl, saveFile, 1}}, - {1852, {wxTextCtrl, setDefaultStyle, 1}}, - {1853, {wxTextCtrl, setEditable, 1}}, - {1854, {wxTextCtrl, setInsertionPoint, 1}}, - {1855, {wxTextCtrl, setInsertionPointEnd, 0}}, - {1857, {wxTextCtrl, setMaxLength, 1}}, - {1858, {wxTextCtrl, setSelection, 2}}, - {1859, {wxTextCtrl, setStyle, 3}}, - {1860, {wxTextCtrl, setValue, 1}}, - {1861, {wxTextCtrl, showPosition, 1}}, - {1862, {wxTextCtrl, undo, 0}}, - {1863, {wxTextCtrl, writeText, 1}}, - {1864, {wxTextCtrl, xYToPosition, 2}}, - {1867, {wxNotebook, new_0, 0}}, - {1868, {wxNotebook, new_3, 3}}, - {1869, {wxNotebook, destruct, 0}}, - {1870, {wxNotebook, addPage, 3}}, - {1871, {wxNotebook, advanceSelection, 1}}, - {1872, {wxNotebook, assignImageList, 1}}, - {1873, {wxNotebook, create, 3}}, - {1874, {wxNotebook, deleteAllPages, 0}}, - {1875, {wxNotebook, deletePage, 1}}, - {1876, {wxNotebook, removePage, 1}}, - {1877, {wxNotebook, getCurrentPage, 0}}, - {1878, {wxNotebook, getImageList, 0}}, - {1880, {wxNotebook, getPage, 1}}, - {1881, {wxNotebook, getPageCount, 0}}, - {1882, {wxNotebook, getPageImage, 1}}, - {1883, {wxNotebook, getPageText, 1}}, - {1884, {wxNotebook, getRowCount, 0}}, - {1885, {wxNotebook, getSelection, 0}}, - {1886, {wxNotebook, getThemeBackgroundColour, 0}}, - {1888, {wxNotebook, hitTest, 2}}, - {1890, {wxNotebook, insertPage, 4}}, - {1891, {wxNotebook, setImageList, 1}}, - {1892, {wxNotebook, setPadding, 1}}, - {1893, {wxNotebook, setPageSize, 1}}, - {1894, {wxNotebook, setPageImage, 2}}, - {1895, {wxNotebook, setPageText, 2}}, - {1896, {wxNotebook, setSelection, 1}}, - {1897, {wxNotebook, changeSelection, 1}}, - {1898, {wxChoicebook, new_0, 0}}, - {1899, {wxChoicebook, new_3, 3}}, - {1900, {wxChoicebook, addPage, 3}}, - {1901, {wxChoicebook, advanceSelection, 1}}, - {1902, {wxChoicebook, assignImageList, 1}}, - {1903, {wxChoicebook, create, 3}}, - {1904, {wxChoicebook, deleteAllPages, 0}}, - {1905, {wxChoicebook, deletePage, 1}}, - {1906, {wxChoicebook, removePage, 1}}, - {1907, {wxChoicebook, getCurrentPage, 0}}, - {1908, {wxChoicebook, getImageList, 0}}, - {1910, {wxChoicebook, getPage, 1}}, - {1911, {wxChoicebook, getPageCount, 0}}, - {1912, {wxChoicebook, getPageImage, 1}}, - {1913, {wxChoicebook, getPageText, 1}}, - {1914, {wxChoicebook, getSelection, 0}}, - {1915, {wxChoicebook, hitTest, 2}}, - {1916, {wxChoicebook, insertPage, 4}}, - {1917, {wxChoicebook, setImageList, 1}}, - {1918, {wxChoicebook, setPageSize, 1}}, - {1919, {wxChoicebook, setPageImage, 2}}, - {1920, {wxChoicebook, setPageText, 2}}, - {1921, {wxChoicebook, setSelection, 1}}, - {1922, {wxChoicebook, changeSelection, 1}}, - {1923, {wxChoicebook, 'Destroy', undefined}}, - {1924, {wxToolbook, new_0, 0}}, - {1925, {wxToolbook, new_3, 3}}, - {1926, {wxToolbook, addPage, 3}}, - {1927, {wxToolbook, advanceSelection, 1}}, - {1928, {wxToolbook, assignImageList, 1}}, - {1929, {wxToolbook, create, 3}}, - {1930, {wxToolbook, deleteAllPages, 0}}, - {1931, {wxToolbook, deletePage, 1}}, - {1932, {wxToolbook, removePage, 1}}, - {1933, {wxToolbook, getCurrentPage, 0}}, - {1934, {wxToolbook, getImageList, 0}}, - {1936, {wxToolbook, getPage, 1}}, - {1937, {wxToolbook, getPageCount, 0}}, - {1938, {wxToolbook, getPageImage, 1}}, - {1939, {wxToolbook, getPageText, 1}}, - {1940, {wxToolbook, getSelection, 0}}, - {1942, {wxToolbook, hitTest, 2}}, - {1943, {wxToolbook, insertPage, 4}}, - {1944, {wxToolbook, setImageList, 1}}, - {1945, {wxToolbook, setPageSize, 1}}, - {1946, {wxToolbook, setPageImage, 2}}, - {1947, {wxToolbook, setPageText, 2}}, - {1948, {wxToolbook, setSelection, 1}}, - {1949, {wxToolbook, changeSelection, 1}}, - {1950, {wxToolbook, 'Destroy', undefined}}, - {1951, {wxListbook, new_0, 0}}, - {1952, {wxListbook, new_3, 3}}, - {1953, {wxListbook, addPage, 3}}, - {1954, {wxListbook, advanceSelection, 1}}, - {1955, {wxListbook, assignImageList, 1}}, - {1956, {wxListbook, create, 3}}, - {1957, {wxListbook, deleteAllPages, 0}}, - {1958, {wxListbook, deletePage, 1}}, - {1959, {wxListbook, removePage, 1}}, - {1960, {wxListbook, getCurrentPage, 0}}, - {1961, {wxListbook, getImageList, 0}}, - {1963, {wxListbook, getPage, 1}}, - {1964, {wxListbook, getPageCount, 0}}, - {1965, {wxListbook, getPageImage, 1}}, - {1966, {wxListbook, getPageText, 1}}, - {1967, {wxListbook, getSelection, 0}}, - {1969, {wxListbook, hitTest, 2}}, - {1970, {wxListbook, insertPage, 4}}, - {1971, {wxListbook, setImageList, 1}}, - {1972, {wxListbook, setPageSize, 1}}, - {1973, {wxListbook, setPageImage, 2}}, - {1974, {wxListbook, setPageText, 2}}, - {1975, {wxListbook, setSelection, 1}}, - {1976, {wxListbook, changeSelection, 1}}, - {1977, {wxListbook, 'Destroy', undefined}}, - {1978, {wxTreebook, new_0, 0}}, - {1979, {wxTreebook, new_3, 3}}, - {1980, {wxTreebook, addPage, 3}}, - {1981, {wxTreebook, advanceSelection, 1}}, - {1982, {wxTreebook, assignImageList, 1}}, - {1983, {wxTreebook, create, 3}}, - {1984, {wxTreebook, deleteAllPages, 0}}, - {1985, {wxTreebook, deletePage, 1}}, - {1986, {wxTreebook, removePage, 1}}, - {1987, {wxTreebook, getCurrentPage, 0}}, - {1988, {wxTreebook, getImageList, 0}}, - {1990, {wxTreebook, getPage, 1}}, - {1991, {wxTreebook, getPageCount, 0}}, - {1992, {wxTreebook, getPageImage, 1}}, - {1993, {wxTreebook, getPageText, 1}}, - {1994, {wxTreebook, getSelection, 0}}, - {1995, {wxTreebook, expandNode, 2}}, - {1996, {wxTreebook, isNodeExpanded, 1}}, - {1998, {wxTreebook, hitTest, 2}}, - {1999, {wxTreebook, insertPage, 4}}, - {2000, {wxTreebook, insertSubPage, 4}}, - {2001, {wxTreebook, setImageList, 1}}, - {2002, {wxTreebook, setPageSize, 1}}, - {2003, {wxTreebook, setPageImage, 2}}, - {2004, {wxTreebook, setPageText, 2}}, - {2005, {wxTreebook, setSelection, 1}}, - {2006, {wxTreebook, changeSelection, 1}}, - {2007, {wxTreebook, 'Destroy', undefined}}, - {2010, {wxTreeCtrl, new_2, 2}}, - {2011, {wxTreeCtrl, new_0, 0}}, - {2013, {wxTreeCtrl, destruct, 0}}, - {2014, {wxTreeCtrl, addRoot, 2}}, - {2015, {wxTreeCtrl, appendItem, 3}}, - {2016, {wxTreeCtrl, assignImageList, 1}}, - {2017, {wxTreeCtrl, assignStateImageList, 1}}, - {2018, {wxTreeCtrl, collapse, 1}}, - {2019, {wxTreeCtrl, collapseAndReset, 1}}, - {2020, {wxTreeCtrl, create, 2}}, - {2021, {wxTreeCtrl, delete, 1}}, - {2022, {wxTreeCtrl, deleteAllItems, 0}}, - {2023, {wxTreeCtrl, deleteChildren, 1}}, - {2024, {wxTreeCtrl, editLabel, 1}}, - {2025, {wxTreeCtrl, ensureVisible, 1}}, - {2026, {wxTreeCtrl, expand, 1}}, - {2027, {wxTreeCtrl, getBoundingRect, 3}}, - {2029, {wxTreeCtrl, getChildrenCount, 2}}, - {2030, {wxTreeCtrl, getCount, 0}}, - {2031, {wxTreeCtrl, getEditControl, 0}}, - {2032, {wxTreeCtrl, getFirstChild, 2}}, - {2033, {wxTreeCtrl, getNextChild, 2}}, - {2034, {wxTreeCtrl, getFirstVisibleItem, 0}}, - {2035, {wxTreeCtrl, getImageList, 0}}, - {2036, {wxTreeCtrl, getIndent, 0}}, - {2037, {wxTreeCtrl, getItemBackgroundColour, 1}}, - {2038, {wxTreeCtrl, getItemData, 1}}, - {2039, {wxTreeCtrl, getItemFont, 1}}, - {2040, {wxTreeCtrl, getItemImage_1, 1}}, - {2041, {wxTreeCtrl, getItemImage_2, 2}}, - {2042, {wxTreeCtrl, getItemText, 1}}, - {2043, {wxTreeCtrl, getItemTextColour, 1}}, - {2044, {wxTreeCtrl, getLastChild, 1}}, - {2045, {wxTreeCtrl, getNextSibling, 1}}, - {2046, {wxTreeCtrl, getNextVisible, 1}}, - {2047, {wxTreeCtrl, getItemParent, 1}}, - {2048, {wxTreeCtrl, getPrevSibling, 1}}, - {2049, {wxTreeCtrl, getPrevVisible, 1}}, - {2050, {wxTreeCtrl, getRootItem, 0}}, - {2051, {wxTreeCtrl, getSelection, 0}}, - {2052, {wxTreeCtrl, getSelections, 1}}, - {2053, {wxTreeCtrl, getStateImageList, 0}}, - {2054, {wxTreeCtrl, hitTest, 2}}, - {2056, {wxTreeCtrl, insertItem, 4}}, - {2057, {wxTreeCtrl, isBold, 1}}, - {2058, {wxTreeCtrl, isExpanded, 1}}, - {2059, {wxTreeCtrl, isSelected, 1}}, - {2060, {wxTreeCtrl, isVisible, 1}}, - {2061, {wxTreeCtrl, itemHasChildren, 1}}, - {2062, {wxTreeCtrl, isTreeItemIdOk, 1}}, - {2063, {wxTreeCtrl, prependItem, 3}}, - {2064, {wxTreeCtrl, scrollTo, 1}}, - {2065, {wxTreeCtrl, selectItem_1, 1}}, - {2066, {wxTreeCtrl, selectItem_2, 2}}, - {2067, {wxTreeCtrl, setIndent, 1}}, - {2068, {wxTreeCtrl, setImageList, 1}}, - {2069, {wxTreeCtrl, setItemBackgroundColour, 2}}, - {2070, {wxTreeCtrl, setItemBold, 2}}, - {2071, {wxTreeCtrl, setItemData, 2}}, - {2072, {wxTreeCtrl, setItemDropHighlight, 2}}, - {2073, {wxTreeCtrl, setItemFont, 2}}, - {2074, {wxTreeCtrl, setItemHasChildren, 2}}, - {2075, {wxTreeCtrl, setItemImage_2, 2}}, - {2076, {wxTreeCtrl, setItemImage_3, 3}}, - {2077, {wxTreeCtrl, setItemText, 2}}, - {2078, {wxTreeCtrl, setItemTextColour, 2}}, - {2079, {wxTreeCtrl, setStateImageList, 1}}, - {2080, {wxTreeCtrl, setWindowStyle, 1}}, - {2081, {wxTreeCtrl, sortChildren, 1}}, - {2082, {wxTreeCtrl, toggle, 1}}, - {2083, {wxTreeCtrl, toggleItemSelection, 1}}, - {2084, {wxTreeCtrl, unselect, 0}}, - {2085, {wxTreeCtrl, unselectAll, 0}}, - {2086, {wxTreeCtrl, unselectItem, 1}}, - {2087, {wxScrollBar, new_0, 0}}, - {2088, {wxScrollBar, new_3, 3}}, - {2089, {wxScrollBar, destruct, 0}}, - {2090, {wxScrollBar, create, 3}}, - {2091, {wxScrollBar, getRange, 0}}, - {2092, {wxScrollBar, getPageSize, 0}}, - {2093, {wxScrollBar, getThumbPosition, 0}}, - {2094, {wxScrollBar, getThumbSize, 0}}, - {2095, {wxScrollBar, setThumbPosition, 1}}, - {2096, {wxScrollBar, setScrollbar, 5}}, - {2098, {wxSpinButton, new_2, 2}}, - {2099, {wxSpinButton, new_0, 0}}, - {2100, {wxSpinButton, create, 2}}, - {2101, {wxSpinButton, getMax, 0}}, - {2102, {wxSpinButton, getMin, 0}}, - {2103, {wxSpinButton, getValue, 0}}, - {2104, {wxSpinButton, setRange, 2}}, - {2105, {wxSpinButton, setValue, 1}}, - {2106, {wxSpinButton, 'Destroy', undefined}}, - {2107, {wxSpinCtrl, new_0, 0}}, - {2108, {wxSpinCtrl, new_2, 2}}, - {2110, {wxSpinCtrl, create, 2}}, - {2113, {wxSpinCtrl, setValue_1_1, 1}}, - {2114, {wxSpinCtrl, setValue_1_0, 1}}, - {2116, {wxSpinCtrl, getValue, 0}}, - {2118, {wxSpinCtrl, setRange, 2}}, - {2119, {wxSpinCtrl, setSelection, 2}}, - {2121, {wxSpinCtrl, getMin, 0}}, - {2123, {wxSpinCtrl, getMax, 0}}, - {2124, {wxSpinCtrl, 'Destroy', undefined}}, - {2125, {wxStaticText, new_0, 0}}, - {2126, {wxStaticText, new_4, 4}}, - {2127, {wxStaticText, create, 4}}, - {2128, {wxStaticText, getLabel, 0}}, - {2129, {wxStaticText, setLabel, 1}}, - {2130, {wxStaticText, wrap, 1}}, - {2131, {wxStaticText, 'Destroy', undefined}}, - {2132, {wxStaticBitmap, new_0, 0}}, - {2133, {wxStaticBitmap, new_4, 4}}, - {2134, {wxStaticBitmap, create, 4}}, - {2135, {wxStaticBitmap, getBitmap, 0}}, - {2136, {wxStaticBitmap, setBitmap, 1}}, - {2137, {wxStaticBitmap, 'Destroy', undefined}}, - {2138, {wxRadioBox, new, 7}}, - {2140, {wxRadioBox, destruct, 0}}, - {2141, {wxRadioBox, create, 7}}, - {2142, {wxRadioBox, enable_2, 2}}, - {2143, {wxRadioBox, enable_1, 1}}, - {2144, {wxRadioBox, getSelection, 0}}, - {2145, {wxRadioBox, getString, 1}}, - {2146, {wxRadioBox, setSelection, 1}}, - {2147, {wxRadioBox, show_2, 2}}, - {2148, {wxRadioBox, show_1, 1}}, - {2149, {wxRadioBox, getColumnCount, 0}}, - {2150, {wxRadioBox, getItemHelpText, 1}}, - {2151, {wxRadioBox, getItemToolTip, 1}}, - {2153, {wxRadioBox, getItemFromPoint, 1}}, - {2154, {wxRadioBox, getRowCount, 0}}, - {2155, {wxRadioBox, isItemEnabled, 1}}, - {2156, {wxRadioBox, isItemShown, 1}}, - {2157, {wxRadioBox, setItemHelpText, 2}}, - {2158, {wxRadioBox, setItemToolTip, 2}}, - {2159, {wxRadioButton, new_0, 0}}, - {2160, {wxRadioButton, new_4, 4}}, - {2161, {wxRadioButton, create, 4}}, - {2162, {wxRadioButton, getValue, 0}}, - {2163, {wxRadioButton, setValue, 1}}, - {2164, {wxRadioButton, 'Destroy', undefined}}, - {2166, {wxSlider, new_6, 6}}, - {2167, {wxSlider, new_0, 0}}, - {2168, {wxSlider, create, 6}}, - {2169, {wxSlider, getLineSize, 0}}, - {2170, {wxSlider, getMax, 0}}, - {2171, {wxSlider, getMin, 0}}, - {2172, {wxSlider, getPageSize, 0}}, - {2173, {wxSlider, getThumbLength, 0}}, - {2174, {wxSlider, getValue, 0}}, - {2175, {wxSlider, setLineSize, 1}}, - {2176, {wxSlider, setPageSize, 1}}, - {2177, {wxSlider, setRange, 2}}, - {2178, {wxSlider, setThumbLength, 1}}, - {2179, {wxSlider, setValue, 1}}, - {2180, {wxSlider, 'Destroy', undefined}}, - {2182, {wxDialog, new_4, 4}}, - {2183, {wxDialog, new_0, 0}}, - {2185, {wxDialog, destruct, 0}}, - {2186, {wxDialog, create, 4}}, - {2187, {wxDialog, createButtonSizer, 1}}, - {2188, {wxDialog, createStdDialogButtonSizer, 1}}, - {2189, {wxDialog, endModal, 1}}, - {2190, {wxDialog, getAffirmativeId, 0}}, - {2191, {wxDialog, getReturnCode, 0}}, - {2192, {wxDialog, isModal, 0}}, - {2193, {wxDialog, setAffirmativeId, 1}}, - {2194, {wxDialog, setReturnCode, 1}}, - {2195, {wxDialog, show, 1}}, - {2196, {wxDialog, showModal, 0}}, - {2197, {wxColourDialog, new_0, 0}}, - {2198, {wxColourDialog, new_2, 2}}, - {2199, {wxColourDialog, destruct, 0}}, - {2200, {wxColourDialog, create, 2}}, - {2201, {wxColourDialog, getColourData, 0}}, - {2202, {wxColourData, new_0, 0}}, - {2203, {wxColourData, new_1, 1}}, - {2204, {wxColourData, destruct, 0}}, - {2205, {wxColourData, getChooseFull, 0}}, - {2206, {wxColourData, getColour, 0}}, - {2208, {wxColourData, getCustomColour, 1}}, - {2209, {wxColourData, setChooseFull, 1}}, - {2210, {wxColourData, setColour, 1}}, - {2211, {wxColourData, setCustomColour, 2}}, - {2212, {wxPalette, new_0, 0}}, - {2213, {wxPalette, new_4, 4}}, - {2215, {wxPalette, destruct, 0}}, - {2216, {wxPalette, create, 4}}, - {2217, {wxPalette, getColoursCount, 0}}, - {2218, {wxPalette, getPixel, 3}}, - {2219, {wxPalette, getRGB, 4}}, - {2220, {wxPalette, isOk, 0}}, - {2224, {wxDirDialog, new, 2}}, - {2225, {wxDirDialog, destruct, 0}}, - {2226, {wxDirDialog, getPath, 0}}, - {2227, {wxDirDialog, getMessage, 0}}, - {2228, {wxDirDialog, setMessage, 1}}, - {2229, {wxDirDialog, setPath, 1}}, - {2233, {wxFileDialog, new, 2}}, - {2234, {wxFileDialog, destruct, 0}}, - {2235, {wxFileDialog, getDirectory, 0}}, - {2236, {wxFileDialog, getFilename, 0}}, - {2237, {wxFileDialog, getFilenames, 1}}, - {2238, {wxFileDialog, getFilterIndex, 0}}, - {2239, {wxFileDialog, getMessage, 0}}, - {2240, {wxFileDialog, getPath, 0}}, - {2241, {wxFileDialog, getPaths, 1}}, - {2242, {wxFileDialog, getWildcard, 0}}, - {2243, {wxFileDialog, setDirectory, 1}}, - {2244, {wxFileDialog, setFilename, 1}}, - {2245, {wxFileDialog, setFilterIndex, 1}}, - {2246, {wxFileDialog, setMessage, 1}}, - {2247, {wxFileDialog, setPath, 1}}, - {2248, {wxFileDialog, setWildcard, 1}}, - {2249, {wxPickerBase, setInternalMargin, 1}}, - {2250, {wxPickerBase, getInternalMargin, 0}}, - {2251, {wxPickerBase, setTextCtrlProportion, 1}}, - {2252, {wxPickerBase, setPickerCtrlProportion, 1}}, - {2253, {wxPickerBase, getTextCtrlProportion, 0}}, - {2254, {wxPickerBase, getPickerCtrlProportion, 0}}, - {2255, {wxPickerBase, hasTextCtrl, 0}}, - {2256, {wxPickerBase, getTextCtrl, 0}}, - {2257, {wxPickerBase, isTextCtrlGrowable, 0}}, - {2258, {wxPickerBase, setPickerCtrlGrowable, 1}}, - {2259, {wxPickerBase, setTextCtrlGrowable, 1}}, - {2260, {wxPickerBase, isPickerCtrlGrowable, 0}}, - {2261, {wxFilePickerCtrl, new_0, 0}}, - {2262, {wxFilePickerCtrl, new_3, 3}}, - {2263, {wxFilePickerCtrl, create, 3}}, - {2264, {wxFilePickerCtrl, getPath, 0}}, - {2265, {wxFilePickerCtrl, setPath, 1}}, - {2266, {wxFilePickerCtrl, 'Destroy', undefined}}, - {2267, {wxDirPickerCtrl, new_0, 0}}, - {2268, {wxDirPickerCtrl, new_3, 3}}, - {2269, {wxDirPickerCtrl, create, 3}}, - {2270, {wxDirPickerCtrl, getPath, 0}}, - {2271, {wxDirPickerCtrl, setPath, 1}}, - {2272, {wxDirPickerCtrl, 'Destroy', undefined}}, - {2273, {wxColourPickerCtrl, new_0, 0}}, - {2274, {wxColourPickerCtrl, new_3, 3}}, - {2275, {wxColourPickerCtrl, create, 3}}, - {2276, {wxColourPickerCtrl, getColour, 0}}, - {2277, {wxColourPickerCtrl, setColour_1_1, 1}}, - {2278, {wxColourPickerCtrl, setColour_1_0, 1}}, - {2279, {wxColourPickerCtrl, 'Destroy', undefined}}, - {2280, {wxDatePickerCtrl, new_0, 0}}, - {2281, {wxDatePickerCtrl, new_3, 3}}, - {2282, {wxDatePickerCtrl, getRange, 2}}, - {2283, {wxDatePickerCtrl, getValue, 0}}, - {2284, {wxDatePickerCtrl, setRange, 2}}, - {2285, {wxDatePickerCtrl, setValue, 1}}, - {2286, {wxDatePickerCtrl, 'Destroy', undefined}}, - {2287, {wxFontPickerCtrl, new_0, 0}}, - {2288, {wxFontPickerCtrl, new_3, 3}}, - {2289, {wxFontPickerCtrl, create, 3}}, - {2290, {wxFontPickerCtrl, getSelectedFont, 0}}, - {2291, {wxFontPickerCtrl, setSelectedFont, 1}}, - {2292, {wxFontPickerCtrl, getMaxPointSize, 0}}, - {2293, {wxFontPickerCtrl, setMaxPointSize, 1}}, - {2294, {wxFontPickerCtrl, 'Destroy', undefined}}, - {2297, {wxFindReplaceDialog, new_0, 0}}, - {2298, {wxFindReplaceDialog, new_4, 4}}, - {2299, {wxFindReplaceDialog, destruct, 0}}, - {2300, {wxFindReplaceDialog, create, 4}}, - {2301, {wxFindReplaceDialog, getData, 0}}, - {2302, {wxFindReplaceData, new_0, 0}}, - {2303, {wxFindReplaceData, new_1, 1}}, - {2304, {wxFindReplaceData, getFindString, 0}}, - {2305, {wxFindReplaceData, getReplaceString, 0}}, - {2306, {wxFindReplaceData, getFlags, 0}}, - {2307, {wxFindReplaceData, setFlags, 1}}, - {2308, {wxFindReplaceData, setFindString, 1}}, - {2309, {wxFindReplaceData, setReplaceString, 1}}, - {2310, {wxFindReplaceData, 'Destroy', undefined}}, - {2311, {wxMultiChoiceDialog, new_0, 0}}, - {2313, {wxMultiChoiceDialog, new_5, 5}}, - {2314, {wxMultiChoiceDialog, getSelections, 0}}, - {2315, {wxMultiChoiceDialog, setSelections, 1}}, - {2316, {wxMultiChoiceDialog, 'Destroy', undefined}}, - {2317, {wxSingleChoiceDialog, new_0, 0}}, - {2319, {wxSingleChoiceDialog, new_5, 5}}, - {2320, {wxSingleChoiceDialog, getSelection, 0}}, - {2321, {wxSingleChoiceDialog, getStringSelection, 0}}, - {2322, {wxSingleChoiceDialog, setSelection, 1}}, - {2323, {wxSingleChoiceDialog, 'Destroy', undefined}}, - {2324, {wxTextEntryDialog, new, 3}}, - {2325, {wxTextEntryDialog, getValue, 0}}, - {2326, {wxTextEntryDialog, setValue, 1}}, - {2327, {wxTextEntryDialog, 'Destroy', undefined}}, - {2328, {wxPasswordEntryDialog, new, 3}}, - {2329, {wxPasswordEntryDialog, 'Destroy', undefined}}, - {2330, {wxFontData, new_0, 0}}, - {2331, {wxFontData, new_1, 1}}, - {2332, {wxFontData, destruct, 0}}, - {2333, {wxFontData, enableEffects, 1}}, - {2334, {wxFontData, getAllowSymbols, 0}}, - {2335, {wxFontData, getColour, 0}}, - {2336, {wxFontData, getChosenFont, 0}}, - {2337, {wxFontData, getEnableEffects, 0}}, - {2338, {wxFontData, getInitialFont, 0}}, - {2339, {wxFontData, getShowHelp, 0}}, - {2340, {wxFontData, setAllowSymbols, 1}}, - {2341, {wxFontData, setChosenFont, 1}}, - {2342, {wxFontData, setColour, 1}}, - {2343, {wxFontData, setInitialFont, 1}}, - {2344, {wxFontData, setRange, 2}}, - {2345, {wxFontData, setShowHelp, 1}}, - {2349, {wxFontDialog, new_0, 0}}, - {2351, {wxFontDialog, new_2, 2}}, - {2353, {wxFontDialog, create, 2}}, - {2354, {wxFontDialog, getFontData, 0}}, - {2356, {wxFontDialog, 'Destroy', undefined}}, - {2357, {wxProgressDialog, new, 3}}, - {2358, {wxProgressDialog, destruct, 0}}, - {2359, {wxProgressDialog, resume, 0}}, - {2360, {wxProgressDialog, update_2, 2}}, - {2361, {wxProgressDialog, update_0, 0}}, - {2362, {wxMessageDialog, new, 3}}, - {2363, {wxMessageDialog, destruct, 0}}, - {2364, {wxPageSetupDialog, new, 2}}, - {2365, {wxPageSetupDialog, destruct, 0}}, - {2366, {wxPageSetupDialog, getPageSetupData, 0}}, - {2367, {wxPageSetupDialog, showModal, 0}}, - {2368, {wxPageSetupDialogData, new_0, 0}}, - {2369, {wxPageSetupDialogData, new_1_0, 1}}, - {2370, {wxPageSetupDialogData, new_1_1, 1}}, - {2371, {wxPageSetupDialogData, destruct, 0}}, - {2372, {wxPageSetupDialogData, enableHelp, 1}}, - {2373, {wxPageSetupDialogData, enableMargins, 1}}, - {2374, {wxPageSetupDialogData, enableOrientation, 1}}, - {2375, {wxPageSetupDialogData, enablePaper, 1}}, - {2376, {wxPageSetupDialogData, enablePrinter, 1}}, - {2377, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, - {2378, {wxPageSetupDialogData, getEnableMargins, 0}}, - {2379, {wxPageSetupDialogData, getEnableOrientation, 0}}, - {2380, {wxPageSetupDialogData, getEnablePaper, 0}}, - {2381, {wxPageSetupDialogData, getEnablePrinter, 0}}, - {2382, {wxPageSetupDialogData, getEnableHelp, 0}}, - {2383, {wxPageSetupDialogData, getDefaultInfo, 0}}, - {2384, {wxPageSetupDialogData, getMarginTopLeft, 0}}, - {2385, {wxPageSetupDialogData, getMarginBottomRight, 0}}, - {2386, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, - {2387, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, - {2388, {wxPageSetupDialogData, getPaperId, 0}}, - {2389, {wxPageSetupDialogData, getPaperSize, 0}}, - {2391, {wxPageSetupDialogData, getPrintData, 0}}, - {2392, {wxPageSetupDialogData, isOk, 0}}, - {2393, {wxPageSetupDialogData, setDefaultInfo, 1}}, - {2394, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, - {2395, {wxPageSetupDialogData, setMarginTopLeft, 1}}, - {2396, {wxPageSetupDialogData, setMarginBottomRight, 1}}, - {2397, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, - {2398, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, - {2399, {wxPageSetupDialogData, setPaperId, 1}}, - {2400, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, - {2401, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, - {2402, {wxPageSetupDialogData, setPrintData, 1}}, - {2403, {wxPrintDialog, new_2_0, 2}}, - {2404, {wxPrintDialog, new_2_1, 2}}, - {2405, {wxPrintDialog, destruct, 0}}, - {2406, {wxPrintDialog, getPrintDialogData, 0}}, - {2407, {wxPrintDialog, getPrintDC, 0}}, - {2408, {wxPrintDialogData, new_0, 0}}, - {2409, {wxPrintDialogData, new_1_1, 1}}, - {2410, {wxPrintDialogData, new_1_0, 1}}, - {2411, {wxPrintDialogData, destruct, 0}}, - {2412, {wxPrintDialogData, enableHelp, 1}}, - {2413, {wxPrintDialogData, enablePageNumbers, 1}}, - {2414, {wxPrintDialogData, enablePrintToFile, 1}}, - {2415, {wxPrintDialogData, enableSelection, 1}}, - {2416, {wxPrintDialogData, getAllPages, 0}}, - {2417, {wxPrintDialogData, getCollate, 0}}, - {2418, {wxPrintDialogData, getFromPage, 0}}, - {2419, {wxPrintDialogData, getMaxPage, 0}}, - {2420, {wxPrintDialogData, getMinPage, 0}}, - {2421, {wxPrintDialogData, getNoCopies, 0}}, - {2422, {wxPrintDialogData, getPrintData, 0}}, - {2423, {wxPrintDialogData, getPrintToFile, 0}}, - {2424, {wxPrintDialogData, getSelection, 0}}, - {2425, {wxPrintDialogData, getToPage, 0}}, - {2426, {wxPrintDialogData, isOk, 0}}, - {2427, {wxPrintDialogData, setCollate, 1}}, - {2428, {wxPrintDialogData, setFromPage, 1}}, - {2429, {wxPrintDialogData, setMaxPage, 1}}, - {2430, {wxPrintDialogData, setMinPage, 1}}, - {2431, {wxPrintDialogData, setNoCopies, 1}}, - {2432, {wxPrintDialogData, setPrintData, 1}}, - {2433, {wxPrintDialogData, setPrintToFile, 1}}, - {2434, {wxPrintDialogData, setSelection, 1}}, - {2435, {wxPrintDialogData, setToPage, 1}}, - {2436, {wxPrintData, new_0, 0}}, - {2437, {wxPrintData, new_1, 1}}, - {2438, {wxPrintData, destruct, 0}}, - {2439, {wxPrintData, getCollate, 0}}, - {2440, {wxPrintData, getBin, 0}}, - {2441, {wxPrintData, getColour, 0}}, - {2442, {wxPrintData, getDuplex, 0}}, - {2443, {wxPrintData, getNoCopies, 0}}, - {2444, {wxPrintData, getOrientation, 0}}, - {2445, {wxPrintData, getPaperId, 0}}, - {2446, {wxPrintData, getPrinterName, 0}}, - {2447, {wxPrintData, getQuality, 0}}, - {2448, {wxPrintData, isOk, 0}}, - {2449, {wxPrintData, setBin, 1}}, - {2450, {wxPrintData, setCollate, 1}}, - {2451, {wxPrintData, setColour, 1}}, - {2452, {wxPrintData, setDuplex, 1}}, - {2453, {wxPrintData, setNoCopies, 1}}, - {2454, {wxPrintData, setOrientation, 1}}, - {2455, {wxPrintData, setPaperId, 1}}, - {2456, {wxPrintData, setPrinterName, 1}}, - {2457, {wxPrintData, setQuality, 1}}, - {2460, {wxPrintPreview, new_2, 2}}, - {2461, {wxPrintPreview, new_3, 3}}, - {2463, {wxPrintPreview, destruct, 0}}, - {2464, {wxPrintPreview, getCanvas, 0}}, - {2465, {wxPrintPreview, getCurrentPage, 0}}, - {2466, {wxPrintPreview, getFrame, 0}}, - {2467, {wxPrintPreview, getMaxPage, 0}}, - {2468, {wxPrintPreview, getMinPage, 0}}, - {2469, {wxPrintPreview, getPrintout, 0}}, - {2470, {wxPrintPreview, getPrintoutForPrinting, 0}}, - {2471, {wxPrintPreview, isOk, 0}}, - {2472, {wxPrintPreview, paintPage, 2}}, - {2473, {wxPrintPreview, print, 1}}, - {2474, {wxPrintPreview, renderPage, 1}}, - {2475, {wxPrintPreview, setCanvas, 1}}, - {2476, {wxPrintPreview, setCurrentPage, 1}}, - {2477, {wxPrintPreview, setFrame, 1}}, - {2478, {wxPrintPreview, setPrintout, 1}}, - {2479, {wxPrintPreview, setZoom, 1}}, - {2480, {wxPreviewFrame, new, 3}}, - {2481, {wxPreviewFrame, destruct, 0}}, - {2482, {wxPreviewFrame, createControlBar, 0}}, - {2483, {wxPreviewFrame, createCanvas, 0}}, - {2484, {wxPreviewFrame, initialize, 0}}, - {2485, {wxPreviewFrame, onCloseWindow, 1}}, - {2486, {wxPreviewControlBar, new, 4}}, - {2487, {wxPreviewControlBar, destruct, 0}}, - {2488, {wxPreviewControlBar, createButtons, 0}}, - {2489, {wxPreviewControlBar, getPrintPreview, 0}}, - {2490, {wxPreviewControlBar, getZoomControl, 0}}, - {2491, {wxPreviewControlBar, setZoomControl, 1}}, - {2493, {wxPrinter, new, 1}}, - {2494, {wxPrinter, createAbortWindow, 2}}, - {2495, {wxPrinter, getAbort, 0}}, - {2496, {wxPrinter, getLastError, 0}}, - {2497, {wxPrinter, getPrintDialogData, 0}}, - {2498, {wxPrinter, print, 3}}, - {2499, {wxPrinter, printDialog, 1}}, - {2500, {wxPrinter, reportError, 3}}, - {2501, {wxPrinter, setup, 1}}, - {2502, {wxPrinter, 'Destroy', undefined}}, - {2503, {wxXmlResource, new_1, 1}}, - {2504, {wxXmlResource, new_2, 2}}, - {2505, {wxXmlResource, destruct, 0}}, - {2506, {wxXmlResource, attachUnknownControl, 3}}, - {2507, {wxXmlResource, clearHandlers, 0}}, - {2508, {wxXmlResource, compareVersion, 4}}, - {2509, {wxXmlResource, get, 0}}, - {2510, {wxXmlResource, getFlags, 0}}, - {2511, {wxXmlResource, getVersion, 0}}, - {2512, {wxXmlResource, getXRCID, 2}}, - {2513, {wxXmlResource, initAllHandlers, 0}}, - {2514, {wxXmlResource, load, 1}}, - {2515, {wxXmlResource, loadBitmap, 1}}, - {2516, {wxXmlResource, loadDialog_2, 2}}, - {2517, {wxXmlResource, loadDialog_3, 3}}, - {2518, {wxXmlResource, loadFrame_2, 2}}, - {2519, {wxXmlResource, loadFrame_3, 3}}, - {2520, {wxXmlResource, loadIcon, 1}}, - {2521, {wxXmlResource, loadMenu, 1}}, - {2522, {wxXmlResource, loadMenuBar_2, 2}}, - {2523, {wxXmlResource, loadMenuBar_1, 1}}, - {2524, {wxXmlResource, loadPanel_2, 2}}, - {2525, {wxXmlResource, loadPanel_3, 3}}, - {2526, {wxXmlResource, loadToolBar, 2}}, - {2527, {wxXmlResource, set, 1}}, - {2528, {wxXmlResource, setFlags, 1}}, - {2529, {wxXmlResource, unload, 1}}, - {2530, {wxXmlResource, xrcctrl, 3}}, - {2531, {wxHtmlEasyPrinting, new, 1}}, - {2532, {wxHtmlEasyPrinting, destruct, 0}}, - {2533, {wxHtmlEasyPrinting, getPrintData, 0}}, - {2534, {wxHtmlEasyPrinting, getPageSetupData, 0}}, - {2535, {wxHtmlEasyPrinting, previewFile, 1}}, - {2536, {wxHtmlEasyPrinting, previewText, 2}}, - {2537, {wxHtmlEasyPrinting, printFile, 1}}, - {2538, {wxHtmlEasyPrinting, printText, 2}}, - {2539, {wxHtmlEasyPrinting, pageSetup, 0}}, - {2540, {wxHtmlEasyPrinting, setFonts, 3}}, - {2541, {wxHtmlEasyPrinting, setHeader, 2}}, - {2542, {wxHtmlEasyPrinting, setFooter, 2}}, - {2544, {wxGLCanvas, new_2, 2}}, - {2545, {wxGLCanvas, new_3_1, 3}}, - {2546, {wxGLCanvas, new_3_0, 3}}, - {2547, {wxGLCanvas, getContext, 0}}, - {2549, {wxGLCanvas, setCurrent, 0}}, - {2550, {wxGLCanvas, swapBuffers, 0}}, - {2551, {wxGLCanvas, 'Destroy', undefined}}, - {2552, {wxAuiManager, new, 1}}, - {2553, {wxAuiManager, destruct, 0}}, - {2554, {wxAuiManager, addPane_2_1, 2}}, - {2555, {wxAuiManager, addPane_3, 3}}, - {2556, {wxAuiManager, addPane_2_0, 2}}, - {2557, {wxAuiManager, detachPane, 1}}, - {2558, {wxAuiManager, getAllPanes, 0}}, - {2559, {wxAuiManager, getArtProvider, 0}}, - {2560, {wxAuiManager, getDockSizeConstraint, 2}}, - {2561, {wxAuiManager, getFlags, 0}}, - {2562, {wxAuiManager, getManagedWindow, 0}}, - {2563, {wxAuiManager, getManager, 1}}, - {2564, {wxAuiManager, getPane_1_1, 1}}, - {2565, {wxAuiManager, getPane_1_0, 1}}, - {2566, {wxAuiManager, hideHint, 0}}, - {2567, {wxAuiManager, insertPane, 3}}, - {2568, {wxAuiManager, loadPaneInfo, 2}}, - {2569, {wxAuiManager, loadPerspective, 2}}, - {2570, {wxAuiManager, savePaneInfo, 1}}, - {2571, {wxAuiManager, savePerspective, 0}}, - {2572, {wxAuiManager, setArtProvider, 1}}, - {2573, {wxAuiManager, setDockSizeConstraint, 2}}, - {2574, {wxAuiManager, setFlags, 1}}, - {2575, {wxAuiManager, setManagedWindow, 1}}, - {2576, {wxAuiManager, showHint, 1}}, - {2577, {wxAuiManager, unInit, 0}}, - {2578, {wxAuiManager, update, 0}}, - {2579, {wxAuiPaneInfo, new_0, 0}}, - {2580, {wxAuiPaneInfo, new_1, 1}}, - {2581, {wxAuiPaneInfo, destruct, 0}}, - {2582, {wxAuiPaneInfo, bestSize_1, 1}}, - {2583, {wxAuiPaneInfo, bestSize_2, 2}}, - {2584, {wxAuiPaneInfo, bottom, 0}}, - {2585, {wxAuiPaneInfo, bottomDockable, 1}}, - {2586, {wxAuiPaneInfo, caption, 1}}, - {2587, {wxAuiPaneInfo, captionVisible, 1}}, - {2588, {wxAuiPaneInfo, centre, 0}}, - {2589, {wxAuiPaneInfo, centrePane, 0}}, - {2590, {wxAuiPaneInfo, closeButton, 1}}, - {2591, {wxAuiPaneInfo, defaultPane, 0}}, - {2592, {wxAuiPaneInfo, destroyOnClose, 1}}, - {2593, {wxAuiPaneInfo, direction, 1}}, - {2594, {wxAuiPaneInfo, dock, 0}}, - {2595, {wxAuiPaneInfo, dockable, 1}}, - {2596, {wxAuiPaneInfo, fixed, 0}}, - {2597, {wxAuiPaneInfo, float, 0}}, - {2598, {wxAuiPaneInfo, floatable, 1}}, - {2599, {wxAuiPaneInfo, floatingPosition_1, 1}}, - {2600, {wxAuiPaneInfo, floatingPosition_2, 2}}, - {2601, {wxAuiPaneInfo, floatingSize_1, 1}}, - {2602, {wxAuiPaneInfo, floatingSize_2, 2}}, - {2603, {wxAuiPaneInfo, gripper, 1}}, - {2604, {wxAuiPaneInfo, gripperTop, 1}}, - {2605, {wxAuiPaneInfo, hasBorder, 0}}, - {2606, {wxAuiPaneInfo, hasCaption, 0}}, - {2607, {wxAuiPaneInfo, hasCloseButton, 0}}, - {2608, {wxAuiPaneInfo, hasFlag, 1}}, - {2609, {wxAuiPaneInfo, hasGripper, 0}}, - {2610, {wxAuiPaneInfo, hasGripperTop, 0}}, - {2611, {wxAuiPaneInfo, hasMaximizeButton, 0}}, - {2612, {wxAuiPaneInfo, hasMinimizeButton, 0}}, - {2613, {wxAuiPaneInfo, hasPinButton, 0}}, - {2614, {wxAuiPaneInfo, hide, 0}}, - {2615, {wxAuiPaneInfo, isBottomDockable, 0}}, - {2616, {wxAuiPaneInfo, isDocked, 0}}, - {2617, {wxAuiPaneInfo, isFixed, 0}}, - {2618, {wxAuiPaneInfo, isFloatable, 0}}, - {2619, {wxAuiPaneInfo, isFloating, 0}}, - {2620, {wxAuiPaneInfo, isLeftDockable, 0}}, - {2621, {wxAuiPaneInfo, isMovable, 0}}, - {2622, {wxAuiPaneInfo, isOk, 0}}, - {2623, {wxAuiPaneInfo, isResizable, 0}}, - {2624, {wxAuiPaneInfo, isRightDockable, 0}}, - {2625, {wxAuiPaneInfo, isShown, 0}}, - {2626, {wxAuiPaneInfo, isToolbar, 0}}, - {2627, {wxAuiPaneInfo, isTopDockable, 0}}, - {2628, {wxAuiPaneInfo, layer, 1}}, - {2629, {wxAuiPaneInfo, left, 0}}, - {2630, {wxAuiPaneInfo, leftDockable, 1}}, - {2631, {wxAuiPaneInfo, maxSize_1, 1}}, - {2632, {wxAuiPaneInfo, maxSize_2, 2}}, - {2633, {wxAuiPaneInfo, maximizeButton, 1}}, - {2634, {wxAuiPaneInfo, minSize_1, 1}}, - {2635, {wxAuiPaneInfo, minSize_2, 2}}, - {2636, {wxAuiPaneInfo, minimizeButton, 1}}, - {2637, {wxAuiPaneInfo, movable, 1}}, - {2638, {wxAuiPaneInfo, name, 1}}, - {2639, {wxAuiPaneInfo, paneBorder, 1}}, - {2640, {wxAuiPaneInfo, pinButton, 1}}, - {2641, {wxAuiPaneInfo, position, 1}}, - {2642, {wxAuiPaneInfo, resizable, 1}}, - {2643, {wxAuiPaneInfo, right, 0}}, - {2644, {wxAuiPaneInfo, rightDockable, 1}}, - {2645, {wxAuiPaneInfo, row, 1}}, - {2646, {wxAuiPaneInfo, safeSet, 1}}, - {2647, {wxAuiPaneInfo, setFlag, 2}}, - {2648, {wxAuiPaneInfo, show, 1}}, - {2649, {wxAuiPaneInfo, toolbarPane, 0}}, - {2650, {wxAuiPaneInfo, top, 0}}, - {2651, {wxAuiPaneInfo, topDockable, 1}}, - {2652, {wxAuiPaneInfo, window, 1}}, - {2653, {wxAuiPaneInfo, getWindow, 0}}, - {2654, {wxAuiPaneInfo, getFrame, 0}}, - {2655, {wxAuiPaneInfo, getDirection, 0}}, - {2656, {wxAuiPaneInfo, getLayer, 0}}, - {2657, {wxAuiPaneInfo, getRow, 0}}, - {2658, {wxAuiPaneInfo, getPosition, 0}}, - {2659, {wxAuiPaneInfo, getFloatingPosition, 0}}, - {2660, {wxAuiPaneInfo, getFloatingSize, 0}}, - {2661, {wxAuiNotebook, new_0, 0}}, - {2662, {wxAuiNotebook, new_2, 2}}, - {2663, {wxAuiNotebook, addPage, 3}}, - {2664, {wxAuiNotebook, create, 2}}, - {2665, {wxAuiNotebook, deletePage, 1}}, - {2666, {wxAuiNotebook, getArtProvider, 0}}, - {2667, {wxAuiNotebook, getPage, 1}}, - {2668, {wxAuiNotebook, getPageBitmap, 1}}, - {2669, {wxAuiNotebook, getPageCount, 0}}, - {2670, {wxAuiNotebook, getPageIndex, 1}}, - {2671, {wxAuiNotebook, getPageText, 1}}, - {2672, {wxAuiNotebook, getSelection, 0}}, - {2673, {wxAuiNotebook, insertPage, 4}}, - {2674, {wxAuiNotebook, removePage, 1}}, - {2675, {wxAuiNotebook, setArtProvider, 1}}, - {2676, {wxAuiNotebook, setFont, 1}}, - {2677, {wxAuiNotebook, setPageBitmap, 2}}, - {2678, {wxAuiNotebook, setPageText, 2}}, - {2679, {wxAuiNotebook, setSelection, 1}}, - {2680, {wxAuiNotebook, setTabCtrlHeight, 1}}, - {2681, {wxAuiNotebook, setUniformBitmapSize, 1}}, - {2682, {wxAuiNotebook, 'Destroy', undefined}}, - {2683, {wxAuiTabArt, setFlags, 1}}, - {2684, {wxAuiTabArt, setMeasuringFont, 1}}, - {2685, {wxAuiTabArt, setNormalFont, 1}}, - {2686, {wxAuiTabArt, setSelectedFont, 1}}, - {2687, {wxAuiTabArt, setColour, 1}}, - {2688, {wxAuiTabArt, setActiveColour, 1}}, - {2689, {wxAuiDockArt, getColour, 1}}, - {2690, {wxAuiDockArt, getFont, 1}}, - {2691, {wxAuiDockArt, getMetric, 1}}, - {2692, {wxAuiDockArt, setColour, 2}}, - {2693, {wxAuiDockArt, setFont, 2}}, - {2694, {wxAuiDockArt, setMetric, 2}}, - {2695, {wxAuiSimpleTabArt, new, 0}}, - {2696, {wxAuiSimpleTabArt, 'Destroy', undefined}}, - {2697, {wxMDIParentFrame, new_0, 0}}, - {2698, {wxMDIParentFrame, new_4, 4}}, - {2699, {wxMDIParentFrame, destruct, 0}}, - {2700, {wxMDIParentFrame, activateNext, 0}}, - {2701, {wxMDIParentFrame, activatePrevious, 0}}, - {2702, {wxMDIParentFrame, arrangeIcons, 0}}, - {2703, {wxMDIParentFrame, cascade, 0}}, - {2704, {wxMDIParentFrame, create, 4}}, - {2705, {wxMDIParentFrame, getActiveChild, 0}}, - {2706, {wxMDIParentFrame, getClientWindow, 0}}, - {2707, {wxMDIParentFrame, tile, 1}}, - {2708, {wxMDIChildFrame, new_0, 0}}, - {2709, {wxMDIChildFrame, new_4, 4}}, - {2710, {wxMDIChildFrame, destruct, 0}}, - {2711, {wxMDIChildFrame, activate, 0}}, - {2712, {wxMDIChildFrame, create, 4}}, - {2713, {wxMDIChildFrame, maximize, 1}}, - {2714, {wxMDIChildFrame, restore, 0}}, - {2715, {wxMDIClientWindow, new_0, 0}}, - {2716, {wxMDIClientWindow, new_2, 2}}, - {2717, {wxMDIClientWindow, destruct, 0}}, - {2718, {wxMDIClientWindow, createClient, 2}}, - {2719, {wxLayoutAlgorithm, new, 0}}, - {2720, {wxLayoutAlgorithm, layoutFrame, 2}}, - {2721, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, - {2722, {wxLayoutAlgorithm, layoutWindow, 2}}, - {2723, {wxLayoutAlgorithm, 'Destroy', undefined}}, - {2724, {wxEvent, getId, 0}}, - {2725, {wxEvent, getSkipped, 0}}, - {2726, {wxEvent, getTimestamp, 0}}, - {2727, {wxEvent, isCommandEvent, 0}}, - {2728, {wxEvent, resumePropagation, 1}}, - {2729, {wxEvent, shouldPropagate, 0}}, - {2730, {wxEvent, skip, 1}}, - {2731, {wxEvent, stopPropagation, 0}}, - {2732, {wxCommandEvent, getClientData, 0}}, - {2733, {wxCommandEvent, getExtraLong, 0}}, - {2734, {wxCommandEvent, getInt, 0}}, - {2735, {wxCommandEvent, getSelection, 0}}, - {2736, {wxCommandEvent, getString, 0}}, - {2737, {wxCommandEvent, isChecked, 0}}, - {2738, {wxCommandEvent, isSelection, 0}}, - {2739, {wxCommandEvent, setInt, 1}}, - {2740, {wxCommandEvent, setString, 1}}, - {2741, {wxScrollEvent, getOrientation, 0}}, - {2742, {wxScrollEvent, getPosition, 0}}, - {2743, {wxScrollWinEvent, getOrientation, 0}}, - {2744, {wxScrollWinEvent, getPosition, 0}}, - {2745, {wxMouseEvent, altDown, 0}}, - {2746, {wxMouseEvent, button, 1}}, - {2747, {wxMouseEvent, buttonDClick, 1}}, - {2748, {wxMouseEvent, buttonDown, 1}}, - {2749, {wxMouseEvent, buttonUp, 1}}, - {2750, {wxMouseEvent, cmdDown, 0}}, - {2751, {wxMouseEvent, controlDown, 0}}, - {2752, {wxMouseEvent, dragging, 0}}, - {2753, {wxMouseEvent, entering, 0}}, - {2754, {wxMouseEvent, getButton, 0}}, - {2757, {wxMouseEvent, getPosition, 0}}, - {2758, {wxMouseEvent, getLogicalPosition, 1}}, - {2759, {wxMouseEvent, getLinesPerAction, 0}}, - {2760, {wxMouseEvent, getWheelRotation, 0}}, - {2761, {wxMouseEvent, getWheelDelta, 0}}, - {2762, {wxMouseEvent, getX, 0}}, - {2763, {wxMouseEvent, getY, 0}}, - {2764, {wxMouseEvent, isButton, 0}}, - {2765, {wxMouseEvent, isPageScroll, 0}}, - {2766, {wxMouseEvent, leaving, 0}}, - {2767, {wxMouseEvent, leftDClick, 0}}, - {2768, {wxMouseEvent, leftDown, 0}}, - {2769, {wxMouseEvent, leftIsDown, 0}}, - {2770, {wxMouseEvent, leftUp, 0}}, - {2771, {wxMouseEvent, metaDown, 0}}, - {2772, {wxMouseEvent, middleDClick, 0}}, - {2773, {wxMouseEvent, middleDown, 0}}, - {2774, {wxMouseEvent, middleIsDown, 0}}, - {2775, {wxMouseEvent, middleUp, 0}}, - {2776, {wxMouseEvent, moving, 0}}, - {2777, {wxMouseEvent, rightDClick, 0}}, - {2778, {wxMouseEvent, rightDown, 0}}, - {2779, {wxMouseEvent, rightIsDown, 0}}, - {2780, {wxMouseEvent, rightUp, 0}}, - {2781, {wxMouseEvent, shiftDown, 0}}, - {2782, {wxSetCursorEvent, getCursor, 0}}, - {2783, {wxSetCursorEvent, getX, 0}}, - {2784, {wxSetCursorEvent, getY, 0}}, - {2785, {wxSetCursorEvent, hasCursor, 0}}, - {2786, {wxSetCursorEvent, setCursor, 1}}, - {2787, {wxKeyEvent, altDown, 0}}, - {2788, {wxKeyEvent, cmdDown, 0}}, - {2789, {wxKeyEvent, controlDown, 0}}, - {2790, {wxKeyEvent, getKeyCode, 0}}, - {2791, {wxKeyEvent, getModifiers, 0}}, - {2794, {wxKeyEvent, getPosition, 0}}, - {2795, {wxKeyEvent, getRawKeyCode, 0}}, - {2796, {wxKeyEvent, getRawKeyFlags, 0}}, - {2797, {wxKeyEvent, getUnicodeKey, 0}}, - {2798, {wxKeyEvent, getX, 0}}, - {2799, {wxKeyEvent, getY, 0}}, - {2800, {wxKeyEvent, hasModifiers, 0}}, - {2801, {wxKeyEvent, metaDown, 0}}, - {2802, {wxKeyEvent, shiftDown, 0}}, - {2803, {wxSizeEvent, getSize, 0}}, - {2804, {wxMoveEvent, getPosition, 0}}, - {2805, {wxEraseEvent, getDC, 0}}, - {2806, {wxFocusEvent, getWindow, 0}}, - {2807, {wxChildFocusEvent, getWindow, 0}}, - {2808, {wxMenuEvent, getMenu, 0}}, - {2809, {wxMenuEvent, getMenuId, 0}}, - {2810, {wxMenuEvent, isPopup, 0}}, - {2811, {wxCloseEvent, canVeto, 0}}, - {2812, {wxCloseEvent, getLoggingOff, 0}}, - {2813, {wxCloseEvent, setCanVeto, 1}}, - {2814, {wxCloseEvent, setLoggingOff, 1}}, - {2815, {wxCloseEvent, veto, 1}}, - {2816, {wxShowEvent, setShow, 1}}, - {2817, {wxShowEvent, getShow, 0}}, - {2818, {wxIconizeEvent, iconized, 0}}, - {2819, {wxJoystickEvent, buttonDown, 1}}, - {2820, {wxJoystickEvent, buttonIsDown, 1}}, - {2821, {wxJoystickEvent, buttonUp, 1}}, - {2822, {wxJoystickEvent, getButtonChange, 0}}, - {2823, {wxJoystickEvent, getButtonState, 0}}, - {2824, {wxJoystickEvent, getJoystick, 0}}, - {2825, {wxJoystickEvent, getPosition, 0}}, - {2826, {wxJoystickEvent, getZPosition, 0}}, - {2827, {wxJoystickEvent, isButton, 0}}, - {2828, {wxJoystickEvent, isMove, 0}}, - {2829, {wxJoystickEvent, isZMove, 0}}, - {2830, {wxUpdateUIEvent, canUpdate, 1}}, - {2831, {wxUpdateUIEvent, check, 1}}, - {2832, {wxUpdateUIEvent, enable, 1}}, - {2833, {wxUpdateUIEvent, show, 1}}, - {2834, {wxUpdateUIEvent, getChecked, 0}}, - {2835, {wxUpdateUIEvent, getEnabled, 0}}, - {2836, {wxUpdateUIEvent, getShown, 0}}, - {2837, {wxUpdateUIEvent, getSetChecked, 0}}, - {2838, {wxUpdateUIEvent, getSetEnabled, 0}}, - {2839, {wxUpdateUIEvent, getSetShown, 0}}, - {2840, {wxUpdateUIEvent, getSetText, 0}}, - {2841, {wxUpdateUIEvent, getText, 0}}, - {2842, {wxUpdateUIEvent, getMode, 0}}, - {2843, {wxUpdateUIEvent, getUpdateInterval, 0}}, - {2844, {wxUpdateUIEvent, resetUpdateTime, 0}}, - {2845, {wxUpdateUIEvent, setMode, 1}}, - {2846, {wxUpdateUIEvent, setText, 1}}, - {2847, {wxUpdateUIEvent, setUpdateInterval, 1}}, - {2848, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, - {2849, {wxPaletteChangedEvent, setChangedWindow, 1}}, - {2850, {wxPaletteChangedEvent, getChangedWindow, 0}}, - {2851, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, - {2852, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, - {2853, {wxNavigationKeyEvent, getDirection, 0}}, - {2854, {wxNavigationKeyEvent, setDirection, 1}}, - {2855, {wxNavigationKeyEvent, isWindowChange, 0}}, - {2856, {wxNavigationKeyEvent, setWindowChange, 1}}, - {2857, {wxNavigationKeyEvent, isFromTab, 0}}, - {2858, {wxNavigationKeyEvent, setFromTab, 1}}, - {2859, {wxNavigationKeyEvent, getCurrentFocus, 0}}, - {2860, {wxNavigationKeyEvent, setCurrentFocus, 1}}, - {2861, {wxHelpEvent, getOrigin, 0}}, - {2862, {wxHelpEvent, getPosition, 0}}, - {2863, {wxHelpEvent, setOrigin, 1}}, - {2864, {wxHelpEvent, setPosition, 1}}, - {2865, {wxContextMenuEvent, getPosition, 0}}, - {2866, {wxContextMenuEvent, setPosition, 1}}, - {2867, {wxIdleEvent, canSend, 1}}, - {2868, {wxIdleEvent, getMode, 0}}, - {2869, {wxIdleEvent, requestMore, 1}}, - {2870, {wxIdleEvent, moreRequested, 0}}, - {2871, {wxIdleEvent, setMode, 1}}, - {2872, {wxGridEvent, altDown, 0}}, - {2873, {wxGridEvent, controlDown, 0}}, - {2874, {wxGridEvent, getCol, 0}}, - {2875, {wxGridEvent, getPosition, 0}}, - {2876, {wxGridEvent, getRow, 0}}, - {2877, {wxGridEvent, metaDown, 0}}, - {2878, {wxGridEvent, selecting, 0}}, - {2879, {wxGridEvent, shiftDown, 0}}, - {2880, {wxNotifyEvent, allow, 0}}, - {2881, {wxNotifyEvent, isAllowed, 0}}, - {2882, {wxNotifyEvent, veto, 0}}, - {2883, {wxSashEvent, getEdge, 0}}, - {2884, {wxSashEvent, getDragRect, 0}}, - {2885, {wxSashEvent, getDragStatus, 0}}, - {2886, {wxListEvent, getCacheFrom, 0}}, - {2887, {wxListEvent, getCacheTo, 0}}, - {2888, {wxListEvent, getKeyCode, 0}}, - {2889, {wxListEvent, getIndex, 0}}, - {2890, {wxListEvent, getColumn, 0}}, - {2891, {wxListEvent, getPoint, 0}}, - {2892, {wxListEvent, getLabel, 0}}, - {2893, {wxListEvent, getText, 0}}, - {2894, {wxListEvent, getImage, 0}}, - {2895, {wxListEvent, getData, 0}}, - {2896, {wxListEvent, getMask, 0}}, - {2897, {wxListEvent, getItem, 0}}, - {2898, {wxListEvent, isEditCancelled, 0}}, - {2899, {wxDateEvent, getDate, 0}}, - {2900, {wxCalendarEvent, getWeekDay, 0}}, - {2901, {wxFileDirPickerEvent, getPath, 0}}, - {2902, {wxColourPickerEvent, getColour, 0}}, - {2903, {wxFontPickerEvent, getFont, 0}}, - {2904, {wxStyledTextEvent, getPosition, 0}}, - {2905, {wxStyledTextEvent, getKey, 0}}, - {2906, {wxStyledTextEvent, getModifiers, 0}}, - {2907, {wxStyledTextEvent, getModificationType, 0}}, - {2908, {wxStyledTextEvent, getText, 0}}, - {2909, {wxStyledTextEvent, getLength, 0}}, - {2910, {wxStyledTextEvent, getLinesAdded, 0}}, - {2911, {wxStyledTextEvent, getLine, 0}}, - {2912, {wxStyledTextEvent, getFoldLevelNow, 0}}, - {2913, {wxStyledTextEvent, getFoldLevelPrev, 0}}, - {2914, {wxStyledTextEvent, getMargin, 0}}, - {2915, {wxStyledTextEvent, getMessage, 0}}, - {2916, {wxStyledTextEvent, getWParam, 0}}, - {2917, {wxStyledTextEvent, getLParam, 0}}, - {2918, {wxStyledTextEvent, getListType, 0}}, - {2919, {wxStyledTextEvent, getX, 0}}, - {2920, {wxStyledTextEvent, getY, 0}}, - {2921, {wxStyledTextEvent, getDragText, 0}}, - {2922, {wxStyledTextEvent, getDragAllowMove, 0}}, - {2923, {wxStyledTextEvent, getDragResult, 0}}, - {2924, {wxStyledTextEvent, getShift, 0}}, - {2925, {wxStyledTextEvent, getControl, 0}}, - {2926, {wxStyledTextEvent, getAlt, 0}}, - {2927, {utils, getKeyState, 1}}, - {2928, {utils, getMousePosition, 2}}, - {2929, {utils, getMouseState, 0}}, - {2930, {utils, setDetectableAutoRepeat, 1}}, - {2931, {utils, bell, 0}}, - {2932, {utils, findMenuItemId, 3}}, - {2933, {utils, genericFindWindowAtPoint, 1}}, - {2934, {utils, findWindowAtPoint, 1}}, - {2935, {utils, beginBusyCursor, 1}}, - {2936, {utils, endBusyCursor, 0}}, - {2937, {utils, isBusy, 0}}, - {2938, {utils, shutdown, 1}}, - {2939, {utils, shell, 1}}, - {2940, {utils, launchDefaultBrowser, 2}}, - {2941, {utils, getEmailAddress, 0}}, - {2942, {utils, getUserId, 0}}, - {2943, {utils, getHomeDir, 0}}, - {2944, {utils, newId, 0}}, - {2945, {utils, registerId, 1}}, - {2946, {utils, getCurrentId, 0}}, - {2947, {utils, getOsDescription, 0}}, - {2948, {utils, isPlatformLittleEndian, 0}}, - {2949, {utils, isPlatform64Bit, 0}}, - {2950, {gdicmn, displaySize, 2}}, - {2951, {gdicmn, setCursor, 1}}, - {2952, {wxPrintout, new, 1}}, - {2953, {wxPrintout, destruct, 0}}, - {2954, {wxPrintout, getDC, 0}}, - {2955, {wxPrintout, getPageSizeMM, 2}}, - {2956, {wxPrintout, getPageSizePixels, 2}}, - {2957, {wxPrintout, getPaperRectPixels, 0}}, - {2958, {wxPrintout, getPPIPrinter, 2}}, - {2959, {wxPrintout, getPPIScreen, 2}}, - {2960, {wxPrintout, getTitle, 0}}, - {2961, {wxPrintout, isPreview, 0}}, - {2962, {wxPrintout, fitThisSizeToPaper, 1}}, - {2963, {wxPrintout, fitThisSizeToPage, 1}}, - {2964, {wxPrintout, fitThisSizeToPageMargins, 2}}, - {2965, {wxPrintout, mapScreenSizeToPaper, 0}}, - {2966, {wxPrintout, mapScreenSizeToPage, 0}}, - {2967, {wxPrintout, mapScreenSizeToPageMargins, 1}}, - {2968, {wxPrintout, mapScreenSizeToDevice, 0}}, - {2969, {wxPrintout, getLogicalPaperRect, 0}}, - {2970, {wxPrintout, getLogicalPageRect, 0}}, - {2971, {wxPrintout, getLogicalPageMarginsRect, 1}}, - {2972, {wxPrintout, setLogicalOrigin, 2}}, - {2973, {wxPrintout, offsetLogicalOrigin, 2}}, - {2974, {wxStyledTextCtrl, new_2, 2}}, - {2975, {wxStyledTextCtrl, new_0, 0}}, - {2976, {wxStyledTextCtrl, destruct, 0}}, - {2977, {wxStyledTextCtrl, create, 2}}, - {2978, {wxStyledTextCtrl, addText, 1}}, - {2979, {wxStyledTextCtrl, addStyledText, 1}}, - {2980, {wxStyledTextCtrl, insertText, 2}}, - {2981, {wxStyledTextCtrl, clearAll, 0}}, - {2982, {wxStyledTextCtrl, clearDocumentStyle, 0}}, - {2983, {wxStyledTextCtrl, getLength, 0}}, - {2984, {wxStyledTextCtrl, getCharAt, 1}}, - {2985, {wxStyledTextCtrl, getCurrentPos, 0}}, - {2986, {wxStyledTextCtrl, getAnchor, 0}}, - {2987, {wxStyledTextCtrl, getStyleAt, 1}}, - {2988, {wxStyledTextCtrl, redo, 0}}, - {2989, {wxStyledTextCtrl, setUndoCollection, 1}}, - {2990, {wxStyledTextCtrl, selectAll, 0}}, - {2991, {wxStyledTextCtrl, setSavePoint, 0}}, - {2992, {wxStyledTextCtrl, getStyledText, 2}}, - {2993, {wxStyledTextCtrl, canRedo, 0}}, - {2994, {wxStyledTextCtrl, markerLineFromHandle, 1}}, - {2995, {wxStyledTextCtrl, markerDeleteHandle, 1}}, - {2996, {wxStyledTextCtrl, getUndoCollection, 0}}, - {2997, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, - {2998, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, - {2999, {wxStyledTextCtrl, positionFromPoint, 1}}, - {3000, {wxStyledTextCtrl, positionFromPointClose, 2}}, - {3001, {wxStyledTextCtrl, gotoLine, 1}}, - {3002, {wxStyledTextCtrl, gotoPos, 1}}, - {3003, {wxStyledTextCtrl, setAnchor, 1}}, - {3004, {wxStyledTextCtrl, getCurLine, 1}}, - {3005, {wxStyledTextCtrl, getEndStyled, 0}}, - {3006, {wxStyledTextCtrl, convertEOLs, 1}}, - {3007, {wxStyledTextCtrl, getEOLMode, 0}}, - {3008, {wxStyledTextCtrl, setEOLMode, 1}}, - {3009, {wxStyledTextCtrl, startStyling, 2}}, - {3010, {wxStyledTextCtrl, setStyling, 2}}, - {3011, {wxStyledTextCtrl, getBufferedDraw, 0}}, - {3012, {wxStyledTextCtrl, setBufferedDraw, 1}}, - {3013, {wxStyledTextCtrl, setTabWidth, 1}}, - {3014, {wxStyledTextCtrl, getTabWidth, 0}}, - {3015, {wxStyledTextCtrl, setCodePage, 1}}, - {3016, {wxStyledTextCtrl, markerDefine, 3}}, - {3017, {wxStyledTextCtrl, markerSetForeground, 2}}, - {3018, {wxStyledTextCtrl, markerSetBackground, 2}}, - {3019, {wxStyledTextCtrl, markerAdd, 2}}, - {3020, {wxStyledTextCtrl, markerDelete, 2}}, - {3021, {wxStyledTextCtrl, markerDeleteAll, 1}}, - {3022, {wxStyledTextCtrl, markerGet, 1}}, - {3023, {wxStyledTextCtrl, markerNext, 2}}, - {3024, {wxStyledTextCtrl, markerPrevious, 2}}, - {3025, {wxStyledTextCtrl, markerDefineBitmap, 2}}, - {3026, {wxStyledTextCtrl, markerAddSet, 2}}, - {3027, {wxStyledTextCtrl, markerSetAlpha, 2}}, - {3028, {wxStyledTextCtrl, setMarginType, 2}}, - {3029, {wxStyledTextCtrl, getMarginType, 1}}, - {3030, {wxStyledTextCtrl, setMarginWidth, 2}}, - {3031, {wxStyledTextCtrl, getMarginWidth, 1}}, - {3032, {wxStyledTextCtrl, setMarginMask, 2}}, - {3033, {wxStyledTextCtrl, getMarginMask, 1}}, - {3034, {wxStyledTextCtrl, setMarginSensitive, 2}}, - {3035, {wxStyledTextCtrl, getMarginSensitive, 1}}, - {3036, {wxStyledTextCtrl, styleClearAll, 0}}, - {3037, {wxStyledTextCtrl, styleSetForeground, 2}}, - {3038, {wxStyledTextCtrl, styleSetBackground, 2}}, - {3039, {wxStyledTextCtrl, styleSetBold, 2}}, - {3040, {wxStyledTextCtrl, styleSetItalic, 2}}, - {3041, {wxStyledTextCtrl, styleSetSize, 2}}, - {3042, {wxStyledTextCtrl, styleSetFaceName, 2}}, - {3043, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, - {3044, {wxStyledTextCtrl, styleResetDefault, 0}}, - {3045, {wxStyledTextCtrl, styleSetUnderline, 2}}, - {3046, {wxStyledTextCtrl, styleSetCase, 2}}, - {3047, {wxStyledTextCtrl, styleSetHotSpot, 2}}, - {3048, {wxStyledTextCtrl, setSelForeground, 2}}, - {3049, {wxStyledTextCtrl, setSelBackground, 2}}, - {3050, {wxStyledTextCtrl, getSelAlpha, 0}}, - {3051, {wxStyledTextCtrl, setSelAlpha, 1}}, - {3052, {wxStyledTextCtrl, setCaretForeground, 1}}, - {3053, {wxStyledTextCtrl, cmdKeyAssign, 3}}, - {3054, {wxStyledTextCtrl, cmdKeyClear, 2}}, - {3055, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, - {3056, {wxStyledTextCtrl, setStyleBytes, 2}}, - {3057, {wxStyledTextCtrl, styleSetVisible, 2}}, - {3058, {wxStyledTextCtrl, getCaretPeriod, 0}}, - {3059, {wxStyledTextCtrl, setCaretPeriod, 1}}, - {3060, {wxStyledTextCtrl, setWordChars, 1}}, - {3061, {wxStyledTextCtrl, beginUndoAction, 0}}, - {3062, {wxStyledTextCtrl, endUndoAction, 0}}, - {3063, {wxStyledTextCtrl, indicatorSetStyle, 2}}, - {3064, {wxStyledTextCtrl, indicatorGetStyle, 1}}, - {3065, {wxStyledTextCtrl, indicatorSetForeground, 2}}, - {3066, {wxStyledTextCtrl, indicatorGetForeground, 1}}, - {3067, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, - {3068, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, - {3069, {wxStyledTextCtrl, getStyleBits, 0}}, - {3070, {wxStyledTextCtrl, setLineState, 2}}, - {3071, {wxStyledTextCtrl, getLineState, 1}}, - {3072, {wxStyledTextCtrl, getMaxLineState, 0}}, - {3073, {wxStyledTextCtrl, getCaretLineVisible, 0}}, - {3074, {wxStyledTextCtrl, setCaretLineVisible, 1}}, - {3075, {wxStyledTextCtrl, getCaretLineBackground, 0}}, - {3076, {wxStyledTextCtrl, setCaretLineBackground, 1}}, - {3077, {wxStyledTextCtrl, autoCompShow, 2}}, - {3078, {wxStyledTextCtrl, autoCompCancel, 0}}, - {3079, {wxStyledTextCtrl, autoCompActive, 0}}, - {3080, {wxStyledTextCtrl, autoCompPosStart, 0}}, - {3081, {wxStyledTextCtrl, autoCompComplete, 0}}, - {3082, {wxStyledTextCtrl, autoCompStops, 1}}, - {3083, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, - {3084, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, - {3085, {wxStyledTextCtrl, autoCompSelect, 1}}, - {3086, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, - {3087, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, - {3088, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, - {3089, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, - {3090, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, - {3091, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, - {3092, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, - {3093, {wxStyledTextCtrl, userListShow, 2}}, - {3094, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, - {3095, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, - {3096, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, - {3097, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, - {3098, {wxStyledTextCtrl, registerImage, 2}}, - {3099, {wxStyledTextCtrl, clearRegisteredImages, 0}}, - {3100, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, - {3101, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, - {3102, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, - {3103, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, - {3104, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, - {3105, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, - {3106, {wxStyledTextCtrl, setIndent, 1}}, - {3107, {wxStyledTextCtrl, getIndent, 0}}, - {3108, {wxStyledTextCtrl, setUseTabs, 1}}, - {3109, {wxStyledTextCtrl, getUseTabs, 0}}, - {3110, {wxStyledTextCtrl, setLineIndentation, 2}}, - {3111, {wxStyledTextCtrl, getLineIndentation, 1}}, - {3112, {wxStyledTextCtrl, getLineIndentPosition, 1}}, - {3113, {wxStyledTextCtrl, getColumn, 1}}, - {3114, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, - {3115, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, - {3116, {wxStyledTextCtrl, setIndentationGuides, 1}}, - {3117, {wxStyledTextCtrl, getIndentationGuides, 0}}, - {3118, {wxStyledTextCtrl, setHighlightGuide, 1}}, - {3119, {wxStyledTextCtrl, getHighlightGuide, 0}}, - {3120, {wxStyledTextCtrl, getLineEndPosition, 1}}, - {3121, {wxStyledTextCtrl, getCodePage, 0}}, - {3122, {wxStyledTextCtrl, getCaretForeground, 0}}, - {3123, {wxStyledTextCtrl, getReadOnly, 0}}, - {3124, {wxStyledTextCtrl, setCurrentPos, 1}}, - {3125, {wxStyledTextCtrl, setSelectionStart, 1}}, - {3126, {wxStyledTextCtrl, getSelectionStart, 0}}, - {3127, {wxStyledTextCtrl, setSelectionEnd, 1}}, - {3128, {wxStyledTextCtrl, getSelectionEnd, 0}}, - {3129, {wxStyledTextCtrl, setPrintMagnification, 1}}, - {3130, {wxStyledTextCtrl, getPrintMagnification, 0}}, - {3131, {wxStyledTextCtrl, setPrintColourMode, 1}}, - {3132, {wxStyledTextCtrl, getPrintColourMode, 0}}, - {3133, {wxStyledTextCtrl, findText, 4}}, - {3134, {wxStyledTextCtrl, formatRange, 7}}, - {3135, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, - {3136, {wxStyledTextCtrl, getLine, 1}}, - {3137, {wxStyledTextCtrl, getLineCount, 0}}, - {3138, {wxStyledTextCtrl, setMarginLeft, 1}}, - {3139, {wxStyledTextCtrl, getMarginLeft, 0}}, - {3140, {wxStyledTextCtrl, setMarginRight, 1}}, - {3141, {wxStyledTextCtrl, getMarginRight, 0}}, - {3142, {wxStyledTextCtrl, getModify, 0}}, - {3143, {wxStyledTextCtrl, setSelection, 2}}, - {3144, {wxStyledTextCtrl, getSelectedText, 0}}, - {3145, {wxStyledTextCtrl, getTextRange, 2}}, - {3146, {wxStyledTextCtrl, hideSelection, 1}}, - {3147, {wxStyledTextCtrl, lineFromPosition, 1}}, - {3148, {wxStyledTextCtrl, positionFromLine, 1}}, - {3149, {wxStyledTextCtrl, lineScroll, 2}}, - {3150, {wxStyledTextCtrl, ensureCaretVisible, 0}}, - {3151, {wxStyledTextCtrl, replaceSelection, 1}}, - {3152, {wxStyledTextCtrl, setReadOnly, 1}}, - {3153, {wxStyledTextCtrl, canPaste, 0}}, - {3154, {wxStyledTextCtrl, canUndo, 0}}, - {3155, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, - {3156, {wxStyledTextCtrl, undo, 0}}, - {3157, {wxStyledTextCtrl, cut, 0}}, - {3158, {wxStyledTextCtrl, copy, 0}}, - {3159, {wxStyledTextCtrl, paste, 0}}, - {3160, {wxStyledTextCtrl, clear, 0}}, - {3161, {wxStyledTextCtrl, setText, 1}}, - {3162, {wxStyledTextCtrl, getText, 0}}, - {3163, {wxStyledTextCtrl, getTextLength, 0}}, - {3164, {wxStyledTextCtrl, getOvertype, 0}}, - {3165, {wxStyledTextCtrl, setCaretWidth, 1}}, - {3166, {wxStyledTextCtrl, getCaretWidth, 0}}, - {3167, {wxStyledTextCtrl, setTargetStart, 1}}, - {3168, {wxStyledTextCtrl, getTargetStart, 0}}, - {3169, {wxStyledTextCtrl, setTargetEnd, 1}}, - {3170, {wxStyledTextCtrl, getTargetEnd, 0}}, - {3171, {wxStyledTextCtrl, replaceTarget, 1}}, - {3172, {wxStyledTextCtrl, searchInTarget, 1}}, - {3173, {wxStyledTextCtrl, setSearchFlags, 1}}, - {3174, {wxStyledTextCtrl, getSearchFlags, 0}}, - {3175, {wxStyledTextCtrl, callTipShow, 2}}, - {3176, {wxStyledTextCtrl, callTipCancel, 0}}, - {3177, {wxStyledTextCtrl, callTipActive, 0}}, - {3178, {wxStyledTextCtrl, callTipPosAtStart, 0}}, - {3179, {wxStyledTextCtrl, callTipSetHighlight, 2}}, - {3180, {wxStyledTextCtrl, callTipSetBackground, 1}}, - {3181, {wxStyledTextCtrl, callTipSetForeground, 1}}, - {3182, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, - {3183, {wxStyledTextCtrl, callTipUseStyle, 1}}, - {3184, {wxStyledTextCtrl, visibleFromDocLine, 1}}, - {3185, {wxStyledTextCtrl, docLineFromVisible, 1}}, - {3186, {wxStyledTextCtrl, wrapCount, 1}}, - {3187, {wxStyledTextCtrl, setFoldLevel, 2}}, - {3188, {wxStyledTextCtrl, getFoldLevel, 1}}, - {3189, {wxStyledTextCtrl, getLastChild, 2}}, - {3190, {wxStyledTextCtrl, getFoldParent, 1}}, - {3191, {wxStyledTextCtrl, showLines, 2}}, - {3192, {wxStyledTextCtrl, hideLines, 2}}, - {3193, {wxStyledTextCtrl, getLineVisible, 1}}, - {3194, {wxStyledTextCtrl, setFoldExpanded, 2}}, - {3195, {wxStyledTextCtrl, getFoldExpanded, 1}}, - {3196, {wxStyledTextCtrl, toggleFold, 1}}, - {3197, {wxStyledTextCtrl, ensureVisible, 1}}, - {3198, {wxStyledTextCtrl, setFoldFlags, 1}}, - {3199, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, - {3200, {wxStyledTextCtrl, setTabIndents, 1}}, - {3201, {wxStyledTextCtrl, getTabIndents, 0}}, - {3202, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, - {3203, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, - {3204, {wxStyledTextCtrl, setMouseDwellTime, 1}}, - {3205, {wxStyledTextCtrl, getMouseDwellTime, 0}}, - {3206, {wxStyledTextCtrl, wordStartPosition, 2}}, - {3207, {wxStyledTextCtrl, wordEndPosition, 2}}, - {3208, {wxStyledTextCtrl, setWrapMode, 1}}, - {3209, {wxStyledTextCtrl, getWrapMode, 0}}, - {3210, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, - {3211, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, - {3212, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, - {3213, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, - {3214, {wxStyledTextCtrl, setWrapStartIndent, 1}}, - {3215, {wxStyledTextCtrl, getWrapStartIndent, 0}}, - {3216, {wxStyledTextCtrl, setLayoutCache, 1}}, - {3217, {wxStyledTextCtrl, getLayoutCache, 0}}, - {3218, {wxStyledTextCtrl, setScrollWidth, 1}}, - {3219, {wxStyledTextCtrl, getScrollWidth, 0}}, - {3220, {wxStyledTextCtrl, textWidth, 2}}, - {3221, {wxStyledTextCtrl, getEndAtLastLine, 0}}, - {3222, {wxStyledTextCtrl, textHeight, 1}}, - {3223, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, - {3224, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, - {3225, {wxStyledTextCtrl, appendText, 1}}, - {3226, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, - {3227, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, - {3228, {wxStyledTextCtrl, targetFromSelection, 0}}, - {3229, {wxStyledTextCtrl, linesJoin, 0}}, - {3230, {wxStyledTextCtrl, linesSplit, 1}}, - {3231, {wxStyledTextCtrl, setFoldMarginColour, 2}}, - {3232, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, - {3233, {wxStyledTextCtrl, lineDown, 0}}, - {3234, {wxStyledTextCtrl, lineDownExtend, 0}}, - {3235, {wxStyledTextCtrl, lineUp, 0}}, - {3236, {wxStyledTextCtrl, lineUpExtend, 0}}, - {3237, {wxStyledTextCtrl, charLeft, 0}}, - {3238, {wxStyledTextCtrl, charLeftExtend, 0}}, - {3239, {wxStyledTextCtrl, charRight, 0}}, - {3240, {wxStyledTextCtrl, charRightExtend, 0}}, - {3241, {wxStyledTextCtrl, wordLeft, 0}}, - {3242, {wxStyledTextCtrl, wordLeftExtend, 0}}, - {3243, {wxStyledTextCtrl, wordRight, 0}}, - {3244, {wxStyledTextCtrl, wordRightExtend, 0}}, - {3245, {wxStyledTextCtrl, home, 0}}, - {3246, {wxStyledTextCtrl, homeExtend, 0}}, - {3247, {wxStyledTextCtrl, lineEnd, 0}}, - {3248, {wxStyledTextCtrl, lineEndExtend, 0}}, - {3249, {wxStyledTextCtrl, documentStart, 0}}, - {3250, {wxStyledTextCtrl, documentStartExtend, 0}}, - {3251, {wxStyledTextCtrl, documentEnd, 0}}, - {3252, {wxStyledTextCtrl, documentEndExtend, 0}}, - {3253, {wxStyledTextCtrl, pageUp, 0}}, - {3254, {wxStyledTextCtrl, pageUpExtend, 0}}, - {3255, {wxStyledTextCtrl, pageDown, 0}}, - {3256, {wxStyledTextCtrl, pageDownExtend, 0}}, - {3257, {wxStyledTextCtrl, editToggleOvertype, 0}}, - {3258, {wxStyledTextCtrl, cancel, 0}}, - {3259, {wxStyledTextCtrl, deleteBack, 0}}, - {3260, {wxStyledTextCtrl, tab, 0}}, - {3261, {wxStyledTextCtrl, backTab, 0}}, - {3262, {wxStyledTextCtrl, newLine, 0}}, - {3263, {wxStyledTextCtrl, formFeed, 0}}, - {3264, {wxStyledTextCtrl, vCHome, 0}}, - {3265, {wxStyledTextCtrl, vCHomeExtend, 0}}, - {3266, {wxStyledTextCtrl, zoomIn, 0}}, - {3267, {wxStyledTextCtrl, zoomOut, 0}}, - {3268, {wxStyledTextCtrl, delWordLeft, 0}}, - {3269, {wxStyledTextCtrl, delWordRight, 0}}, - {3270, {wxStyledTextCtrl, lineCut, 0}}, - {3271, {wxStyledTextCtrl, lineDelete, 0}}, - {3272, {wxStyledTextCtrl, lineTranspose, 0}}, - {3273, {wxStyledTextCtrl, lineDuplicate, 0}}, - {3274, {wxStyledTextCtrl, lowerCase, 0}}, - {3275, {wxStyledTextCtrl, upperCase, 0}}, - {3276, {wxStyledTextCtrl, lineScrollDown, 0}}, - {3277, {wxStyledTextCtrl, lineScrollUp, 0}}, - {3278, {wxStyledTextCtrl, deleteBackNotLine, 0}}, - {3279, {wxStyledTextCtrl, homeDisplay, 0}}, - {3280, {wxStyledTextCtrl, homeDisplayExtend, 0}}, - {3281, {wxStyledTextCtrl, lineEndDisplay, 0}}, - {3282, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, - {3283, {wxStyledTextCtrl, homeWrapExtend, 0}}, - {3284, {wxStyledTextCtrl, lineEndWrap, 0}}, - {3285, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, - {3286, {wxStyledTextCtrl, vCHomeWrap, 0}}, - {3287, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, - {3288, {wxStyledTextCtrl, lineCopy, 0}}, - {3289, {wxStyledTextCtrl, moveCaretInsideView, 0}}, - {3290, {wxStyledTextCtrl, lineLength, 1}}, - {3291, {wxStyledTextCtrl, braceHighlight, 2}}, - {3292, {wxStyledTextCtrl, braceBadLight, 1}}, - {3293, {wxStyledTextCtrl, braceMatch, 1}}, - {3294, {wxStyledTextCtrl, getViewEOL, 0}}, - {3295, {wxStyledTextCtrl, setViewEOL, 1}}, - {3296, {wxStyledTextCtrl, setModEventMask, 1}}, - {3297, {wxStyledTextCtrl, getEdgeColumn, 0}}, - {3298, {wxStyledTextCtrl, setEdgeColumn, 1}}, - {3299, {wxStyledTextCtrl, setEdgeMode, 1}}, - {3300, {wxStyledTextCtrl, getEdgeMode, 0}}, - {3301, {wxStyledTextCtrl, getEdgeColour, 0}}, - {3302, {wxStyledTextCtrl, setEdgeColour, 1}}, - {3303, {wxStyledTextCtrl, searchAnchor, 0}}, - {3304, {wxStyledTextCtrl, searchNext, 2}}, - {3305, {wxStyledTextCtrl, searchPrev, 2}}, - {3306, {wxStyledTextCtrl, linesOnScreen, 0}}, - {3307, {wxStyledTextCtrl, usePopUp, 1}}, - {3308, {wxStyledTextCtrl, selectionIsRectangle, 0}}, - {3309, {wxStyledTextCtrl, setZoom, 1}}, - {3310, {wxStyledTextCtrl, getZoom, 0}}, - {3311, {wxStyledTextCtrl, getModEventMask, 0}}, - {3312, {wxStyledTextCtrl, setSTCFocus, 1}}, - {3313, {wxStyledTextCtrl, getSTCFocus, 0}}, - {3314, {wxStyledTextCtrl, setStatus, 1}}, - {3315, {wxStyledTextCtrl, getStatus, 0}}, - {3316, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, - {3317, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, - {3318, {wxStyledTextCtrl, setSTCCursor, 1}}, - {3319, {wxStyledTextCtrl, getSTCCursor, 0}}, - {3320, {wxStyledTextCtrl, setControlCharSymbol, 1}}, - {3321, {wxStyledTextCtrl, getControlCharSymbol, 0}}, - {3322, {wxStyledTextCtrl, wordPartLeft, 0}}, - {3323, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, - {3324, {wxStyledTextCtrl, wordPartRight, 0}}, - {3325, {wxStyledTextCtrl, wordPartRightExtend, 0}}, - {3326, {wxStyledTextCtrl, setVisiblePolicy, 2}}, - {3327, {wxStyledTextCtrl, delLineLeft, 0}}, - {3328, {wxStyledTextCtrl, delLineRight, 0}}, - {3329, {wxStyledTextCtrl, getXOffset, 0}}, - {3330, {wxStyledTextCtrl, chooseCaretX, 0}}, - {3331, {wxStyledTextCtrl, setXCaretPolicy, 2}}, - {3332, {wxStyledTextCtrl, setYCaretPolicy, 2}}, - {3333, {wxStyledTextCtrl, getPrintWrapMode, 0}}, - {3334, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, - {3335, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, - {3336, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, - {3337, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, - {3338, {wxStyledTextCtrl, paraDownExtend, 0}}, - {3339, {wxStyledTextCtrl, paraUp, 0}}, - {3340, {wxStyledTextCtrl, paraUpExtend, 0}}, - {3341, {wxStyledTextCtrl, positionBefore, 1}}, - {3342, {wxStyledTextCtrl, positionAfter, 1}}, - {3343, {wxStyledTextCtrl, copyRange, 2}}, - {3344, {wxStyledTextCtrl, copyText, 2}}, - {3345, {wxStyledTextCtrl, setSelectionMode, 1}}, - {3346, {wxStyledTextCtrl, getSelectionMode, 0}}, - {3347, {wxStyledTextCtrl, lineDownRectExtend, 0}}, - {3348, {wxStyledTextCtrl, lineUpRectExtend, 0}}, - {3349, {wxStyledTextCtrl, charLeftRectExtend, 0}}, - {3350, {wxStyledTextCtrl, charRightRectExtend, 0}}, - {3351, {wxStyledTextCtrl, homeRectExtend, 0}}, - {3352, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, - {3353, {wxStyledTextCtrl, lineEndRectExtend, 0}}, - {3354, {wxStyledTextCtrl, pageUpRectExtend, 0}}, - {3355, {wxStyledTextCtrl, pageDownRectExtend, 0}}, - {3356, {wxStyledTextCtrl, stutteredPageUp, 0}}, - {3357, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, - {3358, {wxStyledTextCtrl, stutteredPageDown, 0}}, - {3359, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, - {3360, {wxStyledTextCtrl, wordLeftEnd, 0}}, - {3361, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, - {3362, {wxStyledTextCtrl, wordRightEnd, 0}}, - {3363, {wxStyledTextCtrl, wordRightEndExtend, 0}}, - {3364, {wxStyledTextCtrl, setWhitespaceChars, 1}}, - {3365, {wxStyledTextCtrl, setCharsDefault, 0}}, - {3366, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, - {3367, {wxStyledTextCtrl, allocate, 1}}, - {3368, {wxStyledTextCtrl, findColumn, 2}}, - {3369, {wxStyledTextCtrl, getCaretSticky, 0}}, - {3370, {wxStyledTextCtrl, setCaretSticky, 1}}, - {3371, {wxStyledTextCtrl, toggleCaretSticky, 0}}, - {3372, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, - {3373, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, - {3374, {wxStyledTextCtrl, selectionDuplicate, 0}}, - {3375, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, - {3376, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, - {3377, {wxStyledTextCtrl, startRecord, 0}}, - {3378, {wxStyledTextCtrl, stopRecord, 0}}, - {3379, {wxStyledTextCtrl, setLexer, 1}}, - {3380, {wxStyledTextCtrl, getLexer, 0}}, - {3381, {wxStyledTextCtrl, colourise, 2}}, - {3382, {wxStyledTextCtrl, setProperty, 2}}, - {3383, {wxStyledTextCtrl, setKeyWords, 2}}, - {3384, {wxStyledTextCtrl, setLexerLanguage, 1}}, - {3385, {wxStyledTextCtrl, getProperty, 1}}, - {3386, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, - {3387, {wxStyledTextCtrl, getCurrentLine, 0}}, - {3388, {wxStyledTextCtrl, styleSetSpec, 2}}, - {3389, {wxStyledTextCtrl, styleSetFont, 2}}, - {3390, {wxStyledTextCtrl, styleSetFontAttr, 7}}, - {3391, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, - {3392, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, - {3393, {wxStyledTextCtrl, cmdKeyExecute, 1}}, - {3394, {wxStyledTextCtrl, setMargins, 2}}, - {3395, {wxStyledTextCtrl, getSelection, 2}}, - {3396, {wxStyledTextCtrl, pointFromPosition, 1}}, - {3397, {wxStyledTextCtrl, scrollToLine, 1}}, - {3398, {wxStyledTextCtrl, scrollToColumn, 1}}, - {3399, {wxStyledTextCtrl, setVScrollBar, 1}}, - {3400, {wxStyledTextCtrl, setHScrollBar, 1}}, - {3401, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, - {3402, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, - {3403, {wxStyledTextCtrl, saveFile, 1}}, - {3404, {wxStyledTextCtrl, loadFile, 1}}, - {3405, {wxStyledTextCtrl, doDragOver, 3}}, - {3406, {wxStyledTextCtrl, doDropText, 3}}, - {3407, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, - {3408, {wxStyledTextCtrl, addTextRaw, 1}}, - {3409, {wxStyledTextCtrl, insertTextRaw, 2}}, - {3410, {wxStyledTextCtrl, getCurLineRaw, 1}}, - {3411, {wxStyledTextCtrl, getLineRaw, 1}}, - {3412, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, - {3413, {wxStyledTextCtrl, getTextRangeRaw, 2}}, - {3414, {wxStyledTextCtrl, setTextRaw, 1}}, - {3415, {wxStyledTextCtrl, getTextRaw, 0}}, - {3416, {wxStyledTextCtrl, appendTextRaw, 1}}, - {3417, {wxArtProvider, getBitmap, 2}}, - {3418, {wxArtProvider, getIcon, 2}}, - {3419, {wxTreeEvent, getKeyCode, 0}}, - {3420, {wxTreeEvent, getItem, 0}}, - {3421, {wxTreeEvent, getKeyEvent, 0}}, - {3422, {wxTreeEvent, getLabel, 0}}, - {3423, {wxTreeEvent, getOldItem, 0}}, - {3424, {wxTreeEvent, getPoint, 0}}, - {3425, {wxTreeEvent, isEditCancelled, 0}}, - {3426, {wxTreeEvent, setToolTip, 1}}, - {3427, {wxNotebookEvent, getOldSelection, 0}}, - {3428, {wxNotebookEvent, getSelection, 0}}, - {3429, {wxNotebookEvent, setOldSelection, 1}}, - {3430, {wxNotebookEvent, setSelection, 1}}, - {3431, {wxFileDataObject, new, 0}}, - {3432, {wxFileDataObject, addFile, 1}}, - {3433, {wxFileDataObject, getFilenames, 0}}, - {3434, {wxFileDataObject, 'Destroy', undefined}}, - {3435, {wxTextDataObject, new, 1}}, - {3436, {wxTextDataObject, getTextLength, 0}}, - {3437, {wxTextDataObject, getText, 0}}, - {3438, {wxTextDataObject, setText, 1}}, - {3439, {wxTextDataObject, 'Destroy', undefined}}, - {3440, {wxBitmapDataObject, new_1_1, 1}}, - {3441, {wxBitmapDataObject, new_1_0, 1}}, - {3442, {wxBitmapDataObject, getBitmap, 0}}, - {3443, {wxBitmapDataObject, setBitmap, 1}}, - {3444, {wxBitmapDataObject, 'Destroy', undefined}}, - {3446, {wxClipboard, new, 0}}, - {3447, {wxClipboard, destruct, 0}}, - {3448, {wxClipboard, addData, 1}}, - {3449, {wxClipboard, clear, 0}}, - {3450, {wxClipboard, close, 0}}, - {3451, {wxClipboard, flush, 0}}, - {3452, {wxClipboard, getData, 1}}, - {3453, {wxClipboard, isOpened, 0}}, - {3454, {wxClipboard, open, 0}}, - {3455, {wxClipboard, setData, 1}}, - {3457, {wxClipboard, usePrimarySelection, 1}}, - {3458, {wxClipboard, isSupported, 1}}, - {3459, {wxClipboard, get, 0}}, - {3460, {wxSpinEvent, getPosition, 0}}, - {3461, {wxSpinEvent, setPosition, 1}}, - {3462, {wxSplitterWindow, new_0, 0}}, - {3463, {wxSplitterWindow, new_2, 2}}, - {3464, {wxSplitterWindow, destruct, 0}}, - {3465, {wxSplitterWindow, create, 2}}, - {3466, {wxSplitterWindow, getMinimumPaneSize, 0}}, - {3467, {wxSplitterWindow, getSashGravity, 0}}, - {3468, {wxSplitterWindow, getSashPosition, 0}}, - {3469, {wxSplitterWindow, getSplitMode, 0}}, - {3470, {wxSplitterWindow, getWindow1, 0}}, - {3471, {wxSplitterWindow, getWindow2, 0}}, - {3472, {wxSplitterWindow, initialize, 1}}, - {3473, {wxSplitterWindow, isSplit, 0}}, - {3474, {wxSplitterWindow, replaceWindow, 2}}, - {3475, {wxSplitterWindow, setSashGravity, 1}}, - {3476, {wxSplitterWindow, setSashPosition, 2}}, - {3477, {wxSplitterWindow, setSashSize, 1}}, - {3478, {wxSplitterWindow, setMinimumPaneSize, 1}}, - {3479, {wxSplitterWindow, setSplitMode, 1}}, - {3480, {wxSplitterWindow, splitHorizontally, 3}}, - {3481, {wxSplitterWindow, splitVertically, 3}}, - {3482, {wxSplitterWindow, unsplit, 1}}, - {3483, {wxSplitterWindow, updateSize, 0}}, - {3484, {wxSplitterEvent, getSashPosition, 0}}, - {3485, {wxSplitterEvent, getX, 0}}, - {3486, {wxSplitterEvent, getY, 0}}, - {3487, {wxSplitterEvent, getWindowBeingRemoved, 0}}, - {3488, {wxSplitterEvent, setSashPosition, 1}}, - {3489, {wxHtmlWindow, new_0, 0}}, - {3490, {wxHtmlWindow, new_2, 2}}, - {3491, {wxHtmlWindow, appendToPage, 1}}, - {3492, {wxHtmlWindow, getOpenedAnchor, 0}}, - {3493, {wxHtmlWindow, getOpenedPage, 0}}, - {3494, {wxHtmlWindow, getOpenedPageTitle, 0}}, - {3495, {wxHtmlWindow, getRelatedFrame, 0}}, - {3496, {wxHtmlWindow, historyBack, 0}}, - {3497, {wxHtmlWindow, historyCanBack, 0}}, - {3498, {wxHtmlWindow, historyCanForward, 0}}, - {3499, {wxHtmlWindow, historyClear, 0}}, - {3500, {wxHtmlWindow, historyForward, 0}}, - {3501, {wxHtmlWindow, loadFile, 1}}, - {3502, {wxHtmlWindow, loadPage, 1}}, - {3503, {wxHtmlWindow, selectAll, 0}}, - {3504, {wxHtmlWindow, selectionToText, 0}}, - {3505, {wxHtmlWindow, selectLine, 1}}, - {3506, {wxHtmlWindow, selectWord, 1}}, - {3507, {wxHtmlWindow, setBorders, 1}}, - {3508, {wxHtmlWindow, setFonts, 3}}, - {3509, {wxHtmlWindow, setPage, 1}}, - {3510, {wxHtmlWindow, setRelatedFrame, 2}}, - {3511, {wxHtmlWindow, setRelatedStatusBar, 1}}, - {3512, {wxHtmlWindow, toText, 0}}, - {3513, {wxHtmlWindow, 'Destroy', undefined}}, - {3514, {wxHtmlLinkEvent, getLinkInfo, 0}}, - {3515, {wxSystemSettings, getColour, 1}}, - {3516, {wxSystemSettings, getFont, 1}}, - {3517, {wxSystemSettings, getMetric, 2}}, - {3518, {wxSystemSettings, getScreenType, 0}}, - {3519, {wxSystemOptions, getOption, 1}}, - {3520, {wxSystemOptions, getOptionInt, 1}}, - {3521, {wxSystemOptions, hasOption, 1}}, - {3522, {wxSystemOptions, isFalse, 1}}, - {3523, {wxSystemOptions, setOption_2_1, 2}}, - {3524, {wxSystemOptions, setOption_2_0, 2}}, - {3525, {wxAuiNotebookEvent, setSelection, 1}}, - {3526, {wxAuiNotebookEvent, getSelection, 0}}, - {3527, {wxAuiNotebookEvent, setOldSelection, 1}}, - {3528, {wxAuiNotebookEvent, getOldSelection, 0}}, - {3529, {wxAuiNotebookEvent, setDragSource, 1}}, - {3530, {wxAuiNotebookEvent, getDragSource, 0}}, - {3531, {wxAuiManagerEvent, setManager, 1}}, - {3532, {wxAuiManagerEvent, getManager, 0}}, - {3533, {wxAuiManagerEvent, setPane, 1}}, - {3534, {wxAuiManagerEvent, getPane, 0}}, - {3535, {wxAuiManagerEvent, setButton, 1}}, - {3536, {wxAuiManagerEvent, getButton, 0}}, - {3537, {wxAuiManagerEvent, setDC, 1}}, - {3538, {wxAuiManagerEvent, getDC, 0}}, - {3539, {wxAuiManagerEvent, veto, 1}}, - {3540, {wxAuiManagerEvent, getVeto, 0}}, - {3541, {wxAuiManagerEvent, setCanVeto, 1}}, - {3542, {wxAuiManagerEvent, canVeto, 0}}, - {3543, {wxLogNull, new, 0}}, - {3544, {wxLogNull, 'Destroy', undefined}}, - {3545, {wxTaskBarIcon, new, 0}}, - {3546, {wxTaskBarIcon, destruct, 0}}, - {3547, {wxTaskBarIcon, popupMenu, 1}}, - {3548, {wxTaskBarIcon, removeIcon, 0}}, - {3549, {wxTaskBarIcon, setIcon, 2}}, - {3550, {wxLocale, new_0, 0}}, - {3552, {wxLocale, new_2, 2}}, - {3553, {wxLocale, destruct, 0}}, - {3555, {wxLocale, init, 1}}, - {3556, {wxLocale, addCatalog_1, 1}}, - {3557, {wxLocale, addCatalog_3, 3}}, - {3558, {wxLocale, addCatalogLookupPathPrefix, 1}}, - {3559, {wxLocale, getCanonicalName, 0}}, - {3560, {wxLocale, getLanguage, 0}}, - {3561, {wxLocale, getLanguageName, 1}}, - {3562, {wxLocale, getLocale, 0}}, - {3563, {wxLocale, getName, 0}}, - {3564, {wxLocale, getString_2, 2}}, - {3565, {wxLocale, getString_4, 4}}, - {3566, {wxLocale, getHeaderValue, 2}}, - {3567, {wxLocale, getSysName, 0}}, - {3568, {wxLocale, getSystemEncoding, 0}}, - {3569, {wxLocale, getSystemEncodingName, 0}}, - {3570, {wxLocale, getSystemLanguage, 0}}, - {3571, {wxLocale, isLoaded, 1}}, - {3572, {wxLocale, isOk, 0}}, - {3573, {wxActivateEvent, getActive, 0}}, - {3575, {wxPopupWindow, new_2, 2}}, - {3576, {wxPopupWindow, new_0, 0}}, - {3578, {wxPopupWindow, destruct, 0}}, - {3579, {wxPopupWindow, create, 2}}, - {3580, {wxPopupWindow, position, 2}}, - {3581, {wxPopupTransientWindow, new_0, 0}}, - {3582, {wxPopupTransientWindow, new_2, 2}}, - {3583, {wxPopupTransientWindow, destruct, 0}}, - {3584, {wxPopupTransientWindow, popup, 1}}, - {3585, {wxPopupTransientWindow, dismiss, 0}}, - {3586, {wxOverlay, new, 0}}, - {3587, {wxOverlay, destruct, 0}}, - {3588, {wxOverlay, reset, 0}}, - {3589, {wxDCOverlay, new_6, 6}}, - {3590, {wxDCOverlay, new_2, 2}}, - {3591, {wxDCOverlay, destruct, 0}}, - {3592, {wxDCOverlay, clear, 0}}, + {984, {wxToolBar, addStretchableSpace, 0}}, + {985, {wxToolBar, insertStretchableSpace, 1}}, + {986, {wxToolBar, deleteTool, 1}}, + {987, {wxToolBar, deleteToolByPos, 1}}, + {988, {wxToolBar, enableTool, 2}}, + {989, {wxToolBar, findById, 1}}, + {990, {wxToolBar, findControl, 1}}, + {991, {wxToolBar, findToolForPosition, 2}}, + {992, {wxToolBar, getToolSize, 0}}, + {993, {wxToolBar, getToolBitmapSize, 0}}, + {994, {wxToolBar, getMargins, 0}}, + {995, {wxToolBar, getToolEnabled, 1}}, + {996, {wxToolBar, getToolLongHelp, 1}}, + {997, {wxToolBar, getToolPacking, 0}}, + {998, {wxToolBar, getToolPos, 1}}, + {999, {wxToolBar, getToolSeparation, 0}}, + {1000, {wxToolBar, getToolShortHelp, 1}}, + {1001, {wxToolBar, getToolState, 1}}, + {1002, {wxToolBar, insertControl, 2}}, + {1003, {wxToolBar, insertSeparator, 1}}, + {1004, {wxToolBar, insertTool_5, 5}}, + {1005, {wxToolBar, insertTool_2, 2}}, + {1006, {wxToolBar, insertTool_4, 4}}, + {1007, {wxToolBar, realize, 0}}, + {1008, {wxToolBar, removeTool, 1}}, + {1009, {wxToolBar, setMargins, 2}}, + {1010, {wxToolBar, setToolBitmapSize, 1}}, + {1011, {wxToolBar, setToolLongHelp, 2}}, + {1012, {wxToolBar, setToolPacking, 1}}, + {1013, {wxToolBar, setToolShortHelp, 2}}, + {1014, {wxToolBar, setToolSeparation, 1}}, + {1015, {wxToolBar, toggleTool, 2}}, + {1017, {wxStatusBar, new_0, 0}}, + {1018, {wxStatusBar, new_2, 2}}, + {1020, {wxStatusBar, destruct, 0}}, + {1021, {wxStatusBar, create, 2}}, + {1022, {wxStatusBar, getFieldRect, 2}}, + {1023, {wxStatusBar, getFieldsCount, 0}}, + {1024, {wxStatusBar, getStatusText, 1}}, + {1025, {wxStatusBar, popStatusText, 1}}, + {1026, {wxStatusBar, pushStatusText, 2}}, + {1027, {wxStatusBar, setFieldsCount, 2}}, + {1028, {wxStatusBar, setMinHeight, 1}}, + {1029, {wxStatusBar, setStatusText, 2}}, + {1030, {wxStatusBar, setStatusWidths, 2}}, + {1031, {wxStatusBar, setStatusStyles, 2}}, + {1032, {wxBitmap, new_0, 0}}, + {1033, {wxBitmap, new_3, 3}}, + {1034, {wxBitmap, new_4, 4}}, + {1035, {wxBitmap, new_2_0, 2}}, + {1036, {wxBitmap, new_2_1, 2}}, + {1037, {wxBitmap, destruct, 0}}, + {1038, {wxBitmap, convertToImage, 0}}, + {1039, {wxBitmap, copyFromIcon, 1}}, + {1040, {wxBitmap, create, 3}}, + {1041, {wxBitmap, getDepth, 0}}, + {1042, {wxBitmap, getHeight, 0}}, + {1043, {wxBitmap, getPalette, 0}}, + {1044, {wxBitmap, getMask, 0}}, + {1045, {wxBitmap, getWidth, 0}}, + {1046, {wxBitmap, getSubBitmap, 1}}, + {1047, {wxBitmap, loadFile, 2}}, + {1048, {wxBitmap, ok, 0}}, + {1049, {wxBitmap, saveFile, 3}}, + {1050, {wxBitmap, setDepth, 1}}, + {1051, {wxBitmap, setHeight, 1}}, + {1052, {wxBitmap, setMask, 1}}, + {1053, {wxBitmap, setPalette, 1}}, + {1054, {wxBitmap, setWidth, 1}}, + {1055, {wxIcon, new_0, 0}}, + {1056, {wxIcon, new_2, 2}}, + {1057, {wxIcon, new_1, 1}}, + {1058, {wxIcon, copyFromBitmap, 1}}, + {1059, {wxIcon, 'Destroy', undefined}}, + {1060, {wxIconBundle, new_0, 0}}, + {1061, {wxIconBundle, new_2, 2}}, + {1062, {wxIconBundle, new_1_0, 1}}, + {1063, {wxIconBundle, new_1_1, 1}}, + {1064, {wxIconBundle, destruct, 0}}, + {1065, {wxIconBundle, addIcon_2, 2}}, + {1066, {wxIconBundle, addIcon_1, 1}}, + {1067, {wxIconBundle, getIcon_1_1, 1}}, + {1068, {wxIconBundle, getIcon_1_0, 1}}, + {1069, {wxCursor, new_0, 0}}, + {1070, {wxCursor, new_1_0, 1}}, + {1071, {wxCursor, new_1_1, 1}}, + {1072, {wxCursor, new_4, 4}}, + {1073, {wxCursor, destruct, 0}}, + {1074, {wxCursor, ok, 0}}, + {1075, {wxMask, new_0, 0}}, + {1076, {wxMask, new_2_1, 2}}, + {1077, {wxMask, new_2_0, 2}}, + {1078, {wxMask, new_1, 1}}, + {1079, {wxMask, destruct, 0}}, + {1080, {wxMask, create_2_1, 2}}, + {1081, {wxMask, create_2_0, 2}}, + {1082, {wxMask, create_1, 1}}, + {1083, {wxImage, new_0, 0}}, + {1084, {wxImage, new_3_0, 3}}, + {1085, {wxImage, new_4, 4}}, + {1086, {wxImage, new_5, 5}}, + {1087, {wxImage, new_2, 2}}, + {1088, {wxImage, new_3_1, 3}}, + {1089, {wxImage, blur, 1}}, + {1090, {wxImage, blurHorizontal, 1}}, + {1091, {wxImage, blurVertical, 1}}, + {1092, {wxImage, convertAlphaToMask, 1}}, + {1093, {wxImage, convertToGreyscale, 1}}, + {1094, {wxImage, convertToMono, 3}}, + {1095, {wxImage, copy, 0}}, + {1096, {wxImage, create_3, 3}}, + {1097, {wxImage, create_4, 4}}, + {1098, {wxImage, create_5, 5}}, + {1099, {wxImage, 'Destroy', 0}}, + {1100, {wxImage, findFirstUnusedColour, 4}}, + {1101, {wxImage, getImageExtWildcard, 0}}, + {1102, {wxImage, getAlpha_2, 2}}, + {1103, {wxImage, getAlpha_0, 0}}, + {1104, {wxImage, getBlue, 2}}, + {1105, {wxImage, getData, 0}}, + {1106, {wxImage, getGreen, 2}}, + {1107, {wxImage, getImageCount, 2}}, + {1108, {wxImage, getHeight, 0}}, + {1109, {wxImage, getMaskBlue, 0}}, + {1110, {wxImage, getMaskGreen, 0}}, + {1111, {wxImage, getMaskRed, 0}}, + {1112, {wxImage, getOrFindMaskColour, 3}}, + {1113, {wxImage, getPalette, 0}}, + {1114, {wxImage, getRed, 2}}, + {1115, {wxImage, getSubImage, 1}}, + {1116, {wxImage, getWidth, 0}}, + {1117, {wxImage, hasAlpha, 0}}, + {1118, {wxImage, hasMask, 0}}, + {1119, {wxImage, getOption, 1}}, + {1120, {wxImage, getOptionInt, 1}}, + {1121, {wxImage, hasOption, 1}}, + {1122, {wxImage, initAlpha, 0}}, + {1123, {wxImage, initStandardHandlers, 0}}, + {1124, {wxImage, isTransparent, 3}}, + {1125, {wxImage, loadFile_2, 2}}, + {1126, {wxImage, loadFile_3, 3}}, + {1127, {wxImage, ok, 0}}, + {1128, {wxImage, removeHandler, 1}}, + {1129, {wxImage, mirror, 1}}, + {1130, {wxImage, replace, 6}}, + {1131, {wxImage, rescale, 3}}, + {1132, {wxImage, resize, 3}}, + {1133, {wxImage, rotate, 3}}, + {1134, {wxImage, rotateHue, 1}}, + {1135, {wxImage, rotate90, 1}}, + {1136, {wxImage, saveFile_1, 1}}, + {1137, {wxImage, saveFile_2_0, 2}}, + {1138, {wxImage, saveFile_2_1, 2}}, + {1139, {wxImage, scale, 3}}, + {1140, {wxImage, size, 3}}, + {1141, {wxImage, setAlpha_3, 3}}, + {1142, {wxImage, setAlpha_2, 2}}, + {1143, {wxImage, setData_2, 2}}, + {1144, {wxImage, setData_4, 4}}, + {1145, {wxImage, setMask, 1}}, + {1146, {wxImage, setMaskColour, 3}}, + {1147, {wxImage, setMaskFromImage, 4}}, + {1148, {wxImage, setOption_2_1, 2}}, + {1149, {wxImage, setOption_2_0, 2}}, + {1150, {wxImage, setPalette, 1}}, + {1151, {wxImage, setRGB_5, 5}}, + {1152, {wxImage, setRGB_4, 4}}, + {1153, {wxImage, 'Destroy', undefined}}, + {1154, {wxBrush, new_0, 0}}, + {1155, {wxBrush, new_2, 2}}, + {1156, {wxBrush, new_1, 1}}, + {1158, {wxBrush, destruct, 0}}, + {1159, {wxBrush, getColour, 0}}, + {1160, {wxBrush, getStipple, 0}}, + {1161, {wxBrush, getStyle, 0}}, + {1162, {wxBrush, isHatch, 0}}, + {1163, {wxBrush, isOk, 0}}, + {1164, {wxBrush, setColour_1, 1}}, + {1165, {wxBrush, setColour_3, 3}}, + {1166, {wxBrush, setStipple, 1}}, + {1167, {wxBrush, setStyle, 1}}, + {1168, {wxPen, new_0, 0}}, + {1169, {wxPen, new_2, 2}}, + {1170, {wxPen, destruct, 0}}, + {1171, {wxPen, getCap, 0}}, + {1172, {wxPen, getColour, 0}}, + {1173, {wxPen, getJoin, 0}}, + {1174, {wxPen, getStyle, 0}}, + {1175, {wxPen, getWidth, 0}}, + {1176, {wxPen, isOk, 0}}, + {1177, {wxPen, setCap, 1}}, + {1178, {wxPen, setColour_1, 1}}, + {1179, {wxPen, setColour_3, 3}}, + {1180, {wxPen, setJoin, 1}}, + {1181, {wxPen, setStyle, 1}}, + {1182, {wxPen, setWidth, 1}}, + {1183, {wxRegion, new_0, 0}}, + {1184, {wxRegion, new_4, 4}}, + {1185, {wxRegion, new_2, 2}}, + {1186, {wxRegion, new_1_1, 1}}, + {1188, {wxRegion, new_1_0, 1}}, + {1190, {wxRegion, destruct, 0}}, + {1191, {wxRegion, clear, 0}}, + {1192, {wxRegion, contains_2, 2}}, + {1193, {wxRegion, contains_1_0, 1}}, + {1194, {wxRegion, contains_4, 4}}, + {1195, {wxRegion, contains_1_1, 1}}, + {1196, {wxRegion, convertToBitmap, 0}}, + {1197, {wxRegion, getBox, 0}}, + {1198, {wxRegion, intersect_4, 4}}, + {1199, {wxRegion, intersect_1_1, 1}}, + {1200, {wxRegion, intersect_1_0, 1}}, + {1201, {wxRegion, isEmpty, 0}}, + {1202, {wxRegion, subtract_4, 4}}, + {1203, {wxRegion, subtract_1_1, 1}}, + {1204, {wxRegion, subtract_1_0, 1}}, + {1205, {wxRegion, offset_2, 2}}, + {1206, {wxRegion, offset_1, 1}}, + {1207, {wxRegion, union_4, 4}}, + {1208, {wxRegion, union_1_2, 1}}, + {1209, {wxRegion, union_1_1, 1}}, + {1210, {wxRegion, union_1_0, 1}}, + {1211, {wxRegion, union_3, 3}}, + {1212, {wxRegion, xor_4, 4}}, + {1213, {wxRegion, xor_1_1, 1}}, + {1214, {wxRegion, xor_1_0, 1}}, + {1215, {wxAcceleratorTable, new_0, 0}}, + {1216, {wxAcceleratorTable, new_2, 2}}, + {1217, {wxAcceleratorTable, destruct, 0}}, + {1218, {wxAcceleratorTable, ok, 0}}, + {1219, {wxAcceleratorEntry, new_1_0, 1}}, + {1220, {wxAcceleratorEntry, new_1_1, 1}}, + {1221, {wxAcceleratorEntry, getCommand, 0}}, + {1222, {wxAcceleratorEntry, getFlags, 0}}, + {1223, {wxAcceleratorEntry, getKeyCode, 0}}, + {1224, {wxAcceleratorEntry, set, 4}}, + {1225, {wxAcceleratorEntry, 'Destroy', undefined}}, + {1230, {wxCaret, new_3, 3}}, + {1231, {wxCaret, new_2, 2}}, + {1233, {wxCaret, destruct, 0}}, + {1234, {wxCaret, create_3, 3}}, + {1235, {wxCaret, create_2, 2}}, + {1236, {wxCaret, getBlinkTime, 0}}, + {1238, {wxCaret, getPosition, 0}}, + {1240, {wxCaret, getSize, 0}}, + {1241, {wxCaret, getWindow, 0}}, + {1242, {wxCaret, hide, 0}}, + {1243, {wxCaret, isOk, 0}}, + {1244, {wxCaret, isVisible, 0}}, + {1245, {wxCaret, move_2, 2}}, + {1246, {wxCaret, move_1, 1}}, + {1247, {wxCaret, setBlinkTime, 1}}, + {1248, {wxCaret, setSize_2, 2}}, + {1249, {wxCaret, setSize_1, 1}}, + {1250, {wxCaret, show, 1}}, + {1251, {wxSizer, add_2_1, 2}}, + {1252, {wxSizer, add_2_0, 2}}, + {1253, {wxSizer, add_3, 3}}, + {1254, {wxSizer, add_2_3, 2}}, + {1255, {wxSizer, add_2_2, 2}}, + {1256, {wxSizer, addSpacer, 1}}, + {1257, {wxSizer, addStretchSpacer, 1}}, + {1258, {wxSizer, calcMin, 0}}, + {1259, {wxSizer, clear, 1}}, + {1260, {wxSizer, detach_1_2, 1}}, + {1261, {wxSizer, detach_1_1, 1}}, + {1262, {wxSizer, detach_1_0, 1}}, + {1263, {wxSizer, fit, 1}}, + {1264, {wxSizer, fitInside, 1}}, + {1265, {wxSizer, getChildren, 0}}, + {1266, {wxSizer, getItem_2_1, 2}}, + {1267, {wxSizer, getItem_2_0, 2}}, + {1268, {wxSizer, getItem_1, 1}}, + {1269, {wxSizer, getSize, 0}}, + {1270, {wxSizer, getPosition, 0}}, + {1271, {wxSizer, getMinSize, 0}}, + {1272, {wxSizer, hide_2_0, 2}}, + {1273, {wxSizer, hide_2_1, 2}}, + {1274, {wxSizer, hide_1, 1}}, + {1275, {wxSizer, insert_3_1, 3}}, + {1276, {wxSizer, insert_3_0, 3}}, + {1277, {wxSizer, insert_4, 4}}, + {1278, {wxSizer, insert_3_3, 3}}, + {1279, {wxSizer, insert_3_2, 3}}, + {1280, {wxSizer, insert_2, 2}}, + {1281, {wxSizer, insertSpacer, 2}}, + {1282, {wxSizer, insertStretchSpacer, 2}}, + {1283, {wxSizer, isShown_1_2, 1}}, + {1284, {wxSizer, isShown_1_1, 1}}, + {1285, {wxSizer, isShown_1_0, 1}}, + {1286, {wxSizer, layout, 0}}, + {1287, {wxSizer, prepend_2_1, 2}}, + {1288, {wxSizer, prepend_2_0, 2}}, + {1289, {wxSizer, prepend_3, 3}}, + {1290, {wxSizer, prepend_2_3, 2}}, + {1291, {wxSizer, prepend_2_2, 2}}, + {1292, {wxSizer, prepend_1, 1}}, + {1293, {wxSizer, prependSpacer, 1}}, + {1294, {wxSizer, prependStretchSpacer, 1}}, + {1295, {wxSizer, recalcSizes, 0}}, + {1296, {wxSizer, remove_1_1, 1}}, + {1297, {wxSizer, remove_1_0, 1}}, + {1298, {wxSizer, replace_3_1, 3}}, + {1299, {wxSizer, replace_3_0, 3}}, + {1300, {wxSizer, replace_2, 2}}, + {1301, {wxSizer, setDimension, 4}}, + {1302, {wxSizer, setMinSize_2, 2}}, + {1303, {wxSizer, setMinSize_1, 1}}, + {1304, {wxSizer, setItemMinSize_3_2, 3}}, + {1305, {wxSizer, setItemMinSize_2_2, 2}}, + {1306, {wxSizer, setItemMinSize_3_1, 3}}, + {1307, {wxSizer, setItemMinSize_2_1, 2}}, + {1308, {wxSizer, setItemMinSize_3_0, 3}}, + {1309, {wxSizer, setItemMinSize_2_0, 2}}, + {1310, {wxSizer, setSizeHints, 1}}, + {1311, {wxSizer, setVirtualSizeHints, 1}}, + {1312, {wxSizer, show_2_2, 2}}, + {1313, {wxSizer, show_2_1, 2}}, + {1314, {wxSizer, show_2_0, 2}}, + {1315, {wxSizer, show_1, 1}}, + {1316, {wxSizerFlags, new, 1}}, + {1317, {wxSizerFlags, align, 1}}, + {1318, {wxSizerFlags, border_2, 2}}, + {1319, {wxSizerFlags, border_1, 1}}, + {1320, {wxSizerFlags, center, 0}}, + {1321, {wxSizerFlags, centre, 0}}, + {1322, {wxSizerFlags, expand, 0}}, + {1323, {wxSizerFlags, left, 0}}, + {1324, {wxSizerFlags, proportion, 1}}, + {1325, {wxSizerFlags, right, 0}}, + {1326, {wxSizerFlags, 'Destroy', undefined}}, + {1327, {wxSizerItem, new_5_1, 5}}, + {1328, {wxSizerItem, new_2_1, 2}}, + {1329, {wxSizerItem, new_5_0, 5}}, + {1330, {wxSizerItem, new_2_0, 2}}, + {1331, {wxSizerItem, new_6, 6}}, + {1332, {wxSizerItem, new_3, 3}}, + {1333, {wxSizerItem, new_0, 0}}, + {1334, {wxSizerItem, destruct, 0}}, + {1335, {wxSizerItem, calcMin, 0}}, + {1336, {wxSizerItem, deleteWindows, 0}}, + {1337, {wxSizerItem, detachSizer, 0}}, + {1338, {wxSizerItem, getBorder, 0}}, + {1339, {wxSizerItem, getFlag, 0}}, + {1340, {wxSizerItem, getMinSize, 0}}, + {1341, {wxSizerItem, getPosition, 0}}, + {1342, {wxSizerItem, getProportion, 0}}, + {1343, {wxSizerItem, getRatio, 0}}, + {1344, {wxSizerItem, getRect, 0}}, + {1345, {wxSizerItem, getSize, 0}}, + {1346, {wxSizerItem, getSizer, 0}}, + {1347, {wxSizerItem, getSpacer, 0}}, + {1348, {wxSizerItem, getUserData, 0}}, + {1349, {wxSizerItem, getWindow, 0}}, + {1350, {wxSizerItem, isSizer, 0}}, + {1351, {wxSizerItem, isShown, 0}}, + {1352, {wxSizerItem, isSpacer, 0}}, + {1353, {wxSizerItem, isWindow, 0}}, + {1354, {wxSizerItem, setBorder, 1}}, + {1355, {wxSizerItem, setDimension, 2}}, + {1356, {wxSizerItem, setFlag, 1}}, + {1357, {wxSizerItem, setInitSize, 2}}, + {1358, {wxSizerItem, setMinSize_1, 1}}, + {1359, {wxSizerItem, setMinSize_2, 2}}, + {1360, {wxSizerItem, setProportion, 1}}, + {1361, {wxSizerItem, setRatio_2, 2}}, + {1362, {wxSizerItem, setRatio_1_1, 1}}, + {1363, {wxSizerItem, setRatio_1_0, 1}}, + {1364, {wxSizerItem, setSizer, 1}}, + {1365, {wxSizerItem, setSpacer_1, 1}}, + {1366, {wxSizerItem, setSpacer_2, 2}}, + {1367, {wxSizerItem, setWindow, 1}}, + {1368, {wxSizerItem, show, 1}}, + {1369, {wxBoxSizer, new, 1}}, + {1370, {wxBoxSizer, getOrientation, 0}}, + {1371, {wxBoxSizer, 'Destroy', undefined}}, + {1372, {wxStaticBoxSizer, new_2, 2}}, + {1373, {wxStaticBoxSizer, new_3, 3}}, + {1374, {wxStaticBoxSizer, getStaticBox, 0}}, + {1375, {wxStaticBoxSizer, 'Destroy', undefined}}, + {1376, {wxGridSizer, new_4, 4}}, + {1377, {wxGridSizer, new_2, 2}}, + {1378, {wxGridSizer, getCols, 0}}, + {1379, {wxGridSizer, getHGap, 0}}, + {1380, {wxGridSizer, getRows, 0}}, + {1381, {wxGridSizer, getVGap, 0}}, + {1382, {wxGridSizer, setCols, 1}}, + {1383, {wxGridSizer, setHGap, 1}}, + {1384, {wxGridSizer, setRows, 1}}, + {1385, {wxGridSizer, setVGap, 1}}, + {1386, {wxGridSizer, 'Destroy', undefined}}, + {1387, {wxFlexGridSizer, new_4, 4}}, + {1388, {wxFlexGridSizer, new_2, 2}}, + {1389, {wxFlexGridSizer, addGrowableCol, 2}}, + {1390, {wxFlexGridSizer, addGrowableRow, 2}}, + {1391, {wxFlexGridSizer, getFlexibleDirection, 0}}, + {1392, {wxFlexGridSizer, getNonFlexibleGrowMode, 0}}, + {1393, {wxFlexGridSizer, removeGrowableCol, 1}}, + {1394, {wxFlexGridSizer, removeGrowableRow, 1}}, + {1395, {wxFlexGridSizer, setFlexibleDirection, 1}}, + {1396, {wxFlexGridSizer, setNonFlexibleGrowMode, 1}}, + {1397, {wxFlexGridSizer, 'Destroy', undefined}}, + {1398, {wxGridBagSizer, new, 1}}, + {1399, {wxGridBagSizer, add_3_2, 3}}, + {1400, {wxGridBagSizer, add_3_1, 3}}, + {1401, {wxGridBagSizer, add_4, 4}}, + {1402, {wxGridBagSizer, add_1_0, 1}}, + {1403, {wxGridBagSizer, add_2_1, 2}}, + {1404, {wxGridBagSizer, add_2_0, 2}}, + {1405, {wxGridBagSizer, add_3_0, 3}}, + {1406, {wxGridBagSizer, add_1_1, 1}}, + {1407, {wxGridBagSizer, calcMin, 0}}, + {1408, {wxGridBagSizer, checkForIntersection_2, 2}}, + {1409, {wxGridBagSizer, checkForIntersection_3, 3}}, + {1410, {wxGridBagSizer, findItem_1_1, 1}}, + {1411, {wxGridBagSizer, findItem_1_0, 1}}, + {1412, {wxGridBagSizer, findItemAtPoint, 1}}, + {1413, {wxGridBagSizer, findItemAtPosition, 1}}, + {1414, {wxGridBagSizer, findItemWithData, 1}}, + {1415, {wxGridBagSizer, getCellSize, 2}}, + {1416, {wxGridBagSizer, getEmptyCellSize, 0}}, + {1417, {wxGridBagSizer, getItemPosition_1_2, 1}}, + {1418, {wxGridBagSizer, getItemPosition_1_1, 1}}, + {1419, {wxGridBagSizer, getItemPosition_1_0, 1}}, + {1420, {wxGridBagSizer, getItemSpan_1_2, 1}}, + {1421, {wxGridBagSizer, getItemSpan_1_1, 1}}, + {1422, {wxGridBagSizer, getItemSpan_1_0, 1}}, + {1423, {wxGridBagSizer, setEmptyCellSize, 1}}, + {1424, {wxGridBagSizer, setItemPosition_2_2, 2}}, + {1425, {wxGridBagSizer, setItemPosition_2_1, 2}}, + {1426, {wxGridBagSizer, setItemPosition_2_0, 2}}, + {1427, {wxGridBagSizer, setItemSpan_2_2, 2}}, + {1428, {wxGridBagSizer, setItemSpan_2_1, 2}}, + {1429, {wxGridBagSizer, setItemSpan_2_0, 2}}, + {1430, {wxGridBagSizer, 'Destroy', undefined}}, + {1431, {wxStdDialogButtonSizer, new, 0}}, + {1432, {wxStdDialogButtonSizer, addButton, 1}}, + {1433, {wxStdDialogButtonSizer, realize, 0}}, + {1434, {wxStdDialogButtonSizer, setAffirmativeButton, 1}}, + {1435, {wxStdDialogButtonSizer, setCancelButton, 1}}, + {1436, {wxStdDialogButtonSizer, setNegativeButton, 1}}, + {1437, {wxStdDialogButtonSizer, 'Destroy', undefined}}, + {1438, {wxFont, new_0, 0}}, + {1439, {wxFont, new_1, 1}}, + {1440, {wxFont, new_5, 5}}, + {1442, {wxFont, destruct, 0}}, + {1443, {wxFont, isFixedWidth, 0}}, + {1444, {wxFont, getDefaultEncoding, 0}}, + {1445, {wxFont, getFaceName, 0}}, + {1446, {wxFont, getFamily, 0}}, + {1447, {wxFont, getNativeFontInfoDesc, 0}}, + {1448, {wxFont, getNativeFontInfoUserDesc, 0}}, + {1449, {wxFont, getPointSize, 0}}, + {1450, {wxFont, getStyle, 0}}, + {1451, {wxFont, getUnderlined, 0}}, + {1452, {wxFont, getWeight, 0}}, + {1453, {wxFont, ok, 0}}, + {1454, {wxFont, setDefaultEncoding, 1}}, + {1455, {wxFont, setFaceName, 1}}, + {1456, {wxFont, setFamily, 1}}, + {1457, {wxFont, setPointSize, 1}}, + {1458, {wxFont, setStyle, 1}}, + {1459, {wxFont, setUnderlined, 1}}, + {1460, {wxFont, setWeight, 1}}, + {1461, {wxToolTip, enable, 1}}, + {1462, {wxToolTip, setDelay, 1}}, + {1463, {wxToolTip, new, 1}}, + {1464, {wxToolTip, setTip, 1}}, + {1465, {wxToolTip, getTip, 0}}, + {1466, {wxToolTip, getWindow, 0}}, + {1467, {wxToolTip, 'Destroy', undefined}}, + {1469, {wxButton, new_3, 3}}, + {1470, {wxButton, new_0, 0}}, + {1471, {wxButton, destruct, 0}}, + {1472, {wxButton, create, 3}}, + {1473, {wxButton, getDefaultSize, 0}}, + {1474, {wxButton, setDefault, 0}}, + {1475, {wxButton, setLabel, 1}}, + {1477, {wxBitmapButton, new_4, 4}}, + {1478, {wxBitmapButton, new_0, 0}}, + {1479, {wxBitmapButton, create, 4}}, + {1480, {wxBitmapButton, getBitmapDisabled, 0}}, + {1482, {wxBitmapButton, getBitmapFocus, 0}}, + {1484, {wxBitmapButton, getBitmapLabel, 0}}, + {1486, {wxBitmapButton, getBitmapSelected, 0}}, + {1488, {wxBitmapButton, setBitmapDisabled, 1}}, + {1489, {wxBitmapButton, setBitmapFocus, 1}}, + {1490, {wxBitmapButton, setBitmapLabel, 1}}, + {1491, {wxBitmapButton, setBitmapSelected, 1}}, + {1492, {wxBitmapButton, 'Destroy', undefined}}, + {1493, {wxToggleButton, new_0, 0}}, + {1494, {wxToggleButton, new_4, 4}}, + {1495, {wxToggleButton, create, 4}}, + {1496, {wxToggleButton, getValue, 0}}, + {1497, {wxToggleButton, setValue, 1}}, + {1498, {wxToggleButton, 'Destroy', undefined}}, + {1499, {wxCalendarCtrl, new_0, 0}}, + {1500, {wxCalendarCtrl, new_3, 3}}, + {1501, {wxCalendarCtrl, create, 3}}, + {1502, {wxCalendarCtrl, destruct, 0}}, + {1503, {wxCalendarCtrl, setDate, 1}}, + {1504, {wxCalendarCtrl, getDate, 0}}, + {1505, {wxCalendarCtrl, enableYearChange, 1}}, + {1506, {wxCalendarCtrl, enableMonthChange, 1}}, + {1507, {wxCalendarCtrl, enableHolidayDisplay, 1}}, + {1508, {wxCalendarCtrl, setHeaderColours, 2}}, + {1509, {wxCalendarCtrl, getHeaderColourFg, 0}}, + {1510, {wxCalendarCtrl, getHeaderColourBg, 0}}, + {1511, {wxCalendarCtrl, setHighlightColours, 2}}, + {1512, {wxCalendarCtrl, getHighlightColourFg, 0}}, + {1513, {wxCalendarCtrl, getHighlightColourBg, 0}}, + {1514, {wxCalendarCtrl, setHolidayColours, 2}}, + {1515, {wxCalendarCtrl, getHolidayColourFg, 0}}, + {1516, {wxCalendarCtrl, getHolidayColourBg, 0}}, + {1517, {wxCalendarCtrl, getAttr, 1}}, + {1518, {wxCalendarCtrl, setAttr, 2}}, + {1519, {wxCalendarCtrl, setHoliday, 1}}, + {1520, {wxCalendarCtrl, resetAttr, 1}}, + {1521, {wxCalendarCtrl, hitTest, 2}}, + {1522, {wxCalendarDateAttr, new_0, 0}}, + {1523, {wxCalendarDateAttr, new_2_1, 2}}, + {1524, {wxCalendarDateAttr, new_2_0, 2}}, + {1525, {wxCalendarDateAttr, setTextColour, 1}}, + {1526, {wxCalendarDateAttr, setBackgroundColour, 1}}, + {1527, {wxCalendarDateAttr, setBorderColour, 1}}, + {1528, {wxCalendarDateAttr, setFont, 1}}, + {1529, {wxCalendarDateAttr, setBorder, 1}}, + {1530, {wxCalendarDateAttr, setHoliday, 1}}, + {1531, {wxCalendarDateAttr, hasTextColour, 0}}, + {1532, {wxCalendarDateAttr, hasBackgroundColour, 0}}, + {1533, {wxCalendarDateAttr, hasBorderColour, 0}}, + {1534, {wxCalendarDateAttr, hasFont, 0}}, + {1535, {wxCalendarDateAttr, hasBorder, 0}}, + {1536, {wxCalendarDateAttr, isHoliday, 0}}, + {1537, {wxCalendarDateAttr, getTextColour, 0}}, + {1538, {wxCalendarDateAttr, getBackgroundColour, 0}}, + {1539, {wxCalendarDateAttr, getBorderColour, 0}}, + {1540, {wxCalendarDateAttr, getFont, 0}}, + {1541, {wxCalendarDateAttr, getBorder, 0}}, + {1542, {wxCalendarDateAttr, 'Destroy', undefined}}, + {1544, {wxCheckBox, new_4, 4}}, + {1545, {wxCheckBox, new_0, 0}}, + {1546, {wxCheckBox, create, 4}}, + {1547, {wxCheckBox, getValue, 0}}, + {1548, {wxCheckBox, get3StateValue, 0}}, + {1549, {wxCheckBox, is3rdStateAllowedForUser, 0}}, + {1550, {wxCheckBox, is3State, 0}}, + {1551, {wxCheckBox, isChecked, 0}}, + {1552, {wxCheckBox, setValue, 1}}, + {1553, {wxCheckBox, set3StateValue, 1}}, + {1554, {wxCheckBox, 'Destroy', undefined}}, + {1555, {wxCheckListBox, new_0, 0}}, + {1557, {wxCheckListBox, new_3, 3}}, + {1558, {wxCheckListBox, check, 2}}, + {1559, {wxCheckListBox, isChecked, 1}}, + {1560, {wxCheckListBox, 'Destroy', undefined}}, + {1563, {wxChoice, new_3, 3}}, + {1564, {wxChoice, new_0, 0}}, + {1566, {wxChoice, destruct, 0}}, + {1568, {wxChoice, create, 6}}, + {1569, {wxChoice, delete, 1}}, + {1570, {wxChoice, getColumns, 0}}, + {1571, {wxChoice, setColumns, 1}}, + {1572, {wxComboBox, new_0, 0}}, + {1574, {wxComboBox, new_3, 3}}, + {1575, {wxComboBox, destruct, 0}}, + {1577, {wxComboBox, create, 7}}, + {1578, {wxComboBox, canCopy, 0}}, + {1579, {wxComboBox, canCut, 0}}, + {1580, {wxComboBox, canPaste, 0}}, + {1581, {wxComboBox, canRedo, 0}}, + {1582, {wxComboBox, canUndo, 0}}, + {1583, {wxComboBox, copy, 0}}, + {1584, {wxComboBox, cut, 0}}, + {1585, {wxComboBox, getInsertionPoint, 0}}, + {1586, {wxComboBox, getLastPosition, 0}}, + {1587, {wxComboBox, getValue, 0}}, + {1588, {wxComboBox, paste, 0}}, + {1589, {wxComboBox, redo, 0}}, + {1590, {wxComboBox, replace, 3}}, + {1591, {wxComboBox, remove, 2}}, + {1592, {wxComboBox, setInsertionPoint, 1}}, + {1593, {wxComboBox, setInsertionPointEnd, 0}}, + {1594, {wxComboBox, setSelection_1, 1}}, + {1595, {wxComboBox, setSelection_2, 2}}, + {1596, {wxComboBox, setValue, 1}}, + {1597, {wxComboBox, undo, 0}}, + {1598, {wxGauge, new_0, 0}}, + {1599, {wxGauge, new_4, 4}}, + {1600, {wxGauge, create, 4}}, + {1601, {wxGauge, getBezelFace, 0}}, + {1602, {wxGauge, getRange, 0}}, + {1603, {wxGauge, getShadowWidth, 0}}, + {1604, {wxGauge, getValue, 0}}, + {1605, {wxGauge, isVertical, 0}}, + {1606, {wxGauge, setBezelFace, 1}}, + {1607, {wxGauge, setRange, 1}}, + {1608, {wxGauge, setShadowWidth, 1}}, + {1609, {wxGauge, setValue, 1}}, + {1610, {wxGauge, pulse, 0}}, + {1611, {wxGauge, 'Destroy', undefined}}, + {1612, {wxGenericDirCtrl, new_0, 0}}, + {1613, {wxGenericDirCtrl, new_2, 2}}, + {1614, {wxGenericDirCtrl, destruct, 0}}, + {1615, {wxGenericDirCtrl, create, 2}}, + {1616, {wxGenericDirCtrl, init, 0}}, + {1617, {wxGenericDirCtrl, collapseTree, 0}}, + {1618, {wxGenericDirCtrl, expandPath, 1}}, + {1619, {wxGenericDirCtrl, getDefaultPath, 0}}, + {1620, {wxGenericDirCtrl, getPath, 0}}, + {1621, {wxGenericDirCtrl, getFilePath, 0}}, + {1622, {wxGenericDirCtrl, getFilter, 0}}, + {1623, {wxGenericDirCtrl, getFilterIndex, 0}}, + {1624, {wxGenericDirCtrl, getRootId, 0}}, + {1625, {wxGenericDirCtrl, getTreeCtrl, 0}}, + {1626, {wxGenericDirCtrl, reCreateTree, 0}}, + {1627, {wxGenericDirCtrl, setDefaultPath, 1}}, + {1628, {wxGenericDirCtrl, setFilter, 1}}, + {1629, {wxGenericDirCtrl, setFilterIndex, 1}}, + {1630, {wxGenericDirCtrl, setPath, 1}}, + {1632, {wxStaticBox, new_4, 4}}, + {1633, {wxStaticBox, new_0, 0}}, + {1634, {wxStaticBox, create, 4}}, + {1635, {wxStaticBox, 'Destroy', undefined}}, + {1637, {wxStaticLine, new_2, 2}}, + {1638, {wxStaticLine, new_0, 0}}, + {1639, {wxStaticLine, create, 2}}, + {1640, {wxStaticLine, isVertical, 0}}, + {1641, {wxStaticLine, getDefaultSize, 0}}, + {1642, {wxStaticLine, 'Destroy', undefined}}, + {1645, {wxListBox, new_3, 3}}, + {1646, {wxListBox, new_0, 0}}, + {1648, {wxListBox, destruct, 0}}, + {1650, {wxListBox, create, 6}}, + {1651, {wxListBox, deselect, 1}}, + {1652, {wxListBox, getSelections, 1}}, + {1653, {wxListBox, insertItems, 2}}, + {1654, {wxListBox, isSelected, 1}}, + {1655, {wxListBox, set, 1}}, + {1656, {wxListBox, hitTest, 1}}, + {1657, {wxListBox, setFirstItem_1_0, 1}}, + {1658, {wxListBox, setFirstItem_1_1, 1}}, + {1659, {wxListCtrl, new_0, 0}}, + {1660, {wxListCtrl, new_2, 2}}, + {1661, {wxListCtrl, arrange, 1}}, + {1662, {wxListCtrl, assignImageList, 2}}, + {1663, {wxListCtrl, clearAll, 0}}, + {1664, {wxListCtrl, create, 2}}, + {1665, {wxListCtrl, deleteAllItems, 0}}, + {1666, {wxListCtrl, deleteColumn, 1}}, + {1667, {wxListCtrl, deleteItem, 1}}, + {1668, {wxListCtrl, editLabel, 1}}, + {1669, {wxListCtrl, ensureVisible, 1}}, + {1670, {wxListCtrl, findItem_3_0, 3}}, + {1671, {wxListCtrl, findItem_3_1, 3}}, + {1672, {wxListCtrl, getColumn, 2}}, + {1673, {wxListCtrl, getColumnCount, 0}}, + {1674, {wxListCtrl, getColumnWidth, 1}}, + {1675, {wxListCtrl, getCountPerPage, 0}}, + {1676, {wxListCtrl, getEditControl, 0}}, + {1677, {wxListCtrl, getImageList, 1}}, + {1678, {wxListCtrl, getItem, 1}}, + {1679, {wxListCtrl, getItemBackgroundColour, 1}}, + {1680, {wxListCtrl, getItemCount, 0}}, + {1681, {wxListCtrl, getItemData, 1}}, + {1682, {wxListCtrl, getItemFont, 1}}, + {1683, {wxListCtrl, getItemPosition, 2}}, + {1684, {wxListCtrl, getItemRect, 3}}, + {1685, {wxListCtrl, getItemSpacing, 0}}, + {1686, {wxListCtrl, getItemState, 2}}, + {1687, {wxListCtrl, getItemText, 1}}, + {1688, {wxListCtrl, getItemTextColour, 1}}, + {1689, {wxListCtrl, getNextItem, 2}}, + {1690, {wxListCtrl, getSelectedItemCount, 0}}, + {1691, {wxListCtrl, getTextColour, 0}}, + {1692, {wxListCtrl, getTopItem, 0}}, + {1693, {wxListCtrl, getViewRect, 0}}, + {1694, {wxListCtrl, hitTest, 2}}, + {1695, {wxListCtrl, insertColumn_2, 2}}, + {1696, {wxListCtrl, insertColumn_3, 3}}, + {1697, {wxListCtrl, insertItem_1, 1}}, + {1698, {wxListCtrl, insertItem_2_1, 2}}, + {1699, {wxListCtrl, insertItem_2_0, 2}}, + {1700, {wxListCtrl, insertItem_3, 3}}, + {1701, {wxListCtrl, refreshItem, 1}}, + {1702, {wxListCtrl, refreshItems, 2}}, + {1703, {wxListCtrl, scrollList, 2}}, + {1704, {wxListCtrl, setBackgroundColour, 1}}, + {1705, {wxListCtrl, setColumn, 2}}, + {1706, {wxListCtrl, setColumnWidth, 2}}, + {1707, {wxListCtrl, setImageList, 2}}, + {1708, {wxListCtrl, setItem_1, 1}}, + {1709, {wxListCtrl, setItem_4, 4}}, + {1710, {wxListCtrl, setItemBackgroundColour, 2}}, + {1711, {wxListCtrl, setItemCount, 1}}, + {1712, {wxListCtrl, setItemData, 2}}, + {1713, {wxListCtrl, setItemFont, 2}}, + {1714, {wxListCtrl, setItemImage, 3}}, + {1715, {wxListCtrl, setItemColumnImage, 3}}, + {1716, {wxListCtrl, setItemPosition, 2}}, + {1717, {wxListCtrl, setItemState, 3}}, + {1718, {wxListCtrl, setItemText, 2}}, + {1719, {wxListCtrl, setItemTextColour, 2}}, + {1720, {wxListCtrl, setSingleStyle, 2}}, + {1721, {wxListCtrl, setTextColour, 1}}, + {1722, {wxListCtrl, setWindowStyleFlag, 1}}, + {1723, {wxListCtrl, sortItems, 2}}, + {1724, {wxListCtrl, 'Destroy', undefined}}, + {1725, {wxListView, clearColumnImage, 1}}, + {1726, {wxListView, focus, 1}}, + {1727, {wxListView, getFirstSelected, 0}}, + {1728, {wxListView, getFocusedItem, 0}}, + {1729, {wxListView, getNextSelected, 1}}, + {1730, {wxListView, isSelected, 1}}, + {1731, {wxListView, select, 2}}, + {1732, {wxListView, setColumnImage, 2}}, + {1733, {wxListItem, new_0, 0}}, + {1734, {wxListItem, new_1, 1}}, + {1735, {wxListItem, destruct, 0}}, + {1736, {wxListItem, clear, 0}}, + {1737, {wxListItem, getAlign, 0}}, + {1738, {wxListItem, getBackgroundColour, 0}}, + {1739, {wxListItem, getColumn, 0}}, + {1740, {wxListItem, getFont, 0}}, + {1741, {wxListItem, getId, 0}}, + {1742, {wxListItem, getImage, 0}}, + {1743, {wxListItem, getMask, 0}}, + {1744, {wxListItem, getState, 0}}, + {1745, {wxListItem, getText, 0}}, + {1746, {wxListItem, getTextColour, 0}}, + {1747, {wxListItem, getWidth, 0}}, + {1748, {wxListItem, setAlign, 1}}, + {1749, {wxListItem, setBackgroundColour, 1}}, + {1750, {wxListItem, setColumn, 1}}, + {1751, {wxListItem, setFont, 1}}, + {1752, {wxListItem, setId, 1}}, + {1753, {wxListItem, setImage, 1}}, + {1754, {wxListItem, setMask, 1}}, + {1755, {wxListItem, setState, 1}}, + {1756, {wxListItem, setStateMask, 1}}, + {1757, {wxListItem, setText, 1}}, + {1758, {wxListItem, setTextColour, 1}}, + {1759, {wxListItem, setWidth, 1}}, + {1760, {wxListItemAttr, new_0, 0}}, + {1761, {wxListItemAttr, new_3, 3}}, + {1762, {wxListItemAttr, getBackgroundColour, 0}}, + {1763, {wxListItemAttr, getFont, 0}}, + {1764, {wxListItemAttr, getTextColour, 0}}, + {1765, {wxListItemAttr, hasBackgroundColour, 0}}, + {1766, {wxListItemAttr, hasFont, 0}}, + {1767, {wxListItemAttr, hasTextColour, 0}}, + {1768, {wxListItemAttr, setBackgroundColour, 1}}, + {1769, {wxListItemAttr, setFont, 1}}, + {1770, {wxListItemAttr, setTextColour, 1}}, + {1771, {wxListItemAttr, 'Destroy', undefined}}, + {1772, {wxImageList, new_0, 0}}, + {1773, {wxImageList, new_3, 3}}, + {1774, {wxImageList, add_1, 1}}, + {1775, {wxImageList, add_2_0, 2}}, + {1776, {wxImageList, add_2_1, 2}}, + {1777, {wxImageList, create, 3}}, + {1779, {wxImageList, draw, 5}}, + {1780, {wxImageList, getBitmap, 1}}, + {1781, {wxImageList, getIcon, 1}}, + {1782, {wxImageList, getImageCount, 0}}, + {1783, {wxImageList, getSize, 3}}, + {1784, {wxImageList, remove, 1}}, + {1785, {wxImageList, removeAll, 0}}, + {1786, {wxImageList, replace_2, 2}}, + {1787, {wxImageList, replace_3, 3}}, + {1788, {wxImageList, 'Destroy', undefined}}, + {1789, {wxTextAttr, new_0, 0}}, + {1790, {wxTextAttr, new_2, 2}}, + {1791, {wxTextAttr, getAlignment, 0}}, + {1792, {wxTextAttr, getBackgroundColour, 0}}, + {1793, {wxTextAttr, getFont, 0}}, + {1794, {wxTextAttr, getLeftIndent, 0}}, + {1795, {wxTextAttr, getLeftSubIndent, 0}}, + {1796, {wxTextAttr, getRightIndent, 0}}, + {1797, {wxTextAttr, getTabs, 0}}, + {1798, {wxTextAttr, getTextColour, 0}}, + {1799, {wxTextAttr, hasBackgroundColour, 0}}, + {1800, {wxTextAttr, hasFont, 0}}, + {1801, {wxTextAttr, hasTextColour, 0}}, + {1802, {wxTextAttr, getFlags, 0}}, + {1803, {wxTextAttr, isDefault, 0}}, + {1804, {wxTextAttr, setAlignment, 1}}, + {1805, {wxTextAttr, setBackgroundColour, 1}}, + {1806, {wxTextAttr, setFlags, 1}}, + {1807, {wxTextAttr, setFont, 2}}, + {1808, {wxTextAttr, setLeftIndent, 2}}, + {1809, {wxTextAttr, setRightIndent, 1}}, + {1810, {wxTextAttr, setTabs, 1}}, + {1811, {wxTextAttr, setTextColour, 1}}, + {1812, {wxTextAttr, 'Destroy', undefined}}, + {1814, {wxTextCtrl, new_3, 3}}, + {1815, {wxTextCtrl, new_0, 0}}, + {1817, {wxTextCtrl, destruct, 0}}, + {1818, {wxTextCtrl, appendText, 1}}, + {1819, {wxTextCtrl, canCopy, 0}}, + {1820, {wxTextCtrl, canCut, 0}}, + {1821, {wxTextCtrl, canPaste, 0}}, + {1822, {wxTextCtrl, canRedo, 0}}, + {1823, {wxTextCtrl, canUndo, 0}}, + {1824, {wxTextCtrl, clear, 0}}, + {1825, {wxTextCtrl, copy, 0}}, + {1826, {wxTextCtrl, create, 3}}, + {1827, {wxTextCtrl, cut, 0}}, + {1828, {wxTextCtrl, discardEdits, 0}}, + {1829, {wxTextCtrl, changeValue, 1}}, + {1830, {wxTextCtrl, emulateKeyPress, 1}}, + {1831, {wxTextCtrl, getDefaultStyle, 0}}, + {1832, {wxTextCtrl, getInsertionPoint, 0}}, + {1833, {wxTextCtrl, getLastPosition, 0}}, + {1834, {wxTextCtrl, getLineLength, 1}}, + {1835, {wxTextCtrl, getLineText, 1}}, + {1836, {wxTextCtrl, getNumberOfLines, 0}}, + {1837, {wxTextCtrl, getRange, 2}}, + {1838, {wxTextCtrl, getSelection, 2}}, + {1839, {wxTextCtrl, getStringSelection, 0}}, + {1840, {wxTextCtrl, getStyle, 2}}, + {1841, {wxTextCtrl, getValue, 0}}, + {1842, {wxTextCtrl, isEditable, 0}}, + {1843, {wxTextCtrl, isModified, 0}}, + {1844, {wxTextCtrl, isMultiLine, 0}}, + {1845, {wxTextCtrl, isSingleLine, 0}}, + {1846, {wxTextCtrl, loadFile, 2}}, + {1847, {wxTextCtrl, markDirty, 0}}, + {1848, {wxTextCtrl, paste, 0}}, + {1849, {wxTextCtrl, positionToXY, 3}}, + {1850, {wxTextCtrl, redo, 0}}, + {1851, {wxTextCtrl, remove, 2}}, + {1852, {wxTextCtrl, replace, 3}}, + {1853, {wxTextCtrl, saveFile, 1}}, + {1854, {wxTextCtrl, setDefaultStyle, 1}}, + {1855, {wxTextCtrl, setEditable, 1}}, + {1856, {wxTextCtrl, setInsertionPoint, 1}}, + {1857, {wxTextCtrl, setInsertionPointEnd, 0}}, + {1859, {wxTextCtrl, setMaxLength, 1}}, + {1860, {wxTextCtrl, setSelection, 2}}, + {1861, {wxTextCtrl, setStyle, 3}}, + {1862, {wxTextCtrl, setValue, 1}}, + {1863, {wxTextCtrl, showPosition, 1}}, + {1864, {wxTextCtrl, undo, 0}}, + {1865, {wxTextCtrl, writeText, 1}}, + {1866, {wxTextCtrl, xYToPosition, 2}}, + {1869, {wxNotebook, new_0, 0}}, + {1870, {wxNotebook, new_3, 3}}, + {1871, {wxNotebook, destruct, 0}}, + {1872, {wxNotebook, addPage, 3}}, + {1873, {wxNotebook, advanceSelection, 1}}, + {1874, {wxNotebook, assignImageList, 1}}, + {1875, {wxNotebook, create, 3}}, + {1876, {wxNotebook, deleteAllPages, 0}}, + {1877, {wxNotebook, deletePage, 1}}, + {1878, {wxNotebook, removePage, 1}}, + {1879, {wxNotebook, getCurrentPage, 0}}, + {1880, {wxNotebook, getImageList, 0}}, + {1882, {wxNotebook, getPage, 1}}, + {1883, {wxNotebook, getPageCount, 0}}, + {1884, {wxNotebook, getPageImage, 1}}, + {1885, {wxNotebook, getPageText, 1}}, + {1886, {wxNotebook, getRowCount, 0}}, + {1887, {wxNotebook, getSelection, 0}}, + {1888, {wxNotebook, getThemeBackgroundColour, 0}}, + {1890, {wxNotebook, hitTest, 2}}, + {1892, {wxNotebook, insertPage, 4}}, + {1893, {wxNotebook, setImageList, 1}}, + {1894, {wxNotebook, setPadding, 1}}, + {1895, {wxNotebook, setPageSize, 1}}, + {1896, {wxNotebook, setPageImage, 2}}, + {1897, {wxNotebook, setPageText, 2}}, + {1898, {wxNotebook, setSelection, 1}}, + {1899, {wxNotebook, changeSelection, 1}}, + {1900, {wxChoicebook, new_0, 0}}, + {1901, {wxChoicebook, new_3, 3}}, + {1902, {wxChoicebook, addPage, 3}}, + {1903, {wxChoicebook, advanceSelection, 1}}, + {1904, {wxChoicebook, assignImageList, 1}}, + {1905, {wxChoicebook, create, 3}}, + {1906, {wxChoicebook, deleteAllPages, 0}}, + {1907, {wxChoicebook, deletePage, 1}}, + {1908, {wxChoicebook, removePage, 1}}, + {1909, {wxChoicebook, getCurrentPage, 0}}, + {1910, {wxChoicebook, getImageList, 0}}, + {1912, {wxChoicebook, getPage, 1}}, + {1913, {wxChoicebook, getPageCount, 0}}, + {1914, {wxChoicebook, getPageImage, 1}}, + {1915, {wxChoicebook, getPageText, 1}}, + {1916, {wxChoicebook, getSelection, 0}}, + {1917, {wxChoicebook, hitTest, 2}}, + {1918, {wxChoicebook, insertPage, 4}}, + {1919, {wxChoicebook, setImageList, 1}}, + {1920, {wxChoicebook, setPageSize, 1}}, + {1921, {wxChoicebook, setPageImage, 2}}, + {1922, {wxChoicebook, setPageText, 2}}, + {1923, {wxChoicebook, setSelection, 1}}, + {1924, {wxChoicebook, changeSelection, 1}}, + {1925, {wxChoicebook, 'Destroy', undefined}}, + {1926, {wxToolbook, new_0, 0}}, + {1927, {wxToolbook, new_3, 3}}, + {1928, {wxToolbook, addPage, 3}}, + {1929, {wxToolbook, advanceSelection, 1}}, + {1930, {wxToolbook, assignImageList, 1}}, + {1931, {wxToolbook, create, 3}}, + {1932, {wxToolbook, deleteAllPages, 0}}, + {1933, {wxToolbook, deletePage, 1}}, + {1934, {wxToolbook, removePage, 1}}, + {1935, {wxToolbook, getCurrentPage, 0}}, + {1936, {wxToolbook, getImageList, 0}}, + {1938, {wxToolbook, getPage, 1}}, + {1939, {wxToolbook, getPageCount, 0}}, + {1940, {wxToolbook, getPageImage, 1}}, + {1941, {wxToolbook, getPageText, 1}}, + {1942, {wxToolbook, getSelection, 0}}, + {1944, {wxToolbook, hitTest, 2}}, + {1945, {wxToolbook, insertPage, 4}}, + {1946, {wxToolbook, setImageList, 1}}, + {1947, {wxToolbook, setPageSize, 1}}, + {1948, {wxToolbook, setPageImage, 2}}, + {1949, {wxToolbook, setPageText, 2}}, + {1950, {wxToolbook, setSelection, 1}}, + {1951, {wxToolbook, changeSelection, 1}}, + {1952, {wxToolbook, 'Destroy', undefined}}, + {1953, {wxListbook, new_0, 0}}, + {1954, {wxListbook, new_3, 3}}, + {1955, {wxListbook, addPage, 3}}, + {1956, {wxListbook, advanceSelection, 1}}, + {1957, {wxListbook, assignImageList, 1}}, + {1958, {wxListbook, create, 3}}, + {1959, {wxListbook, deleteAllPages, 0}}, + {1960, {wxListbook, deletePage, 1}}, + {1961, {wxListbook, removePage, 1}}, + {1962, {wxListbook, getCurrentPage, 0}}, + {1963, {wxListbook, getImageList, 0}}, + {1965, {wxListbook, getPage, 1}}, + {1966, {wxListbook, getPageCount, 0}}, + {1967, {wxListbook, getPageImage, 1}}, + {1968, {wxListbook, getPageText, 1}}, + {1969, {wxListbook, getSelection, 0}}, + {1971, {wxListbook, hitTest, 2}}, + {1972, {wxListbook, insertPage, 4}}, + {1973, {wxListbook, setImageList, 1}}, + {1974, {wxListbook, setPageSize, 1}}, + {1975, {wxListbook, setPageImage, 2}}, + {1976, {wxListbook, setPageText, 2}}, + {1977, {wxListbook, setSelection, 1}}, + {1978, {wxListbook, changeSelection, 1}}, + {1979, {wxListbook, 'Destroy', undefined}}, + {1980, {wxTreebook, new_0, 0}}, + {1981, {wxTreebook, new_3, 3}}, + {1982, {wxTreebook, addPage, 3}}, + {1983, {wxTreebook, advanceSelection, 1}}, + {1984, {wxTreebook, assignImageList, 1}}, + {1985, {wxTreebook, create, 3}}, + {1986, {wxTreebook, deleteAllPages, 0}}, + {1987, {wxTreebook, deletePage, 1}}, + {1988, {wxTreebook, removePage, 1}}, + {1989, {wxTreebook, getCurrentPage, 0}}, + {1990, {wxTreebook, getImageList, 0}}, + {1992, {wxTreebook, getPage, 1}}, + {1993, {wxTreebook, getPageCount, 0}}, + {1994, {wxTreebook, getPageImage, 1}}, + {1995, {wxTreebook, getPageText, 1}}, + {1996, {wxTreebook, getSelection, 0}}, + {1997, {wxTreebook, expandNode, 2}}, + {1998, {wxTreebook, isNodeExpanded, 1}}, + {2000, {wxTreebook, hitTest, 2}}, + {2001, {wxTreebook, insertPage, 4}}, + {2002, {wxTreebook, insertSubPage, 4}}, + {2003, {wxTreebook, setImageList, 1}}, + {2004, {wxTreebook, setPageSize, 1}}, + {2005, {wxTreebook, setPageImage, 2}}, + {2006, {wxTreebook, setPageText, 2}}, + {2007, {wxTreebook, setSelection, 1}}, + {2008, {wxTreebook, changeSelection, 1}}, + {2009, {wxTreebook, 'Destroy', undefined}}, + {2012, {wxTreeCtrl, new_2, 2}}, + {2013, {wxTreeCtrl, new_0, 0}}, + {2015, {wxTreeCtrl, destruct, 0}}, + {2016, {wxTreeCtrl, addRoot, 2}}, + {2017, {wxTreeCtrl, appendItem, 3}}, + {2018, {wxTreeCtrl, assignImageList, 1}}, + {2019, {wxTreeCtrl, assignStateImageList, 1}}, + {2020, {wxTreeCtrl, collapse, 1}}, + {2021, {wxTreeCtrl, collapseAndReset, 1}}, + {2022, {wxTreeCtrl, create, 2}}, + {2023, {wxTreeCtrl, delete, 1}}, + {2024, {wxTreeCtrl, deleteAllItems, 0}}, + {2025, {wxTreeCtrl, deleteChildren, 1}}, + {2026, {wxTreeCtrl, editLabel, 1}}, + {2027, {wxTreeCtrl, ensureVisible, 1}}, + {2028, {wxTreeCtrl, expand, 1}}, + {2029, {wxTreeCtrl, getBoundingRect, 3}}, + {2031, {wxTreeCtrl, getChildrenCount, 2}}, + {2032, {wxTreeCtrl, getCount, 0}}, + {2033, {wxTreeCtrl, getEditControl, 0}}, + {2034, {wxTreeCtrl, getFirstChild, 2}}, + {2035, {wxTreeCtrl, getNextChild, 2}}, + {2036, {wxTreeCtrl, getFirstVisibleItem, 0}}, + {2037, {wxTreeCtrl, getImageList, 0}}, + {2038, {wxTreeCtrl, getIndent, 0}}, + {2039, {wxTreeCtrl, getItemBackgroundColour, 1}}, + {2040, {wxTreeCtrl, getItemData, 1}}, + {2041, {wxTreeCtrl, getItemFont, 1}}, + {2042, {wxTreeCtrl, getItemImage_1, 1}}, + {2043, {wxTreeCtrl, getItemImage_2, 2}}, + {2044, {wxTreeCtrl, getItemText, 1}}, + {2045, {wxTreeCtrl, getItemTextColour, 1}}, + {2046, {wxTreeCtrl, getLastChild, 1}}, + {2047, {wxTreeCtrl, getNextSibling, 1}}, + {2048, {wxTreeCtrl, getNextVisible, 1}}, + {2049, {wxTreeCtrl, getItemParent, 1}}, + {2050, {wxTreeCtrl, getPrevSibling, 1}}, + {2051, {wxTreeCtrl, getPrevVisible, 1}}, + {2052, {wxTreeCtrl, getRootItem, 0}}, + {2053, {wxTreeCtrl, getSelection, 0}}, + {2054, {wxTreeCtrl, getSelections, 1}}, + {2055, {wxTreeCtrl, getStateImageList, 0}}, + {2056, {wxTreeCtrl, hitTest, 2}}, + {2058, {wxTreeCtrl, insertItem, 4}}, + {2059, {wxTreeCtrl, isBold, 1}}, + {2060, {wxTreeCtrl, isExpanded, 1}}, + {2061, {wxTreeCtrl, isSelected, 1}}, + {2062, {wxTreeCtrl, isVisible, 1}}, + {2063, {wxTreeCtrl, itemHasChildren, 1}}, + {2064, {wxTreeCtrl, isTreeItemIdOk, 1}}, + {2065, {wxTreeCtrl, prependItem, 3}}, + {2066, {wxTreeCtrl, scrollTo, 1}}, + {2067, {wxTreeCtrl, selectItem_1, 1}}, + {2068, {wxTreeCtrl, selectItem_2, 2}}, + {2069, {wxTreeCtrl, setIndent, 1}}, + {2070, {wxTreeCtrl, setImageList, 1}}, + {2071, {wxTreeCtrl, setItemBackgroundColour, 2}}, + {2072, {wxTreeCtrl, setItemBold, 2}}, + {2073, {wxTreeCtrl, setItemData, 2}}, + {2074, {wxTreeCtrl, setItemDropHighlight, 2}}, + {2075, {wxTreeCtrl, setItemFont, 2}}, + {2076, {wxTreeCtrl, setItemHasChildren, 2}}, + {2077, {wxTreeCtrl, setItemImage_2, 2}}, + {2078, {wxTreeCtrl, setItemImage_3, 3}}, + {2079, {wxTreeCtrl, setItemText, 2}}, + {2080, {wxTreeCtrl, setItemTextColour, 2}}, + {2081, {wxTreeCtrl, setStateImageList, 1}}, + {2082, {wxTreeCtrl, setWindowStyle, 1}}, + {2083, {wxTreeCtrl, sortChildren, 1}}, + {2084, {wxTreeCtrl, toggle, 1}}, + {2085, {wxTreeCtrl, toggleItemSelection, 1}}, + {2086, {wxTreeCtrl, unselect, 0}}, + {2087, {wxTreeCtrl, unselectAll, 0}}, + {2088, {wxTreeCtrl, unselectItem, 1}}, + {2089, {wxScrollBar, new_0, 0}}, + {2090, {wxScrollBar, new_3, 3}}, + {2091, {wxScrollBar, destruct, 0}}, + {2092, {wxScrollBar, create, 3}}, + {2093, {wxScrollBar, getRange, 0}}, + {2094, {wxScrollBar, getPageSize, 0}}, + {2095, {wxScrollBar, getThumbPosition, 0}}, + {2096, {wxScrollBar, getThumbSize, 0}}, + {2097, {wxScrollBar, setThumbPosition, 1}}, + {2098, {wxScrollBar, setScrollbar, 5}}, + {2100, {wxSpinButton, new_2, 2}}, + {2101, {wxSpinButton, new_0, 0}}, + {2102, {wxSpinButton, create, 2}}, + {2103, {wxSpinButton, getMax, 0}}, + {2104, {wxSpinButton, getMin, 0}}, + {2105, {wxSpinButton, getValue, 0}}, + {2106, {wxSpinButton, setRange, 2}}, + {2107, {wxSpinButton, setValue, 1}}, + {2108, {wxSpinButton, 'Destroy', undefined}}, + {2109, {wxSpinCtrl, new_0, 0}}, + {2110, {wxSpinCtrl, new_2, 2}}, + {2112, {wxSpinCtrl, create, 2}}, + {2115, {wxSpinCtrl, setValue_1_1, 1}}, + {2116, {wxSpinCtrl, setValue_1_0, 1}}, + {2118, {wxSpinCtrl, getValue, 0}}, + {2120, {wxSpinCtrl, setRange, 2}}, + {2121, {wxSpinCtrl, setSelection, 2}}, + {2123, {wxSpinCtrl, getMin, 0}}, + {2125, {wxSpinCtrl, getMax, 0}}, + {2126, {wxSpinCtrl, 'Destroy', undefined}}, + {2127, {wxStaticText, new_0, 0}}, + {2128, {wxStaticText, new_4, 4}}, + {2129, {wxStaticText, create, 4}}, + {2130, {wxStaticText, getLabel, 0}}, + {2131, {wxStaticText, setLabel, 1}}, + {2132, {wxStaticText, wrap, 1}}, + {2133, {wxStaticText, 'Destroy', undefined}}, + {2134, {wxStaticBitmap, new_0, 0}}, + {2135, {wxStaticBitmap, new_4, 4}}, + {2136, {wxStaticBitmap, create, 4}}, + {2137, {wxStaticBitmap, getBitmap, 0}}, + {2138, {wxStaticBitmap, setBitmap, 1}}, + {2139, {wxStaticBitmap, 'Destroy', undefined}}, + {2140, {wxRadioBox, new, 7}}, + {2142, {wxRadioBox, destruct, 0}}, + {2143, {wxRadioBox, create, 7}}, + {2144, {wxRadioBox, enable_2, 2}}, + {2145, {wxRadioBox, enable_1, 1}}, + {2146, {wxRadioBox, getSelection, 0}}, + {2147, {wxRadioBox, getString, 1}}, + {2148, {wxRadioBox, setSelection, 1}}, + {2149, {wxRadioBox, show_2, 2}}, + {2150, {wxRadioBox, show_1, 1}}, + {2151, {wxRadioBox, getColumnCount, 0}}, + {2152, {wxRadioBox, getItemHelpText, 1}}, + {2153, {wxRadioBox, getItemToolTip, 1}}, + {2155, {wxRadioBox, getItemFromPoint, 1}}, + {2156, {wxRadioBox, getRowCount, 0}}, + {2157, {wxRadioBox, isItemEnabled, 1}}, + {2158, {wxRadioBox, isItemShown, 1}}, + {2159, {wxRadioBox, setItemHelpText, 2}}, + {2160, {wxRadioBox, setItemToolTip, 2}}, + {2161, {wxRadioButton, new_0, 0}}, + {2162, {wxRadioButton, new_4, 4}}, + {2163, {wxRadioButton, create, 4}}, + {2164, {wxRadioButton, getValue, 0}}, + {2165, {wxRadioButton, setValue, 1}}, + {2166, {wxRadioButton, 'Destroy', undefined}}, + {2168, {wxSlider, new_6, 6}}, + {2169, {wxSlider, new_0, 0}}, + {2170, {wxSlider, create, 6}}, + {2171, {wxSlider, getLineSize, 0}}, + {2172, {wxSlider, getMax, 0}}, + {2173, {wxSlider, getMin, 0}}, + {2174, {wxSlider, getPageSize, 0}}, + {2175, {wxSlider, getThumbLength, 0}}, + {2176, {wxSlider, getValue, 0}}, + {2177, {wxSlider, setLineSize, 1}}, + {2178, {wxSlider, setPageSize, 1}}, + {2179, {wxSlider, setRange, 2}}, + {2180, {wxSlider, setThumbLength, 1}}, + {2181, {wxSlider, setValue, 1}}, + {2182, {wxSlider, 'Destroy', undefined}}, + {2184, {wxDialog, new_4, 4}}, + {2185, {wxDialog, new_0, 0}}, + {2187, {wxDialog, destruct, 0}}, + {2188, {wxDialog, create, 4}}, + {2189, {wxDialog, createButtonSizer, 1}}, + {2190, {wxDialog, createStdDialogButtonSizer, 1}}, + {2191, {wxDialog, endModal, 1}}, + {2192, {wxDialog, getAffirmativeId, 0}}, + {2193, {wxDialog, getReturnCode, 0}}, + {2194, {wxDialog, isModal, 0}}, + {2195, {wxDialog, setAffirmativeId, 1}}, + {2196, {wxDialog, setReturnCode, 1}}, + {2197, {wxDialog, show, 1}}, + {2198, {wxDialog, showModal, 0}}, + {2199, {wxColourDialog, new_0, 0}}, + {2200, {wxColourDialog, new_2, 2}}, + {2201, {wxColourDialog, destruct, 0}}, + {2202, {wxColourDialog, create, 2}}, + {2203, {wxColourDialog, getColourData, 0}}, + {2204, {wxColourData, new_0, 0}}, + {2205, {wxColourData, new_1, 1}}, + {2206, {wxColourData, destruct, 0}}, + {2207, {wxColourData, getChooseFull, 0}}, + {2208, {wxColourData, getColour, 0}}, + {2210, {wxColourData, getCustomColour, 1}}, + {2211, {wxColourData, setChooseFull, 1}}, + {2212, {wxColourData, setColour, 1}}, + {2213, {wxColourData, setCustomColour, 2}}, + {2214, {wxPalette, new_0, 0}}, + {2215, {wxPalette, new_4, 4}}, + {2217, {wxPalette, destruct, 0}}, + {2218, {wxPalette, create, 4}}, + {2219, {wxPalette, getColoursCount, 0}}, + {2220, {wxPalette, getPixel, 3}}, + {2221, {wxPalette, getRGB, 4}}, + {2222, {wxPalette, isOk, 0}}, + {2226, {wxDirDialog, new, 2}}, + {2227, {wxDirDialog, destruct, 0}}, + {2228, {wxDirDialog, getPath, 0}}, + {2229, {wxDirDialog, getMessage, 0}}, + {2230, {wxDirDialog, setMessage, 1}}, + {2231, {wxDirDialog, setPath, 1}}, + {2235, {wxFileDialog, new, 2}}, + {2236, {wxFileDialog, destruct, 0}}, + {2237, {wxFileDialog, getDirectory, 0}}, + {2238, {wxFileDialog, getFilename, 0}}, + {2239, {wxFileDialog, getFilenames, 1}}, + {2240, {wxFileDialog, getFilterIndex, 0}}, + {2241, {wxFileDialog, getMessage, 0}}, + {2242, {wxFileDialog, getPath, 0}}, + {2243, {wxFileDialog, getPaths, 1}}, + {2244, {wxFileDialog, getWildcard, 0}}, + {2245, {wxFileDialog, setDirectory, 1}}, + {2246, {wxFileDialog, setFilename, 1}}, + {2247, {wxFileDialog, setFilterIndex, 1}}, + {2248, {wxFileDialog, setMessage, 1}}, + {2249, {wxFileDialog, setPath, 1}}, + {2250, {wxFileDialog, setWildcard, 1}}, + {2251, {wxPickerBase, setInternalMargin, 1}}, + {2252, {wxPickerBase, getInternalMargin, 0}}, + {2253, {wxPickerBase, setTextCtrlProportion, 1}}, + {2254, {wxPickerBase, setPickerCtrlProportion, 1}}, + {2255, {wxPickerBase, getTextCtrlProportion, 0}}, + {2256, {wxPickerBase, getPickerCtrlProportion, 0}}, + {2257, {wxPickerBase, hasTextCtrl, 0}}, + {2258, {wxPickerBase, getTextCtrl, 0}}, + {2259, {wxPickerBase, isTextCtrlGrowable, 0}}, + {2260, {wxPickerBase, setPickerCtrlGrowable, 1}}, + {2261, {wxPickerBase, setTextCtrlGrowable, 1}}, + {2262, {wxPickerBase, isPickerCtrlGrowable, 0}}, + {2263, {wxFilePickerCtrl, new_0, 0}}, + {2264, {wxFilePickerCtrl, new_3, 3}}, + {2265, {wxFilePickerCtrl, create, 3}}, + {2266, {wxFilePickerCtrl, getPath, 0}}, + {2267, {wxFilePickerCtrl, setPath, 1}}, + {2268, {wxFilePickerCtrl, 'Destroy', undefined}}, + {2269, {wxDirPickerCtrl, new_0, 0}}, + {2270, {wxDirPickerCtrl, new_3, 3}}, + {2271, {wxDirPickerCtrl, create, 3}}, + {2272, {wxDirPickerCtrl, getPath, 0}}, + {2273, {wxDirPickerCtrl, setPath, 1}}, + {2274, {wxDirPickerCtrl, 'Destroy', undefined}}, + {2275, {wxColourPickerCtrl, new_0, 0}}, + {2276, {wxColourPickerCtrl, new_3, 3}}, + {2277, {wxColourPickerCtrl, create, 3}}, + {2278, {wxColourPickerCtrl, getColour, 0}}, + {2279, {wxColourPickerCtrl, setColour_1_1, 1}}, + {2280, {wxColourPickerCtrl, setColour_1_0, 1}}, + {2281, {wxColourPickerCtrl, 'Destroy', undefined}}, + {2282, {wxDatePickerCtrl, new_0, 0}}, + {2283, {wxDatePickerCtrl, new_3, 3}}, + {2284, {wxDatePickerCtrl, getRange, 2}}, + {2285, {wxDatePickerCtrl, getValue, 0}}, + {2286, {wxDatePickerCtrl, setRange, 2}}, + {2287, {wxDatePickerCtrl, setValue, 1}}, + {2288, {wxDatePickerCtrl, 'Destroy', undefined}}, + {2289, {wxFontPickerCtrl, new_0, 0}}, + {2290, {wxFontPickerCtrl, new_3, 3}}, + {2291, {wxFontPickerCtrl, create, 3}}, + {2292, {wxFontPickerCtrl, getSelectedFont, 0}}, + {2293, {wxFontPickerCtrl, setSelectedFont, 1}}, + {2294, {wxFontPickerCtrl, getMaxPointSize, 0}}, + {2295, {wxFontPickerCtrl, setMaxPointSize, 1}}, + {2296, {wxFontPickerCtrl, 'Destroy', undefined}}, + {2299, {wxFindReplaceDialog, new_0, 0}}, + {2300, {wxFindReplaceDialog, new_4, 4}}, + {2301, {wxFindReplaceDialog, destruct, 0}}, + {2302, {wxFindReplaceDialog, create, 4}}, + {2303, {wxFindReplaceDialog, getData, 0}}, + {2304, {wxFindReplaceData, new_0, 0}}, + {2305, {wxFindReplaceData, new_1, 1}}, + {2306, {wxFindReplaceData, getFindString, 0}}, + {2307, {wxFindReplaceData, getReplaceString, 0}}, + {2308, {wxFindReplaceData, getFlags, 0}}, + {2309, {wxFindReplaceData, setFlags, 1}}, + {2310, {wxFindReplaceData, setFindString, 1}}, + {2311, {wxFindReplaceData, setReplaceString, 1}}, + {2312, {wxFindReplaceData, 'Destroy', undefined}}, + {2313, {wxMultiChoiceDialog, new_0, 0}}, + {2315, {wxMultiChoiceDialog, new_5, 5}}, + {2316, {wxMultiChoiceDialog, getSelections, 0}}, + {2317, {wxMultiChoiceDialog, setSelections, 1}}, + {2318, {wxMultiChoiceDialog, 'Destroy', undefined}}, + {2319, {wxSingleChoiceDialog, new_0, 0}}, + {2321, {wxSingleChoiceDialog, new_5, 5}}, + {2322, {wxSingleChoiceDialog, getSelection, 0}}, + {2323, {wxSingleChoiceDialog, getStringSelection, 0}}, + {2324, {wxSingleChoiceDialog, setSelection, 1}}, + {2325, {wxSingleChoiceDialog, 'Destroy', undefined}}, + {2326, {wxTextEntryDialog, new, 3}}, + {2327, {wxTextEntryDialog, getValue, 0}}, + {2328, {wxTextEntryDialog, setValue, 1}}, + {2329, {wxTextEntryDialog, 'Destroy', undefined}}, + {2330, {wxPasswordEntryDialog, new, 3}}, + {2331, {wxPasswordEntryDialog, 'Destroy', undefined}}, + {2332, {wxFontData, new_0, 0}}, + {2333, {wxFontData, new_1, 1}}, + {2334, {wxFontData, destruct, 0}}, + {2335, {wxFontData, enableEffects, 1}}, + {2336, {wxFontData, getAllowSymbols, 0}}, + {2337, {wxFontData, getColour, 0}}, + {2338, {wxFontData, getChosenFont, 0}}, + {2339, {wxFontData, getEnableEffects, 0}}, + {2340, {wxFontData, getInitialFont, 0}}, + {2341, {wxFontData, getShowHelp, 0}}, + {2342, {wxFontData, setAllowSymbols, 1}}, + {2343, {wxFontData, setChosenFont, 1}}, + {2344, {wxFontData, setColour, 1}}, + {2345, {wxFontData, setInitialFont, 1}}, + {2346, {wxFontData, setRange, 2}}, + {2347, {wxFontData, setShowHelp, 1}}, + {2351, {wxFontDialog, new_0, 0}}, + {2353, {wxFontDialog, new_2, 2}}, + {2355, {wxFontDialog, create, 2}}, + {2356, {wxFontDialog, getFontData, 0}}, + {2358, {wxFontDialog, 'Destroy', undefined}}, + {2359, {wxProgressDialog, new, 3}}, + {2360, {wxProgressDialog, destruct, 0}}, + {2361, {wxProgressDialog, resume, 0}}, + {2362, {wxProgressDialog, update_2, 2}}, + {2363, {wxProgressDialog, update_0, 0}}, + {2364, {wxMessageDialog, new, 3}}, + {2365, {wxMessageDialog, destruct, 0}}, + {2366, {wxPageSetupDialog, new, 2}}, + {2367, {wxPageSetupDialog, destruct, 0}}, + {2368, {wxPageSetupDialog, getPageSetupData, 0}}, + {2369, {wxPageSetupDialog, showModal, 0}}, + {2370, {wxPageSetupDialogData, new_0, 0}}, + {2371, {wxPageSetupDialogData, new_1_0, 1}}, + {2372, {wxPageSetupDialogData, new_1_1, 1}}, + {2373, {wxPageSetupDialogData, destruct, 0}}, + {2374, {wxPageSetupDialogData, enableHelp, 1}}, + {2375, {wxPageSetupDialogData, enableMargins, 1}}, + {2376, {wxPageSetupDialogData, enableOrientation, 1}}, + {2377, {wxPageSetupDialogData, enablePaper, 1}}, + {2378, {wxPageSetupDialogData, enablePrinter, 1}}, + {2379, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, + {2380, {wxPageSetupDialogData, getEnableMargins, 0}}, + {2381, {wxPageSetupDialogData, getEnableOrientation, 0}}, + {2382, {wxPageSetupDialogData, getEnablePaper, 0}}, + {2383, {wxPageSetupDialogData, getEnablePrinter, 0}}, + {2384, {wxPageSetupDialogData, getEnableHelp, 0}}, + {2385, {wxPageSetupDialogData, getDefaultInfo, 0}}, + {2386, {wxPageSetupDialogData, getMarginTopLeft, 0}}, + {2387, {wxPageSetupDialogData, getMarginBottomRight, 0}}, + {2388, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, + {2389, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, + {2390, {wxPageSetupDialogData, getPaperId, 0}}, + {2391, {wxPageSetupDialogData, getPaperSize, 0}}, + {2393, {wxPageSetupDialogData, getPrintData, 0}}, + {2394, {wxPageSetupDialogData, isOk, 0}}, + {2395, {wxPageSetupDialogData, setDefaultInfo, 1}}, + {2396, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, + {2397, {wxPageSetupDialogData, setMarginTopLeft, 1}}, + {2398, {wxPageSetupDialogData, setMarginBottomRight, 1}}, + {2399, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, + {2400, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, + {2401, {wxPageSetupDialogData, setPaperId, 1}}, + {2402, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, + {2403, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, + {2404, {wxPageSetupDialogData, setPrintData, 1}}, + {2405, {wxPrintDialog, new_2_0, 2}}, + {2406, {wxPrintDialog, new_2_1, 2}}, + {2407, {wxPrintDialog, destruct, 0}}, + {2408, {wxPrintDialog, getPrintDialogData, 0}}, + {2409, {wxPrintDialog, getPrintDC, 0}}, + {2410, {wxPrintDialogData, new_0, 0}}, + {2411, {wxPrintDialogData, new_1_1, 1}}, + {2412, {wxPrintDialogData, new_1_0, 1}}, + {2413, {wxPrintDialogData, destruct, 0}}, + {2414, {wxPrintDialogData, enableHelp, 1}}, + {2415, {wxPrintDialogData, enablePageNumbers, 1}}, + {2416, {wxPrintDialogData, enablePrintToFile, 1}}, + {2417, {wxPrintDialogData, enableSelection, 1}}, + {2418, {wxPrintDialogData, getAllPages, 0}}, + {2419, {wxPrintDialogData, getCollate, 0}}, + {2420, {wxPrintDialogData, getFromPage, 0}}, + {2421, {wxPrintDialogData, getMaxPage, 0}}, + {2422, {wxPrintDialogData, getMinPage, 0}}, + {2423, {wxPrintDialogData, getNoCopies, 0}}, + {2424, {wxPrintDialogData, getPrintData, 0}}, + {2425, {wxPrintDialogData, getPrintToFile, 0}}, + {2426, {wxPrintDialogData, getSelection, 0}}, + {2427, {wxPrintDialogData, getToPage, 0}}, + {2428, {wxPrintDialogData, isOk, 0}}, + {2429, {wxPrintDialogData, setCollate, 1}}, + {2430, {wxPrintDialogData, setFromPage, 1}}, + {2431, {wxPrintDialogData, setMaxPage, 1}}, + {2432, {wxPrintDialogData, setMinPage, 1}}, + {2433, {wxPrintDialogData, setNoCopies, 1}}, + {2434, {wxPrintDialogData, setPrintData, 1}}, + {2435, {wxPrintDialogData, setPrintToFile, 1}}, + {2436, {wxPrintDialogData, setSelection, 1}}, + {2437, {wxPrintDialogData, setToPage, 1}}, + {2438, {wxPrintData, new_0, 0}}, + {2439, {wxPrintData, new_1, 1}}, + {2440, {wxPrintData, destruct, 0}}, + {2441, {wxPrintData, getCollate, 0}}, + {2442, {wxPrintData, getBin, 0}}, + {2443, {wxPrintData, getColour, 0}}, + {2444, {wxPrintData, getDuplex, 0}}, + {2445, {wxPrintData, getNoCopies, 0}}, + {2446, {wxPrintData, getOrientation, 0}}, + {2447, {wxPrintData, getPaperId, 0}}, + {2448, {wxPrintData, getPrinterName, 0}}, + {2449, {wxPrintData, getQuality, 0}}, + {2450, {wxPrintData, isOk, 0}}, + {2451, {wxPrintData, setBin, 1}}, + {2452, {wxPrintData, setCollate, 1}}, + {2453, {wxPrintData, setColour, 1}}, + {2454, {wxPrintData, setDuplex, 1}}, + {2455, {wxPrintData, setNoCopies, 1}}, + {2456, {wxPrintData, setOrientation, 1}}, + {2457, {wxPrintData, setPaperId, 1}}, + {2458, {wxPrintData, setPrinterName, 1}}, + {2459, {wxPrintData, setQuality, 1}}, + {2462, {wxPrintPreview, new_2, 2}}, + {2463, {wxPrintPreview, new_3, 3}}, + {2465, {wxPrintPreview, destruct, 0}}, + {2466, {wxPrintPreview, getCanvas, 0}}, + {2467, {wxPrintPreview, getCurrentPage, 0}}, + {2468, {wxPrintPreview, getFrame, 0}}, + {2469, {wxPrintPreview, getMaxPage, 0}}, + {2470, {wxPrintPreview, getMinPage, 0}}, + {2471, {wxPrintPreview, getPrintout, 0}}, + {2472, {wxPrintPreview, getPrintoutForPrinting, 0}}, + {2473, {wxPrintPreview, isOk, 0}}, + {2474, {wxPrintPreview, paintPage, 2}}, + {2475, {wxPrintPreview, print, 1}}, + {2476, {wxPrintPreview, renderPage, 1}}, + {2477, {wxPrintPreview, setCanvas, 1}}, + {2478, {wxPrintPreview, setCurrentPage, 1}}, + {2479, {wxPrintPreview, setFrame, 1}}, + {2480, {wxPrintPreview, setPrintout, 1}}, + {2481, {wxPrintPreview, setZoom, 1}}, + {2482, {wxPreviewFrame, new, 3}}, + {2483, {wxPreviewFrame, destruct, 0}}, + {2484, {wxPreviewFrame, createControlBar, 0}}, + {2485, {wxPreviewFrame, createCanvas, 0}}, + {2486, {wxPreviewFrame, initialize, 0}}, + {2487, {wxPreviewFrame, onCloseWindow, 1}}, + {2488, {wxPreviewControlBar, new, 4}}, + {2489, {wxPreviewControlBar, destruct, 0}}, + {2490, {wxPreviewControlBar, createButtons, 0}}, + {2491, {wxPreviewControlBar, getPrintPreview, 0}}, + {2492, {wxPreviewControlBar, getZoomControl, 0}}, + {2493, {wxPreviewControlBar, setZoomControl, 1}}, + {2495, {wxPrinter, new, 1}}, + {2496, {wxPrinter, createAbortWindow, 2}}, + {2497, {wxPrinter, getAbort, 0}}, + {2498, {wxPrinter, getLastError, 0}}, + {2499, {wxPrinter, getPrintDialogData, 0}}, + {2500, {wxPrinter, print, 3}}, + {2501, {wxPrinter, printDialog, 1}}, + {2502, {wxPrinter, reportError, 3}}, + {2503, {wxPrinter, setup, 1}}, + {2504, {wxPrinter, 'Destroy', undefined}}, + {2505, {wxXmlResource, new_1, 1}}, + {2506, {wxXmlResource, new_2, 2}}, + {2507, {wxXmlResource, destruct, 0}}, + {2508, {wxXmlResource, attachUnknownControl, 3}}, + {2509, {wxXmlResource, clearHandlers, 0}}, + {2510, {wxXmlResource, compareVersion, 4}}, + {2511, {wxXmlResource, get, 0}}, + {2512, {wxXmlResource, getFlags, 0}}, + {2513, {wxXmlResource, getVersion, 0}}, + {2514, {wxXmlResource, getXRCID, 2}}, + {2515, {wxXmlResource, initAllHandlers, 0}}, + {2516, {wxXmlResource, load, 1}}, + {2517, {wxXmlResource, loadBitmap, 1}}, + {2518, {wxXmlResource, loadDialog_2, 2}}, + {2519, {wxXmlResource, loadDialog_3, 3}}, + {2520, {wxXmlResource, loadFrame_2, 2}}, + {2521, {wxXmlResource, loadFrame_3, 3}}, + {2522, {wxXmlResource, loadIcon, 1}}, + {2523, {wxXmlResource, loadMenu, 1}}, + {2524, {wxXmlResource, loadMenuBar_2, 2}}, + {2525, {wxXmlResource, loadMenuBar_1, 1}}, + {2526, {wxXmlResource, loadPanel_2, 2}}, + {2527, {wxXmlResource, loadPanel_3, 3}}, + {2528, {wxXmlResource, loadToolBar, 2}}, + {2529, {wxXmlResource, set, 1}}, + {2530, {wxXmlResource, setFlags, 1}}, + {2531, {wxXmlResource, unload, 1}}, + {2532, {wxXmlResource, xrcctrl, 3}}, + {2533, {wxHtmlEasyPrinting, new, 1}}, + {2534, {wxHtmlEasyPrinting, destruct, 0}}, + {2535, {wxHtmlEasyPrinting, getPrintData, 0}}, + {2536, {wxHtmlEasyPrinting, getPageSetupData, 0}}, + {2537, {wxHtmlEasyPrinting, previewFile, 1}}, + {2538, {wxHtmlEasyPrinting, previewText, 2}}, + {2539, {wxHtmlEasyPrinting, printFile, 1}}, + {2540, {wxHtmlEasyPrinting, printText, 2}}, + {2541, {wxHtmlEasyPrinting, pageSetup, 0}}, + {2542, {wxHtmlEasyPrinting, setFonts, 3}}, + {2543, {wxHtmlEasyPrinting, setHeader, 2}}, + {2544, {wxHtmlEasyPrinting, setFooter, 2}}, + {2546, {wxGLCanvas, new_2, 2}}, + {2547, {wxGLCanvas, new_3_1, 3}}, + {2548, {wxGLCanvas, new_3_0, 3}}, + {2549, {wxGLCanvas, getContext, 0}}, + {2551, {wxGLCanvas, setCurrent, 0}}, + {2552, {wxGLCanvas, swapBuffers, 0}}, + {2553, {wxGLCanvas, 'Destroy', undefined}}, + {2554, {wxAuiManager, new, 1}}, + {2555, {wxAuiManager, destruct, 0}}, + {2556, {wxAuiManager, addPane_2_1, 2}}, + {2557, {wxAuiManager, addPane_3, 3}}, + {2558, {wxAuiManager, addPane_2_0, 2}}, + {2559, {wxAuiManager, detachPane, 1}}, + {2560, {wxAuiManager, getAllPanes, 0}}, + {2561, {wxAuiManager, getArtProvider, 0}}, + {2562, {wxAuiManager, getDockSizeConstraint, 2}}, + {2563, {wxAuiManager, getFlags, 0}}, + {2564, {wxAuiManager, getManagedWindow, 0}}, + {2565, {wxAuiManager, getManager, 1}}, + {2566, {wxAuiManager, getPane_1_1, 1}}, + {2567, {wxAuiManager, getPane_1_0, 1}}, + {2568, {wxAuiManager, hideHint, 0}}, + {2569, {wxAuiManager, insertPane, 3}}, + {2570, {wxAuiManager, loadPaneInfo, 2}}, + {2571, {wxAuiManager, loadPerspective, 2}}, + {2572, {wxAuiManager, savePaneInfo, 1}}, + {2573, {wxAuiManager, savePerspective, 0}}, + {2574, {wxAuiManager, setArtProvider, 1}}, + {2575, {wxAuiManager, setDockSizeConstraint, 2}}, + {2576, {wxAuiManager, setFlags, 1}}, + {2577, {wxAuiManager, setManagedWindow, 1}}, + {2578, {wxAuiManager, showHint, 1}}, + {2579, {wxAuiManager, unInit, 0}}, + {2580, {wxAuiManager, update, 0}}, + {2581, {wxAuiPaneInfo, new_0, 0}}, + {2582, {wxAuiPaneInfo, new_1, 1}}, + {2583, {wxAuiPaneInfo, destruct, 0}}, + {2584, {wxAuiPaneInfo, bestSize_1, 1}}, + {2585, {wxAuiPaneInfo, bestSize_2, 2}}, + {2586, {wxAuiPaneInfo, bottom, 0}}, + {2587, {wxAuiPaneInfo, bottomDockable, 1}}, + {2588, {wxAuiPaneInfo, caption, 1}}, + {2589, {wxAuiPaneInfo, captionVisible, 1}}, + {2590, {wxAuiPaneInfo, centre, 0}}, + {2591, {wxAuiPaneInfo, centrePane, 0}}, + {2592, {wxAuiPaneInfo, closeButton, 1}}, + {2593, {wxAuiPaneInfo, defaultPane, 0}}, + {2594, {wxAuiPaneInfo, destroyOnClose, 1}}, + {2595, {wxAuiPaneInfo, direction, 1}}, + {2596, {wxAuiPaneInfo, dock, 0}}, + {2597, {wxAuiPaneInfo, dockable, 1}}, + {2598, {wxAuiPaneInfo, fixed, 0}}, + {2599, {wxAuiPaneInfo, float, 0}}, + {2600, {wxAuiPaneInfo, floatable, 1}}, + {2601, {wxAuiPaneInfo, floatingPosition_1, 1}}, + {2602, {wxAuiPaneInfo, floatingPosition_2, 2}}, + {2603, {wxAuiPaneInfo, floatingSize_1, 1}}, + {2604, {wxAuiPaneInfo, floatingSize_2, 2}}, + {2605, {wxAuiPaneInfo, gripper, 1}}, + {2606, {wxAuiPaneInfo, gripperTop, 1}}, + {2607, {wxAuiPaneInfo, hasBorder, 0}}, + {2608, {wxAuiPaneInfo, hasCaption, 0}}, + {2609, {wxAuiPaneInfo, hasCloseButton, 0}}, + {2610, {wxAuiPaneInfo, hasFlag, 1}}, + {2611, {wxAuiPaneInfo, hasGripper, 0}}, + {2612, {wxAuiPaneInfo, hasGripperTop, 0}}, + {2613, {wxAuiPaneInfo, hasMaximizeButton, 0}}, + {2614, {wxAuiPaneInfo, hasMinimizeButton, 0}}, + {2615, {wxAuiPaneInfo, hasPinButton, 0}}, + {2616, {wxAuiPaneInfo, hide, 0}}, + {2617, {wxAuiPaneInfo, isBottomDockable, 0}}, + {2618, {wxAuiPaneInfo, isDocked, 0}}, + {2619, {wxAuiPaneInfo, isFixed, 0}}, + {2620, {wxAuiPaneInfo, isFloatable, 0}}, + {2621, {wxAuiPaneInfo, isFloating, 0}}, + {2622, {wxAuiPaneInfo, isLeftDockable, 0}}, + {2623, {wxAuiPaneInfo, isMovable, 0}}, + {2624, {wxAuiPaneInfo, isOk, 0}}, + {2625, {wxAuiPaneInfo, isResizable, 0}}, + {2626, {wxAuiPaneInfo, isRightDockable, 0}}, + {2627, {wxAuiPaneInfo, isShown, 0}}, + {2628, {wxAuiPaneInfo, isToolbar, 0}}, + {2629, {wxAuiPaneInfo, isTopDockable, 0}}, + {2630, {wxAuiPaneInfo, layer, 1}}, + {2631, {wxAuiPaneInfo, left, 0}}, + {2632, {wxAuiPaneInfo, leftDockable, 1}}, + {2633, {wxAuiPaneInfo, maxSize_1, 1}}, + {2634, {wxAuiPaneInfo, maxSize_2, 2}}, + {2635, {wxAuiPaneInfo, maximizeButton, 1}}, + {2636, {wxAuiPaneInfo, minSize_1, 1}}, + {2637, {wxAuiPaneInfo, minSize_2, 2}}, + {2638, {wxAuiPaneInfo, minimizeButton, 1}}, + {2639, {wxAuiPaneInfo, movable, 1}}, + {2640, {wxAuiPaneInfo, name, 1}}, + {2641, {wxAuiPaneInfo, paneBorder, 1}}, + {2642, {wxAuiPaneInfo, pinButton, 1}}, + {2643, {wxAuiPaneInfo, position, 1}}, + {2644, {wxAuiPaneInfo, resizable, 1}}, + {2645, {wxAuiPaneInfo, right, 0}}, + {2646, {wxAuiPaneInfo, rightDockable, 1}}, + {2647, {wxAuiPaneInfo, row, 1}}, + {2648, {wxAuiPaneInfo, safeSet, 1}}, + {2649, {wxAuiPaneInfo, setFlag, 2}}, + {2650, {wxAuiPaneInfo, show, 1}}, + {2651, {wxAuiPaneInfo, toolbarPane, 0}}, + {2652, {wxAuiPaneInfo, top, 0}}, + {2653, {wxAuiPaneInfo, topDockable, 1}}, + {2654, {wxAuiPaneInfo, window, 1}}, + {2655, {wxAuiPaneInfo, getWindow, 0}}, + {2656, {wxAuiPaneInfo, getFrame, 0}}, + {2657, {wxAuiPaneInfo, getDirection, 0}}, + {2658, {wxAuiPaneInfo, getLayer, 0}}, + {2659, {wxAuiPaneInfo, getRow, 0}}, + {2660, {wxAuiPaneInfo, getPosition, 0}}, + {2661, {wxAuiPaneInfo, getFloatingPosition, 0}}, + {2662, {wxAuiPaneInfo, getFloatingSize, 0}}, + {2663, {wxAuiNotebook, new_0, 0}}, + {2664, {wxAuiNotebook, new_2, 2}}, + {2665, {wxAuiNotebook, addPage, 3}}, + {2666, {wxAuiNotebook, create, 2}}, + {2667, {wxAuiNotebook, deletePage, 1}}, + {2668, {wxAuiNotebook, getArtProvider, 0}}, + {2669, {wxAuiNotebook, getPage, 1}}, + {2670, {wxAuiNotebook, getPageBitmap, 1}}, + {2671, {wxAuiNotebook, getPageCount, 0}}, + {2672, {wxAuiNotebook, getPageIndex, 1}}, + {2673, {wxAuiNotebook, getPageText, 1}}, + {2674, {wxAuiNotebook, getSelection, 0}}, + {2675, {wxAuiNotebook, insertPage, 4}}, + {2676, {wxAuiNotebook, removePage, 1}}, + {2677, {wxAuiNotebook, setArtProvider, 1}}, + {2678, {wxAuiNotebook, setFont, 1}}, + {2679, {wxAuiNotebook, setPageBitmap, 2}}, + {2680, {wxAuiNotebook, setPageText, 2}}, + {2681, {wxAuiNotebook, setSelection, 1}}, + {2682, {wxAuiNotebook, setTabCtrlHeight, 1}}, + {2683, {wxAuiNotebook, setUniformBitmapSize, 1}}, + {2684, {wxAuiNotebook, 'Destroy', undefined}}, + {2685, {wxAuiTabArt, setFlags, 1}}, + {2686, {wxAuiTabArt, setMeasuringFont, 1}}, + {2687, {wxAuiTabArt, setNormalFont, 1}}, + {2688, {wxAuiTabArt, setSelectedFont, 1}}, + {2689, {wxAuiTabArt, setColour, 1}}, + {2690, {wxAuiTabArt, setActiveColour, 1}}, + {2691, {wxAuiDockArt, getColour, 1}}, + {2692, {wxAuiDockArt, getFont, 1}}, + {2693, {wxAuiDockArt, getMetric, 1}}, + {2694, {wxAuiDockArt, setColour, 2}}, + {2695, {wxAuiDockArt, setFont, 2}}, + {2696, {wxAuiDockArt, setMetric, 2}}, + {2697, {wxAuiSimpleTabArt, new, 0}}, + {2698, {wxAuiSimpleTabArt, 'Destroy', undefined}}, + {2699, {wxMDIParentFrame, new_0, 0}}, + {2700, {wxMDIParentFrame, new_4, 4}}, + {2701, {wxMDIParentFrame, destruct, 0}}, + {2702, {wxMDIParentFrame, activateNext, 0}}, + {2703, {wxMDIParentFrame, activatePrevious, 0}}, + {2704, {wxMDIParentFrame, arrangeIcons, 0}}, + {2705, {wxMDIParentFrame, cascade, 0}}, + {2706, {wxMDIParentFrame, create, 4}}, + {2707, {wxMDIParentFrame, getActiveChild, 0}}, + {2708, {wxMDIParentFrame, getClientWindow, 0}}, + {2709, {wxMDIParentFrame, tile, 1}}, + {2710, {wxMDIChildFrame, new_0, 0}}, + {2711, {wxMDIChildFrame, new_4, 4}}, + {2712, {wxMDIChildFrame, destruct, 0}}, + {2713, {wxMDIChildFrame, activate, 0}}, + {2714, {wxMDIChildFrame, create, 4}}, + {2715, {wxMDIChildFrame, maximize, 1}}, + {2716, {wxMDIChildFrame, restore, 0}}, + {2717, {wxMDIClientWindow, new_0, 0}}, + {2718, {wxMDIClientWindow, new_2, 2}}, + {2719, {wxMDIClientWindow, destruct, 0}}, + {2720, {wxMDIClientWindow, createClient, 2}}, + {2721, {wxLayoutAlgorithm, new, 0}}, + {2722, {wxLayoutAlgorithm, layoutFrame, 2}}, + {2723, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, + {2724, {wxLayoutAlgorithm, layoutWindow, 2}}, + {2725, {wxLayoutAlgorithm, 'Destroy', undefined}}, + {2726, {wxEvent, getId, 0}}, + {2727, {wxEvent, getSkipped, 0}}, + {2728, {wxEvent, getTimestamp, 0}}, + {2729, {wxEvent, isCommandEvent, 0}}, + {2730, {wxEvent, resumePropagation, 1}}, + {2731, {wxEvent, shouldPropagate, 0}}, + {2732, {wxEvent, skip, 1}}, + {2733, {wxEvent, stopPropagation, 0}}, + {2734, {wxCommandEvent, getClientData, 0}}, + {2735, {wxCommandEvent, getExtraLong, 0}}, + {2736, {wxCommandEvent, getInt, 0}}, + {2737, {wxCommandEvent, getSelection, 0}}, + {2738, {wxCommandEvent, getString, 0}}, + {2739, {wxCommandEvent, isChecked, 0}}, + {2740, {wxCommandEvent, isSelection, 0}}, + {2741, {wxCommandEvent, setInt, 1}}, + {2742, {wxCommandEvent, setString, 1}}, + {2743, {wxScrollEvent, getOrientation, 0}}, + {2744, {wxScrollEvent, getPosition, 0}}, + {2745, {wxScrollWinEvent, getOrientation, 0}}, + {2746, {wxScrollWinEvent, getPosition, 0}}, + {2747, {wxMouseEvent, altDown, 0}}, + {2748, {wxMouseEvent, button, 1}}, + {2749, {wxMouseEvent, buttonDClick, 1}}, + {2750, {wxMouseEvent, buttonDown, 1}}, + {2751, {wxMouseEvent, buttonUp, 1}}, + {2752, {wxMouseEvent, cmdDown, 0}}, + {2753, {wxMouseEvent, controlDown, 0}}, + {2754, {wxMouseEvent, dragging, 0}}, + {2755, {wxMouseEvent, entering, 0}}, + {2756, {wxMouseEvent, getButton, 0}}, + {2759, {wxMouseEvent, getPosition, 0}}, + {2760, {wxMouseEvent, getLogicalPosition, 1}}, + {2761, {wxMouseEvent, getLinesPerAction, 0}}, + {2762, {wxMouseEvent, getWheelRotation, 0}}, + {2763, {wxMouseEvent, getWheelDelta, 0}}, + {2764, {wxMouseEvent, getX, 0}}, + {2765, {wxMouseEvent, getY, 0}}, + {2766, {wxMouseEvent, isButton, 0}}, + {2767, {wxMouseEvent, isPageScroll, 0}}, + {2768, {wxMouseEvent, leaving, 0}}, + {2769, {wxMouseEvent, leftDClick, 0}}, + {2770, {wxMouseEvent, leftDown, 0}}, + {2771, {wxMouseEvent, leftIsDown, 0}}, + {2772, {wxMouseEvent, leftUp, 0}}, + {2773, {wxMouseEvent, metaDown, 0}}, + {2774, {wxMouseEvent, middleDClick, 0}}, + {2775, {wxMouseEvent, middleDown, 0}}, + {2776, {wxMouseEvent, middleIsDown, 0}}, + {2777, {wxMouseEvent, middleUp, 0}}, + {2778, {wxMouseEvent, moving, 0}}, + {2779, {wxMouseEvent, rightDClick, 0}}, + {2780, {wxMouseEvent, rightDown, 0}}, + {2781, {wxMouseEvent, rightIsDown, 0}}, + {2782, {wxMouseEvent, rightUp, 0}}, + {2783, {wxMouseEvent, shiftDown, 0}}, + {2784, {wxSetCursorEvent, getCursor, 0}}, + {2785, {wxSetCursorEvent, getX, 0}}, + {2786, {wxSetCursorEvent, getY, 0}}, + {2787, {wxSetCursorEvent, hasCursor, 0}}, + {2788, {wxSetCursorEvent, setCursor, 1}}, + {2789, {wxKeyEvent, altDown, 0}}, + {2790, {wxKeyEvent, cmdDown, 0}}, + {2791, {wxKeyEvent, controlDown, 0}}, + {2792, {wxKeyEvent, getKeyCode, 0}}, + {2793, {wxKeyEvent, getModifiers, 0}}, + {2796, {wxKeyEvent, getPosition, 0}}, + {2797, {wxKeyEvent, getRawKeyCode, 0}}, + {2798, {wxKeyEvent, getRawKeyFlags, 0}}, + {2799, {wxKeyEvent, getUnicodeKey, 0}}, + {2800, {wxKeyEvent, getX, 0}}, + {2801, {wxKeyEvent, getY, 0}}, + {2802, {wxKeyEvent, hasModifiers, 0}}, + {2803, {wxKeyEvent, metaDown, 0}}, + {2804, {wxKeyEvent, shiftDown, 0}}, + {2805, {wxSizeEvent, getSize, 0}}, + {2806, {wxMoveEvent, getPosition, 0}}, + {2807, {wxEraseEvent, getDC, 0}}, + {2808, {wxFocusEvent, getWindow, 0}}, + {2809, {wxChildFocusEvent, getWindow, 0}}, + {2810, {wxMenuEvent, getMenu, 0}}, + {2811, {wxMenuEvent, getMenuId, 0}}, + {2812, {wxMenuEvent, isPopup, 0}}, + {2813, {wxCloseEvent, canVeto, 0}}, + {2814, {wxCloseEvent, getLoggingOff, 0}}, + {2815, {wxCloseEvent, setCanVeto, 1}}, + {2816, {wxCloseEvent, setLoggingOff, 1}}, + {2817, {wxCloseEvent, veto, 1}}, + {2818, {wxShowEvent, setShow, 1}}, + {2819, {wxShowEvent, getShow, 0}}, + {2820, {wxIconizeEvent, iconized, 0}}, + {2821, {wxJoystickEvent, buttonDown, 1}}, + {2822, {wxJoystickEvent, buttonIsDown, 1}}, + {2823, {wxJoystickEvent, buttonUp, 1}}, + {2824, {wxJoystickEvent, getButtonChange, 0}}, + {2825, {wxJoystickEvent, getButtonState, 0}}, + {2826, {wxJoystickEvent, getJoystick, 0}}, + {2827, {wxJoystickEvent, getPosition, 0}}, + {2828, {wxJoystickEvent, getZPosition, 0}}, + {2829, {wxJoystickEvent, isButton, 0}}, + {2830, {wxJoystickEvent, isMove, 0}}, + {2831, {wxJoystickEvent, isZMove, 0}}, + {2832, {wxUpdateUIEvent, canUpdate, 1}}, + {2833, {wxUpdateUIEvent, check, 1}}, + {2834, {wxUpdateUIEvent, enable, 1}}, + {2835, {wxUpdateUIEvent, show, 1}}, + {2836, {wxUpdateUIEvent, getChecked, 0}}, + {2837, {wxUpdateUIEvent, getEnabled, 0}}, + {2838, {wxUpdateUIEvent, getShown, 0}}, + {2839, {wxUpdateUIEvent, getSetChecked, 0}}, + {2840, {wxUpdateUIEvent, getSetEnabled, 0}}, + {2841, {wxUpdateUIEvent, getSetShown, 0}}, + {2842, {wxUpdateUIEvent, getSetText, 0}}, + {2843, {wxUpdateUIEvent, getText, 0}}, + {2844, {wxUpdateUIEvent, getMode, 0}}, + {2845, {wxUpdateUIEvent, getUpdateInterval, 0}}, + {2846, {wxUpdateUIEvent, resetUpdateTime, 0}}, + {2847, {wxUpdateUIEvent, setMode, 1}}, + {2848, {wxUpdateUIEvent, setText, 1}}, + {2849, {wxUpdateUIEvent, setUpdateInterval, 1}}, + {2850, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, + {2851, {wxPaletteChangedEvent, setChangedWindow, 1}}, + {2852, {wxPaletteChangedEvent, getChangedWindow, 0}}, + {2853, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, + {2854, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, + {2855, {wxNavigationKeyEvent, getDirection, 0}}, + {2856, {wxNavigationKeyEvent, setDirection, 1}}, + {2857, {wxNavigationKeyEvent, isWindowChange, 0}}, + {2858, {wxNavigationKeyEvent, setWindowChange, 1}}, + {2859, {wxNavigationKeyEvent, isFromTab, 0}}, + {2860, {wxNavigationKeyEvent, setFromTab, 1}}, + {2861, {wxNavigationKeyEvent, getCurrentFocus, 0}}, + {2862, {wxNavigationKeyEvent, setCurrentFocus, 1}}, + {2863, {wxHelpEvent, getOrigin, 0}}, + {2864, {wxHelpEvent, getPosition, 0}}, + {2865, {wxHelpEvent, setOrigin, 1}}, + {2866, {wxHelpEvent, setPosition, 1}}, + {2867, {wxContextMenuEvent, getPosition, 0}}, + {2868, {wxContextMenuEvent, setPosition, 1}}, + {2869, {wxIdleEvent, canSend, 1}}, + {2870, {wxIdleEvent, getMode, 0}}, + {2871, {wxIdleEvent, requestMore, 1}}, + {2872, {wxIdleEvent, moreRequested, 0}}, + {2873, {wxIdleEvent, setMode, 1}}, + {2874, {wxGridEvent, altDown, 0}}, + {2875, {wxGridEvent, controlDown, 0}}, + {2876, {wxGridEvent, getCol, 0}}, + {2877, {wxGridEvent, getPosition, 0}}, + {2878, {wxGridEvent, getRow, 0}}, + {2879, {wxGridEvent, metaDown, 0}}, + {2880, {wxGridEvent, selecting, 0}}, + {2881, {wxGridEvent, shiftDown, 0}}, + {2882, {wxNotifyEvent, allow, 0}}, + {2883, {wxNotifyEvent, isAllowed, 0}}, + {2884, {wxNotifyEvent, veto, 0}}, + {2885, {wxSashEvent, getEdge, 0}}, + {2886, {wxSashEvent, getDragRect, 0}}, + {2887, {wxSashEvent, getDragStatus, 0}}, + {2888, {wxListEvent, getCacheFrom, 0}}, + {2889, {wxListEvent, getCacheTo, 0}}, + {2890, {wxListEvent, getKeyCode, 0}}, + {2891, {wxListEvent, getIndex, 0}}, + {2892, {wxListEvent, getColumn, 0}}, + {2893, {wxListEvent, getPoint, 0}}, + {2894, {wxListEvent, getLabel, 0}}, + {2895, {wxListEvent, getText, 0}}, + {2896, {wxListEvent, getImage, 0}}, + {2897, {wxListEvent, getData, 0}}, + {2898, {wxListEvent, getMask, 0}}, + {2899, {wxListEvent, getItem, 0}}, + {2900, {wxListEvent, isEditCancelled, 0}}, + {2901, {wxDateEvent, getDate, 0}}, + {2902, {wxCalendarEvent, getWeekDay, 0}}, + {2903, {wxFileDirPickerEvent, getPath, 0}}, + {2904, {wxColourPickerEvent, getColour, 0}}, + {2905, {wxFontPickerEvent, getFont, 0}}, + {2906, {wxStyledTextEvent, getPosition, 0}}, + {2907, {wxStyledTextEvent, getKey, 0}}, + {2908, {wxStyledTextEvent, getModifiers, 0}}, + {2909, {wxStyledTextEvent, getModificationType, 0}}, + {2910, {wxStyledTextEvent, getText, 0}}, + {2911, {wxStyledTextEvent, getLength, 0}}, + {2912, {wxStyledTextEvent, getLinesAdded, 0}}, + {2913, {wxStyledTextEvent, getLine, 0}}, + {2914, {wxStyledTextEvent, getFoldLevelNow, 0}}, + {2915, {wxStyledTextEvent, getFoldLevelPrev, 0}}, + {2916, {wxStyledTextEvent, getMargin, 0}}, + {2917, {wxStyledTextEvent, getMessage, 0}}, + {2918, {wxStyledTextEvent, getWParam, 0}}, + {2919, {wxStyledTextEvent, getLParam, 0}}, + {2920, {wxStyledTextEvent, getListType, 0}}, + {2921, {wxStyledTextEvent, getX, 0}}, + {2922, {wxStyledTextEvent, getY, 0}}, + {2923, {wxStyledTextEvent, getDragText, 0}}, + {2924, {wxStyledTextEvent, getDragAllowMove, 0}}, + {2925, {wxStyledTextEvent, getDragResult, 0}}, + {2926, {wxStyledTextEvent, getShift, 0}}, + {2927, {wxStyledTextEvent, getControl, 0}}, + {2928, {wxStyledTextEvent, getAlt, 0}}, + {2929, {utils, getKeyState, 1}}, + {2930, {utils, getMousePosition, 2}}, + {2931, {utils, getMouseState, 0}}, + {2932, {utils, setDetectableAutoRepeat, 1}}, + {2933, {utils, bell, 0}}, + {2934, {utils, findMenuItemId, 3}}, + {2935, {utils, genericFindWindowAtPoint, 1}}, + {2936, {utils, findWindowAtPoint, 1}}, + {2937, {utils, beginBusyCursor, 1}}, + {2938, {utils, endBusyCursor, 0}}, + {2939, {utils, isBusy, 0}}, + {2940, {utils, shutdown, 1}}, + {2941, {utils, shell, 1}}, + {2942, {utils, launchDefaultBrowser, 2}}, + {2943, {utils, getEmailAddress, 0}}, + {2944, {utils, getUserId, 0}}, + {2945, {utils, getHomeDir, 0}}, + {2946, {utils, newId, 0}}, + {2947, {utils, registerId, 1}}, + {2948, {utils, getCurrentId, 0}}, + {2949, {utils, getOsDescription, 0}}, + {2950, {utils, isPlatformLittleEndian, 0}}, + {2951, {utils, isPlatform64Bit, 0}}, + {2952, {gdicmn, displaySize, 2}}, + {2953, {gdicmn, setCursor, 1}}, + {2954, {wxPrintout, new, 1}}, + {2955, {wxPrintout, destruct, 0}}, + {2956, {wxPrintout, getDC, 0}}, + {2957, {wxPrintout, getPageSizeMM, 2}}, + {2958, {wxPrintout, getPageSizePixels, 2}}, + {2959, {wxPrintout, getPaperRectPixels, 0}}, + {2960, {wxPrintout, getPPIPrinter, 2}}, + {2961, {wxPrintout, getPPIScreen, 2}}, + {2962, {wxPrintout, getTitle, 0}}, + {2963, {wxPrintout, isPreview, 0}}, + {2964, {wxPrintout, fitThisSizeToPaper, 1}}, + {2965, {wxPrintout, fitThisSizeToPage, 1}}, + {2966, {wxPrintout, fitThisSizeToPageMargins, 2}}, + {2967, {wxPrintout, mapScreenSizeToPaper, 0}}, + {2968, {wxPrintout, mapScreenSizeToPage, 0}}, + {2969, {wxPrintout, mapScreenSizeToPageMargins, 1}}, + {2970, {wxPrintout, mapScreenSizeToDevice, 0}}, + {2971, {wxPrintout, getLogicalPaperRect, 0}}, + {2972, {wxPrintout, getLogicalPageRect, 0}}, + {2973, {wxPrintout, getLogicalPageMarginsRect, 1}}, + {2974, {wxPrintout, setLogicalOrigin, 2}}, + {2975, {wxPrintout, offsetLogicalOrigin, 2}}, + {2976, {wxStyledTextCtrl, new_2, 2}}, + {2977, {wxStyledTextCtrl, new_0, 0}}, + {2978, {wxStyledTextCtrl, destruct, 0}}, + {2979, {wxStyledTextCtrl, create, 2}}, + {2980, {wxStyledTextCtrl, addText, 1}}, + {2981, {wxStyledTextCtrl, addStyledText, 1}}, + {2982, {wxStyledTextCtrl, insertText, 2}}, + {2983, {wxStyledTextCtrl, clearAll, 0}}, + {2984, {wxStyledTextCtrl, clearDocumentStyle, 0}}, + {2985, {wxStyledTextCtrl, getLength, 0}}, + {2986, {wxStyledTextCtrl, getCharAt, 1}}, + {2987, {wxStyledTextCtrl, getCurrentPos, 0}}, + {2988, {wxStyledTextCtrl, getAnchor, 0}}, + {2989, {wxStyledTextCtrl, getStyleAt, 1}}, + {2990, {wxStyledTextCtrl, redo, 0}}, + {2991, {wxStyledTextCtrl, setUndoCollection, 1}}, + {2992, {wxStyledTextCtrl, selectAll, 0}}, + {2993, {wxStyledTextCtrl, setSavePoint, 0}}, + {2994, {wxStyledTextCtrl, getStyledText, 2}}, + {2995, {wxStyledTextCtrl, canRedo, 0}}, + {2996, {wxStyledTextCtrl, markerLineFromHandle, 1}}, + {2997, {wxStyledTextCtrl, markerDeleteHandle, 1}}, + {2998, {wxStyledTextCtrl, getUndoCollection, 0}}, + {2999, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, + {3000, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, + {3001, {wxStyledTextCtrl, positionFromPoint, 1}}, + {3002, {wxStyledTextCtrl, positionFromPointClose, 2}}, + {3003, {wxStyledTextCtrl, gotoLine, 1}}, + {3004, {wxStyledTextCtrl, gotoPos, 1}}, + {3005, {wxStyledTextCtrl, setAnchor, 1}}, + {3006, {wxStyledTextCtrl, getCurLine, 1}}, + {3007, {wxStyledTextCtrl, getEndStyled, 0}}, + {3008, {wxStyledTextCtrl, convertEOLs, 1}}, + {3009, {wxStyledTextCtrl, getEOLMode, 0}}, + {3010, {wxStyledTextCtrl, setEOLMode, 1}}, + {3011, {wxStyledTextCtrl, startStyling, 2}}, + {3012, {wxStyledTextCtrl, setStyling, 2}}, + {3013, {wxStyledTextCtrl, getBufferedDraw, 0}}, + {3014, {wxStyledTextCtrl, setBufferedDraw, 1}}, + {3015, {wxStyledTextCtrl, setTabWidth, 1}}, + {3016, {wxStyledTextCtrl, getTabWidth, 0}}, + {3017, {wxStyledTextCtrl, setCodePage, 1}}, + {3018, {wxStyledTextCtrl, markerDefine, 3}}, + {3019, {wxStyledTextCtrl, markerSetForeground, 2}}, + {3020, {wxStyledTextCtrl, markerSetBackground, 2}}, + {3021, {wxStyledTextCtrl, markerAdd, 2}}, + {3022, {wxStyledTextCtrl, markerDelete, 2}}, + {3023, {wxStyledTextCtrl, markerDeleteAll, 1}}, + {3024, {wxStyledTextCtrl, markerGet, 1}}, + {3025, {wxStyledTextCtrl, markerNext, 2}}, + {3026, {wxStyledTextCtrl, markerPrevious, 2}}, + {3027, {wxStyledTextCtrl, markerDefineBitmap, 2}}, + {3028, {wxStyledTextCtrl, markerAddSet, 2}}, + {3029, {wxStyledTextCtrl, markerSetAlpha, 2}}, + {3030, {wxStyledTextCtrl, setMarginType, 2}}, + {3031, {wxStyledTextCtrl, getMarginType, 1}}, + {3032, {wxStyledTextCtrl, setMarginWidth, 2}}, + {3033, {wxStyledTextCtrl, getMarginWidth, 1}}, + {3034, {wxStyledTextCtrl, setMarginMask, 2}}, + {3035, {wxStyledTextCtrl, getMarginMask, 1}}, + {3036, {wxStyledTextCtrl, setMarginSensitive, 2}}, + {3037, {wxStyledTextCtrl, getMarginSensitive, 1}}, + {3038, {wxStyledTextCtrl, styleClearAll, 0}}, + {3039, {wxStyledTextCtrl, styleSetForeground, 2}}, + {3040, {wxStyledTextCtrl, styleSetBackground, 2}}, + {3041, {wxStyledTextCtrl, styleSetBold, 2}}, + {3042, {wxStyledTextCtrl, styleSetItalic, 2}}, + {3043, {wxStyledTextCtrl, styleSetSize, 2}}, + {3044, {wxStyledTextCtrl, styleSetFaceName, 2}}, + {3045, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, + {3046, {wxStyledTextCtrl, styleResetDefault, 0}}, + {3047, {wxStyledTextCtrl, styleSetUnderline, 2}}, + {3048, {wxStyledTextCtrl, styleSetCase, 2}}, + {3049, {wxStyledTextCtrl, styleSetHotSpot, 2}}, + {3050, {wxStyledTextCtrl, setSelForeground, 2}}, + {3051, {wxStyledTextCtrl, setSelBackground, 2}}, + {3052, {wxStyledTextCtrl, getSelAlpha, 0}}, + {3053, {wxStyledTextCtrl, setSelAlpha, 1}}, + {3054, {wxStyledTextCtrl, setCaretForeground, 1}}, + {3055, {wxStyledTextCtrl, cmdKeyAssign, 3}}, + {3056, {wxStyledTextCtrl, cmdKeyClear, 2}}, + {3057, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, + {3058, {wxStyledTextCtrl, setStyleBytes, 2}}, + {3059, {wxStyledTextCtrl, styleSetVisible, 2}}, + {3060, {wxStyledTextCtrl, getCaretPeriod, 0}}, + {3061, {wxStyledTextCtrl, setCaretPeriod, 1}}, + {3062, {wxStyledTextCtrl, setWordChars, 1}}, + {3063, {wxStyledTextCtrl, beginUndoAction, 0}}, + {3064, {wxStyledTextCtrl, endUndoAction, 0}}, + {3065, {wxStyledTextCtrl, indicatorSetStyle, 2}}, + {3066, {wxStyledTextCtrl, indicatorGetStyle, 1}}, + {3067, {wxStyledTextCtrl, indicatorSetForeground, 2}}, + {3068, {wxStyledTextCtrl, indicatorGetForeground, 1}}, + {3069, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, + {3070, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, + {3071, {wxStyledTextCtrl, getStyleBits, 0}}, + {3072, {wxStyledTextCtrl, setLineState, 2}}, + {3073, {wxStyledTextCtrl, getLineState, 1}}, + {3074, {wxStyledTextCtrl, getMaxLineState, 0}}, + {3075, {wxStyledTextCtrl, getCaretLineVisible, 0}}, + {3076, {wxStyledTextCtrl, setCaretLineVisible, 1}}, + {3077, {wxStyledTextCtrl, getCaretLineBackground, 0}}, + {3078, {wxStyledTextCtrl, setCaretLineBackground, 1}}, + {3079, {wxStyledTextCtrl, autoCompShow, 2}}, + {3080, {wxStyledTextCtrl, autoCompCancel, 0}}, + {3081, {wxStyledTextCtrl, autoCompActive, 0}}, + {3082, {wxStyledTextCtrl, autoCompPosStart, 0}}, + {3083, {wxStyledTextCtrl, autoCompComplete, 0}}, + {3084, {wxStyledTextCtrl, autoCompStops, 1}}, + {3085, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, + {3086, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, + {3087, {wxStyledTextCtrl, autoCompSelect, 1}}, + {3088, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, + {3089, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, + {3090, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, + {3091, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, + {3092, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, + {3093, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, + {3094, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, + {3095, {wxStyledTextCtrl, userListShow, 2}}, + {3096, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, + {3097, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, + {3098, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, + {3099, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, + {3100, {wxStyledTextCtrl, registerImage, 2}}, + {3101, {wxStyledTextCtrl, clearRegisteredImages, 0}}, + {3102, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, + {3103, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, + {3104, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, + {3105, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, + {3106, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, + {3107, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, + {3108, {wxStyledTextCtrl, setIndent, 1}}, + {3109, {wxStyledTextCtrl, getIndent, 0}}, + {3110, {wxStyledTextCtrl, setUseTabs, 1}}, + {3111, {wxStyledTextCtrl, getUseTabs, 0}}, + {3112, {wxStyledTextCtrl, setLineIndentation, 2}}, + {3113, {wxStyledTextCtrl, getLineIndentation, 1}}, + {3114, {wxStyledTextCtrl, getLineIndentPosition, 1}}, + {3115, {wxStyledTextCtrl, getColumn, 1}}, + {3116, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, + {3117, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, + {3118, {wxStyledTextCtrl, setIndentationGuides, 1}}, + {3119, {wxStyledTextCtrl, getIndentationGuides, 0}}, + {3120, {wxStyledTextCtrl, setHighlightGuide, 1}}, + {3121, {wxStyledTextCtrl, getHighlightGuide, 0}}, + {3122, {wxStyledTextCtrl, getLineEndPosition, 1}}, + {3123, {wxStyledTextCtrl, getCodePage, 0}}, + {3124, {wxStyledTextCtrl, getCaretForeground, 0}}, + {3125, {wxStyledTextCtrl, getReadOnly, 0}}, + {3126, {wxStyledTextCtrl, setCurrentPos, 1}}, + {3127, {wxStyledTextCtrl, setSelectionStart, 1}}, + {3128, {wxStyledTextCtrl, getSelectionStart, 0}}, + {3129, {wxStyledTextCtrl, setSelectionEnd, 1}}, + {3130, {wxStyledTextCtrl, getSelectionEnd, 0}}, + {3131, {wxStyledTextCtrl, setPrintMagnification, 1}}, + {3132, {wxStyledTextCtrl, getPrintMagnification, 0}}, + {3133, {wxStyledTextCtrl, setPrintColourMode, 1}}, + {3134, {wxStyledTextCtrl, getPrintColourMode, 0}}, + {3135, {wxStyledTextCtrl, findText, 4}}, + {3136, {wxStyledTextCtrl, formatRange, 7}}, + {3137, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, + {3138, {wxStyledTextCtrl, getLine, 1}}, + {3139, {wxStyledTextCtrl, getLineCount, 0}}, + {3140, {wxStyledTextCtrl, setMarginLeft, 1}}, + {3141, {wxStyledTextCtrl, getMarginLeft, 0}}, + {3142, {wxStyledTextCtrl, setMarginRight, 1}}, + {3143, {wxStyledTextCtrl, getMarginRight, 0}}, + {3144, {wxStyledTextCtrl, getModify, 0}}, + {3145, {wxStyledTextCtrl, setSelection, 2}}, + {3146, {wxStyledTextCtrl, getSelectedText, 0}}, + {3147, {wxStyledTextCtrl, getTextRange, 2}}, + {3148, {wxStyledTextCtrl, hideSelection, 1}}, + {3149, {wxStyledTextCtrl, lineFromPosition, 1}}, + {3150, {wxStyledTextCtrl, positionFromLine, 1}}, + {3151, {wxStyledTextCtrl, lineScroll, 2}}, + {3152, {wxStyledTextCtrl, ensureCaretVisible, 0}}, + {3153, {wxStyledTextCtrl, replaceSelection, 1}}, + {3154, {wxStyledTextCtrl, setReadOnly, 1}}, + {3155, {wxStyledTextCtrl, canPaste, 0}}, + {3156, {wxStyledTextCtrl, canUndo, 0}}, + {3157, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, + {3158, {wxStyledTextCtrl, undo, 0}}, + {3159, {wxStyledTextCtrl, cut, 0}}, + {3160, {wxStyledTextCtrl, copy, 0}}, + {3161, {wxStyledTextCtrl, paste, 0}}, + {3162, {wxStyledTextCtrl, clear, 0}}, + {3163, {wxStyledTextCtrl, setText, 1}}, + {3164, {wxStyledTextCtrl, getText, 0}}, + {3165, {wxStyledTextCtrl, getTextLength, 0}}, + {3166, {wxStyledTextCtrl, getOvertype, 0}}, + {3167, {wxStyledTextCtrl, setCaretWidth, 1}}, + {3168, {wxStyledTextCtrl, getCaretWidth, 0}}, + {3169, {wxStyledTextCtrl, setTargetStart, 1}}, + {3170, {wxStyledTextCtrl, getTargetStart, 0}}, + {3171, {wxStyledTextCtrl, setTargetEnd, 1}}, + {3172, {wxStyledTextCtrl, getTargetEnd, 0}}, + {3173, {wxStyledTextCtrl, replaceTarget, 1}}, + {3174, {wxStyledTextCtrl, searchInTarget, 1}}, + {3175, {wxStyledTextCtrl, setSearchFlags, 1}}, + {3176, {wxStyledTextCtrl, getSearchFlags, 0}}, + {3177, {wxStyledTextCtrl, callTipShow, 2}}, + {3178, {wxStyledTextCtrl, callTipCancel, 0}}, + {3179, {wxStyledTextCtrl, callTipActive, 0}}, + {3180, {wxStyledTextCtrl, callTipPosAtStart, 0}}, + {3181, {wxStyledTextCtrl, callTipSetHighlight, 2}}, + {3182, {wxStyledTextCtrl, callTipSetBackground, 1}}, + {3183, {wxStyledTextCtrl, callTipSetForeground, 1}}, + {3184, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, + {3185, {wxStyledTextCtrl, callTipUseStyle, 1}}, + {3186, {wxStyledTextCtrl, visibleFromDocLine, 1}}, + {3187, {wxStyledTextCtrl, docLineFromVisible, 1}}, + {3188, {wxStyledTextCtrl, wrapCount, 1}}, + {3189, {wxStyledTextCtrl, setFoldLevel, 2}}, + {3190, {wxStyledTextCtrl, getFoldLevel, 1}}, + {3191, {wxStyledTextCtrl, getLastChild, 2}}, + {3192, {wxStyledTextCtrl, getFoldParent, 1}}, + {3193, {wxStyledTextCtrl, showLines, 2}}, + {3194, {wxStyledTextCtrl, hideLines, 2}}, + {3195, {wxStyledTextCtrl, getLineVisible, 1}}, + {3196, {wxStyledTextCtrl, setFoldExpanded, 2}}, + {3197, {wxStyledTextCtrl, getFoldExpanded, 1}}, + {3198, {wxStyledTextCtrl, toggleFold, 1}}, + {3199, {wxStyledTextCtrl, ensureVisible, 1}}, + {3200, {wxStyledTextCtrl, setFoldFlags, 1}}, + {3201, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, + {3202, {wxStyledTextCtrl, setTabIndents, 1}}, + {3203, {wxStyledTextCtrl, getTabIndents, 0}}, + {3204, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, + {3205, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, + {3206, {wxStyledTextCtrl, setMouseDwellTime, 1}}, + {3207, {wxStyledTextCtrl, getMouseDwellTime, 0}}, + {3208, {wxStyledTextCtrl, wordStartPosition, 2}}, + {3209, {wxStyledTextCtrl, wordEndPosition, 2}}, + {3210, {wxStyledTextCtrl, setWrapMode, 1}}, + {3211, {wxStyledTextCtrl, getWrapMode, 0}}, + {3212, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, + {3213, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, + {3214, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, + {3215, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, + {3216, {wxStyledTextCtrl, setWrapStartIndent, 1}}, + {3217, {wxStyledTextCtrl, getWrapStartIndent, 0}}, + {3218, {wxStyledTextCtrl, setLayoutCache, 1}}, + {3219, {wxStyledTextCtrl, getLayoutCache, 0}}, + {3220, {wxStyledTextCtrl, setScrollWidth, 1}}, + {3221, {wxStyledTextCtrl, getScrollWidth, 0}}, + {3222, {wxStyledTextCtrl, textWidth, 2}}, + {3223, {wxStyledTextCtrl, getEndAtLastLine, 0}}, + {3224, {wxStyledTextCtrl, textHeight, 1}}, + {3225, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, + {3226, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, + {3227, {wxStyledTextCtrl, appendText, 1}}, + {3228, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, + {3229, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, + {3230, {wxStyledTextCtrl, targetFromSelection, 0}}, + {3231, {wxStyledTextCtrl, linesJoin, 0}}, + {3232, {wxStyledTextCtrl, linesSplit, 1}}, + {3233, {wxStyledTextCtrl, setFoldMarginColour, 2}}, + {3234, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, + {3235, {wxStyledTextCtrl, lineDown, 0}}, + {3236, {wxStyledTextCtrl, lineDownExtend, 0}}, + {3237, {wxStyledTextCtrl, lineUp, 0}}, + {3238, {wxStyledTextCtrl, lineUpExtend, 0}}, + {3239, {wxStyledTextCtrl, charLeft, 0}}, + {3240, {wxStyledTextCtrl, charLeftExtend, 0}}, + {3241, {wxStyledTextCtrl, charRight, 0}}, + {3242, {wxStyledTextCtrl, charRightExtend, 0}}, + {3243, {wxStyledTextCtrl, wordLeft, 0}}, + {3244, {wxStyledTextCtrl, wordLeftExtend, 0}}, + {3245, {wxStyledTextCtrl, wordRight, 0}}, + {3246, {wxStyledTextCtrl, wordRightExtend, 0}}, + {3247, {wxStyledTextCtrl, home, 0}}, + {3248, {wxStyledTextCtrl, homeExtend, 0}}, + {3249, {wxStyledTextCtrl, lineEnd, 0}}, + {3250, {wxStyledTextCtrl, lineEndExtend, 0}}, + {3251, {wxStyledTextCtrl, documentStart, 0}}, + {3252, {wxStyledTextCtrl, documentStartExtend, 0}}, + {3253, {wxStyledTextCtrl, documentEnd, 0}}, + {3254, {wxStyledTextCtrl, documentEndExtend, 0}}, + {3255, {wxStyledTextCtrl, pageUp, 0}}, + {3256, {wxStyledTextCtrl, pageUpExtend, 0}}, + {3257, {wxStyledTextCtrl, pageDown, 0}}, + {3258, {wxStyledTextCtrl, pageDownExtend, 0}}, + {3259, {wxStyledTextCtrl, editToggleOvertype, 0}}, + {3260, {wxStyledTextCtrl, cancel, 0}}, + {3261, {wxStyledTextCtrl, deleteBack, 0}}, + {3262, {wxStyledTextCtrl, tab, 0}}, + {3263, {wxStyledTextCtrl, backTab, 0}}, + {3264, {wxStyledTextCtrl, newLine, 0}}, + {3265, {wxStyledTextCtrl, formFeed, 0}}, + {3266, {wxStyledTextCtrl, vCHome, 0}}, + {3267, {wxStyledTextCtrl, vCHomeExtend, 0}}, + {3268, {wxStyledTextCtrl, zoomIn, 0}}, + {3269, {wxStyledTextCtrl, zoomOut, 0}}, + {3270, {wxStyledTextCtrl, delWordLeft, 0}}, + {3271, {wxStyledTextCtrl, delWordRight, 0}}, + {3272, {wxStyledTextCtrl, lineCut, 0}}, + {3273, {wxStyledTextCtrl, lineDelete, 0}}, + {3274, {wxStyledTextCtrl, lineTranspose, 0}}, + {3275, {wxStyledTextCtrl, lineDuplicate, 0}}, + {3276, {wxStyledTextCtrl, lowerCase, 0}}, + {3277, {wxStyledTextCtrl, upperCase, 0}}, + {3278, {wxStyledTextCtrl, lineScrollDown, 0}}, + {3279, {wxStyledTextCtrl, lineScrollUp, 0}}, + {3280, {wxStyledTextCtrl, deleteBackNotLine, 0}}, + {3281, {wxStyledTextCtrl, homeDisplay, 0}}, + {3282, {wxStyledTextCtrl, homeDisplayExtend, 0}}, + {3283, {wxStyledTextCtrl, lineEndDisplay, 0}}, + {3284, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, + {3285, {wxStyledTextCtrl, homeWrapExtend, 0}}, + {3286, {wxStyledTextCtrl, lineEndWrap, 0}}, + {3287, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, + {3288, {wxStyledTextCtrl, vCHomeWrap, 0}}, + {3289, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, + {3290, {wxStyledTextCtrl, lineCopy, 0}}, + {3291, {wxStyledTextCtrl, moveCaretInsideView, 0}}, + {3292, {wxStyledTextCtrl, lineLength, 1}}, + {3293, {wxStyledTextCtrl, braceHighlight, 2}}, + {3294, {wxStyledTextCtrl, braceBadLight, 1}}, + {3295, {wxStyledTextCtrl, braceMatch, 1}}, + {3296, {wxStyledTextCtrl, getViewEOL, 0}}, + {3297, {wxStyledTextCtrl, setViewEOL, 1}}, + {3298, {wxStyledTextCtrl, setModEventMask, 1}}, + {3299, {wxStyledTextCtrl, getEdgeColumn, 0}}, + {3300, {wxStyledTextCtrl, setEdgeColumn, 1}}, + {3301, {wxStyledTextCtrl, setEdgeMode, 1}}, + {3302, {wxStyledTextCtrl, getEdgeMode, 0}}, + {3303, {wxStyledTextCtrl, getEdgeColour, 0}}, + {3304, {wxStyledTextCtrl, setEdgeColour, 1}}, + {3305, {wxStyledTextCtrl, searchAnchor, 0}}, + {3306, {wxStyledTextCtrl, searchNext, 2}}, + {3307, {wxStyledTextCtrl, searchPrev, 2}}, + {3308, {wxStyledTextCtrl, linesOnScreen, 0}}, + {3309, {wxStyledTextCtrl, usePopUp, 1}}, + {3310, {wxStyledTextCtrl, selectionIsRectangle, 0}}, + {3311, {wxStyledTextCtrl, setZoom, 1}}, + {3312, {wxStyledTextCtrl, getZoom, 0}}, + {3313, {wxStyledTextCtrl, getModEventMask, 0}}, + {3314, {wxStyledTextCtrl, setSTCFocus, 1}}, + {3315, {wxStyledTextCtrl, getSTCFocus, 0}}, + {3316, {wxStyledTextCtrl, setStatus, 1}}, + {3317, {wxStyledTextCtrl, getStatus, 0}}, + {3318, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, + {3319, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, + {3320, {wxStyledTextCtrl, setSTCCursor, 1}}, + {3321, {wxStyledTextCtrl, getSTCCursor, 0}}, + {3322, {wxStyledTextCtrl, setControlCharSymbol, 1}}, + {3323, {wxStyledTextCtrl, getControlCharSymbol, 0}}, + {3324, {wxStyledTextCtrl, wordPartLeft, 0}}, + {3325, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, + {3326, {wxStyledTextCtrl, wordPartRight, 0}}, + {3327, {wxStyledTextCtrl, wordPartRightExtend, 0}}, + {3328, {wxStyledTextCtrl, setVisiblePolicy, 2}}, + {3329, {wxStyledTextCtrl, delLineLeft, 0}}, + {3330, {wxStyledTextCtrl, delLineRight, 0}}, + {3331, {wxStyledTextCtrl, getXOffset, 0}}, + {3332, {wxStyledTextCtrl, chooseCaretX, 0}}, + {3333, {wxStyledTextCtrl, setXCaretPolicy, 2}}, + {3334, {wxStyledTextCtrl, setYCaretPolicy, 2}}, + {3335, {wxStyledTextCtrl, getPrintWrapMode, 0}}, + {3336, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, + {3337, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, + {3338, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, + {3339, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, + {3340, {wxStyledTextCtrl, paraDownExtend, 0}}, + {3341, {wxStyledTextCtrl, paraUp, 0}}, + {3342, {wxStyledTextCtrl, paraUpExtend, 0}}, + {3343, {wxStyledTextCtrl, positionBefore, 1}}, + {3344, {wxStyledTextCtrl, positionAfter, 1}}, + {3345, {wxStyledTextCtrl, copyRange, 2}}, + {3346, {wxStyledTextCtrl, copyText, 2}}, + {3347, {wxStyledTextCtrl, setSelectionMode, 1}}, + {3348, {wxStyledTextCtrl, getSelectionMode, 0}}, + {3349, {wxStyledTextCtrl, lineDownRectExtend, 0}}, + {3350, {wxStyledTextCtrl, lineUpRectExtend, 0}}, + {3351, {wxStyledTextCtrl, charLeftRectExtend, 0}}, + {3352, {wxStyledTextCtrl, charRightRectExtend, 0}}, + {3353, {wxStyledTextCtrl, homeRectExtend, 0}}, + {3354, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, + {3355, {wxStyledTextCtrl, lineEndRectExtend, 0}}, + {3356, {wxStyledTextCtrl, pageUpRectExtend, 0}}, + {3357, {wxStyledTextCtrl, pageDownRectExtend, 0}}, + {3358, {wxStyledTextCtrl, stutteredPageUp, 0}}, + {3359, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, + {3360, {wxStyledTextCtrl, stutteredPageDown, 0}}, + {3361, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, + {3362, {wxStyledTextCtrl, wordLeftEnd, 0}}, + {3363, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, + {3364, {wxStyledTextCtrl, wordRightEnd, 0}}, + {3365, {wxStyledTextCtrl, wordRightEndExtend, 0}}, + {3366, {wxStyledTextCtrl, setWhitespaceChars, 1}}, + {3367, {wxStyledTextCtrl, setCharsDefault, 0}}, + {3368, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, + {3369, {wxStyledTextCtrl, allocate, 1}}, + {3370, {wxStyledTextCtrl, findColumn, 2}}, + {3371, {wxStyledTextCtrl, getCaretSticky, 0}}, + {3372, {wxStyledTextCtrl, setCaretSticky, 1}}, + {3373, {wxStyledTextCtrl, toggleCaretSticky, 0}}, + {3374, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, + {3375, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, + {3376, {wxStyledTextCtrl, selectionDuplicate, 0}}, + {3377, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, + {3378, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, + {3379, {wxStyledTextCtrl, startRecord, 0}}, + {3380, {wxStyledTextCtrl, stopRecord, 0}}, + {3381, {wxStyledTextCtrl, setLexer, 1}}, + {3382, {wxStyledTextCtrl, getLexer, 0}}, + {3383, {wxStyledTextCtrl, colourise, 2}}, + {3384, {wxStyledTextCtrl, setProperty, 2}}, + {3385, {wxStyledTextCtrl, setKeyWords, 2}}, + {3386, {wxStyledTextCtrl, setLexerLanguage, 1}}, + {3387, {wxStyledTextCtrl, getProperty, 1}}, + {3388, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, + {3389, {wxStyledTextCtrl, getCurrentLine, 0}}, + {3390, {wxStyledTextCtrl, styleSetSpec, 2}}, + {3391, {wxStyledTextCtrl, styleSetFont, 2}}, + {3392, {wxStyledTextCtrl, styleSetFontAttr, 7}}, + {3393, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, + {3394, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, + {3395, {wxStyledTextCtrl, cmdKeyExecute, 1}}, + {3396, {wxStyledTextCtrl, setMargins, 2}}, + {3397, {wxStyledTextCtrl, getSelection, 2}}, + {3398, {wxStyledTextCtrl, pointFromPosition, 1}}, + {3399, {wxStyledTextCtrl, scrollToLine, 1}}, + {3400, {wxStyledTextCtrl, scrollToColumn, 1}}, + {3401, {wxStyledTextCtrl, setVScrollBar, 1}}, + {3402, {wxStyledTextCtrl, setHScrollBar, 1}}, + {3403, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, + {3404, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, + {3405, {wxStyledTextCtrl, saveFile, 1}}, + {3406, {wxStyledTextCtrl, loadFile, 1}}, + {3407, {wxStyledTextCtrl, doDragOver, 3}}, + {3408, {wxStyledTextCtrl, doDropText, 3}}, + {3409, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, + {3410, {wxStyledTextCtrl, addTextRaw, 1}}, + {3411, {wxStyledTextCtrl, insertTextRaw, 2}}, + {3412, {wxStyledTextCtrl, getCurLineRaw, 1}}, + {3413, {wxStyledTextCtrl, getLineRaw, 1}}, + {3414, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, + {3415, {wxStyledTextCtrl, getTextRangeRaw, 2}}, + {3416, {wxStyledTextCtrl, setTextRaw, 1}}, + {3417, {wxStyledTextCtrl, getTextRaw, 0}}, + {3418, {wxStyledTextCtrl, appendTextRaw, 1}}, + {3419, {wxArtProvider, getBitmap, 2}}, + {3420, {wxArtProvider, getIcon, 2}}, + {3421, {wxTreeEvent, getKeyCode, 0}}, + {3422, {wxTreeEvent, getItem, 0}}, + {3423, {wxTreeEvent, getKeyEvent, 0}}, + {3424, {wxTreeEvent, getLabel, 0}}, + {3425, {wxTreeEvent, getOldItem, 0}}, + {3426, {wxTreeEvent, getPoint, 0}}, + {3427, {wxTreeEvent, isEditCancelled, 0}}, + {3428, {wxTreeEvent, setToolTip, 1}}, + {3429, {wxNotebookEvent, getOldSelection, 0}}, + {3430, {wxNotebookEvent, getSelection, 0}}, + {3431, {wxNotebookEvent, setOldSelection, 1}}, + {3432, {wxNotebookEvent, setSelection, 1}}, + {3433, {wxFileDataObject, new, 0}}, + {3434, {wxFileDataObject, addFile, 1}}, + {3435, {wxFileDataObject, getFilenames, 0}}, + {3436, {wxFileDataObject, 'Destroy', undefined}}, + {3437, {wxTextDataObject, new, 1}}, + {3438, {wxTextDataObject, getTextLength, 0}}, + {3439, {wxTextDataObject, getText, 0}}, + {3440, {wxTextDataObject, setText, 1}}, + {3441, {wxTextDataObject, 'Destroy', undefined}}, + {3442, {wxBitmapDataObject, new_1_1, 1}}, + {3443, {wxBitmapDataObject, new_1_0, 1}}, + {3444, {wxBitmapDataObject, getBitmap, 0}}, + {3445, {wxBitmapDataObject, setBitmap, 1}}, + {3446, {wxBitmapDataObject, 'Destroy', undefined}}, + {3448, {wxClipboard, new, 0}}, + {3449, {wxClipboard, destruct, 0}}, + {3450, {wxClipboard, addData, 1}}, + {3451, {wxClipboard, clear, 0}}, + {3452, {wxClipboard, close, 0}}, + {3453, {wxClipboard, flush, 0}}, + {3454, {wxClipboard, getData, 1}}, + {3455, {wxClipboard, isOpened, 0}}, + {3456, {wxClipboard, open, 0}}, + {3457, {wxClipboard, setData, 1}}, + {3459, {wxClipboard, usePrimarySelection, 1}}, + {3460, {wxClipboard, isSupported, 1}}, + {3461, {wxClipboard, get, 0}}, + {3462, {wxSpinEvent, getPosition, 0}}, + {3463, {wxSpinEvent, setPosition, 1}}, + {3464, {wxSplitterWindow, new_0, 0}}, + {3465, {wxSplitterWindow, new_2, 2}}, + {3466, {wxSplitterWindow, destruct, 0}}, + {3467, {wxSplitterWindow, create, 2}}, + {3468, {wxSplitterWindow, getMinimumPaneSize, 0}}, + {3469, {wxSplitterWindow, getSashGravity, 0}}, + {3470, {wxSplitterWindow, getSashPosition, 0}}, + {3471, {wxSplitterWindow, getSplitMode, 0}}, + {3472, {wxSplitterWindow, getWindow1, 0}}, + {3473, {wxSplitterWindow, getWindow2, 0}}, + {3474, {wxSplitterWindow, initialize, 1}}, + {3475, {wxSplitterWindow, isSplit, 0}}, + {3476, {wxSplitterWindow, replaceWindow, 2}}, + {3477, {wxSplitterWindow, setSashGravity, 1}}, + {3478, {wxSplitterWindow, setSashPosition, 2}}, + {3479, {wxSplitterWindow, setSashSize, 1}}, + {3480, {wxSplitterWindow, setMinimumPaneSize, 1}}, + {3481, {wxSplitterWindow, setSplitMode, 1}}, + {3482, {wxSplitterWindow, splitHorizontally, 3}}, + {3483, {wxSplitterWindow, splitVertically, 3}}, + {3484, {wxSplitterWindow, unsplit, 1}}, + {3485, {wxSplitterWindow, updateSize, 0}}, + {3486, {wxSplitterEvent, getSashPosition, 0}}, + {3487, {wxSplitterEvent, getX, 0}}, + {3488, {wxSplitterEvent, getY, 0}}, + {3489, {wxSplitterEvent, getWindowBeingRemoved, 0}}, + {3490, {wxSplitterEvent, setSashPosition, 1}}, + {3491, {wxHtmlWindow, new_0, 0}}, + {3492, {wxHtmlWindow, new_2, 2}}, + {3493, {wxHtmlWindow, appendToPage, 1}}, + {3494, {wxHtmlWindow, getOpenedAnchor, 0}}, + {3495, {wxHtmlWindow, getOpenedPage, 0}}, + {3496, {wxHtmlWindow, getOpenedPageTitle, 0}}, + {3497, {wxHtmlWindow, getRelatedFrame, 0}}, + {3498, {wxHtmlWindow, historyBack, 0}}, + {3499, {wxHtmlWindow, historyCanBack, 0}}, + {3500, {wxHtmlWindow, historyCanForward, 0}}, + {3501, {wxHtmlWindow, historyClear, 0}}, + {3502, {wxHtmlWindow, historyForward, 0}}, + {3503, {wxHtmlWindow, loadFile, 1}}, + {3504, {wxHtmlWindow, loadPage, 1}}, + {3505, {wxHtmlWindow, selectAll, 0}}, + {3506, {wxHtmlWindow, selectionToText, 0}}, + {3507, {wxHtmlWindow, selectLine, 1}}, + {3508, {wxHtmlWindow, selectWord, 1}}, + {3509, {wxHtmlWindow, setBorders, 1}}, + {3510, {wxHtmlWindow, setFonts, 3}}, + {3511, {wxHtmlWindow, setPage, 1}}, + {3512, {wxHtmlWindow, setRelatedFrame, 2}}, + {3513, {wxHtmlWindow, setRelatedStatusBar, 1}}, + {3514, {wxHtmlWindow, toText, 0}}, + {3515, {wxHtmlWindow, 'Destroy', undefined}}, + {3516, {wxHtmlLinkEvent, getLinkInfo, 0}}, + {3517, {wxSystemSettings, getColour, 1}}, + {3518, {wxSystemSettings, getFont, 1}}, + {3519, {wxSystemSettings, getMetric, 2}}, + {3520, {wxSystemSettings, getScreenType, 0}}, + {3521, {wxSystemOptions, getOption, 1}}, + {3522, {wxSystemOptions, getOptionInt, 1}}, + {3523, {wxSystemOptions, hasOption, 1}}, + {3524, {wxSystemOptions, isFalse, 1}}, + {3525, {wxSystemOptions, setOption_2_1, 2}}, + {3526, {wxSystemOptions, setOption_2_0, 2}}, + {3527, {wxAuiNotebookEvent, setSelection, 1}}, + {3528, {wxAuiNotebookEvent, getSelection, 0}}, + {3529, {wxAuiNotebookEvent, setOldSelection, 1}}, + {3530, {wxAuiNotebookEvent, getOldSelection, 0}}, + {3531, {wxAuiNotebookEvent, setDragSource, 1}}, + {3532, {wxAuiNotebookEvent, getDragSource, 0}}, + {3533, {wxAuiManagerEvent, setManager, 1}}, + {3534, {wxAuiManagerEvent, getManager, 0}}, + {3535, {wxAuiManagerEvent, setPane, 1}}, + {3536, {wxAuiManagerEvent, getPane, 0}}, + {3537, {wxAuiManagerEvent, setButton, 1}}, + {3538, {wxAuiManagerEvent, getButton, 0}}, + {3539, {wxAuiManagerEvent, setDC, 1}}, + {3540, {wxAuiManagerEvent, getDC, 0}}, + {3541, {wxAuiManagerEvent, veto, 1}}, + {3542, {wxAuiManagerEvent, getVeto, 0}}, + {3543, {wxAuiManagerEvent, setCanVeto, 1}}, + {3544, {wxAuiManagerEvent, canVeto, 0}}, + {3545, {wxLogNull, new, 0}}, + {3546, {wxLogNull, 'Destroy', undefined}}, + {3547, {wxTaskBarIcon, new, 0}}, + {3548, {wxTaskBarIcon, destruct, 0}}, + {3549, {wxTaskBarIcon, popupMenu, 1}}, + {3550, {wxTaskBarIcon, removeIcon, 0}}, + {3551, {wxTaskBarIcon, setIcon, 2}}, + {3552, {wxLocale, new_0, 0}}, + {3554, {wxLocale, new_2, 2}}, + {3555, {wxLocale, destruct, 0}}, + {3557, {wxLocale, init, 1}}, + {3558, {wxLocale, addCatalog_1, 1}}, + {3559, {wxLocale, addCatalog_3, 3}}, + {3560, {wxLocale, addCatalogLookupPathPrefix, 1}}, + {3561, {wxLocale, getCanonicalName, 0}}, + {3562, {wxLocale, getLanguage, 0}}, + {3563, {wxLocale, getLanguageName, 1}}, + {3564, {wxLocale, getLocale, 0}}, + {3565, {wxLocale, getName, 0}}, + {3566, {wxLocale, getString_2, 2}}, + {3567, {wxLocale, getString_4, 4}}, + {3568, {wxLocale, getHeaderValue, 2}}, + {3569, {wxLocale, getSysName, 0}}, + {3570, {wxLocale, getSystemEncoding, 0}}, + {3571, {wxLocale, getSystemEncodingName, 0}}, + {3572, {wxLocale, getSystemLanguage, 0}}, + {3573, {wxLocale, isLoaded, 1}}, + {3574, {wxLocale, isOk, 0}}, + {3575, {wxActivateEvent, getActive, 0}}, + {3577, {wxPopupWindow, new_2, 2}}, + {3578, {wxPopupWindow, new_0, 0}}, + {3580, {wxPopupWindow, destruct, 0}}, + {3581, {wxPopupWindow, create, 2}}, + {3582, {wxPopupWindow, position, 2}}, + {3583, {wxPopupTransientWindow, new_0, 0}}, + {3584, {wxPopupTransientWindow, new_2, 2}}, + {3585, {wxPopupTransientWindow, destruct, 0}}, + {3586, {wxPopupTransientWindow, popup, 1}}, + {3587, {wxPopupTransientWindow, dismiss, 0}}, + {3588, {wxOverlay, new, 0}}, + {3589, {wxOverlay, destruct, 0}}, + {3590, {wxOverlay, reset, 0}}, + {3591, {wxDCOverlay, new_6, 6}}, + {3592, {wxDCOverlay, new_2, 2}}, + {3593, {wxDCOverlay, destruct, 0}}, + {3594, {wxDCOverlay, clear, 0}}, {-1, {mod, func, -1}} ]. diff --git a/lib/wx/src/gen/wxe_funcs.hrl b/lib/wx/src/gen/wxe_funcs.hrl index 3a34cd494d..35688f3869 100644 --- a/lib/wx/src/gen/wxe_funcs.hrl +++ b/lib/wx/src/gen/wxe_funcs.hrl @@ -860,2510 +860,2512 @@ -define(wxToolBar_AddTool_6, 981). -define(wxToolBar_AddCheckTool, 982). -define(wxToolBar_AddRadioTool, 983). --define(wxToolBar_DeleteTool, 984). --define(wxToolBar_DeleteToolByPos, 985). --define(wxToolBar_EnableTool, 986). --define(wxToolBar_FindById, 987). --define(wxToolBar_FindControl, 988). --define(wxToolBar_FindToolForPosition, 989). --define(wxToolBar_GetToolSize, 990). --define(wxToolBar_GetToolBitmapSize, 991). --define(wxToolBar_GetMargins, 992). --define(wxToolBar_GetToolEnabled, 993). --define(wxToolBar_GetToolLongHelp, 994). --define(wxToolBar_GetToolPacking, 995). --define(wxToolBar_GetToolPos, 996). --define(wxToolBar_GetToolSeparation, 997). --define(wxToolBar_GetToolShortHelp, 998). --define(wxToolBar_GetToolState, 999). --define(wxToolBar_InsertControl, 1000). --define(wxToolBar_InsertSeparator, 1001). --define(wxToolBar_InsertTool_5, 1002). --define(wxToolBar_InsertTool_2, 1003). --define(wxToolBar_InsertTool_4, 1004). --define(wxToolBar_Realize, 1005). --define(wxToolBar_RemoveTool, 1006). --define(wxToolBar_SetMargins, 1007). --define(wxToolBar_SetToolBitmapSize, 1008). --define(wxToolBar_SetToolLongHelp, 1009). --define(wxToolBar_SetToolPacking, 1010). --define(wxToolBar_SetToolShortHelp, 1011). --define(wxToolBar_SetToolSeparation, 1012). --define(wxToolBar_ToggleTool, 1013). --define(wxStatusBar_new_0, 1015). --define(wxStatusBar_new_2, 1016). --define(wxStatusBar_destruct, 1018). --define(wxStatusBar_Create, 1019). --define(wxStatusBar_GetFieldRect, 1020). --define(wxStatusBar_GetFieldsCount, 1021). --define(wxStatusBar_GetStatusText, 1022). --define(wxStatusBar_PopStatusText, 1023). --define(wxStatusBar_PushStatusText, 1024). --define(wxStatusBar_SetFieldsCount, 1025). --define(wxStatusBar_SetMinHeight, 1026). --define(wxStatusBar_SetStatusText, 1027). --define(wxStatusBar_SetStatusWidths, 1028). --define(wxStatusBar_SetStatusStyles, 1029). --define(wxBitmap_new_0, 1030). --define(wxBitmap_new_3, 1031). --define(wxBitmap_new_4, 1032). --define(wxBitmap_new_2_0, 1033). --define(wxBitmap_new_2_1, 1034). --define(wxBitmap_destruct, 1035). --define(wxBitmap_ConvertToImage, 1036). --define(wxBitmap_CopyFromIcon, 1037). --define(wxBitmap_Create, 1038). --define(wxBitmap_GetDepth, 1039). --define(wxBitmap_GetHeight, 1040). --define(wxBitmap_GetPalette, 1041). --define(wxBitmap_GetMask, 1042). --define(wxBitmap_GetWidth, 1043). --define(wxBitmap_GetSubBitmap, 1044). --define(wxBitmap_LoadFile, 1045). --define(wxBitmap_Ok, 1046). --define(wxBitmap_SaveFile, 1047). --define(wxBitmap_SetDepth, 1048). --define(wxBitmap_SetHeight, 1049). --define(wxBitmap_SetMask, 1050). --define(wxBitmap_SetPalette, 1051). --define(wxBitmap_SetWidth, 1052). --define(wxIcon_new_0, 1053). --define(wxIcon_new_2, 1054). --define(wxIcon_new_1, 1055). --define(wxIcon_CopyFromBitmap, 1056). --define(wxIcon_destroy, 1057). --define(wxIconBundle_new_0, 1058). --define(wxIconBundle_new_2, 1059). --define(wxIconBundle_new_1_0, 1060). --define(wxIconBundle_new_1_1, 1061). --define(wxIconBundle_destruct, 1062). --define(wxIconBundle_AddIcon_2, 1063). --define(wxIconBundle_AddIcon_1, 1064). --define(wxIconBundle_GetIcon_1_1, 1065). --define(wxIconBundle_GetIcon_1_0, 1066). --define(wxCursor_new_0, 1067). --define(wxCursor_new_1_0, 1068). --define(wxCursor_new_1_1, 1069). --define(wxCursor_new_4, 1070). --define(wxCursor_destruct, 1071). --define(wxCursor_Ok, 1072). --define(wxMask_new_0, 1073). --define(wxMask_new_2_1, 1074). --define(wxMask_new_2_0, 1075). --define(wxMask_new_1, 1076). --define(wxMask_destruct, 1077). --define(wxMask_Create_2_1, 1078). --define(wxMask_Create_2_0, 1079). --define(wxMask_Create_1, 1080). --define(wxImage_new_0, 1081). --define(wxImage_new_3_0, 1082). --define(wxImage_new_4, 1083). --define(wxImage_new_5, 1084). --define(wxImage_new_2, 1085). --define(wxImage_new_3_1, 1086). --define(wxImage_Blur, 1087). --define(wxImage_BlurHorizontal, 1088). --define(wxImage_BlurVertical, 1089). --define(wxImage_ConvertAlphaToMask, 1090). --define(wxImage_ConvertToGreyscale, 1091). --define(wxImage_ConvertToMono, 1092). --define(wxImage_Copy, 1093). --define(wxImage_Create_3, 1094). --define(wxImage_Create_4, 1095). --define(wxImage_Create_5, 1096). --define(wxImage_Destroy, 1097). --define(wxImage_FindFirstUnusedColour, 1098). --define(wxImage_GetImageExtWildcard, 1099). --define(wxImage_GetAlpha_2, 1100). --define(wxImage_GetAlpha_0, 1101). --define(wxImage_GetBlue, 1102). --define(wxImage_GetData, 1103). --define(wxImage_GetGreen, 1104). --define(wxImage_GetImageCount, 1105). --define(wxImage_GetHeight, 1106). --define(wxImage_GetMaskBlue, 1107). --define(wxImage_GetMaskGreen, 1108). --define(wxImage_GetMaskRed, 1109). --define(wxImage_GetOrFindMaskColour, 1110). --define(wxImage_GetPalette, 1111). --define(wxImage_GetRed, 1112). --define(wxImage_GetSubImage, 1113). --define(wxImage_GetWidth, 1114). --define(wxImage_HasAlpha, 1115). --define(wxImage_HasMask, 1116). --define(wxImage_GetOption, 1117). --define(wxImage_GetOptionInt, 1118). --define(wxImage_HasOption, 1119). --define(wxImage_InitAlpha, 1120). --define(wxImage_InitStandardHandlers, 1121). --define(wxImage_IsTransparent, 1122). --define(wxImage_LoadFile_2, 1123). --define(wxImage_LoadFile_3, 1124). --define(wxImage_Ok, 1125). --define(wxImage_RemoveHandler, 1126). --define(wxImage_Mirror, 1127). --define(wxImage_Replace, 1128). --define(wxImage_Rescale, 1129). --define(wxImage_Resize, 1130). --define(wxImage_Rotate, 1131). --define(wxImage_RotateHue, 1132). --define(wxImage_Rotate90, 1133). --define(wxImage_SaveFile_1, 1134). --define(wxImage_SaveFile_2_0, 1135). --define(wxImage_SaveFile_2_1, 1136). --define(wxImage_Scale, 1137). --define(wxImage_Size, 1138). --define(wxImage_SetAlpha_3, 1139). --define(wxImage_SetAlpha_2, 1140). --define(wxImage_SetData_2, 1141). --define(wxImage_SetData_4, 1142). --define(wxImage_SetMask, 1143). --define(wxImage_SetMaskColour, 1144). --define(wxImage_SetMaskFromImage, 1145). --define(wxImage_SetOption_2_1, 1146). --define(wxImage_SetOption_2_0, 1147). --define(wxImage_SetPalette, 1148). --define(wxImage_SetRGB_5, 1149). --define(wxImage_SetRGB_4, 1150). --define(wxImage_destroy, 1151). --define(wxBrush_new_0, 1152). --define(wxBrush_new_2, 1153). --define(wxBrush_new_1, 1154). --define(wxBrush_destruct, 1156). --define(wxBrush_GetColour, 1157). --define(wxBrush_GetStipple, 1158). --define(wxBrush_GetStyle, 1159). --define(wxBrush_IsHatch, 1160). --define(wxBrush_IsOk, 1161). --define(wxBrush_SetColour_1, 1162). --define(wxBrush_SetColour_3, 1163). --define(wxBrush_SetStipple, 1164). --define(wxBrush_SetStyle, 1165). --define(wxPen_new_0, 1166). --define(wxPen_new_2, 1167). --define(wxPen_destruct, 1168). --define(wxPen_GetCap, 1169). --define(wxPen_GetColour, 1170). --define(wxPen_GetJoin, 1171). --define(wxPen_GetStyle, 1172). --define(wxPen_GetWidth, 1173). --define(wxPen_IsOk, 1174). --define(wxPen_SetCap, 1175). --define(wxPen_SetColour_1, 1176). --define(wxPen_SetColour_3, 1177). --define(wxPen_SetJoin, 1178). --define(wxPen_SetStyle, 1179). --define(wxPen_SetWidth, 1180). --define(wxRegion_new_0, 1181). --define(wxRegion_new_4, 1182). --define(wxRegion_new_2, 1183). --define(wxRegion_new_1_1, 1184). --define(wxRegion_new_1_0, 1186). --define(wxRegion_destruct, 1188). --define(wxRegion_Clear, 1189). --define(wxRegion_Contains_2, 1190). --define(wxRegion_Contains_1_0, 1191). --define(wxRegion_Contains_4, 1192). --define(wxRegion_Contains_1_1, 1193). --define(wxRegion_ConvertToBitmap, 1194). --define(wxRegion_GetBox, 1195). --define(wxRegion_Intersect_4, 1196). --define(wxRegion_Intersect_1_1, 1197). --define(wxRegion_Intersect_1_0, 1198). --define(wxRegion_IsEmpty, 1199). --define(wxRegion_Subtract_4, 1200). --define(wxRegion_Subtract_1_1, 1201). --define(wxRegion_Subtract_1_0, 1202). --define(wxRegion_Offset_2, 1203). --define(wxRegion_Offset_1, 1204). --define(wxRegion_Union_4, 1205). --define(wxRegion_Union_1_2, 1206). --define(wxRegion_Union_1_1, 1207). --define(wxRegion_Union_1_0, 1208). --define(wxRegion_Union_3, 1209). --define(wxRegion_Xor_4, 1210). --define(wxRegion_Xor_1_1, 1211). --define(wxRegion_Xor_1_0, 1212). --define(wxAcceleratorTable_new_0, 1213). --define(wxAcceleratorTable_new_2, 1214). --define(wxAcceleratorTable_destruct, 1215). --define(wxAcceleratorTable_Ok, 1216). --define(wxAcceleratorEntry_new_1_0, 1217). --define(wxAcceleratorEntry_new_1_1, 1218). --define(wxAcceleratorEntry_GetCommand, 1219). --define(wxAcceleratorEntry_GetFlags, 1220). --define(wxAcceleratorEntry_GetKeyCode, 1221). --define(wxAcceleratorEntry_Set, 1222). --define(wxAcceleratorEntry_destroy, 1223). --define(wxCaret_new_3, 1228). --define(wxCaret_new_2, 1229). --define(wxCaret_destruct, 1231). --define(wxCaret_Create_3, 1232). --define(wxCaret_Create_2, 1233). --define(wxCaret_GetBlinkTime, 1234). --define(wxCaret_GetPosition, 1236). --define(wxCaret_GetSize, 1238). --define(wxCaret_GetWindow, 1239). --define(wxCaret_Hide, 1240). --define(wxCaret_IsOk, 1241). --define(wxCaret_IsVisible, 1242). --define(wxCaret_Move_2, 1243). --define(wxCaret_Move_1, 1244). --define(wxCaret_SetBlinkTime, 1245). --define(wxCaret_SetSize_2, 1246). --define(wxCaret_SetSize_1, 1247). --define(wxCaret_Show, 1248). --define(wxSizer_Add_2_1, 1249). --define(wxSizer_Add_2_0, 1250). --define(wxSizer_Add_3, 1251). --define(wxSizer_Add_2_3, 1252). --define(wxSizer_Add_2_2, 1253). --define(wxSizer_AddSpacer, 1254). --define(wxSizer_AddStretchSpacer, 1255). --define(wxSizer_CalcMin, 1256). --define(wxSizer_Clear, 1257). --define(wxSizer_Detach_1_2, 1258). --define(wxSizer_Detach_1_1, 1259). --define(wxSizer_Detach_1_0, 1260). --define(wxSizer_Fit, 1261). --define(wxSizer_FitInside, 1262). --define(wxSizer_GetChildren, 1263). --define(wxSizer_GetItem_2_1, 1264). --define(wxSizer_GetItem_2_0, 1265). --define(wxSizer_GetItem_1, 1266). --define(wxSizer_GetSize, 1267). --define(wxSizer_GetPosition, 1268). --define(wxSizer_GetMinSize, 1269). --define(wxSizer_Hide_2_0, 1270). --define(wxSizer_Hide_2_1, 1271). --define(wxSizer_Hide_1, 1272). --define(wxSizer_Insert_3_1, 1273). --define(wxSizer_Insert_3_0, 1274). --define(wxSizer_Insert_4, 1275). --define(wxSizer_Insert_3_3, 1276). --define(wxSizer_Insert_3_2, 1277). --define(wxSizer_Insert_2, 1278). --define(wxSizer_InsertSpacer, 1279). --define(wxSizer_InsertStretchSpacer, 1280). --define(wxSizer_IsShown_1_2, 1281). --define(wxSizer_IsShown_1_1, 1282). --define(wxSizer_IsShown_1_0, 1283). --define(wxSizer_Layout, 1284). --define(wxSizer_Prepend_2_1, 1285). --define(wxSizer_Prepend_2_0, 1286). --define(wxSizer_Prepend_3, 1287). --define(wxSizer_Prepend_2_3, 1288). --define(wxSizer_Prepend_2_2, 1289). --define(wxSizer_Prepend_1, 1290). --define(wxSizer_PrependSpacer, 1291). --define(wxSizer_PrependStretchSpacer, 1292). --define(wxSizer_RecalcSizes, 1293). --define(wxSizer_Remove_1_1, 1294). --define(wxSizer_Remove_1_0, 1295). --define(wxSizer_Replace_3_1, 1296). --define(wxSizer_Replace_3_0, 1297). --define(wxSizer_Replace_2, 1298). --define(wxSizer_SetDimension, 1299). --define(wxSizer_SetMinSize_2, 1300). --define(wxSizer_SetMinSize_1, 1301). --define(wxSizer_SetItemMinSize_3_2, 1302). --define(wxSizer_SetItemMinSize_2_2, 1303). --define(wxSizer_SetItemMinSize_3_1, 1304). --define(wxSizer_SetItemMinSize_2_1, 1305). --define(wxSizer_SetItemMinSize_3_0, 1306). --define(wxSizer_SetItemMinSize_2_0, 1307). --define(wxSizer_SetSizeHints, 1308). --define(wxSizer_SetVirtualSizeHints, 1309). --define(wxSizer_Show_2_2, 1310). --define(wxSizer_Show_2_1, 1311). --define(wxSizer_Show_2_0, 1312). --define(wxSizer_Show_1, 1313). --define(wxSizerFlags_new, 1314). --define(wxSizerFlags_Align, 1315). --define(wxSizerFlags_Border_2, 1316). --define(wxSizerFlags_Border_1, 1317). --define(wxSizerFlags_Center, 1318). --define(wxSizerFlags_Centre, 1319). --define(wxSizerFlags_Expand, 1320). --define(wxSizerFlags_Left, 1321). --define(wxSizerFlags_Proportion, 1322). --define(wxSizerFlags_Right, 1323). --define(wxSizerFlags_destroy, 1324). --define(wxSizerItem_new_5_1, 1325). --define(wxSizerItem_new_2_1, 1326). --define(wxSizerItem_new_5_0, 1327). --define(wxSizerItem_new_2_0, 1328). --define(wxSizerItem_new_6, 1329). --define(wxSizerItem_new_3, 1330). --define(wxSizerItem_new_0, 1331). --define(wxSizerItem_destruct, 1332). --define(wxSizerItem_CalcMin, 1333). --define(wxSizerItem_DeleteWindows, 1334). --define(wxSizerItem_DetachSizer, 1335). --define(wxSizerItem_GetBorder, 1336). --define(wxSizerItem_GetFlag, 1337). --define(wxSizerItem_GetMinSize, 1338). --define(wxSizerItem_GetPosition, 1339). --define(wxSizerItem_GetProportion, 1340). --define(wxSizerItem_GetRatio, 1341). --define(wxSizerItem_GetRect, 1342). --define(wxSizerItem_GetSize, 1343). --define(wxSizerItem_GetSizer, 1344). --define(wxSizerItem_GetSpacer, 1345). --define(wxSizerItem_GetUserData, 1346). --define(wxSizerItem_GetWindow, 1347). --define(wxSizerItem_IsSizer, 1348). --define(wxSizerItem_IsShown, 1349). --define(wxSizerItem_IsSpacer, 1350). --define(wxSizerItem_IsWindow, 1351). --define(wxSizerItem_SetBorder, 1352). --define(wxSizerItem_SetDimension, 1353). --define(wxSizerItem_SetFlag, 1354). --define(wxSizerItem_SetInitSize, 1355). --define(wxSizerItem_SetMinSize_1, 1356). --define(wxSizerItem_SetMinSize_2, 1357). --define(wxSizerItem_SetProportion, 1358). --define(wxSizerItem_SetRatio_2, 1359). --define(wxSizerItem_SetRatio_1_1, 1360). --define(wxSizerItem_SetRatio_1_0, 1361). --define(wxSizerItem_SetSizer, 1362). --define(wxSizerItem_SetSpacer_1, 1363). --define(wxSizerItem_SetSpacer_2, 1364). --define(wxSizerItem_SetWindow, 1365). --define(wxSizerItem_Show, 1366). --define(wxBoxSizer_new, 1367). --define(wxBoxSizer_GetOrientation, 1368). --define(wxBoxSizer_destroy, 1369). --define(wxStaticBoxSizer_new_2, 1370). --define(wxStaticBoxSizer_new_3, 1371). --define(wxStaticBoxSizer_GetStaticBox, 1372). --define(wxStaticBoxSizer_destroy, 1373). --define(wxGridSizer_new_4, 1374). --define(wxGridSizer_new_2, 1375). --define(wxGridSizer_GetCols, 1376). --define(wxGridSizer_GetHGap, 1377). --define(wxGridSizer_GetRows, 1378). --define(wxGridSizer_GetVGap, 1379). --define(wxGridSizer_SetCols, 1380). --define(wxGridSizer_SetHGap, 1381). --define(wxGridSizer_SetRows, 1382). --define(wxGridSizer_SetVGap, 1383). --define(wxGridSizer_destroy, 1384). --define(wxFlexGridSizer_new_4, 1385). --define(wxFlexGridSizer_new_2, 1386). --define(wxFlexGridSizer_AddGrowableCol, 1387). --define(wxFlexGridSizer_AddGrowableRow, 1388). --define(wxFlexGridSizer_GetFlexibleDirection, 1389). --define(wxFlexGridSizer_GetNonFlexibleGrowMode, 1390). --define(wxFlexGridSizer_RemoveGrowableCol, 1391). --define(wxFlexGridSizer_RemoveGrowableRow, 1392). --define(wxFlexGridSizer_SetFlexibleDirection, 1393). --define(wxFlexGridSizer_SetNonFlexibleGrowMode, 1394). --define(wxFlexGridSizer_destroy, 1395). --define(wxGridBagSizer_new, 1396). --define(wxGridBagSizer_Add_3_2, 1397). --define(wxGridBagSizer_Add_3_1, 1398). --define(wxGridBagSizer_Add_4, 1399). --define(wxGridBagSizer_Add_1_0, 1400). --define(wxGridBagSizer_Add_2_1, 1401). --define(wxGridBagSizer_Add_2_0, 1402). --define(wxGridBagSizer_Add_3_0, 1403). --define(wxGridBagSizer_Add_1_1, 1404). --define(wxGridBagSizer_CalcMin, 1405). --define(wxGridBagSizer_CheckForIntersection_2, 1406). --define(wxGridBagSizer_CheckForIntersection_3, 1407). --define(wxGridBagSizer_FindItem_1_1, 1408). --define(wxGridBagSizer_FindItem_1_0, 1409). --define(wxGridBagSizer_FindItemAtPoint, 1410). --define(wxGridBagSizer_FindItemAtPosition, 1411). --define(wxGridBagSizer_FindItemWithData, 1412). --define(wxGridBagSizer_GetCellSize, 1413). --define(wxGridBagSizer_GetEmptyCellSize, 1414). --define(wxGridBagSizer_GetItemPosition_1_2, 1415). --define(wxGridBagSizer_GetItemPosition_1_1, 1416). --define(wxGridBagSizer_GetItemPosition_1_0, 1417). --define(wxGridBagSizer_GetItemSpan_1_2, 1418). --define(wxGridBagSizer_GetItemSpan_1_1, 1419). --define(wxGridBagSizer_GetItemSpan_1_0, 1420). --define(wxGridBagSizer_SetEmptyCellSize, 1421). --define(wxGridBagSizer_SetItemPosition_2_2, 1422). --define(wxGridBagSizer_SetItemPosition_2_1, 1423). --define(wxGridBagSizer_SetItemPosition_2_0, 1424). --define(wxGridBagSizer_SetItemSpan_2_2, 1425). --define(wxGridBagSizer_SetItemSpan_2_1, 1426). --define(wxGridBagSizer_SetItemSpan_2_0, 1427). --define(wxGridBagSizer_destroy, 1428). --define(wxStdDialogButtonSizer_new, 1429). --define(wxStdDialogButtonSizer_AddButton, 1430). --define(wxStdDialogButtonSizer_Realize, 1431). --define(wxStdDialogButtonSizer_SetAffirmativeButton, 1432). --define(wxStdDialogButtonSizer_SetCancelButton, 1433). --define(wxStdDialogButtonSizer_SetNegativeButton, 1434). --define(wxStdDialogButtonSizer_destroy, 1435). --define(wxFont_new_0, 1436). --define(wxFont_new_1, 1437). --define(wxFont_new_5, 1438). --define(wxFont_destruct, 1440). --define(wxFont_IsFixedWidth, 1441). --define(wxFont_GetDefaultEncoding, 1442). --define(wxFont_GetFaceName, 1443). --define(wxFont_GetFamily, 1444). --define(wxFont_GetNativeFontInfoDesc, 1445). --define(wxFont_GetNativeFontInfoUserDesc, 1446). --define(wxFont_GetPointSize, 1447). --define(wxFont_GetStyle, 1448). --define(wxFont_GetUnderlined, 1449). --define(wxFont_GetWeight, 1450). --define(wxFont_Ok, 1451). --define(wxFont_SetDefaultEncoding, 1452). --define(wxFont_SetFaceName, 1453). --define(wxFont_SetFamily, 1454). --define(wxFont_SetPointSize, 1455). --define(wxFont_SetStyle, 1456). --define(wxFont_SetUnderlined, 1457). --define(wxFont_SetWeight, 1458). --define(wxToolTip_Enable, 1459). --define(wxToolTip_SetDelay, 1460). --define(wxToolTip_new, 1461). --define(wxToolTip_SetTip, 1462). --define(wxToolTip_GetTip, 1463). --define(wxToolTip_GetWindow, 1464). --define(wxToolTip_destroy, 1465). --define(wxButton_new_3, 1467). --define(wxButton_new_0, 1468). --define(wxButton_destruct, 1469). --define(wxButton_Create, 1470). --define(wxButton_GetDefaultSize, 1471). --define(wxButton_SetDefault, 1472). --define(wxButton_SetLabel, 1473). --define(wxBitmapButton_new_4, 1475). --define(wxBitmapButton_new_0, 1476). --define(wxBitmapButton_Create, 1477). --define(wxBitmapButton_GetBitmapDisabled, 1478). --define(wxBitmapButton_GetBitmapFocus, 1480). --define(wxBitmapButton_GetBitmapLabel, 1482). --define(wxBitmapButton_GetBitmapSelected, 1484). --define(wxBitmapButton_SetBitmapDisabled, 1486). --define(wxBitmapButton_SetBitmapFocus, 1487). --define(wxBitmapButton_SetBitmapLabel, 1488). --define(wxBitmapButton_SetBitmapSelected, 1489). --define(wxBitmapButton_destroy, 1490). --define(wxToggleButton_new_0, 1491). --define(wxToggleButton_new_4, 1492). --define(wxToggleButton_Create, 1493). --define(wxToggleButton_GetValue, 1494). --define(wxToggleButton_SetValue, 1495). --define(wxToggleButton_destroy, 1496). --define(wxCalendarCtrl_new_0, 1497). --define(wxCalendarCtrl_new_3, 1498). --define(wxCalendarCtrl_Create, 1499). --define(wxCalendarCtrl_destruct, 1500). --define(wxCalendarCtrl_SetDate, 1501). --define(wxCalendarCtrl_GetDate, 1502). --define(wxCalendarCtrl_EnableYearChange, 1503). --define(wxCalendarCtrl_EnableMonthChange, 1504). --define(wxCalendarCtrl_EnableHolidayDisplay, 1505). --define(wxCalendarCtrl_SetHeaderColours, 1506). --define(wxCalendarCtrl_GetHeaderColourFg, 1507). --define(wxCalendarCtrl_GetHeaderColourBg, 1508). --define(wxCalendarCtrl_SetHighlightColours, 1509). --define(wxCalendarCtrl_GetHighlightColourFg, 1510). --define(wxCalendarCtrl_GetHighlightColourBg, 1511). --define(wxCalendarCtrl_SetHolidayColours, 1512). --define(wxCalendarCtrl_GetHolidayColourFg, 1513). --define(wxCalendarCtrl_GetHolidayColourBg, 1514). --define(wxCalendarCtrl_GetAttr, 1515). --define(wxCalendarCtrl_SetAttr, 1516). --define(wxCalendarCtrl_SetHoliday, 1517). --define(wxCalendarCtrl_ResetAttr, 1518). --define(wxCalendarCtrl_HitTest, 1519). --define(wxCalendarDateAttr_new_0, 1520). --define(wxCalendarDateAttr_new_2_1, 1521). --define(wxCalendarDateAttr_new_2_0, 1522). --define(wxCalendarDateAttr_SetTextColour, 1523). --define(wxCalendarDateAttr_SetBackgroundColour, 1524). --define(wxCalendarDateAttr_SetBorderColour, 1525). --define(wxCalendarDateAttr_SetFont, 1526). --define(wxCalendarDateAttr_SetBorder, 1527). --define(wxCalendarDateAttr_SetHoliday, 1528). --define(wxCalendarDateAttr_HasTextColour, 1529). --define(wxCalendarDateAttr_HasBackgroundColour, 1530). --define(wxCalendarDateAttr_HasBorderColour, 1531). --define(wxCalendarDateAttr_HasFont, 1532). --define(wxCalendarDateAttr_HasBorder, 1533). --define(wxCalendarDateAttr_IsHoliday, 1534). --define(wxCalendarDateAttr_GetTextColour, 1535). --define(wxCalendarDateAttr_GetBackgroundColour, 1536). --define(wxCalendarDateAttr_GetBorderColour, 1537). --define(wxCalendarDateAttr_GetFont, 1538). --define(wxCalendarDateAttr_GetBorder, 1539). --define(wxCalendarDateAttr_destroy, 1540). --define(wxCheckBox_new_4, 1542). --define(wxCheckBox_new_0, 1543). --define(wxCheckBox_Create, 1544). --define(wxCheckBox_GetValue, 1545). --define(wxCheckBox_Get3StateValue, 1546). --define(wxCheckBox_Is3rdStateAllowedForUser, 1547). --define(wxCheckBox_Is3State, 1548). --define(wxCheckBox_IsChecked, 1549). --define(wxCheckBox_SetValue, 1550). --define(wxCheckBox_Set3StateValue, 1551). --define(wxCheckBox_destroy, 1552). --define(wxCheckListBox_new_0, 1553). --define(wxCheckListBox_new_3, 1555). --define(wxCheckListBox_Check, 1556). --define(wxCheckListBox_IsChecked, 1557). --define(wxCheckListBox_destroy, 1558). --define(wxChoice_new_3, 1561). --define(wxChoice_new_0, 1562). --define(wxChoice_destruct, 1564). --define(wxChoice_Create, 1566). --define(wxChoice_Delete, 1567). --define(wxChoice_GetColumns, 1568). --define(wxChoice_SetColumns, 1569). --define(wxComboBox_new_0, 1570). --define(wxComboBox_new_3, 1572). --define(wxComboBox_destruct, 1573). --define(wxComboBox_Create, 1575). --define(wxComboBox_CanCopy, 1576). --define(wxComboBox_CanCut, 1577). --define(wxComboBox_CanPaste, 1578). --define(wxComboBox_CanRedo, 1579). --define(wxComboBox_CanUndo, 1580). --define(wxComboBox_Copy, 1581). --define(wxComboBox_Cut, 1582). --define(wxComboBox_GetInsertionPoint, 1583). --define(wxComboBox_GetLastPosition, 1584). --define(wxComboBox_GetValue, 1585). --define(wxComboBox_Paste, 1586). --define(wxComboBox_Redo, 1587). --define(wxComboBox_Replace, 1588). --define(wxComboBox_Remove, 1589). --define(wxComboBox_SetInsertionPoint, 1590). --define(wxComboBox_SetInsertionPointEnd, 1591). --define(wxComboBox_SetSelection_1, 1592). --define(wxComboBox_SetSelection_2, 1593). --define(wxComboBox_SetValue, 1594). --define(wxComboBox_Undo, 1595). --define(wxGauge_new_0, 1596). --define(wxGauge_new_4, 1597). --define(wxGauge_Create, 1598). --define(wxGauge_GetBezelFace, 1599). --define(wxGauge_GetRange, 1600). --define(wxGauge_GetShadowWidth, 1601). --define(wxGauge_GetValue, 1602). --define(wxGauge_IsVertical, 1603). --define(wxGauge_SetBezelFace, 1604). --define(wxGauge_SetRange, 1605). --define(wxGauge_SetShadowWidth, 1606). --define(wxGauge_SetValue, 1607). --define(wxGauge_Pulse, 1608). --define(wxGauge_destroy, 1609). --define(wxGenericDirCtrl_new_0, 1610). --define(wxGenericDirCtrl_new_2, 1611). --define(wxGenericDirCtrl_destruct, 1612). --define(wxGenericDirCtrl_Create, 1613). --define(wxGenericDirCtrl_Init, 1614). --define(wxGenericDirCtrl_CollapseTree, 1615). --define(wxGenericDirCtrl_ExpandPath, 1616). --define(wxGenericDirCtrl_GetDefaultPath, 1617). --define(wxGenericDirCtrl_GetPath, 1618). --define(wxGenericDirCtrl_GetFilePath, 1619). --define(wxGenericDirCtrl_GetFilter, 1620). --define(wxGenericDirCtrl_GetFilterIndex, 1621). --define(wxGenericDirCtrl_GetRootId, 1622). --define(wxGenericDirCtrl_GetTreeCtrl, 1623). --define(wxGenericDirCtrl_ReCreateTree, 1624). --define(wxGenericDirCtrl_SetDefaultPath, 1625). --define(wxGenericDirCtrl_SetFilter, 1626). --define(wxGenericDirCtrl_SetFilterIndex, 1627). --define(wxGenericDirCtrl_SetPath, 1628). --define(wxStaticBox_new_4, 1630). --define(wxStaticBox_new_0, 1631). --define(wxStaticBox_Create, 1632). --define(wxStaticBox_destroy, 1633). --define(wxStaticLine_new_2, 1635). --define(wxStaticLine_new_0, 1636). --define(wxStaticLine_Create, 1637). --define(wxStaticLine_IsVertical, 1638). --define(wxStaticLine_GetDefaultSize, 1639). --define(wxStaticLine_destroy, 1640). --define(wxListBox_new_3, 1643). --define(wxListBox_new_0, 1644). --define(wxListBox_destruct, 1646). --define(wxListBox_Create, 1648). --define(wxListBox_Deselect, 1649). --define(wxListBox_GetSelections, 1650). --define(wxListBox_InsertItems, 1651). --define(wxListBox_IsSelected, 1652). --define(wxListBox_Set, 1653). --define(wxListBox_HitTest, 1654). --define(wxListBox_SetFirstItem_1_0, 1655). --define(wxListBox_SetFirstItem_1_1, 1656). --define(wxListCtrl_new_0, 1657). --define(wxListCtrl_new_2, 1658). --define(wxListCtrl_Arrange, 1659). --define(wxListCtrl_AssignImageList, 1660). --define(wxListCtrl_ClearAll, 1661). --define(wxListCtrl_Create, 1662). --define(wxListCtrl_DeleteAllItems, 1663). --define(wxListCtrl_DeleteColumn, 1664). --define(wxListCtrl_DeleteItem, 1665). --define(wxListCtrl_EditLabel, 1666). --define(wxListCtrl_EnsureVisible, 1667). --define(wxListCtrl_FindItem_3_0, 1668). --define(wxListCtrl_FindItem_3_1, 1669). --define(wxListCtrl_GetColumn, 1670). --define(wxListCtrl_GetColumnCount, 1671). --define(wxListCtrl_GetColumnWidth, 1672). --define(wxListCtrl_GetCountPerPage, 1673). --define(wxListCtrl_GetEditControl, 1674). --define(wxListCtrl_GetImageList, 1675). --define(wxListCtrl_GetItem, 1676). --define(wxListCtrl_GetItemBackgroundColour, 1677). --define(wxListCtrl_GetItemCount, 1678). --define(wxListCtrl_GetItemData, 1679). --define(wxListCtrl_GetItemFont, 1680). --define(wxListCtrl_GetItemPosition, 1681). --define(wxListCtrl_GetItemRect, 1682). --define(wxListCtrl_GetItemSpacing, 1683). --define(wxListCtrl_GetItemState, 1684). --define(wxListCtrl_GetItemText, 1685). --define(wxListCtrl_GetItemTextColour, 1686). --define(wxListCtrl_GetNextItem, 1687). --define(wxListCtrl_GetSelectedItemCount, 1688). --define(wxListCtrl_GetTextColour, 1689). --define(wxListCtrl_GetTopItem, 1690). --define(wxListCtrl_GetViewRect, 1691). --define(wxListCtrl_HitTest, 1692). --define(wxListCtrl_InsertColumn_2, 1693). --define(wxListCtrl_InsertColumn_3, 1694). --define(wxListCtrl_InsertItem_1, 1695). --define(wxListCtrl_InsertItem_2_1, 1696). --define(wxListCtrl_InsertItem_2_0, 1697). --define(wxListCtrl_InsertItem_3, 1698). --define(wxListCtrl_RefreshItem, 1699). --define(wxListCtrl_RefreshItems, 1700). --define(wxListCtrl_ScrollList, 1701). --define(wxListCtrl_SetBackgroundColour, 1702). --define(wxListCtrl_SetColumn, 1703). --define(wxListCtrl_SetColumnWidth, 1704). --define(wxListCtrl_SetImageList, 1705). --define(wxListCtrl_SetItem_1, 1706). --define(wxListCtrl_SetItem_4, 1707). --define(wxListCtrl_SetItemBackgroundColour, 1708). --define(wxListCtrl_SetItemCount, 1709). --define(wxListCtrl_SetItemData, 1710). --define(wxListCtrl_SetItemFont, 1711). --define(wxListCtrl_SetItemImage, 1712). --define(wxListCtrl_SetItemColumnImage, 1713). --define(wxListCtrl_SetItemPosition, 1714). --define(wxListCtrl_SetItemState, 1715). --define(wxListCtrl_SetItemText, 1716). --define(wxListCtrl_SetItemTextColour, 1717). --define(wxListCtrl_SetSingleStyle, 1718). --define(wxListCtrl_SetTextColour, 1719). --define(wxListCtrl_SetWindowStyleFlag, 1720). --define(wxListCtrl_SortItems, 1721). --define(wxListCtrl_destroy, 1722). --define(wxListView_ClearColumnImage, 1723). --define(wxListView_Focus, 1724). --define(wxListView_GetFirstSelected, 1725). --define(wxListView_GetFocusedItem, 1726). --define(wxListView_GetNextSelected, 1727). --define(wxListView_IsSelected, 1728). --define(wxListView_Select, 1729). --define(wxListView_SetColumnImage, 1730). --define(wxListItem_new_0, 1731). --define(wxListItem_new_1, 1732). --define(wxListItem_destruct, 1733). --define(wxListItem_Clear, 1734). --define(wxListItem_GetAlign, 1735). --define(wxListItem_GetBackgroundColour, 1736). --define(wxListItem_GetColumn, 1737). --define(wxListItem_GetFont, 1738). --define(wxListItem_GetId, 1739). --define(wxListItem_GetImage, 1740). --define(wxListItem_GetMask, 1741). --define(wxListItem_GetState, 1742). --define(wxListItem_GetText, 1743). --define(wxListItem_GetTextColour, 1744). --define(wxListItem_GetWidth, 1745). --define(wxListItem_SetAlign, 1746). --define(wxListItem_SetBackgroundColour, 1747). --define(wxListItem_SetColumn, 1748). --define(wxListItem_SetFont, 1749). --define(wxListItem_SetId, 1750). --define(wxListItem_SetImage, 1751). --define(wxListItem_SetMask, 1752). --define(wxListItem_SetState, 1753). --define(wxListItem_SetStateMask, 1754). --define(wxListItem_SetText, 1755). --define(wxListItem_SetTextColour, 1756). --define(wxListItem_SetWidth, 1757). --define(wxListItemAttr_new_0, 1758). --define(wxListItemAttr_new_3, 1759). --define(wxListItemAttr_GetBackgroundColour, 1760). --define(wxListItemAttr_GetFont, 1761). --define(wxListItemAttr_GetTextColour, 1762). --define(wxListItemAttr_HasBackgroundColour, 1763). --define(wxListItemAttr_HasFont, 1764). --define(wxListItemAttr_HasTextColour, 1765). --define(wxListItemAttr_SetBackgroundColour, 1766). --define(wxListItemAttr_SetFont, 1767). --define(wxListItemAttr_SetTextColour, 1768). --define(wxListItemAttr_destroy, 1769). --define(wxImageList_new_0, 1770). --define(wxImageList_new_3, 1771). --define(wxImageList_Add_1, 1772). --define(wxImageList_Add_2_0, 1773). --define(wxImageList_Add_2_1, 1774). --define(wxImageList_Create, 1775). --define(wxImageList_Draw, 1777). --define(wxImageList_GetBitmap, 1778). --define(wxImageList_GetIcon, 1779). --define(wxImageList_GetImageCount, 1780). --define(wxImageList_GetSize, 1781). --define(wxImageList_Remove, 1782). --define(wxImageList_RemoveAll, 1783). --define(wxImageList_Replace_2, 1784). --define(wxImageList_Replace_3, 1785). --define(wxImageList_destroy, 1786). --define(wxTextAttr_new_0, 1787). --define(wxTextAttr_new_2, 1788). --define(wxTextAttr_GetAlignment, 1789). --define(wxTextAttr_GetBackgroundColour, 1790). --define(wxTextAttr_GetFont, 1791). --define(wxTextAttr_GetLeftIndent, 1792). --define(wxTextAttr_GetLeftSubIndent, 1793). --define(wxTextAttr_GetRightIndent, 1794). --define(wxTextAttr_GetTabs, 1795). --define(wxTextAttr_GetTextColour, 1796). --define(wxTextAttr_HasBackgroundColour, 1797). --define(wxTextAttr_HasFont, 1798). --define(wxTextAttr_HasTextColour, 1799). --define(wxTextAttr_GetFlags, 1800). --define(wxTextAttr_IsDefault, 1801). --define(wxTextAttr_SetAlignment, 1802). --define(wxTextAttr_SetBackgroundColour, 1803). --define(wxTextAttr_SetFlags, 1804). --define(wxTextAttr_SetFont, 1805). --define(wxTextAttr_SetLeftIndent, 1806). --define(wxTextAttr_SetRightIndent, 1807). --define(wxTextAttr_SetTabs, 1808). --define(wxTextAttr_SetTextColour, 1809). --define(wxTextAttr_destroy, 1810). --define(wxTextCtrl_new_3, 1812). --define(wxTextCtrl_new_0, 1813). --define(wxTextCtrl_destruct, 1815). --define(wxTextCtrl_AppendText, 1816). --define(wxTextCtrl_CanCopy, 1817). --define(wxTextCtrl_CanCut, 1818). --define(wxTextCtrl_CanPaste, 1819). --define(wxTextCtrl_CanRedo, 1820). --define(wxTextCtrl_CanUndo, 1821). --define(wxTextCtrl_Clear, 1822). --define(wxTextCtrl_Copy, 1823). --define(wxTextCtrl_Create, 1824). --define(wxTextCtrl_Cut, 1825). --define(wxTextCtrl_DiscardEdits, 1826). --define(wxTextCtrl_ChangeValue, 1827). --define(wxTextCtrl_EmulateKeyPress, 1828). --define(wxTextCtrl_GetDefaultStyle, 1829). --define(wxTextCtrl_GetInsertionPoint, 1830). --define(wxTextCtrl_GetLastPosition, 1831). --define(wxTextCtrl_GetLineLength, 1832). --define(wxTextCtrl_GetLineText, 1833). --define(wxTextCtrl_GetNumberOfLines, 1834). --define(wxTextCtrl_GetRange, 1835). --define(wxTextCtrl_GetSelection, 1836). --define(wxTextCtrl_GetStringSelection, 1837). --define(wxTextCtrl_GetStyle, 1838). --define(wxTextCtrl_GetValue, 1839). --define(wxTextCtrl_IsEditable, 1840). --define(wxTextCtrl_IsModified, 1841). --define(wxTextCtrl_IsMultiLine, 1842). --define(wxTextCtrl_IsSingleLine, 1843). --define(wxTextCtrl_LoadFile, 1844). --define(wxTextCtrl_MarkDirty, 1845). --define(wxTextCtrl_Paste, 1846). --define(wxTextCtrl_PositionToXY, 1847). --define(wxTextCtrl_Redo, 1848). --define(wxTextCtrl_Remove, 1849). --define(wxTextCtrl_Replace, 1850). --define(wxTextCtrl_SaveFile, 1851). --define(wxTextCtrl_SetDefaultStyle, 1852). --define(wxTextCtrl_SetEditable, 1853). --define(wxTextCtrl_SetInsertionPoint, 1854). --define(wxTextCtrl_SetInsertionPointEnd, 1855). --define(wxTextCtrl_SetMaxLength, 1857). --define(wxTextCtrl_SetSelection, 1858). --define(wxTextCtrl_SetStyle, 1859). --define(wxTextCtrl_SetValue, 1860). --define(wxTextCtrl_ShowPosition, 1861). --define(wxTextCtrl_Undo, 1862). --define(wxTextCtrl_WriteText, 1863). --define(wxTextCtrl_XYToPosition, 1864). --define(wxNotebook_new_0, 1867). --define(wxNotebook_new_3, 1868). --define(wxNotebook_destruct, 1869). --define(wxNotebook_AddPage, 1870). --define(wxNotebook_AdvanceSelection, 1871). --define(wxNotebook_AssignImageList, 1872). --define(wxNotebook_Create, 1873). --define(wxNotebook_DeleteAllPages, 1874). --define(wxNotebook_DeletePage, 1875). --define(wxNotebook_RemovePage, 1876). --define(wxNotebook_GetCurrentPage, 1877). --define(wxNotebook_GetImageList, 1878). --define(wxNotebook_GetPage, 1880). --define(wxNotebook_GetPageCount, 1881). --define(wxNotebook_GetPageImage, 1882). --define(wxNotebook_GetPageText, 1883). --define(wxNotebook_GetRowCount, 1884). --define(wxNotebook_GetSelection, 1885). --define(wxNotebook_GetThemeBackgroundColour, 1886). --define(wxNotebook_HitTest, 1888). --define(wxNotebook_InsertPage, 1890). --define(wxNotebook_SetImageList, 1891). --define(wxNotebook_SetPadding, 1892). --define(wxNotebook_SetPageSize, 1893). --define(wxNotebook_SetPageImage, 1894). --define(wxNotebook_SetPageText, 1895). --define(wxNotebook_SetSelection, 1896). --define(wxNotebook_ChangeSelection, 1897). --define(wxChoicebook_new_0, 1898). --define(wxChoicebook_new_3, 1899). --define(wxChoicebook_AddPage, 1900). --define(wxChoicebook_AdvanceSelection, 1901). --define(wxChoicebook_AssignImageList, 1902). --define(wxChoicebook_Create, 1903). --define(wxChoicebook_DeleteAllPages, 1904). --define(wxChoicebook_DeletePage, 1905). --define(wxChoicebook_RemovePage, 1906). --define(wxChoicebook_GetCurrentPage, 1907). --define(wxChoicebook_GetImageList, 1908). --define(wxChoicebook_GetPage, 1910). --define(wxChoicebook_GetPageCount, 1911). --define(wxChoicebook_GetPageImage, 1912). --define(wxChoicebook_GetPageText, 1913). --define(wxChoicebook_GetSelection, 1914). --define(wxChoicebook_HitTest, 1915). --define(wxChoicebook_InsertPage, 1916). --define(wxChoicebook_SetImageList, 1917). --define(wxChoicebook_SetPageSize, 1918). --define(wxChoicebook_SetPageImage, 1919). --define(wxChoicebook_SetPageText, 1920). --define(wxChoicebook_SetSelection, 1921). --define(wxChoicebook_ChangeSelection, 1922). --define(wxChoicebook_destroy, 1923). --define(wxToolbook_new_0, 1924). --define(wxToolbook_new_3, 1925). --define(wxToolbook_AddPage, 1926). --define(wxToolbook_AdvanceSelection, 1927). --define(wxToolbook_AssignImageList, 1928). --define(wxToolbook_Create, 1929). --define(wxToolbook_DeleteAllPages, 1930). --define(wxToolbook_DeletePage, 1931). --define(wxToolbook_RemovePage, 1932). --define(wxToolbook_GetCurrentPage, 1933). --define(wxToolbook_GetImageList, 1934). --define(wxToolbook_GetPage, 1936). --define(wxToolbook_GetPageCount, 1937). --define(wxToolbook_GetPageImage, 1938). --define(wxToolbook_GetPageText, 1939). --define(wxToolbook_GetSelection, 1940). --define(wxToolbook_HitTest, 1942). --define(wxToolbook_InsertPage, 1943). --define(wxToolbook_SetImageList, 1944). --define(wxToolbook_SetPageSize, 1945). --define(wxToolbook_SetPageImage, 1946). --define(wxToolbook_SetPageText, 1947). --define(wxToolbook_SetSelection, 1948). --define(wxToolbook_ChangeSelection, 1949). --define(wxToolbook_destroy, 1950). --define(wxListbook_new_0, 1951). --define(wxListbook_new_3, 1952). --define(wxListbook_AddPage, 1953). --define(wxListbook_AdvanceSelection, 1954). --define(wxListbook_AssignImageList, 1955). --define(wxListbook_Create, 1956). --define(wxListbook_DeleteAllPages, 1957). --define(wxListbook_DeletePage, 1958). --define(wxListbook_RemovePage, 1959). --define(wxListbook_GetCurrentPage, 1960). --define(wxListbook_GetImageList, 1961). --define(wxListbook_GetPage, 1963). --define(wxListbook_GetPageCount, 1964). --define(wxListbook_GetPageImage, 1965). --define(wxListbook_GetPageText, 1966). --define(wxListbook_GetSelection, 1967). --define(wxListbook_HitTest, 1969). --define(wxListbook_InsertPage, 1970). --define(wxListbook_SetImageList, 1971). --define(wxListbook_SetPageSize, 1972). --define(wxListbook_SetPageImage, 1973). --define(wxListbook_SetPageText, 1974). --define(wxListbook_SetSelection, 1975). --define(wxListbook_ChangeSelection, 1976). --define(wxListbook_destroy, 1977). --define(wxTreebook_new_0, 1978). --define(wxTreebook_new_3, 1979). --define(wxTreebook_AddPage, 1980). --define(wxTreebook_AdvanceSelection, 1981). --define(wxTreebook_AssignImageList, 1982). --define(wxTreebook_Create, 1983). --define(wxTreebook_DeleteAllPages, 1984). --define(wxTreebook_DeletePage, 1985). --define(wxTreebook_RemovePage, 1986). --define(wxTreebook_GetCurrentPage, 1987). --define(wxTreebook_GetImageList, 1988). --define(wxTreebook_GetPage, 1990). --define(wxTreebook_GetPageCount, 1991). --define(wxTreebook_GetPageImage, 1992). --define(wxTreebook_GetPageText, 1993). --define(wxTreebook_GetSelection, 1994). --define(wxTreebook_ExpandNode, 1995). --define(wxTreebook_IsNodeExpanded, 1996). --define(wxTreebook_HitTest, 1998). --define(wxTreebook_InsertPage, 1999). --define(wxTreebook_InsertSubPage, 2000). --define(wxTreebook_SetImageList, 2001). --define(wxTreebook_SetPageSize, 2002). --define(wxTreebook_SetPageImage, 2003). --define(wxTreebook_SetPageText, 2004). --define(wxTreebook_SetSelection, 2005). --define(wxTreebook_ChangeSelection, 2006). --define(wxTreebook_destroy, 2007). --define(wxTreeCtrl_new_2, 2010). --define(wxTreeCtrl_new_0, 2011). --define(wxTreeCtrl_destruct, 2013). --define(wxTreeCtrl_AddRoot, 2014). --define(wxTreeCtrl_AppendItem, 2015). --define(wxTreeCtrl_AssignImageList, 2016). --define(wxTreeCtrl_AssignStateImageList, 2017). --define(wxTreeCtrl_Collapse, 2018). --define(wxTreeCtrl_CollapseAndReset, 2019). --define(wxTreeCtrl_Create, 2020). --define(wxTreeCtrl_Delete, 2021). --define(wxTreeCtrl_DeleteAllItems, 2022). --define(wxTreeCtrl_DeleteChildren, 2023). --define(wxTreeCtrl_EditLabel, 2024). --define(wxTreeCtrl_EnsureVisible, 2025). --define(wxTreeCtrl_Expand, 2026). --define(wxTreeCtrl_GetBoundingRect, 2027). --define(wxTreeCtrl_GetChildrenCount, 2029). --define(wxTreeCtrl_GetCount, 2030). --define(wxTreeCtrl_GetEditControl, 2031). --define(wxTreeCtrl_GetFirstChild, 2032). --define(wxTreeCtrl_GetNextChild, 2033). --define(wxTreeCtrl_GetFirstVisibleItem, 2034). --define(wxTreeCtrl_GetImageList, 2035). --define(wxTreeCtrl_GetIndent, 2036). --define(wxTreeCtrl_GetItemBackgroundColour, 2037). --define(wxTreeCtrl_GetItemData, 2038). --define(wxTreeCtrl_GetItemFont, 2039). --define(wxTreeCtrl_GetItemImage_1, 2040). --define(wxTreeCtrl_GetItemImage_2, 2041). --define(wxTreeCtrl_GetItemText, 2042). --define(wxTreeCtrl_GetItemTextColour, 2043). --define(wxTreeCtrl_GetLastChild, 2044). --define(wxTreeCtrl_GetNextSibling, 2045). --define(wxTreeCtrl_GetNextVisible, 2046). --define(wxTreeCtrl_GetItemParent, 2047). --define(wxTreeCtrl_GetPrevSibling, 2048). --define(wxTreeCtrl_GetPrevVisible, 2049). --define(wxTreeCtrl_GetRootItem, 2050). --define(wxTreeCtrl_GetSelection, 2051). --define(wxTreeCtrl_GetSelections, 2052). --define(wxTreeCtrl_GetStateImageList, 2053). --define(wxTreeCtrl_HitTest, 2054). --define(wxTreeCtrl_InsertItem, 2056). --define(wxTreeCtrl_IsBold, 2057). --define(wxTreeCtrl_IsExpanded, 2058). --define(wxTreeCtrl_IsSelected, 2059). --define(wxTreeCtrl_IsVisible, 2060). --define(wxTreeCtrl_ItemHasChildren, 2061). --define(wxTreeCtrl_IsTreeItemIdOk, 2062). --define(wxTreeCtrl_PrependItem, 2063). --define(wxTreeCtrl_ScrollTo, 2064). --define(wxTreeCtrl_SelectItem_1, 2065). --define(wxTreeCtrl_SelectItem_2, 2066). --define(wxTreeCtrl_SetIndent, 2067). --define(wxTreeCtrl_SetImageList, 2068). --define(wxTreeCtrl_SetItemBackgroundColour, 2069). --define(wxTreeCtrl_SetItemBold, 2070). --define(wxTreeCtrl_SetItemData, 2071). --define(wxTreeCtrl_SetItemDropHighlight, 2072). --define(wxTreeCtrl_SetItemFont, 2073). --define(wxTreeCtrl_SetItemHasChildren, 2074). --define(wxTreeCtrl_SetItemImage_2, 2075). --define(wxTreeCtrl_SetItemImage_3, 2076). --define(wxTreeCtrl_SetItemText, 2077). --define(wxTreeCtrl_SetItemTextColour, 2078). --define(wxTreeCtrl_SetStateImageList, 2079). --define(wxTreeCtrl_SetWindowStyle, 2080). --define(wxTreeCtrl_SortChildren, 2081). --define(wxTreeCtrl_Toggle, 2082). --define(wxTreeCtrl_ToggleItemSelection, 2083). --define(wxTreeCtrl_Unselect, 2084). --define(wxTreeCtrl_UnselectAll, 2085). --define(wxTreeCtrl_UnselectItem, 2086). --define(wxScrollBar_new_0, 2087). --define(wxScrollBar_new_3, 2088). --define(wxScrollBar_destruct, 2089). --define(wxScrollBar_Create, 2090). --define(wxScrollBar_GetRange, 2091). --define(wxScrollBar_GetPageSize, 2092). --define(wxScrollBar_GetThumbPosition, 2093). --define(wxScrollBar_GetThumbSize, 2094). --define(wxScrollBar_SetThumbPosition, 2095). --define(wxScrollBar_SetScrollbar, 2096). --define(wxSpinButton_new_2, 2098). --define(wxSpinButton_new_0, 2099). --define(wxSpinButton_Create, 2100). --define(wxSpinButton_GetMax, 2101). --define(wxSpinButton_GetMin, 2102). --define(wxSpinButton_GetValue, 2103). --define(wxSpinButton_SetRange, 2104). --define(wxSpinButton_SetValue, 2105). --define(wxSpinButton_destroy, 2106). --define(wxSpinCtrl_new_0, 2107). --define(wxSpinCtrl_new_2, 2108). --define(wxSpinCtrl_Create, 2110). --define(wxSpinCtrl_SetValue_1_1, 2113). --define(wxSpinCtrl_SetValue_1_0, 2114). --define(wxSpinCtrl_GetValue, 2116). --define(wxSpinCtrl_SetRange, 2118). --define(wxSpinCtrl_SetSelection, 2119). --define(wxSpinCtrl_GetMin, 2121). --define(wxSpinCtrl_GetMax, 2123). --define(wxSpinCtrl_destroy, 2124). --define(wxStaticText_new_0, 2125). --define(wxStaticText_new_4, 2126). --define(wxStaticText_Create, 2127). --define(wxStaticText_GetLabel, 2128). --define(wxStaticText_SetLabel, 2129). --define(wxStaticText_Wrap, 2130). --define(wxStaticText_destroy, 2131). --define(wxStaticBitmap_new_0, 2132). --define(wxStaticBitmap_new_4, 2133). --define(wxStaticBitmap_Create, 2134). --define(wxStaticBitmap_GetBitmap, 2135). --define(wxStaticBitmap_SetBitmap, 2136). --define(wxStaticBitmap_destroy, 2137). --define(wxRadioBox_new, 2138). --define(wxRadioBox_destruct, 2140). --define(wxRadioBox_Create, 2141). --define(wxRadioBox_Enable_2, 2142). --define(wxRadioBox_Enable_1, 2143). --define(wxRadioBox_GetSelection, 2144). --define(wxRadioBox_GetString, 2145). --define(wxRadioBox_SetSelection, 2146). --define(wxRadioBox_Show_2, 2147). --define(wxRadioBox_Show_1, 2148). --define(wxRadioBox_GetColumnCount, 2149). --define(wxRadioBox_GetItemHelpText, 2150). --define(wxRadioBox_GetItemToolTip, 2151). --define(wxRadioBox_GetItemFromPoint, 2153). --define(wxRadioBox_GetRowCount, 2154). --define(wxRadioBox_IsItemEnabled, 2155). --define(wxRadioBox_IsItemShown, 2156). --define(wxRadioBox_SetItemHelpText, 2157). --define(wxRadioBox_SetItemToolTip, 2158). --define(wxRadioButton_new_0, 2159). --define(wxRadioButton_new_4, 2160). --define(wxRadioButton_Create, 2161). --define(wxRadioButton_GetValue, 2162). --define(wxRadioButton_SetValue, 2163). --define(wxRadioButton_destroy, 2164). --define(wxSlider_new_6, 2166). --define(wxSlider_new_0, 2167). --define(wxSlider_Create, 2168). --define(wxSlider_GetLineSize, 2169). --define(wxSlider_GetMax, 2170). --define(wxSlider_GetMin, 2171). --define(wxSlider_GetPageSize, 2172). --define(wxSlider_GetThumbLength, 2173). --define(wxSlider_GetValue, 2174). --define(wxSlider_SetLineSize, 2175). --define(wxSlider_SetPageSize, 2176). --define(wxSlider_SetRange, 2177). --define(wxSlider_SetThumbLength, 2178). --define(wxSlider_SetValue, 2179). --define(wxSlider_destroy, 2180). --define(wxDialog_new_4, 2182). --define(wxDialog_new_0, 2183). --define(wxDialog_destruct, 2185). --define(wxDialog_Create, 2186). --define(wxDialog_CreateButtonSizer, 2187). --define(wxDialog_CreateStdDialogButtonSizer, 2188). --define(wxDialog_EndModal, 2189). --define(wxDialog_GetAffirmativeId, 2190). --define(wxDialog_GetReturnCode, 2191). --define(wxDialog_IsModal, 2192). --define(wxDialog_SetAffirmativeId, 2193). --define(wxDialog_SetReturnCode, 2194). --define(wxDialog_Show, 2195). --define(wxDialog_ShowModal, 2196). --define(wxColourDialog_new_0, 2197). --define(wxColourDialog_new_2, 2198). --define(wxColourDialog_destruct, 2199). --define(wxColourDialog_Create, 2200). --define(wxColourDialog_GetColourData, 2201). --define(wxColourData_new_0, 2202). --define(wxColourData_new_1, 2203). --define(wxColourData_destruct, 2204). --define(wxColourData_GetChooseFull, 2205). --define(wxColourData_GetColour, 2206). --define(wxColourData_GetCustomColour, 2208). --define(wxColourData_SetChooseFull, 2209). --define(wxColourData_SetColour, 2210). --define(wxColourData_SetCustomColour, 2211). --define(wxPalette_new_0, 2212). --define(wxPalette_new_4, 2213). --define(wxPalette_destruct, 2215). --define(wxPalette_Create, 2216). --define(wxPalette_GetColoursCount, 2217). --define(wxPalette_GetPixel, 2218). --define(wxPalette_GetRGB, 2219). --define(wxPalette_IsOk, 2220). --define(wxDirDialog_new, 2224). --define(wxDirDialog_destruct, 2225). --define(wxDirDialog_GetPath, 2226). --define(wxDirDialog_GetMessage, 2227). --define(wxDirDialog_SetMessage, 2228). --define(wxDirDialog_SetPath, 2229). --define(wxFileDialog_new, 2233). --define(wxFileDialog_destruct, 2234). --define(wxFileDialog_GetDirectory, 2235). --define(wxFileDialog_GetFilename, 2236). --define(wxFileDialog_GetFilenames, 2237). --define(wxFileDialog_GetFilterIndex, 2238). --define(wxFileDialog_GetMessage, 2239). --define(wxFileDialog_GetPath, 2240). --define(wxFileDialog_GetPaths, 2241). --define(wxFileDialog_GetWildcard, 2242). --define(wxFileDialog_SetDirectory, 2243). --define(wxFileDialog_SetFilename, 2244). --define(wxFileDialog_SetFilterIndex, 2245). --define(wxFileDialog_SetMessage, 2246). --define(wxFileDialog_SetPath, 2247). --define(wxFileDialog_SetWildcard, 2248). --define(wxPickerBase_SetInternalMargin, 2249). --define(wxPickerBase_GetInternalMargin, 2250). --define(wxPickerBase_SetTextCtrlProportion, 2251). --define(wxPickerBase_SetPickerCtrlProportion, 2252). --define(wxPickerBase_GetTextCtrlProportion, 2253). --define(wxPickerBase_GetPickerCtrlProportion, 2254). --define(wxPickerBase_HasTextCtrl, 2255). --define(wxPickerBase_GetTextCtrl, 2256). --define(wxPickerBase_IsTextCtrlGrowable, 2257). --define(wxPickerBase_SetPickerCtrlGrowable, 2258). --define(wxPickerBase_SetTextCtrlGrowable, 2259). --define(wxPickerBase_IsPickerCtrlGrowable, 2260). --define(wxFilePickerCtrl_new_0, 2261). --define(wxFilePickerCtrl_new_3, 2262). --define(wxFilePickerCtrl_Create, 2263). --define(wxFilePickerCtrl_GetPath, 2264). --define(wxFilePickerCtrl_SetPath, 2265). --define(wxFilePickerCtrl_destroy, 2266). --define(wxDirPickerCtrl_new_0, 2267). --define(wxDirPickerCtrl_new_3, 2268). --define(wxDirPickerCtrl_Create, 2269). --define(wxDirPickerCtrl_GetPath, 2270). --define(wxDirPickerCtrl_SetPath, 2271). --define(wxDirPickerCtrl_destroy, 2272). --define(wxColourPickerCtrl_new_0, 2273). --define(wxColourPickerCtrl_new_3, 2274). --define(wxColourPickerCtrl_Create, 2275). --define(wxColourPickerCtrl_GetColour, 2276). --define(wxColourPickerCtrl_SetColour_1_1, 2277). --define(wxColourPickerCtrl_SetColour_1_0, 2278). --define(wxColourPickerCtrl_destroy, 2279). --define(wxDatePickerCtrl_new_0, 2280). --define(wxDatePickerCtrl_new_3, 2281). --define(wxDatePickerCtrl_GetRange, 2282). --define(wxDatePickerCtrl_GetValue, 2283). --define(wxDatePickerCtrl_SetRange, 2284). --define(wxDatePickerCtrl_SetValue, 2285). --define(wxDatePickerCtrl_destroy, 2286). --define(wxFontPickerCtrl_new_0, 2287). --define(wxFontPickerCtrl_new_3, 2288). --define(wxFontPickerCtrl_Create, 2289). --define(wxFontPickerCtrl_GetSelectedFont, 2290). --define(wxFontPickerCtrl_SetSelectedFont, 2291). --define(wxFontPickerCtrl_GetMaxPointSize, 2292). --define(wxFontPickerCtrl_SetMaxPointSize, 2293). --define(wxFontPickerCtrl_destroy, 2294). --define(wxFindReplaceDialog_new_0, 2297). --define(wxFindReplaceDialog_new_4, 2298). --define(wxFindReplaceDialog_destruct, 2299). --define(wxFindReplaceDialog_Create, 2300). --define(wxFindReplaceDialog_GetData, 2301). --define(wxFindReplaceData_new_0, 2302). --define(wxFindReplaceData_new_1, 2303). --define(wxFindReplaceData_GetFindString, 2304). --define(wxFindReplaceData_GetReplaceString, 2305). --define(wxFindReplaceData_GetFlags, 2306). --define(wxFindReplaceData_SetFlags, 2307). --define(wxFindReplaceData_SetFindString, 2308). --define(wxFindReplaceData_SetReplaceString, 2309). --define(wxFindReplaceData_destroy, 2310). --define(wxMultiChoiceDialog_new_0, 2311). --define(wxMultiChoiceDialog_new_5, 2313). --define(wxMultiChoiceDialog_GetSelections, 2314). --define(wxMultiChoiceDialog_SetSelections, 2315). --define(wxMultiChoiceDialog_destroy, 2316). --define(wxSingleChoiceDialog_new_0, 2317). --define(wxSingleChoiceDialog_new_5, 2319). --define(wxSingleChoiceDialog_GetSelection, 2320). --define(wxSingleChoiceDialog_GetStringSelection, 2321). --define(wxSingleChoiceDialog_SetSelection, 2322). --define(wxSingleChoiceDialog_destroy, 2323). --define(wxTextEntryDialog_new, 2324). --define(wxTextEntryDialog_GetValue, 2325). --define(wxTextEntryDialog_SetValue, 2326). --define(wxTextEntryDialog_destroy, 2327). --define(wxPasswordEntryDialog_new, 2328). --define(wxPasswordEntryDialog_destroy, 2329). --define(wxFontData_new_0, 2330). --define(wxFontData_new_1, 2331). --define(wxFontData_destruct, 2332). --define(wxFontData_EnableEffects, 2333). --define(wxFontData_GetAllowSymbols, 2334). --define(wxFontData_GetColour, 2335). --define(wxFontData_GetChosenFont, 2336). --define(wxFontData_GetEnableEffects, 2337). --define(wxFontData_GetInitialFont, 2338). --define(wxFontData_GetShowHelp, 2339). --define(wxFontData_SetAllowSymbols, 2340). --define(wxFontData_SetChosenFont, 2341). --define(wxFontData_SetColour, 2342). --define(wxFontData_SetInitialFont, 2343). --define(wxFontData_SetRange, 2344). --define(wxFontData_SetShowHelp, 2345). --define(wxFontDialog_new_0, 2349). --define(wxFontDialog_new_2, 2351). --define(wxFontDialog_Create, 2353). --define(wxFontDialog_GetFontData, 2354). --define(wxFontDialog_destroy, 2356). --define(wxProgressDialog_new, 2357). --define(wxProgressDialog_destruct, 2358). --define(wxProgressDialog_Resume, 2359). --define(wxProgressDialog_Update_2, 2360). --define(wxProgressDialog_Update_0, 2361). --define(wxMessageDialog_new, 2362). --define(wxMessageDialog_destruct, 2363). --define(wxPageSetupDialog_new, 2364). --define(wxPageSetupDialog_destruct, 2365). --define(wxPageSetupDialog_GetPageSetupData, 2366). --define(wxPageSetupDialog_ShowModal, 2367). --define(wxPageSetupDialogData_new_0, 2368). --define(wxPageSetupDialogData_new_1_0, 2369). --define(wxPageSetupDialogData_new_1_1, 2370). --define(wxPageSetupDialogData_destruct, 2371). --define(wxPageSetupDialogData_EnableHelp, 2372). --define(wxPageSetupDialogData_EnableMargins, 2373). --define(wxPageSetupDialogData_EnableOrientation, 2374). --define(wxPageSetupDialogData_EnablePaper, 2375). --define(wxPageSetupDialogData_EnablePrinter, 2376). --define(wxPageSetupDialogData_GetDefaultMinMargins, 2377). --define(wxPageSetupDialogData_GetEnableMargins, 2378). --define(wxPageSetupDialogData_GetEnableOrientation, 2379). --define(wxPageSetupDialogData_GetEnablePaper, 2380). --define(wxPageSetupDialogData_GetEnablePrinter, 2381). --define(wxPageSetupDialogData_GetEnableHelp, 2382). --define(wxPageSetupDialogData_GetDefaultInfo, 2383). --define(wxPageSetupDialogData_GetMarginTopLeft, 2384). --define(wxPageSetupDialogData_GetMarginBottomRight, 2385). --define(wxPageSetupDialogData_GetMinMarginTopLeft, 2386). --define(wxPageSetupDialogData_GetMinMarginBottomRight, 2387). --define(wxPageSetupDialogData_GetPaperId, 2388). --define(wxPageSetupDialogData_GetPaperSize, 2389). --define(wxPageSetupDialogData_GetPrintData, 2391). --define(wxPageSetupDialogData_IsOk, 2392). --define(wxPageSetupDialogData_SetDefaultInfo, 2393). --define(wxPageSetupDialogData_SetDefaultMinMargins, 2394). --define(wxPageSetupDialogData_SetMarginTopLeft, 2395). --define(wxPageSetupDialogData_SetMarginBottomRight, 2396). --define(wxPageSetupDialogData_SetMinMarginTopLeft, 2397). --define(wxPageSetupDialogData_SetMinMarginBottomRight, 2398). --define(wxPageSetupDialogData_SetPaperId, 2399). --define(wxPageSetupDialogData_SetPaperSize_1_1, 2400). --define(wxPageSetupDialogData_SetPaperSize_1_0, 2401). --define(wxPageSetupDialogData_SetPrintData, 2402). --define(wxPrintDialog_new_2_0, 2403). --define(wxPrintDialog_new_2_1, 2404). --define(wxPrintDialog_destruct, 2405). --define(wxPrintDialog_GetPrintDialogData, 2406). --define(wxPrintDialog_GetPrintDC, 2407). --define(wxPrintDialogData_new_0, 2408). --define(wxPrintDialogData_new_1_1, 2409). --define(wxPrintDialogData_new_1_0, 2410). --define(wxPrintDialogData_destruct, 2411). --define(wxPrintDialogData_EnableHelp, 2412). --define(wxPrintDialogData_EnablePageNumbers, 2413). --define(wxPrintDialogData_EnablePrintToFile, 2414). --define(wxPrintDialogData_EnableSelection, 2415). --define(wxPrintDialogData_GetAllPages, 2416). --define(wxPrintDialogData_GetCollate, 2417). --define(wxPrintDialogData_GetFromPage, 2418). --define(wxPrintDialogData_GetMaxPage, 2419). --define(wxPrintDialogData_GetMinPage, 2420). --define(wxPrintDialogData_GetNoCopies, 2421). --define(wxPrintDialogData_GetPrintData, 2422). --define(wxPrintDialogData_GetPrintToFile, 2423). --define(wxPrintDialogData_GetSelection, 2424). --define(wxPrintDialogData_GetToPage, 2425). --define(wxPrintDialogData_IsOk, 2426). --define(wxPrintDialogData_SetCollate, 2427). --define(wxPrintDialogData_SetFromPage, 2428). --define(wxPrintDialogData_SetMaxPage, 2429). --define(wxPrintDialogData_SetMinPage, 2430). --define(wxPrintDialogData_SetNoCopies, 2431). --define(wxPrintDialogData_SetPrintData, 2432). --define(wxPrintDialogData_SetPrintToFile, 2433). --define(wxPrintDialogData_SetSelection, 2434). --define(wxPrintDialogData_SetToPage, 2435). --define(wxPrintData_new_0, 2436). --define(wxPrintData_new_1, 2437). --define(wxPrintData_destruct, 2438). --define(wxPrintData_GetCollate, 2439). --define(wxPrintData_GetBin, 2440). --define(wxPrintData_GetColour, 2441). --define(wxPrintData_GetDuplex, 2442). --define(wxPrintData_GetNoCopies, 2443). --define(wxPrintData_GetOrientation, 2444). --define(wxPrintData_GetPaperId, 2445). --define(wxPrintData_GetPrinterName, 2446). --define(wxPrintData_GetQuality, 2447). --define(wxPrintData_IsOk, 2448). --define(wxPrintData_SetBin, 2449). --define(wxPrintData_SetCollate, 2450). --define(wxPrintData_SetColour, 2451). --define(wxPrintData_SetDuplex, 2452). --define(wxPrintData_SetNoCopies, 2453). --define(wxPrintData_SetOrientation, 2454). --define(wxPrintData_SetPaperId, 2455). --define(wxPrintData_SetPrinterName, 2456). --define(wxPrintData_SetQuality, 2457). --define(wxPrintPreview_new_2, 2460). --define(wxPrintPreview_new_3, 2461). --define(wxPrintPreview_destruct, 2463). --define(wxPrintPreview_GetCanvas, 2464). --define(wxPrintPreview_GetCurrentPage, 2465). --define(wxPrintPreview_GetFrame, 2466). --define(wxPrintPreview_GetMaxPage, 2467). --define(wxPrintPreview_GetMinPage, 2468). --define(wxPrintPreview_GetPrintout, 2469). --define(wxPrintPreview_GetPrintoutForPrinting, 2470). --define(wxPrintPreview_IsOk, 2471). --define(wxPrintPreview_PaintPage, 2472). --define(wxPrintPreview_Print, 2473). --define(wxPrintPreview_RenderPage, 2474). --define(wxPrintPreview_SetCanvas, 2475). --define(wxPrintPreview_SetCurrentPage, 2476). --define(wxPrintPreview_SetFrame, 2477). --define(wxPrintPreview_SetPrintout, 2478). --define(wxPrintPreview_SetZoom, 2479). --define(wxPreviewFrame_new, 2480). --define(wxPreviewFrame_destruct, 2481). --define(wxPreviewFrame_CreateControlBar, 2482). --define(wxPreviewFrame_CreateCanvas, 2483). --define(wxPreviewFrame_Initialize, 2484). --define(wxPreviewFrame_OnCloseWindow, 2485). --define(wxPreviewControlBar_new, 2486). --define(wxPreviewControlBar_destruct, 2487). --define(wxPreviewControlBar_CreateButtons, 2488). --define(wxPreviewControlBar_GetPrintPreview, 2489). --define(wxPreviewControlBar_GetZoomControl, 2490). --define(wxPreviewControlBar_SetZoomControl, 2491). --define(wxPrinter_new, 2493). --define(wxPrinter_CreateAbortWindow, 2494). --define(wxPrinter_GetAbort, 2495). --define(wxPrinter_GetLastError, 2496). --define(wxPrinter_GetPrintDialogData, 2497). --define(wxPrinter_Print, 2498). --define(wxPrinter_PrintDialog, 2499). --define(wxPrinter_ReportError, 2500). --define(wxPrinter_Setup, 2501). --define(wxPrinter_destroy, 2502). --define(wxXmlResource_new_1, 2503). --define(wxXmlResource_new_2, 2504). --define(wxXmlResource_destruct, 2505). --define(wxXmlResource_AttachUnknownControl, 2506). --define(wxXmlResource_ClearHandlers, 2507). --define(wxXmlResource_CompareVersion, 2508). --define(wxXmlResource_Get, 2509). --define(wxXmlResource_GetFlags, 2510). --define(wxXmlResource_GetVersion, 2511). --define(wxXmlResource_GetXRCID, 2512). --define(wxXmlResource_InitAllHandlers, 2513). --define(wxXmlResource_Load, 2514). --define(wxXmlResource_LoadBitmap, 2515). --define(wxXmlResource_LoadDialog_2, 2516). --define(wxXmlResource_LoadDialog_3, 2517). --define(wxXmlResource_LoadFrame_2, 2518). --define(wxXmlResource_LoadFrame_3, 2519). --define(wxXmlResource_LoadIcon, 2520). --define(wxXmlResource_LoadMenu, 2521). --define(wxXmlResource_LoadMenuBar_2, 2522). --define(wxXmlResource_LoadMenuBar_1, 2523). --define(wxXmlResource_LoadPanel_2, 2524). --define(wxXmlResource_LoadPanel_3, 2525). --define(wxXmlResource_LoadToolBar, 2526). --define(wxXmlResource_Set, 2527). --define(wxXmlResource_SetFlags, 2528). --define(wxXmlResource_Unload, 2529). --define(wxXmlResource_xrcctrl, 2530). --define(wxHtmlEasyPrinting_new, 2531). --define(wxHtmlEasyPrinting_destruct, 2532). --define(wxHtmlEasyPrinting_GetPrintData, 2533). --define(wxHtmlEasyPrinting_GetPageSetupData, 2534). --define(wxHtmlEasyPrinting_PreviewFile, 2535). --define(wxHtmlEasyPrinting_PreviewText, 2536). --define(wxHtmlEasyPrinting_PrintFile, 2537). --define(wxHtmlEasyPrinting_PrintText, 2538). --define(wxHtmlEasyPrinting_PageSetup, 2539). --define(wxHtmlEasyPrinting_SetFonts, 2540). --define(wxHtmlEasyPrinting_SetHeader, 2541). --define(wxHtmlEasyPrinting_SetFooter, 2542). --define(wxGLCanvas_new_2, 2544). --define(wxGLCanvas_new_3_1, 2545). --define(wxGLCanvas_new_3_0, 2546). --define(wxGLCanvas_GetContext, 2547). --define(wxGLCanvas_SetCurrent, 2549). --define(wxGLCanvas_SwapBuffers, 2550). --define(wxGLCanvas_destroy, 2551). --define(wxAuiManager_new, 2552). --define(wxAuiManager_destruct, 2553). --define(wxAuiManager_AddPane_2_1, 2554). --define(wxAuiManager_AddPane_3, 2555). --define(wxAuiManager_AddPane_2_0, 2556). --define(wxAuiManager_DetachPane, 2557). --define(wxAuiManager_GetAllPanes, 2558). --define(wxAuiManager_GetArtProvider, 2559). --define(wxAuiManager_GetDockSizeConstraint, 2560). --define(wxAuiManager_GetFlags, 2561). --define(wxAuiManager_GetManagedWindow, 2562). --define(wxAuiManager_GetManager, 2563). --define(wxAuiManager_GetPane_1_1, 2564). --define(wxAuiManager_GetPane_1_0, 2565). --define(wxAuiManager_HideHint, 2566). --define(wxAuiManager_InsertPane, 2567). --define(wxAuiManager_LoadPaneInfo, 2568). --define(wxAuiManager_LoadPerspective, 2569). --define(wxAuiManager_SavePaneInfo, 2570). --define(wxAuiManager_SavePerspective, 2571). --define(wxAuiManager_SetArtProvider, 2572). --define(wxAuiManager_SetDockSizeConstraint, 2573). --define(wxAuiManager_SetFlags, 2574). --define(wxAuiManager_SetManagedWindow, 2575). --define(wxAuiManager_ShowHint, 2576). --define(wxAuiManager_UnInit, 2577). --define(wxAuiManager_Update, 2578). --define(wxAuiPaneInfo_new_0, 2579). --define(wxAuiPaneInfo_new_1, 2580). --define(wxAuiPaneInfo_destruct, 2581). --define(wxAuiPaneInfo_BestSize_1, 2582). --define(wxAuiPaneInfo_BestSize_2, 2583). --define(wxAuiPaneInfo_Bottom, 2584). --define(wxAuiPaneInfo_BottomDockable, 2585). --define(wxAuiPaneInfo_Caption, 2586). --define(wxAuiPaneInfo_CaptionVisible, 2587). --define(wxAuiPaneInfo_Centre, 2588). --define(wxAuiPaneInfo_CentrePane, 2589). --define(wxAuiPaneInfo_CloseButton, 2590). --define(wxAuiPaneInfo_DefaultPane, 2591). --define(wxAuiPaneInfo_DestroyOnClose, 2592). --define(wxAuiPaneInfo_Direction, 2593). --define(wxAuiPaneInfo_Dock, 2594). --define(wxAuiPaneInfo_Dockable, 2595). --define(wxAuiPaneInfo_Fixed, 2596). --define(wxAuiPaneInfo_Float, 2597). --define(wxAuiPaneInfo_Floatable, 2598). --define(wxAuiPaneInfo_FloatingPosition_1, 2599). --define(wxAuiPaneInfo_FloatingPosition_2, 2600). --define(wxAuiPaneInfo_FloatingSize_1, 2601). --define(wxAuiPaneInfo_FloatingSize_2, 2602). --define(wxAuiPaneInfo_Gripper, 2603). --define(wxAuiPaneInfo_GripperTop, 2604). --define(wxAuiPaneInfo_HasBorder, 2605). --define(wxAuiPaneInfo_HasCaption, 2606). --define(wxAuiPaneInfo_HasCloseButton, 2607). --define(wxAuiPaneInfo_HasFlag, 2608). --define(wxAuiPaneInfo_HasGripper, 2609). --define(wxAuiPaneInfo_HasGripperTop, 2610). --define(wxAuiPaneInfo_HasMaximizeButton, 2611). --define(wxAuiPaneInfo_HasMinimizeButton, 2612). --define(wxAuiPaneInfo_HasPinButton, 2613). --define(wxAuiPaneInfo_Hide, 2614). --define(wxAuiPaneInfo_IsBottomDockable, 2615). --define(wxAuiPaneInfo_IsDocked, 2616). --define(wxAuiPaneInfo_IsFixed, 2617). --define(wxAuiPaneInfo_IsFloatable, 2618). --define(wxAuiPaneInfo_IsFloating, 2619). --define(wxAuiPaneInfo_IsLeftDockable, 2620). --define(wxAuiPaneInfo_IsMovable, 2621). --define(wxAuiPaneInfo_IsOk, 2622). --define(wxAuiPaneInfo_IsResizable, 2623). --define(wxAuiPaneInfo_IsRightDockable, 2624). --define(wxAuiPaneInfo_IsShown, 2625). --define(wxAuiPaneInfo_IsToolbar, 2626). --define(wxAuiPaneInfo_IsTopDockable, 2627). --define(wxAuiPaneInfo_Layer, 2628). --define(wxAuiPaneInfo_Left, 2629). --define(wxAuiPaneInfo_LeftDockable, 2630). --define(wxAuiPaneInfo_MaxSize_1, 2631). --define(wxAuiPaneInfo_MaxSize_2, 2632). --define(wxAuiPaneInfo_MaximizeButton, 2633). --define(wxAuiPaneInfo_MinSize_1, 2634). --define(wxAuiPaneInfo_MinSize_2, 2635). --define(wxAuiPaneInfo_MinimizeButton, 2636). --define(wxAuiPaneInfo_Movable, 2637). --define(wxAuiPaneInfo_Name, 2638). --define(wxAuiPaneInfo_PaneBorder, 2639). --define(wxAuiPaneInfo_PinButton, 2640). --define(wxAuiPaneInfo_Position, 2641). --define(wxAuiPaneInfo_Resizable, 2642). --define(wxAuiPaneInfo_Right, 2643). --define(wxAuiPaneInfo_RightDockable, 2644). --define(wxAuiPaneInfo_Row, 2645). --define(wxAuiPaneInfo_SafeSet, 2646). --define(wxAuiPaneInfo_SetFlag, 2647). --define(wxAuiPaneInfo_Show, 2648). --define(wxAuiPaneInfo_ToolbarPane, 2649). --define(wxAuiPaneInfo_Top, 2650). --define(wxAuiPaneInfo_TopDockable, 2651). --define(wxAuiPaneInfo_Window, 2652). --define(wxAuiPaneInfo_GetWindow, 2653). --define(wxAuiPaneInfo_GetFrame, 2654). --define(wxAuiPaneInfo_GetDirection, 2655). --define(wxAuiPaneInfo_GetLayer, 2656). --define(wxAuiPaneInfo_GetRow, 2657). --define(wxAuiPaneInfo_GetPosition, 2658). --define(wxAuiPaneInfo_GetFloatingPosition, 2659). --define(wxAuiPaneInfo_GetFloatingSize, 2660). --define(wxAuiNotebook_new_0, 2661). --define(wxAuiNotebook_new_2, 2662). --define(wxAuiNotebook_AddPage, 2663). --define(wxAuiNotebook_Create, 2664). --define(wxAuiNotebook_DeletePage, 2665). --define(wxAuiNotebook_GetArtProvider, 2666). --define(wxAuiNotebook_GetPage, 2667). --define(wxAuiNotebook_GetPageBitmap, 2668). --define(wxAuiNotebook_GetPageCount, 2669). --define(wxAuiNotebook_GetPageIndex, 2670). --define(wxAuiNotebook_GetPageText, 2671). --define(wxAuiNotebook_GetSelection, 2672). --define(wxAuiNotebook_InsertPage, 2673). --define(wxAuiNotebook_RemovePage, 2674). --define(wxAuiNotebook_SetArtProvider, 2675). --define(wxAuiNotebook_SetFont, 2676). --define(wxAuiNotebook_SetPageBitmap, 2677). --define(wxAuiNotebook_SetPageText, 2678). --define(wxAuiNotebook_SetSelection, 2679). --define(wxAuiNotebook_SetTabCtrlHeight, 2680). --define(wxAuiNotebook_SetUniformBitmapSize, 2681). --define(wxAuiNotebook_destroy, 2682). --define(wxAuiTabArt_SetFlags, 2683). --define(wxAuiTabArt_SetMeasuringFont, 2684). --define(wxAuiTabArt_SetNormalFont, 2685). --define(wxAuiTabArt_SetSelectedFont, 2686). --define(wxAuiTabArt_SetColour, 2687). --define(wxAuiTabArt_SetActiveColour, 2688). --define(wxAuiDockArt_GetColour, 2689). --define(wxAuiDockArt_GetFont, 2690). --define(wxAuiDockArt_GetMetric, 2691). --define(wxAuiDockArt_SetColour, 2692). --define(wxAuiDockArt_SetFont, 2693). --define(wxAuiDockArt_SetMetric, 2694). --define(wxAuiSimpleTabArt_new, 2695). --define(wxAuiSimpleTabArt_destroy, 2696). --define(wxMDIParentFrame_new_0, 2697). --define(wxMDIParentFrame_new_4, 2698). --define(wxMDIParentFrame_destruct, 2699). --define(wxMDIParentFrame_ActivateNext, 2700). --define(wxMDIParentFrame_ActivatePrevious, 2701). --define(wxMDIParentFrame_ArrangeIcons, 2702). --define(wxMDIParentFrame_Cascade, 2703). --define(wxMDIParentFrame_Create, 2704). --define(wxMDIParentFrame_GetActiveChild, 2705). --define(wxMDIParentFrame_GetClientWindow, 2706). --define(wxMDIParentFrame_Tile, 2707). --define(wxMDIChildFrame_new_0, 2708). --define(wxMDIChildFrame_new_4, 2709). --define(wxMDIChildFrame_destruct, 2710). --define(wxMDIChildFrame_Activate, 2711). --define(wxMDIChildFrame_Create, 2712). --define(wxMDIChildFrame_Maximize, 2713). --define(wxMDIChildFrame_Restore, 2714). --define(wxMDIClientWindow_new_0, 2715). --define(wxMDIClientWindow_new_2, 2716). --define(wxMDIClientWindow_destruct, 2717). --define(wxMDIClientWindow_CreateClient, 2718). --define(wxLayoutAlgorithm_new, 2719). --define(wxLayoutAlgorithm_LayoutFrame, 2720). --define(wxLayoutAlgorithm_LayoutMDIFrame, 2721). --define(wxLayoutAlgorithm_LayoutWindow, 2722). --define(wxLayoutAlgorithm_destroy, 2723). --define(wxEvent_GetId, 2724). --define(wxEvent_GetSkipped, 2725). --define(wxEvent_GetTimestamp, 2726). --define(wxEvent_IsCommandEvent, 2727). --define(wxEvent_ResumePropagation, 2728). --define(wxEvent_ShouldPropagate, 2729). --define(wxEvent_Skip, 2730). --define(wxEvent_StopPropagation, 2731). --define(wxCommandEvent_getClientData, 2732). --define(wxCommandEvent_GetExtraLong, 2733). --define(wxCommandEvent_GetInt, 2734). --define(wxCommandEvent_GetSelection, 2735). --define(wxCommandEvent_GetString, 2736). --define(wxCommandEvent_IsChecked, 2737). --define(wxCommandEvent_IsSelection, 2738). --define(wxCommandEvent_SetInt, 2739). --define(wxCommandEvent_SetString, 2740). --define(wxScrollEvent_GetOrientation, 2741). --define(wxScrollEvent_GetPosition, 2742). --define(wxScrollWinEvent_GetOrientation, 2743). --define(wxScrollWinEvent_GetPosition, 2744). --define(wxMouseEvent_AltDown, 2745). --define(wxMouseEvent_Button, 2746). --define(wxMouseEvent_ButtonDClick, 2747). --define(wxMouseEvent_ButtonDown, 2748). --define(wxMouseEvent_ButtonUp, 2749). --define(wxMouseEvent_CmdDown, 2750). --define(wxMouseEvent_ControlDown, 2751). --define(wxMouseEvent_Dragging, 2752). --define(wxMouseEvent_Entering, 2753). --define(wxMouseEvent_GetButton, 2754). --define(wxMouseEvent_GetPosition, 2757). --define(wxMouseEvent_GetLogicalPosition, 2758). --define(wxMouseEvent_GetLinesPerAction, 2759). --define(wxMouseEvent_GetWheelRotation, 2760). --define(wxMouseEvent_GetWheelDelta, 2761). --define(wxMouseEvent_GetX, 2762). --define(wxMouseEvent_GetY, 2763). --define(wxMouseEvent_IsButton, 2764). --define(wxMouseEvent_IsPageScroll, 2765). --define(wxMouseEvent_Leaving, 2766). --define(wxMouseEvent_LeftDClick, 2767). --define(wxMouseEvent_LeftDown, 2768). --define(wxMouseEvent_LeftIsDown, 2769). --define(wxMouseEvent_LeftUp, 2770). --define(wxMouseEvent_MetaDown, 2771). --define(wxMouseEvent_MiddleDClick, 2772). --define(wxMouseEvent_MiddleDown, 2773). --define(wxMouseEvent_MiddleIsDown, 2774). --define(wxMouseEvent_MiddleUp, 2775). --define(wxMouseEvent_Moving, 2776). --define(wxMouseEvent_RightDClick, 2777). --define(wxMouseEvent_RightDown, 2778). --define(wxMouseEvent_RightIsDown, 2779). --define(wxMouseEvent_RightUp, 2780). --define(wxMouseEvent_ShiftDown, 2781). --define(wxSetCursorEvent_GetCursor, 2782). --define(wxSetCursorEvent_GetX, 2783). --define(wxSetCursorEvent_GetY, 2784). --define(wxSetCursorEvent_HasCursor, 2785). --define(wxSetCursorEvent_SetCursor, 2786). --define(wxKeyEvent_AltDown, 2787). --define(wxKeyEvent_CmdDown, 2788). --define(wxKeyEvent_ControlDown, 2789). --define(wxKeyEvent_GetKeyCode, 2790). --define(wxKeyEvent_GetModifiers, 2791). --define(wxKeyEvent_GetPosition, 2794). --define(wxKeyEvent_GetRawKeyCode, 2795). --define(wxKeyEvent_GetRawKeyFlags, 2796). --define(wxKeyEvent_GetUnicodeKey, 2797). --define(wxKeyEvent_GetX, 2798). --define(wxKeyEvent_GetY, 2799). --define(wxKeyEvent_HasModifiers, 2800). --define(wxKeyEvent_MetaDown, 2801). --define(wxKeyEvent_ShiftDown, 2802). --define(wxSizeEvent_GetSize, 2803). --define(wxMoveEvent_GetPosition, 2804). --define(wxEraseEvent_GetDC, 2805). --define(wxFocusEvent_GetWindow, 2806). --define(wxChildFocusEvent_GetWindow, 2807). --define(wxMenuEvent_GetMenu, 2808). --define(wxMenuEvent_GetMenuId, 2809). --define(wxMenuEvent_IsPopup, 2810). --define(wxCloseEvent_CanVeto, 2811). --define(wxCloseEvent_GetLoggingOff, 2812). --define(wxCloseEvent_SetCanVeto, 2813). --define(wxCloseEvent_SetLoggingOff, 2814). --define(wxCloseEvent_Veto, 2815). --define(wxShowEvent_SetShow, 2816). --define(wxShowEvent_GetShow, 2817). --define(wxIconizeEvent_Iconized, 2818). --define(wxJoystickEvent_ButtonDown, 2819). --define(wxJoystickEvent_ButtonIsDown, 2820). --define(wxJoystickEvent_ButtonUp, 2821). --define(wxJoystickEvent_GetButtonChange, 2822). --define(wxJoystickEvent_GetButtonState, 2823). --define(wxJoystickEvent_GetJoystick, 2824). --define(wxJoystickEvent_GetPosition, 2825). --define(wxJoystickEvent_GetZPosition, 2826). --define(wxJoystickEvent_IsButton, 2827). --define(wxJoystickEvent_IsMove, 2828). --define(wxJoystickEvent_IsZMove, 2829). --define(wxUpdateUIEvent_CanUpdate, 2830). --define(wxUpdateUIEvent_Check, 2831). --define(wxUpdateUIEvent_Enable, 2832). --define(wxUpdateUIEvent_Show, 2833). --define(wxUpdateUIEvent_GetChecked, 2834). --define(wxUpdateUIEvent_GetEnabled, 2835). --define(wxUpdateUIEvent_GetShown, 2836). --define(wxUpdateUIEvent_GetSetChecked, 2837). --define(wxUpdateUIEvent_GetSetEnabled, 2838). --define(wxUpdateUIEvent_GetSetShown, 2839). --define(wxUpdateUIEvent_GetSetText, 2840). --define(wxUpdateUIEvent_GetText, 2841). --define(wxUpdateUIEvent_GetMode, 2842). --define(wxUpdateUIEvent_GetUpdateInterval, 2843). --define(wxUpdateUIEvent_ResetUpdateTime, 2844). --define(wxUpdateUIEvent_SetMode, 2845). --define(wxUpdateUIEvent_SetText, 2846). --define(wxUpdateUIEvent_SetUpdateInterval, 2847). --define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2848). --define(wxPaletteChangedEvent_SetChangedWindow, 2849). --define(wxPaletteChangedEvent_GetChangedWindow, 2850). --define(wxQueryNewPaletteEvent_SetPaletteRealized, 2851). --define(wxQueryNewPaletteEvent_GetPaletteRealized, 2852). --define(wxNavigationKeyEvent_GetDirection, 2853). --define(wxNavigationKeyEvent_SetDirection, 2854). --define(wxNavigationKeyEvent_IsWindowChange, 2855). --define(wxNavigationKeyEvent_SetWindowChange, 2856). --define(wxNavigationKeyEvent_IsFromTab, 2857). --define(wxNavigationKeyEvent_SetFromTab, 2858). --define(wxNavigationKeyEvent_GetCurrentFocus, 2859). --define(wxNavigationKeyEvent_SetCurrentFocus, 2860). --define(wxHelpEvent_GetOrigin, 2861). --define(wxHelpEvent_GetPosition, 2862). --define(wxHelpEvent_SetOrigin, 2863). --define(wxHelpEvent_SetPosition, 2864). --define(wxContextMenuEvent_GetPosition, 2865). --define(wxContextMenuEvent_SetPosition, 2866). --define(wxIdleEvent_CanSend, 2867). --define(wxIdleEvent_GetMode, 2868). --define(wxIdleEvent_RequestMore, 2869). --define(wxIdleEvent_MoreRequested, 2870). --define(wxIdleEvent_SetMode, 2871). --define(wxGridEvent_AltDown, 2872). --define(wxGridEvent_ControlDown, 2873). --define(wxGridEvent_GetCol, 2874). --define(wxGridEvent_GetPosition, 2875). --define(wxGridEvent_GetRow, 2876). --define(wxGridEvent_MetaDown, 2877). --define(wxGridEvent_Selecting, 2878). --define(wxGridEvent_ShiftDown, 2879). --define(wxNotifyEvent_Allow, 2880). --define(wxNotifyEvent_IsAllowed, 2881). --define(wxNotifyEvent_Veto, 2882). --define(wxSashEvent_GetEdge, 2883). --define(wxSashEvent_GetDragRect, 2884). --define(wxSashEvent_GetDragStatus, 2885). --define(wxListEvent_GetCacheFrom, 2886). --define(wxListEvent_GetCacheTo, 2887). --define(wxListEvent_GetKeyCode, 2888). --define(wxListEvent_GetIndex, 2889). --define(wxListEvent_GetColumn, 2890). --define(wxListEvent_GetPoint, 2891). --define(wxListEvent_GetLabel, 2892). --define(wxListEvent_GetText, 2893). --define(wxListEvent_GetImage, 2894). --define(wxListEvent_GetData, 2895). --define(wxListEvent_GetMask, 2896). --define(wxListEvent_GetItem, 2897). --define(wxListEvent_IsEditCancelled, 2898). --define(wxDateEvent_GetDate, 2899). --define(wxCalendarEvent_GetWeekDay, 2900). --define(wxFileDirPickerEvent_GetPath, 2901). --define(wxColourPickerEvent_GetColour, 2902). --define(wxFontPickerEvent_GetFont, 2903). --define(wxStyledTextEvent_GetPosition, 2904). --define(wxStyledTextEvent_GetKey, 2905). --define(wxStyledTextEvent_GetModifiers, 2906). --define(wxStyledTextEvent_GetModificationType, 2907). --define(wxStyledTextEvent_GetText, 2908). --define(wxStyledTextEvent_GetLength, 2909). --define(wxStyledTextEvent_GetLinesAdded, 2910). --define(wxStyledTextEvent_GetLine, 2911). --define(wxStyledTextEvent_GetFoldLevelNow, 2912). --define(wxStyledTextEvent_GetFoldLevelPrev, 2913). --define(wxStyledTextEvent_GetMargin, 2914). --define(wxStyledTextEvent_GetMessage, 2915). --define(wxStyledTextEvent_GetWParam, 2916). --define(wxStyledTextEvent_GetLParam, 2917). --define(wxStyledTextEvent_GetListType, 2918). --define(wxStyledTextEvent_GetX, 2919). --define(wxStyledTextEvent_GetY, 2920). --define(wxStyledTextEvent_GetDragText, 2921). --define(wxStyledTextEvent_GetDragAllowMove, 2922). --define(wxStyledTextEvent_GetDragResult, 2923). --define(wxStyledTextEvent_GetShift, 2924). --define(wxStyledTextEvent_GetControl, 2925). --define(wxStyledTextEvent_GetAlt, 2926). --define(utils_wxGetKeyState, 2927). --define(utils_wxGetMousePosition, 2928). --define(utils_wxGetMouseState, 2929). --define(utils_wxSetDetectableAutoRepeat, 2930). --define(utils_wxBell, 2931). --define(utils_wxFindMenuItemId, 2932). --define(utils_wxGenericFindWindowAtPoint, 2933). --define(utils_wxFindWindowAtPoint, 2934). --define(utils_wxBeginBusyCursor, 2935). --define(utils_wxEndBusyCursor, 2936). --define(utils_wxIsBusy, 2937). --define(utils_wxShutdown, 2938). --define(utils_wxShell, 2939). --define(utils_wxLaunchDefaultBrowser, 2940). --define(utils_wxGetEmailAddress, 2941). --define(utils_wxGetUserId, 2942). --define(utils_wxGetHomeDir, 2943). --define(utils_wxNewId, 2944). --define(utils_wxRegisterId, 2945). --define(utils_wxGetCurrentId, 2946). --define(utils_wxGetOsDescription, 2947). --define(utils_wxIsPlatformLittleEndian, 2948). --define(utils_wxIsPlatform64Bit, 2949). --define(gdicmn_wxDisplaySize, 2950). --define(gdicmn_wxSetCursor, 2951). --define(wxPrintout_new, 2952). --define(wxPrintout_destruct, 2953). --define(wxPrintout_GetDC, 2954). --define(wxPrintout_GetPageSizeMM, 2955). --define(wxPrintout_GetPageSizePixels, 2956). --define(wxPrintout_GetPaperRectPixels, 2957). --define(wxPrintout_GetPPIPrinter, 2958). --define(wxPrintout_GetPPIScreen, 2959). --define(wxPrintout_GetTitle, 2960). --define(wxPrintout_IsPreview, 2961). --define(wxPrintout_FitThisSizeToPaper, 2962). --define(wxPrintout_FitThisSizeToPage, 2963). --define(wxPrintout_FitThisSizeToPageMargins, 2964). --define(wxPrintout_MapScreenSizeToPaper, 2965). --define(wxPrintout_MapScreenSizeToPage, 2966). --define(wxPrintout_MapScreenSizeToPageMargins, 2967). --define(wxPrintout_MapScreenSizeToDevice, 2968). --define(wxPrintout_GetLogicalPaperRect, 2969). --define(wxPrintout_GetLogicalPageRect, 2970). --define(wxPrintout_GetLogicalPageMarginsRect, 2971). --define(wxPrintout_SetLogicalOrigin, 2972). --define(wxPrintout_OffsetLogicalOrigin, 2973). --define(wxStyledTextCtrl_new_2, 2974). --define(wxStyledTextCtrl_new_0, 2975). --define(wxStyledTextCtrl_destruct, 2976). --define(wxStyledTextCtrl_Create, 2977). --define(wxStyledTextCtrl_AddText, 2978). --define(wxStyledTextCtrl_AddStyledText, 2979). --define(wxStyledTextCtrl_InsertText, 2980). --define(wxStyledTextCtrl_ClearAll, 2981). --define(wxStyledTextCtrl_ClearDocumentStyle, 2982). --define(wxStyledTextCtrl_GetLength, 2983). --define(wxStyledTextCtrl_GetCharAt, 2984). --define(wxStyledTextCtrl_GetCurrentPos, 2985). --define(wxStyledTextCtrl_GetAnchor, 2986). --define(wxStyledTextCtrl_GetStyleAt, 2987). --define(wxStyledTextCtrl_Redo, 2988). --define(wxStyledTextCtrl_SetUndoCollection, 2989). --define(wxStyledTextCtrl_SelectAll, 2990). --define(wxStyledTextCtrl_SetSavePoint, 2991). --define(wxStyledTextCtrl_GetStyledText, 2992). --define(wxStyledTextCtrl_CanRedo, 2993). --define(wxStyledTextCtrl_MarkerLineFromHandle, 2994). --define(wxStyledTextCtrl_MarkerDeleteHandle, 2995). --define(wxStyledTextCtrl_GetUndoCollection, 2996). --define(wxStyledTextCtrl_GetViewWhiteSpace, 2997). --define(wxStyledTextCtrl_SetViewWhiteSpace, 2998). --define(wxStyledTextCtrl_PositionFromPoint, 2999). --define(wxStyledTextCtrl_PositionFromPointClose, 3000). --define(wxStyledTextCtrl_GotoLine, 3001). --define(wxStyledTextCtrl_GotoPos, 3002). --define(wxStyledTextCtrl_SetAnchor, 3003). --define(wxStyledTextCtrl_GetCurLine, 3004). --define(wxStyledTextCtrl_GetEndStyled, 3005). --define(wxStyledTextCtrl_ConvertEOLs, 3006). --define(wxStyledTextCtrl_GetEOLMode, 3007). --define(wxStyledTextCtrl_SetEOLMode, 3008). --define(wxStyledTextCtrl_StartStyling, 3009). --define(wxStyledTextCtrl_SetStyling, 3010). --define(wxStyledTextCtrl_GetBufferedDraw, 3011). --define(wxStyledTextCtrl_SetBufferedDraw, 3012). --define(wxStyledTextCtrl_SetTabWidth, 3013). --define(wxStyledTextCtrl_GetTabWidth, 3014). --define(wxStyledTextCtrl_SetCodePage, 3015). --define(wxStyledTextCtrl_MarkerDefine, 3016). --define(wxStyledTextCtrl_MarkerSetForeground, 3017). --define(wxStyledTextCtrl_MarkerSetBackground, 3018). --define(wxStyledTextCtrl_MarkerAdd, 3019). --define(wxStyledTextCtrl_MarkerDelete, 3020). --define(wxStyledTextCtrl_MarkerDeleteAll, 3021). --define(wxStyledTextCtrl_MarkerGet, 3022). --define(wxStyledTextCtrl_MarkerNext, 3023). --define(wxStyledTextCtrl_MarkerPrevious, 3024). --define(wxStyledTextCtrl_MarkerDefineBitmap, 3025). --define(wxStyledTextCtrl_MarkerAddSet, 3026). --define(wxStyledTextCtrl_MarkerSetAlpha, 3027). --define(wxStyledTextCtrl_SetMarginType, 3028). --define(wxStyledTextCtrl_GetMarginType, 3029). --define(wxStyledTextCtrl_SetMarginWidth, 3030). --define(wxStyledTextCtrl_GetMarginWidth, 3031). --define(wxStyledTextCtrl_SetMarginMask, 3032). --define(wxStyledTextCtrl_GetMarginMask, 3033). --define(wxStyledTextCtrl_SetMarginSensitive, 3034). --define(wxStyledTextCtrl_GetMarginSensitive, 3035). --define(wxStyledTextCtrl_StyleClearAll, 3036). --define(wxStyledTextCtrl_StyleSetForeground, 3037). --define(wxStyledTextCtrl_StyleSetBackground, 3038). --define(wxStyledTextCtrl_StyleSetBold, 3039). --define(wxStyledTextCtrl_StyleSetItalic, 3040). --define(wxStyledTextCtrl_StyleSetSize, 3041). --define(wxStyledTextCtrl_StyleSetFaceName, 3042). --define(wxStyledTextCtrl_StyleSetEOLFilled, 3043). --define(wxStyledTextCtrl_StyleResetDefault, 3044). --define(wxStyledTextCtrl_StyleSetUnderline, 3045). --define(wxStyledTextCtrl_StyleSetCase, 3046). --define(wxStyledTextCtrl_StyleSetHotSpot, 3047). --define(wxStyledTextCtrl_SetSelForeground, 3048). --define(wxStyledTextCtrl_SetSelBackground, 3049). --define(wxStyledTextCtrl_GetSelAlpha, 3050). --define(wxStyledTextCtrl_SetSelAlpha, 3051). --define(wxStyledTextCtrl_SetCaretForeground, 3052). --define(wxStyledTextCtrl_CmdKeyAssign, 3053). --define(wxStyledTextCtrl_CmdKeyClear, 3054). --define(wxStyledTextCtrl_CmdKeyClearAll, 3055). --define(wxStyledTextCtrl_SetStyleBytes, 3056). --define(wxStyledTextCtrl_StyleSetVisible, 3057). --define(wxStyledTextCtrl_GetCaretPeriod, 3058). --define(wxStyledTextCtrl_SetCaretPeriod, 3059). --define(wxStyledTextCtrl_SetWordChars, 3060). --define(wxStyledTextCtrl_BeginUndoAction, 3061). --define(wxStyledTextCtrl_EndUndoAction, 3062). --define(wxStyledTextCtrl_IndicatorSetStyle, 3063). --define(wxStyledTextCtrl_IndicatorGetStyle, 3064). --define(wxStyledTextCtrl_IndicatorSetForeground, 3065). --define(wxStyledTextCtrl_IndicatorGetForeground, 3066). --define(wxStyledTextCtrl_SetWhitespaceForeground, 3067). --define(wxStyledTextCtrl_SetWhitespaceBackground, 3068). --define(wxStyledTextCtrl_GetStyleBits, 3069). --define(wxStyledTextCtrl_SetLineState, 3070). --define(wxStyledTextCtrl_GetLineState, 3071). --define(wxStyledTextCtrl_GetMaxLineState, 3072). --define(wxStyledTextCtrl_GetCaretLineVisible, 3073). --define(wxStyledTextCtrl_SetCaretLineVisible, 3074). --define(wxStyledTextCtrl_GetCaretLineBackground, 3075). --define(wxStyledTextCtrl_SetCaretLineBackground, 3076). --define(wxStyledTextCtrl_AutoCompShow, 3077). --define(wxStyledTextCtrl_AutoCompCancel, 3078). --define(wxStyledTextCtrl_AutoCompActive, 3079). --define(wxStyledTextCtrl_AutoCompPosStart, 3080). --define(wxStyledTextCtrl_AutoCompComplete, 3081). --define(wxStyledTextCtrl_AutoCompStops, 3082). --define(wxStyledTextCtrl_AutoCompSetSeparator, 3083). --define(wxStyledTextCtrl_AutoCompGetSeparator, 3084). --define(wxStyledTextCtrl_AutoCompSelect, 3085). --define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3086). --define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3087). --define(wxStyledTextCtrl_AutoCompSetFillUps, 3088). --define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3089). --define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3090). --define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3091). --define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3092). --define(wxStyledTextCtrl_UserListShow, 3093). --define(wxStyledTextCtrl_AutoCompSetAutoHide, 3094). --define(wxStyledTextCtrl_AutoCompGetAutoHide, 3095). --define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3096). --define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3097). --define(wxStyledTextCtrl_RegisterImage, 3098). --define(wxStyledTextCtrl_ClearRegisteredImages, 3099). --define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3100). --define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3101). --define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3102). --define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3103). --define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3104). --define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3105). --define(wxStyledTextCtrl_SetIndent, 3106). --define(wxStyledTextCtrl_GetIndent, 3107). --define(wxStyledTextCtrl_SetUseTabs, 3108). --define(wxStyledTextCtrl_GetUseTabs, 3109). --define(wxStyledTextCtrl_SetLineIndentation, 3110). --define(wxStyledTextCtrl_GetLineIndentation, 3111). --define(wxStyledTextCtrl_GetLineIndentPosition, 3112). --define(wxStyledTextCtrl_GetColumn, 3113). --define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3114). --define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3115). --define(wxStyledTextCtrl_SetIndentationGuides, 3116). --define(wxStyledTextCtrl_GetIndentationGuides, 3117). --define(wxStyledTextCtrl_SetHighlightGuide, 3118). --define(wxStyledTextCtrl_GetHighlightGuide, 3119). --define(wxStyledTextCtrl_GetLineEndPosition, 3120). --define(wxStyledTextCtrl_GetCodePage, 3121). --define(wxStyledTextCtrl_GetCaretForeground, 3122). --define(wxStyledTextCtrl_GetReadOnly, 3123). --define(wxStyledTextCtrl_SetCurrentPos, 3124). --define(wxStyledTextCtrl_SetSelectionStart, 3125). --define(wxStyledTextCtrl_GetSelectionStart, 3126). --define(wxStyledTextCtrl_SetSelectionEnd, 3127). --define(wxStyledTextCtrl_GetSelectionEnd, 3128). --define(wxStyledTextCtrl_SetPrintMagnification, 3129). --define(wxStyledTextCtrl_GetPrintMagnification, 3130). --define(wxStyledTextCtrl_SetPrintColourMode, 3131). --define(wxStyledTextCtrl_GetPrintColourMode, 3132). --define(wxStyledTextCtrl_FindText, 3133). --define(wxStyledTextCtrl_FormatRange, 3134). --define(wxStyledTextCtrl_GetFirstVisibleLine, 3135). --define(wxStyledTextCtrl_GetLine, 3136). --define(wxStyledTextCtrl_GetLineCount, 3137). --define(wxStyledTextCtrl_SetMarginLeft, 3138). --define(wxStyledTextCtrl_GetMarginLeft, 3139). --define(wxStyledTextCtrl_SetMarginRight, 3140). --define(wxStyledTextCtrl_GetMarginRight, 3141). --define(wxStyledTextCtrl_GetModify, 3142). --define(wxStyledTextCtrl_SetSelection, 3143). --define(wxStyledTextCtrl_GetSelectedText, 3144). --define(wxStyledTextCtrl_GetTextRange, 3145). --define(wxStyledTextCtrl_HideSelection, 3146). --define(wxStyledTextCtrl_LineFromPosition, 3147). --define(wxStyledTextCtrl_PositionFromLine, 3148). --define(wxStyledTextCtrl_LineScroll, 3149). --define(wxStyledTextCtrl_EnsureCaretVisible, 3150). --define(wxStyledTextCtrl_ReplaceSelection, 3151). --define(wxStyledTextCtrl_SetReadOnly, 3152). --define(wxStyledTextCtrl_CanPaste, 3153). --define(wxStyledTextCtrl_CanUndo, 3154). --define(wxStyledTextCtrl_EmptyUndoBuffer, 3155). --define(wxStyledTextCtrl_Undo, 3156). --define(wxStyledTextCtrl_Cut, 3157). --define(wxStyledTextCtrl_Copy, 3158). --define(wxStyledTextCtrl_Paste, 3159). --define(wxStyledTextCtrl_Clear, 3160). --define(wxStyledTextCtrl_SetText, 3161). --define(wxStyledTextCtrl_GetText, 3162). --define(wxStyledTextCtrl_GetTextLength, 3163). --define(wxStyledTextCtrl_GetOvertype, 3164). --define(wxStyledTextCtrl_SetCaretWidth, 3165). --define(wxStyledTextCtrl_GetCaretWidth, 3166). --define(wxStyledTextCtrl_SetTargetStart, 3167). --define(wxStyledTextCtrl_GetTargetStart, 3168). --define(wxStyledTextCtrl_SetTargetEnd, 3169). --define(wxStyledTextCtrl_GetTargetEnd, 3170). --define(wxStyledTextCtrl_ReplaceTarget, 3171). --define(wxStyledTextCtrl_SearchInTarget, 3172). --define(wxStyledTextCtrl_SetSearchFlags, 3173). --define(wxStyledTextCtrl_GetSearchFlags, 3174). --define(wxStyledTextCtrl_CallTipShow, 3175). --define(wxStyledTextCtrl_CallTipCancel, 3176). --define(wxStyledTextCtrl_CallTipActive, 3177). --define(wxStyledTextCtrl_CallTipPosAtStart, 3178). --define(wxStyledTextCtrl_CallTipSetHighlight, 3179). --define(wxStyledTextCtrl_CallTipSetBackground, 3180). --define(wxStyledTextCtrl_CallTipSetForeground, 3181). --define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3182). --define(wxStyledTextCtrl_CallTipUseStyle, 3183). --define(wxStyledTextCtrl_VisibleFromDocLine, 3184). --define(wxStyledTextCtrl_DocLineFromVisible, 3185). --define(wxStyledTextCtrl_WrapCount, 3186). --define(wxStyledTextCtrl_SetFoldLevel, 3187). --define(wxStyledTextCtrl_GetFoldLevel, 3188). --define(wxStyledTextCtrl_GetLastChild, 3189). --define(wxStyledTextCtrl_GetFoldParent, 3190). --define(wxStyledTextCtrl_ShowLines, 3191). --define(wxStyledTextCtrl_HideLines, 3192). --define(wxStyledTextCtrl_GetLineVisible, 3193). --define(wxStyledTextCtrl_SetFoldExpanded, 3194). --define(wxStyledTextCtrl_GetFoldExpanded, 3195). --define(wxStyledTextCtrl_ToggleFold, 3196). --define(wxStyledTextCtrl_EnsureVisible, 3197). --define(wxStyledTextCtrl_SetFoldFlags, 3198). --define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3199). --define(wxStyledTextCtrl_SetTabIndents, 3200). --define(wxStyledTextCtrl_GetTabIndents, 3201). --define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3202). --define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3203). --define(wxStyledTextCtrl_SetMouseDwellTime, 3204). --define(wxStyledTextCtrl_GetMouseDwellTime, 3205). --define(wxStyledTextCtrl_WordStartPosition, 3206). --define(wxStyledTextCtrl_WordEndPosition, 3207). --define(wxStyledTextCtrl_SetWrapMode, 3208). --define(wxStyledTextCtrl_GetWrapMode, 3209). --define(wxStyledTextCtrl_SetWrapVisualFlags, 3210). --define(wxStyledTextCtrl_GetWrapVisualFlags, 3211). --define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3212). --define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3213). --define(wxStyledTextCtrl_SetWrapStartIndent, 3214). --define(wxStyledTextCtrl_GetWrapStartIndent, 3215). --define(wxStyledTextCtrl_SetLayoutCache, 3216). --define(wxStyledTextCtrl_GetLayoutCache, 3217). --define(wxStyledTextCtrl_SetScrollWidth, 3218). --define(wxStyledTextCtrl_GetScrollWidth, 3219). --define(wxStyledTextCtrl_TextWidth, 3220). --define(wxStyledTextCtrl_GetEndAtLastLine, 3221). --define(wxStyledTextCtrl_TextHeight, 3222). --define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3223). --define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3224). --define(wxStyledTextCtrl_AppendText, 3225). --define(wxStyledTextCtrl_GetTwoPhaseDraw, 3226). --define(wxStyledTextCtrl_SetTwoPhaseDraw, 3227). --define(wxStyledTextCtrl_TargetFromSelection, 3228). --define(wxStyledTextCtrl_LinesJoin, 3229). --define(wxStyledTextCtrl_LinesSplit, 3230). --define(wxStyledTextCtrl_SetFoldMarginColour, 3231). --define(wxStyledTextCtrl_SetFoldMarginHiColour, 3232). --define(wxStyledTextCtrl_LineDown, 3233). --define(wxStyledTextCtrl_LineDownExtend, 3234). --define(wxStyledTextCtrl_LineUp, 3235). --define(wxStyledTextCtrl_LineUpExtend, 3236). --define(wxStyledTextCtrl_CharLeft, 3237). --define(wxStyledTextCtrl_CharLeftExtend, 3238). --define(wxStyledTextCtrl_CharRight, 3239). --define(wxStyledTextCtrl_CharRightExtend, 3240). --define(wxStyledTextCtrl_WordLeft, 3241). --define(wxStyledTextCtrl_WordLeftExtend, 3242). --define(wxStyledTextCtrl_WordRight, 3243). --define(wxStyledTextCtrl_WordRightExtend, 3244). --define(wxStyledTextCtrl_Home, 3245). --define(wxStyledTextCtrl_HomeExtend, 3246). --define(wxStyledTextCtrl_LineEnd, 3247). --define(wxStyledTextCtrl_LineEndExtend, 3248). --define(wxStyledTextCtrl_DocumentStart, 3249). --define(wxStyledTextCtrl_DocumentStartExtend, 3250). --define(wxStyledTextCtrl_DocumentEnd, 3251). --define(wxStyledTextCtrl_DocumentEndExtend, 3252). --define(wxStyledTextCtrl_PageUp, 3253). --define(wxStyledTextCtrl_PageUpExtend, 3254). --define(wxStyledTextCtrl_PageDown, 3255). --define(wxStyledTextCtrl_PageDownExtend, 3256). --define(wxStyledTextCtrl_EditToggleOvertype, 3257). --define(wxStyledTextCtrl_Cancel, 3258). --define(wxStyledTextCtrl_DeleteBack, 3259). --define(wxStyledTextCtrl_Tab, 3260). --define(wxStyledTextCtrl_BackTab, 3261). --define(wxStyledTextCtrl_NewLine, 3262). --define(wxStyledTextCtrl_FormFeed, 3263). --define(wxStyledTextCtrl_VCHome, 3264). --define(wxStyledTextCtrl_VCHomeExtend, 3265). --define(wxStyledTextCtrl_ZoomIn, 3266). --define(wxStyledTextCtrl_ZoomOut, 3267). --define(wxStyledTextCtrl_DelWordLeft, 3268). --define(wxStyledTextCtrl_DelWordRight, 3269). --define(wxStyledTextCtrl_LineCut, 3270). --define(wxStyledTextCtrl_LineDelete, 3271). --define(wxStyledTextCtrl_LineTranspose, 3272). --define(wxStyledTextCtrl_LineDuplicate, 3273). --define(wxStyledTextCtrl_LowerCase, 3274). --define(wxStyledTextCtrl_UpperCase, 3275). --define(wxStyledTextCtrl_LineScrollDown, 3276). --define(wxStyledTextCtrl_LineScrollUp, 3277). --define(wxStyledTextCtrl_DeleteBackNotLine, 3278). --define(wxStyledTextCtrl_HomeDisplay, 3279). --define(wxStyledTextCtrl_HomeDisplayExtend, 3280). --define(wxStyledTextCtrl_LineEndDisplay, 3281). --define(wxStyledTextCtrl_LineEndDisplayExtend, 3282). --define(wxStyledTextCtrl_HomeWrapExtend, 3283). --define(wxStyledTextCtrl_LineEndWrap, 3284). --define(wxStyledTextCtrl_LineEndWrapExtend, 3285). --define(wxStyledTextCtrl_VCHomeWrap, 3286). --define(wxStyledTextCtrl_VCHomeWrapExtend, 3287). --define(wxStyledTextCtrl_LineCopy, 3288). --define(wxStyledTextCtrl_MoveCaretInsideView, 3289). --define(wxStyledTextCtrl_LineLength, 3290). --define(wxStyledTextCtrl_BraceHighlight, 3291). --define(wxStyledTextCtrl_BraceBadLight, 3292). --define(wxStyledTextCtrl_BraceMatch, 3293). --define(wxStyledTextCtrl_GetViewEOL, 3294). --define(wxStyledTextCtrl_SetViewEOL, 3295). --define(wxStyledTextCtrl_SetModEventMask, 3296). --define(wxStyledTextCtrl_GetEdgeColumn, 3297). --define(wxStyledTextCtrl_SetEdgeColumn, 3298). --define(wxStyledTextCtrl_SetEdgeMode, 3299). --define(wxStyledTextCtrl_GetEdgeMode, 3300). --define(wxStyledTextCtrl_GetEdgeColour, 3301). --define(wxStyledTextCtrl_SetEdgeColour, 3302). --define(wxStyledTextCtrl_SearchAnchor, 3303). --define(wxStyledTextCtrl_SearchNext, 3304). --define(wxStyledTextCtrl_SearchPrev, 3305). --define(wxStyledTextCtrl_LinesOnScreen, 3306). --define(wxStyledTextCtrl_UsePopUp, 3307). --define(wxStyledTextCtrl_SelectionIsRectangle, 3308). --define(wxStyledTextCtrl_SetZoom, 3309). --define(wxStyledTextCtrl_GetZoom, 3310). --define(wxStyledTextCtrl_GetModEventMask, 3311). --define(wxStyledTextCtrl_SetSTCFocus, 3312). --define(wxStyledTextCtrl_GetSTCFocus, 3313). --define(wxStyledTextCtrl_SetStatus, 3314). --define(wxStyledTextCtrl_GetStatus, 3315). --define(wxStyledTextCtrl_SetMouseDownCaptures, 3316). --define(wxStyledTextCtrl_GetMouseDownCaptures, 3317). --define(wxStyledTextCtrl_SetSTCCursor, 3318). --define(wxStyledTextCtrl_GetSTCCursor, 3319). --define(wxStyledTextCtrl_SetControlCharSymbol, 3320). --define(wxStyledTextCtrl_GetControlCharSymbol, 3321). --define(wxStyledTextCtrl_WordPartLeft, 3322). --define(wxStyledTextCtrl_WordPartLeftExtend, 3323). --define(wxStyledTextCtrl_WordPartRight, 3324). --define(wxStyledTextCtrl_WordPartRightExtend, 3325). --define(wxStyledTextCtrl_SetVisiblePolicy, 3326). --define(wxStyledTextCtrl_DelLineLeft, 3327). --define(wxStyledTextCtrl_DelLineRight, 3328). --define(wxStyledTextCtrl_GetXOffset, 3329). --define(wxStyledTextCtrl_ChooseCaretX, 3330). --define(wxStyledTextCtrl_SetXCaretPolicy, 3331). --define(wxStyledTextCtrl_SetYCaretPolicy, 3332). --define(wxStyledTextCtrl_GetPrintWrapMode, 3333). --define(wxStyledTextCtrl_SetHotspotActiveForeground, 3334). --define(wxStyledTextCtrl_SetHotspotActiveBackground, 3335). --define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3336). --define(wxStyledTextCtrl_SetHotspotSingleLine, 3337). --define(wxStyledTextCtrl_ParaDownExtend, 3338). --define(wxStyledTextCtrl_ParaUp, 3339). --define(wxStyledTextCtrl_ParaUpExtend, 3340). --define(wxStyledTextCtrl_PositionBefore, 3341). --define(wxStyledTextCtrl_PositionAfter, 3342). --define(wxStyledTextCtrl_CopyRange, 3343). --define(wxStyledTextCtrl_CopyText, 3344). --define(wxStyledTextCtrl_SetSelectionMode, 3345). --define(wxStyledTextCtrl_GetSelectionMode, 3346). --define(wxStyledTextCtrl_LineDownRectExtend, 3347). --define(wxStyledTextCtrl_LineUpRectExtend, 3348). --define(wxStyledTextCtrl_CharLeftRectExtend, 3349). --define(wxStyledTextCtrl_CharRightRectExtend, 3350). --define(wxStyledTextCtrl_HomeRectExtend, 3351). --define(wxStyledTextCtrl_VCHomeRectExtend, 3352). --define(wxStyledTextCtrl_LineEndRectExtend, 3353). --define(wxStyledTextCtrl_PageUpRectExtend, 3354). --define(wxStyledTextCtrl_PageDownRectExtend, 3355). --define(wxStyledTextCtrl_StutteredPageUp, 3356). --define(wxStyledTextCtrl_StutteredPageUpExtend, 3357). --define(wxStyledTextCtrl_StutteredPageDown, 3358). --define(wxStyledTextCtrl_StutteredPageDownExtend, 3359). --define(wxStyledTextCtrl_WordLeftEnd, 3360). --define(wxStyledTextCtrl_WordLeftEndExtend, 3361). --define(wxStyledTextCtrl_WordRightEnd, 3362). --define(wxStyledTextCtrl_WordRightEndExtend, 3363). --define(wxStyledTextCtrl_SetWhitespaceChars, 3364). --define(wxStyledTextCtrl_SetCharsDefault, 3365). --define(wxStyledTextCtrl_AutoCompGetCurrent, 3366). --define(wxStyledTextCtrl_Allocate, 3367). --define(wxStyledTextCtrl_FindColumn, 3368). --define(wxStyledTextCtrl_GetCaretSticky, 3369). --define(wxStyledTextCtrl_SetCaretSticky, 3370). --define(wxStyledTextCtrl_ToggleCaretSticky, 3371). --define(wxStyledTextCtrl_SetPasteConvertEndings, 3372). --define(wxStyledTextCtrl_GetPasteConvertEndings, 3373). --define(wxStyledTextCtrl_SelectionDuplicate, 3374). --define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3375). --define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3376). --define(wxStyledTextCtrl_StartRecord, 3377). --define(wxStyledTextCtrl_StopRecord, 3378). --define(wxStyledTextCtrl_SetLexer, 3379). --define(wxStyledTextCtrl_GetLexer, 3380). --define(wxStyledTextCtrl_Colourise, 3381). --define(wxStyledTextCtrl_SetProperty, 3382). --define(wxStyledTextCtrl_SetKeyWords, 3383). --define(wxStyledTextCtrl_SetLexerLanguage, 3384). --define(wxStyledTextCtrl_GetProperty, 3385). --define(wxStyledTextCtrl_GetStyleBitsNeeded, 3386). --define(wxStyledTextCtrl_GetCurrentLine, 3387). --define(wxStyledTextCtrl_StyleSetSpec, 3388). --define(wxStyledTextCtrl_StyleSetFont, 3389). --define(wxStyledTextCtrl_StyleSetFontAttr, 3390). --define(wxStyledTextCtrl_StyleSetCharacterSet, 3391). --define(wxStyledTextCtrl_StyleSetFontEncoding, 3392). --define(wxStyledTextCtrl_CmdKeyExecute, 3393). --define(wxStyledTextCtrl_SetMargins, 3394). --define(wxStyledTextCtrl_GetSelection, 3395). --define(wxStyledTextCtrl_PointFromPosition, 3396). --define(wxStyledTextCtrl_ScrollToLine, 3397). --define(wxStyledTextCtrl_ScrollToColumn, 3398). --define(wxStyledTextCtrl_SetVScrollBar, 3399). --define(wxStyledTextCtrl_SetHScrollBar, 3400). --define(wxStyledTextCtrl_GetLastKeydownProcessed, 3401). --define(wxStyledTextCtrl_SetLastKeydownProcessed, 3402). --define(wxStyledTextCtrl_SaveFile, 3403). --define(wxStyledTextCtrl_LoadFile, 3404). --define(wxStyledTextCtrl_DoDragOver, 3405). --define(wxStyledTextCtrl_DoDropText, 3406). --define(wxStyledTextCtrl_GetUseAntiAliasing, 3407). --define(wxStyledTextCtrl_AddTextRaw, 3408). --define(wxStyledTextCtrl_InsertTextRaw, 3409). --define(wxStyledTextCtrl_GetCurLineRaw, 3410). --define(wxStyledTextCtrl_GetLineRaw, 3411). --define(wxStyledTextCtrl_GetSelectedTextRaw, 3412). --define(wxStyledTextCtrl_GetTextRangeRaw, 3413). --define(wxStyledTextCtrl_SetTextRaw, 3414). --define(wxStyledTextCtrl_GetTextRaw, 3415). --define(wxStyledTextCtrl_AppendTextRaw, 3416). --define(wxArtProvider_GetBitmap, 3417). --define(wxArtProvider_GetIcon, 3418). --define(wxTreeEvent_GetKeyCode, 3419). --define(wxTreeEvent_GetItem, 3420). --define(wxTreeEvent_GetKeyEvent, 3421). --define(wxTreeEvent_GetLabel, 3422). --define(wxTreeEvent_GetOldItem, 3423). --define(wxTreeEvent_GetPoint, 3424). --define(wxTreeEvent_IsEditCancelled, 3425). --define(wxTreeEvent_SetToolTip, 3426). --define(wxNotebookEvent_GetOldSelection, 3427). --define(wxNotebookEvent_GetSelection, 3428). --define(wxNotebookEvent_SetOldSelection, 3429). --define(wxNotebookEvent_SetSelection, 3430). --define(wxFileDataObject_new, 3431). --define(wxFileDataObject_AddFile, 3432). --define(wxFileDataObject_GetFilenames, 3433). --define(wxFileDataObject_destroy, 3434). --define(wxTextDataObject_new, 3435). --define(wxTextDataObject_GetTextLength, 3436). --define(wxTextDataObject_GetText, 3437). --define(wxTextDataObject_SetText, 3438). --define(wxTextDataObject_destroy, 3439). --define(wxBitmapDataObject_new_1_1, 3440). --define(wxBitmapDataObject_new_1_0, 3441). --define(wxBitmapDataObject_GetBitmap, 3442). --define(wxBitmapDataObject_SetBitmap, 3443). --define(wxBitmapDataObject_destroy, 3444). --define(wxClipboard_new, 3446). --define(wxClipboard_destruct, 3447). --define(wxClipboard_AddData, 3448). --define(wxClipboard_Clear, 3449). --define(wxClipboard_Close, 3450). --define(wxClipboard_Flush, 3451). --define(wxClipboard_GetData, 3452). --define(wxClipboard_IsOpened, 3453). --define(wxClipboard_Open, 3454). --define(wxClipboard_SetData, 3455). --define(wxClipboard_UsePrimarySelection, 3457). --define(wxClipboard_IsSupported, 3458). --define(wxClipboard_Get, 3459). --define(wxSpinEvent_GetPosition, 3460). --define(wxSpinEvent_SetPosition, 3461). --define(wxSplitterWindow_new_0, 3462). --define(wxSplitterWindow_new_2, 3463). --define(wxSplitterWindow_destruct, 3464). --define(wxSplitterWindow_Create, 3465). --define(wxSplitterWindow_GetMinimumPaneSize, 3466). --define(wxSplitterWindow_GetSashGravity, 3467). --define(wxSplitterWindow_GetSashPosition, 3468). --define(wxSplitterWindow_GetSplitMode, 3469). --define(wxSplitterWindow_GetWindow1, 3470). --define(wxSplitterWindow_GetWindow2, 3471). --define(wxSplitterWindow_Initialize, 3472). --define(wxSplitterWindow_IsSplit, 3473). --define(wxSplitterWindow_ReplaceWindow, 3474). --define(wxSplitterWindow_SetSashGravity, 3475). --define(wxSplitterWindow_SetSashPosition, 3476). --define(wxSplitterWindow_SetSashSize, 3477). --define(wxSplitterWindow_SetMinimumPaneSize, 3478). --define(wxSplitterWindow_SetSplitMode, 3479). --define(wxSplitterWindow_SplitHorizontally, 3480). --define(wxSplitterWindow_SplitVertically, 3481). --define(wxSplitterWindow_Unsplit, 3482). --define(wxSplitterWindow_UpdateSize, 3483). --define(wxSplitterEvent_GetSashPosition, 3484). --define(wxSplitterEvent_GetX, 3485). --define(wxSplitterEvent_GetY, 3486). --define(wxSplitterEvent_GetWindowBeingRemoved, 3487). --define(wxSplitterEvent_SetSashPosition, 3488). --define(wxHtmlWindow_new_0, 3489). --define(wxHtmlWindow_new_2, 3490). --define(wxHtmlWindow_AppendToPage, 3491). --define(wxHtmlWindow_GetOpenedAnchor, 3492). --define(wxHtmlWindow_GetOpenedPage, 3493). --define(wxHtmlWindow_GetOpenedPageTitle, 3494). --define(wxHtmlWindow_GetRelatedFrame, 3495). --define(wxHtmlWindow_HistoryBack, 3496). --define(wxHtmlWindow_HistoryCanBack, 3497). --define(wxHtmlWindow_HistoryCanForward, 3498). --define(wxHtmlWindow_HistoryClear, 3499). --define(wxHtmlWindow_HistoryForward, 3500). --define(wxHtmlWindow_LoadFile, 3501). --define(wxHtmlWindow_LoadPage, 3502). --define(wxHtmlWindow_SelectAll, 3503). --define(wxHtmlWindow_SelectionToText, 3504). --define(wxHtmlWindow_SelectLine, 3505). --define(wxHtmlWindow_SelectWord, 3506). --define(wxHtmlWindow_SetBorders, 3507). --define(wxHtmlWindow_SetFonts, 3508). --define(wxHtmlWindow_SetPage, 3509). --define(wxHtmlWindow_SetRelatedFrame, 3510). --define(wxHtmlWindow_SetRelatedStatusBar, 3511). --define(wxHtmlWindow_ToText, 3512). --define(wxHtmlWindow_destroy, 3513). --define(wxHtmlLinkEvent_GetLinkInfo, 3514). --define(wxSystemSettings_GetColour, 3515). --define(wxSystemSettings_GetFont, 3516). --define(wxSystemSettings_GetMetric, 3517). --define(wxSystemSettings_GetScreenType, 3518). --define(wxSystemOptions_GetOption, 3519). --define(wxSystemOptions_GetOptionInt, 3520). --define(wxSystemOptions_HasOption, 3521). --define(wxSystemOptions_IsFalse, 3522). --define(wxSystemOptions_SetOption_2_1, 3523). --define(wxSystemOptions_SetOption_2_0, 3524). --define(wxAuiNotebookEvent_SetSelection, 3525). --define(wxAuiNotebookEvent_GetSelection, 3526). --define(wxAuiNotebookEvent_SetOldSelection, 3527). --define(wxAuiNotebookEvent_GetOldSelection, 3528). --define(wxAuiNotebookEvent_SetDragSource, 3529). --define(wxAuiNotebookEvent_GetDragSource, 3530). --define(wxAuiManagerEvent_SetManager, 3531). --define(wxAuiManagerEvent_GetManager, 3532). --define(wxAuiManagerEvent_SetPane, 3533). --define(wxAuiManagerEvent_GetPane, 3534). --define(wxAuiManagerEvent_SetButton, 3535). --define(wxAuiManagerEvent_GetButton, 3536). --define(wxAuiManagerEvent_SetDC, 3537). --define(wxAuiManagerEvent_GetDC, 3538). --define(wxAuiManagerEvent_Veto, 3539). --define(wxAuiManagerEvent_GetVeto, 3540). --define(wxAuiManagerEvent_SetCanVeto, 3541). --define(wxAuiManagerEvent_CanVeto, 3542). --define(wxLogNull_new, 3543). --define(wxLogNull_destroy, 3544). --define(wxTaskBarIcon_new, 3545). --define(wxTaskBarIcon_destruct, 3546). --define(wxTaskBarIcon_PopupMenu, 3547). --define(wxTaskBarIcon_RemoveIcon, 3548). --define(wxTaskBarIcon_SetIcon, 3549). --define(wxLocale_new_0, 3550). --define(wxLocale_new_2, 3552). --define(wxLocale_destruct, 3553). --define(wxLocale_Init, 3555). --define(wxLocale_AddCatalog_1, 3556). --define(wxLocale_AddCatalog_3, 3557). --define(wxLocale_AddCatalogLookupPathPrefix, 3558). --define(wxLocale_GetCanonicalName, 3559). --define(wxLocale_GetLanguage, 3560). --define(wxLocale_GetLanguageName, 3561). --define(wxLocale_GetLocale, 3562). --define(wxLocale_GetName, 3563). --define(wxLocale_GetString_2, 3564). --define(wxLocale_GetString_4, 3565). --define(wxLocale_GetHeaderValue, 3566). --define(wxLocale_GetSysName, 3567). --define(wxLocale_GetSystemEncoding, 3568). --define(wxLocale_GetSystemEncodingName, 3569). --define(wxLocale_GetSystemLanguage, 3570). --define(wxLocale_IsLoaded, 3571). --define(wxLocale_IsOk, 3572). --define(wxActivateEvent_GetActive, 3573). --define(wxPopupWindow_new_2, 3575). --define(wxPopupWindow_new_0, 3576). --define(wxPopupWindow_destruct, 3578). --define(wxPopupWindow_Create, 3579). --define(wxPopupWindow_Position, 3580). --define(wxPopupTransientWindow_new_0, 3581). --define(wxPopupTransientWindow_new_2, 3582). --define(wxPopupTransientWindow_destruct, 3583). --define(wxPopupTransientWindow_Popup, 3584). --define(wxPopupTransientWindow_Dismiss, 3585). --define(wxOverlay_new, 3586). --define(wxOverlay_destruct, 3587). --define(wxOverlay_Reset, 3588). --define(wxDCOverlay_new_6, 3589). --define(wxDCOverlay_new_2, 3590). --define(wxDCOverlay_destruct, 3591). --define(wxDCOverlay_Clear, 3592). +-define(wxToolBar_AddStretchableSpace, 984). +-define(wxToolBar_InsertStretchableSpace, 985). +-define(wxToolBar_DeleteTool, 986). +-define(wxToolBar_DeleteToolByPos, 987). +-define(wxToolBar_EnableTool, 988). +-define(wxToolBar_FindById, 989). +-define(wxToolBar_FindControl, 990). +-define(wxToolBar_FindToolForPosition, 991). +-define(wxToolBar_GetToolSize, 992). +-define(wxToolBar_GetToolBitmapSize, 993). +-define(wxToolBar_GetMargins, 994). +-define(wxToolBar_GetToolEnabled, 995). +-define(wxToolBar_GetToolLongHelp, 996). +-define(wxToolBar_GetToolPacking, 997). +-define(wxToolBar_GetToolPos, 998). +-define(wxToolBar_GetToolSeparation, 999). +-define(wxToolBar_GetToolShortHelp, 1000). +-define(wxToolBar_GetToolState, 1001). +-define(wxToolBar_InsertControl, 1002). +-define(wxToolBar_InsertSeparator, 1003). +-define(wxToolBar_InsertTool_5, 1004). +-define(wxToolBar_InsertTool_2, 1005). +-define(wxToolBar_InsertTool_4, 1006). +-define(wxToolBar_Realize, 1007). +-define(wxToolBar_RemoveTool, 1008). +-define(wxToolBar_SetMargins, 1009). +-define(wxToolBar_SetToolBitmapSize, 1010). +-define(wxToolBar_SetToolLongHelp, 1011). +-define(wxToolBar_SetToolPacking, 1012). +-define(wxToolBar_SetToolShortHelp, 1013). +-define(wxToolBar_SetToolSeparation, 1014). +-define(wxToolBar_ToggleTool, 1015). +-define(wxStatusBar_new_0, 1017). +-define(wxStatusBar_new_2, 1018). +-define(wxStatusBar_destruct, 1020). +-define(wxStatusBar_Create, 1021). +-define(wxStatusBar_GetFieldRect, 1022). +-define(wxStatusBar_GetFieldsCount, 1023). +-define(wxStatusBar_GetStatusText, 1024). +-define(wxStatusBar_PopStatusText, 1025). +-define(wxStatusBar_PushStatusText, 1026). +-define(wxStatusBar_SetFieldsCount, 1027). +-define(wxStatusBar_SetMinHeight, 1028). +-define(wxStatusBar_SetStatusText, 1029). +-define(wxStatusBar_SetStatusWidths, 1030). +-define(wxStatusBar_SetStatusStyles, 1031). +-define(wxBitmap_new_0, 1032). +-define(wxBitmap_new_3, 1033). +-define(wxBitmap_new_4, 1034). +-define(wxBitmap_new_2_0, 1035). +-define(wxBitmap_new_2_1, 1036). +-define(wxBitmap_destruct, 1037). +-define(wxBitmap_ConvertToImage, 1038). +-define(wxBitmap_CopyFromIcon, 1039). +-define(wxBitmap_Create, 1040). +-define(wxBitmap_GetDepth, 1041). +-define(wxBitmap_GetHeight, 1042). +-define(wxBitmap_GetPalette, 1043). +-define(wxBitmap_GetMask, 1044). +-define(wxBitmap_GetWidth, 1045). +-define(wxBitmap_GetSubBitmap, 1046). +-define(wxBitmap_LoadFile, 1047). +-define(wxBitmap_Ok, 1048). +-define(wxBitmap_SaveFile, 1049). +-define(wxBitmap_SetDepth, 1050). +-define(wxBitmap_SetHeight, 1051). +-define(wxBitmap_SetMask, 1052). +-define(wxBitmap_SetPalette, 1053). +-define(wxBitmap_SetWidth, 1054). +-define(wxIcon_new_0, 1055). +-define(wxIcon_new_2, 1056). +-define(wxIcon_new_1, 1057). +-define(wxIcon_CopyFromBitmap, 1058). +-define(wxIcon_destroy, 1059). +-define(wxIconBundle_new_0, 1060). +-define(wxIconBundle_new_2, 1061). +-define(wxIconBundle_new_1_0, 1062). +-define(wxIconBundle_new_1_1, 1063). +-define(wxIconBundle_destruct, 1064). +-define(wxIconBundle_AddIcon_2, 1065). +-define(wxIconBundle_AddIcon_1, 1066). +-define(wxIconBundle_GetIcon_1_1, 1067). +-define(wxIconBundle_GetIcon_1_0, 1068). +-define(wxCursor_new_0, 1069). +-define(wxCursor_new_1_0, 1070). +-define(wxCursor_new_1_1, 1071). +-define(wxCursor_new_4, 1072). +-define(wxCursor_destruct, 1073). +-define(wxCursor_Ok, 1074). +-define(wxMask_new_0, 1075). +-define(wxMask_new_2_1, 1076). +-define(wxMask_new_2_0, 1077). +-define(wxMask_new_1, 1078). +-define(wxMask_destruct, 1079). +-define(wxMask_Create_2_1, 1080). +-define(wxMask_Create_2_0, 1081). +-define(wxMask_Create_1, 1082). +-define(wxImage_new_0, 1083). +-define(wxImage_new_3_0, 1084). +-define(wxImage_new_4, 1085). +-define(wxImage_new_5, 1086). +-define(wxImage_new_2, 1087). +-define(wxImage_new_3_1, 1088). +-define(wxImage_Blur, 1089). +-define(wxImage_BlurHorizontal, 1090). +-define(wxImage_BlurVertical, 1091). +-define(wxImage_ConvertAlphaToMask, 1092). +-define(wxImage_ConvertToGreyscale, 1093). +-define(wxImage_ConvertToMono, 1094). +-define(wxImage_Copy, 1095). +-define(wxImage_Create_3, 1096). +-define(wxImage_Create_4, 1097). +-define(wxImage_Create_5, 1098). +-define(wxImage_Destroy, 1099). +-define(wxImage_FindFirstUnusedColour, 1100). +-define(wxImage_GetImageExtWildcard, 1101). +-define(wxImage_GetAlpha_2, 1102). +-define(wxImage_GetAlpha_0, 1103). +-define(wxImage_GetBlue, 1104). +-define(wxImage_GetData, 1105). +-define(wxImage_GetGreen, 1106). +-define(wxImage_GetImageCount, 1107). +-define(wxImage_GetHeight, 1108). +-define(wxImage_GetMaskBlue, 1109). +-define(wxImage_GetMaskGreen, 1110). +-define(wxImage_GetMaskRed, 1111). +-define(wxImage_GetOrFindMaskColour, 1112). +-define(wxImage_GetPalette, 1113). +-define(wxImage_GetRed, 1114). +-define(wxImage_GetSubImage, 1115). +-define(wxImage_GetWidth, 1116). +-define(wxImage_HasAlpha, 1117). +-define(wxImage_HasMask, 1118). +-define(wxImage_GetOption, 1119). +-define(wxImage_GetOptionInt, 1120). +-define(wxImage_HasOption, 1121). +-define(wxImage_InitAlpha, 1122). +-define(wxImage_InitStandardHandlers, 1123). +-define(wxImage_IsTransparent, 1124). +-define(wxImage_LoadFile_2, 1125). +-define(wxImage_LoadFile_3, 1126). +-define(wxImage_Ok, 1127). +-define(wxImage_RemoveHandler, 1128). +-define(wxImage_Mirror, 1129). +-define(wxImage_Replace, 1130). +-define(wxImage_Rescale, 1131). +-define(wxImage_Resize, 1132). +-define(wxImage_Rotate, 1133). +-define(wxImage_RotateHue, 1134). +-define(wxImage_Rotate90, 1135). +-define(wxImage_SaveFile_1, 1136). +-define(wxImage_SaveFile_2_0, 1137). +-define(wxImage_SaveFile_2_1, 1138). +-define(wxImage_Scale, 1139). +-define(wxImage_Size, 1140). +-define(wxImage_SetAlpha_3, 1141). +-define(wxImage_SetAlpha_2, 1142). +-define(wxImage_SetData_2, 1143). +-define(wxImage_SetData_4, 1144). +-define(wxImage_SetMask, 1145). +-define(wxImage_SetMaskColour, 1146). +-define(wxImage_SetMaskFromImage, 1147). +-define(wxImage_SetOption_2_1, 1148). +-define(wxImage_SetOption_2_0, 1149). +-define(wxImage_SetPalette, 1150). +-define(wxImage_SetRGB_5, 1151). +-define(wxImage_SetRGB_4, 1152). +-define(wxImage_destroy, 1153). +-define(wxBrush_new_0, 1154). +-define(wxBrush_new_2, 1155). +-define(wxBrush_new_1, 1156). +-define(wxBrush_destruct, 1158). +-define(wxBrush_GetColour, 1159). +-define(wxBrush_GetStipple, 1160). +-define(wxBrush_GetStyle, 1161). +-define(wxBrush_IsHatch, 1162). +-define(wxBrush_IsOk, 1163). +-define(wxBrush_SetColour_1, 1164). +-define(wxBrush_SetColour_3, 1165). +-define(wxBrush_SetStipple, 1166). +-define(wxBrush_SetStyle, 1167). +-define(wxPen_new_0, 1168). +-define(wxPen_new_2, 1169). +-define(wxPen_destruct, 1170). +-define(wxPen_GetCap, 1171). +-define(wxPen_GetColour, 1172). +-define(wxPen_GetJoin, 1173). +-define(wxPen_GetStyle, 1174). +-define(wxPen_GetWidth, 1175). +-define(wxPen_IsOk, 1176). +-define(wxPen_SetCap, 1177). +-define(wxPen_SetColour_1, 1178). +-define(wxPen_SetColour_3, 1179). +-define(wxPen_SetJoin, 1180). +-define(wxPen_SetStyle, 1181). +-define(wxPen_SetWidth, 1182). +-define(wxRegion_new_0, 1183). +-define(wxRegion_new_4, 1184). +-define(wxRegion_new_2, 1185). +-define(wxRegion_new_1_1, 1186). +-define(wxRegion_new_1_0, 1188). +-define(wxRegion_destruct, 1190). +-define(wxRegion_Clear, 1191). +-define(wxRegion_Contains_2, 1192). +-define(wxRegion_Contains_1_0, 1193). +-define(wxRegion_Contains_4, 1194). +-define(wxRegion_Contains_1_1, 1195). +-define(wxRegion_ConvertToBitmap, 1196). +-define(wxRegion_GetBox, 1197). +-define(wxRegion_Intersect_4, 1198). +-define(wxRegion_Intersect_1_1, 1199). +-define(wxRegion_Intersect_1_0, 1200). +-define(wxRegion_IsEmpty, 1201). +-define(wxRegion_Subtract_4, 1202). +-define(wxRegion_Subtract_1_1, 1203). +-define(wxRegion_Subtract_1_0, 1204). +-define(wxRegion_Offset_2, 1205). +-define(wxRegion_Offset_1, 1206). +-define(wxRegion_Union_4, 1207). +-define(wxRegion_Union_1_2, 1208). +-define(wxRegion_Union_1_1, 1209). +-define(wxRegion_Union_1_0, 1210). +-define(wxRegion_Union_3, 1211). +-define(wxRegion_Xor_4, 1212). +-define(wxRegion_Xor_1_1, 1213). +-define(wxRegion_Xor_1_0, 1214). +-define(wxAcceleratorTable_new_0, 1215). +-define(wxAcceleratorTable_new_2, 1216). +-define(wxAcceleratorTable_destruct, 1217). +-define(wxAcceleratorTable_Ok, 1218). +-define(wxAcceleratorEntry_new_1_0, 1219). +-define(wxAcceleratorEntry_new_1_1, 1220). +-define(wxAcceleratorEntry_GetCommand, 1221). +-define(wxAcceleratorEntry_GetFlags, 1222). +-define(wxAcceleratorEntry_GetKeyCode, 1223). +-define(wxAcceleratorEntry_Set, 1224). +-define(wxAcceleratorEntry_destroy, 1225). +-define(wxCaret_new_3, 1230). +-define(wxCaret_new_2, 1231). +-define(wxCaret_destruct, 1233). +-define(wxCaret_Create_3, 1234). +-define(wxCaret_Create_2, 1235). +-define(wxCaret_GetBlinkTime, 1236). +-define(wxCaret_GetPosition, 1238). +-define(wxCaret_GetSize, 1240). +-define(wxCaret_GetWindow, 1241). +-define(wxCaret_Hide, 1242). +-define(wxCaret_IsOk, 1243). +-define(wxCaret_IsVisible, 1244). +-define(wxCaret_Move_2, 1245). +-define(wxCaret_Move_1, 1246). +-define(wxCaret_SetBlinkTime, 1247). +-define(wxCaret_SetSize_2, 1248). +-define(wxCaret_SetSize_1, 1249). +-define(wxCaret_Show, 1250). +-define(wxSizer_Add_2_1, 1251). +-define(wxSizer_Add_2_0, 1252). +-define(wxSizer_Add_3, 1253). +-define(wxSizer_Add_2_3, 1254). +-define(wxSizer_Add_2_2, 1255). +-define(wxSizer_AddSpacer, 1256). +-define(wxSizer_AddStretchSpacer, 1257). +-define(wxSizer_CalcMin, 1258). +-define(wxSizer_Clear, 1259). +-define(wxSizer_Detach_1_2, 1260). +-define(wxSizer_Detach_1_1, 1261). +-define(wxSizer_Detach_1_0, 1262). +-define(wxSizer_Fit, 1263). +-define(wxSizer_FitInside, 1264). +-define(wxSizer_GetChildren, 1265). +-define(wxSizer_GetItem_2_1, 1266). +-define(wxSizer_GetItem_2_0, 1267). +-define(wxSizer_GetItem_1, 1268). +-define(wxSizer_GetSize, 1269). +-define(wxSizer_GetPosition, 1270). +-define(wxSizer_GetMinSize, 1271). +-define(wxSizer_Hide_2_0, 1272). +-define(wxSizer_Hide_2_1, 1273). +-define(wxSizer_Hide_1, 1274). +-define(wxSizer_Insert_3_1, 1275). +-define(wxSizer_Insert_3_0, 1276). +-define(wxSizer_Insert_4, 1277). +-define(wxSizer_Insert_3_3, 1278). +-define(wxSizer_Insert_3_2, 1279). +-define(wxSizer_Insert_2, 1280). +-define(wxSizer_InsertSpacer, 1281). +-define(wxSizer_InsertStretchSpacer, 1282). +-define(wxSizer_IsShown_1_2, 1283). +-define(wxSizer_IsShown_1_1, 1284). +-define(wxSizer_IsShown_1_0, 1285). +-define(wxSizer_Layout, 1286). +-define(wxSizer_Prepend_2_1, 1287). +-define(wxSizer_Prepend_2_0, 1288). +-define(wxSizer_Prepend_3, 1289). +-define(wxSizer_Prepend_2_3, 1290). +-define(wxSizer_Prepend_2_2, 1291). +-define(wxSizer_Prepend_1, 1292). +-define(wxSizer_PrependSpacer, 1293). +-define(wxSizer_PrependStretchSpacer, 1294). +-define(wxSizer_RecalcSizes, 1295). +-define(wxSizer_Remove_1_1, 1296). +-define(wxSizer_Remove_1_0, 1297). +-define(wxSizer_Replace_3_1, 1298). +-define(wxSizer_Replace_3_0, 1299). +-define(wxSizer_Replace_2, 1300). +-define(wxSizer_SetDimension, 1301). +-define(wxSizer_SetMinSize_2, 1302). +-define(wxSizer_SetMinSize_1, 1303). +-define(wxSizer_SetItemMinSize_3_2, 1304). +-define(wxSizer_SetItemMinSize_2_2, 1305). +-define(wxSizer_SetItemMinSize_3_1, 1306). +-define(wxSizer_SetItemMinSize_2_1, 1307). +-define(wxSizer_SetItemMinSize_3_0, 1308). +-define(wxSizer_SetItemMinSize_2_0, 1309). +-define(wxSizer_SetSizeHints, 1310). +-define(wxSizer_SetVirtualSizeHints, 1311). +-define(wxSizer_Show_2_2, 1312). +-define(wxSizer_Show_2_1, 1313). +-define(wxSizer_Show_2_0, 1314). +-define(wxSizer_Show_1, 1315). +-define(wxSizerFlags_new, 1316). +-define(wxSizerFlags_Align, 1317). +-define(wxSizerFlags_Border_2, 1318). +-define(wxSizerFlags_Border_1, 1319). +-define(wxSizerFlags_Center, 1320). +-define(wxSizerFlags_Centre, 1321). +-define(wxSizerFlags_Expand, 1322). +-define(wxSizerFlags_Left, 1323). +-define(wxSizerFlags_Proportion, 1324). +-define(wxSizerFlags_Right, 1325). +-define(wxSizerFlags_destroy, 1326). +-define(wxSizerItem_new_5_1, 1327). +-define(wxSizerItem_new_2_1, 1328). +-define(wxSizerItem_new_5_0, 1329). +-define(wxSizerItem_new_2_0, 1330). +-define(wxSizerItem_new_6, 1331). +-define(wxSizerItem_new_3, 1332). +-define(wxSizerItem_new_0, 1333). +-define(wxSizerItem_destruct, 1334). +-define(wxSizerItem_CalcMin, 1335). +-define(wxSizerItem_DeleteWindows, 1336). +-define(wxSizerItem_DetachSizer, 1337). +-define(wxSizerItem_GetBorder, 1338). +-define(wxSizerItem_GetFlag, 1339). +-define(wxSizerItem_GetMinSize, 1340). +-define(wxSizerItem_GetPosition, 1341). +-define(wxSizerItem_GetProportion, 1342). +-define(wxSizerItem_GetRatio, 1343). +-define(wxSizerItem_GetRect, 1344). +-define(wxSizerItem_GetSize, 1345). +-define(wxSizerItem_GetSizer, 1346). +-define(wxSizerItem_GetSpacer, 1347). +-define(wxSizerItem_GetUserData, 1348). +-define(wxSizerItem_GetWindow, 1349). +-define(wxSizerItem_IsSizer, 1350). +-define(wxSizerItem_IsShown, 1351). +-define(wxSizerItem_IsSpacer, 1352). +-define(wxSizerItem_IsWindow, 1353). +-define(wxSizerItem_SetBorder, 1354). +-define(wxSizerItem_SetDimension, 1355). +-define(wxSizerItem_SetFlag, 1356). +-define(wxSizerItem_SetInitSize, 1357). +-define(wxSizerItem_SetMinSize_1, 1358). +-define(wxSizerItem_SetMinSize_2, 1359). +-define(wxSizerItem_SetProportion, 1360). +-define(wxSizerItem_SetRatio_2, 1361). +-define(wxSizerItem_SetRatio_1_1, 1362). +-define(wxSizerItem_SetRatio_1_0, 1363). +-define(wxSizerItem_SetSizer, 1364). +-define(wxSizerItem_SetSpacer_1, 1365). +-define(wxSizerItem_SetSpacer_2, 1366). +-define(wxSizerItem_SetWindow, 1367). +-define(wxSizerItem_Show, 1368). +-define(wxBoxSizer_new, 1369). +-define(wxBoxSizer_GetOrientation, 1370). +-define(wxBoxSizer_destroy, 1371). +-define(wxStaticBoxSizer_new_2, 1372). +-define(wxStaticBoxSizer_new_3, 1373). +-define(wxStaticBoxSizer_GetStaticBox, 1374). +-define(wxStaticBoxSizer_destroy, 1375). +-define(wxGridSizer_new_4, 1376). +-define(wxGridSizer_new_2, 1377). +-define(wxGridSizer_GetCols, 1378). +-define(wxGridSizer_GetHGap, 1379). +-define(wxGridSizer_GetRows, 1380). +-define(wxGridSizer_GetVGap, 1381). +-define(wxGridSizer_SetCols, 1382). +-define(wxGridSizer_SetHGap, 1383). +-define(wxGridSizer_SetRows, 1384). +-define(wxGridSizer_SetVGap, 1385). +-define(wxGridSizer_destroy, 1386). +-define(wxFlexGridSizer_new_4, 1387). +-define(wxFlexGridSizer_new_2, 1388). +-define(wxFlexGridSizer_AddGrowableCol, 1389). +-define(wxFlexGridSizer_AddGrowableRow, 1390). +-define(wxFlexGridSizer_GetFlexibleDirection, 1391). +-define(wxFlexGridSizer_GetNonFlexibleGrowMode, 1392). +-define(wxFlexGridSizer_RemoveGrowableCol, 1393). +-define(wxFlexGridSizer_RemoveGrowableRow, 1394). +-define(wxFlexGridSizer_SetFlexibleDirection, 1395). +-define(wxFlexGridSizer_SetNonFlexibleGrowMode, 1396). +-define(wxFlexGridSizer_destroy, 1397). +-define(wxGridBagSizer_new, 1398). +-define(wxGridBagSizer_Add_3_2, 1399). +-define(wxGridBagSizer_Add_3_1, 1400). +-define(wxGridBagSizer_Add_4, 1401). +-define(wxGridBagSizer_Add_1_0, 1402). +-define(wxGridBagSizer_Add_2_1, 1403). +-define(wxGridBagSizer_Add_2_0, 1404). +-define(wxGridBagSizer_Add_3_0, 1405). +-define(wxGridBagSizer_Add_1_1, 1406). +-define(wxGridBagSizer_CalcMin, 1407). +-define(wxGridBagSizer_CheckForIntersection_2, 1408). +-define(wxGridBagSizer_CheckForIntersection_3, 1409). +-define(wxGridBagSizer_FindItem_1_1, 1410). +-define(wxGridBagSizer_FindItem_1_0, 1411). +-define(wxGridBagSizer_FindItemAtPoint, 1412). +-define(wxGridBagSizer_FindItemAtPosition, 1413). +-define(wxGridBagSizer_FindItemWithData, 1414). +-define(wxGridBagSizer_GetCellSize, 1415). +-define(wxGridBagSizer_GetEmptyCellSize, 1416). +-define(wxGridBagSizer_GetItemPosition_1_2, 1417). +-define(wxGridBagSizer_GetItemPosition_1_1, 1418). +-define(wxGridBagSizer_GetItemPosition_1_0, 1419). +-define(wxGridBagSizer_GetItemSpan_1_2, 1420). +-define(wxGridBagSizer_GetItemSpan_1_1, 1421). +-define(wxGridBagSizer_GetItemSpan_1_0, 1422). +-define(wxGridBagSizer_SetEmptyCellSize, 1423). +-define(wxGridBagSizer_SetItemPosition_2_2, 1424). +-define(wxGridBagSizer_SetItemPosition_2_1, 1425). +-define(wxGridBagSizer_SetItemPosition_2_0, 1426). +-define(wxGridBagSizer_SetItemSpan_2_2, 1427). +-define(wxGridBagSizer_SetItemSpan_2_1, 1428). +-define(wxGridBagSizer_SetItemSpan_2_0, 1429). +-define(wxGridBagSizer_destroy, 1430). +-define(wxStdDialogButtonSizer_new, 1431). +-define(wxStdDialogButtonSizer_AddButton, 1432). +-define(wxStdDialogButtonSizer_Realize, 1433). +-define(wxStdDialogButtonSizer_SetAffirmativeButton, 1434). +-define(wxStdDialogButtonSizer_SetCancelButton, 1435). +-define(wxStdDialogButtonSizer_SetNegativeButton, 1436). +-define(wxStdDialogButtonSizer_destroy, 1437). +-define(wxFont_new_0, 1438). +-define(wxFont_new_1, 1439). +-define(wxFont_new_5, 1440). +-define(wxFont_destruct, 1442). +-define(wxFont_IsFixedWidth, 1443). +-define(wxFont_GetDefaultEncoding, 1444). +-define(wxFont_GetFaceName, 1445). +-define(wxFont_GetFamily, 1446). +-define(wxFont_GetNativeFontInfoDesc, 1447). +-define(wxFont_GetNativeFontInfoUserDesc, 1448). +-define(wxFont_GetPointSize, 1449). +-define(wxFont_GetStyle, 1450). +-define(wxFont_GetUnderlined, 1451). +-define(wxFont_GetWeight, 1452). +-define(wxFont_Ok, 1453). +-define(wxFont_SetDefaultEncoding, 1454). +-define(wxFont_SetFaceName, 1455). +-define(wxFont_SetFamily, 1456). +-define(wxFont_SetPointSize, 1457). +-define(wxFont_SetStyle, 1458). +-define(wxFont_SetUnderlined, 1459). +-define(wxFont_SetWeight, 1460). +-define(wxToolTip_Enable, 1461). +-define(wxToolTip_SetDelay, 1462). +-define(wxToolTip_new, 1463). +-define(wxToolTip_SetTip, 1464). +-define(wxToolTip_GetTip, 1465). +-define(wxToolTip_GetWindow, 1466). +-define(wxToolTip_destroy, 1467). +-define(wxButton_new_3, 1469). +-define(wxButton_new_0, 1470). +-define(wxButton_destruct, 1471). +-define(wxButton_Create, 1472). +-define(wxButton_GetDefaultSize, 1473). +-define(wxButton_SetDefault, 1474). +-define(wxButton_SetLabel, 1475). +-define(wxBitmapButton_new_4, 1477). +-define(wxBitmapButton_new_0, 1478). +-define(wxBitmapButton_Create, 1479). +-define(wxBitmapButton_GetBitmapDisabled, 1480). +-define(wxBitmapButton_GetBitmapFocus, 1482). +-define(wxBitmapButton_GetBitmapLabel, 1484). +-define(wxBitmapButton_GetBitmapSelected, 1486). +-define(wxBitmapButton_SetBitmapDisabled, 1488). +-define(wxBitmapButton_SetBitmapFocus, 1489). +-define(wxBitmapButton_SetBitmapLabel, 1490). +-define(wxBitmapButton_SetBitmapSelected, 1491). +-define(wxBitmapButton_destroy, 1492). +-define(wxToggleButton_new_0, 1493). +-define(wxToggleButton_new_4, 1494). +-define(wxToggleButton_Create, 1495). +-define(wxToggleButton_GetValue, 1496). +-define(wxToggleButton_SetValue, 1497). +-define(wxToggleButton_destroy, 1498). +-define(wxCalendarCtrl_new_0, 1499). +-define(wxCalendarCtrl_new_3, 1500). +-define(wxCalendarCtrl_Create, 1501). +-define(wxCalendarCtrl_destruct, 1502). +-define(wxCalendarCtrl_SetDate, 1503). +-define(wxCalendarCtrl_GetDate, 1504). +-define(wxCalendarCtrl_EnableYearChange, 1505). +-define(wxCalendarCtrl_EnableMonthChange, 1506). +-define(wxCalendarCtrl_EnableHolidayDisplay, 1507). +-define(wxCalendarCtrl_SetHeaderColours, 1508). +-define(wxCalendarCtrl_GetHeaderColourFg, 1509). +-define(wxCalendarCtrl_GetHeaderColourBg, 1510). +-define(wxCalendarCtrl_SetHighlightColours, 1511). +-define(wxCalendarCtrl_GetHighlightColourFg, 1512). +-define(wxCalendarCtrl_GetHighlightColourBg, 1513). +-define(wxCalendarCtrl_SetHolidayColours, 1514). +-define(wxCalendarCtrl_GetHolidayColourFg, 1515). +-define(wxCalendarCtrl_GetHolidayColourBg, 1516). +-define(wxCalendarCtrl_GetAttr, 1517). +-define(wxCalendarCtrl_SetAttr, 1518). +-define(wxCalendarCtrl_SetHoliday, 1519). +-define(wxCalendarCtrl_ResetAttr, 1520). +-define(wxCalendarCtrl_HitTest, 1521). +-define(wxCalendarDateAttr_new_0, 1522). +-define(wxCalendarDateAttr_new_2_1, 1523). +-define(wxCalendarDateAttr_new_2_0, 1524). +-define(wxCalendarDateAttr_SetTextColour, 1525). +-define(wxCalendarDateAttr_SetBackgroundColour, 1526). +-define(wxCalendarDateAttr_SetBorderColour, 1527). +-define(wxCalendarDateAttr_SetFont, 1528). +-define(wxCalendarDateAttr_SetBorder, 1529). +-define(wxCalendarDateAttr_SetHoliday, 1530). +-define(wxCalendarDateAttr_HasTextColour, 1531). +-define(wxCalendarDateAttr_HasBackgroundColour, 1532). +-define(wxCalendarDateAttr_HasBorderColour, 1533). +-define(wxCalendarDateAttr_HasFont, 1534). +-define(wxCalendarDateAttr_HasBorder, 1535). +-define(wxCalendarDateAttr_IsHoliday, 1536). +-define(wxCalendarDateAttr_GetTextColour, 1537). +-define(wxCalendarDateAttr_GetBackgroundColour, 1538). +-define(wxCalendarDateAttr_GetBorderColour, 1539). +-define(wxCalendarDateAttr_GetFont, 1540). +-define(wxCalendarDateAttr_GetBorder, 1541). +-define(wxCalendarDateAttr_destroy, 1542). +-define(wxCheckBox_new_4, 1544). +-define(wxCheckBox_new_0, 1545). +-define(wxCheckBox_Create, 1546). +-define(wxCheckBox_GetValue, 1547). +-define(wxCheckBox_Get3StateValue, 1548). +-define(wxCheckBox_Is3rdStateAllowedForUser, 1549). +-define(wxCheckBox_Is3State, 1550). +-define(wxCheckBox_IsChecked, 1551). +-define(wxCheckBox_SetValue, 1552). +-define(wxCheckBox_Set3StateValue, 1553). +-define(wxCheckBox_destroy, 1554). +-define(wxCheckListBox_new_0, 1555). +-define(wxCheckListBox_new_3, 1557). +-define(wxCheckListBox_Check, 1558). +-define(wxCheckListBox_IsChecked, 1559). +-define(wxCheckListBox_destroy, 1560). +-define(wxChoice_new_3, 1563). +-define(wxChoice_new_0, 1564). +-define(wxChoice_destruct, 1566). +-define(wxChoice_Create, 1568). +-define(wxChoice_Delete, 1569). +-define(wxChoice_GetColumns, 1570). +-define(wxChoice_SetColumns, 1571). +-define(wxComboBox_new_0, 1572). +-define(wxComboBox_new_3, 1574). +-define(wxComboBox_destruct, 1575). +-define(wxComboBox_Create, 1577). +-define(wxComboBox_CanCopy, 1578). +-define(wxComboBox_CanCut, 1579). +-define(wxComboBox_CanPaste, 1580). +-define(wxComboBox_CanRedo, 1581). +-define(wxComboBox_CanUndo, 1582). +-define(wxComboBox_Copy, 1583). +-define(wxComboBox_Cut, 1584). +-define(wxComboBox_GetInsertionPoint, 1585). +-define(wxComboBox_GetLastPosition, 1586). +-define(wxComboBox_GetValue, 1587). +-define(wxComboBox_Paste, 1588). +-define(wxComboBox_Redo, 1589). +-define(wxComboBox_Replace, 1590). +-define(wxComboBox_Remove, 1591). +-define(wxComboBox_SetInsertionPoint, 1592). +-define(wxComboBox_SetInsertionPointEnd, 1593). +-define(wxComboBox_SetSelection_1, 1594). +-define(wxComboBox_SetSelection_2, 1595). +-define(wxComboBox_SetValue, 1596). +-define(wxComboBox_Undo, 1597). +-define(wxGauge_new_0, 1598). +-define(wxGauge_new_4, 1599). +-define(wxGauge_Create, 1600). +-define(wxGauge_GetBezelFace, 1601). +-define(wxGauge_GetRange, 1602). +-define(wxGauge_GetShadowWidth, 1603). +-define(wxGauge_GetValue, 1604). +-define(wxGauge_IsVertical, 1605). +-define(wxGauge_SetBezelFace, 1606). +-define(wxGauge_SetRange, 1607). +-define(wxGauge_SetShadowWidth, 1608). +-define(wxGauge_SetValue, 1609). +-define(wxGauge_Pulse, 1610). +-define(wxGauge_destroy, 1611). +-define(wxGenericDirCtrl_new_0, 1612). +-define(wxGenericDirCtrl_new_2, 1613). +-define(wxGenericDirCtrl_destruct, 1614). +-define(wxGenericDirCtrl_Create, 1615). +-define(wxGenericDirCtrl_Init, 1616). +-define(wxGenericDirCtrl_CollapseTree, 1617). +-define(wxGenericDirCtrl_ExpandPath, 1618). +-define(wxGenericDirCtrl_GetDefaultPath, 1619). +-define(wxGenericDirCtrl_GetPath, 1620). +-define(wxGenericDirCtrl_GetFilePath, 1621). +-define(wxGenericDirCtrl_GetFilter, 1622). +-define(wxGenericDirCtrl_GetFilterIndex, 1623). +-define(wxGenericDirCtrl_GetRootId, 1624). +-define(wxGenericDirCtrl_GetTreeCtrl, 1625). +-define(wxGenericDirCtrl_ReCreateTree, 1626). +-define(wxGenericDirCtrl_SetDefaultPath, 1627). +-define(wxGenericDirCtrl_SetFilter, 1628). +-define(wxGenericDirCtrl_SetFilterIndex, 1629). +-define(wxGenericDirCtrl_SetPath, 1630). +-define(wxStaticBox_new_4, 1632). +-define(wxStaticBox_new_0, 1633). +-define(wxStaticBox_Create, 1634). +-define(wxStaticBox_destroy, 1635). +-define(wxStaticLine_new_2, 1637). +-define(wxStaticLine_new_0, 1638). +-define(wxStaticLine_Create, 1639). +-define(wxStaticLine_IsVertical, 1640). +-define(wxStaticLine_GetDefaultSize, 1641). +-define(wxStaticLine_destroy, 1642). +-define(wxListBox_new_3, 1645). +-define(wxListBox_new_0, 1646). +-define(wxListBox_destruct, 1648). +-define(wxListBox_Create, 1650). +-define(wxListBox_Deselect, 1651). +-define(wxListBox_GetSelections, 1652). +-define(wxListBox_InsertItems, 1653). +-define(wxListBox_IsSelected, 1654). +-define(wxListBox_Set, 1655). +-define(wxListBox_HitTest, 1656). +-define(wxListBox_SetFirstItem_1_0, 1657). +-define(wxListBox_SetFirstItem_1_1, 1658). +-define(wxListCtrl_new_0, 1659). +-define(wxListCtrl_new_2, 1660). +-define(wxListCtrl_Arrange, 1661). +-define(wxListCtrl_AssignImageList, 1662). +-define(wxListCtrl_ClearAll, 1663). +-define(wxListCtrl_Create, 1664). +-define(wxListCtrl_DeleteAllItems, 1665). +-define(wxListCtrl_DeleteColumn, 1666). +-define(wxListCtrl_DeleteItem, 1667). +-define(wxListCtrl_EditLabel, 1668). +-define(wxListCtrl_EnsureVisible, 1669). +-define(wxListCtrl_FindItem_3_0, 1670). +-define(wxListCtrl_FindItem_3_1, 1671). +-define(wxListCtrl_GetColumn, 1672). +-define(wxListCtrl_GetColumnCount, 1673). +-define(wxListCtrl_GetColumnWidth, 1674). +-define(wxListCtrl_GetCountPerPage, 1675). +-define(wxListCtrl_GetEditControl, 1676). +-define(wxListCtrl_GetImageList, 1677). +-define(wxListCtrl_GetItem, 1678). +-define(wxListCtrl_GetItemBackgroundColour, 1679). +-define(wxListCtrl_GetItemCount, 1680). +-define(wxListCtrl_GetItemData, 1681). +-define(wxListCtrl_GetItemFont, 1682). +-define(wxListCtrl_GetItemPosition, 1683). +-define(wxListCtrl_GetItemRect, 1684). +-define(wxListCtrl_GetItemSpacing, 1685). +-define(wxListCtrl_GetItemState, 1686). +-define(wxListCtrl_GetItemText, 1687). +-define(wxListCtrl_GetItemTextColour, 1688). +-define(wxListCtrl_GetNextItem, 1689). +-define(wxListCtrl_GetSelectedItemCount, 1690). +-define(wxListCtrl_GetTextColour, 1691). +-define(wxListCtrl_GetTopItem, 1692). +-define(wxListCtrl_GetViewRect, 1693). +-define(wxListCtrl_HitTest, 1694). +-define(wxListCtrl_InsertColumn_2, 1695). +-define(wxListCtrl_InsertColumn_3, 1696). +-define(wxListCtrl_InsertItem_1, 1697). +-define(wxListCtrl_InsertItem_2_1, 1698). +-define(wxListCtrl_InsertItem_2_0, 1699). +-define(wxListCtrl_InsertItem_3, 1700). +-define(wxListCtrl_RefreshItem, 1701). +-define(wxListCtrl_RefreshItems, 1702). +-define(wxListCtrl_ScrollList, 1703). +-define(wxListCtrl_SetBackgroundColour, 1704). +-define(wxListCtrl_SetColumn, 1705). +-define(wxListCtrl_SetColumnWidth, 1706). +-define(wxListCtrl_SetImageList, 1707). +-define(wxListCtrl_SetItem_1, 1708). +-define(wxListCtrl_SetItem_4, 1709). +-define(wxListCtrl_SetItemBackgroundColour, 1710). +-define(wxListCtrl_SetItemCount, 1711). +-define(wxListCtrl_SetItemData, 1712). +-define(wxListCtrl_SetItemFont, 1713). +-define(wxListCtrl_SetItemImage, 1714). +-define(wxListCtrl_SetItemColumnImage, 1715). +-define(wxListCtrl_SetItemPosition, 1716). +-define(wxListCtrl_SetItemState, 1717). +-define(wxListCtrl_SetItemText, 1718). +-define(wxListCtrl_SetItemTextColour, 1719). +-define(wxListCtrl_SetSingleStyle, 1720). +-define(wxListCtrl_SetTextColour, 1721). +-define(wxListCtrl_SetWindowStyleFlag, 1722). +-define(wxListCtrl_SortItems, 1723). +-define(wxListCtrl_destroy, 1724). +-define(wxListView_ClearColumnImage, 1725). +-define(wxListView_Focus, 1726). +-define(wxListView_GetFirstSelected, 1727). +-define(wxListView_GetFocusedItem, 1728). +-define(wxListView_GetNextSelected, 1729). +-define(wxListView_IsSelected, 1730). +-define(wxListView_Select, 1731). +-define(wxListView_SetColumnImage, 1732). +-define(wxListItem_new_0, 1733). +-define(wxListItem_new_1, 1734). +-define(wxListItem_destruct, 1735). +-define(wxListItem_Clear, 1736). +-define(wxListItem_GetAlign, 1737). +-define(wxListItem_GetBackgroundColour, 1738). +-define(wxListItem_GetColumn, 1739). +-define(wxListItem_GetFont, 1740). +-define(wxListItem_GetId, 1741). +-define(wxListItem_GetImage, 1742). +-define(wxListItem_GetMask, 1743). +-define(wxListItem_GetState, 1744). +-define(wxListItem_GetText, 1745). +-define(wxListItem_GetTextColour, 1746). +-define(wxListItem_GetWidth, 1747). +-define(wxListItem_SetAlign, 1748). +-define(wxListItem_SetBackgroundColour, 1749). +-define(wxListItem_SetColumn, 1750). +-define(wxListItem_SetFont, 1751). +-define(wxListItem_SetId, 1752). +-define(wxListItem_SetImage, 1753). +-define(wxListItem_SetMask, 1754). +-define(wxListItem_SetState, 1755). +-define(wxListItem_SetStateMask, 1756). +-define(wxListItem_SetText, 1757). +-define(wxListItem_SetTextColour, 1758). +-define(wxListItem_SetWidth, 1759). +-define(wxListItemAttr_new_0, 1760). +-define(wxListItemAttr_new_3, 1761). +-define(wxListItemAttr_GetBackgroundColour, 1762). +-define(wxListItemAttr_GetFont, 1763). +-define(wxListItemAttr_GetTextColour, 1764). +-define(wxListItemAttr_HasBackgroundColour, 1765). +-define(wxListItemAttr_HasFont, 1766). +-define(wxListItemAttr_HasTextColour, 1767). +-define(wxListItemAttr_SetBackgroundColour, 1768). +-define(wxListItemAttr_SetFont, 1769). +-define(wxListItemAttr_SetTextColour, 1770). +-define(wxListItemAttr_destroy, 1771). +-define(wxImageList_new_0, 1772). +-define(wxImageList_new_3, 1773). +-define(wxImageList_Add_1, 1774). +-define(wxImageList_Add_2_0, 1775). +-define(wxImageList_Add_2_1, 1776). +-define(wxImageList_Create, 1777). +-define(wxImageList_Draw, 1779). +-define(wxImageList_GetBitmap, 1780). +-define(wxImageList_GetIcon, 1781). +-define(wxImageList_GetImageCount, 1782). +-define(wxImageList_GetSize, 1783). +-define(wxImageList_Remove, 1784). +-define(wxImageList_RemoveAll, 1785). +-define(wxImageList_Replace_2, 1786). +-define(wxImageList_Replace_3, 1787). +-define(wxImageList_destroy, 1788). +-define(wxTextAttr_new_0, 1789). +-define(wxTextAttr_new_2, 1790). +-define(wxTextAttr_GetAlignment, 1791). +-define(wxTextAttr_GetBackgroundColour, 1792). +-define(wxTextAttr_GetFont, 1793). +-define(wxTextAttr_GetLeftIndent, 1794). +-define(wxTextAttr_GetLeftSubIndent, 1795). +-define(wxTextAttr_GetRightIndent, 1796). +-define(wxTextAttr_GetTabs, 1797). +-define(wxTextAttr_GetTextColour, 1798). +-define(wxTextAttr_HasBackgroundColour, 1799). +-define(wxTextAttr_HasFont, 1800). +-define(wxTextAttr_HasTextColour, 1801). +-define(wxTextAttr_GetFlags, 1802). +-define(wxTextAttr_IsDefault, 1803). +-define(wxTextAttr_SetAlignment, 1804). +-define(wxTextAttr_SetBackgroundColour, 1805). +-define(wxTextAttr_SetFlags, 1806). +-define(wxTextAttr_SetFont, 1807). +-define(wxTextAttr_SetLeftIndent, 1808). +-define(wxTextAttr_SetRightIndent, 1809). +-define(wxTextAttr_SetTabs, 1810). +-define(wxTextAttr_SetTextColour, 1811). +-define(wxTextAttr_destroy, 1812). +-define(wxTextCtrl_new_3, 1814). +-define(wxTextCtrl_new_0, 1815). +-define(wxTextCtrl_destruct, 1817). +-define(wxTextCtrl_AppendText, 1818). +-define(wxTextCtrl_CanCopy, 1819). +-define(wxTextCtrl_CanCut, 1820). +-define(wxTextCtrl_CanPaste, 1821). +-define(wxTextCtrl_CanRedo, 1822). +-define(wxTextCtrl_CanUndo, 1823). +-define(wxTextCtrl_Clear, 1824). +-define(wxTextCtrl_Copy, 1825). +-define(wxTextCtrl_Create, 1826). +-define(wxTextCtrl_Cut, 1827). +-define(wxTextCtrl_DiscardEdits, 1828). +-define(wxTextCtrl_ChangeValue, 1829). +-define(wxTextCtrl_EmulateKeyPress, 1830). +-define(wxTextCtrl_GetDefaultStyle, 1831). +-define(wxTextCtrl_GetInsertionPoint, 1832). +-define(wxTextCtrl_GetLastPosition, 1833). +-define(wxTextCtrl_GetLineLength, 1834). +-define(wxTextCtrl_GetLineText, 1835). +-define(wxTextCtrl_GetNumberOfLines, 1836). +-define(wxTextCtrl_GetRange, 1837). +-define(wxTextCtrl_GetSelection, 1838). +-define(wxTextCtrl_GetStringSelection, 1839). +-define(wxTextCtrl_GetStyle, 1840). +-define(wxTextCtrl_GetValue, 1841). +-define(wxTextCtrl_IsEditable, 1842). +-define(wxTextCtrl_IsModified, 1843). +-define(wxTextCtrl_IsMultiLine, 1844). +-define(wxTextCtrl_IsSingleLine, 1845). +-define(wxTextCtrl_LoadFile, 1846). +-define(wxTextCtrl_MarkDirty, 1847). +-define(wxTextCtrl_Paste, 1848). +-define(wxTextCtrl_PositionToXY, 1849). +-define(wxTextCtrl_Redo, 1850). +-define(wxTextCtrl_Remove, 1851). +-define(wxTextCtrl_Replace, 1852). +-define(wxTextCtrl_SaveFile, 1853). +-define(wxTextCtrl_SetDefaultStyle, 1854). +-define(wxTextCtrl_SetEditable, 1855). +-define(wxTextCtrl_SetInsertionPoint, 1856). +-define(wxTextCtrl_SetInsertionPointEnd, 1857). +-define(wxTextCtrl_SetMaxLength, 1859). +-define(wxTextCtrl_SetSelection, 1860). +-define(wxTextCtrl_SetStyle, 1861). +-define(wxTextCtrl_SetValue, 1862). +-define(wxTextCtrl_ShowPosition, 1863). +-define(wxTextCtrl_Undo, 1864). +-define(wxTextCtrl_WriteText, 1865). +-define(wxTextCtrl_XYToPosition, 1866). +-define(wxNotebook_new_0, 1869). +-define(wxNotebook_new_3, 1870). +-define(wxNotebook_destruct, 1871). +-define(wxNotebook_AddPage, 1872). +-define(wxNotebook_AdvanceSelection, 1873). +-define(wxNotebook_AssignImageList, 1874). +-define(wxNotebook_Create, 1875). +-define(wxNotebook_DeleteAllPages, 1876). +-define(wxNotebook_DeletePage, 1877). +-define(wxNotebook_RemovePage, 1878). +-define(wxNotebook_GetCurrentPage, 1879). +-define(wxNotebook_GetImageList, 1880). +-define(wxNotebook_GetPage, 1882). +-define(wxNotebook_GetPageCount, 1883). +-define(wxNotebook_GetPageImage, 1884). +-define(wxNotebook_GetPageText, 1885). +-define(wxNotebook_GetRowCount, 1886). +-define(wxNotebook_GetSelection, 1887). +-define(wxNotebook_GetThemeBackgroundColour, 1888). +-define(wxNotebook_HitTest, 1890). +-define(wxNotebook_InsertPage, 1892). +-define(wxNotebook_SetImageList, 1893). +-define(wxNotebook_SetPadding, 1894). +-define(wxNotebook_SetPageSize, 1895). +-define(wxNotebook_SetPageImage, 1896). +-define(wxNotebook_SetPageText, 1897). +-define(wxNotebook_SetSelection, 1898). +-define(wxNotebook_ChangeSelection, 1899). +-define(wxChoicebook_new_0, 1900). +-define(wxChoicebook_new_3, 1901). +-define(wxChoicebook_AddPage, 1902). +-define(wxChoicebook_AdvanceSelection, 1903). +-define(wxChoicebook_AssignImageList, 1904). +-define(wxChoicebook_Create, 1905). +-define(wxChoicebook_DeleteAllPages, 1906). +-define(wxChoicebook_DeletePage, 1907). +-define(wxChoicebook_RemovePage, 1908). +-define(wxChoicebook_GetCurrentPage, 1909). +-define(wxChoicebook_GetImageList, 1910). +-define(wxChoicebook_GetPage, 1912). +-define(wxChoicebook_GetPageCount, 1913). +-define(wxChoicebook_GetPageImage, 1914). +-define(wxChoicebook_GetPageText, 1915). +-define(wxChoicebook_GetSelection, 1916). +-define(wxChoicebook_HitTest, 1917). +-define(wxChoicebook_InsertPage, 1918). +-define(wxChoicebook_SetImageList, 1919). +-define(wxChoicebook_SetPageSize, 1920). +-define(wxChoicebook_SetPageImage, 1921). +-define(wxChoicebook_SetPageText, 1922). +-define(wxChoicebook_SetSelection, 1923). +-define(wxChoicebook_ChangeSelection, 1924). +-define(wxChoicebook_destroy, 1925). +-define(wxToolbook_new_0, 1926). +-define(wxToolbook_new_3, 1927). +-define(wxToolbook_AddPage, 1928). +-define(wxToolbook_AdvanceSelection, 1929). +-define(wxToolbook_AssignImageList, 1930). +-define(wxToolbook_Create, 1931). +-define(wxToolbook_DeleteAllPages, 1932). +-define(wxToolbook_DeletePage, 1933). +-define(wxToolbook_RemovePage, 1934). +-define(wxToolbook_GetCurrentPage, 1935). +-define(wxToolbook_GetImageList, 1936). +-define(wxToolbook_GetPage, 1938). +-define(wxToolbook_GetPageCount, 1939). +-define(wxToolbook_GetPageImage, 1940). +-define(wxToolbook_GetPageText, 1941). +-define(wxToolbook_GetSelection, 1942). +-define(wxToolbook_HitTest, 1944). +-define(wxToolbook_InsertPage, 1945). +-define(wxToolbook_SetImageList, 1946). +-define(wxToolbook_SetPageSize, 1947). +-define(wxToolbook_SetPageImage, 1948). +-define(wxToolbook_SetPageText, 1949). +-define(wxToolbook_SetSelection, 1950). +-define(wxToolbook_ChangeSelection, 1951). +-define(wxToolbook_destroy, 1952). +-define(wxListbook_new_0, 1953). +-define(wxListbook_new_3, 1954). +-define(wxListbook_AddPage, 1955). +-define(wxListbook_AdvanceSelection, 1956). +-define(wxListbook_AssignImageList, 1957). +-define(wxListbook_Create, 1958). +-define(wxListbook_DeleteAllPages, 1959). +-define(wxListbook_DeletePage, 1960). +-define(wxListbook_RemovePage, 1961). +-define(wxListbook_GetCurrentPage, 1962). +-define(wxListbook_GetImageList, 1963). +-define(wxListbook_GetPage, 1965). +-define(wxListbook_GetPageCount, 1966). +-define(wxListbook_GetPageImage, 1967). +-define(wxListbook_GetPageText, 1968). +-define(wxListbook_GetSelection, 1969). +-define(wxListbook_HitTest, 1971). +-define(wxListbook_InsertPage, 1972). +-define(wxListbook_SetImageList, 1973). +-define(wxListbook_SetPageSize, 1974). +-define(wxListbook_SetPageImage, 1975). +-define(wxListbook_SetPageText, 1976). +-define(wxListbook_SetSelection, 1977). +-define(wxListbook_ChangeSelection, 1978). +-define(wxListbook_destroy, 1979). +-define(wxTreebook_new_0, 1980). +-define(wxTreebook_new_3, 1981). +-define(wxTreebook_AddPage, 1982). +-define(wxTreebook_AdvanceSelection, 1983). +-define(wxTreebook_AssignImageList, 1984). +-define(wxTreebook_Create, 1985). +-define(wxTreebook_DeleteAllPages, 1986). +-define(wxTreebook_DeletePage, 1987). +-define(wxTreebook_RemovePage, 1988). +-define(wxTreebook_GetCurrentPage, 1989). +-define(wxTreebook_GetImageList, 1990). +-define(wxTreebook_GetPage, 1992). +-define(wxTreebook_GetPageCount, 1993). +-define(wxTreebook_GetPageImage, 1994). +-define(wxTreebook_GetPageText, 1995). +-define(wxTreebook_GetSelection, 1996). +-define(wxTreebook_ExpandNode, 1997). +-define(wxTreebook_IsNodeExpanded, 1998). +-define(wxTreebook_HitTest, 2000). +-define(wxTreebook_InsertPage, 2001). +-define(wxTreebook_InsertSubPage, 2002). +-define(wxTreebook_SetImageList, 2003). +-define(wxTreebook_SetPageSize, 2004). +-define(wxTreebook_SetPageImage, 2005). +-define(wxTreebook_SetPageText, 2006). +-define(wxTreebook_SetSelection, 2007). +-define(wxTreebook_ChangeSelection, 2008). +-define(wxTreebook_destroy, 2009). +-define(wxTreeCtrl_new_2, 2012). +-define(wxTreeCtrl_new_0, 2013). +-define(wxTreeCtrl_destruct, 2015). +-define(wxTreeCtrl_AddRoot, 2016). +-define(wxTreeCtrl_AppendItem, 2017). +-define(wxTreeCtrl_AssignImageList, 2018). +-define(wxTreeCtrl_AssignStateImageList, 2019). +-define(wxTreeCtrl_Collapse, 2020). +-define(wxTreeCtrl_CollapseAndReset, 2021). +-define(wxTreeCtrl_Create, 2022). +-define(wxTreeCtrl_Delete, 2023). +-define(wxTreeCtrl_DeleteAllItems, 2024). +-define(wxTreeCtrl_DeleteChildren, 2025). +-define(wxTreeCtrl_EditLabel, 2026). +-define(wxTreeCtrl_EnsureVisible, 2027). +-define(wxTreeCtrl_Expand, 2028). +-define(wxTreeCtrl_GetBoundingRect, 2029). +-define(wxTreeCtrl_GetChildrenCount, 2031). +-define(wxTreeCtrl_GetCount, 2032). +-define(wxTreeCtrl_GetEditControl, 2033). +-define(wxTreeCtrl_GetFirstChild, 2034). +-define(wxTreeCtrl_GetNextChild, 2035). +-define(wxTreeCtrl_GetFirstVisibleItem, 2036). +-define(wxTreeCtrl_GetImageList, 2037). +-define(wxTreeCtrl_GetIndent, 2038). +-define(wxTreeCtrl_GetItemBackgroundColour, 2039). +-define(wxTreeCtrl_GetItemData, 2040). +-define(wxTreeCtrl_GetItemFont, 2041). +-define(wxTreeCtrl_GetItemImage_1, 2042). +-define(wxTreeCtrl_GetItemImage_2, 2043). +-define(wxTreeCtrl_GetItemText, 2044). +-define(wxTreeCtrl_GetItemTextColour, 2045). +-define(wxTreeCtrl_GetLastChild, 2046). +-define(wxTreeCtrl_GetNextSibling, 2047). +-define(wxTreeCtrl_GetNextVisible, 2048). +-define(wxTreeCtrl_GetItemParent, 2049). +-define(wxTreeCtrl_GetPrevSibling, 2050). +-define(wxTreeCtrl_GetPrevVisible, 2051). +-define(wxTreeCtrl_GetRootItem, 2052). +-define(wxTreeCtrl_GetSelection, 2053). +-define(wxTreeCtrl_GetSelections, 2054). +-define(wxTreeCtrl_GetStateImageList, 2055). +-define(wxTreeCtrl_HitTest, 2056). +-define(wxTreeCtrl_InsertItem, 2058). +-define(wxTreeCtrl_IsBold, 2059). +-define(wxTreeCtrl_IsExpanded, 2060). +-define(wxTreeCtrl_IsSelected, 2061). +-define(wxTreeCtrl_IsVisible, 2062). +-define(wxTreeCtrl_ItemHasChildren, 2063). +-define(wxTreeCtrl_IsTreeItemIdOk, 2064). +-define(wxTreeCtrl_PrependItem, 2065). +-define(wxTreeCtrl_ScrollTo, 2066). +-define(wxTreeCtrl_SelectItem_1, 2067). +-define(wxTreeCtrl_SelectItem_2, 2068). +-define(wxTreeCtrl_SetIndent, 2069). +-define(wxTreeCtrl_SetImageList, 2070). +-define(wxTreeCtrl_SetItemBackgroundColour, 2071). +-define(wxTreeCtrl_SetItemBold, 2072). +-define(wxTreeCtrl_SetItemData, 2073). +-define(wxTreeCtrl_SetItemDropHighlight, 2074). +-define(wxTreeCtrl_SetItemFont, 2075). +-define(wxTreeCtrl_SetItemHasChildren, 2076). +-define(wxTreeCtrl_SetItemImage_2, 2077). +-define(wxTreeCtrl_SetItemImage_3, 2078). +-define(wxTreeCtrl_SetItemText, 2079). +-define(wxTreeCtrl_SetItemTextColour, 2080). +-define(wxTreeCtrl_SetStateImageList, 2081). +-define(wxTreeCtrl_SetWindowStyle, 2082). +-define(wxTreeCtrl_SortChildren, 2083). +-define(wxTreeCtrl_Toggle, 2084). +-define(wxTreeCtrl_ToggleItemSelection, 2085). +-define(wxTreeCtrl_Unselect, 2086). +-define(wxTreeCtrl_UnselectAll, 2087). +-define(wxTreeCtrl_UnselectItem, 2088). +-define(wxScrollBar_new_0, 2089). +-define(wxScrollBar_new_3, 2090). +-define(wxScrollBar_destruct, 2091). +-define(wxScrollBar_Create, 2092). +-define(wxScrollBar_GetRange, 2093). +-define(wxScrollBar_GetPageSize, 2094). +-define(wxScrollBar_GetThumbPosition, 2095). +-define(wxScrollBar_GetThumbSize, 2096). +-define(wxScrollBar_SetThumbPosition, 2097). +-define(wxScrollBar_SetScrollbar, 2098). +-define(wxSpinButton_new_2, 2100). +-define(wxSpinButton_new_0, 2101). +-define(wxSpinButton_Create, 2102). +-define(wxSpinButton_GetMax, 2103). +-define(wxSpinButton_GetMin, 2104). +-define(wxSpinButton_GetValue, 2105). +-define(wxSpinButton_SetRange, 2106). +-define(wxSpinButton_SetValue, 2107). +-define(wxSpinButton_destroy, 2108). +-define(wxSpinCtrl_new_0, 2109). +-define(wxSpinCtrl_new_2, 2110). +-define(wxSpinCtrl_Create, 2112). +-define(wxSpinCtrl_SetValue_1_1, 2115). +-define(wxSpinCtrl_SetValue_1_0, 2116). +-define(wxSpinCtrl_GetValue, 2118). +-define(wxSpinCtrl_SetRange, 2120). +-define(wxSpinCtrl_SetSelection, 2121). +-define(wxSpinCtrl_GetMin, 2123). +-define(wxSpinCtrl_GetMax, 2125). +-define(wxSpinCtrl_destroy, 2126). +-define(wxStaticText_new_0, 2127). +-define(wxStaticText_new_4, 2128). +-define(wxStaticText_Create, 2129). +-define(wxStaticText_GetLabel, 2130). +-define(wxStaticText_SetLabel, 2131). +-define(wxStaticText_Wrap, 2132). +-define(wxStaticText_destroy, 2133). +-define(wxStaticBitmap_new_0, 2134). +-define(wxStaticBitmap_new_4, 2135). +-define(wxStaticBitmap_Create, 2136). +-define(wxStaticBitmap_GetBitmap, 2137). +-define(wxStaticBitmap_SetBitmap, 2138). +-define(wxStaticBitmap_destroy, 2139). +-define(wxRadioBox_new, 2140). +-define(wxRadioBox_destruct, 2142). +-define(wxRadioBox_Create, 2143). +-define(wxRadioBox_Enable_2, 2144). +-define(wxRadioBox_Enable_1, 2145). +-define(wxRadioBox_GetSelection, 2146). +-define(wxRadioBox_GetString, 2147). +-define(wxRadioBox_SetSelection, 2148). +-define(wxRadioBox_Show_2, 2149). +-define(wxRadioBox_Show_1, 2150). +-define(wxRadioBox_GetColumnCount, 2151). +-define(wxRadioBox_GetItemHelpText, 2152). +-define(wxRadioBox_GetItemToolTip, 2153). +-define(wxRadioBox_GetItemFromPoint, 2155). +-define(wxRadioBox_GetRowCount, 2156). +-define(wxRadioBox_IsItemEnabled, 2157). +-define(wxRadioBox_IsItemShown, 2158). +-define(wxRadioBox_SetItemHelpText, 2159). +-define(wxRadioBox_SetItemToolTip, 2160). +-define(wxRadioButton_new_0, 2161). +-define(wxRadioButton_new_4, 2162). +-define(wxRadioButton_Create, 2163). +-define(wxRadioButton_GetValue, 2164). +-define(wxRadioButton_SetValue, 2165). +-define(wxRadioButton_destroy, 2166). +-define(wxSlider_new_6, 2168). +-define(wxSlider_new_0, 2169). +-define(wxSlider_Create, 2170). +-define(wxSlider_GetLineSize, 2171). +-define(wxSlider_GetMax, 2172). +-define(wxSlider_GetMin, 2173). +-define(wxSlider_GetPageSize, 2174). +-define(wxSlider_GetThumbLength, 2175). +-define(wxSlider_GetValue, 2176). +-define(wxSlider_SetLineSize, 2177). +-define(wxSlider_SetPageSize, 2178). +-define(wxSlider_SetRange, 2179). +-define(wxSlider_SetThumbLength, 2180). +-define(wxSlider_SetValue, 2181). +-define(wxSlider_destroy, 2182). +-define(wxDialog_new_4, 2184). +-define(wxDialog_new_0, 2185). +-define(wxDialog_destruct, 2187). +-define(wxDialog_Create, 2188). +-define(wxDialog_CreateButtonSizer, 2189). +-define(wxDialog_CreateStdDialogButtonSizer, 2190). +-define(wxDialog_EndModal, 2191). +-define(wxDialog_GetAffirmativeId, 2192). +-define(wxDialog_GetReturnCode, 2193). +-define(wxDialog_IsModal, 2194). +-define(wxDialog_SetAffirmativeId, 2195). +-define(wxDialog_SetReturnCode, 2196). +-define(wxDialog_Show, 2197). +-define(wxDialog_ShowModal, 2198). +-define(wxColourDialog_new_0, 2199). +-define(wxColourDialog_new_2, 2200). +-define(wxColourDialog_destruct, 2201). +-define(wxColourDialog_Create, 2202). +-define(wxColourDialog_GetColourData, 2203). +-define(wxColourData_new_0, 2204). +-define(wxColourData_new_1, 2205). +-define(wxColourData_destruct, 2206). +-define(wxColourData_GetChooseFull, 2207). +-define(wxColourData_GetColour, 2208). +-define(wxColourData_GetCustomColour, 2210). +-define(wxColourData_SetChooseFull, 2211). +-define(wxColourData_SetColour, 2212). +-define(wxColourData_SetCustomColour, 2213). +-define(wxPalette_new_0, 2214). +-define(wxPalette_new_4, 2215). +-define(wxPalette_destruct, 2217). +-define(wxPalette_Create, 2218). +-define(wxPalette_GetColoursCount, 2219). +-define(wxPalette_GetPixel, 2220). +-define(wxPalette_GetRGB, 2221). +-define(wxPalette_IsOk, 2222). +-define(wxDirDialog_new, 2226). +-define(wxDirDialog_destruct, 2227). +-define(wxDirDialog_GetPath, 2228). +-define(wxDirDialog_GetMessage, 2229). +-define(wxDirDialog_SetMessage, 2230). +-define(wxDirDialog_SetPath, 2231). +-define(wxFileDialog_new, 2235). +-define(wxFileDialog_destruct, 2236). +-define(wxFileDialog_GetDirectory, 2237). +-define(wxFileDialog_GetFilename, 2238). +-define(wxFileDialog_GetFilenames, 2239). +-define(wxFileDialog_GetFilterIndex, 2240). +-define(wxFileDialog_GetMessage, 2241). +-define(wxFileDialog_GetPath, 2242). +-define(wxFileDialog_GetPaths, 2243). +-define(wxFileDialog_GetWildcard, 2244). +-define(wxFileDialog_SetDirectory, 2245). +-define(wxFileDialog_SetFilename, 2246). +-define(wxFileDialog_SetFilterIndex, 2247). +-define(wxFileDialog_SetMessage, 2248). +-define(wxFileDialog_SetPath, 2249). +-define(wxFileDialog_SetWildcard, 2250). +-define(wxPickerBase_SetInternalMargin, 2251). +-define(wxPickerBase_GetInternalMargin, 2252). +-define(wxPickerBase_SetTextCtrlProportion, 2253). +-define(wxPickerBase_SetPickerCtrlProportion, 2254). +-define(wxPickerBase_GetTextCtrlProportion, 2255). +-define(wxPickerBase_GetPickerCtrlProportion, 2256). +-define(wxPickerBase_HasTextCtrl, 2257). +-define(wxPickerBase_GetTextCtrl, 2258). +-define(wxPickerBase_IsTextCtrlGrowable, 2259). +-define(wxPickerBase_SetPickerCtrlGrowable, 2260). +-define(wxPickerBase_SetTextCtrlGrowable, 2261). +-define(wxPickerBase_IsPickerCtrlGrowable, 2262). +-define(wxFilePickerCtrl_new_0, 2263). +-define(wxFilePickerCtrl_new_3, 2264). +-define(wxFilePickerCtrl_Create, 2265). +-define(wxFilePickerCtrl_GetPath, 2266). +-define(wxFilePickerCtrl_SetPath, 2267). +-define(wxFilePickerCtrl_destroy, 2268). +-define(wxDirPickerCtrl_new_0, 2269). +-define(wxDirPickerCtrl_new_3, 2270). +-define(wxDirPickerCtrl_Create, 2271). +-define(wxDirPickerCtrl_GetPath, 2272). +-define(wxDirPickerCtrl_SetPath, 2273). +-define(wxDirPickerCtrl_destroy, 2274). +-define(wxColourPickerCtrl_new_0, 2275). +-define(wxColourPickerCtrl_new_3, 2276). +-define(wxColourPickerCtrl_Create, 2277). +-define(wxColourPickerCtrl_GetColour, 2278). +-define(wxColourPickerCtrl_SetColour_1_1, 2279). +-define(wxColourPickerCtrl_SetColour_1_0, 2280). +-define(wxColourPickerCtrl_destroy, 2281). +-define(wxDatePickerCtrl_new_0, 2282). +-define(wxDatePickerCtrl_new_3, 2283). +-define(wxDatePickerCtrl_GetRange, 2284). +-define(wxDatePickerCtrl_GetValue, 2285). +-define(wxDatePickerCtrl_SetRange, 2286). +-define(wxDatePickerCtrl_SetValue, 2287). +-define(wxDatePickerCtrl_destroy, 2288). +-define(wxFontPickerCtrl_new_0, 2289). +-define(wxFontPickerCtrl_new_3, 2290). +-define(wxFontPickerCtrl_Create, 2291). +-define(wxFontPickerCtrl_GetSelectedFont, 2292). +-define(wxFontPickerCtrl_SetSelectedFont, 2293). +-define(wxFontPickerCtrl_GetMaxPointSize, 2294). +-define(wxFontPickerCtrl_SetMaxPointSize, 2295). +-define(wxFontPickerCtrl_destroy, 2296). +-define(wxFindReplaceDialog_new_0, 2299). +-define(wxFindReplaceDialog_new_4, 2300). +-define(wxFindReplaceDialog_destruct, 2301). +-define(wxFindReplaceDialog_Create, 2302). +-define(wxFindReplaceDialog_GetData, 2303). +-define(wxFindReplaceData_new_0, 2304). +-define(wxFindReplaceData_new_1, 2305). +-define(wxFindReplaceData_GetFindString, 2306). +-define(wxFindReplaceData_GetReplaceString, 2307). +-define(wxFindReplaceData_GetFlags, 2308). +-define(wxFindReplaceData_SetFlags, 2309). +-define(wxFindReplaceData_SetFindString, 2310). +-define(wxFindReplaceData_SetReplaceString, 2311). +-define(wxFindReplaceData_destroy, 2312). +-define(wxMultiChoiceDialog_new_0, 2313). +-define(wxMultiChoiceDialog_new_5, 2315). +-define(wxMultiChoiceDialog_GetSelections, 2316). +-define(wxMultiChoiceDialog_SetSelections, 2317). +-define(wxMultiChoiceDialog_destroy, 2318). +-define(wxSingleChoiceDialog_new_0, 2319). +-define(wxSingleChoiceDialog_new_5, 2321). +-define(wxSingleChoiceDialog_GetSelection, 2322). +-define(wxSingleChoiceDialog_GetStringSelection, 2323). +-define(wxSingleChoiceDialog_SetSelection, 2324). +-define(wxSingleChoiceDialog_destroy, 2325). +-define(wxTextEntryDialog_new, 2326). +-define(wxTextEntryDialog_GetValue, 2327). +-define(wxTextEntryDialog_SetValue, 2328). +-define(wxTextEntryDialog_destroy, 2329). +-define(wxPasswordEntryDialog_new, 2330). +-define(wxPasswordEntryDialog_destroy, 2331). +-define(wxFontData_new_0, 2332). +-define(wxFontData_new_1, 2333). +-define(wxFontData_destruct, 2334). +-define(wxFontData_EnableEffects, 2335). +-define(wxFontData_GetAllowSymbols, 2336). +-define(wxFontData_GetColour, 2337). +-define(wxFontData_GetChosenFont, 2338). +-define(wxFontData_GetEnableEffects, 2339). +-define(wxFontData_GetInitialFont, 2340). +-define(wxFontData_GetShowHelp, 2341). +-define(wxFontData_SetAllowSymbols, 2342). +-define(wxFontData_SetChosenFont, 2343). +-define(wxFontData_SetColour, 2344). +-define(wxFontData_SetInitialFont, 2345). +-define(wxFontData_SetRange, 2346). +-define(wxFontData_SetShowHelp, 2347). +-define(wxFontDialog_new_0, 2351). +-define(wxFontDialog_new_2, 2353). +-define(wxFontDialog_Create, 2355). +-define(wxFontDialog_GetFontData, 2356). +-define(wxFontDialog_destroy, 2358). +-define(wxProgressDialog_new, 2359). +-define(wxProgressDialog_destruct, 2360). +-define(wxProgressDialog_Resume, 2361). +-define(wxProgressDialog_Update_2, 2362). +-define(wxProgressDialog_Update_0, 2363). +-define(wxMessageDialog_new, 2364). +-define(wxMessageDialog_destruct, 2365). +-define(wxPageSetupDialog_new, 2366). +-define(wxPageSetupDialog_destruct, 2367). +-define(wxPageSetupDialog_GetPageSetupData, 2368). +-define(wxPageSetupDialog_ShowModal, 2369). +-define(wxPageSetupDialogData_new_0, 2370). +-define(wxPageSetupDialogData_new_1_0, 2371). +-define(wxPageSetupDialogData_new_1_1, 2372). +-define(wxPageSetupDialogData_destruct, 2373). +-define(wxPageSetupDialogData_EnableHelp, 2374). +-define(wxPageSetupDialogData_EnableMargins, 2375). +-define(wxPageSetupDialogData_EnableOrientation, 2376). +-define(wxPageSetupDialogData_EnablePaper, 2377). +-define(wxPageSetupDialogData_EnablePrinter, 2378). +-define(wxPageSetupDialogData_GetDefaultMinMargins, 2379). +-define(wxPageSetupDialogData_GetEnableMargins, 2380). +-define(wxPageSetupDialogData_GetEnableOrientation, 2381). +-define(wxPageSetupDialogData_GetEnablePaper, 2382). +-define(wxPageSetupDialogData_GetEnablePrinter, 2383). +-define(wxPageSetupDialogData_GetEnableHelp, 2384). +-define(wxPageSetupDialogData_GetDefaultInfo, 2385). +-define(wxPageSetupDialogData_GetMarginTopLeft, 2386). +-define(wxPageSetupDialogData_GetMarginBottomRight, 2387). +-define(wxPageSetupDialogData_GetMinMarginTopLeft, 2388). +-define(wxPageSetupDialogData_GetMinMarginBottomRight, 2389). +-define(wxPageSetupDialogData_GetPaperId, 2390). +-define(wxPageSetupDialogData_GetPaperSize, 2391). +-define(wxPageSetupDialogData_GetPrintData, 2393). +-define(wxPageSetupDialogData_IsOk, 2394). +-define(wxPageSetupDialogData_SetDefaultInfo, 2395). +-define(wxPageSetupDialogData_SetDefaultMinMargins, 2396). +-define(wxPageSetupDialogData_SetMarginTopLeft, 2397). +-define(wxPageSetupDialogData_SetMarginBottomRight, 2398). +-define(wxPageSetupDialogData_SetMinMarginTopLeft, 2399). +-define(wxPageSetupDialogData_SetMinMarginBottomRight, 2400). +-define(wxPageSetupDialogData_SetPaperId, 2401). +-define(wxPageSetupDialogData_SetPaperSize_1_1, 2402). +-define(wxPageSetupDialogData_SetPaperSize_1_0, 2403). +-define(wxPageSetupDialogData_SetPrintData, 2404). +-define(wxPrintDialog_new_2_0, 2405). +-define(wxPrintDialog_new_2_1, 2406). +-define(wxPrintDialog_destruct, 2407). +-define(wxPrintDialog_GetPrintDialogData, 2408). +-define(wxPrintDialog_GetPrintDC, 2409). +-define(wxPrintDialogData_new_0, 2410). +-define(wxPrintDialogData_new_1_1, 2411). +-define(wxPrintDialogData_new_1_0, 2412). +-define(wxPrintDialogData_destruct, 2413). +-define(wxPrintDialogData_EnableHelp, 2414). +-define(wxPrintDialogData_EnablePageNumbers, 2415). +-define(wxPrintDialogData_EnablePrintToFile, 2416). +-define(wxPrintDialogData_EnableSelection, 2417). +-define(wxPrintDialogData_GetAllPages, 2418). +-define(wxPrintDialogData_GetCollate, 2419). +-define(wxPrintDialogData_GetFromPage, 2420). +-define(wxPrintDialogData_GetMaxPage, 2421). +-define(wxPrintDialogData_GetMinPage, 2422). +-define(wxPrintDialogData_GetNoCopies, 2423). +-define(wxPrintDialogData_GetPrintData, 2424). +-define(wxPrintDialogData_GetPrintToFile, 2425). +-define(wxPrintDialogData_GetSelection, 2426). +-define(wxPrintDialogData_GetToPage, 2427). +-define(wxPrintDialogData_IsOk, 2428). +-define(wxPrintDialogData_SetCollate, 2429). +-define(wxPrintDialogData_SetFromPage, 2430). +-define(wxPrintDialogData_SetMaxPage, 2431). +-define(wxPrintDialogData_SetMinPage, 2432). +-define(wxPrintDialogData_SetNoCopies, 2433). +-define(wxPrintDialogData_SetPrintData, 2434). +-define(wxPrintDialogData_SetPrintToFile, 2435). +-define(wxPrintDialogData_SetSelection, 2436). +-define(wxPrintDialogData_SetToPage, 2437). +-define(wxPrintData_new_0, 2438). +-define(wxPrintData_new_1, 2439). +-define(wxPrintData_destruct, 2440). +-define(wxPrintData_GetCollate, 2441). +-define(wxPrintData_GetBin, 2442). +-define(wxPrintData_GetColour, 2443). +-define(wxPrintData_GetDuplex, 2444). +-define(wxPrintData_GetNoCopies, 2445). +-define(wxPrintData_GetOrientation, 2446). +-define(wxPrintData_GetPaperId, 2447). +-define(wxPrintData_GetPrinterName, 2448). +-define(wxPrintData_GetQuality, 2449). +-define(wxPrintData_IsOk, 2450). +-define(wxPrintData_SetBin, 2451). +-define(wxPrintData_SetCollate, 2452). +-define(wxPrintData_SetColour, 2453). +-define(wxPrintData_SetDuplex, 2454). +-define(wxPrintData_SetNoCopies, 2455). +-define(wxPrintData_SetOrientation, 2456). +-define(wxPrintData_SetPaperId, 2457). +-define(wxPrintData_SetPrinterName, 2458). +-define(wxPrintData_SetQuality, 2459). +-define(wxPrintPreview_new_2, 2462). +-define(wxPrintPreview_new_3, 2463). +-define(wxPrintPreview_destruct, 2465). +-define(wxPrintPreview_GetCanvas, 2466). +-define(wxPrintPreview_GetCurrentPage, 2467). +-define(wxPrintPreview_GetFrame, 2468). +-define(wxPrintPreview_GetMaxPage, 2469). +-define(wxPrintPreview_GetMinPage, 2470). +-define(wxPrintPreview_GetPrintout, 2471). +-define(wxPrintPreview_GetPrintoutForPrinting, 2472). +-define(wxPrintPreview_IsOk, 2473). +-define(wxPrintPreview_PaintPage, 2474). +-define(wxPrintPreview_Print, 2475). +-define(wxPrintPreview_RenderPage, 2476). +-define(wxPrintPreview_SetCanvas, 2477). +-define(wxPrintPreview_SetCurrentPage, 2478). +-define(wxPrintPreview_SetFrame, 2479). +-define(wxPrintPreview_SetPrintout, 2480). +-define(wxPrintPreview_SetZoom, 2481). +-define(wxPreviewFrame_new, 2482). +-define(wxPreviewFrame_destruct, 2483). +-define(wxPreviewFrame_CreateControlBar, 2484). +-define(wxPreviewFrame_CreateCanvas, 2485). +-define(wxPreviewFrame_Initialize, 2486). +-define(wxPreviewFrame_OnCloseWindow, 2487). +-define(wxPreviewControlBar_new, 2488). +-define(wxPreviewControlBar_destruct, 2489). +-define(wxPreviewControlBar_CreateButtons, 2490). +-define(wxPreviewControlBar_GetPrintPreview, 2491). +-define(wxPreviewControlBar_GetZoomControl, 2492). +-define(wxPreviewControlBar_SetZoomControl, 2493). +-define(wxPrinter_new, 2495). +-define(wxPrinter_CreateAbortWindow, 2496). +-define(wxPrinter_GetAbort, 2497). +-define(wxPrinter_GetLastError, 2498). +-define(wxPrinter_GetPrintDialogData, 2499). +-define(wxPrinter_Print, 2500). +-define(wxPrinter_PrintDialog, 2501). +-define(wxPrinter_ReportError, 2502). +-define(wxPrinter_Setup, 2503). +-define(wxPrinter_destroy, 2504). +-define(wxXmlResource_new_1, 2505). +-define(wxXmlResource_new_2, 2506). +-define(wxXmlResource_destruct, 2507). +-define(wxXmlResource_AttachUnknownControl, 2508). +-define(wxXmlResource_ClearHandlers, 2509). +-define(wxXmlResource_CompareVersion, 2510). +-define(wxXmlResource_Get, 2511). +-define(wxXmlResource_GetFlags, 2512). +-define(wxXmlResource_GetVersion, 2513). +-define(wxXmlResource_GetXRCID, 2514). +-define(wxXmlResource_InitAllHandlers, 2515). +-define(wxXmlResource_Load, 2516). +-define(wxXmlResource_LoadBitmap, 2517). +-define(wxXmlResource_LoadDialog_2, 2518). +-define(wxXmlResource_LoadDialog_3, 2519). +-define(wxXmlResource_LoadFrame_2, 2520). +-define(wxXmlResource_LoadFrame_3, 2521). +-define(wxXmlResource_LoadIcon, 2522). +-define(wxXmlResource_LoadMenu, 2523). +-define(wxXmlResource_LoadMenuBar_2, 2524). +-define(wxXmlResource_LoadMenuBar_1, 2525). +-define(wxXmlResource_LoadPanel_2, 2526). +-define(wxXmlResource_LoadPanel_3, 2527). +-define(wxXmlResource_LoadToolBar, 2528). +-define(wxXmlResource_Set, 2529). +-define(wxXmlResource_SetFlags, 2530). +-define(wxXmlResource_Unload, 2531). +-define(wxXmlResource_xrcctrl, 2532). +-define(wxHtmlEasyPrinting_new, 2533). +-define(wxHtmlEasyPrinting_destruct, 2534). +-define(wxHtmlEasyPrinting_GetPrintData, 2535). +-define(wxHtmlEasyPrinting_GetPageSetupData, 2536). +-define(wxHtmlEasyPrinting_PreviewFile, 2537). +-define(wxHtmlEasyPrinting_PreviewText, 2538). +-define(wxHtmlEasyPrinting_PrintFile, 2539). +-define(wxHtmlEasyPrinting_PrintText, 2540). +-define(wxHtmlEasyPrinting_PageSetup, 2541). +-define(wxHtmlEasyPrinting_SetFonts, 2542). +-define(wxHtmlEasyPrinting_SetHeader, 2543). +-define(wxHtmlEasyPrinting_SetFooter, 2544). +-define(wxGLCanvas_new_2, 2546). +-define(wxGLCanvas_new_3_1, 2547). +-define(wxGLCanvas_new_3_0, 2548). +-define(wxGLCanvas_GetContext, 2549). +-define(wxGLCanvas_SetCurrent, 2551). +-define(wxGLCanvas_SwapBuffers, 2552). +-define(wxGLCanvas_destroy, 2553). +-define(wxAuiManager_new, 2554). +-define(wxAuiManager_destruct, 2555). +-define(wxAuiManager_AddPane_2_1, 2556). +-define(wxAuiManager_AddPane_3, 2557). +-define(wxAuiManager_AddPane_2_0, 2558). +-define(wxAuiManager_DetachPane, 2559). +-define(wxAuiManager_GetAllPanes, 2560). +-define(wxAuiManager_GetArtProvider, 2561). +-define(wxAuiManager_GetDockSizeConstraint, 2562). +-define(wxAuiManager_GetFlags, 2563). +-define(wxAuiManager_GetManagedWindow, 2564). +-define(wxAuiManager_GetManager, 2565). +-define(wxAuiManager_GetPane_1_1, 2566). +-define(wxAuiManager_GetPane_1_0, 2567). +-define(wxAuiManager_HideHint, 2568). +-define(wxAuiManager_InsertPane, 2569). +-define(wxAuiManager_LoadPaneInfo, 2570). +-define(wxAuiManager_LoadPerspective, 2571). +-define(wxAuiManager_SavePaneInfo, 2572). +-define(wxAuiManager_SavePerspective, 2573). +-define(wxAuiManager_SetArtProvider, 2574). +-define(wxAuiManager_SetDockSizeConstraint, 2575). +-define(wxAuiManager_SetFlags, 2576). +-define(wxAuiManager_SetManagedWindow, 2577). +-define(wxAuiManager_ShowHint, 2578). +-define(wxAuiManager_UnInit, 2579). +-define(wxAuiManager_Update, 2580). +-define(wxAuiPaneInfo_new_0, 2581). +-define(wxAuiPaneInfo_new_1, 2582). +-define(wxAuiPaneInfo_destruct, 2583). +-define(wxAuiPaneInfo_BestSize_1, 2584). +-define(wxAuiPaneInfo_BestSize_2, 2585). +-define(wxAuiPaneInfo_Bottom, 2586). +-define(wxAuiPaneInfo_BottomDockable, 2587). +-define(wxAuiPaneInfo_Caption, 2588). +-define(wxAuiPaneInfo_CaptionVisible, 2589). +-define(wxAuiPaneInfo_Centre, 2590). +-define(wxAuiPaneInfo_CentrePane, 2591). +-define(wxAuiPaneInfo_CloseButton, 2592). +-define(wxAuiPaneInfo_DefaultPane, 2593). +-define(wxAuiPaneInfo_DestroyOnClose, 2594). +-define(wxAuiPaneInfo_Direction, 2595). +-define(wxAuiPaneInfo_Dock, 2596). +-define(wxAuiPaneInfo_Dockable, 2597). +-define(wxAuiPaneInfo_Fixed, 2598). +-define(wxAuiPaneInfo_Float, 2599). +-define(wxAuiPaneInfo_Floatable, 2600). +-define(wxAuiPaneInfo_FloatingPosition_1, 2601). +-define(wxAuiPaneInfo_FloatingPosition_2, 2602). +-define(wxAuiPaneInfo_FloatingSize_1, 2603). +-define(wxAuiPaneInfo_FloatingSize_2, 2604). +-define(wxAuiPaneInfo_Gripper, 2605). +-define(wxAuiPaneInfo_GripperTop, 2606). +-define(wxAuiPaneInfo_HasBorder, 2607). +-define(wxAuiPaneInfo_HasCaption, 2608). +-define(wxAuiPaneInfo_HasCloseButton, 2609). +-define(wxAuiPaneInfo_HasFlag, 2610). +-define(wxAuiPaneInfo_HasGripper, 2611). +-define(wxAuiPaneInfo_HasGripperTop, 2612). +-define(wxAuiPaneInfo_HasMaximizeButton, 2613). +-define(wxAuiPaneInfo_HasMinimizeButton, 2614). +-define(wxAuiPaneInfo_HasPinButton, 2615). +-define(wxAuiPaneInfo_Hide, 2616). +-define(wxAuiPaneInfo_IsBottomDockable, 2617). +-define(wxAuiPaneInfo_IsDocked, 2618). +-define(wxAuiPaneInfo_IsFixed, 2619). +-define(wxAuiPaneInfo_IsFloatable, 2620). +-define(wxAuiPaneInfo_IsFloating, 2621). +-define(wxAuiPaneInfo_IsLeftDockable, 2622). +-define(wxAuiPaneInfo_IsMovable, 2623). +-define(wxAuiPaneInfo_IsOk, 2624). +-define(wxAuiPaneInfo_IsResizable, 2625). +-define(wxAuiPaneInfo_IsRightDockable, 2626). +-define(wxAuiPaneInfo_IsShown, 2627). +-define(wxAuiPaneInfo_IsToolbar, 2628). +-define(wxAuiPaneInfo_IsTopDockable, 2629). +-define(wxAuiPaneInfo_Layer, 2630). +-define(wxAuiPaneInfo_Left, 2631). +-define(wxAuiPaneInfo_LeftDockable, 2632). +-define(wxAuiPaneInfo_MaxSize_1, 2633). +-define(wxAuiPaneInfo_MaxSize_2, 2634). +-define(wxAuiPaneInfo_MaximizeButton, 2635). +-define(wxAuiPaneInfo_MinSize_1, 2636). +-define(wxAuiPaneInfo_MinSize_2, 2637). +-define(wxAuiPaneInfo_MinimizeButton, 2638). +-define(wxAuiPaneInfo_Movable, 2639). +-define(wxAuiPaneInfo_Name, 2640). +-define(wxAuiPaneInfo_PaneBorder, 2641). +-define(wxAuiPaneInfo_PinButton, 2642). +-define(wxAuiPaneInfo_Position, 2643). +-define(wxAuiPaneInfo_Resizable, 2644). +-define(wxAuiPaneInfo_Right, 2645). +-define(wxAuiPaneInfo_RightDockable, 2646). +-define(wxAuiPaneInfo_Row, 2647). +-define(wxAuiPaneInfo_SafeSet, 2648). +-define(wxAuiPaneInfo_SetFlag, 2649). +-define(wxAuiPaneInfo_Show, 2650). +-define(wxAuiPaneInfo_ToolbarPane, 2651). +-define(wxAuiPaneInfo_Top, 2652). +-define(wxAuiPaneInfo_TopDockable, 2653). +-define(wxAuiPaneInfo_Window, 2654). +-define(wxAuiPaneInfo_GetWindow, 2655). +-define(wxAuiPaneInfo_GetFrame, 2656). +-define(wxAuiPaneInfo_GetDirection, 2657). +-define(wxAuiPaneInfo_GetLayer, 2658). +-define(wxAuiPaneInfo_GetRow, 2659). +-define(wxAuiPaneInfo_GetPosition, 2660). +-define(wxAuiPaneInfo_GetFloatingPosition, 2661). +-define(wxAuiPaneInfo_GetFloatingSize, 2662). +-define(wxAuiNotebook_new_0, 2663). +-define(wxAuiNotebook_new_2, 2664). +-define(wxAuiNotebook_AddPage, 2665). +-define(wxAuiNotebook_Create, 2666). +-define(wxAuiNotebook_DeletePage, 2667). +-define(wxAuiNotebook_GetArtProvider, 2668). +-define(wxAuiNotebook_GetPage, 2669). +-define(wxAuiNotebook_GetPageBitmap, 2670). +-define(wxAuiNotebook_GetPageCount, 2671). +-define(wxAuiNotebook_GetPageIndex, 2672). +-define(wxAuiNotebook_GetPageText, 2673). +-define(wxAuiNotebook_GetSelection, 2674). +-define(wxAuiNotebook_InsertPage, 2675). +-define(wxAuiNotebook_RemovePage, 2676). +-define(wxAuiNotebook_SetArtProvider, 2677). +-define(wxAuiNotebook_SetFont, 2678). +-define(wxAuiNotebook_SetPageBitmap, 2679). +-define(wxAuiNotebook_SetPageText, 2680). +-define(wxAuiNotebook_SetSelection, 2681). +-define(wxAuiNotebook_SetTabCtrlHeight, 2682). +-define(wxAuiNotebook_SetUniformBitmapSize, 2683). +-define(wxAuiNotebook_destroy, 2684). +-define(wxAuiTabArt_SetFlags, 2685). +-define(wxAuiTabArt_SetMeasuringFont, 2686). +-define(wxAuiTabArt_SetNormalFont, 2687). +-define(wxAuiTabArt_SetSelectedFont, 2688). +-define(wxAuiTabArt_SetColour, 2689). +-define(wxAuiTabArt_SetActiveColour, 2690). +-define(wxAuiDockArt_GetColour, 2691). +-define(wxAuiDockArt_GetFont, 2692). +-define(wxAuiDockArt_GetMetric, 2693). +-define(wxAuiDockArt_SetColour, 2694). +-define(wxAuiDockArt_SetFont, 2695). +-define(wxAuiDockArt_SetMetric, 2696). +-define(wxAuiSimpleTabArt_new, 2697). +-define(wxAuiSimpleTabArt_destroy, 2698). +-define(wxMDIParentFrame_new_0, 2699). +-define(wxMDIParentFrame_new_4, 2700). +-define(wxMDIParentFrame_destruct, 2701). +-define(wxMDIParentFrame_ActivateNext, 2702). +-define(wxMDIParentFrame_ActivatePrevious, 2703). +-define(wxMDIParentFrame_ArrangeIcons, 2704). +-define(wxMDIParentFrame_Cascade, 2705). +-define(wxMDIParentFrame_Create, 2706). +-define(wxMDIParentFrame_GetActiveChild, 2707). +-define(wxMDIParentFrame_GetClientWindow, 2708). +-define(wxMDIParentFrame_Tile, 2709). +-define(wxMDIChildFrame_new_0, 2710). +-define(wxMDIChildFrame_new_4, 2711). +-define(wxMDIChildFrame_destruct, 2712). +-define(wxMDIChildFrame_Activate, 2713). +-define(wxMDIChildFrame_Create, 2714). +-define(wxMDIChildFrame_Maximize, 2715). +-define(wxMDIChildFrame_Restore, 2716). +-define(wxMDIClientWindow_new_0, 2717). +-define(wxMDIClientWindow_new_2, 2718). +-define(wxMDIClientWindow_destruct, 2719). +-define(wxMDIClientWindow_CreateClient, 2720). +-define(wxLayoutAlgorithm_new, 2721). +-define(wxLayoutAlgorithm_LayoutFrame, 2722). +-define(wxLayoutAlgorithm_LayoutMDIFrame, 2723). +-define(wxLayoutAlgorithm_LayoutWindow, 2724). +-define(wxLayoutAlgorithm_destroy, 2725). +-define(wxEvent_GetId, 2726). +-define(wxEvent_GetSkipped, 2727). +-define(wxEvent_GetTimestamp, 2728). +-define(wxEvent_IsCommandEvent, 2729). +-define(wxEvent_ResumePropagation, 2730). +-define(wxEvent_ShouldPropagate, 2731). +-define(wxEvent_Skip, 2732). +-define(wxEvent_StopPropagation, 2733). +-define(wxCommandEvent_getClientData, 2734). +-define(wxCommandEvent_GetExtraLong, 2735). +-define(wxCommandEvent_GetInt, 2736). +-define(wxCommandEvent_GetSelection, 2737). +-define(wxCommandEvent_GetString, 2738). +-define(wxCommandEvent_IsChecked, 2739). +-define(wxCommandEvent_IsSelection, 2740). +-define(wxCommandEvent_SetInt, 2741). +-define(wxCommandEvent_SetString, 2742). +-define(wxScrollEvent_GetOrientation, 2743). +-define(wxScrollEvent_GetPosition, 2744). +-define(wxScrollWinEvent_GetOrientation, 2745). +-define(wxScrollWinEvent_GetPosition, 2746). +-define(wxMouseEvent_AltDown, 2747). +-define(wxMouseEvent_Button, 2748). +-define(wxMouseEvent_ButtonDClick, 2749). +-define(wxMouseEvent_ButtonDown, 2750). +-define(wxMouseEvent_ButtonUp, 2751). +-define(wxMouseEvent_CmdDown, 2752). +-define(wxMouseEvent_ControlDown, 2753). +-define(wxMouseEvent_Dragging, 2754). +-define(wxMouseEvent_Entering, 2755). +-define(wxMouseEvent_GetButton, 2756). +-define(wxMouseEvent_GetPosition, 2759). +-define(wxMouseEvent_GetLogicalPosition, 2760). +-define(wxMouseEvent_GetLinesPerAction, 2761). +-define(wxMouseEvent_GetWheelRotation, 2762). +-define(wxMouseEvent_GetWheelDelta, 2763). +-define(wxMouseEvent_GetX, 2764). +-define(wxMouseEvent_GetY, 2765). +-define(wxMouseEvent_IsButton, 2766). +-define(wxMouseEvent_IsPageScroll, 2767). +-define(wxMouseEvent_Leaving, 2768). +-define(wxMouseEvent_LeftDClick, 2769). +-define(wxMouseEvent_LeftDown, 2770). +-define(wxMouseEvent_LeftIsDown, 2771). +-define(wxMouseEvent_LeftUp, 2772). +-define(wxMouseEvent_MetaDown, 2773). +-define(wxMouseEvent_MiddleDClick, 2774). +-define(wxMouseEvent_MiddleDown, 2775). +-define(wxMouseEvent_MiddleIsDown, 2776). +-define(wxMouseEvent_MiddleUp, 2777). +-define(wxMouseEvent_Moving, 2778). +-define(wxMouseEvent_RightDClick, 2779). +-define(wxMouseEvent_RightDown, 2780). +-define(wxMouseEvent_RightIsDown, 2781). +-define(wxMouseEvent_RightUp, 2782). +-define(wxMouseEvent_ShiftDown, 2783). +-define(wxSetCursorEvent_GetCursor, 2784). +-define(wxSetCursorEvent_GetX, 2785). +-define(wxSetCursorEvent_GetY, 2786). +-define(wxSetCursorEvent_HasCursor, 2787). +-define(wxSetCursorEvent_SetCursor, 2788). +-define(wxKeyEvent_AltDown, 2789). +-define(wxKeyEvent_CmdDown, 2790). +-define(wxKeyEvent_ControlDown, 2791). +-define(wxKeyEvent_GetKeyCode, 2792). +-define(wxKeyEvent_GetModifiers, 2793). +-define(wxKeyEvent_GetPosition, 2796). +-define(wxKeyEvent_GetRawKeyCode, 2797). +-define(wxKeyEvent_GetRawKeyFlags, 2798). +-define(wxKeyEvent_GetUnicodeKey, 2799). +-define(wxKeyEvent_GetX, 2800). +-define(wxKeyEvent_GetY, 2801). +-define(wxKeyEvent_HasModifiers, 2802). +-define(wxKeyEvent_MetaDown, 2803). +-define(wxKeyEvent_ShiftDown, 2804). +-define(wxSizeEvent_GetSize, 2805). +-define(wxMoveEvent_GetPosition, 2806). +-define(wxEraseEvent_GetDC, 2807). +-define(wxFocusEvent_GetWindow, 2808). +-define(wxChildFocusEvent_GetWindow, 2809). +-define(wxMenuEvent_GetMenu, 2810). +-define(wxMenuEvent_GetMenuId, 2811). +-define(wxMenuEvent_IsPopup, 2812). +-define(wxCloseEvent_CanVeto, 2813). +-define(wxCloseEvent_GetLoggingOff, 2814). +-define(wxCloseEvent_SetCanVeto, 2815). +-define(wxCloseEvent_SetLoggingOff, 2816). +-define(wxCloseEvent_Veto, 2817). +-define(wxShowEvent_SetShow, 2818). +-define(wxShowEvent_GetShow, 2819). +-define(wxIconizeEvent_Iconized, 2820). +-define(wxJoystickEvent_ButtonDown, 2821). +-define(wxJoystickEvent_ButtonIsDown, 2822). +-define(wxJoystickEvent_ButtonUp, 2823). +-define(wxJoystickEvent_GetButtonChange, 2824). +-define(wxJoystickEvent_GetButtonState, 2825). +-define(wxJoystickEvent_GetJoystick, 2826). +-define(wxJoystickEvent_GetPosition, 2827). +-define(wxJoystickEvent_GetZPosition, 2828). +-define(wxJoystickEvent_IsButton, 2829). +-define(wxJoystickEvent_IsMove, 2830). +-define(wxJoystickEvent_IsZMove, 2831). +-define(wxUpdateUIEvent_CanUpdate, 2832). +-define(wxUpdateUIEvent_Check, 2833). +-define(wxUpdateUIEvent_Enable, 2834). +-define(wxUpdateUIEvent_Show, 2835). +-define(wxUpdateUIEvent_GetChecked, 2836). +-define(wxUpdateUIEvent_GetEnabled, 2837). +-define(wxUpdateUIEvent_GetShown, 2838). +-define(wxUpdateUIEvent_GetSetChecked, 2839). +-define(wxUpdateUIEvent_GetSetEnabled, 2840). +-define(wxUpdateUIEvent_GetSetShown, 2841). +-define(wxUpdateUIEvent_GetSetText, 2842). +-define(wxUpdateUIEvent_GetText, 2843). +-define(wxUpdateUIEvent_GetMode, 2844). +-define(wxUpdateUIEvent_GetUpdateInterval, 2845). +-define(wxUpdateUIEvent_ResetUpdateTime, 2846). +-define(wxUpdateUIEvent_SetMode, 2847). +-define(wxUpdateUIEvent_SetText, 2848). +-define(wxUpdateUIEvent_SetUpdateInterval, 2849). +-define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2850). +-define(wxPaletteChangedEvent_SetChangedWindow, 2851). +-define(wxPaletteChangedEvent_GetChangedWindow, 2852). +-define(wxQueryNewPaletteEvent_SetPaletteRealized, 2853). +-define(wxQueryNewPaletteEvent_GetPaletteRealized, 2854). +-define(wxNavigationKeyEvent_GetDirection, 2855). +-define(wxNavigationKeyEvent_SetDirection, 2856). +-define(wxNavigationKeyEvent_IsWindowChange, 2857). +-define(wxNavigationKeyEvent_SetWindowChange, 2858). +-define(wxNavigationKeyEvent_IsFromTab, 2859). +-define(wxNavigationKeyEvent_SetFromTab, 2860). +-define(wxNavigationKeyEvent_GetCurrentFocus, 2861). +-define(wxNavigationKeyEvent_SetCurrentFocus, 2862). +-define(wxHelpEvent_GetOrigin, 2863). +-define(wxHelpEvent_GetPosition, 2864). +-define(wxHelpEvent_SetOrigin, 2865). +-define(wxHelpEvent_SetPosition, 2866). +-define(wxContextMenuEvent_GetPosition, 2867). +-define(wxContextMenuEvent_SetPosition, 2868). +-define(wxIdleEvent_CanSend, 2869). +-define(wxIdleEvent_GetMode, 2870). +-define(wxIdleEvent_RequestMore, 2871). +-define(wxIdleEvent_MoreRequested, 2872). +-define(wxIdleEvent_SetMode, 2873). +-define(wxGridEvent_AltDown, 2874). +-define(wxGridEvent_ControlDown, 2875). +-define(wxGridEvent_GetCol, 2876). +-define(wxGridEvent_GetPosition, 2877). +-define(wxGridEvent_GetRow, 2878). +-define(wxGridEvent_MetaDown, 2879). +-define(wxGridEvent_Selecting, 2880). +-define(wxGridEvent_ShiftDown, 2881). +-define(wxNotifyEvent_Allow, 2882). +-define(wxNotifyEvent_IsAllowed, 2883). +-define(wxNotifyEvent_Veto, 2884). +-define(wxSashEvent_GetEdge, 2885). +-define(wxSashEvent_GetDragRect, 2886). +-define(wxSashEvent_GetDragStatus, 2887). +-define(wxListEvent_GetCacheFrom, 2888). +-define(wxListEvent_GetCacheTo, 2889). +-define(wxListEvent_GetKeyCode, 2890). +-define(wxListEvent_GetIndex, 2891). +-define(wxListEvent_GetColumn, 2892). +-define(wxListEvent_GetPoint, 2893). +-define(wxListEvent_GetLabel, 2894). +-define(wxListEvent_GetText, 2895). +-define(wxListEvent_GetImage, 2896). +-define(wxListEvent_GetData, 2897). +-define(wxListEvent_GetMask, 2898). +-define(wxListEvent_GetItem, 2899). +-define(wxListEvent_IsEditCancelled, 2900). +-define(wxDateEvent_GetDate, 2901). +-define(wxCalendarEvent_GetWeekDay, 2902). +-define(wxFileDirPickerEvent_GetPath, 2903). +-define(wxColourPickerEvent_GetColour, 2904). +-define(wxFontPickerEvent_GetFont, 2905). +-define(wxStyledTextEvent_GetPosition, 2906). +-define(wxStyledTextEvent_GetKey, 2907). +-define(wxStyledTextEvent_GetModifiers, 2908). +-define(wxStyledTextEvent_GetModificationType, 2909). +-define(wxStyledTextEvent_GetText, 2910). +-define(wxStyledTextEvent_GetLength, 2911). +-define(wxStyledTextEvent_GetLinesAdded, 2912). +-define(wxStyledTextEvent_GetLine, 2913). +-define(wxStyledTextEvent_GetFoldLevelNow, 2914). +-define(wxStyledTextEvent_GetFoldLevelPrev, 2915). +-define(wxStyledTextEvent_GetMargin, 2916). +-define(wxStyledTextEvent_GetMessage, 2917). +-define(wxStyledTextEvent_GetWParam, 2918). +-define(wxStyledTextEvent_GetLParam, 2919). +-define(wxStyledTextEvent_GetListType, 2920). +-define(wxStyledTextEvent_GetX, 2921). +-define(wxStyledTextEvent_GetY, 2922). +-define(wxStyledTextEvent_GetDragText, 2923). +-define(wxStyledTextEvent_GetDragAllowMove, 2924). +-define(wxStyledTextEvent_GetDragResult, 2925). +-define(wxStyledTextEvent_GetShift, 2926). +-define(wxStyledTextEvent_GetControl, 2927). +-define(wxStyledTextEvent_GetAlt, 2928). +-define(utils_wxGetKeyState, 2929). +-define(utils_wxGetMousePosition, 2930). +-define(utils_wxGetMouseState, 2931). +-define(utils_wxSetDetectableAutoRepeat, 2932). +-define(utils_wxBell, 2933). +-define(utils_wxFindMenuItemId, 2934). +-define(utils_wxGenericFindWindowAtPoint, 2935). +-define(utils_wxFindWindowAtPoint, 2936). +-define(utils_wxBeginBusyCursor, 2937). +-define(utils_wxEndBusyCursor, 2938). +-define(utils_wxIsBusy, 2939). +-define(utils_wxShutdown, 2940). +-define(utils_wxShell, 2941). +-define(utils_wxLaunchDefaultBrowser, 2942). +-define(utils_wxGetEmailAddress, 2943). +-define(utils_wxGetUserId, 2944). +-define(utils_wxGetHomeDir, 2945). +-define(utils_wxNewId, 2946). +-define(utils_wxRegisterId, 2947). +-define(utils_wxGetCurrentId, 2948). +-define(utils_wxGetOsDescription, 2949). +-define(utils_wxIsPlatformLittleEndian, 2950). +-define(utils_wxIsPlatform64Bit, 2951). +-define(gdicmn_wxDisplaySize, 2952). +-define(gdicmn_wxSetCursor, 2953). +-define(wxPrintout_new, 2954). +-define(wxPrintout_destruct, 2955). +-define(wxPrintout_GetDC, 2956). +-define(wxPrintout_GetPageSizeMM, 2957). +-define(wxPrintout_GetPageSizePixels, 2958). +-define(wxPrintout_GetPaperRectPixels, 2959). +-define(wxPrintout_GetPPIPrinter, 2960). +-define(wxPrintout_GetPPIScreen, 2961). +-define(wxPrintout_GetTitle, 2962). +-define(wxPrintout_IsPreview, 2963). +-define(wxPrintout_FitThisSizeToPaper, 2964). +-define(wxPrintout_FitThisSizeToPage, 2965). +-define(wxPrintout_FitThisSizeToPageMargins, 2966). +-define(wxPrintout_MapScreenSizeToPaper, 2967). +-define(wxPrintout_MapScreenSizeToPage, 2968). +-define(wxPrintout_MapScreenSizeToPageMargins, 2969). +-define(wxPrintout_MapScreenSizeToDevice, 2970). +-define(wxPrintout_GetLogicalPaperRect, 2971). +-define(wxPrintout_GetLogicalPageRect, 2972). +-define(wxPrintout_GetLogicalPageMarginsRect, 2973). +-define(wxPrintout_SetLogicalOrigin, 2974). +-define(wxPrintout_OffsetLogicalOrigin, 2975). +-define(wxStyledTextCtrl_new_2, 2976). +-define(wxStyledTextCtrl_new_0, 2977). +-define(wxStyledTextCtrl_destruct, 2978). +-define(wxStyledTextCtrl_Create, 2979). +-define(wxStyledTextCtrl_AddText, 2980). +-define(wxStyledTextCtrl_AddStyledText, 2981). +-define(wxStyledTextCtrl_InsertText, 2982). +-define(wxStyledTextCtrl_ClearAll, 2983). +-define(wxStyledTextCtrl_ClearDocumentStyle, 2984). +-define(wxStyledTextCtrl_GetLength, 2985). +-define(wxStyledTextCtrl_GetCharAt, 2986). +-define(wxStyledTextCtrl_GetCurrentPos, 2987). +-define(wxStyledTextCtrl_GetAnchor, 2988). +-define(wxStyledTextCtrl_GetStyleAt, 2989). +-define(wxStyledTextCtrl_Redo, 2990). +-define(wxStyledTextCtrl_SetUndoCollection, 2991). +-define(wxStyledTextCtrl_SelectAll, 2992). +-define(wxStyledTextCtrl_SetSavePoint, 2993). +-define(wxStyledTextCtrl_GetStyledText, 2994). +-define(wxStyledTextCtrl_CanRedo, 2995). +-define(wxStyledTextCtrl_MarkerLineFromHandle, 2996). +-define(wxStyledTextCtrl_MarkerDeleteHandle, 2997). +-define(wxStyledTextCtrl_GetUndoCollection, 2998). +-define(wxStyledTextCtrl_GetViewWhiteSpace, 2999). +-define(wxStyledTextCtrl_SetViewWhiteSpace, 3000). +-define(wxStyledTextCtrl_PositionFromPoint, 3001). +-define(wxStyledTextCtrl_PositionFromPointClose, 3002). +-define(wxStyledTextCtrl_GotoLine, 3003). +-define(wxStyledTextCtrl_GotoPos, 3004). +-define(wxStyledTextCtrl_SetAnchor, 3005). +-define(wxStyledTextCtrl_GetCurLine, 3006). +-define(wxStyledTextCtrl_GetEndStyled, 3007). +-define(wxStyledTextCtrl_ConvertEOLs, 3008). +-define(wxStyledTextCtrl_GetEOLMode, 3009). +-define(wxStyledTextCtrl_SetEOLMode, 3010). +-define(wxStyledTextCtrl_StartStyling, 3011). +-define(wxStyledTextCtrl_SetStyling, 3012). +-define(wxStyledTextCtrl_GetBufferedDraw, 3013). +-define(wxStyledTextCtrl_SetBufferedDraw, 3014). +-define(wxStyledTextCtrl_SetTabWidth, 3015). +-define(wxStyledTextCtrl_GetTabWidth, 3016). +-define(wxStyledTextCtrl_SetCodePage, 3017). +-define(wxStyledTextCtrl_MarkerDefine, 3018). +-define(wxStyledTextCtrl_MarkerSetForeground, 3019). +-define(wxStyledTextCtrl_MarkerSetBackground, 3020). +-define(wxStyledTextCtrl_MarkerAdd, 3021). +-define(wxStyledTextCtrl_MarkerDelete, 3022). +-define(wxStyledTextCtrl_MarkerDeleteAll, 3023). +-define(wxStyledTextCtrl_MarkerGet, 3024). +-define(wxStyledTextCtrl_MarkerNext, 3025). +-define(wxStyledTextCtrl_MarkerPrevious, 3026). +-define(wxStyledTextCtrl_MarkerDefineBitmap, 3027). +-define(wxStyledTextCtrl_MarkerAddSet, 3028). +-define(wxStyledTextCtrl_MarkerSetAlpha, 3029). +-define(wxStyledTextCtrl_SetMarginType, 3030). +-define(wxStyledTextCtrl_GetMarginType, 3031). +-define(wxStyledTextCtrl_SetMarginWidth, 3032). +-define(wxStyledTextCtrl_GetMarginWidth, 3033). +-define(wxStyledTextCtrl_SetMarginMask, 3034). +-define(wxStyledTextCtrl_GetMarginMask, 3035). +-define(wxStyledTextCtrl_SetMarginSensitive, 3036). +-define(wxStyledTextCtrl_GetMarginSensitive, 3037). +-define(wxStyledTextCtrl_StyleClearAll, 3038). +-define(wxStyledTextCtrl_StyleSetForeground, 3039). +-define(wxStyledTextCtrl_StyleSetBackground, 3040). +-define(wxStyledTextCtrl_StyleSetBold, 3041). +-define(wxStyledTextCtrl_StyleSetItalic, 3042). +-define(wxStyledTextCtrl_StyleSetSize, 3043). +-define(wxStyledTextCtrl_StyleSetFaceName, 3044). +-define(wxStyledTextCtrl_StyleSetEOLFilled, 3045). +-define(wxStyledTextCtrl_StyleResetDefault, 3046). +-define(wxStyledTextCtrl_StyleSetUnderline, 3047). +-define(wxStyledTextCtrl_StyleSetCase, 3048). +-define(wxStyledTextCtrl_StyleSetHotSpot, 3049). +-define(wxStyledTextCtrl_SetSelForeground, 3050). +-define(wxStyledTextCtrl_SetSelBackground, 3051). +-define(wxStyledTextCtrl_GetSelAlpha, 3052). +-define(wxStyledTextCtrl_SetSelAlpha, 3053). +-define(wxStyledTextCtrl_SetCaretForeground, 3054). +-define(wxStyledTextCtrl_CmdKeyAssign, 3055). +-define(wxStyledTextCtrl_CmdKeyClear, 3056). +-define(wxStyledTextCtrl_CmdKeyClearAll, 3057). +-define(wxStyledTextCtrl_SetStyleBytes, 3058). +-define(wxStyledTextCtrl_StyleSetVisible, 3059). +-define(wxStyledTextCtrl_GetCaretPeriod, 3060). +-define(wxStyledTextCtrl_SetCaretPeriod, 3061). +-define(wxStyledTextCtrl_SetWordChars, 3062). +-define(wxStyledTextCtrl_BeginUndoAction, 3063). +-define(wxStyledTextCtrl_EndUndoAction, 3064). +-define(wxStyledTextCtrl_IndicatorSetStyle, 3065). +-define(wxStyledTextCtrl_IndicatorGetStyle, 3066). +-define(wxStyledTextCtrl_IndicatorSetForeground, 3067). +-define(wxStyledTextCtrl_IndicatorGetForeground, 3068). +-define(wxStyledTextCtrl_SetWhitespaceForeground, 3069). +-define(wxStyledTextCtrl_SetWhitespaceBackground, 3070). +-define(wxStyledTextCtrl_GetStyleBits, 3071). +-define(wxStyledTextCtrl_SetLineState, 3072). +-define(wxStyledTextCtrl_GetLineState, 3073). +-define(wxStyledTextCtrl_GetMaxLineState, 3074). +-define(wxStyledTextCtrl_GetCaretLineVisible, 3075). +-define(wxStyledTextCtrl_SetCaretLineVisible, 3076). +-define(wxStyledTextCtrl_GetCaretLineBackground, 3077). +-define(wxStyledTextCtrl_SetCaretLineBackground, 3078). +-define(wxStyledTextCtrl_AutoCompShow, 3079). +-define(wxStyledTextCtrl_AutoCompCancel, 3080). +-define(wxStyledTextCtrl_AutoCompActive, 3081). +-define(wxStyledTextCtrl_AutoCompPosStart, 3082). +-define(wxStyledTextCtrl_AutoCompComplete, 3083). +-define(wxStyledTextCtrl_AutoCompStops, 3084). +-define(wxStyledTextCtrl_AutoCompSetSeparator, 3085). +-define(wxStyledTextCtrl_AutoCompGetSeparator, 3086). +-define(wxStyledTextCtrl_AutoCompSelect, 3087). +-define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3088). +-define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3089). +-define(wxStyledTextCtrl_AutoCompSetFillUps, 3090). +-define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3091). +-define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3092). +-define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3093). +-define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3094). +-define(wxStyledTextCtrl_UserListShow, 3095). +-define(wxStyledTextCtrl_AutoCompSetAutoHide, 3096). +-define(wxStyledTextCtrl_AutoCompGetAutoHide, 3097). +-define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3098). +-define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3099). +-define(wxStyledTextCtrl_RegisterImage, 3100). +-define(wxStyledTextCtrl_ClearRegisteredImages, 3101). +-define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3102). +-define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3103). +-define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3104). +-define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3105). +-define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3106). +-define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3107). +-define(wxStyledTextCtrl_SetIndent, 3108). +-define(wxStyledTextCtrl_GetIndent, 3109). +-define(wxStyledTextCtrl_SetUseTabs, 3110). +-define(wxStyledTextCtrl_GetUseTabs, 3111). +-define(wxStyledTextCtrl_SetLineIndentation, 3112). +-define(wxStyledTextCtrl_GetLineIndentation, 3113). +-define(wxStyledTextCtrl_GetLineIndentPosition, 3114). +-define(wxStyledTextCtrl_GetColumn, 3115). +-define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3116). +-define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3117). +-define(wxStyledTextCtrl_SetIndentationGuides, 3118). +-define(wxStyledTextCtrl_GetIndentationGuides, 3119). +-define(wxStyledTextCtrl_SetHighlightGuide, 3120). +-define(wxStyledTextCtrl_GetHighlightGuide, 3121). +-define(wxStyledTextCtrl_GetLineEndPosition, 3122). +-define(wxStyledTextCtrl_GetCodePage, 3123). +-define(wxStyledTextCtrl_GetCaretForeground, 3124). +-define(wxStyledTextCtrl_GetReadOnly, 3125). +-define(wxStyledTextCtrl_SetCurrentPos, 3126). +-define(wxStyledTextCtrl_SetSelectionStart, 3127). +-define(wxStyledTextCtrl_GetSelectionStart, 3128). +-define(wxStyledTextCtrl_SetSelectionEnd, 3129). +-define(wxStyledTextCtrl_GetSelectionEnd, 3130). +-define(wxStyledTextCtrl_SetPrintMagnification, 3131). +-define(wxStyledTextCtrl_GetPrintMagnification, 3132). +-define(wxStyledTextCtrl_SetPrintColourMode, 3133). +-define(wxStyledTextCtrl_GetPrintColourMode, 3134). +-define(wxStyledTextCtrl_FindText, 3135). +-define(wxStyledTextCtrl_FormatRange, 3136). +-define(wxStyledTextCtrl_GetFirstVisibleLine, 3137). +-define(wxStyledTextCtrl_GetLine, 3138). +-define(wxStyledTextCtrl_GetLineCount, 3139). +-define(wxStyledTextCtrl_SetMarginLeft, 3140). +-define(wxStyledTextCtrl_GetMarginLeft, 3141). +-define(wxStyledTextCtrl_SetMarginRight, 3142). +-define(wxStyledTextCtrl_GetMarginRight, 3143). +-define(wxStyledTextCtrl_GetModify, 3144). +-define(wxStyledTextCtrl_SetSelection, 3145). +-define(wxStyledTextCtrl_GetSelectedText, 3146). +-define(wxStyledTextCtrl_GetTextRange, 3147). +-define(wxStyledTextCtrl_HideSelection, 3148). +-define(wxStyledTextCtrl_LineFromPosition, 3149). +-define(wxStyledTextCtrl_PositionFromLine, 3150). +-define(wxStyledTextCtrl_LineScroll, 3151). +-define(wxStyledTextCtrl_EnsureCaretVisible, 3152). +-define(wxStyledTextCtrl_ReplaceSelection, 3153). +-define(wxStyledTextCtrl_SetReadOnly, 3154). +-define(wxStyledTextCtrl_CanPaste, 3155). +-define(wxStyledTextCtrl_CanUndo, 3156). +-define(wxStyledTextCtrl_EmptyUndoBuffer, 3157). +-define(wxStyledTextCtrl_Undo, 3158). +-define(wxStyledTextCtrl_Cut, 3159). +-define(wxStyledTextCtrl_Copy, 3160). +-define(wxStyledTextCtrl_Paste, 3161). +-define(wxStyledTextCtrl_Clear, 3162). +-define(wxStyledTextCtrl_SetText, 3163). +-define(wxStyledTextCtrl_GetText, 3164). +-define(wxStyledTextCtrl_GetTextLength, 3165). +-define(wxStyledTextCtrl_GetOvertype, 3166). +-define(wxStyledTextCtrl_SetCaretWidth, 3167). +-define(wxStyledTextCtrl_GetCaretWidth, 3168). +-define(wxStyledTextCtrl_SetTargetStart, 3169). +-define(wxStyledTextCtrl_GetTargetStart, 3170). +-define(wxStyledTextCtrl_SetTargetEnd, 3171). +-define(wxStyledTextCtrl_GetTargetEnd, 3172). +-define(wxStyledTextCtrl_ReplaceTarget, 3173). +-define(wxStyledTextCtrl_SearchInTarget, 3174). +-define(wxStyledTextCtrl_SetSearchFlags, 3175). +-define(wxStyledTextCtrl_GetSearchFlags, 3176). +-define(wxStyledTextCtrl_CallTipShow, 3177). +-define(wxStyledTextCtrl_CallTipCancel, 3178). +-define(wxStyledTextCtrl_CallTipActive, 3179). +-define(wxStyledTextCtrl_CallTipPosAtStart, 3180). +-define(wxStyledTextCtrl_CallTipSetHighlight, 3181). +-define(wxStyledTextCtrl_CallTipSetBackground, 3182). +-define(wxStyledTextCtrl_CallTipSetForeground, 3183). +-define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3184). +-define(wxStyledTextCtrl_CallTipUseStyle, 3185). +-define(wxStyledTextCtrl_VisibleFromDocLine, 3186). +-define(wxStyledTextCtrl_DocLineFromVisible, 3187). +-define(wxStyledTextCtrl_WrapCount, 3188). +-define(wxStyledTextCtrl_SetFoldLevel, 3189). +-define(wxStyledTextCtrl_GetFoldLevel, 3190). +-define(wxStyledTextCtrl_GetLastChild, 3191). +-define(wxStyledTextCtrl_GetFoldParent, 3192). +-define(wxStyledTextCtrl_ShowLines, 3193). +-define(wxStyledTextCtrl_HideLines, 3194). +-define(wxStyledTextCtrl_GetLineVisible, 3195). +-define(wxStyledTextCtrl_SetFoldExpanded, 3196). +-define(wxStyledTextCtrl_GetFoldExpanded, 3197). +-define(wxStyledTextCtrl_ToggleFold, 3198). +-define(wxStyledTextCtrl_EnsureVisible, 3199). +-define(wxStyledTextCtrl_SetFoldFlags, 3200). +-define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3201). +-define(wxStyledTextCtrl_SetTabIndents, 3202). +-define(wxStyledTextCtrl_GetTabIndents, 3203). +-define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3204). +-define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3205). +-define(wxStyledTextCtrl_SetMouseDwellTime, 3206). +-define(wxStyledTextCtrl_GetMouseDwellTime, 3207). +-define(wxStyledTextCtrl_WordStartPosition, 3208). +-define(wxStyledTextCtrl_WordEndPosition, 3209). +-define(wxStyledTextCtrl_SetWrapMode, 3210). +-define(wxStyledTextCtrl_GetWrapMode, 3211). +-define(wxStyledTextCtrl_SetWrapVisualFlags, 3212). +-define(wxStyledTextCtrl_GetWrapVisualFlags, 3213). +-define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3214). +-define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3215). +-define(wxStyledTextCtrl_SetWrapStartIndent, 3216). +-define(wxStyledTextCtrl_GetWrapStartIndent, 3217). +-define(wxStyledTextCtrl_SetLayoutCache, 3218). +-define(wxStyledTextCtrl_GetLayoutCache, 3219). +-define(wxStyledTextCtrl_SetScrollWidth, 3220). +-define(wxStyledTextCtrl_GetScrollWidth, 3221). +-define(wxStyledTextCtrl_TextWidth, 3222). +-define(wxStyledTextCtrl_GetEndAtLastLine, 3223). +-define(wxStyledTextCtrl_TextHeight, 3224). +-define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3225). +-define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3226). +-define(wxStyledTextCtrl_AppendText, 3227). +-define(wxStyledTextCtrl_GetTwoPhaseDraw, 3228). +-define(wxStyledTextCtrl_SetTwoPhaseDraw, 3229). +-define(wxStyledTextCtrl_TargetFromSelection, 3230). +-define(wxStyledTextCtrl_LinesJoin, 3231). +-define(wxStyledTextCtrl_LinesSplit, 3232). +-define(wxStyledTextCtrl_SetFoldMarginColour, 3233). +-define(wxStyledTextCtrl_SetFoldMarginHiColour, 3234). +-define(wxStyledTextCtrl_LineDown, 3235). +-define(wxStyledTextCtrl_LineDownExtend, 3236). +-define(wxStyledTextCtrl_LineUp, 3237). +-define(wxStyledTextCtrl_LineUpExtend, 3238). +-define(wxStyledTextCtrl_CharLeft, 3239). +-define(wxStyledTextCtrl_CharLeftExtend, 3240). +-define(wxStyledTextCtrl_CharRight, 3241). +-define(wxStyledTextCtrl_CharRightExtend, 3242). +-define(wxStyledTextCtrl_WordLeft, 3243). +-define(wxStyledTextCtrl_WordLeftExtend, 3244). +-define(wxStyledTextCtrl_WordRight, 3245). +-define(wxStyledTextCtrl_WordRightExtend, 3246). +-define(wxStyledTextCtrl_Home, 3247). +-define(wxStyledTextCtrl_HomeExtend, 3248). +-define(wxStyledTextCtrl_LineEnd, 3249). +-define(wxStyledTextCtrl_LineEndExtend, 3250). +-define(wxStyledTextCtrl_DocumentStart, 3251). +-define(wxStyledTextCtrl_DocumentStartExtend, 3252). +-define(wxStyledTextCtrl_DocumentEnd, 3253). +-define(wxStyledTextCtrl_DocumentEndExtend, 3254). +-define(wxStyledTextCtrl_PageUp, 3255). +-define(wxStyledTextCtrl_PageUpExtend, 3256). +-define(wxStyledTextCtrl_PageDown, 3257). +-define(wxStyledTextCtrl_PageDownExtend, 3258). +-define(wxStyledTextCtrl_EditToggleOvertype, 3259). +-define(wxStyledTextCtrl_Cancel, 3260). +-define(wxStyledTextCtrl_DeleteBack, 3261). +-define(wxStyledTextCtrl_Tab, 3262). +-define(wxStyledTextCtrl_BackTab, 3263). +-define(wxStyledTextCtrl_NewLine, 3264). +-define(wxStyledTextCtrl_FormFeed, 3265). +-define(wxStyledTextCtrl_VCHome, 3266). +-define(wxStyledTextCtrl_VCHomeExtend, 3267). +-define(wxStyledTextCtrl_ZoomIn, 3268). +-define(wxStyledTextCtrl_ZoomOut, 3269). +-define(wxStyledTextCtrl_DelWordLeft, 3270). +-define(wxStyledTextCtrl_DelWordRight, 3271). +-define(wxStyledTextCtrl_LineCut, 3272). +-define(wxStyledTextCtrl_LineDelete, 3273). +-define(wxStyledTextCtrl_LineTranspose, 3274). +-define(wxStyledTextCtrl_LineDuplicate, 3275). +-define(wxStyledTextCtrl_LowerCase, 3276). +-define(wxStyledTextCtrl_UpperCase, 3277). +-define(wxStyledTextCtrl_LineScrollDown, 3278). +-define(wxStyledTextCtrl_LineScrollUp, 3279). +-define(wxStyledTextCtrl_DeleteBackNotLine, 3280). +-define(wxStyledTextCtrl_HomeDisplay, 3281). +-define(wxStyledTextCtrl_HomeDisplayExtend, 3282). +-define(wxStyledTextCtrl_LineEndDisplay, 3283). +-define(wxStyledTextCtrl_LineEndDisplayExtend, 3284). +-define(wxStyledTextCtrl_HomeWrapExtend, 3285). +-define(wxStyledTextCtrl_LineEndWrap, 3286). +-define(wxStyledTextCtrl_LineEndWrapExtend, 3287). +-define(wxStyledTextCtrl_VCHomeWrap, 3288). +-define(wxStyledTextCtrl_VCHomeWrapExtend, 3289). +-define(wxStyledTextCtrl_LineCopy, 3290). +-define(wxStyledTextCtrl_MoveCaretInsideView, 3291). +-define(wxStyledTextCtrl_LineLength, 3292). +-define(wxStyledTextCtrl_BraceHighlight, 3293). +-define(wxStyledTextCtrl_BraceBadLight, 3294). +-define(wxStyledTextCtrl_BraceMatch, 3295). +-define(wxStyledTextCtrl_GetViewEOL, 3296). +-define(wxStyledTextCtrl_SetViewEOL, 3297). +-define(wxStyledTextCtrl_SetModEventMask, 3298). +-define(wxStyledTextCtrl_GetEdgeColumn, 3299). +-define(wxStyledTextCtrl_SetEdgeColumn, 3300). +-define(wxStyledTextCtrl_SetEdgeMode, 3301). +-define(wxStyledTextCtrl_GetEdgeMode, 3302). +-define(wxStyledTextCtrl_GetEdgeColour, 3303). +-define(wxStyledTextCtrl_SetEdgeColour, 3304). +-define(wxStyledTextCtrl_SearchAnchor, 3305). +-define(wxStyledTextCtrl_SearchNext, 3306). +-define(wxStyledTextCtrl_SearchPrev, 3307). +-define(wxStyledTextCtrl_LinesOnScreen, 3308). +-define(wxStyledTextCtrl_UsePopUp, 3309). +-define(wxStyledTextCtrl_SelectionIsRectangle, 3310). +-define(wxStyledTextCtrl_SetZoom, 3311). +-define(wxStyledTextCtrl_GetZoom, 3312). +-define(wxStyledTextCtrl_GetModEventMask, 3313). +-define(wxStyledTextCtrl_SetSTCFocus, 3314). +-define(wxStyledTextCtrl_GetSTCFocus, 3315). +-define(wxStyledTextCtrl_SetStatus, 3316). +-define(wxStyledTextCtrl_GetStatus, 3317). +-define(wxStyledTextCtrl_SetMouseDownCaptures, 3318). +-define(wxStyledTextCtrl_GetMouseDownCaptures, 3319). +-define(wxStyledTextCtrl_SetSTCCursor, 3320). +-define(wxStyledTextCtrl_GetSTCCursor, 3321). +-define(wxStyledTextCtrl_SetControlCharSymbol, 3322). +-define(wxStyledTextCtrl_GetControlCharSymbol, 3323). +-define(wxStyledTextCtrl_WordPartLeft, 3324). +-define(wxStyledTextCtrl_WordPartLeftExtend, 3325). +-define(wxStyledTextCtrl_WordPartRight, 3326). +-define(wxStyledTextCtrl_WordPartRightExtend, 3327). +-define(wxStyledTextCtrl_SetVisiblePolicy, 3328). +-define(wxStyledTextCtrl_DelLineLeft, 3329). +-define(wxStyledTextCtrl_DelLineRight, 3330). +-define(wxStyledTextCtrl_GetXOffset, 3331). +-define(wxStyledTextCtrl_ChooseCaretX, 3332). +-define(wxStyledTextCtrl_SetXCaretPolicy, 3333). +-define(wxStyledTextCtrl_SetYCaretPolicy, 3334). +-define(wxStyledTextCtrl_GetPrintWrapMode, 3335). +-define(wxStyledTextCtrl_SetHotspotActiveForeground, 3336). +-define(wxStyledTextCtrl_SetHotspotActiveBackground, 3337). +-define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3338). +-define(wxStyledTextCtrl_SetHotspotSingleLine, 3339). +-define(wxStyledTextCtrl_ParaDownExtend, 3340). +-define(wxStyledTextCtrl_ParaUp, 3341). +-define(wxStyledTextCtrl_ParaUpExtend, 3342). +-define(wxStyledTextCtrl_PositionBefore, 3343). +-define(wxStyledTextCtrl_PositionAfter, 3344). +-define(wxStyledTextCtrl_CopyRange, 3345). +-define(wxStyledTextCtrl_CopyText, 3346). +-define(wxStyledTextCtrl_SetSelectionMode, 3347). +-define(wxStyledTextCtrl_GetSelectionMode, 3348). +-define(wxStyledTextCtrl_LineDownRectExtend, 3349). +-define(wxStyledTextCtrl_LineUpRectExtend, 3350). +-define(wxStyledTextCtrl_CharLeftRectExtend, 3351). +-define(wxStyledTextCtrl_CharRightRectExtend, 3352). +-define(wxStyledTextCtrl_HomeRectExtend, 3353). +-define(wxStyledTextCtrl_VCHomeRectExtend, 3354). +-define(wxStyledTextCtrl_LineEndRectExtend, 3355). +-define(wxStyledTextCtrl_PageUpRectExtend, 3356). +-define(wxStyledTextCtrl_PageDownRectExtend, 3357). +-define(wxStyledTextCtrl_StutteredPageUp, 3358). +-define(wxStyledTextCtrl_StutteredPageUpExtend, 3359). +-define(wxStyledTextCtrl_StutteredPageDown, 3360). +-define(wxStyledTextCtrl_StutteredPageDownExtend, 3361). +-define(wxStyledTextCtrl_WordLeftEnd, 3362). +-define(wxStyledTextCtrl_WordLeftEndExtend, 3363). +-define(wxStyledTextCtrl_WordRightEnd, 3364). +-define(wxStyledTextCtrl_WordRightEndExtend, 3365). +-define(wxStyledTextCtrl_SetWhitespaceChars, 3366). +-define(wxStyledTextCtrl_SetCharsDefault, 3367). +-define(wxStyledTextCtrl_AutoCompGetCurrent, 3368). +-define(wxStyledTextCtrl_Allocate, 3369). +-define(wxStyledTextCtrl_FindColumn, 3370). +-define(wxStyledTextCtrl_GetCaretSticky, 3371). +-define(wxStyledTextCtrl_SetCaretSticky, 3372). +-define(wxStyledTextCtrl_ToggleCaretSticky, 3373). +-define(wxStyledTextCtrl_SetPasteConvertEndings, 3374). +-define(wxStyledTextCtrl_GetPasteConvertEndings, 3375). +-define(wxStyledTextCtrl_SelectionDuplicate, 3376). +-define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3377). +-define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3378). +-define(wxStyledTextCtrl_StartRecord, 3379). +-define(wxStyledTextCtrl_StopRecord, 3380). +-define(wxStyledTextCtrl_SetLexer, 3381). +-define(wxStyledTextCtrl_GetLexer, 3382). +-define(wxStyledTextCtrl_Colourise, 3383). +-define(wxStyledTextCtrl_SetProperty, 3384). +-define(wxStyledTextCtrl_SetKeyWords, 3385). +-define(wxStyledTextCtrl_SetLexerLanguage, 3386). +-define(wxStyledTextCtrl_GetProperty, 3387). +-define(wxStyledTextCtrl_GetStyleBitsNeeded, 3388). +-define(wxStyledTextCtrl_GetCurrentLine, 3389). +-define(wxStyledTextCtrl_StyleSetSpec, 3390). +-define(wxStyledTextCtrl_StyleSetFont, 3391). +-define(wxStyledTextCtrl_StyleSetFontAttr, 3392). +-define(wxStyledTextCtrl_StyleSetCharacterSet, 3393). +-define(wxStyledTextCtrl_StyleSetFontEncoding, 3394). +-define(wxStyledTextCtrl_CmdKeyExecute, 3395). +-define(wxStyledTextCtrl_SetMargins, 3396). +-define(wxStyledTextCtrl_GetSelection, 3397). +-define(wxStyledTextCtrl_PointFromPosition, 3398). +-define(wxStyledTextCtrl_ScrollToLine, 3399). +-define(wxStyledTextCtrl_ScrollToColumn, 3400). +-define(wxStyledTextCtrl_SetVScrollBar, 3401). +-define(wxStyledTextCtrl_SetHScrollBar, 3402). +-define(wxStyledTextCtrl_GetLastKeydownProcessed, 3403). +-define(wxStyledTextCtrl_SetLastKeydownProcessed, 3404). +-define(wxStyledTextCtrl_SaveFile, 3405). +-define(wxStyledTextCtrl_LoadFile, 3406). +-define(wxStyledTextCtrl_DoDragOver, 3407). +-define(wxStyledTextCtrl_DoDropText, 3408). +-define(wxStyledTextCtrl_GetUseAntiAliasing, 3409). +-define(wxStyledTextCtrl_AddTextRaw, 3410). +-define(wxStyledTextCtrl_InsertTextRaw, 3411). +-define(wxStyledTextCtrl_GetCurLineRaw, 3412). +-define(wxStyledTextCtrl_GetLineRaw, 3413). +-define(wxStyledTextCtrl_GetSelectedTextRaw, 3414). +-define(wxStyledTextCtrl_GetTextRangeRaw, 3415). +-define(wxStyledTextCtrl_SetTextRaw, 3416). +-define(wxStyledTextCtrl_GetTextRaw, 3417). +-define(wxStyledTextCtrl_AppendTextRaw, 3418). +-define(wxArtProvider_GetBitmap, 3419). +-define(wxArtProvider_GetIcon, 3420). +-define(wxTreeEvent_GetKeyCode, 3421). +-define(wxTreeEvent_GetItem, 3422). +-define(wxTreeEvent_GetKeyEvent, 3423). +-define(wxTreeEvent_GetLabel, 3424). +-define(wxTreeEvent_GetOldItem, 3425). +-define(wxTreeEvent_GetPoint, 3426). +-define(wxTreeEvent_IsEditCancelled, 3427). +-define(wxTreeEvent_SetToolTip, 3428). +-define(wxNotebookEvent_GetOldSelection, 3429). +-define(wxNotebookEvent_GetSelection, 3430). +-define(wxNotebookEvent_SetOldSelection, 3431). +-define(wxNotebookEvent_SetSelection, 3432). +-define(wxFileDataObject_new, 3433). +-define(wxFileDataObject_AddFile, 3434). +-define(wxFileDataObject_GetFilenames, 3435). +-define(wxFileDataObject_destroy, 3436). +-define(wxTextDataObject_new, 3437). +-define(wxTextDataObject_GetTextLength, 3438). +-define(wxTextDataObject_GetText, 3439). +-define(wxTextDataObject_SetText, 3440). +-define(wxTextDataObject_destroy, 3441). +-define(wxBitmapDataObject_new_1_1, 3442). +-define(wxBitmapDataObject_new_1_0, 3443). +-define(wxBitmapDataObject_GetBitmap, 3444). +-define(wxBitmapDataObject_SetBitmap, 3445). +-define(wxBitmapDataObject_destroy, 3446). +-define(wxClipboard_new, 3448). +-define(wxClipboard_destruct, 3449). +-define(wxClipboard_AddData, 3450). +-define(wxClipboard_Clear, 3451). +-define(wxClipboard_Close, 3452). +-define(wxClipboard_Flush, 3453). +-define(wxClipboard_GetData, 3454). +-define(wxClipboard_IsOpened, 3455). +-define(wxClipboard_Open, 3456). +-define(wxClipboard_SetData, 3457). +-define(wxClipboard_UsePrimarySelection, 3459). +-define(wxClipboard_IsSupported, 3460). +-define(wxClipboard_Get, 3461). +-define(wxSpinEvent_GetPosition, 3462). +-define(wxSpinEvent_SetPosition, 3463). +-define(wxSplitterWindow_new_0, 3464). +-define(wxSplitterWindow_new_2, 3465). +-define(wxSplitterWindow_destruct, 3466). +-define(wxSplitterWindow_Create, 3467). +-define(wxSplitterWindow_GetMinimumPaneSize, 3468). +-define(wxSplitterWindow_GetSashGravity, 3469). +-define(wxSplitterWindow_GetSashPosition, 3470). +-define(wxSplitterWindow_GetSplitMode, 3471). +-define(wxSplitterWindow_GetWindow1, 3472). +-define(wxSplitterWindow_GetWindow2, 3473). +-define(wxSplitterWindow_Initialize, 3474). +-define(wxSplitterWindow_IsSplit, 3475). +-define(wxSplitterWindow_ReplaceWindow, 3476). +-define(wxSplitterWindow_SetSashGravity, 3477). +-define(wxSplitterWindow_SetSashPosition, 3478). +-define(wxSplitterWindow_SetSashSize, 3479). +-define(wxSplitterWindow_SetMinimumPaneSize, 3480). +-define(wxSplitterWindow_SetSplitMode, 3481). +-define(wxSplitterWindow_SplitHorizontally, 3482). +-define(wxSplitterWindow_SplitVertically, 3483). +-define(wxSplitterWindow_Unsplit, 3484). +-define(wxSplitterWindow_UpdateSize, 3485). +-define(wxSplitterEvent_GetSashPosition, 3486). +-define(wxSplitterEvent_GetX, 3487). +-define(wxSplitterEvent_GetY, 3488). +-define(wxSplitterEvent_GetWindowBeingRemoved, 3489). +-define(wxSplitterEvent_SetSashPosition, 3490). +-define(wxHtmlWindow_new_0, 3491). +-define(wxHtmlWindow_new_2, 3492). +-define(wxHtmlWindow_AppendToPage, 3493). +-define(wxHtmlWindow_GetOpenedAnchor, 3494). +-define(wxHtmlWindow_GetOpenedPage, 3495). +-define(wxHtmlWindow_GetOpenedPageTitle, 3496). +-define(wxHtmlWindow_GetRelatedFrame, 3497). +-define(wxHtmlWindow_HistoryBack, 3498). +-define(wxHtmlWindow_HistoryCanBack, 3499). +-define(wxHtmlWindow_HistoryCanForward, 3500). +-define(wxHtmlWindow_HistoryClear, 3501). +-define(wxHtmlWindow_HistoryForward, 3502). +-define(wxHtmlWindow_LoadFile, 3503). +-define(wxHtmlWindow_LoadPage, 3504). +-define(wxHtmlWindow_SelectAll, 3505). +-define(wxHtmlWindow_SelectionToText, 3506). +-define(wxHtmlWindow_SelectLine, 3507). +-define(wxHtmlWindow_SelectWord, 3508). +-define(wxHtmlWindow_SetBorders, 3509). +-define(wxHtmlWindow_SetFonts, 3510). +-define(wxHtmlWindow_SetPage, 3511). +-define(wxHtmlWindow_SetRelatedFrame, 3512). +-define(wxHtmlWindow_SetRelatedStatusBar, 3513). +-define(wxHtmlWindow_ToText, 3514). +-define(wxHtmlWindow_destroy, 3515). +-define(wxHtmlLinkEvent_GetLinkInfo, 3516). +-define(wxSystemSettings_GetColour, 3517). +-define(wxSystemSettings_GetFont, 3518). +-define(wxSystemSettings_GetMetric, 3519). +-define(wxSystemSettings_GetScreenType, 3520). +-define(wxSystemOptions_GetOption, 3521). +-define(wxSystemOptions_GetOptionInt, 3522). +-define(wxSystemOptions_HasOption, 3523). +-define(wxSystemOptions_IsFalse, 3524). +-define(wxSystemOptions_SetOption_2_1, 3525). +-define(wxSystemOptions_SetOption_2_0, 3526). +-define(wxAuiNotebookEvent_SetSelection, 3527). +-define(wxAuiNotebookEvent_GetSelection, 3528). +-define(wxAuiNotebookEvent_SetOldSelection, 3529). +-define(wxAuiNotebookEvent_GetOldSelection, 3530). +-define(wxAuiNotebookEvent_SetDragSource, 3531). +-define(wxAuiNotebookEvent_GetDragSource, 3532). +-define(wxAuiManagerEvent_SetManager, 3533). +-define(wxAuiManagerEvent_GetManager, 3534). +-define(wxAuiManagerEvent_SetPane, 3535). +-define(wxAuiManagerEvent_GetPane, 3536). +-define(wxAuiManagerEvent_SetButton, 3537). +-define(wxAuiManagerEvent_GetButton, 3538). +-define(wxAuiManagerEvent_SetDC, 3539). +-define(wxAuiManagerEvent_GetDC, 3540). +-define(wxAuiManagerEvent_Veto, 3541). +-define(wxAuiManagerEvent_GetVeto, 3542). +-define(wxAuiManagerEvent_SetCanVeto, 3543). +-define(wxAuiManagerEvent_CanVeto, 3544). +-define(wxLogNull_new, 3545). +-define(wxLogNull_destroy, 3546). +-define(wxTaskBarIcon_new, 3547). +-define(wxTaskBarIcon_destruct, 3548). +-define(wxTaskBarIcon_PopupMenu, 3549). +-define(wxTaskBarIcon_RemoveIcon, 3550). +-define(wxTaskBarIcon_SetIcon, 3551). +-define(wxLocale_new_0, 3552). +-define(wxLocale_new_2, 3554). +-define(wxLocale_destruct, 3555). +-define(wxLocale_Init, 3557). +-define(wxLocale_AddCatalog_1, 3558). +-define(wxLocale_AddCatalog_3, 3559). +-define(wxLocale_AddCatalogLookupPathPrefix, 3560). +-define(wxLocale_GetCanonicalName, 3561). +-define(wxLocale_GetLanguage, 3562). +-define(wxLocale_GetLanguageName, 3563). +-define(wxLocale_GetLocale, 3564). +-define(wxLocale_GetName, 3565). +-define(wxLocale_GetString_2, 3566). +-define(wxLocale_GetString_4, 3567). +-define(wxLocale_GetHeaderValue, 3568). +-define(wxLocale_GetSysName, 3569). +-define(wxLocale_GetSystemEncoding, 3570). +-define(wxLocale_GetSystemEncodingName, 3571). +-define(wxLocale_GetSystemLanguage, 3572). +-define(wxLocale_IsLoaded, 3573). +-define(wxLocale_IsOk, 3574). +-define(wxActivateEvent_GetActive, 3575). +-define(wxPopupWindow_new_2, 3577). +-define(wxPopupWindow_new_0, 3578). +-define(wxPopupWindow_destruct, 3580). +-define(wxPopupWindow_Create, 3581). +-define(wxPopupWindow_Position, 3582). +-define(wxPopupTransientWindow_new_0, 3583). +-define(wxPopupTransientWindow_new_2, 3584). +-define(wxPopupTransientWindow_destruct, 3585). +-define(wxPopupTransientWindow_Popup, 3586). +-define(wxPopupTransientWindow_Dismiss, 3587). +-define(wxOverlay_new, 3588). +-define(wxOverlay_destruct, 3589). +-define(wxOverlay_Reset, 3590). +-define(wxDCOverlay_new_6, 3591). +-define(wxDCOverlay_new_2, 3592). +-define(wxDCOverlay_destruct, 3593). +-define(wxDCOverlay_Clear, 3594). diff --git a/lib/wx/test/wx_class_SUITE.erl b/lib/wx/test/wx_class_SUITE.erl index 93a4c24a84..876db9893f 100644 --- a/lib/wx/test/wx_class_SUITE.erl +++ b/lib/wx/test/wx_class_SUITE.erl @@ -526,14 +526,19 @@ toolbar(Config) -> Wx = wx:new(), Frame = wxFrame:new(Wx, ?wxID_ANY, "Frame"), TB = wxFrame:createToolBar(Frame), - wxToolBar:addTool(TB, 747, "PressMe", wxArtProvider:getBitmap("wxART_COPY", [{size, {16,16}}]), + BM1 = wxArtProvider:getBitmap("wxART_COPY", [{size, {16,16}}, {client, "wxART_TOOLBAR"}]), + BM2 = wxArtProvider:getBitmap("wxART_TICK_MARK", [{size, {16,16}}, {client, "wxART_TOOLBAR"}]), + wxToolBar:addTool(TB, 747, "PressMe", BM1, [{shortHelp, "Press Me"}]), - + catch wxToolBar:addStretchableSpace(TB), %% wxWidgets 3.0 only Add = fun(#wx{}, _) -> - wxToolBar:addTool(TB, -1, "Added", wxArtProvider:getBitmap("wxART_TICK_MARK", [{size, {16,16}}]), - [{shortHelp, "Test 2 popup text"}]) + wxToolBar:addTool(TB, -1, "Added", BM2, + [{shortHelp, "Test 2 popup text"}]), + catch wxToolBar:addStretchableSpace(TB), %% wxWidgets 3.0 only + wxToolBar:realize(TB) end, + wxToolBar:realize(TB), wxFrame:connect(Frame, command_menu_selected, [{callback, Add}, {id, 747}]), wxFrame:show(Frame), wx_test_lib:wx_destroy(Frame,Config). diff --git a/otp_versions.table b/otp_versions.table index e31f5e425a..587748895f 100644 --- a/otp_versions.table +++ b/otp_versions.table @@ -8,6 +8,7 @@ OTP-18.0.3 : erts-7.0.3 # asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 co OTP-18.0.2 : erts-7.0.2 runtime_tools-1.9.1 # asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 cosEventDomain-1.2 cosFileTransfer-1.2 cosNotification-1.2 cosProperty-1.2 cosTime-1.2 cosTransactions-1.3 crypto-3.6 debugger-4.1 dialyzer-2.8 diameter-1.10 edoc-0.7.17 eldap-1.2 erl_docgen-0.4 erl_interface-3.8 et-1.5.1 eunit-2.2.10 gs-1.6 hipe-3.12 ic-4.4 inets-6.0 jinterface-1.6 kernel-4.0 megaco-3.18 mnesia-4.13 observer-2.1 odbc-2.11 orber-3.8 os_mon-2.4 ose-1.1 otp_mibs-1.1 parsetools-2.1 percept-0.8.11 public_key-1.0 reltool-0.7 sasl-2.5 snmp-5.2 ssh-4.0 ssl-7.0 stdlib-2.5 syntax_tools-1.7 test_server-3.9 tools-2.8 typer-0.9.9 webtool-0.9 wx-1.4 xmerl-1.3.8 : OTP-18.0.1 : erts-7.0.1 # asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 cosEventDomain-1.2 cosFileTransfer-1.2 cosNotification-1.2 cosProperty-1.2 cosTime-1.2 cosTransactions-1.3 crypto-3.6 debugger-4.1 dialyzer-2.8 diameter-1.10 edoc-0.7.17 eldap-1.2 erl_docgen-0.4 erl_interface-3.8 et-1.5.1 eunit-2.2.10 gs-1.6 hipe-3.12 ic-4.4 inets-6.0 jinterface-1.6 kernel-4.0 megaco-3.18 mnesia-4.13 observer-2.1 odbc-2.11 orber-3.8 os_mon-2.4 ose-1.1 otp_mibs-1.1 parsetools-2.1 percept-0.8.11 public_key-1.0 reltool-0.7 runtime_tools-1.9 sasl-2.5 snmp-5.2 ssh-4.0 ssl-7.0 stdlib-2.5 syntax_tools-1.7 test_server-3.9 tools-2.8 typer-0.9.9 webtool-0.9 wx-1.4 xmerl-1.3.8 : OTP-18.0 : asn1-4.0 common_test-1.11 compiler-6.0 cosEvent-2.2 cosEventDomain-1.2 cosFileTransfer-1.2 cosNotification-1.2 cosProperty-1.2 cosTime-1.2 cosTransactions-1.3 crypto-3.6 debugger-4.1 dialyzer-2.8 diameter-1.10 edoc-0.7.17 eldap-1.2 erl_docgen-0.4 erl_interface-3.8 erts-7.0 et-1.5.1 eunit-2.2.10 gs-1.6 hipe-3.12 ic-4.4 inets-6.0 jinterface-1.6 kernel-4.0 megaco-3.18 mnesia-4.13 observer-2.1 odbc-2.11 orber-3.8 os_mon-2.4 ose-1.1 otp_mibs-1.1 parsetools-2.1 percept-0.8.11 public_key-1.0 reltool-0.7 runtime_tools-1.9 sasl-2.5 snmp-5.2 ssh-4.0 ssl-7.0 stdlib-2.5 syntax_tools-1.7 test_server-3.9 tools-2.8 typer-0.9.9 webtool-0.9 wx-1.4 xmerl-1.3.8 # : +OTP-17.5.6.6 : erts-6.4.1.5 # asn1-3.0.4 common_test-1.10.1 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3.1 dialyzer-2.7.4 diameter-1.9.2.1 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 inets-5.10.9 jinterface-1.5.12 kernel-3.2.0.1 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16.1 sasl-2.4.1 snmp-5.1.2 ssh-3.2.4 ssl-6.0.1.1 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8.1 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : OTP-17.5.6.5 : erts-6.4.1.4 kernel-3.2.0.1 ssl-6.0.1.1 # asn1-3.0.4 common_test-1.10.1 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3.1 dialyzer-2.7.4 diameter-1.9.2.1 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 inets-5.10.9 jinterface-1.5.12 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16.1 sasl-2.4.1 snmp-5.1.2 ssh-3.2.4 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8.1 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : OTP-17.5.6.4 : debugger-4.0.3.1 erts-6.4.1.3 # asn1-3.0.4 common_test-1.10.1 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 dialyzer-2.7.4 diameter-1.9.2.1 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 inets-5.10.9 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16.1 sasl-2.4.1 snmp-5.1.2 ssh-3.2.4 ssl-6.0.1 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8.1 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : OTP-17.5.6.3 : diameter-1.9.2.1 # asn1-3.0.4 common_test-1.10.1 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 erts-6.4.1.2 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 inets-5.10.9 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16.1 sasl-2.4.1 snmp-5.1.2 ssh-3.2.4 ssl-6.0.1 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8.1 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : |