diff options
364 files changed, 17616 insertions, 30030 deletions
diff --git a/.gitignore b/.gitignore index 4f56040f94..e5f0869f27 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,12 @@ autom4te.cache !/erts/preloaded/ebin/*.beam !/lib/*/test/*_SUITE_data/*.beam +# +# Generated source code files. +# +/bootstrap/lib/compiler/egen +/bootstrap/lib/stdlib/egen + # Compiler derivatives # # Do not use too creative wildcards. @@ -101,12 +107,12 @@ IDL-GENERATED /bootstrap/bin/* /bootstrap/target -!/bootstrap/bin/*.script !/bootstrap/bin/*.boot /bootstrap/lib/asn1 /bootstrap/lib/hipe /bootstrap/lib/ic +/bootstrap/lib/orber /bootstrap/lib/parsetools /bootstrap/lib/sasl /bootstrap/lib/snmp diff --git a/Makefile.in b/Makefile.in index b0a00d098a..7baf5cc3aa 100644 --- a/Makefile.in +++ b/Makefile.in @@ -351,8 +351,7 @@ endif all_bootstraps: emulator \ bootstrap_setup \ secondary_bootstrap_build secondary_bootstrap_copy \ - tertiary_bootstrap_build tertiary_bootstrap_copy \ - fourth_bootstrap_build fourth_bootstrap_copy + tertiary_bootstrap_build tertiary_bootstrap_copy # # Use these targets when you want to use the erl and erlc @@ -539,6 +538,8 @@ secondary_bootstrap_copy: if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/include ; fi + if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/orber ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/orber ; fi + if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include ; fi for x in lib/parsetools/ebin/*.beam; do \ BN=`basename $$x`; \ TF=$(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin/$$BN; \ @@ -586,6 +587,16 @@ secondary_bootstrap_copy: true; \ done # cp -f lib/asn1/src/*.erl lib/asn1/src/*.hrl $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1/src + for x in lib/orber/include/*.hrl; do \ + BN=`basename $$x`; \ + TF=$(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include/$$BN; \ + test -f $$TF && \ + test '!' -z "`find $$x -newer $$TF -print`" && \ + cp $$x $$TF; \ + test '!' -f $$TF && \ + cp $$x $$TF; \ + true; \ + done tertiary_bootstrap_build: cd lib && \ @@ -607,13 +618,6 @@ tertiary_bootstrap_copy: true; \ done # cp lib/snmp/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp/ebin - -fourth_bootstrap_build: - cd lib && \ - ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ - $(MAKE) opt FOURTH_BOOTSTRAP=true - -fourth_bootstrap_copy: if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/include ; fi @@ -700,7 +704,6 @@ fourth_bootstrap_copy: cp $$x $$TF; \ true; \ done - # cp lib/syntax_tools/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/syntax_tools/ebin .PHONY: check_recreate_primary_bootstrap recreate_primary_bootstrap @@ -853,6 +856,7 @@ $(TEST_DIRS): if test -f $@/Makefile; then \ (cd $@; $(MAKE) TESTROOT=$(TESTSUITE_ROOT) release_tests) || exit $$?; \ fi + # # Install # diff --git a/bootstrap/bin/start.script b/bootstrap/bin/start.script deleted file mode 100644 index 451eb55054..0000000000 --- a/bootstrap/bin/start.script +++ /dev/null @@ -1,113 +0,0 @@ -%% script generated at {2011,8,25} {11,38,20} -{script, - {"OTP APN 181 01","R15A"}, - [{preLoaded, - [erl_prim_loader,erlang,init,otp_ring0,prim_file,prim_inet,prim_zip, - zlib]}, - {progress,preloaded}, - {path,["$ROOT/lib/kernel/ebin","$ROOT/lib/stdlib/ebin"]}, - {primLoad,[error_handler]}, - {kernel_load_completed}, - {progress,kernel_load_completed}, - {path,["$ROOT/lib/kernel/ebin"]}, - {primLoad, - [application,application_controller,application_master, - application_starter,auth,code,code_server,disk_log,disk_log_1, - disk_log_server,disk_log_sup,dist_ac,dist_util,erl_boot_server, - erl_ddll,erl_distribution,erl_epmd,erl_reply,error_logger, - erts_debug,file,file_io_server,file_server,gen_sctp,gen_tcp,gen_udp, - global,global_group,global_search,group,heart,hipe_unified_loader, - inet,inet6_sctp,inet6_tcp,inet6_tcp_dist,inet6_udp,inet_config, - inet_db,inet_dns,inet_gethost_native,inet_hosts,inet_parse,inet_res, - inet_sctp,inet_tcp,inet_tcp_dist,inet_udp,kernel,kernel_config,net, - net_adm,net_kernel,os,packages,pg2,ram_file,rpc,seq_trace, - standard_error,user,user_drv,user_sup,wrap_log_reader]}, - {path,["$ROOT/lib/stdlib/ebin"]}, - {primLoad, - [array,base64,beam_lib,binary,c,calendar,dets,dets_server,dets_sup, - dets_utils,dets_v8,dets_v9,dict,digraph,digraph_utils,edlin, - edlin_expand,epp,erl_bits,erl_compile,erl_eval,erl_expand_records, - erl_internal,erl_lint,erl_parse,erl_posix_msg,erl_pp,erl_scan, - erl_tar,error_logger_file_h,error_logger_tty_h,escript,ets, - eval_bits,file_sorter,filelib,filename,gb_sets,gb_trees,gen, - gen_event,gen_fsm,gen_server,io,io_lib,io_lib_format,io_lib_fread, - io_lib_pretty,lib,lists,log_mf_h,math,ms_transform,orddict,ordsets, - otp_internal,pg,pool,proc_lib,proplists,qlc,qlc_pt,queue,random,re, - regexp,sets,shell,shell_default,slave,sofs,string,supervisor, - supervisor_bridge,sys,timer,unicode,win32reg,zip]}, - {progress,modules_loaded}, - {path,["$ROOT/lib/kernel/ebin","$ROOT/lib/stdlib/ebin"]}, - {kernelProcess,heart,{heart,start,[]}}, - {kernelProcess,error_logger,{error_logger,start_link,[]}}, - {kernelProcess,application_controller, - {application_controller,start, - [{application,kernel, - [{description,"ERTS CXC 138 10"}, - {vsn,"2.15"}, - {id,[]}, - {modules, - [application,application_controller,application_master, - application_starter,auth,code,packages,code_server, - dist_util,erl_boot_server,erl_distribution,erl_reply, - error_handler,error_logger,file,file_server, - file_io_server,global,global_group,global_search, - group,heart,hipe_unified_loader,inet6_tcp, - inet6_tcp_dist,inet6_udp,inet6_sctp,inet_config, - inet_hosts,inet_gethost_native,inet_tcp_dist,kernel, - kernel_config,net,net_adm,net_kernel,os,ram_file,rpc, - user,user_drv,user_sup,disk_log,disk_log_1, - disk_log_server,disk_log_sup,dist_ac,erl_ddll, - erl_epmd,erts_debug,gen_tcp,gen_udp,gen_sctp,inet, - inet_db,inet_dns,inet_parse,inet_res,inet_tcp, - inet_udp,inet_sctp,pg2,seq_trace,standard_error, - wrap_log_reader]}, - {registered, - [application_controller,erl_reply,auth,boot_server, - code_server,disk_log_server,disk_log_sup, - erl_prim_loader,error_logger,file_server_2, - fixtable_server,global_group,global_name_server,heart, - init,kernel_config,kernel_sup,net_kernel,net_sup,rex, - user,os_server,ddll_server,erl_epmd,inet_db,pg2]}, - {applications,[]}, - {included_applications,[]}, - {env,[{error_logger,tty}]}, - {start_phases,undefined}, - {maxT,infinity}, - {maxP,infinity}, - {mod,{kernel,[]}}]}]}}, - {progress,init_kernel_started}, - {apply, - {application,load, - [{application,stdlib, - [{description,"ERTS CXC 138 10"}, - {vsn,"1.18"}, - {id,[]}, - {modules, - [array,base64,beam_lib,binary,c,calendar,dets, - dets_server,dets_sup,dets_utils,dets_v8,dets_v9,dict, - digraph,digraph_utils,edlin,edlin_expand,epp, - eval_bits,erl_bits,erl_compile,erl_eval, - erl_expand_records,erl_internal,erl_lint,erl_parse, - erl_posix_msg,erl_pp,erl_scan,erl_tar, - error_logger_file_h,error_logger_tty_h,escript,ets, - file_sorter,filelib,filename,gb_trees,gb_sets,gen, - gen_event,gen_fsm,gen_server,io,io_lib,io_lib_format, - io_lib_fread,io_lib_pretty,lib,lists,log_mf_h,math, - ms_transform,orddict,ordsets,otp_internal,pg,pool, - proc_lib,proplists,qlc,qlc_pt,queue,random,re,regexp, - sets,shell,shell_default,slave,sofs,string,supervisor, - supervisor_bridge,sys,timer,unicode,win32reg,zip]}, - {registered, - [timer_server,rsh_starter,take_over_monitor, - pool_master,dets]}, - {applications,[kernel]}, - {included_applications,[]}, - {env,[]}, - {start_phases,undefined}, - {maxT,infinity}, - {maxP,infinity}]}]}}, - {progress,applications_loaded}, - {apply,{application,start_boot,[kernel,permanent]}}, - {apply,{application,start_boot,[stdlib,permanent]}}, - {apply,{c,erlangrc,[]}}, - {progress,started}]}. diff --git a/bootstrap/bin/start_clean.script b/bootstrap/bin/start_clean.script deleted file mode 100644 index 451eb55054..0000000000 --- a/bootstrap/bin/start_clean.script +++ /dev/null @@ -1,113 +0,0 @@ -%% script generated at {2011,8,25} {11,38,20} -{script, - {"OTP APN 181 01","R15A"}, - [{preLoaded, - [erl_prim_loader,erlang,init,otp_ring0,prim_file,prim_inet,prim_zip, - zlib]}, - {progress,preloaded}, - {path,["$ROOT/lib/kernel/ebin","$ROOT/lib/stdlib/ebin"]}, - {primLoad,[error_handler]}, - {kernel_load_completed}, - {progress,kernel_load_completed}, - {path,["$ROOT/lib/kernel/ebin"]}, - {primLoad, - [application,application_controller,application_master, - application_starter,auth,code,code_server,disk_log,disk_log_1, - disk_log_server,disk_log_sup,dist_ac,dist_util,erl_boot_server, - erl_ddll,erl_distribution,erl_epmd,erl_reply,error_logger, - erts_debug,file,file_io_server,file_server,gen_sctp,gen_tcp,gen_udp, - global,global_group,global_search,group,heart,hipe_unified_loader, - inet,inet6_sctp,inet6_tcp,inet6_tcp_dist,inet6_udp,inet_config, - inet_db,inet_dns,inet_gethost_native,inet_hosts,inet_parse,inet_res, - inet_sctp,inet_tcp,inet_tcp_dist,inet_udp,kernel,kernel_config,net, - net_adm,net_kernel,os,packages,pg2,ram_file,rpc,seq_trace, - standard_error,user,user_drv,user_sup,wrap_log_reader]}, - {path,["$ROOT/lib/stdlib/ebin"]}, - {primLoad, - [array,base64,beam_lib,binary,c,calendar,dets,dets_server,dets_sup, - dets_utils,dets_v8,dets_v9,dict,digraph,digraph_utils,edlin, - edlin_expand,epp,erl_bits,erl_compile,erl_eval,erl_expand_records, - erl_internal,erl_lint,erl_parse,erl_posix_msg,erl_pp,erl_scan, - erl_tar,error_logger_file_h,error_logger_tty_h,escript,ets, - eval_bits,file_sorter,filelib,filename,gb_sets,gb_trees,gen, - gen_event,gen_fsm,gen_server,io,io_lib,io_lib_format,io_lib_fread, - io_lib_pretty,lib,lists,log_mf_h,math,ms_transform,orddict,ordsets, - otp_internal,pg,pool,proc_lib,proplists,qlc,qlc_pt,queue,random,re, - regexp,sets,shell,shell_default,slave,sofs,string,supervisor, - supervisor_bridge,sys,timer,unicode,win32reg,zip]}, - {progress,modules_loaded}, - {path,["$ROOT/lib/kernel/ebin","$ROOT/lib/stdlib/ebin"]}, - {kernelProcess,heart,{heart,start,[]}}, - {kernelProcess,error_logger,{error_logger,start_link,[]}}, - {kernelProcess,application_controller, - {application_controller,start, - [{application,kernel, - [{description,"ERTS CXC 138 10"}, - {vsn,"2.15"}, - {id,[]}, - {modules, - [application,application_controller,application_master, - application_starter,auth,code,packages,code_server, - dist_util,erl_boot_server,erl_distribution,erl_reply, - error_handler,error_logger,file,file_server, - file_io_server,global,global_group,global_search, - group,heart,hipe_unified_loader,inet6_tcp, - inet6_tcp_dist,inet6_udp,inet6_sctp,inet_config, - inet_hosts,inet_gethost_native,inet_tcp_dist,kernel, - kernel_config,net,net_adm,net_kernel,os,ram_file,rpc, - user,user_drv,user_sup,disk_log,disk_log_1, - disk_log_server,disk_log_sup,dist_ac,erl_ddll, - erl_epmd,erts_debug,gen_tcp,gen_udp,gen_sctp,inet, - inet_db,inet_dns,inet_parse,inet_res,inet_tcp, - inet_udp,inet_sctp,pg2,seq_trace,standard_error, - wrap_log_reader]}, - {registered, - [application_controller,erl_reply,auth,boot_server, - code_server,disk_log_server,disk_log_sup, - erl_prim_loader,error_logger,file_server_2, - fixtable_server,global_group,global_name_server,heart, - init,kernel_config,kernel_sup,net_kernel,net_sup,rex, - user,os_server,ddll_server,erl_epmd,inet_db,pg2]}, - {applications,[]}, - {included_applications,[]}, - {env,[{error_logger,tty}]}, - {start_phases,undefined}, - {maxT,infinity}, - {maxP,infinity}, - {mod,{kernel,[]}}]}]}}, - {progress,init_kernel_started}, - {apply, - {application,load, - [{application,stdlib, - [{description,"ERTS CXC 138 10"}, - {vsn,"1.18"}, - {id,[]}, - {modules, - [array,base64,beam_lib,binary,c,calendar,dets, - dets_server,dets_sup,dets_utils,dets_v8,dets_v9,dict, - digraph,digraph_utils,edlin,edlin_expand,epp, - eval_bits,erl_bits,erl_compile,erl_eval, - erl_expand_records,erl_internal,erl_lint,erl_parse, - erl_posix_msg,erl_pp,erl_scan,erl_tar, - error_logger_file_h,error_logger_tty_h,escript,ets, - file_sorter,filelib,filename,gb_trees,gb_sets,gen, - gen_event,gen_fsm,gen_server,io,io_lib,io_lib_format, - io_lib_fread,io_lib_pretty,lib,lists,log_mf_h,math, - ms_transform,orddict,ordsets,otp_internal,pg,pool, - proc_lib,proplists,qlc,qlc_pt,queue,random,re,regexp, - sets,shell,shell_default,slave,sofs,string,supervisor, - supervisor_bridge,sys,timer,unicode,win32reg,zip]}, - {registered, - [timer_server,rsh_starter,take_over_monitor, - pool_master,dets]}, - {applications,[kernel]}, - {included_applications,[]}, - {env,[]}, - {start_phases,undefined}, - {maxT,infinity}, - {maxP,infinity}]}]}}, - {progress,applications_loaded}, - {apply,{application,start_boot,[kernel,permanent]}}, - {apply,{application,start_boot,[stdlib,permanent]}}, - {apply,{c,erlangrc,[]}}, - {progress,started}]}. diff --git a/bootstrap/lib/compiler/ebin/compiler.app b/bootstrap/lib/compiler/ebin/compiler.app deleted file mode 100644 index 6c16ac7589..0000000000 --- a/bootstrap/lib/compiler/ebin/compiler.app +++ /dev/null @@ -1,67 +0,0 @@ -% This is an -*- erlang -*- file. -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2010. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% - -{application, compiler, - [{description, "ERTS CXC 138 10"}, - {vsn, "4.7.4"}, - {modules, [ - beam_asm, - beam_block, - beam_bool, - beam_bsm, - beam_clean, - beam_dead, - beam_dict, - beam_disasm, - beam_flatten, - beam_jump, - beam_listing, - beam_opcodes, - beam_peep, - beam_receive, - beam_trim, - beam_type, - beam_utils, - beam_validator, - cerl, - cerl_clauses, - cerl_inline, - cerl_trees, - compile, - core_scan, - core_lint, - core_parse, - core_pp, - core_lib, - erl_bifs, - rec_env, - sys_core_dsetel, - sys_core_fold, - sys_core_inline, - sys_expand_pmod, - sys_pre_attributes, - sys_pre_expand, - v3_codegen, - v3_core, - v3_kernel, - v3_kernel_pp, - v3_life - ]}, - {registered, []}, - {applications, [kernel, stdlib]}, - {env, []}]}. diff --git a/bootstrap/lib/compiler/ebin/compiler.appup b/bootstrap/lib/compiler/ebin/compiler.appup deleted file mode 100644 index 10c9fd3dde..0000000000 --- a/bootstrap/lib/compiler/ebin/compiler.appup +++ /dev/null @@ -1 +0,0 @@ -{"4.7.1",[],[]}. diff --git a/bootstrap/lib/compiler/egen/beam_opcodes.erl b/bootstrap/lib/compiler/egen/beam_opcodes.erl deleted file mode 100644 index 147f04ad71..0000000000 --- a/bootstrap/lib/compiler/egen/beam_opcodes.erl +++ /dev/null @@ -1,321 +0,0 @@ --module(beam_opcodes). -%% Warning: Do not edit this file. -%% Auto-generated by 'beam_makeops'. - --export([format_number/0]). --export([opcode/2,opname/1]). - --spec format_number() -> 0. -format_number() -> 0. - --spec opcode(atom(), 0..8) -> 1..153. -opcode(label, 1) -> 1; -opcode(func_info, 3) -> 2; -opcode(int_code_end, 0) -> 3; -opcode(call, 2) -> 4; -opcode(call_last, 3) -> 5; -opcode(call_only, 2) -> 6; -opcode(call_ext, 2) -> 7; -opcode(call_ext_last, 3) -> 8; -opcode(bif0, 2) -> 9; -opcode(bif1, 4) -> 10; -opcode(bif2, 5) -> 11; -opcode(allocate, 2) -> 12; -opcode(allocate_heap, 3) -> 13; -opcode(allocate_zero, 2) -> 14; -opcode(allocate_heap_zero, 3) -> 15; -opcode(test_heap, 2) -> 16; -opcode(init, 1) -> 17; -opcode(deallocate, 1) -> 18; -opcode(return, 0) -> 19; -opcode(send, 0) -> 20; -opcode(remove_message, 0) -> 21; -opcode(timeout, 0) -> 22; -opcode(loop_rec, 2) -> 23; -opcode(loop_rec_end, 1) -> 24; -opcode(wait, 1) -> 25; -opcode(wait_timeout, 2) -> 26; -%%opcode(m_plus, 4) -> 27; -%%opcode(m_minus, 4) -> 28; -%%opcode(m_times, 4) -> 29; -%%opcode(m_div, 4) -> 30; -%%opcode(int_div, 4) -> 31; -%%opcode(int_rem, 4) -> 32; -%%opcode(int_band, 4) -> 33; -%%opcode(int_bor, 4) -> 34; -%%opcode(int_bxor, 4) -> 35; -%%opcode(int_bsl, 4) -> 36; -%%opcode(int_bsr, 4) -> 37; -%%opcode(int_bnot, 3) -> 38; -opcode(is_lt, 3) -> 39; -opcode(is_ge, 3) -> 40; -opcode(is_eq, 3) -> 41; -opcode(is_ne, 3) -> 42; -opcode(is_eq_exact, 3) -> 43; -opcode(is_ne_exact, 3) -> 44; -opcode(is_integer, 2) -> 45; -opcode(is_float, 2) -> 46; -opcode(is_number, 2) -> 47; -opcode(is_atom, 2) -> 48; -opcode(is_pid, 2) -> 49; -opcode(is_reference, 2) -> 50; -opcode(is_port, 2) -> 51; -opcode(is_nil, 2) -> 52; -opcode(is_binary, 2) -> 53; -%%opcode(is_constant, 2) -> 54; -opcode(is_list, 2) -> 55; -opcode(is_nonempty_list, 2) -> 56; -opcode(is_tuple, 2) -> 57; -opcode(test_arity, 3) -> 58; -opcode(select_val, 3) -> 59; -opcode(select_tuple_arity, 3) -> 60; -opcode(jump, 1) -> 61; -opcode('catch', 2) -> 62; -opcode(catch_end, 1) -> 63; -opcode(move, 2) -> 64; -opcode(get_list, 3) -> 65; -opcode(get_tuple_element, 3) -> 66; -opcode(set_tuple_element, 3) -> 67; -%%opcode(put_string, 3) -> 68; -opcode(put_list, 3) -> 69; -opcode(put_tuple, 2) -> 70; -opcode(put, 1) -> 71; -opcode(badmatch, 1) -> 72; -opcode(if_end, 0) -> 73; -opcode(case_end, 1) -> 74; -opcode(call_fun, 1) -> 75; -%%opcode(make_fun, 3) -> 76; -opcode(is_function, 2) -> 77; -opcode(call_ext_only, 2) -> 78; -%%opcode(bs_start_match, 2) -> 79; -%%opcode(bs_get_integer, 5) -> 80; -%%opcode(bs_get_float, 5) -> 81; -%%opcode(bs_get_binary, 5) -> 82; -%%opcode(bs_skip_bits, 4) -> 83; -%%opcode(bs_test_tail, 2) -> 84; -%%opcode(bs_save, 1) -> 85; -%%opcode(bs_restore, 1) -> 86; -%%opcode(bs_init, 2) -> 87; -%%opcode(bs_final, 2) -> 88; -opcode(bs_put_integer, 5) -> 89; -opcode(bs_put_binary, 5) -> 90; -opcode(bs_put_float, 5) -> 91; -opcode(bs_put_string, 2) -> 92; -%%opcode(bs_need_buf, 1) -> 93; -opcode(fclearerror, 0) -> 94; -opcode(fcheckerror, 1) -> 95; -opcode(fmove, 2) -> 96; -opcode(fconv, 2) -> 97; -opcode(fadd, 4) -> 98; -opcode(fsub, 4) -> 99; -opcode(fmul, 4) -> 100; -opcode(fdiv, 4) -> 101; -opcode(fnegate, 3) -> 102; -opcode(make_fun2, 1) -> 103; -opcode('try', 2) -> 104; -opcode(try_end, 1) -> 105; -opcode(try_case, 1) -> 106; -opcode(try_case_end, 1) -> 107; -opcode(raise, 2) -> 108; -opcode(bs_init2, 6) -> 109; -%%opcode(bs_bits_to_bytes, 3) -> 110; -opcode(bs_add, 5) -> 111; -opcode(apply, 1) -> 112; -opcode(apply_last, 2) -> 113; -opcode(is_boolean, 2) -> 114; -opcode(is_function2, 3) -> 115; -opcode(bs_start_match2, 5) -> 116; -opcode(bs_get_integer2, 7) -> 117; -opcode(bs_get_float2, 7) -> 118; -opcode(bs_get_binary2, 7) -> 119; -opcode(bs_skip_bits2, 5) -> 120; -opcode(bs_test_tail2, 3) -> 121; -opcode(bs_save2, 2) -> 122; -opcode(bs_restore2, 2) -> 123; -opcode(gc_bif1, 5) -> 124; -opcode(gc_bif2, 6) -> 125; -%%opcode(bs_final2, 2) -> 126; -%%opcode(bs_bits_to_bytes2, 2) -> 127; -%%opcode(put_literal, 2) -> 128; -opcode(is_bitstr, 2) -> 129; -opcode(bs_context_to_binary, 1) -> 130; -opcode(bs_test_unit, 3) -> 131; -opcode(bs_match_string, 4) -> 132; -opcode(bs_init_writable, 0) -> 133; -opcode(bs_append, 8) -> 134; -opcode(bs_private_append, 6) -> 135; -opcode(trim, 2) -> 136; -opcode(bs_init_bits, 6) -> 137; -opcode(bs_get_utf8, 5) -> 138; -opcode(bs_skip_utf8, 4) -> 139; -opcode(bs_get_utf16, 5) -> 140; -opcode(bs_skip_utf16, 4) -> 141; -opcode(bs_get_utf32, 5) -> 142; -opcode(bs_skip_utf32, 4) -> 143; -opcode(bs_utf8_size, 3) -> 144; -opcode(bs_put_utf8, 3) -> 145; -opcode(bs_utf16_size, 3) -> 146; -opcode(bs_put_utf16, 3) -> 147; -opcode(bs_put_utf32, 3) -> 148; -opcode(on_load, 0) -> 149; -opcode(recv_mark, 1) -> 150; -opcode(recv_set, 1) -> 151; -opcode(gc_bif3, 7) -> 152; -opcode(line, 1) -> 153; -opcode(Name, Arity) -> erlang:error(badarg, [Name,Arity]). - --spec opname(1..153) -> {atom(),0..8}. -opname(1) -> {label,1}; -opname(2) -> {func_info,3}; -opname(3) -> {int_code_end,0}; -opname(4) -> {call,2}; -opname(5) -> {call_last,3}; -opname(6) -> {call_only,2}; -opname(7) -> {call_ext,2}; -opname(8) -> {call_ext_last,3}; -opname(9) -> {bif0,2}; -opname(10) -> {bif1,4}; -opname(11) -> {bif2,5}; -opname(12) -> {allocate,2}; -opname(13) -> {allocate_heap,3}; -opname(14) -> {allocate_zero,2}; -opname(15) -> {allocate_heap_zero,3}; -opname(16) -> {test_heap,2}; -opname(17) -> {init,1}; -opname(18) -> {deallocate,1}; -opname(19) -> {return,0}; -opname(20) -> {send,0}; -opname(21) -> {remove_message,0}; -opname(22) -> {timeout,0}; -opname(23) -> {loop_rec,2}; -opname(24) -> {loop_rec_end,1}; -opname(25) -> {wait,1}; -opname(26) -> {wait_timeout,2}; -opname(27) -> {m_plus,4}; -opname(28) -> {m_minus,4}; -opname(29) -> {m_times,4}; -opname(30) -> {m_div,4}; -opname(31) -> {int_div,4}; -opname(32) -> {int_rem,4}; -opname(33) -> {int_band,4}; -opname(34) -> {int_bor,4}; -opname(35) -> {int_bxor,4}; -opname(36) -> {int_bsl,4}; -opname(37) -> {int_bsr,4}; -opname(38) -> {int_bnot,3}; -opname(39) -> {is_lt,3}; -opname(40) -> {is_ge,3}; -opname(41) -> {is_eq,3}; -opname(42) -> {is_ne,3}; -opname(43) -> {is_eq_exact,3}; -opname(44) -> {is_ne_exact,3}; -opname(45) -> {is_integer,2}; -opname(46) -> {is_float,2}; -opname(47) -> {is_number,2}; -opname(48) -> {is_atom,2}; -opname(49) -> {is_pid,2}; -opname(50) -> {is_reference,2}; -opname(51) -> {is_port,2}; -opname(52) -> {is_nil,2}; -opname(53) -> {is_binary,2}; -opname(54) -> {is_constant,2}; -opname(55) -> {is_list,2}; -opname(56) -> {is_nonempty_list,2}; -opname(57) -> {is_tuple,2}; -opname(58) -> {test_arity,3}; -opname(59) -> {select_val,3}; -opname(60) -> {select_tuple_arity,3}; -opname(61) -> {jump,1}; -opname(62) -> {'catch',2}; -opname(63) -> {catch_end,1}; -opname(64) -> {move,2}; -opname(65) -> {get_list,3}; -opname(66) -> {get_tuple_element,3}; -opname(67) -> {set_tuple_element,3}; -opname(68) -> {put_string,3}; -opname(69) -> {put_list,3}; -opname(70) -> {put_tuple,2}; -opname(71) -> {put,1}; -opname(72) -> {badmatch,1}; -opname(73) -> {if_end,0}; -opname(74) -> {case_end,1}; -opname(75) -> {call_fun,1}; -opname(76) -> {make_fun,3}; -opname(77) -> {is_function,2}; -opname(78) -> {call_ext_only,2}; -opname(79) -> {bs_start_match,2}; -opname(80) -> {bs_get_integer,5}; -opname(81) -> {bs_get_float,5}; -opname(82) -> {bs_get_binary,5}; -opname(83) -> {bs_skip_bits,4}; -opname(84) -> {bs_test_tail,2}; -opname(85) -> {bs_save,1}; -opname(86) -> {bs_restore,1}; -opname(87) -> {bs_init,2}; -opname(88) -> {bs_final,2}; -opname(89) -> {bs_put_integer,5}; -opname(90) -> {bs_put_binary,5}; -opname(91) -> {bs_put_float,5}; -opname(92) -> {bs_put_string,2}; -opname(93) -> {bs_need_buf,1}; -opname(94) -> {fclearerror,0}; -opname(95) -> {fcheckerror,1}; -opname(96) -> {fmove,2}; -opname(97) -> {fconv,2}; -opname(98) -> {fadd,4}; -opname(99) -> {fsub,4}; -opname(100) -> {fmul,4}; -opname(101) -> {fdiv,4}; -opname(102) -> {fnegate,3}; -opname(103) -> {make_fun2,1}; -opname(104) -> {'try',2}; -opname(105) -> {try_end,1}; -opname(106) -> {try_case,1}; -opname(107) -> {try_case_end,1}; -opname(108) -> {raise,2}; -opname(109) -> {bs_init2,6}; -opname(110) -> {bs_bits_to_bytes,3}; -opname(111) -> {bs_add,5}; -opname(112) -> {apply,1}; -opname(113) -> {apply_last,2}; -opname(114) -> {is_boolean,2}; -opname(115) -> {is_function2,3}; -opname(116) -> {bs_start_match2,5}; -opname(117) -> {bs_get_integer2,7}; -opname(118) -> {bs_get_float2,7}; -opname(119) -> {bs_get_binary2,7}; -opname(120) -> {bs_skip_bits2,5}; -opname(121) -> {bs_test_tail2,3}; -opname(122) -> {bs_save2,2}; -opname(123) -> {bs_restore2,2}; -opname(124) -> {gc_bif1,5}; -opname(125) -> {gc_bif2,6}; -opname(126) -> {bs_final2,2}; -opname(127) -> {bs_bits_to_bytes2,2}; -opname(128) -> {put_literal,2}; -opname(129) -> {is_bitstr,2}; -opname(130) -> {bs_context_to_binary,1}; -opname(131) -> {bs_test_unit,3}; -opname(132) -> {bs_match_string,4}; -opname(133) -> {bs_init_writable,0}; -opname(134) -> {bs_append,8}; -opname(135) -> {bs_private_append,6}; -opname(136) -> {trim,2}; -opname(137) -> {bs_init_bits,6}; -opname(138) -> {bs_get_utf8,5}; -opname(139) -> {bs_skip_utf8,4}; -opname(140) -> {bs_get_utf16,5}; -opname(141) -> {bs_skip_utf16,4}; -opname(142) -> {bs_get_utf32,5}; -opname(143) -> {bs_skip_utf32,4}; -opname(144) -> {bs_utf8_size,3}; -opname(145) -> {bs_put_utf8,3}; -opname(146) -> {bs_utf16_size,3}; -opname(147) -> {bs_put_utf16,3}; -opname(148) -> {bs_put_utf32,3}; -opname(149) -> {on_load,0}; -opname(150) -> {recv_mark,1}; -opname(151) -> {recv_set,1}; -opname(152) -> {gc_bif3,7}; -opname(153) -> {line,1}; -opname(Number) -> erlang:error(badarg, [Number]). diff --git a/bootstrap/lib/compiler/egen/beam_opcodes.hrl b/bootstrap/lib/compiler/egen/beam_opcodes.hrl deleted file mode 100644 index 6ad7d17118..0000000000 --- a/bootstrap/lib/compiler/egen/beam_opcodes.hrl +++ /dev/null @@ -1,12 +0,0 @@ -%% Warning: Do not edit this file. -%% Auto-generated by 'beam_makeops'. - --define(tag_u, 0). --define(tag_i, 1). --define(tag_a, 2). --define(tag_x, 3). --define(tag_y, 4). --define(tag_f, 5). --define(tag_h, 6). --define(tag_z, 7). - diff --git a/bootstrap/lib/compiler/egen/core_parse.erl b/bootstrap/lib/compiler/egen/core_parse.erl deleted file mode 100644 index fab545133c..0000000000 --- a/bootstrap/lib/compiler/egen/core_parse.erl +++ /dev/null @@ -1,5426 +0,0 @@ --module(core_parse). --export([parse/1, parse_and_scan/1, format_error/1]). --file("core_parse.yrl", 372). - -%% The following directive is needed for (significantly) faster compilation -%% of the generated .erl file by the HiPE compiler. Please do not remove. --compile([{hipe,[{regalloc,linear_scan}]}]). - --include("core_parse.hrl"). - --import(cerl, [c_cons/2,c_tuple/1]). - -tok_val(T) -> element(3, T). -tok_line(T) -> element(2, T). - --file("/usr/local/otp/releases/sles10_32_R14B03_patched/lib/parsetools-2.0.5/include/yeccpre.hrl", 0). -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% The parser generator will insert appropriate declarations before this line.% - --type yecc_ret() :: {'error', _} | {'ok', _}. - --spec parse(Tokens :: list()) -> yecc_ret(). -parse(Tokens) -> - yeccpars0(Tokens, {no_func, no_line}, 0, [], []). - --spec parse_and_scan({function() | {atom(), atom()}, [_]} - | {atom(), atom(), [_]}) -> yecc_ret(). -parse_and_scan({F, A}) -> % Fun or {M, F} - yeccpars0([], {{F, A}, no_line}, 0, [], []); -parse_and_scan({M, F, A}) -> - yeccpars0([], {{{M, F}, A}, no_line}, 0, [], []). - --spec format_error(any()) -> [char() | list()]. -format_error(Message) -> - case io_lib:deep_char_list(Message) of - true -> - Message; - _ -> - io_lib:write(Message) - end. - -%% To be used in grammar files to throw an error message to the parser -%% toplevel. Doesn't have to be exported! --compile({nowarn_unused_function, return_error/2}). --spec return_error(integer(), any()) -> no_return(). -return_error(Line, Message) -> - throw({error, {Line, ?MODULE, Message}}). - --define(CODE_VERSION, "1.4"). - -yeccpars0(Tokens, Tzr, State, States, Vstack) -> - try yeccpars1(Tokens, Tzr, State, States, Vstack) - catch - error: Error -> - Stacktrace = erlang:get_stacktrace(), - try yecc_error_type(Error, Stacktrace) of - Desc -> - erlang:raise(error, {yecc_bug, ?CODE_VERSION, Desc}, - Stacktrace) - catch _:_ -> erlang:raise(error, Error, Stacktrace) - end; - %% Probably thrown from return_error/2: - throw: {error, {_Line, ?MODULE, _M}} = Error -> - Error - end. - -yecc_error_type(function_clause, [{?MODULE,F,ArityOrArgs} | _]) -> - case atom_to_list(F) of - "yeccgoto_" ++ SymbolL -> - {ok,[{atom,_,Symbol}],_} = erl_scan:string(SymbolL), - State = case ArityOrArgs of - [S,_,_,_,_,_,_] -> S; - _ -> state_is_unknown - end, - {Symbol, State, missing_in_goto_table} - end. - -yeccpars1([Token | Tokens], Tzr, State, States, Vstack) -> - yeccpars2(State, element(1, Token), States, Vstack, Token, Tokens, Tzr); -yeccpars1([], {{F, A},_Line}, State, States, Vstack) -> - case apply(F, A) of - {ok, Tokens, Endline} -> - yeccpars1(Tokens, {{F, A}, Endline}, State, States, Vstack); - {eof, Endline} -> - yeccpars1([], {no_func, Endline}, State, States, Vstack); - {error, Descriptor, _Endline} -> - {error, Descriptor} - end; -yeccpars1([], {no_func, no_line}, State, States, Vstack) -> - Line = 999999, - yeccpars2(State, '$end', States, Vstack, yecc_end(Line), [], - {no_func, Line}); -yeccpars1([], {no_func, Endline}, State, States, Vstack) -> - yeccpars2(State, '$end', States, Vstack, yecc_end(Endline), [], - {no_func, Endline}). - -%% yeccpars1/7 is called from generated code. -%% -%% When using the {includefile, Includefile} option, make sure that -%% yeccpars1/7 can be found by parsing the file without following -%% include directives. yecc will otherwise assume that an old -%% yeccpre.hrl is included (one which defines yeccpars1/5). -yeccpars1(State1, State, States, Vstack, Token0, [Token | Tokens], Tzr) -> - yeccpars2(State, element(1, Token), [State1 | States], - [Token0 | Vstack], Token, Tokens, Tzr); -yeccpars1(State1, State, States, Vstack, Token0, [], {{_F,_A}, _Line}=Tzr) -> - yeccpars1([], Tzr, State, [State1 | States], [Token0 | Vstack]); -yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, no_line}) -> - Line = yecctoken_end_location(Token0), - yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], - yecc_end(Line), [], {no_func, Line}); -yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, Line}) -> - yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], - yecc_end(Line), [], {no_func, Line}). - -%% For internal use only. -yecc_end({Line,_Column}) -> - {'$end', Line}; -yecc_end(Line) -> - {'$end', Line}. - -yecctoken_end_location(Token) -> - try - {text, Str} = erl_scan:token_info(Token, text), - {line, Line} = erl_scan:token_info(Token, line), - Parts = re:split(Str, "\n"), - Dline = length(Parts) - 1, - Yline = Line + Dline, - case erl_scan:token_info(Token, column) of - {column, Column} -> - Col = byte_size(lists:last(Parts)), - {Yline, Col + if Dline =:= 0 -> Column; true -> 1 end}; - undefined -> - Yline - end - catch _:_ -> - yecctoken_location(Token) - end. - --compile({nowarn_unused_function, yeccerror/1}). -yeccerror(Token) -> - Text = yecctoken_to_string(Token), - Location = yecctoken_location(Token), - {error, {Location, ?MODULE, ["syntax error before: ", Text]}}. - --compile({nowarn_unused_function, yecctoken_to_string/1}). -yecctoken_to_string(Token) -> - case catch erl_scan:token_info(Token, text) of - {text, Txt} -> Txt; - _ -> yecctoken2string(Token) - end. - -yecctoken_location(Token) -> - case catch erl_scan:token_info(Token, location) of - {location, Loc} -> Loc; - _ -> element(2, Token) - end. - --compile({nowarn_unused_function, yecctoken2string/1}). -yecctoken2string({atom, _, A}) -> io_lib:write(A); -yecctoken2string({integer,_,N}) -> io_lib:write(N); -yecctoken2string({float,_,F}) -> io_lib:write(F); -yecctoken2string({char,_,C}) -> io_lib:write_char(C); -yecctoken2string({var,_,V}) -> io_lib:format("~s", [V]); -yecctoken2string({string,_,S}) -> io_lib:write_unicode_string(S); -yecctoken2string({reserved_symbol, _, A}) -> io_lib:write(A); -yecctoken2string({_Cat, _, Val}) -> io_lib:format("~p",[Val]); -yecctoken2string({dot, _}) -> "'.'"; -yecctoken2string({'$end', _}) -> - []; -yecctoken2string({Other, _}) when is_atom(Other) -> - io_lib:write(Other); -yecctoken2string(Other) -> - io_lib:write(Other). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - --file("/ldisk/bjorn/otp/bootstrap/lib/compiler/egen/core_parse.erl", 199). - -yeccpars2(0=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(1=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_1(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(2=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_2(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(3=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_3(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(4=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_4(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(5=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_5(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(6=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_6(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(7=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_7(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(8=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_8(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(9=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_9(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(10=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(11=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_11(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(12=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_12(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(13=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_13(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(14=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(15=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_15(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(16=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(17=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_17(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(18=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(19=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(20=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_20(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(21=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_21(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(22=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(23=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(24=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(25=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_25(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(26=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_26(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(27=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_27(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(28=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_28(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(29=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_29(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(30=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(31=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(32=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(33=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(34=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(35=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(36=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(37=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_37(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(38=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_38(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(39=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(40=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(41=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_41(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(42=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(43=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_43(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(44=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_44(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(45=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(46=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(47=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_47(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(48=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(49=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_49(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(50=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_50(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(51=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_43(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(52=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_52(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(53=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_53(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(54=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_54(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(55=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_55(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(56=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_56(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(57=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_57(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(58=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_58(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(59=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_59(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(60=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_60(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(61=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(62=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_62(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(63=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(64=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_64(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(65=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_65(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(66=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_66(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(67=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_67(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(68=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_68(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(69=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_69(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(70=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_70(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(71=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_71(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(72=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_72(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(73=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_73(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(74=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_74(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(75=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_75(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(76=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_76(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(77=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(78=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_78(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(79=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(80=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_80(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(81=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_81(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(82=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_82(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(83=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(84=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_84(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(85=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(86=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(87=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(88=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_88(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(89=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_89(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(90=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(91=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_91(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(92=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(93=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_93(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(94=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_94(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(95=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_95(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(96=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_96(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(97=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_97(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(98=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_98(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(99=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_99(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(100=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_100(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(101=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_101(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(102=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_102(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(103=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_103(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(104=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_104(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(105=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_105(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(106=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_106(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(107=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_107(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(108=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(109=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_109(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(110=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_110(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(111=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_111(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(112=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_112(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(113=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_113(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(114=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_114(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(115=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_115(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(116=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_116(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(117=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_117(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(118=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_118(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(119=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_119(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(120=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_120(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(121=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_121(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(122=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_122(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(123=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_123(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(124=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_124(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(125=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_125(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(126=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_126(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(127=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_127(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(128=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_128(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(129=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_129(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(130=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_130(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(131=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(132=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(133=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(134=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_134(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(135=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(136=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(137=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(138=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(139=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_139(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(140=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_140(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(141=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(142=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_142(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(143=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(144=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_144(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(145=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_145(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(146=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_146(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(147=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_147(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(148=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(149=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_149(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(150=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_150(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(151=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_151(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(152=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_139(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(153=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_153(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(154=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_154(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(155=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_155(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(156=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_156(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(157=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_157(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(158=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_158(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(159=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(160=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_160(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(161=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_139(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(162=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_162(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(163=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(164=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_164(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(165=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_165(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(166=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_166(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(167=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_167(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(168=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_168(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(169=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_169(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(170=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_170(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(171=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_171(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(172=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_172(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(173=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_173(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(174=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_174(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(175=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_175(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(176=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_176(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(177=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_177(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(178=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_178(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(179=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_179(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(180=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_180(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(181=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(182=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(183=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_183(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(184=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_184(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(185=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_185(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(186=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_186(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(187=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_187(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(188=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_188(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(189=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_189(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(190=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_190(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(191=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(192=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_192(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(193=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(194=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_194(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(195=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_195(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(196=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(197=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_197(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(198=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_198(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(199=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(200=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_200(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(201=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_201(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(202=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_202(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(203=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(204=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_204(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(205=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_205(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(206=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_206(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(207=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(208=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_208(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(209=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(210=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_210(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(211=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_211(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(212=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_205(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(213=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_213(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(214=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_214(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(215=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_215(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(216=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_216(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(217=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_217(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(218=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_218(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(219=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(220=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_220(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(221=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_221(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(222=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_222(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(223=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_223(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(224=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_224(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(225=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_225(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(226=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_226(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(227=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_227(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(228=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(229=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_229(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(230=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(231=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(232=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_232(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(233=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_233(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(234=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_234(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(235=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_235(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(236=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_236(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(237=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_237(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(238=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_238(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(239=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_239(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(240=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(241=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_241(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(242=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(243=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_243(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(244=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_244(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(245=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_245(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(246=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_246(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(247=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_247(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(248=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_248(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(249=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_249(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(250=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_250(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(251=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(252=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_252(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(253=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_253(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(254=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(255=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_255(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(256=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(257=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_257(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(258=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(259=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_259(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(260=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_260(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(261=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_261(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(262=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_262(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(263=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_263(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(264=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_264(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(265=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_265(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(266=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(267=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_244(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(268=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_268(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(269=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_244(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(270=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_270(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(271=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_271(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(272=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_272(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(273=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(274=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_274(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(275=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(276=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_276(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(277=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_277(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(278=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_271(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(279=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_279(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(280=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_280(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(281=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_281(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(282=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_282(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(283=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_283(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(284=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(285=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_285(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(286=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_286(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(287=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_287(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(288=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_288(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(289=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_289(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(290=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_290(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(291=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_291(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(292=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_292(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(293=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(294=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_294(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(295=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_295(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(296=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(297=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_297(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(298=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_298(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(299=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_299(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(300=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_300(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(301=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_301(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(302=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_302(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(303=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_303(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(304=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_304(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(305=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_305(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(306=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_306(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(307=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(308=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_308(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(309=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_309(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(310=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(311=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_311(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(312=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(313=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_313(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(314=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(315=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(316=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_4(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(317=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_5(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(318=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_318(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(319=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_319(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(320=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(321=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(322=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(323=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_323(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(Other, _, _, _, _, _, _) -> - erlang:error({yecc_bug,"1.4",{missing_state_in_action_table, Other}}). - -yeccpars2_0(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 2, Ss, Stack, T, Ts, Tzr); -yeccpars2_0(S, module, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 3, Ss, Stack, T, Ts, Tzr); -yeccpars2_0(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_1(_S, '$end', _Ss, Stack, _T, _Ts, _Tzr) -> - {ok, hd(Stack)}; -yeccpars2_1(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_2(S, module, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 315, Ss, Stack, T, Ts, Tzr); -yeccpars2_2(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_3(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 4, Ss, Stack, T, Ts, Tzr); -yeccpars2_3(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_4(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 6, Ss, Stack, T, Ts, Tzr); -yeccpars2_4(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_5(S, attributes, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 18, Ss, Stack, T, Ts, Tzr); -yeccpars2_5(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_6(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 10, Ss, Stack, T, Ts, Tzr); -yeccpars2_6(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_6(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_exported_name(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_8(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 16, Ss, Stack, T, Ts, Tzr); -yeccpars2_8(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_9(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 14, Ss, Stack, T, Ts, Tzr); -yeccpars2_9(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_9_(Stack), - yeccgoto_exported_names(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_10(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_10_(Stack), - yeccgoto_module_export(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_11(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 12, Ss, Stack, T, Ts, Tzr); -yeccpars2_11(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_12(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr); -yeccpars2_12(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_13(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_13_(Stack), - yeccgoto_function_name(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_14(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_14(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_15_(Stack), - yeccgoto_exported_names(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_16_(Stack), - yeccgoto_module_export(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_17(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_17(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_17(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_17_(Stack), - yeccpars2_58(_S, Cat, [17 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_18(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 19, Ss, Stack, T, Ts, Tzr); -yeccpars2_18(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_19(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 22, Ss, Stack, T, Ts, Tzr); -yeccpars2_19(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 23, Ss, Stack, T, Ts, Tzr); -yeccpars2_19(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_20(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 55, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_21(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 53, Ss, Stack, T, Ts, Tzr); -yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_21_(Stack), - yeccgoto_attribute_list(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_22_(Stack), - yeccgoto_module_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_23(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 24, Ss, Stack, T, Ts, Tzr); -yeccpars2_23(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_24(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 30, Ss, Stack, T, Ts, Tzr); -yeccpars2_24(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_24(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 36, Ss, Stack, T, Ts, Tzr); -yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_cont_24(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_24(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_24(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_24(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_24(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_literal(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_26_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_27(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_27_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_literal(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_literal(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_30(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 30, Ss, Stack, T, Ts, Tzr); -yeccpars2_30(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_30(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_30(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 36, Ss, Stack, T, Ts, Tzr); -yeccpars2_30(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_31_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_32(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_32_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_33(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_33_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_34(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_34_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_35(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_35_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_36(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 30, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 36, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 39, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_37(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 42, Ss, Stack, T, Ts, Tzr); -yeccpars2_37(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_38(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 40, Ss, Stack, T, Ts, Tzr); -yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_38_(Stack), - yeccgoto_literals(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_39(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_39_(Stack), - yeccgoto_tuple_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_40: see yeccpars2_24 - -yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_41_(Stack), - yeccgoto_literals(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_42_(Stack), - yeccgoto_tuple_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_43(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 46, Ss, Stack, T, Ts, Tzr); -yeccpars2_43(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_43(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_43(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_44(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_44_(Stack), - yeccgoto_nil(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_45(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_45_(Stack), - yeccgoto_cons_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_46: see yeccpars2_24 - -yeccpars2_47(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_47_(Stack), - yeccgoto_tail_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_48: see yeccpars2_24 - -yeccpars2_49(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 50, Ss, Stack, T, Ts, Tzr); -yeccpars2_49(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_50(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_50_(Stack), - yeccgoto_tail_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_51: see yeccpars2_43 - -yeccpars2_52(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_52_(Stack), - yeccgoto_tail_literal(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_53(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 23, Ss, Stack, T, Ts, Tzr); -yeccpars2_53(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_54(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_54_(Stack), - yeccgoto_attribute_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_55(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_55_(Stack), - yeccgoto_module_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_56(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 314, Ss, Stack, T, Ts, Tzr); -yeccpars2_56(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_function_name(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_module_defs(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_59(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_59(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_59(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_59_(Stack), - yeccpars2_313(_S, Cat, [59 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_60(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 96, Ss, Stack, T, Ts, Tzr); -yeccpars2_60(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_61: see yeccpars2_14 - -yeccpars2_62(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 63, Ss, Stack, T, Ts, Tzr); -yeccpars2_62(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_63(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 65, Ss, Stack, T, Ts, Tzr); -yeccpars2_63(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_64(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 95, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_65(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 73, Ss, Stack, T, Ts, Tzr); -yeccpars2_65(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_constant(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_67_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_68(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 94, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_69(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 92, Ss, Stack, T, Ts, Tzr); -yeccpars2_69(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_69_(Stack), - yeccgoto_constants(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_constant(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_constant(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_72(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_72(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_73(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_73_(Stack), - yeccgoto_annotation(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_74(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_74_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_75(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_75_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_76(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_76_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_77(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_77_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_78(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_78_(Stack), - yeccgoto_atomic_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_79(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 81, Ss, Stack, T, Ts, Tzr); -yeccpars2_79(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_80(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 82, Ss, Stack, T, Ts, Tzr); -yeccpars2_80(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_81(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_81_(Stack), - yeccgoto_tuple_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_82(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_82_(Stack), - yeccgoto_tuple_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_83(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 85, Ss, Stack, T, Ts, Tzr); -yeccpars2_83(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 86, Ss, Stack, T, Ts, Tzr); -yeccpars2_83(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 87, Ss, Stack, T, Ts, Tzr); -yeccpars2_83(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_84(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_84_(Stack), - yeccgoto_cons_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_85(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 72, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 74, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 75, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 76, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 77, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 78, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 79, Ss, Stack, T, Ts, Tzr); -yeccpars2_85(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_86(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_86_(Stack), - yeccgoto_tail_constant(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_87: see yeccpars2_85 - -yeccpars2_88(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 89, Ss, Stack, T, Ts, Tzr); -yeccpars2_88(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_89(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_89_(Stack), - yeccgoto_tail_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_90: see yeccpars2_83 - -yeccpars2_91(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_91_(Stack), - yeccgoto_tail_constant(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_92: see yeccpars2_85 - -yeccpars2_93(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_93_(Stack), - yeccgoto_constants(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_94(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_94_(Stack), - yeccgoto_annotation(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_95(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_95_(Stack), - yeccgoto_anno_function_name(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_96(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 99, Ss, Stack, T, Ts, Tzr); -yeccpars2_96(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_96(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_97(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_fun(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_98(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_98_(Stack), - yeccgoto_function_definition(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_99(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_99(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_100(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 101, Ss, Stack, T, Ts, Tzr); -yeccpars2_100(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_101(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_101(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 106, Ss, Stack, T, Ts, Tzr); -yeccpars2_101(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_101(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_variable(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_103(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 306, Ss, Stack, T, Ts, Tzr); -yeccpars2_103(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_104(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 304, Ss, Stack, T, Ts, Tzr); -yeccpars2_104(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_104_(Stack), - yeccgoto_anno_variables(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_105(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_105(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_106(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 108, Ss, Stack, T, Ts, Tzr); -yeccpars2_106(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_107(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_107_(Stack), - yeccgoto_variable(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_108(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_cont_108(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 129, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 131, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 132, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, apply, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 133, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 134, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, call, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 135, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'case', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 136, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 137, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, do, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 138, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'let', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 139, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, letrec, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 140, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, primop, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 141, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'receive', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 142, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, 'try', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 143, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 144, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_108(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_single_expression(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_128(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_128_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_129(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 287, Ss, Stack, T, Ts, Tzr); -yeccpars2_129(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_130(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_131(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 281, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_132(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_133: see yeccpars2_108 - -yeccpars2_134(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 12, Ss, Stack, T, Ts, Tzr); -yeccpars2_134(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_134_(Stack), - yeccgoto_atomic_literal(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_135: see yeccpars2_108 - -%% yeccpars2_136: see yeccpars2_108 - -%% yeccpars2_137: see yeccpars2_108 - -%% yeccpars2_138: see yeccpars2_108 - -yeccpars2_139(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_139(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 155, Ss, Stack, T, Ts, Tzr); -yeccpars2_139(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_139(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_140(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_140(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_140(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_140_(Stack), - yeccpars2_250(250, Cat, [140 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_141: see yeccpars2_108 - -yeccpars2_142(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 179, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 180, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 182, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_143: see yeccpars2_108 - -yeccpars2_144(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 147, Ss, Stack, T, Ts, Tzr); -yeccpars2_144(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_145(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 150, Ss, Stack, T, Ts, Tzr); -yeccpars2_145(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_146(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 148, Ss, Stack, T, Ts, Tzr); -yeccpars2_146(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_146_(Stack), - yeccgoto_anno_expressions(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_147(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_147_(Stack), - yeccgoto_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_148: see yeccpars2_108 - -yeccpars2_149(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_149_(Stack), - yeccgoto_anno_expressions(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_150(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_150_(Stack), - yeccgoto_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_151(S, 'of', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 152, Ss, Stack, T, Ts, Tzr); -yeccpars2_151(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_152: see yeccpars2_139 - -yeccpars2_153(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 159, Ss, Stack, T, Ts, Tzr); -yeccpars2_153(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_154(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_154_(Stack), - yeccgoto_let_vars(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_155(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_155(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 157, Ss, Stack, T, Ts, Tzr); -yeccpars2_155(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_155(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_156(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 158, Ss, Stack, T, Ts, Tzr); -yeccpars2_156(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_157(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_157_(Stack), - yeccgoto_let_vars(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_158(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_158_(Stack), - yeccgoto_let_vars(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_159: see yeccpars2_108 - -yeccpars2_160(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 161, Ss, Stack, T, Ts, Tzr); -yeccpars2_160(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_161: see yeccpars2_139 - -yeccpars2_162(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 163, Ss, Stack, T, Ts, Tzr); -yeccpars2_162(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_163: see yeccpars2_108 - -yeccpars2_164(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_164_(Stack), - yeccgoto_try_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_other_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_166(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_166_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_other_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_169(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 240, Ss, Stack, T, Ts, Tzr); -yeccpars2_169(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_clause(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_other_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_other_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_174(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 191, Ss, Stack, T, Ts, Tzr); -yeccpars2_174(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_175_(Stack), - yeccgoto_clause_pattern(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_176(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 182, Ss, Stack, T, Ts, Tzr); -yeccpars2_176(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_177(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 179, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 180, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_177_(Stack), - yeccgoto_anno_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_178(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 222, Ss, Stack, T, Ts, Tzr); -yeccpars2_178(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_179(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 180, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_180(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 215, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_180(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_181(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_182: see yeccpars2_108 - -yeccpars2_183(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 187, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_184(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 201, Ss, Stack, T, Ts, Tzr); -yeccpars2_184(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_185(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 199, Ss, Stack, T, Ts, Tzr); -yeccpars2_185(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_185_(Stack), - yeccgoto_anno_patterns(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_186(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_187(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_187_(Stack), - yeccgoto_tuple_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_188(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 196, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_variable(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_189(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 193, Ss, Stack, T, Ts, Tzr); -yeccpars2_189(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_190(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 191, Ss, Stack, T, Ts, Tzr); -yeccpars2_190(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_191(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 186, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_191(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_192(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_192_(Stack), - yeccgoto_other_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_193: see yeccpars2_63 - -yeccpars2_194(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 195, Ss, Stack, T, Ts, Tzr); -yeccpars2_194(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_195(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_195_(Stack), - yeccgoto_anno_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_196: see yeccpars2_63 - -yeccpars2_197(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 198, Ss, Stack, T, Ts, Tzr); -yeccpars2_197(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_198(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_198_(Stack), - yeccgoto_anno_variable(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_199: see yeccpars2_191 - -yeccpars2_200(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_200_(Stack), - yeccgoto_anno_patterns(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_201(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_201_(Stack), - yeccgoto_tuple_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_202(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 203, Ss, Stack, T, Ts, Tzr); -yeccpars2_202(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_203: see yeccpars2_108 - -yeccpars2_204(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_204_(Stack), - yeccgoto_timeout(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_205(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 207, Ss, Stack, T, Ts, Tzr); -yeccpars2_205(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 208, Ss, Stack, T, Ts, Tzr); -yeccpars2_205(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 209, Ss, Stack, T, Ts, Tzr); -yeccpars2_205(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_206(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_206_(Stack), - yeccgoto_cons_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_207: see yeccpars2_191 - -yeccpars2_208(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_208_(Stack), - yeccgoto_tail_pattern(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_209: see yeccpars2_191 - -yeccpars2_210(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 211, Ss, Stack, T, Ts, Tzr); -yeccpars2_210(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_211(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_211_(Stack), - yeccgoto_tail_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_212: see yeccpars2_205 - -yeccpars2_213(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_213_(Stack), - yeccgoto_tail_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_214(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 216, Ss, Stack, T, Ts, Tzr); -yeccpars2_214(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_215(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_215_(Stack), - yeccgoto_clause_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_216(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_216_(Stack), - yeccgoto_clause_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_217(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 193, Ss, Stack, T, Ts, Tzr); -yeccpars2_217(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_anno_pattern(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_218(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 219, Ss, Stack, T, Ts, Tzr); -yeccpars2_218(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_219: see yeccpars2_63 - -yeccpars2_220(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 221, Ss, Stack, T, Ts, Tzr); -yeccpars2_220(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_221(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_221_(Stack), - yeccgoto_anno_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_222(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 225, Ss, Stack, T, Ts, Tzr); -yeccpars2_222(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 226, Ss, Stack, T, Ts, Tzr); -yeccpars2_222(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_223(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 236, Ss, Stack, T, Ts, Tzr); -yeccpars2_223(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_224(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 234, Ss, Stack, T, Ts, Tzr); -yeccpars2_224(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_224_(Stack), - yeccgoto_segment_patterns(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_225(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 228, Ss, Stack, T, Ts, Tzr); -yeccpars2_225(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_226(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 227, Ss, Stack, T, Ts, Tzr); -yeccpars2_226(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_227(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_227_(Stack), - yeccgoto_binary_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_228: see yeccpars2_191 - -yeccpars2_229(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 230, Ss, Stack, T, Ts, Tzr); -yeccpars2_229(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_230(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 231, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_231: see yeccpars2_191 - -yeccpars2_232(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 233, Ss, Stack, T, Ts, Tzr); -yeccpars2_232(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_233(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_233_(Stack), - yeccgoto_segment_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_234(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 225, Ss, Stack, T, Ts, Tzr); -yeccpars2_234(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_235(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_235_(Stack), - yeccgoto_segment_patterns(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_236(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 237, Ss, Stack, T, Ts, Tzr); -yeccpars2_236(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_237(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_237_(Stack), - yeccgoto_binary_pattern(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_238(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_238_(Stack), - yeccgoto_anno_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_239(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_239_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_240: see yeccpars2_108 - -yeccpars2_241(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 242, Ss, Stack, T, Ts, Tzr); -yeccpars2_241(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_242: see yeccpars2_108 - -yeccpars2_243(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_243_(Stack), - yeccgoto_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_244(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 246, Ss, Stack, T, Ts, Tzr); -yeccpars2_244(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_245(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_245_(Stack), - yeccgoto_primop_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_246(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 130, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 248, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 32, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 33, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 100, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 34, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 35, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_246(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_108(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_247(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 249, Ss, Stack, T, Ts, Tzr); -yeccpars2_247(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_248(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_248_(Stack), - yeccgoto_arg_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_249(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_249_(Stack), - yeccgoto_arg_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_250(S, in, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 251, Ss, Stack, T, Ts, Tzr); -yeccpars2_250(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_251: see yeccpars2_108 - -yeccpars2_252(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_252_(Stack), - yeccgoto_letrec_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_253(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 254, Ss, Stack, T, Ts, Tzr); -yeccpars2_253(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_254: see yeccpars2_108 - -yeccpars2_255(S, in, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 256, Ss, Stack, T, Ts, Tzr); -yeccpars2_255(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_256: see yeccpars2_108 - -yeccpars2_257(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_257_(Stack), - yeccgoto_let_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_258: see yeccpars2_108 - -yeccpars2_259(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_259_(Stack), - yeccgoto_sequence(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_260(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_260_(Stack), - yeccgoto_catch_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_261(S, 'of', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_261(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_262(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 179, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 180, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 181, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 31, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 183, Ss, Stack, T, Ts, Tzr); -yeccpars2_262(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_24(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_263(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_263(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_264(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_264_(Stack), - yeccgoto_case_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_265(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_265(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_266: see yeccpars2_108 - -%% yeccpars2_267: see yeccpars2_244 - -yeccpars2_268(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_268_(Stack), - yeccgoto_call_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_269: see yeccpars2_244 - -yeccpars2_270(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_270_(Stack), - yeccgoto_application_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_271(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 273, Ss, Stack, T, Ts, Tzr); -yeccpars2_271(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 274, Ss, Stack, T, Ts, Tzr); -yeccpars2_271(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 275, Ss, Stack, T, Ts, Tzr); -yeccpars2_271(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_272(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_272_(Stack), - yeccgoto_cons(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_273: see yeccpars2_108 - -yeccpars2_274(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_274_(Stack), - yeccgoto_tail(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_275: see yeccpars2_108 - -yeccpars2_276(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 277, Ss, Stack, T, Ts, Tzr); -yeccpars2_276(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_277(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_277_(Stack), - yeccgoto_tail(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_278: see yeccpars2_271 - -yeccpars2_279(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_279_(Stack), - yeccgoto_tail(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_280(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 282, Ss, Stack, T, Ts, Tzr); -yeccpars2_280(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_281(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_281_(Stack), - yeccgoto_expression(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_282(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_282_(Stack), - yeccgoto_expression(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_283(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 284, Ss, Stack, T, Ts, Tzr); -yeccpars2_283(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_284: see yeccpars2_63 - -yeccpars2_285(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 286, Ss, Stack, T, Ts, Tzr); -yeccpars2_285(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_286(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_286_(Stack), - yeccgoto_anno_expression(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_287(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 290, Ss, Stack, T, Ts, Tzr); -yeccpars2_287(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 291, Ss, Stack, T, Ts, Tzr); -yeccpars2_287(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_288(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 301, Ss, Stack, T, Ts, Tzr); -yeccpars2_288(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_289(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 299, Ss, Stack, T, Ts, Tzr); -yeccpars2_289(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_289_(Stack), - yeccgoto_segments(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_290(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 293, Ss, Stack, T, Ts, Tzr); -yeccpars2_290(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_291(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 292, Ss, Stack, T, Ts, Tzr); -yeccpars2_291(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_292(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_292_(Stack), - yeccgoto_binary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_293: see yeccpars2_108 - -yeccpars2_294(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 295, Ss, Stack, T, Ts, Tzr); -yeccpars2_294(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_295(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 296, Ss, Stack, T, Ts, Tzr); -yeccpars2_295(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_296: see yeccpars2_108 - -yeccpars2_297(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 298, Ss, Stack, T, Ts, Tzr); -yeccpars2_297(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_298(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_298_(Stack), - yeccgoto_segment(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_299(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 290, Ss, Stack, T, Ts, Tzr); -yeccpars2_299(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_300(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_300_(Stack), - yeccgoto_segments(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_301(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 302, Ss, Stack, T, Ts, Tzr); -yeccpars2_301(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_302(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_302_(Stack), - yeccgoto_binary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_303(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 196, Ss, Stack, T, Ts, Tzr); -yeccpars2_303(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_304(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 105, Ss, Stack, T, Ts, Tzr); -yeccpars2_304(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_304(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_305(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_305_(Stack), - yeccgoto_anno_variables(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_306(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 307, Ss, Stack, T, Ts, Tzr); -yeccpars2_306(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_307: see yeccpars2_108 - -yeccpars2_308(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_308_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_309(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 310, Ss, Stack, T, Ts, Tzr); -yeccpars2_309(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_310: see yeccpars2_63 - -yeccpars2_311(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 312, Ss, Stack, T, Ts, Tzr); -yeccpars2_311(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_312(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_312_(Stack), - yeccgoto_anno_fun(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_313(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_313_(Stack), - yeccgoto_function_definitions(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_314(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_314_(Stack), - yeccgoto_module_definition(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_315(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 316, Ss, Stack, T, Ts, Tzr); -yeccpars2_315(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_316: see yeccpars2_4 - -%% yeccpars2_317: see yeccpars2_5 - -yeccpars2_318(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_318(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 11, Ss, Stack, T, Ts, Tzr); -yeccpars2_318(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_318_(Stack), - yeccpars2_58(_S, Cat, [318 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_319(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 320, Ss, Stack, T, Ts, Tzr); -yeccpars2_319(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_320(S, '-|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 321, Ss, Stack, T, Ts, Tzr); -yeccpars2_320(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_321: see yeccpars2_63 - -yeccpars2_322(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 323, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_323(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_323_(Stack), - yeccgoto_module_definition(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccgoto_anno_clause(142, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_177(177, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_clause(177, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_177(177, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_clause(262, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_177(177, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_clauses(142, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_176(176, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_clauses(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_238(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_clauses(262, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_263(263, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_expression(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_128(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(131, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(132, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_271(271, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(133, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_244(269, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(135, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_265(265, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_261(261, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_260(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(258, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(141, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_244(244, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(143, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_151(151, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(144, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(148, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(159, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_160(160, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_164(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(182, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_202(202, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_204(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(240, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_241(241, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_243(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(246, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_252(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(254, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_255(255, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_257(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_259(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(266, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_244(267, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(273, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_271(278, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(275, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_276(276, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(293, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_294(294, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(296, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_146(146, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expression(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_308(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_expressions(131, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_280(280, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expressions(144, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_145(145, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expressions(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_149(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expressions(246, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_247(247, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_expressions(296, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_297(297, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_fun(96=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_98(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_function_name(17, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_60(60, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_function_name(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_60(60, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_function_name(140, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_60(60, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_function_name(318, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_60(60, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(180, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(181, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_205(205, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(183, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_192(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(199, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(207, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_205(212, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(209, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_210(210, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_229(229, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_patterns(180, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_214(214, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_patterns(183, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_184(184, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_patterns(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_200(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_patterns(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_232(232, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_variable(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_104(104, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(139=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_154(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(142, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(152=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_154(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(155, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_104(104, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(161=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_154(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(177, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(180, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(181, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(183, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(186, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_190(190, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(199, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(207, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(209, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(262, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_174(174, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variable(304, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_104(104, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_anno_variables(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_103(103, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variables(155, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_156(156, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_anno_variables(304=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_305(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_annotation(63, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_64(64, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(193, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_194(194, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(196, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_197(197, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(219, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_220(220, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(284, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_285(285, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(311, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_annotation(321, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(322, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_application_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_application_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_127(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_arg_list(244=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_245(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_arg_list(267=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_268(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_arg_list(269=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_270(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_atomic_constant(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(85=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_constant(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_atomic_literal(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(30=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_literal(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_atomic_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_attribute(19, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(21, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_attribute(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(21, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_attribute_list(19, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_attribute_list(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_54(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_call_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_call_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_case_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_123(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_catch_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_catch_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_218(218, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause_pattern(142, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_pattern(177, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_pattern(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_pattern(262, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cons(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_121(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cons_constant(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(85=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_constant(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cons_literal(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(30=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_literal(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cons_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cons_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_constant(65, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(72, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(83, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(79, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(85, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(90, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_88(88, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constant(92, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_constants(65, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_68(68, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constants(79, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_80(80, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_constants(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_93(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_exported_name(6, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_9(9, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exported_name(14, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_9(9, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_exported_names(6, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_8(8, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exported_names(14=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expression(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(130, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_283(283, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expression(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_expr(96=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_97(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(99, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_309(309, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_definition(17, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definition(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definition(140, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definition(318, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(59, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_definitions(17=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definitions(59=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definitions(140, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_250(250, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_definitions(318=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_name(6=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(14=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_7(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(17=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(59=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(61, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_62(62, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(140=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_118(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_name(318=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_let_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_117(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_let_vars(139, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_253(253, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_vars(152, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_153(153, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_let_vars(161, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_162(162, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_letrec_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_letrec_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_literal(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(30, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(43, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(36, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(38, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(40, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(38, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(46, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(51, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literal(48, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_49(49, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_literals(36, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_literals(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_module_attribute(5, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_module_attribute(317, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_module_definition(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_1(1, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_module_defs(17, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_56(56, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_module_defs(318, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_module_export(4, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_module_export(316, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_5(317, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_nil(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(30=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(85=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_nil(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_other_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_217(217, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(186, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_189(189, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_other_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_primop_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_primop_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_receive_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_segment(287, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_289(289, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_segment(299, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_289(289, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_segment_pattern(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_224(224, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_segment_pattern(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_224(224, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_segment_patterns(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_223(223, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_segment_patterns(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_235(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_segments(287, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_288(288, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_segments(299=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_300(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_sequence(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_sequence(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_single_expression(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_single_expression(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail(271=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_272(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail(278=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_279(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail_constant(83=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_84(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail_constant(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_91(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail_literal(43=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail_literal(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_52(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail_pattern(205=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_206(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail_pattern(212=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_213(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_timeout(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_166(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_timeout(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_239(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_expr(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple_constant(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(79=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(85=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_constant(92=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_66(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple_literal(24=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(30=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(36=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(40=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(46=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_literal(48=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple_pattern(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(186=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple_pattern(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_variable(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(105, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_303(303, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(108=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(130=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(131=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(132=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(133=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(135=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(137=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(139=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(141=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(142=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(143=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(148=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(152=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(155=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(161=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(163=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(177=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(179, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_188(188, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(180=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(182=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(183=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(186, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_188(188, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(203=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(207=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(209=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(240=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(242=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(246=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(251=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(254=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(256=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(258=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(262=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(266=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(273=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(275=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(296=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(304=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_variable(307=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_109(_S, Cat, Ss, Stack, T, Ts, Tzr). - --compile({inline,yeccpars2_9_/1}). --file("core_parse.yrl", 89). -yeccpars2_9_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_10_/1}). --file("core_parse.yrl", 85). -yeccpars2_10_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_13_/1}). --file("core_parse.yrl", 288). -yeccpars2_13_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_var { name = { tok_val ( __1 ) , tok_val ( __3 ) } } - end | __Stack]. - --compile({inline,yeccpars2_15_/1}). --file("core_parse.yrl", 88). -yeccpars2_15_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_16_/1}). --file("core_parse.yrl", 86). -yeccpars2_16_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_17_/1}). --file("core_parse.yrl", 110). -yeccpars2_17_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_21_/1}). --file("core_parse.yrl", 97). -yeccpars2_21_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_22_/1}). --file("core_parse.yrl", 93). -yeccpars2_22_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_26_/1}). --file("core_parse.yrl", 252). -yeccpars2_26_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_27_/1}). --file("core_parse.yrl", 100). -yeccpars2_27_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { # c_literal { val = tok_val ( __1 ) } , __3 } - end | __Stack]. - --compile({inline,yeccpars2_31_/1}). --file("core_parse.yrl", 250). -yeccpars2_31_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_32_/1}). --file("core_parse.yrl", 247). -yeccpars2_32_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_33_/1}). --file("core_parse.yrl", 249). -yeccpars2_33_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_34_/1}). --file("core_parse.yrl", 248). -yeccpars2_34_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_35_/1}). --file("core_parse.yrl", 251). -yeccpars2_35_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_38_/1}). --file("core_parse.yrl", 245). -yeccpars2_38_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_39_/1}). --file("core_parse.yrl", 254). -yeccpars2_39_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( [ ] ) - end | __Stack]. - --compile({inline,yeccpars2_41_/1}). --file("core_parse.yrl", 244). -yeccpars2_41_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_42_/1}). --file("core_parse.yrl", 255). -yeccpars2_42_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( __2 ) - end | __Stack]. - --compile({inline,yeccpars2_44_/1}). --file("core_parse.yrl", 66). -yeccpars2_44_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { nil , tok_line ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_45_/1}). --file("core_parse.yrl", 257). -yeccpars2_45_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_cons ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_47_/1}). --file("core_parse.yrl", 259). -yeccpars2_47_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_50_/1}). --file("core_parse.yrl", 260). -yeccpars2_50_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_52_/1}). --file("core_parse.yrl", 261). -yeccpars2_52_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_cons { hd = __2 , tl = __3 } - end | __Stack]. - --compile({inline,yeccpars2_54_/1}). --file("core_parse.yrl", 96). -yeccpars2_54_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_55_/1}). --file("core_parse.yrl", 94). -yeccpars2_55_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - __3 - end | __Stack]. - --compile({inline,yeccpars2_59_/1}). --file("core_parse.yrl", 110). -yeccpars2_59_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_67_/1}). --file("core_parse.yrl", 135). -yeccpars2_67_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_69_/1}). --file("core_parse.yrl", 128). -yeccpars2_69_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_73_/1}). --file("core_parse.yrl", 104). -yeccpars2_73_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_74_/1}). --file("core_parse.yrl", 133). -yeccpars2_74_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_75_/1}). --file("core_parse.yrl", 130). -yeccpars2_75_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_76_/1}). --file("core_parse.yrl", 132). -yeccpars2_76_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_77_/1}). --file("core_parse.yrl", 131). -yeccpars2_77_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_78_/1}). --file("core_parse.yrl", 134). -yeccpars2_78_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - tok_val ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_81_/1}). --file("core_parse.yrl", 137). -yeccpars2_81_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { } - end | __Stack]. - --compile({inline,yeccpars2_82_/1}). --file("core_parse.yrl", 138). -yeccpars2_82_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - list_to_tuple ( __2 ) - end | __Stack]. - --compile({inline,yeccpars2_84_/1}). --file("core_parse.yrl", 140). -yeccpars2_84_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __2 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_86_/1}). --file("core_parse.yrl", 142). -yeccpars2_86_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_89_/1}). --file("core_parse.yrl", 143). -yeccpars2_89_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_91_/1}). --file("core_parse.yrl", 144). -yeccpars2_91_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __2 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_93_/1}). --file("core_parse.yrl", 127). -yeccpars2_93_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_94_/1}). --file("core_parse.yrl", 105). -yeccpars2_94_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_95_/1}). --file("core_parse.yrl", 292). -yeccpars2_95_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_98_/1}). --file("core_parse.yrl", 114). -yeccpars2_98_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_104_/1}). --file("core_parse.yrl", 201). -yeccpars2_104_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_107_/1}). --file("core_parse.yrl", 198). -yeccpars2_107_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_var { name = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_128_/1}). --file("core_parse.yrl", 302). -yeccpars2_128_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_fun { vars = [ ] , body = __5 } - end | __Stack]. - --compile({inline,yeccpars2_134_/1}). --file("core_parse.yrl", 250). -yeccpars2_134_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = tok_val ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_140_/1}). --file("core_parse.yrl", 110). -yeccpars2_140_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_146_/1}). --file("core_parse.yrl", 216). -yeccpars2_146_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_147_/1}). --file("core_parse.yrl", 263). -yeccpars2_147_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( [ ] ) - end | __Stack]. - --compile({inline,yeccpars2_149_/1}). --file("core_parse.yrl", 215). -yeccpars2_149_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_150_/1}). --file("core_parse.yrl", 264). -yeccpars2_150_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( __2 ) - end | __Stack]. - --compile({inline,yeccpars2_154_/1}). --file("core_parse.yrl", 294). -yeccpars2_154_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_157_/1}). --file("core_parse.yrl", 295). -yeccpars2_157_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_158_/1}). --file("core_parse.yrl", 296). -yeccpars2_158_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_164_/1}). --file("core_parse.yrl", 345). -yeccpars2_164_(__Stack0) -> - [__10,__9,__8,__7,__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - Len = length ( __8 ) , - if Len =:= 2 ; Len =:= 3 -> - # c_try { arg = __2 , vars = __4 , body = __6 , evars = __8 , handler = __10 } ; - true -> - return_error ( tok_line ( __7 ) , - "expected 2 or 3 exception variables in 'try'" ) - end - end | __Stack]. - --compile({inline,yeccpars2_166_/1}). --file("core_parse.yrl", 356). -yeccpars2_166_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { T , A } = __2 , - # c_receive { clauses = [ ] , timeout = T , action = A } - end | __Stack]. - --compile({inline,yeccpars2_175_/1}). --file("core_parse.yrl", 325). -yeccpars2_175_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_177_/1}). --file("core_parse.yrl", 316). -yeccpars2_177_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_185_/1}). --file("core_parse.yrl", 161). -yeccpars2_185_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_187_/1}). --file("core_parse.yrl", 172). -yeccpars2_187_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( [ ] ) - end | __Stack]. - --compile({inline,yeccpars2_192_/1}). --file("core_parse.yrl", 168). -yeccpars2_192_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_alias { var = __1 , pat = __3 } - end | __Stack]. - --compile({inline,yeccpars2_195_/1}). --file("core_parse.yrl", 156). -yeccpars2_195_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_198_/1}). --file("core_parse.yrl", 205). -yeccpars2_198_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_200_/1}). --file("core_parse.yrl", 160). -yeccpars2_200_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_201_/1}). --file("core_parse.yrl", 173). -yeccpars2_201_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_tuple ( __2 ) - end | __Stack]. - --compile({inline,yeccpars2_204_/1}). --file("core_parse.yrl", 363). -yeccpars2_204_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , __4 } - end | __Stack]. - --compile({inline,yeccpars2_206_/1}). --file("core_parse.yrl", 176). -yeccpars2_206_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_cons { hd = __2 , tl = __3 } - end | __Stack]. - --compile({inline,yeccpars2_208_/1}). --file("core_parse.yrl", 178). -yeccpars2_208_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_211_/1}). --file("core_parse.yrl", 179). -yeccpars2_211_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_213_/1}). --file("core_parse.yrl", 181). -yeccpars2_213_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_cons { hd = __2 , tl = __3 } - end | __Stack]. - --compile({inline,yeccpars2_215_/1}). --file("core_parse.yrl", 326). -yeccpars2_215_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_216_/1}). --file("core_parse.yrl", 327). -yeccpars2_216_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_221_/1}). --file("core_parse.yrl", 320). -yeccpars2_221_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_224_/1}). --file("core_parse.yrl", 187). -yeccpars2_224_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_227_/1}). --file("core_parse.yrl", 183). -yeccpars2_227_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_binary { segments = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_233_/1}). --file("core_parse.yrl", 190). -yeccpars2_233_(__Stack0) -> - [__7,__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - case __6 of - [ S , U , T , Fs ] -> - # c_bitstr { val = __3 , size = S , unit = U , type = T , flags = Fs } ; - true -> - return_error ( tok_line ( __1 ) , - "expected 4 arguments in binary segment" ) - end - end | __Stack]. - --compile({inline,yeccpars2_235_/1}). --file("core_parse.yrl", 186). -yeccpars2_235_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_237_/1}). --file("core_parse.yrl", 184). -yeccpars2_237_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_binary { segments = __3 } - end | __Stack]. - --compile({inline,yeccpars2_238_/1}). --file("core_parse.yrl", 315). -yeccpars2_238_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __2 ] - end | __Stack]. - --compile({inline,yeccpars2_239_/1}). --file("core_parse.yrl", 359). -yeccpars2_239_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { T , A } = __3 , - # c_receive { clauses = __2 , timeout = T , action = A } - end | __Stack]. - --compile({inline,yeccpars2_243_/1}). --file("core_parse.yrl", 323). -yeccpars2_243_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_clause { pats = __1 , guard = __3 , body = __5 } - end | __Stack]. - --compile({inline,yeccpars2_245_/1}). --file("core_parse.yrl", 337). -yeccpars2_245_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_primop { name = __2 , args = __3 } - end | __Stack]. - --compile({inline,yeccpars2_248_/1}). --file("core_parse.yrl", 339). -yeccpars2_248_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --compile({inline,yeccpars2_249_/1}). --file("core_parse.yrl", 340). -yeccpars2_249_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_252_/1}). --file("core_parse.yrl", 310). -yeccpars2_252_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_letrec { defs = __2 , body = __4 } - end | __Stack]. - --compile({inline,yeccpars2_257_/1}). --file("core_parse.yrl", 307). -yeccpars2_257_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_let { vars = __2 , arg = __4 , body = __6 } - end | __Stack]. - --compile({inline,yeccpars2_259_/1}). --file("core_parse.yrl", 299). -yeccpars2_259_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_seq { arg = __2 , body = __3 } - end | __Stack]. - --compile({inline,yeccpars2_260_/1}). --file("core_parse.yrl", 353). -yeccpars2_260_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - # c_catch { body = __2 } - end | __Stack]. - --compile({inline,yeccpars2_264_/1}). --file("core_parse.yrl", 313). -yeccpars2_264_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_case { arg = __2 , clauses = __4 } - end | __Stack]. - --compile({inline,yeccpars2_268_/1}). --file("core_parse.yrl", 334). -yeccpars2_268_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_call { module = __2 , name = __4 , args = __5 } - end | __Stack]. - --compile({inline,yeccpars2_270_/1}). --file("core_parse.yrl", 330). -yeccpars2_270_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_apply { op = __2 , args = __3 } - end | __Stack]. - --compile({inline,yeccpars2_272_/1}). --file("core_parse.yrl", 266). -yeccpars2_272_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_cons ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_274_/1}). --file("core_parse.yrl", 268). -yeccpars2_274_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - # c_literal { val = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_277_/1}). --file("core_parse.yrl", 269). -yeccpars2_277_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_279_/1}). --file("core_parse.yrl", 270). -yeccpars2_279_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - c_cons ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_281_/1}). --file("core_parse.yrl", 218). -yeccpars2_281_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - # c_values { es = [ ] } - end | __Stack]. - --compile({inline,yeccpars2_282_/1}). --file("core_parse.yrl", 219). -yeccpars2_282_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_values { es = __2 } - end | __Stack]. - --compile({inline,yeccpars2_286_/1}). --file("core_parse.yrl", 213). -yeccpars2_286_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_289_/1}). --file("core_parse.yrl", 276). -yeccpars2_289_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_292_/1}). --file("core_parse.yrl", 272). -yeccpars2_292_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_literal { val = << >> } - end | __Stack]. - --compile({inline,yeccpars2_298_/1}). --file("core_parse.yrl", 279). -yeccpars2_298_(__Stack0) -> - [__7,__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - case __6 of - [ S , U , T , Fs ] -> - # c_bitstr { val = __3 , size = S , unit = U , type = T , flags = Fs } ; - true -> - return_error ( tok_line ( __1 ) , - "expected 4 arguments in binary segment" ) - end - end | __Stack]. - --compile({inline,yeccpars2_300_/1}). --file("core_parse.yrl", 275). -yeccpars2_300_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_302_/1}). --file("core_parse.yrl", 273). -yeccpars2_302_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_binary { segments = __3 } - end | __Stack]. - --compile({inline,yeccpars2_305_/1}). --file("core_parse.yrl", 200). -yeccpars2_305_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_308_/1}). --file("core_parse.yrl", 304). -yeccpars2_308_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_fun { vars = __3 , body = __6 } - end | __Stack]. - --compile({inline,yeccpars2_312_/1}). --file("core_parse.yrl", 117). -yeccpars2_312_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - core_lib : set_anno ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_313_/1}). --file("core_parse.yrl", 108). -yeccpars2_313_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __2 ] - end | __Stack]. - --compile({inline,yeccpars2_314_/1}). --file("core_parse.yrl", 77). -yeccpars2_314_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_module { name = # c_literal { val = tok_val ( __2 ) } , exports = __3 , - attrs = __4 , defs = __5 } - end | __Stack]. - --compile({inline,yeccpars2_318_/1}). --file("core_parse.yrl", 110). -yeccpars2_318_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_323_/1}). --file("core_parse.yrl", 82). -yeccpars2_323_(__Stack0) -> - [__10,__9,__8,__7,__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - # c_module { anno = __9 , name = tok_val ( __3 ) , exports = __4 , - attrs = __5 , defs = __6 } - end | __Stack]. - - --file("core_parse.yrl", 384). diff --git a/bootstrap/lib/kernel/ebin/kernel.app b/bootstrap/lib/kernel/ebin/kernel.app deleted file mode 100644 index 59e4aa8055..0000000000 --- a/bootstrap/lib/kernel/ebin/kernel.app +++ /dev/null @@ -1,120 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% This is an -*- erlang -*- file. -%% -{application, kernel, - [ - {description, "ERTS CXC 138 10"}, - {vsn, "2.15"}, - {modules, [application, - application_controller, - application_master, - application_starter, - auth, - code, - packages, - code_server, - dist_util, - erl_boot_server, - erl_distribution, - erl_reply, - error_handler, - error_logger, - file, - file_server, - file_io_server, - global, - global_group, - global_search, - group, - heart, - hipe_unified_loader, - inet6_tcp, - inet6_tcp_dist, - inet6_udp, - inet6_sctp, - inet_config, - inet_hosts, - inet_gethost_native, - inet_tcp_dist, - kernel, - kernel_config, - net, - net_adm, - net_kernel, - os, - ram_file, - rpc, - user, - user_drv, - user_sup, - disk_log, - disk_log_1, - disk_log_server, - disk_log_sup, - dist_ac, - erl_ddll, - erl_epmd, - erts_debug, - gen_tcp, - gen_udp, - gen_sctp, - inet, - inet_db, - inet_dns, - inet_parse, - inet_res, - inet_tcp, - inet_udp, - inet_sctp, - pg2, - seq_trace, - standard_error, - wrap_log_reader]}, - {registered, [application_controller, - erl_reply, - auth, - boot_server, - code_server, - disk_log_server, - disk_log_sup, - erl_prim_loader, - error_logger, - file_server_2, - fixtable_server, - global_group, - global_name_server, - heart, - init, - kernel_config, - kernel_sup, - net_kernel, - net_sup, - rex, - user, - os_server, - ddll_server, - erl_epmd, - inet_db, - pg2]}, - {applications, []}, - {env, [{error_logger, tty}]}, - {mod, {kernel, []}} - ] -}. diff --git a/bootstrap/lib/kernel/ebin/kernel.appup b/bootstrap/lib/kernel/ebin/kernel.appup deleted file mode 100644 index 96f6e27774..0000000000 --- a/bootstrap/lib/kernel/ebin/kernel.appup +++ /dev/null @@ -1 +0,0 @@ -{"2.15",[],[]}. diff --git a/bootstrap/lib/kernel/egen/.gitignore b/bootstrap/lib/kernel/egen/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 --- a/bootstrap/lib/kernel/egen/.gitignore +++ /dev/null diff --git a/lib/kernel/src/dist.hrl b/bootstrap/lib/kernel/include/dist.hrl index aea1ab81ba..aea1ab81ba 100644 --- a/lib/kernel/src/dist.hrl +++ b/bootstrap/lib/kernel/include/dist.hrl diff --git a/lib/kernel/src/dist_util.hrl b/bootstrap/lib/kernel/include/dist_util.hrl index f2b0598532..f2b0598532 100644 --- a/lib/kernel/src/dist_util.hrl +++ b/bootstrap/lib/kernel/include/dist_util.hrl diff --git a/lib/kernel/src/net_address.hrl b/bootstrap/lib/kernel/include/net_address.hrl index 5342076507..5342076507 100644 --- a/lib/kernel/src/net_address.hrl +++ b/bootstrap/lib/kernel/include/net_address.hrl diff --git a/bootstrap/lib/orber/include/Makefile b/bootstrap/lib/orber/include/Makefile deleted file mode 100644 index 219b7085e6..0000000000 --- a/bootstrap/lib/orber/include/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1998-2009. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -# -# -include $(ERL_TOP)/make/target.mk - -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Application version -# ---------------------------------------------------- -include ../vsn.mk -VSN=$(ORBER_VSN) - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/orber-$(VSN) - -# ---------------------------------------------------- -# Target Specs -# ---------------------------------------------------- - -EXTERNAL_HRL_FILES= ../include/corba.hrl \ - ../include/ifr_types.hrl \ - ../include/orber_pi.hrl - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- -debug opt clean docs: - - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - - -release_spec: opt - $(INSTALL_DIR) $(RELSYSDIR)/include - $(INSTALL_DATA) $(EXTERNAL_HRL_FILES) $(RELSYSDIR)/include - - -release_docs_spec: - - diff --git a/bootstrap/lib/orber/include/corba.hrl b/bootstrap/lib/orber/include/corba.hrl deleted file mode 100644 index b9869855bf..0000000000 --- a/bootstrap/lib/orber/include/corba.hrl +++ /dev/null @@ -1,148 +0,0 @@ -%%-------------------------------------------------------------------- -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% -%%------------------------------------------------------------ -%% File: corba.hrl -%% -%% Description: -%% Standard header file for the Orber Erlang CORBA environment -%% -%%----------------------------------------------------------------- --ifndef(corba_hrl). --define(corba_hrl, true). - -%% -%% Implementation repository record (not used and can therefor be changed) -%% --record(orb_ImplDef, {node, module, typename, start=start, args=[[]], pid}). - -%% -%% Any record -%% --record(any, {typecode, value}). - -%% -%% Any record -%% --record(fixed, {digits, scale, value}). - -%% -%% Service context record -%% --record('IOP_ServiceContext', {context_id, context_data}). - -%% -%% Exception recod for the resolve initial reference functions -%% --record('InvalidName', {'OE_ID'="IDL:omg.org/CORBA/ORB/InvalidName:1.0"}). - -%% Orber OMG assigned TAG's -%% Service Context IDs 0x45524904 - 0x45524907 ("ERI\x04" - "ERI\x07") -%% Component IDs 0x45524904 - 0x45524907 ("ERI\x04" - "ERI\x07") -%% ORB type IDs 0x45524904 - 0x45524907 ("ERI\x04" - "ERI\x07") --define(ORBER_ORB_TYPE_1, 16#45524904). -%-define(ORBER_ORB_TYPE_2, 16#45524905). -%-define(ORBER_ORB_TYPE_3, 16#45524906). -%-define(ORBER_ORB_TYPE_4, 16#45524907). - -%-define(ORBER_COMPONENT_1, 16#45524904). -%-define(ORBER_COMPONENT_2, 16#45524905). -%-define(ORBER_COMPONENT_3, 16#45524906). -%-define(ORBER_COMPONENT_4, 16#45524907). - --define(ORBER_GENERIC_CTX_ID, 16#45524904). -%-define(ORBER_SERVICE_CTX_2, 16#45524905). -%-define(ORBER_SERVICE_CTX_3, 16#45524906). -%-define(ORBER_SERVICE_CTX_4, 16#45524907). - -%% -%% System exceptions -%% - -%% VMCID -%% VMCID base assigned to OMG --define(CORBA_OMGVMCID, 16#4f4d0000). - -%% Orber's VMCID base - "ER\x00\x00" - "ER\x0f\xff". -%% Range 16#45520000 -> 16#45520fff --define(ORBER_VMCID, 16#45520000). - -%% Some other Vendors VMCID bases. --define(IONA_VMCID_1, 16#4f4f0000). --define(IONA_VMCID_2, 16#49540000). --define(SUN_VMCID, 16#53550000). --define(BORLAND_VMCID, 16#56420000). --define(TAO_VMCID, 16#54410000). --define(PRISMTECH_VMCID,16#50540000). - --define(ex_body, {'OE_ID'="", minor=?ORBER_VMCID, completion_status}). - --record('UNKNOWN', ?ex_body). --record('BAD_PARAM', ?ex_body). --record('NO_MEMORY', ?ex_body). --record('IMP_LIMIT', ?ex_body). --record('COMM_FAILURE', ?ex_body). --record('INV_OBJREF', ?ex_body). --record('NO_PERMISSION', ?ex_body). --record('INTERNAL', ?ex_body). --record('MARSHAL', ?ex_body). --record('INITIALIZE', ?ex_body). --record('NO_IMPLEMENT', ?ex_body). --record('BAD_TYPECODE', ?ex_body). --record('BAD_OPERATION', ?ex_body). --record('NO_RESOURCES', ?ex_body). --record('NO_RESPONSE', ?ex_body). --record('PERSIST_STORE', ?ex_body). --record('BAD_INV_ORDER', ?ex_body). --record('TRANSIENT', ?ex_body). --record('FREE_MEM', ?ex_body). --record('INV_IDENT', ?ex_body). --record('INV_FLAG', ?ex_body). --record('INTF_REPOS', ?ex_body). --record('BAD_CONTEXT', ?ex_body). --record('OBJ_ADAPTER', ?ex_body). --record('DATA_CONVERSION', ?ex_body). --record('OBJECT_NOT_EXIST', ?ex_body). --record('TRANSACTION_REQUIRED', ?ex_body). --record('TRANSACTION_ROLLEDBACK', ?ex_body). --record('INVALID_TRANSACTION', ?ex_body). --record('INV_POLICY', ?ex_body). --record('CODESET_INCOMPATIBLE', ?ex_body). --record('REBIND', ?ex_body). --record('TIMEOUT', ?ex_body). --record('TRANSACTION_UNAVAILABLE', ?ex_body). --record('TRANSACTION_MODE', ?ex_body). --record('BAD_QOS', ?ex_body). - -%% Defines for the enum exception_type (is also used for reply_status) --define(NO_EXCEPTION, 'no_exception'). --define(USER_EXCEPTION, 'user_exception'). --define(SYSTEM_EXCEPTION, 'system_exception'). - -%% Defines for the enum completion_status. --define(COMPLETED_YES, 'COMPLETED_YES'). --define(COMPLETED_NO, 'COMPLETED_NO'). --define(COMPLETED_MAYBE, 'COMPLETED_MAYBE'). - - --undef(ex_body). - - --endif. diff --git a/bootstrap/lib/orber/include/ifr_types.hrl b/bootstrap/lib/orber/include/ifr_types.hrl deleted file mode 100644 index 324b32bd4f..0000000000 --- a/bootstrap/lib/orber/include/ifr_types.hrl +++ /dev/null @@ -1,72 +0,0 @@ -%%-------------------------------------------------------------------- -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% -%%---------------------------------------------------------------------- -%% File : ifr_types.hrl -%% Purpose : Record definitions for structs used in the interface repository -%%---------------------------------------------------------------------- - - -%%%---------------------------------------------------------------------- -%%% ********************************************************************* -%%% * * -%%% * PLEASE NOTE * -%%% * * -%%% * If a record is removed or added in this file, select/2 in * -%%% * orber_ifr.erl _MUST_ be updated accordingly. * -%%% * * -%%% ********************************************************************* -%%%---------------------------------------------------------------------- - --record(contained_description, {kind, value}). - --record(structmember, {name, type, type_def}). - --record(unionmember, {name, label, type, type_def}). - --record(container_description, {contained_object, kind, value}). - --record(moduledescription, {name, id, defined_in, version}). - --record(constantdescription, {name, id, defined_in, version, type, value}). - --record(typedescription, {name, id, defined_in, version, type}). - --define(make_typedescription(Obj,Object_type), - #typedescription{name = Obj#Object_type.name, - id = Obj#Object_type.id, - defined_in = Obj#Object_type.defined_in, - version = Obj#Object_type.version, - type = Obj#Object_type.type}). - --record(exceptiondescription, {name, id, defined_in, version, type}). - --record(attributedescription, {name, id, defined_in, version, type, mode}). - --record(parameterdescription, {name, type, type_def, mode}). - --record(operationdescription, {name, id, defined_in, version, result, mode, - contexts, parameters, exceptions}). - --record(fullinterfacedescription, {name, id, defined_in, version, operations, - attributes, base_interfaces, type}). - --record(interfacedescription, {name, id, defined_in, version, - base_interfaces}). diff --git a/bootstrap/lib/orber/include/orber_pi.hrl b/bootstrap/lib/orber/include/orber_pi.hrl deleted file mode 100644 index 84231758fe..0000000000 --- a/bootstrap/lib/orber/include/orber_pi.hrl +++ /dev/null @@ -1,76 +0,0 @@ -%%---------------------------------------------------------------------- -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2000-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% -%%---------------------------------------------------------------------- -%% File : orber_pi.hrl -%% Purpose : -%%---------------------------------------------------------------------- - -%%=============== CONSTANTS ================================== -%%-------- PortableInterceptor::Interceptor (local) ---------- -%% Reply Status --define('PortableInterceptor_SUCCESSFUL', 0). --define('PortableInterceptor_SYSTEM_EXCEPTION', 1). --define('PortableInterceptor_USER_EXCEPTION', 2). --define('PortableInterceptor_LOCATION_FORWARD', 3). --define('PortableInterceptor_LOCATION_FORWARD_PERMANENT', 4). --define('PortableInterceptor_TRANSPORT_RETRY', 5). - - -%%=============== EXCEPTIONS ================================= -%%-------- PortableInterceptor::Interceptor (local) ---------- -%% forward eq. CORBA::Object, premanent eq. boolean --record('PortableInterceptor_ForwardRequest', {'OE_ID'="local", forward, permanent}). --record('PortableInterceptor_InvalidSlot', {'OE_ID'="local"}). - -%%--------------- IOP_N::Codec (local) ----------------------- --record('IOP_N_Codec_InvalidTypeForEncoding', {'OE_ID'="local"}). --record('IOP_N_Codec_FormatMismatch', {'OE_ID'="local"}). --record('IOP_N_Codec_TypeMismatch', {'OE_ID'="local"}). - -%%--------------- IOP_N (Module level) ----------------------- --define('IOP_N_ENCODING_CDR_ENCAPS', 0). - -%%--------------- IOP_N::CodecFactory (Module level) --------- --record('IOP_N_CodecFactory_UnknownEncoding', {'OE_ID'="local"}). - -%%--------------- IOP_N::ORBInitInfo (Module level) ---------- -%% name eq. string() --record('PortableInterceptor_ORBInitInfo_DuplicateName', {'OE_ID'="local", name}). --record('PortableInterceptor_ORBInitInfo_InvalidName', {'OE_ID'="local"}). - - -%%=============== DATA STRUCTURES ============================ -%%--------------- IOP_N (Module level) ----------------------- --record('IOP_N_Encoding', - {format, %% Currently only 'IOP_N_ENCODING_CDR_ENCAPS' allowed. - major_version, %% 1 only - minor_version}). %% 0,1 or 2 - - -%%--------------- Dynamic (Module level) --------------------- -%% argument eq. #any{}, -%% mode eq. CORBA::ParameterMode - PARAM_IN, PARAM_OUT, PARAM_INOUT. --record('Dynamic_Parameter', - {argument, - mode}). - -%%--------------- END OF MODULE ------------------------------ - diff --git a/bootstrap/lib/stdlib/ebin/stdlib.app b/bootstrap/lib/stdlib/ebin/stdlib.app deleted file mode 100644 index de50a882d3..0000000000 --- a/bootstrap/lib/stdlib/ebin/stdlib.app +++ /dev/null @@ -1,106 +0,0 @@ -%% This is an -*- erlang -*- file. -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -{application, stdlib, - [{description, "ERTS CXC 138 10"}, - {vsn, "1.18"}, - {modules, [array, - base64, - beam_lib, - binary, - c, - calendar, - dets, - dets_server, - dets_sup, - dets_utils, - dets_v8, - dets_v9, - dict, - digraph, - digraph_utils, - edlin, - edlin_expand, - epp, - eval_bits, - erl_bits, - erl_compile, - erl_eval, - erl_expand_records, - erl_internal, - erl_lint, - erl_parse, - erl_posix_msg, - erl_pp, - erl_scan, - erl_tar, - error_logger_file_h, - error_logger_tty_h, - escript, - ets, - file_sorter, - filelib, - filename, - gb_trees, - gb_sets, - gen, - gen_event, - gen_fsm, - gen_server, - io, - io_lib, - io_lib_format, - io_lib_fread, - io_lib_pretty, - lib, - lists, - log_mf_h, - math, - ms_transform, - orddict, - ordsets, - otp_internal, - pg, - pool, - proc_lib, - proplists, - qlc, - qlc_pt, - queue, - random, - re, - regexp, - sets, - shell, - shell_default, - slave, - sofs, - string, - supervisor, - supervisor_bridge, - sys, - timer, - unicode, - win32reg, - zip]}, - {registered,[timer_server,rsh_starter,take_over_monitor,pool_master, - dets]}, - {applications, [kernel]}, - {env, []}]}. - diff --git a/bootstrap/lib/stdlib/ebin/stdlib.appup b/bootstrap/lib/stdlib/ebin/stdlib.appup deleted file mode 100644 index 75ae6bb22e..0000000000 --- a/bootstrap/lib/stdlib/ebin/stdlib.appup +++ /dev/null @@ -1 +0,0 @@ -{"1.18",[],[]}. diff --git a/bootstrap/lib/stdlib/egen/erl_parse.erl b/bootstrap/lib/stdlib/egen/erl_parse.erl deleted file mode 100644 index 1e11007ec9..0000000000 --- a/bootstrap/lib/stdlib/egen/erl_parse.erl +++ /dev/null @@ -1,9680 +0,0 @@ --module(erl_parse). --export([parse/1, parse_and_scan/1, format_error/1]). --file("erl_parse.yrl", 502). - --export([parse_form/1,parse_exprs/1,parse_term/1]). --export([normalise/1,abstract/1,tokens/1,tokens/2]). --export([abstract/2, package_segments/1]). --export([inop_prec/1,preop_prec/1,func_prec/0,max_prec/0]). --export([set_line/2,get_attribute/2,get_attributes/1]). - -%% The following directive is needed for (significantly) faster compilation -%% of the generated .erl file by the HiPE compiler. Please do not remove. --compile([{hipe,[{regalloc,linear_scan}]}]). - --export_type([abstract_clause/0, abstract_expr/0, abstract_form/0, - error_info/0]). - --type abstract_clause() :: term(). --type abstract_expr() :: term(). --type abstract_form() :: term(). --type error_description() :: term(). --type error_info() :: {erl_scan:line(), module(), error_description()}. --type token() :: {Tag :: atom(), Line :: erl_scan:line()}. - -%% mkop(Op, Arg) -> {op,Line,Op,Arg}. -%% mkop(Left, Op, Right) -> {op,Line,Op,Left,Right}. - --define(mkop2(L, OpPos, R), - begin - {Op,Pos} = OpPos, - {op,Pos,Op,L,R} - end). - --define(mkop1(OpPos, A), - begin - {Op,Pos} = OpPos, - {op,Pos,Op,A} - end). - -%% keep track of line info in tokens --define(line(Tup), element(2, Tup)). - -%% Entry points compatible to old erl_parse. -%% These really suck and are only here until Calle gets multiple -%% entry points working. - --spec parse_form(Tokens) -> {ok, AbsForm} | {error, ErrorInfo} when - Tokens :: [token()], - AbsForm :: abstract_form(), - ErrorInfo :: error_info(). -parse_form([{'-',L1},{atom,L2,spec}|Tokens]) -> - parse([{'-',L1},{'spec',L2}|Tokens]); -parse_form(Tokens) -> - parse(Tokens). - --spec parse_exprs(Tokens) -> {ok, ExprList} | {error, ErrorInfo} when - Tokens :: [token()], - ExprList :: [abstract_expr()], - ErrorInfo :: error_info(). -parse_exprs(Tokens) -> - case parse([{atom,0,f},{'(',0},{')',0},{'->',0}|Tokens]) of - {ok,{function,_Lf,f,0,[{clause,_Lc,[],[],Exprs}]}} -> - {ok,Exprs}; - {error,_} = Err -> Err - end. - --spec parse_term(Tokens) -> {ok, Term} | {error, ErrorInfo} when - Tokens :: [token()], - Term :: term(), - ErrorInfo :: error_info(). -parse_term(Tokens) -> - case parse([{atom,0,f},{'(',0},{')',0},{'->',0}|Tokens]) of - {ok,{function,_Lf,f,0,[{clause,_Lc,[],[],[Expr]}]}} -> - try normalise(Expr) of - Term -> {ok,Term} - catch - _:_R -> {error,{?line(Expr),?MODULE,"bad term"}} - end; - {ok,{function,_Lf,f,0,[{clause,_Lc,[],[],[_E1,E2|_Es]}]}} -> - {error,{?line(E2),?MODULE,"bad term"}}; - {error,_} = Err -> Err - end. - --type attributes() :: 'export' | 'file' | 'import' | 'module' - | 'opaque' | 'record' | 'type'. - -build_typed_attribute({atom,La,record}, - {typed_record, {atom,_Ln,RecordName}, RecTuple}) -> - {attribute,La,record,{RecordName,record_tuple(RecTuple)}}; -build_typed_attribute({atom,La,Attr}, - {type_def, {call,_,{atom,_,TypeName},Args}, Type}) - when Attr =:= 'type' ; Attr =:= 'opaque' -> - case lists:all(fun({var, _, _}) -> true; - (_) -> false - end, Args) of - true -> {attribute,La,Attr,{TypeName,Type,Args}}; - false -> error_bad_decl(La, Attr) - end; -build_typed_attribute({atom,La,Attr},_) -> - case Attr of - record -> error_bad_decl(La, record); - type -> error_bad_decl(La, type); - opaque -> error_bad_decl(La, opaque); - _ -> ret_err(La, "bad attribute") - end. - -build_type_spec({spec,La}, {SpecFun, TypeSpecs}) -> - NewSpecFun = - case SpecFun of - {atom, _, Fun} -> - {Fun, find_arity_from_specs(TypeSpecs)}; - {{atom,_, Mod}, {atom,_, Fun}} -> - {Mod,Fun,find_arity_from_specs(TypeSpecs)}; - {{atom, _, Fun}, {integer, _, Arity}} -> - %% Old style spec. Allow this for now. - {Fun,Arity}; - {{atom,_, Mod}, {atom, _, Fun}, {integer, _, Arity}} -> - %% Old style spec. Allow this for now. - {Mod,Fun,Arity} - end, - {attribute,La,spec,{NewSpecFun, TypeSpecs}}. - -find_arity_from_specs([Spec|_]) -> - %% Use the first spec to find the arity. If all are not the same, - %% erl_lint will find this. - Fun = case Spec of - {type, _, bounded_fun, [F, _]} -> F; - {type, _, 'fun', _} = F -> F - end, - {type, _, 'fun', [{type, _, product, Args},_]} = Fun, - length(Args). - -build_def(LHS, Types) -> - IsSubType = {atom, ?line(LHS), is_subtype}, - {type, ?line(LHS), constraint, [IsSubType, [LHS, Types]]}. - -lift_unions(T1, {type, _La, union, List}) -> - {type, ?line(T1), union, [T1|List]}; -lift_unions(T1, T2) -> - {type, ?line(T1), union, [T1, T2]}. - -skip_paren({paren_type,_L,[Type]}) -> - skip_paren(Type); -skip_paren(Type) -> - Type. - -build_gen_type({atom, La, tuple}) -> - {type, La, tuple, any}; -build_gen_type({atom, La, Name}) -> - {type, La, Name, []}. - -build_bin_type([{var, _, '_'}|Left], Int) -> - build_bin_type(Left, Int); -build_bin_type([], Int) -> - skip_paren(Int); -build_bin_type([{var, La, _}|_], _) -> - ret_err(La, "Bad binary type"). - -%% build_attribute(AttrName, AttrValue) -> -%% {attribute,Line,module,Module} -%% {attribute,Line,export,Exports} -%% {attribute,Line,import,Imports} -%% {attribute,Line,record,{Name,Inits}} -%% {attribute,Line,file,{Name,Line}} -%% {attribute,Line,Name,Val} - -build_attribute({atom,La,module}, Val) -> - case Val of - [{atom,_Lm,Module}] -> - {attribute,La,module,Module}; - [{atom,_Lm,Module},ExpList] -> - {attribute,La,module,{Module,var_list(ExpList)}}; - [Name] -> - case package_segments(Name) of - error -> - error_bad_decl(La, module); - Module -> - {attribute,La,module,Module} - end; - [Name,ExpList] -> - case package_segments(Name) of - error -> - error_bad_decl(La, module); - Module -> - {attribute,La,module,{Module,var_list(ExpList)}} - end; - _Other -> - error_bad_decl(La, module) - end; -build_attribute({atom,La,export}, Val) -> - case Val of - [ExpList] -> - {attribute,La,export,farity_list(ExpList)}; - _Other -> error_bad_decl(La, export) - end; -build_attribute({atom,La,import}, Val) -> - case Val of - [Name] -> - case package_segments(Name) of - error -> - error_bad_decl(La, import); - Module -> - {attribute,La,import,Module} - end; - [{atom,_Lm,Mod},ImpList] -> - {attribute,La,import,{Mod,farity_list(ImpList)}}; - [Name, ImpList] -> - case package_segments(Name) of - error -> - error_bad_decl(La, import); - Module -> - {attribute,La,import,{Module,farity_list(ImpList)}} - end; - _Other -> error_bad_decl(La, import) - end; -build_attribute({atom,La,record}, Val) -> - case Val of - [{atom,_Ln,Record},RecTuple] -> - {attribute,La,record,{Record,record_tuple(RecTuple)}}; - _Other -> error_bad_decl(La, record) - end; -build_attribute({atom,La,file}, Val) -> - case Val of - [{string,_Ln,Name},{integer,_Ll,Line}] -> - {attribute,La,file,{Name,Line}}; - _Other -> error_bad_decl(La, file) - end; -build_attribute({atom,La,Attr}, Val) -> - case Val of - [Expr0] -> - Expr = attribute_farity(Expr0), - {attribute,La,Attr,term(Expr)}; - _Other -> ret_err(La, "bad attribute") - end. - -var_list({cons,_Lc,{var,_,V},Tail}) -> - [V|var_list(Tail)]; -var_list({nil,_Ln}) -> []; -var_list(Other) -> - ret_err(?line(Other), "bad variable list"). - -attribute_farity({cons,L,H,T}) -> - {cons,L,attribute_farity(H),attribute_farity(T)}; -attribute_farity({tuple,L,Args0}) -> - Args = attribute_farity_list(Args0), - {tuple,L,Args}; -attribute_farity({op,L,'/',{atom,_,_}=Name,{integer,_,_}=Arity}) -> - {tuple,L,[Name,Arity]}; -attribute_farity(Other) -> Other. - -attribute_farity_list(Args) -> - [attribute_farity(A) || A <- Args]. - --spec error_bad_decl(integer(), attributes()) -> no_return(). - -error_bad_decl(L, S) -> - ret_err(L, io_lib:format("bad ~w declaration", [S])). - -farity_list({cons,_Lc,{op,_Lo,'/',{atom,_La,A},{integer,_Li,I}},Tail}) -> - [{A,I}|farity_list(Tail)]; -farity_list({nil,_Ln}) -> []; -farity_list(Other) -> - ret_err(?line(Other), "bad function arity"). - -record_tuple({tuple,_Lt,Fields}) -> - record_fields(Fields); -record_tuple(Other) -> - ret_err(?line(Other), "bad record declaration"). - -record_fields([{atom,La,A}|Fields]) -> - [{record_field,La,{atom,La,A}}|record_fields(Fields)]; -record_fields([{match,_Lm,{atom,La,A},Expr}|Fields]) -> - [{record_field,La,{atom,La,A},Expr}|record_fields(Fields)]; -record_fields([{typed,Expr,TypeInfo}|Fields]) -> - [Field] = record_fields([Expr]), - TypeInfo1 = - case Expr of - {match, _, _, _} -> TypeInfo; %% If we have an initializer. - {atom, La, _} -> - case has_undefined(TypeInfo) of - false -> - TypeInfo2 = maybe_add_paren(TypeInfo), - lift_unions(abstract(undefined, La), TypeInfo2); - true -> - TypeInfo - end - end, - [{typed_record_field,Field,TypeInfo1}|record_fields(Fields)]; -record_fields([Other|_Fields]) -> - ret_err(?line(Other), "bad record field"); -record_fields([]) -> []. - -has_undefined({atom,_,undefined}) -> - true; -has_undefined({ann_type,_,[_,T]}) -> - has_undefined(T); -has_undefined({paren_type,_,[T]}) -> - has_undefined(T); -has_undefined({type,_,union,Ts}) -> - lists:any(fun has_undefined/1, Ts); -has_undefined(_) -> - false. - -maybe_add_paren({ann_type,L,T}) -> - {paren_type,L,[{ann_type,L,T}]}; -maybe_add_paren(T) -> - T. - -term(Expr) -> - try normalise(Expr) - catch _:_R -> ret_err(?line(Expr), "bad attribute") - end. - -package_segments(Name) -> - package_segments(Name, [], []). - -package_segments({record_field, _, F1, F2}, Fs, As) -> - package_segments(F1, [F2 | Fs], As); -package_segments({atom, _, A}, [F | Fs], As) -> - package_segments(F, Fs, [A | As]); -package_segments({atom, _, A}, [], As) -> - lists:reverse([A | As]); -package_segments(_, _, _) -> - error. - -%% build_function([Clause]) -> {function,Line,Name,Arity,[Clause]} - -build_function(Cs) -> - Name = element(3, hd(Cs)), - Arity = length(element(4, hd(Cs))), - {function,?line(hd(Cs)),Name,Arity,check_clauses(Cs, Name, Arity)}. - -%% build_rule([Clause]) -> {rule,Line,Name,Arity,[Clause]'} - -build_rule(Cs) -> - Name = element(3, hd(Cs)), - Arity = length(element(4, hd(Cs))), - {rule,?line(hd(Cs)),Name,Arity,check_clauses(Cs, Name, Arity)}. - -%% build_fun(Line, [Clause]) -> {'fun',Line,{clauses,[Clause]}}. - -build_fun(Line, Cs) -> - Arity = length(element(4, hd(Cs))), - {'fun',Line,{clauses,check_clauses(Cs, 'fun', Arity)}}. - -check_clauses(Cs, Name, Arity) -> - mapl(fun ({clause,L,N,As,G,B}) when N =:= Name, length(As) =:= Arity -> - {clause,L,As,G,B}; - ({clause,L,_N,_As,_G,_B}) -> - ret_err(L, "head mismatch") end, Cs). - -build_try(L,Es,Scs,{Ccs,As}) -> - {'try',L,Es,Scs,Ccs,As}. - --spec ret_err(_, _) -> no_return(). -ret_err(L, S) -> - {location,Location} = get_attribute(L, location), - return_error(Location, S). - -%% mapl(F,List) -%% an alternative map which always maps from left to right -%% and makes it possible to interrupt the mapping with throw on -%% the first occurence from left as expected. -%% can be removed when the jam machine (and all other machines) -%% uses the standardized (Erlang 5.0) evaluation order (from left to right) -mapl(F, [H|T]) -> - V = F(H), - [V | mapl(F,T)]; -mapl(_, []) -> - []. - -%% Convert between the abstract form of a term and a term. - --spec normalise(AbsTerm) -> Data when - AbsTerm :: abstract_expr(), - Data :: term(). -normalise({char,_,C}) -> C; -normalise({integer,_,I}) -> I; -normalise({float,_,F}) -> F; -normalise({atom,_,A}) -> A; -normalise({string,_,S}) -> S; -normalise({nil,_}) -> []; -normalise({bin,_,Fs}) -> - {value, B, _} = - eval_bits:expr_grp(Fs, [], - fun(E, _) -> - {value, normalise(E), []} - end, [], true), - B; -normalise({cons,_,Head,Tail}) -> - [normalise(Head)|normalise(Tail)]; -normalise({tuple,_,Args}) -> - list_to_tuple(normalise_list(Args)); -%% Atom dot-notation, as in 'foo.bar.baz' -normalise({record_field,_,_,_}=A) -> - case package_segments(A) of - error -> erlang:error({badarg, A}); - As -> list_to_atom(packages:concat(As)) - end; -%% Special case for unary +/-. -normalise({op,_,'+',{char,_,I}}) -> I; -normalise({op,_,'+',{integer,_,I}}) -> I; -normalise({op,_,'+',{float,_,F}}) -> F; -normalise({op,_,'-',{char,_,I}}) -> -I; %Weird, but compatible! -normalise({op,_,'-',{integer,_,I}}) -> -I; -normalise({op,_,'-',{float,_,F}}) -> -F; -normalise(X) -> erlang:error({badarg, X}). - -normalise_list([H|T]) -> - [normalise(H)|normalise_list(T)]; -normalise_list([]) -> - []. - --spec abstract(Data) -> AbsTerm when - Data :: term(), - AbsTerm :: abstract_expr(). -abstract(T) when is_integer(T) -> {integer,0,T}; -abstract(T) when is_float(T) -> {float,0,T}; -abstract(T) when is_atom(T) -> {atom,0,T}; -abstract([]) -> {nil,0}; -abstract(B) when is_bitstring(B) -> - {bin, 0, [abstract_byte(Byte, 0) || Byte <- bitstring_to_list(B)]}; -abstract([C|T]) when is_integer(C), 0 =< C, C < 256 -> - abstract_string(T, [C]); -abstract([H|T]) -> - {cons,0,abstract(H),abstract(T)}; -abstract(Tuple) when is_tuple(Tuple) -> - {tuple,0,abstract_list(tuple_to_list(Tuple))}. - -abstract_string([C|T], String) when is_integer(C), 0 =< C, C < 256 -> - abstract_string(T, [C|String]); -abstract_string([], String) -> - {string, 0, lists:reverse(String)}; -abstract_string(T, String) -> - not_string(String, abstract(T)). - -not_string([C|T], Result) -> - not_string(T, {cons, 0, {integer, 0, C}, Result}); -not_string([], Result) -> - Result. - -abstract_list([H|T]) -> - [abstract(H)|abstract_list(T)]; -abstract_list([]) -> - []. - -abstract_byte(Byte, Line) when is_integer(Byte) -> - {bin_element, Line, {integer, Line, Byte}, default, default}; -abstract_byte(Bits, Line) -> - Sz = bit_size(Bits), - <<Val:Sz>> = Bits, - {bin_element, Line, {integer, Line, Val}, {integer, Line, Sz}, default}. - -%%% abstract/2 keeps the line number -abstract(T, Line) when is_integer(T) -> {integer,Line,T}; -abstract(T, Line) when is_float(T) -> {float,Line,T}; -abstract(T, Line) when is_atom(T) -> {atom,Line,T}; -abstract([], Line) -> {nil,Line}; -abstract(B, Line) when is_bitstring(B) -> - {bin, Line, [abstract_byte(Byte, Line) || Byte <- bitstring_to_list(B)]}; -abstract([C|T], Line) when is_integer(C), 0 =< C, C < 256 -> - abstract_string(T, [C], Line); -abstract([H|T], Line) -> - {cons,Line,abstract(H, Line),abstract(T, Line)}; -abstract(Tuple, Line) when is_tuple(Tuple) -> - {tuple,Line,abstract_list(tuple_to_list(Tuple), Line)}. - -abstract_string([C|T], String, Line) when is_integer(C), 0 =< C, C < 256 -> - abstract_string(T, [C|String], Line); -abstract_string([], String, Line) -> - {string, Line, lists:reverse(String)}; -abstract_string(T, String, Line) -> - not_string(String, abstract(T, Line), Line). - -not_string([C|T], Result, Line) -> - not_string(T, {cons, Line, {integer, Line, C}, Result}, Line); -not_string([], Result, _Line) -> - Result. - -abstract_list([H|T], Line) -> - [abstract(H, Line)|abstract_list(T, Line)]; -abstract_list([], _Line) -> - []. - -%% Generate a list of tokens representing the abstract term. - --spec tokens(AbsTerm) -> Tokens when - AbsTerm :: abstract_expr(), - Tokens :: [token()]. -tokens(Abs) -> - tokens(Abs, []). - --spec tokens(AbsTerm, MoreTokens) -> Tokens when - AbsTerm :: abstract_expr(), - MoreTokens :: [token()], - Tokens :: [token()]. -tokens({char,L,C}, More) -> [{char,L,C}|More]; -tokens({integer,L,N}, More) -> [{integer,L,N}|More]; -tokens({float,L,F}, More) -> [{float,L,F}|More]; -tokens({atom,L,A}, More) -> [{atom,L,A}|More]; -tokens({var,L,V}, More) -> [{var,L,V}|More]; -tokens({string,L,S}, More) -> [{string,L,S}|More]; -tokens({nil,L}, More) -> [{'[',L},{']',L}|More]; -tokens({cons,L,Head,Tail}, More) -> - [{'[',L}|tokens(Head, tokens_tail(Tail, More))]; -tokens({tuple,L,[]}, More) -> - [{'{',L},{'}',L}|More]; -tokens({tuple,L,[E|Es]}, More) -> - [{'{',L}|tokens(E, tokens_tuple(Es, ?line(E), More))]. - -tokens_tail({cons,L,Head,Tail}, More) -> - [{',',L}|tokens(Head, tokens_tail(Tail, More))]; -tokens_tail({nil,L}, More) -> - [{']',L}|More]; -tokens_tail(Other, More) -> - L = ?line(Other), - [{'|',L}|tokens(Other, [{']',L}|More])]. - -tokens_tuple([E|Es], Line, More) -> - [{',',Line}|tokens(E, tokens_tuple(Es, ?line(E), More))]; -tokens_tuple([], Line, More) -> - [{'}',Line}|More]. - -%% Give the relative precedences of operators. - -inop_prec('=') -> {150,100,100}; -inop_prec('!') -> {150,100,100}; -inop_prec('orelse') -> {160,150,150}; -inop_prec('andalso') -> {200,160,160}; -inop_prec('==') -> {300,200,300}; -inop_prec('/=') -> {300,200,300}; -inop_prec('=<') -> {300,200,300}; -inop_prec('<') -> {300,200,300}; -inop_prec('>=') -> {300,200,300}; -inop_prec('>') -> {300,200,300}; -inop_prec('=:=') -> {300,200,300}; -inop_prec('=/=') -> {300,200,300}; -inop_prec('++') -> {400,300,300}; -inop_prec('--') -> {400,300,300}; -inop_prec('+') -> {400,400,500}; -inop_prec('-') -> {400,400,500}; -inop_prec('bor') -> {400,400,500}; -inop_prec('bxor') -> {400,400,500}; -inop_prec('bsl') -> {400,400,500}; -inop_prec('bsr') -> {400,400,500}; -inop_prec('or') -> {400,400,500}; -inop_prec('xor') -> {400,400,500}; -inop_prec('*') -> {500,500,600}; -inop_prec('/') -> {500,500,600}; -inop_prec('div') -> {500,500,600}; -inop_prec('rem') -> {500,500,600}; -inop_prec('band') -> {500,500,600}; -inop_prec('and') -> {500,500,600}; -inop_prec('#') -> {800,700,800}; -inop_prec(':') -> {900,800,900}; -inop_prec('.') -> {900,900,1000}. - --type pre_op() :: 'catch' | '+' | '-' | 'bnot' | 'not' | '#'. - --spec preop_prec(pre_op()) -> {0 | 600 | 700, 100 | 700 | 800}. - -preop_prec('catch') -> {0,100}; -preop_prec('+') -> {600,700}; -preop_prec('-') -> {600,700}; -preop_prec('bnot') -> {600,700}; -preop_prec('not') -> {600,700}; -preop_prec('#') -> {700,800}. - --spec func_prec() -> {800,700}. - -func_prec() -> {800,700}. - --spec max_prec() -> 1000. - -max_prec() -> 1000. - -%%% [Experimental]. The parser just copies the attributes of the -%%% scanner tokens to the abstract format. This design decision has -%%% been hidden to some extent: use set_line() and get_attribute() to -%%% access the second element of (almost all) of the abstract format -%%% tuples. A typical use is to negate line numbers to prevent the -%%% compiler from emitting warnings and errors. The second element can -%%% (of course) be set to any value, but then these functions no -%%% longer apply. To get all present attributes as a property list -%%% get_attributes() should be used. - -set_line(L, F) -> - erl_scan:set_attribute(line, L, F). - -get_attribute(L, Name) -> - erl_scan:attributes_info(L, Name). - -get_attributes(L) -> - erl_scan:attributes_info(L). - --file("/usr/local/otp/releases/sles10_32_R14B03_patched/lib/parsetools-2.0.5/include/yeccpre.hrl", 0). -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% The parser generator will insert appropriate declarations before this line.% - --type yecc_ret() :: {'error', _} | {'ok', _}. - --spec parse(Tokens :: list()) -> yecc_ret(). -parse(Tokens) -> - yeccpars0(Tokens, {no_func, no_line}, 0, [], []). - --spec parse_and_scan({function() | {atom(), atom()}, [_]} - | {atom(), atom(), [_]}) -> yecc_ret(). -parse_and_scan({F, A}) -> % Fun or {M, F} - yeccpars0([], {{F, A}, no_line}, 0, [], []); -parse_and_scan({M, F, A}) -> - yeccpars0([], {{{M, F}, A}, no_line}, 0, [], []). - --spec format_error(any()) -> [char() | list()]. -format_error(Message) -> - case io_lib:deep_char_list(Message) of - true -> - Message; - _ -> - io_lib:write(Message) - end. - -%% To be used in grammar files to throw an error message to the parser -%% toplevel. Doesn't have to be exported! --compile({nowarn_unused_function, return_error/2}). --spec return_error(integer(), any()) -> no_return(). -return_error(Line, Message) -> - throw({error, {Line, ?MODULE, Message}}). - --define(CODE_VERSION, "1.4"). - -yeccpars0(Tokens, Tzr, State, States, Vstack) -> - try yeccpars1(Tokens, Tzr, State, States, Vstack) - catch - error: Error -> - Stacktrace = erlang:get_stacktrace(), - try yecc_error_type(Error, Stacktrace) of - Desc -> - erlang:raise(error, {yecc_bug, ?CODE_VERSION, Desc}, - Stacktrace) - catch _:_ -> erlang:raise(error, Error, Stacktrace) - end; - %% Probably thrown from return_error/2: - throw: {error, {_Line, ?MODULE, _M}} = Error -> - Error - end. - -yecc_error_type(function_clause, [{?MODULE,F,ArityOrArgs} | _]) -> - case atom_to_list(F) of - "yeccgoto_" ++ SymbolL -> - {ok,[{atom,_,Symbol}],_} = erl_scan:string(SymbolL), - State = case ArityOrArgs of - [S,_,_,_,_,_,_] -> S; - _ -> state_is_unknown - end, - {Symbol, State, missing_in_goto_table} - end. - -yeccpars1([Token | Tokens], Tzr, State, States, Vstack) -> - yeccpars2(State, element(1, Token), States, Vstack, Token, Tokens, Tzr); -yeccpars1([], {{F, A},_Line}, State, States, Vstack) -> - case apply(F, A) of - {ok, Tokens, Endline} -> - yeccpars1(Tokens, {{F, A}, Endline}, State, States, Vstack); - {eof, Endline} -> - yeccpars1([], {no_func, Endline}, State, States, Vstack); - {error, Descriptor, _Endline} -> - {error, Descriptor} - end; -yeccpars1([], {no_func, no_line}, State, States, Vstack) -> - Line = 999999, - yeccpars2(State, '$end', States, Vstack, yecc_end(Line), [], - {no_func, Line}); -yeccpars1([], {no_func, Endline}, State, States, Vstack) -> - yeccpars2(State, '$end', States, Vstack, yecc_end(Endline), [], - {no_func, Endline}). - -%% yeccpars1/7 is called from generated code. -%% -%% When using the {includefile, Includefile} option, make sure that -%% yeccpars1/7 can be found by parsing the file without following -%% include directives. yecc will otherwise assume that an old -%% yeccpre.hrl is included (one which defines yeccpars1/5). -yeccpars1(State1, State, States, Vstack, Token0, [Token | Tokens], Tzr) -> - yeccpars2(State, element(1, Token), [State1 | States], - [Token0 | Vstack], Token, Tokens, Tzr); -yeccpars1(State1, State, States, Vstack, Token0, [], {{_F,_A}, _Line}=Tzr) -> - yeccpars1([], Tzr, State, [State1 | States], [Token0 | Vstack]); -yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, no_line}) -> - Line = yecctoken_end_location(Token0), - yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], - yecc_end(Line), [], {no_func, Line}); -yeccpars1(State1, State, States, Vstack, Token0, [], {no_func, Line}) -> - yeccpars2(State, '$end', [State1 | States], [Token0 | Vstack], - yecc_end(Line), [], {no_func, Line}). - -%% For internal use only. -yecc_end({Line,_Column}) -> - {'$end', Line}; -yecc_end(Line) -> - {'$end', Line}. - -yecctoken_end_location(Token) -> - try - {text, Str} = erl_scan:token_info(Token, text), - {line, Line} = erl_scan:token_info(Token, line), - Parts = re:split(Str, "\n"), - Dline = length(Parts) - 1, - Yline = Line + Dline, - case erl_scan:token_info(Token, column) of - {column, Column} -> - Col = byte_size(lists:last(Parts)), - {Yline, Col + if Dline =:= 0 -> Column; true -> 1 end}; - undefined -> - Yline - end - catch _:_ -> - yecctoken_location(Token) - end. - --compile({nowarn_unused_function, yeccerror/1}). -yeccerror(Token) -> - Text = yecctoken_to_string(Token), - Location = yecctoken_location(Token), - {error, {Location, ?MODULE, ["syntax error before: ", Text]}}. - --compile({nowarn_unused_function, yecctoken_to_string/1}). -yecctoken_to_string(Token) -> - case catch erl_scan:token_info(Token, text) of - {text, Txt} -> Txt; - _ -> yecctoken2string(Token) - end. - -yecctoken_location(Token) -> - case catch erl_scan:token_info(Token, location) of - {location, Loc} -> Loc; - _ -> element(2, Token) - end. - --compile({nowarn_unused_function, yecctoken2string/1}). -yecctoken2string({atom, _, A}) -> io_lib:write(A); -yecctoken2string({integer,_,N}) -> io_lib:write(N); -yecctoken2string({float,_,F}) -> io_lib:write(F); -yecctoken2string({char,_,C}) -> io_lib:write_char(C); -yecctoken2string({var,_,V}) -> io_lib:format("~s", [V]); -yecctoken2string({string,_,S}) -> io_lib:write_unicode_string(S); -yecctoken2string({reserved_symbol, _, A}) -> io_lib:write(A); -yecctoken2string({_Cat, _, Val}) -> io_lib:format("~p",[Val]); -yecctoken2string({dot, _}) -> "'.'"; -yecctoken2string({'$end', _}) -> - []; -yecctoken2string({Other, _}) when is_atom(Other) -> - io_lib:write(Other); -yecctoken2string(Other) -> - io_lib:write(Other). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 779). - -yeccpars2(0=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_0(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(1=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_1(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(2=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_2(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(3=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_3(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(4=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_4(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(5=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_5(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(6=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_6(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(7=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_7(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(8=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_8(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(9=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_9(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(10=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(11=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_11(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(12=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_12(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(13=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_13(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(14=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_14(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(15=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_15(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(16=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_16(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(17=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_17(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(18=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_18(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(19=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_19(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(20=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_20(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(21=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_21(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(22=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_22(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(23=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_23(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(24=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_24(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(25=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_25(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(26=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_26(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(27=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_27(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(28=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_28(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(29=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_29(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(30=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_30(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(31=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_31(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(32=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_32(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(33=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_33(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(34=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_34(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(35=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_35(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(36=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_36(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(37=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_37(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(38=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_38(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(39=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_39(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(40=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_40(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(41=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_41(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(42=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_42(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(43=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_43(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(44=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_44(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(45=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(46=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_46(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(47=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_47(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(48=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_48(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(49=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_49(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(50=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_50(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(51=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_51(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(52=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_52(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(53=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(54=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_54(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(55=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(56=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(57=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_57(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(58=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_58(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(59=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_59(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(60=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(61=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_61(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(62=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_62(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(63=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_63(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(64=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_64(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(65=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_65(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(66=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(67=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_67(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(68=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_68(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(69=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_69(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(70=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_70(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(71=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_71(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(72=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_72(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(73=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_73(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(74=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(75=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_75(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(76=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(77=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_77(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(78=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_78(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(79=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_79(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(80=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(81=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_81(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(82=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_82(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(83=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(84=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(85=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_85(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(86=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_86(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(87=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(88=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_88(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(89=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_89(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(90=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(91=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_91(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(92=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_92(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(93=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_93(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(94=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_94(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(95=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_95(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(96=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_96(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(97=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(98=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_98(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(99=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(100=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_100(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(101=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(102=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_102(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(103=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(104=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_104(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(105=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(106=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_106(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(107=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_75(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(108=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_108(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(109=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(110=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_110(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(111=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_111(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(112=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_112(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(113=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_113(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(114=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_114(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(115=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_115(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(116=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_116(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(117=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(118=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(119=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_119(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(120=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_120(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(121=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(122=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_122(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(123=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(124=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_124(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(125=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_125(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(126=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_126(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(127=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(128=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_128(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(129=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(130=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_130(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(131=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_131(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(132=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_132(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(133=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_133(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(134=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(135=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_135(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(136=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(137=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_137(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(138=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(139=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_139(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(140=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_140(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(141=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_141(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(142=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_142(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(143=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_143(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(144=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(145=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_145(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(146=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(147=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_147(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(148=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_148(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(149=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_149(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(150=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_150(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(151=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_151(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(152=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_152(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(153=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_153(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(154=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_154(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(155=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_155(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(156=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_156(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(157=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_157(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(158=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_158(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(159=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(160=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_160(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(161=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(162=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_162(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(163=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_163(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(164=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_164(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(165=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_165(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(166=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(167=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_167(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(168=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_168(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(169=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_169(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(170=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_170(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(171=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_171(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(172=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_172(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(173=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_173(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(174=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(175=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_175(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(176=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(177=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_177(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(178=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_178(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(179=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_179(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(180=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_180(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(181=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(182=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_182(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(183=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_183(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(184=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_184(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(185=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_185(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(186=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_186(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(187=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_187(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(188=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_188(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(189=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_189(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(190=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_190(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(191=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(192=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_192(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(193=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_193(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(194=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_194(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(195=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(196=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_196(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(197=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_197(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(198=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_198(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(199=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_199(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(200=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_200(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(201=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_201(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(202=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_202(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(203=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_203(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(204=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_204(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(205=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_199(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(206=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_206(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(207=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_207(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(208=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_208(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(209=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_209(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(210=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_210(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(211=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_211(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(212=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_212(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(213=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_213(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(214=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_214(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(215=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_215(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(216=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_216(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(217=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_217(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(218=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_218(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(219=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_219(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(220=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(221=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_221(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(222=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(223=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_223(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(224=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_224(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(225=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_225(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(226=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_226(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(227=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_227(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(228=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(229=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_229(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(230=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(231=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(232=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_232(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(233=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_233(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(234=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(235=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_235(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(236=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(237=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_237(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(238=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(239=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_239(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(240=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_240(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(241=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_241(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(242=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_242(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(243=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_243(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(244=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_244(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(245=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_245(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(246=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_246(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(247=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_247(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(248=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(249=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(250=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_250(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(251=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_251(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(252=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_252(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(253=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_253(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(254=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_254(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(255=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_255(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(256=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_256(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(257=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_257(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(258=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_258(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(259=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_259(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(260=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_260(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(261=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(262=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_262(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(263=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_263(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(264=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_264(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(265=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_265(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(266=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_266(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(267=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_267(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(268=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_268(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(269=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_269(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(270=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_270(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(271=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_271(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(272=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(273=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_273(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(274=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_274(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(275=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_275(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(276=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_276(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(277=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_277(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(278=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_278(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(279=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_279(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(280=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_280(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(281=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_281(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(282=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_282(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(283=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_283(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(284=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_284(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(285=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_285(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(286=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_286(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(287=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_287(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(288=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_288(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(289=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_289(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(290=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(291=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_291(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(292=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_292(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(293=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_293(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(294=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_294(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(295=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_295(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(296=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_296(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(297=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_297(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(298=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_298(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(299=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_299(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(300=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_300(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(301=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_301(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(302=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_302(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(303=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_303(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(304=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_304(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(305=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_305(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(306=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_295(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(307=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_307(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(308=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_308(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(309=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_309(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(310=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_310(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(311=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_311(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(312=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_312(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(313=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_313(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(314=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_314(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(315=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_315(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(316=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_316(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(317=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_317(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(318=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_318(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(319=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_319(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(320=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_320(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(321=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_321(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(322=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(323=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_323(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(324=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_324(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(325=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_325(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(326=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_326(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(327=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_327(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(328=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_328(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(329=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_329(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(330=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_330(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(331=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_331(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(332=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_332(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(333=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_333(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(334=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(335=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_335(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(336=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_336(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(337=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_337(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(338=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_338(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(339=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_339(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(340=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_340(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(341=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_341(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(342=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_342(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(343=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_343(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(344=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(345=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_345(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(346=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_346(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(347=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_347(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(348=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_348(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(349=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_349(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(350=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_350(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(351=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_351(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(352=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_352(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(353=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_353(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(354=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_354(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(355=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_355(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(356=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_356(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(357=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_357(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(358=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_358(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(359=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_359(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(360=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_360(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(361=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_361(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(362=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_362(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(363=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_363(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(364=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_364(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(365=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_365(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(366=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_366(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(367=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_367(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(368=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_368(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(369=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_369(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(370=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(371=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_371(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(372=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_372(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(373=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_373(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(374=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_374(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(375=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_375(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(376=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_376(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(377=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_377(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(378=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_378(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(379=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_379(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(380=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(381=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_381(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(382=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_382(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(383=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_383(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(384=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_384(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(385=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_385(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(386=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_386(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(387=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_387(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(388=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_388(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(389=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_389(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(390=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(391=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_391(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(392=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_392(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(393=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_393(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(394=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_394(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(395=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_395(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(396=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(397=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_397(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(398=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_398(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(399=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(400=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_400(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(401=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(402=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_402(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(403=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(404=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(405=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_405(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(406=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_406(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(407=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(408=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_408(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(409=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_409(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(410=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_410(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(411=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_411(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(412=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_412(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(413=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_413(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(414=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(415=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_415(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(416=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(417=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_417(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(418=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_418(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(419=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_409(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(420=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_420(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(421=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_295(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(422=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_422(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(423=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_423(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(424=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_424(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(425=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_425(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(426=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_426(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(427=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_427(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(428=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(429=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_429(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(430=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_430(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(431=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_431(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(432=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(433=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_433(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(434=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_434(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(435=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_435(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(436=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_68(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(437=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_437(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(438=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_438(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(439=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_439(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(440=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(441=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(442=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_442(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(443=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_443(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(444=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(445=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_445(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(446=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_446(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(447=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_447(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(448=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_448(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(449=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_449(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(450=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_431(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(451=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_451(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(452=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_452(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(453=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_453(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(454=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_454(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(455=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_455(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(456=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(457=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_457(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(458=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_83(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(459=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_459(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(460=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_460(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(461=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_461(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(462=S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_10(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(463=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_463(S, Cat, Ss, Stack, T, Ts, Tzr); -%% yeccpars2(464=S, Cat, Ss, Stack, T, Ts, Tzr) -> -%% yeccpars2_464(S, Cat, Ss, Stack, T, Ts, Tzr); -yeccpars2(Other, _, _, _, _, _, _) -> - erlang:error({yecc_bug,"1.4",{missing_state_in_action_table, Other}}). - -yeccpars2_0(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 9, Ss, Stack, T, Ts, Tzr); -yeccpars2_0(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 10, Ss, Stack, T, Ts, Tzr); -yeccpars2_0(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_1_(Stack), - yeccgoto_rule(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_2(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 460, Ss, Stack, T, Ts, Tzr); -yeccpars2_2(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_2_(Stack), - yeccgoto_rule_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_3(S, dot, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 459, Ss, Stack, T, Ts, Tzr); -yeccpars2_3(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_4(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_4_(Stack), - yeccgoto_function(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_5(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 454, Ss, Stack, T, Ts, Tzr); -yeccpars2_5(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_5_(Stack), - yeccgoto_function_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_6(S, dot, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 453, Ss, Stack, T, Ts, Tzr); -yeccpars2_6(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_7(_S, '$end', _Ss, Stack, _T, _Ts, _Tzr) -> - {ok, hd(Stack)}; -yeccpars2_7(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_8(S, dot, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 452, Ss, Stack, T, Ts, Tzr); -yeccpars2_8(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_9(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 292, Ss, Stack, T, Ts, Tzr); -yeccpars2_9(S, spec, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 293, Ss, Stack, T, Ts, Tzr); -yeccpars2_9(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_10(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr); -yeccpars2_10(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_11(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_11(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_11_(Stack), - yeccpars2_287(287, Cat, [11 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_12_(Stack), - yeccgoto_clause_args(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_13(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 46, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_13(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_cont_13(S, '<<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 50, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 51, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'begin', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 53, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'case', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 55, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, char, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 57, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, float, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 58, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 59, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'if', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 60, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 61, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'query', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 63, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'receive', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 64, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 65, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(S, 'try', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 66, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_13(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_17(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 282, Ss, Stack, T, Ts, Tzr); -yeccpars2_17(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_700(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_20(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_20(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_700(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_26(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 280, Ss, Stack, T, Ts, Tzr); -yeccpars2_26(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_27(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 275, Ss, Stack, T, Ts, Tzr); -yeccpars2_27(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_900(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_28(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 271, Ss, Stack, T, Ts, Tzr); -yeccpars2_28(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 272, Ss, Stack, T, Ts, Tzr); -yeccpars2_28(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_800(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_29(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr); -yeccpars2_29(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_700(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_600(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_500(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_32(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 263, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, 'and', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, 'band', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 265, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, 'div', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(S, 'rem', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 267, Ss, Stack, T, Ts, Tzr); -yeccpars2_32(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_400(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_33(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 250, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, '++', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 251, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 252, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, '--', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 253, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'bor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 254, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'bsl', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 255, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'bsr', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 256, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'bxor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 257, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'or', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 258, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(S, 'xor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 259, Ss, Stack, T, Ts, Tzr); -yeccpars2_33(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_300(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_34(S, '/=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 239, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 240, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '=/=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 241, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '=:=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 242, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '=<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 243, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '==', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 244, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 245, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(S, '>=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 246, Ss, Stack, T, Ts, Tzr); -yeccpars2_34(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_200(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_35(S, 'andalso', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 236, Ss, Stack, T, Ts, Tzr); -yeccpars2_35(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_160(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_36(S, 'orelse', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 234, Ss, Stack, T, Ts, Tzr); -yeccpars2_36(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_150(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_37(S, '!', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 230, Ss, Stack, T, Ts, Tzr); -yeccpars2_37(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 231, Ss, Stack, T, Ts, Tzr); -yeccpars2_37(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_100(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_39(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 228, Ss, Stack, T, Ts, Tzr); -yeccpars2_39(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_39_(Stack), - yeccgoto_exprs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_44(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 211, Ss, Stack, T, Ts, Tzr); -yeccpars2_44(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_45(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_45(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_46(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_46_(Stack), - yeccgoto_argument_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_47(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_prefix_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_48(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_prefix_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_49(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 208, Ss, Stack, T, Ts, Tzr); -yeccpars2_49(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_50(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 187, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_50(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_51(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 172, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_51(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_52(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_53: see yeccpars2_45 - -yeccpars2_54(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_prefix_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_55: see yeccpars2_45 - -%% yeccpars2_56: see yeccpars2_45 - -yeccpars2_57(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_58(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_59(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 13, Ss, Stack, T, Ts, Tzr); -yeccpars2_59(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 152, Ss, Stack, T, Ts, Tzr); -yeccpars2_59(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_60: see yeccpars2_45 - -yeccpars2_61(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_62(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_prefix_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_63(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 127, Ss, Stack, T, Ts, Tzr); -yeccpars2_63(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_64(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 117, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_64(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_65(S, string, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 65, Ss, Stack, T, Ts, Tzr); -yeccpars2_65(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_strings(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_66: see yeccpars2_45 - -yeccpars2_67(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_68(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 70, Ss, Stack, T, Ts, Tzr); -yeccpars2_68(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_69(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 71, Ss, Stack, T, Ts, Tzr); -yeccpars2_69(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_70(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_70_(Stack), - yeccgoto_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_71(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_71_(Stack), - yeccgoto_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_72(S, 'of', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 76, Ss, Stack, T, Ts, Tzr); -yeccpars2_72(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_78(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_73(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_73_(Stack), - yeccgoto_try_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_74: see yeccpars2_45 - -yeccpars2_75(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 95, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 96, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_75(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_76: see yeccpars2_45 - -yeccpars2_77(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_77(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_77_(Stack), - yeccpars2_83(83, Cat, [77 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_78(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 74, Ss, Stack, T, Ts, Tzr); -yeccpars2_78(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 75, Ss, Stack, T, Ts, Tzr); -yeccpars2_78(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_79(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 80, Ss, Stack, T, Ts, Tzr); -yeccpars2_79(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_79_(Stack), - yeccgoto_cr_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_80: see yeccpars2_45 - -yeccpars2_81(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_81_(Stack), - yeccgoto_cr_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_82(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_82_(Stack), - yeccgoto_try_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_83(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 90, Ss, Stack, T, Ts, Tzr); -yeccpars2_83(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_84: see yeccpars2_45 - -yeccpars2_85(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_85_(Stack), - yeccgoto_clause_guard(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_86(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 87, Ss, Stack, T, Ts, Tzr); -yeccpars2_86(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_86_(Stack), - yeccgoto_guard(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_87: see yeccpars2_45 - -yeccpars2_88(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_88_(Stack), - yeccgoto_guard(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_89(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_89_(Stack), - yeccgoto_cr_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_90: see yeccpars2_45 - -yeccpars2_91(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_91_(Stack), - yeccgoto_clause_body(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_92(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 109, Ss, Stack, T, Ts, Tzr); -yeccpars2_92(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 110, Ss, Stack, T, Ts, Tzr); -yeccpars2_92(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_93(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 107, Ss, Stack, T, Ts, Tzr); -yeccpars2_93(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_93_(Stack), - yeccgoto_try_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_94(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_94(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_94_(Stack), - yeccpars2_83(105, Cat, [94 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_95(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 101, Ss, Stack, T, Ts, Tzr); -yeccpars2_95(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_atomic(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_96(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 97, Ss, Stack, T, Ts, Tzr); -yeccpars2_96(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_97: see yeccpars2_45 - -yeccpars2_98(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_98(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_98_(Stack), - yeccpars2_83(99, Cat, [98 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_99: see yeccpars2_83 - -yeccpars2_100(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_100_(Stack), - yeccgoto_try_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_101: see yeccpars2_45 - -yeccpars2_102(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_102(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_102_(Stack), - yeccpars2_83(103, Cat, [102 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_103: see yeccpars2_83 - -yeccpars2_104(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_104_(Stack), - yeccgoto_try_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_105: see yeccpars2_83 - -yeccpars2_106(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_106_(Stack), - yeccgoto_try_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_107: see yeccpars2_75 - -yeccpars2_108(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_108_(Stack), - yeccgoto_try_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_109: see yeccpars2_45 - -yeccpars2_110(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_110_(Stack), - yeccgoto_try_catch(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_111(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 112, Ss, Stack, T, Ts, Tzr); -yeccpars2_111(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_112(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_112_(Stack), - yeccgoto_try_catch(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_113(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 114, Ss, Stack, T, Ts, Tzr); -yeccpars2_113(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_114(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_114_(Stack), - yeccgoto_try_catch(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_115_(Stack), - yeccgoto_strings(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_116(S, 'after', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 121, Ss, Stack, T, Ts, Tzr); -yeccpars2_116(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 122, Ss, Stack, T, Ts, Tzr); -yeccpars2_116(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_117: see yeccpars2_45 - -%% yeccpars2_118: see yeccpars2_83 - -yeccpars2_119(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 120, Ss, Stack, T, Ts, Tzr); -yeccpars2_119(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_120(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_120_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_121: see yeccpars2_45 - -yeccpars2_122(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_122_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_123: see yeccpars2_83 - -yeccpars2_124(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 125, Ss, Stack, T, Ts, Tzr); -yeccpars2_124(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_125(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_125_(Stack), - yeccgoto_receive_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_126(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 141, Ss, Stack, T, Ts, Tzr); -yeccpars2_126(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_127: see yeccpars2_45 - -yeccpars2_128(S, '||', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 129, Ss, Stack, T, Ts, Tzr); -yeccpars2_128(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_129: see yeccpars2_45 - -yeccpars2_130(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 140, Ss, Stack, T, Ts, Tzr); -yeccpars2_130(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_131(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 138, Ss, Stack, T, Ts, Tzr); -yeccpars2_131(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_131_(Stack), - yeccgoto_lc_exprs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_132(S, '<-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 136, Ss, Stack, T, Ts, Tzr); -yeccpars2_132(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_lc_expr(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_133(S, '<=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 134, Ss, Stack, T, Ts, Tzr); -yeccpars2_133(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_134: see yeccpars2_45 - -yeccpars2_135(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_135_(Stack), - yeccgoto_lc_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_136: see yeccpars2_45 - -yeccpars2_137(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_137_(Stack), - yeccgoto_lc_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_138: see yeccpars2_45 - -yeccpars2_139(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_139_(Stack), - yeccgoto_lc_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_140(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_140_(Stack), - yeccgoto_list_comprehension(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_141(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_141_(Stack), - yeccgoto_query_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_142(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 148, Ss, Stack, T, Ts, Tzr); -yeccpars2_142(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_143(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 146, Ss, Stack, T, Ts, Tzr); -yeccpars2_143(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_143_(Stack), - yeccgoto_if_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_144: see yeccpars2_83 - -yeccpars2_145(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_145_(Stack), - yeccgoto_if_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_146: see yeccpars2_45 - -yeccpars2_147(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_147_(Stack), - yeccgoto_if_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_148(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_148_(Stack), - yeccgoto_if_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_149(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 163, Ss, Stack, T, Ts, Tzr); -yeccpars2_149(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_150(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 161, Ss, Stack, T, Ts, Tzr); -yeccpars2_150(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_150_(Stack), - yeccgoto_fun_clauses(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_151(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_151(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_151_(Stack), - yeccpars2_83(159, Cat, [151 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_152(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 153, Ss, Stack, T, Ts, Tzr); -yeccpars2_152(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 154, Ss, Stack, T, Ts, Tzr); -yeccpars2_152(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_153(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 158, Ss, Stack, T, Ts, Tzr); -yeccpars2_153(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_154(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 155, Ss, Stack, T, Ts, Tzr); -yeccpars2_154(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_155(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 156, Ss, Stack, T, Ts, Tzr); -yeccpars2_155(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_156(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 157, Ss, Stack, T, Ts, Tzr); -yeccpars2_156(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_157(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_157_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_158(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_158_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_159: see yeccpars2_83 - -yeccpars2_160(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_160_(Stack), - yeccgoto_fun_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_161: see yeccpars2_10 - -yeccpars2_162(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_162_(Stack), - yeccgoto_fun_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_163(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_163_(Stack), - yeccgoto_fun_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_164(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_164_(Stack), - yeccgoto_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_165(S, 'of', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 166, Ss, Stack, T, Ts, Tzr); -yeccpars2_165(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_166: see yeccpars2_45 - -yeccpars2_167(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 168, Ss, Stack, T, Ts, Tzr); -yeccpars2_167(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_168(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_168_(Stack), - yeccgoto_case_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_169(S, 'end', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 170, Ss, Stack, T, Ts, Tzr); -yeccpars2_169(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_170(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_170_(Stack), - yeccgoto_expr_max(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_171(S, '||', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 129, Ss, Stack, T, Ts, Tzr); -yeccpars2_171(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_179(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_172(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_172_(Stack), - yeccgoto_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_173_(Stack), - yeccgoto_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_174: see yeccpars2_45 - -yeccpars2_175(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_175_(Stack), - yeccgoto_tail(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_176: see yeccpars2_45 - -yeccpars2_177(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 178, Ss, Stack, T, Ts, Tzr); -yeccpars2_177(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_178(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_178_(Stack), - yeccgoto_tail(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_179(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 174, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 175, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 176, Ss, Stack, T, Ts, Tzr); -yeccpars2_179(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_180(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_180_(Stack), - yeccgoto_tail(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_181(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_181(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_182(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_bit_expr(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_183(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 195, Ss, Stack, T, Ts, Tzr); -yeccpars2_183(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_183_(Stack), - yeccpars2_194(194, Cat, [183 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_184(S, '||', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 191, Ss, Stack, T, Ts, Tzr); -yeccpars2_184(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_expr_max(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_185(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 190, Ss, Stack, T, Ts, Tzr); -yeccpars2_185(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_186(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 188, Ss, Stack, T, Ts, Tzr); -yeccpars2_186(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_186_(Stack), - yeccgoto_bin_elements(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_187(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_187_(Stack), - yeccgoto_binary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_188(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_188(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_189(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_189_(Stack), - yeccgoto_bin_elements(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_190(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_190_(Stack), - yeccgoto_binary(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_191: see yeccpars2_45 - -yeccpars2_192(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 193, Ss, Stack, T, Ts, Tzr); -yeccpars2_192(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_193(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_193_(Stack), - yeccgoto_binary_comprehension(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_194(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 199, Ss, Stack, T, Ts, Tzr); -yeccpars2_194(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_194_(Stack), - yeccpars2_198(_S, Cat, [194 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_195: see yeccpars2_181 - -yeccpars2_196(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_bit_size_expr(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_197(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_197_(Stack), - yeccgoto_opt_bit_size_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_198(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_198_(Stack), - yeccgoto_bin_element(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_199(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 202, Ss, Stack, T, Ts, Tzr); -yeccpars2_199(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_200(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_200_(Stack), - yeccgoto_opt_bit_type_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_201(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 205, Ss, Stack, T, Ts, Tzr); -yeccpars2_201(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_201_(Stack), - yeccgoto_bit_type_list(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_202(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 203, Ss, Stack, T, Ts, Tzr); -yeccpars2_202(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_202_(Stack), - yeccgoto_bit_type(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_203(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 204, Ss, Stack, T, Ts, Tzr); -yeccpars2_203(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_204(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_204_(Stack), - yeccgoto_bit_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_205: see yeccpars2_199 - -yeccpars2_206(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_206_(Stack), - yeccgoto_bit_type_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_207(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_207_(Stack), - yeccgoto_bit_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_208(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_208_(Stack), - yeccgoto_expr_900(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_209(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 210, Ss, Stack, T, Ts, Tzr); -yeccpars2_209(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_210(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_210_(Stack), - yeccgoto_expr_max(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_211(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 213, Ss, Stack, T, Ts, Tzr); -yeccpars2_211(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 214, Ss, Stack, T, Ts, Tzr); -yeccpars2_211(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_212(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_212_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_213(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 227, Ss, Stack, T, Ts, Tzr); -yeccpars2_213(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_214(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 219, Ss, Stack, T, Ts, Tzr); -yeccpars2_214(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_224(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_215(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 226, Ss, Stack, T, Ts, Tzr); -yeccpars2_215(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_216(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 224, Ss, Stack, T, Ts, Tzr); -yeccpars2_216(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_216_(Stack), - yeccgoto_record_fields(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_217(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 222, Ss, Stack, T, Ts, Tzr); -yeccpars2_217(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_218(S, '=', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 220, Ss, Stack, T, Ts, Tzr); -yeccpars2_218(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_219(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_219_(Stack), - yeccgoto_record_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_220: see yeccpars2_45 - -yeccpars2_221(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_221_(Stack), - yeccgoto_record_field(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_222: see yeccpars2_45 - -yeccpars2_223(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_223_(Stack), - yeccgoto_record_field(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_224(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 217, Ss, Stack, T, Ts, Tzr); -yeccpars2_224(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 218, Ss, Stack, T, Ts, Tzr); -yeccpars2_224(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_225(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_225_(Stack), - yeccgoto_record_fields(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_226(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_226_(Stack), - yeccgoto_record_tuple(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_227(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_227_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_228: see yeccpars2_45 - -yeccpars2_229(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_229_(Stack), - yeccgoto_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_230(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_230(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_231: see yeccpars2_230 - -yeccpars2_232(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_232_(Stack), - yeccgoto_expr_100(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_233(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_233_(Stack), - yeccgoto_expr_100(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_234: see yeccpars2_230 - -yeccpars2_235(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_235_(Stack), - yeccgoto_expr_150(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_236: see yeccpars2_230 - -yeccpars2_237(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_237_(Stack), - yeccgoto_expr_160(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_238: see yeccpars2_230 - -yeccpars2_239(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_240(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_241(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_242(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_243(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_244(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_245(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_246(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_comp_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_247(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_247_(Stack), - yeccgoto_expr_200(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_248: see yeccpars2_230 - -%% yeccpars2_249: see yeccpars2_230 - -yeccpars2_250(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_251(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_list_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_252(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_253(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_list_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_254(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_255(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_256(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_257(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_258(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_259(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_add_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_260(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 263, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, 'and', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, 'band', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 265, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, 'div', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(S, 'rem', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 267, Ss, Stack, T, Ts, Tzr); -yeccpars2_260(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_260_(Stack), - yeccgoto_expr_400(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_261: see yeccpars2_230 - -yeccpars2_262(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_263(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_264(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_265(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_266(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_267(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_mult_op(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_268(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_268_(Stack), - yeccgoto_expr_500(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_269(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_269_(Stack), - yeccgoto_expr_300(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_270(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_270_(Stack), - yeccgoto_function_call(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_271(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 274, Ss, Stack, T, Ts, Tzr); -yeccpars2_271(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_272: see yeccpars2_181 - -yeccpars2_273(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_273_(Stack), - yeccgoto_expr_800(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_274(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_274_(Stack), - yeccgoto_expr_900(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_275(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 276, Ss, Stack, T, Ts, Tzr); -yeccpars2_275(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_276(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 278, Ss, Stack, T, Ts, Tzr); -yeccpars2_276(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 214, Ss, Stack, T, Ts, Tzr); -yeccpars2_276(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_277(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_277_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_278(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 279, Ss, Stack, T, Ts, Tzr); -yeccpars2_278(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_279(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_279_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_280(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_280_(Stack), - yeccgoto_argument_list(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_281(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_281_(Stack), - yeccgoto_expr_600(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_282(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 283, Ss, Stack, T, Ts, Tzr); -yeccpars2_282(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_283(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 285, Ss, Stack, T, Ts, Tzr); -yeccpars2_283(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 214, Ss, Stack, T, Ts, Tzr); -yeccpars2_283(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_284(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_284_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_285(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 286, Ss, Stack, T, Ts, Tzr); -yeccpars2_285(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_286(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_286_(Stack), - yeccgoto_record_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_287(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 90, Ss, Stack, T, Ts, Tzr); -yeccpars2_287(S, ':-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 290, Ss, Stack, T, Ts, Tzr); -yeccpars2_287(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_288(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_288_(Stack), - yeccgoto_rule_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_289(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_289_(Stack), - yeccgoto_function_clause(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_290: see yeccpars2_45 - -yeccpars2_291(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_291_(Stack), - yeccgoto_rule_body(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_292(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 428, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 68, Ss, Stack, T, Ts, Tzr); -yeccpars2_292(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_293(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 296, Ss, Stack, T, Ts, Tzr); -yeccpars2_293(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 297, Ss, Stack, T, Ts, Tzr); -yeccpars2_293(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_294(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_294_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_295(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 310, Ss, Stack, T, Ts, Tzr); -yeccpars2_295(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_296(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 297, Ss, Stack, T, Ts, Tzr); -yeccpars2_296(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_297(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 298, Ss, Stack, T, Ts, Tzr); -yeccpars2_297(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 299, Ss, Stack, T, Ts, Tzr); -yeccpars2_297(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_spec_fun(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_298(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 304, Ss, Stack, T, Ts, Tzr); -yeccpars2_298(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_299(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 300, Ss, Stack, T, Ts, Tzr); -yeccpars2_299(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_300(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 301, Ss, Stack, T, Ts, Tzr); -yeccpars2_300(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_300_(Stack), - yeccgoto_spec_fun(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_301(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 302, Ss, Stack, T, Ts, Tzr); -yeccpars2_301(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_302(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 303, Ss, Stack, T, Ts, Tzr); -yeccpars2_302(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_303(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_303_(Stack), - yeccgoto_spec_fun(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_304(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 305, Ss, Stack, T, Ts, Tzr); -yeccpars2_304(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_305(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_305_(Stack), - yeccgoto_spec_fun(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_306: see yeccpars2_295 - -yeccpars2_307(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 423, Ss, Stack, T, Ts, Tzr); -yeccpars2_307(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_308(S, ';', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 421, Ss, Stack, T, Ts, Tzr); -yeccpars2_308(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_308_(Stack), - yeccgoto_type_sigs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_309(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 409, Ss, Stack, T, Ts, Tzr); -yeccpars2_309(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_sig(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_310(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 323, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_310(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_cont_310(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 321, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 322, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, '<<', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 324, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, '[', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 325, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 326, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, 'fun', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 327, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, integer, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 328, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 330, Ss, Stack, T, Ts, Tzr); -yeccpars2_cont_310(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_400(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_312(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 263, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, 'and', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, 'band', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 265, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, 'div', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(S, 'rem', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 267, Ss, Stack, T, Ts, Tzr); -yeccpars2_312(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_300(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_313(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 250, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 252, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, '..', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 404, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'bor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 254, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'bsl', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 255, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'bsr', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 256, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'bxor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 257, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'or', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 258, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(S, 'xor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 259, Ss, Stack, T, Ts, Tzr); -yeccpars2_313(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_200(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_314(S, '|', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 401, Ss, Stack, T, Ts, Tzr); -yeccpars2_314(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_top_type_100(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type_500(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_316(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 398, Ss, Stack, T, Ts, Tzr); -yeccpars2_316(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_top_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_318(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 396, Ss, Stack, T, Ts, Tzr); -yeccpars2_318(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_318_(Stack), - yeccgoto_top_types(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_319(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 336, Ss, Stack, T, Ts, Tzr); -yeccpars2_319(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_321(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 384, Ss, Stack, T, Ts, Tzr); -yeccpars2_321(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_322(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_322(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_323(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 380, Ss, Stack, T, Ts, Tzr); -yeccpars2_323(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_324(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 365, Ss, Stack, T, Ts, Tzr); -yeccpars2_324(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 366, Ss, Stack, T, Ts, Tzr); -yeccpars2_324(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_325(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 358, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_325(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_326(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 347, Ss, Stack, T, Ts, Tzr); -yeccpars2_326(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 348, Ss, Stack, T, Ts, Tzr); -yeccpars2_326(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_327(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 337, Ss, Stack, T, Ts, Tzr); -yeccpars2_327(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_328(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_329(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 334, Ss, Stack, T, Ts, Tzr); -yeccpars2_329(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_330(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 332, Ss, Stack, T, Ts, Tzr); -yeccpars2_330(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_331(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 333, Ss, Stack, T, Ts, Tzr); -yeccpars2_331(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_332(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_332_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_333(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_333_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_334(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 336, Ss, Stack, T, Ts, Tzr); -yeccpars2_334(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_335(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_335_(Stack), - yeccgoto_top_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_336(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_337(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 340, Ss, Stack, T, Ts, Tzr); -yeccpars2_337(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 341, Ss, Stack, T, Ts, Tzr); -yeccpars2_337(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_338(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 346, Ss, Stack, T, Ts, Tzr); -yeccpars2_338(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_339(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_fun_type_100(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_340(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 323, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, '...', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 342, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_340(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_341(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_341_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_342(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 343, Ss, Stack, T, Ts, Tzr); -yeccpars2_342(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_343(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 344, Ss, Stack, T, Ts, Tzr); -yeccpars2_343(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_344: see yeccpars2_322 - -yeccpars2_345(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_345_(Stack), - yeccgoto_fun_type_100(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_346(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_346_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_347(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 355, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_347(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_348(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 349, Ss, Stack, T, Ts, Tzr); -yeccpars2_348(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_349(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 350, Ss, Stack, T, Ts, Tzr); -yeccpars2_349(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_350(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 352, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 329, Ss, Stack, T, Ts, Tzr); -yeccpars2_350(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_351(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 353, Ss, Stack, T, Ts, Tzr); -yeccpars2_351(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_352(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_352_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_353(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_353_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_354(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 356, Ss, Stack, T, Ts, Tzr); -yeccpars2_354(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_355(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_355_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_356(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_356_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_357(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 359, Ss, Stack, T, Ts, Tzr); -yeccpars2_357(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 360, Ss, Stack, T, Ts, Tzr); -yeccpars2_357(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_358(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_358_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_359(S, '...', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 361, Ss, Stack, T, Ts, Tzr); -yeccpars2_359(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_360(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_360_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_361(S, ']', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 362, Ss, Stack, T, Ts, Tzr); -yeccpars2_361(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_362(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_362_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_363(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 379, Ss, Stack, T, Ts, Tzr); -yeccpars2_363(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_364(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 372, Ss, Stack, T, Ts, Tzr); -yeccpars2_364(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 373, Ss, Stack, T, Ts, Tzr); -yeccpars2_364(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_365(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_365_(Stack), - yeccgoto_binary_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_366(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 367, Ss, Stack, T, Ts, Tzr); -yeccpars2_366(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_367(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 369, Ss, Stack, T, Ts, Tzr); -yeccpars2_367(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_310(S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccpars2_368(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_368_(Stack), - yeccgoto_bin_base_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_369(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 370, Ss, Stack, T, Ts, Tzr); -yeccpars2_369(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccgoto_type(hd(Ss), Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_370: see yeccpars2_319 - -yeccpars2_371(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_371_(Stack), - yeccgoto_bin_unit_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_372(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 375, Ss, Stack, T, Ts, Tzr); -yeccpars2_372(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_373(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_373_(Stack), - yeccgoto_binary_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_374(S, '>>', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 378, Ss, Stack, T, Ts, Tzr); -yeccpars2_374(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_375(S, ':', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 376, Ss, Stack, T, Ts, Tzr); -yeccpars2_375(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_376(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 377, Ss, Stack, T, Ts, Tzr); -yeccpars2_376(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_377(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 370, Ss, Stack, T, Ts, Tzr); -yeccpars2_377(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_378(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_378_(Stack), - yeccgoto_binary_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_379(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_379_(Stack), - yeccgoto_binary_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_380: see yeccpars2_322 - -yeccpars2_381(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_381_(Stack), - yeccgoto_fun_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_382(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 383, Ss, Stack, T, Ts, Tzr); -yeccpars2_382(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_383(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_383_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_384(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 385, Ss, Stack, T, Ts, Tzr); -yeccpars2_384(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_385(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 388, Ss, Stack, T, Ts, Tzr); -yeccpars2_385(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 389, Ss, Stack, T, Ts, Tzr); -yeccpars2_385(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_386(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 394, Ss, Stack, T, Ts, Tzr); -yeccpars2_386(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_387(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 392, Ss, Stack, T, Ts, Tzr); -yeccpars2_387(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_387_(Stack), - yeccgoto_field_types(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_388(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 390, Ss, Stack, T, Ts, Tzr); -yeccpars2_388(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_389(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_389_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_390: see yeccpars2_322 - -yeccpars2_391(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_391_(Stack), - yeccgoto_field_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_392(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 388, Ss, Stack, T, Ts, Tzr); -yeccpars2_392(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_393(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_393_(Stack), - yeccgoto_field_types(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_394(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_394_(Stack), - yeccgoto_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_395(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_395_(Stack), - yeccgoto_type_500(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_396: see yeccpars2_322 - -yeccpars2_397(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_397_(Stack), - yeccgoto_top_types(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_398(S, '->', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 399, Ss, Stack, T, Ts, Tzr); -yeccpars2_398(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_399: see yeccpars2_322 - -yeccpars2_400(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_400_(Stack), - yeccgoto_fun_type(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_401: see yeccpars2_334 - -yeccpars2_402(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_402_(Stack), - yeccgoto_top_type_100(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_403: see yeccpars2_334 - -%% yeccpars2_404: see yeccpars2_334 - -yeccpars2_405(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 250, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 252, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'bor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 254, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'bsl', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 255, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'bsr', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 256, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'bxor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 257, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'or', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 258, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(S, 'xor', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 259, Ss, Stack, T, Ts, Tzr); -yeccpars2_405(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_405_(Stack), - yeccgoto_type_200(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_406(S, '*', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 262, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, '/', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 263, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, 'and', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 264, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, 'band', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 265, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, 'div', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 266, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(S, 'rem', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 267, Ss, Stack, T, Ts, Tzr); -yeccpars2_406(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_406_(Stack), - yeccgoto_type_300(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_407: see yeccpars2_334 - -yeccpars2_408(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_408_(Stack), - yeccgoto_type_400(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_409(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 412, Ss, Stack, T, Ts, Tzr); -yeccpars2_409(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 413, Ss, Stack, T, Ts, Tzr); -yeccpars2_409(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_410(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_410_(Stack), - yeccgoto_type_sig(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_411(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 419, Ss, Stack, T, Ts, Tzr); -yeccpars2_411(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_411_(Stack), - yeccgoto_type_guards(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_412(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 416, Ss, Stack, T, Ts, Tzr); -yeccpars2_412(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_413(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 414, Ss, Stack, T, Ts, Tzr); -yeccpars2_413(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_414: see yeccpars2_322 - -yeccpars2_415(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_415_(Stack), - yeccgoto_type_guard(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_416: see yeccpars2_322 - -yeccpars2_417(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 418, Ss, Stack, T, Ts, Tzr); -yeccpars2_417(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_418(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_418_(Stack), - yeccgoto_type_guard(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_419: see yeccpars2_409 - -yeccpars2_420(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_420_(Stack), - yeccgoto_type_guards(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_421: see yeccpars2_295 - -yeccpars2_422(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_422_(Stack), - yeccgoto_type_sigs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_423(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_|Nss] = Ss, - NewStack = yeccpars2_423_(Stack), - yeccgoto_type_spec(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_424(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_424_(Stack), - yeccgoto_type_spec(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_425(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_425_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_426(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 450, Ss, Stack, T, Ts, Tzr); -yeccpars2_426(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 432, Ss, Stack, T, Ts, Tzr); -yeccpars2_426(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_426_(Stack), - yeccgoto_attr_val(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_427(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_427_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_428: see yeccpars2_45 - -yeccpars2_429(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 449, Ss, Stack, T, Ts, Tzr); -yeccpars2_429(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_430(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 210, Ss, Stack, T, Ts, Tzr); -yeccpars2_430(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 431, Ss, Stack, T, Ts, Tzr); -yeccpars2_430(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 432, Ss, Stack, T, Ts, Tzr); -yeccpars2_430(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_431(S, '#', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 44, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '(', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 45, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '+', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 47, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 48, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '.', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 49, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 52, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, 'bnot', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 54, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, 'catch', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 56, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, 'not', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 62, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, var, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 67, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, '{', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 436, Ss, Stack, T, Ts, Tzr); -yeccpars2_431(S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_cont_13(S, Cat, Ss, Stack, T, Ts, Tzr). - -%% yeccpars2_432: see yeccpars2_322 - -yeccpars2_433(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_433_(Stack), - yeccgoto_typed_attr_val(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_434(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_434_(Stack), - yeccgoto_typed_attr_val(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_435(S, ')', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 448, Ss, Stack, T, Ts, Tzr); -yeccpars2_435(_, _, _, _, T, _, _) -> - yeccerror(T). - -%% yeccpars2_436: see yeccpars2_68 - -yeccpars2_437(S, '}', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 447, Ss, Stack, T, Ts, Tzr); -yeccpars2_437(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_438(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 444, Ss, Stack, T, Ts, Tzr); -yeccpars2_438(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_438_(Stack), - yeccgoto_typed_exprs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -yeccpars2_439(S, ',', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 440, Ss, Stack, T, Ts, Tzr); -yeccpars2_439(S, '::', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 441, Ss, Stack, T, Ts, Tzr); -yeccpars2_439(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_439_(Stack), - yeccgoto_exprs(hd(Ss), Cat, Ss, NewStack, T, Ts, Tzr). - -%% yeccpars2_440: see yeccpars2_45 - -%% yeccpars2_441: see yeccpars2_322 - -yeccpars2_442(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_442_(Stack), - yeccgoto_typed_expr(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_443(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_443_(Stack), - yeccgoto_typed_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_444: see yeccpars2_45 - -yeccpars2_445(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_445_(Stack), - yeccgoto_typed_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_446(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_446_(Stack), - yeccgoto_typed_exprs(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_447(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_447_(Stack), - yeccgoto_typed_record_fields(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_448(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_448_(Stack), - yeccgoto_attr_val(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_449(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_,_,_|Nss] = Ss, - NewStack = yeccpars2_449_(Stack), - yeccgoto_attribute(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_450: see yeccpars2_431 - -yeccpars2_451(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_451_(Stack), - yeccgoto_attr_val(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_452(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_452_(Stack), - yeccgoto_form(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_453(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_453_(Stack), - yeccgoto_form(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_454(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 456, Ss, Stack, T, Ts, Tzr); -yeccpars2_454(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_455(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_455_(Stack), - yeccgoto_function_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_456: see yeccpars2_10 - -yeccpars2_457(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_457(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_457_(Stack), - yeccpars2_83(458, Cat, [457 | Ss], NewStack, T, Ts, Tzr). - -%% yeccpars2_458: see yeccpars2_83 - -yeccpars2_459(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_|Nss] = Ss, - NewStack = yeccpars2_459_(Stack), - yeccgoto_form(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -yeccpars2_460(S, atom, Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 462, Ss, Stack, T, Ts, Tzr); -yeccpars2_460(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccpars2_461(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - [_,_|Nss] = Ss, - NewStack = yeccpars2_461_(Stack), - yeccgoto_rule_clauses(hd(Nss), Cat, Nss, NewStack, T, Ts, Tzr). - -%% yeccpars2_462: see yeccpars2_10 - -yeccpars2_463(S, 'when', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 84, Ss, Stack, T, Ts, Tzr); -yeccpars2_463(_S, Cat, Ss, Stack, T, Ts, Tzr) -> - NewStack = yeccpars2_463_(Stack), - yeccpars2_464(464, Cat, [463 | Ss], NewStack, T, Ts, Tzr). - -yeccpars2_464(S, ':-', Ss, Stack, T, Ts, Tzr) -> - yeccpars1(S, 290, Ss, Stack, T, Ts, Tzr); -yeccpars2_464(_, _, _, _, T, _, _) -> - yeccerror(T). - -yeccgoto_add_op(33, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(249, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_add_op(313, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(403, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_add_op(405, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(403, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_argument_list(10=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(29=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_270(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_151(151, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(161, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_151(151, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(456=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_argument_list(462=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_12(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_atomic(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_atomic(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_43(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_attr_val(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_427(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_attribute(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_8(8, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bin_base_type(324, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_364(364, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bin_element(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_186(186, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bin_element(188, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_186(186, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bin_elements(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_185(185, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bin_elements(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_189(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bin_unit_type(324, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_363(363, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bin_unit_type(372, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_374(374, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_184(184, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_133(133, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_133(133, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_133(133, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_133(133, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_42(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary_comprehension(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_comprehension(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_41(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_binary_type(310=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(319=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(322=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(325=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(330=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(334=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(340=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(347=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(350=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(367=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(370=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(401=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(403=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(404=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(407=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(416=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_binary_type(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_320(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bit_expr(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_183(183, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bit_expr(188, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_183(183, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bit_size_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_197(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bit_type(199, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_201(201, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bit_type(205, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_201(201, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_bit_type_list(199=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_200(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_bit_type_list(205=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_206(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_case_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_case_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_40(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause_args(10, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_11(11, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_args(456, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_457(457, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_args(462, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_463(463, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause_body(83=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_89(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(99=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_100(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(103=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_104(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(105=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_106(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(118, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_119(119, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(123, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_124(124, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(144=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_145(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(159=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_160(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(287=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_289(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_body(458=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_289(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_clause_guard(11, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_287(287, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(77, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(83, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(94, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(105, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(98, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(99, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(102, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(103, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(151, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(159, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(457, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(458, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_clause_guard(463, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_464(464, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_comp_op(34, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(238, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cr_clause(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(79, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clause(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(79, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clause(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(79, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clause(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_79(79, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_cr_clauses(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_116(116, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clauses(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_78(78, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clauses(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_81(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_cr_clauses(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_167(167, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_209(209, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_171(171, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_165(165, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_164(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_94(94, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_98(98, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_102(102, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_94(94, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(118, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(123, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_128(128, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(132, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_135(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_137(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(132, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_77(77, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_179(179, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_177(177, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(132, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_221(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_223(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_132(132, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_426(426, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_430(430, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_439(439, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_439(439, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_439(439, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_39(39, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_100(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_233(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_232(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_100(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_38(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_150(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_235(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_150(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_37(37, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_160(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_237(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_160(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_36(36, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_200(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_200(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_35(35, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_300(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_247(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_269(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_300(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_34(34, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_400(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_400(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_33(33, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_500(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_260(260, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_500(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_32(32, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_600(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_268(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_600(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_31(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_700(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_281(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_700(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_30(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_800(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(20, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_800(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_29(29, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_900(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(20, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_900(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_28(28, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_expr_max(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(20, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_182(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_207(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_182(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_196(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_273(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_expr_max(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_27(27, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_exprs(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_26(26, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_169(169, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(86, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_72(72, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_113(113, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(86, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(86, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_91(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_111(111, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_86(86, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_229(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_435(435, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_69(69, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_229(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_446(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_exprs(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_451(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_field_type(385, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_387(387, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_field_type(392, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_387(387, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_field_types(385, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_386(386, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_field_types(392=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_393(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_form(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_7(7, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_clause(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_150(150, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_clause(161, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_150(150, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_clauses(59, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_149(149, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_clauses(161=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_162(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_25(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_type(295, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_309(309, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_type(306, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_309(309, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_type(337=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_339(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_fun_type(421, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_309(309, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_fun_type_100(337, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_338(338, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_6(6, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_call(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_call(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_24(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_clause(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_clause(454, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_5(5, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_function_clauses(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_4(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_function_clauses(454=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_455(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_guard(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(144, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_guard(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_85(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_guard(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_88(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_guard(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_83(144, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_if_clause(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_143(143, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_clause(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_143(143, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_if_clauses(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_142(142, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_clauses(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_147(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_if_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_if_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_23(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_lc_expr(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(131, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_expr(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(131, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_expr(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(131, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_expr(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_131(131, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_lc_exprs(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_130(130, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_exprs(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_139(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_exprs(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_192(192, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_lc_exprs(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_291(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_list(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_22(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_list_comprehension(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(63, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_126(126, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_list_comprehension(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_21(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_list_op(33, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(248, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_mult_op(32, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(261, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_mult_op(260, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_230(261, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_mult_op(312, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(407, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_mult_op(406, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_334(407, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_opt_bit_size_expr(183, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_194(194, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_opt_bit_type_list(194=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_198(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_prefix_op(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(50, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(181, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(188, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_181(181, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(334, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(344, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(380, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(390, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(399, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(401, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(403, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(404, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(407, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(414, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(432, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(441, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_319(319, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_prefix_op(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_20(20, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_query_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_query_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_19(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_receive_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_receive_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_18(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_record_expr(13, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(20, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(45, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(51, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(53, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(55, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(56, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(60, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(64, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(66, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(68, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(74, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(76, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(80, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(84, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(87, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(90, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(97, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(101, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(109, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(117, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(121, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(127, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(129, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(134, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(136, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(138, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(146, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(166, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(174, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(176, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(191, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(220, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(222, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(228, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(230, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(231, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(234, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(236, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(238, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(248, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(249, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(261, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(290, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(292, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(431, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_expr(450, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_17(17, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_record_field(214, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_216(216, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_field(224, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_216(216, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_record_fields(214, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_215(215, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_fields(224=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_225(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_record_tuple(211=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_212(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_tuple(276=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_277(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_record_tuple(283=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_284(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_rule(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_3(3, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_rule_body(287=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_288(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_rule_body(464=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_288(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_rule_clause(0, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_2(2, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_rule_clause(460, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_2(2, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_rule_clauses(0=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_1(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_rule_clauses(460=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_461(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_spec_fun(293, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_295(295, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_spec_fun(296, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_295(306, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_strings(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(65=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_115(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_strings(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_16(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tail(171=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_173(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tail(179=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_180(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_top_type(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_382(382, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_357(357, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_345(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_381(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_391(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_400(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_415(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_318(318, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_433(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_442(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_top_type_100(310=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(322=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(325=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(330=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(334=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_335(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(340=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(347=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(350=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(401=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_402(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(416=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_type_100(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_317(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_top_types(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_316(316, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_331(331, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_316(316, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_354(354, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_351(351, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_397(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_top_types(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_417(417, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_catch(72=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_73(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_catch(78=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_82(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_clause(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_93(93, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_clause(107, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_93(93, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_clauses(75, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_92(92, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_clauses(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_108(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_try_expr(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_try_expr(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_15(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_tuple(13=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(20=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(45=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(50=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(51=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(53=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(55=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(56=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(60=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(64=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(66=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(68=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(74=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(75=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(76=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(80=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(84=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(87=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(90=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(97=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(101=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(107=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(109=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(117=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(121=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(127=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(129=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(134=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(136=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(138=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(146=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(166=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(174=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(176=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(181=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(188=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(191=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(195=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(220=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(222=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(228=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(230=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(231=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(234=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(236=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(238=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(248=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(249=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(261=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(272=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(290=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(428=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(436=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_tuple(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_14(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type(310=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(319=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_395(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(322=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(325=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(330=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(334=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(340=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(347=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(350=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(367=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_368(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(370=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_371(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(401=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(403=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(404=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(407=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(416=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_315(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_200(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(334, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(344, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(380, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(390, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(399, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(401, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(414, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(432, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_200(441, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_314(314, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_300(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(334, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(344, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(380, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(390, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(399, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(401, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(404, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_405(405, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(414, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(432, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_300(441, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_313(313, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_400(310, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(322, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(325, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(330, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(334, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(340, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(344, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(347, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(350, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(380, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(390, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(396, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(399, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(401, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(403, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_406(406, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(404, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(414, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(416, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(432, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_400(441, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_312(312, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_500(310=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(322=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(325=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(330=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(334=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(340=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(344=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(347=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(350=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(380=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(390=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(396=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(399=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(401=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(403=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(404=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(407=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_408(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(414=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(416=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(432=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_500(441=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_311(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_guard(409, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_411(411, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_guard(419, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_411(411, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_guards(409=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_410(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_guards(419=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_420(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_sig(295, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_308(308, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_sig(306, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_308(308, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_sig(421, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_308(308, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_sigs(295=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_424(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_sigs(306, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_307(307, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_type_sigs(421=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_422(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_type_spec(293=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_294(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_typed_attr_val(292=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_425(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_attr_val(428, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_429(429, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_typed_expr(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_438(438, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_expr(440, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_438(438, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_expr(444, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_438(438, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_typed_exprs(436, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_437(437, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_exprs(440=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_443(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_exprs(444=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_445(_S, Cat, Ss, Stack, T, Ts, Tzr). - -yeccgoto_typed_record_fields(431=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_434(_S, Cat, Ss, Stack, T, Ts, Tzr); -yeccgoto_typed_record_fields(450=_S, Cat, Ss, Stack, T, Ts, Tzr) -> - yeccpars2_434(_S, Cat, Ss, Stack, T, Ts, Tzr). - --compile({inline,yeccpars2_1_/1}). --file("erl_parse.yrl", 487). -yeccpars2_1_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - build_rule ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_2_/1}). --file("erl_parse.yrl", 489). -yeccpars2_2_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_4_/1}). --file("erl_parse.yrl", 197). -yeccpars2_4_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - build_function ( __1 ) - end | __Stack]. - --compile({inline,yeccpars2_5_/1}). --file("erl_parse.yrl", 199). -yeccpars2_5_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_11_/1}). --file("erl_parse.yrl", 209). -yeccpars2_11_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_12_/1}). --file("erl_parse.yrl", 206). -yeccpars2_12_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - element ( 1 , __1 ) - end | __Stack]. - --compile({inline,yeccpars2_39_/1}). --file("erl_parse.yrl", 438). -yeccpars2_39_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8235). --compile({inline,yeccpars2_46_/1}). --file("erl_parse.yrl", 434). -yeccpars2_46_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { [ ] , ? line ( __1 ) } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8244). --compile({inline,yeccpars2_70_/1}). --file("erl_parse.yrl", 325). -yeccpars2_70_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { tuple , ? line ( __1 ) , [ ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8253). --compile({inline,yeccpars2_71_/1}). --file("erl_parse.yrl", 326). -yeccpars2_71_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { tuple , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8262). --compile({inline,yeccpars2_73_/1}). --file("erl_parse.yrl", 408). -yeccpars2_73_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_try ( ? line ( __1 ) , __2 , [ ] , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_77_/1}). --file("erl_parse.yrl", 209). -yeccpars2_77_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_79_/1}). --file("erl_parse.yrl", 377). -yeccpars2_79_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_81_/1}). --file("erl_parse.yrl", 378). -yeccpars2_81_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8294). --compile({inline,yeccpars2_82_/1}). --file("erl_parse.yrl", 406). -yeccpars2_82_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - build_try ( ? line ( __1 ) , __2 , __4 , __5 ) - end | __Stack]. - --compile({inline,yeccpars2_85_/1}). --file("erl_parse.yrl", 208). -yeccpars2_85_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_86_/1}). --file("erl_parse.yrl", 441). -yeccpars2_86_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_88_/1}). --file("erl_parse.yrl", 442). -yeccpars2_88_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8327). --compile({inline,yeccpars2_89_/1}). --file("erl_parse.yrl", 381). -yeccpars2_89_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { clause , ? line ( __1 ) , [ __1 ] , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_91_/1}). --file("erl_parse.yrl", 211). -yeccpars2_91_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_93_/1}). --file("erl_parse.yrl", 417). -yeccpars2_93_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_94_/1}). --file("erl_parse.yrl", 209). -yeccpars2_94_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_98_/1}). --file("erl_parse.yrl", 209). -yeccpars2_98_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8366). --compile({inline,yeccpars2_100_/1}). --file("erl_parse.yrl", 427). -yeccpars2_100_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - L = ? line ( __1 ) , - { clause , L , [ { tuple , L , [ __1 , __3 , { var , L , '_' } ] } ] , __4 , __5 } - end | __Stack]. - --compile({inline,yeccpars2_102_/1}). --file("erl_parse.yrl", 209). -yeccpars2_102_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8383). --compile({inline,yeccpars2_104_/1}). --file("erl_parse.yrl", 424). -yeccpars2_104_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - L = ? line ( __1 ) , - { clause , L , [ { tuple , L , [ __1 , __3 , { var , L , '_' } ] } ] , __4 , __5 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8393). --compile({inline,yeccpars2_106_/1}). --file("erl_parse.yrl", 421). -yeccpars2_106_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - L = ? line ( __1 ) , - { clause , L , [ { tuple , L , [ { atom , L , throw } , __1 , { var , L , '_' } ] } ] , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_108_/1}). --file("erl_parse.yrl", 418). -yeccpars2_108_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_110_/1}). --file("erl_parse.yrl", 411). -yeccpars2_110_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , [ ] } - end | __Stack]. - --compile({inline,yeccpars2_112_/1}). --file("erl_parse.yrl", 413). -yeccpars2_112_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , __4 } - end | __Stack]. - --compile({inline,yeccpars2_114_/1}). --file("erl_parse.yrl", 415). -yeccpars2_114_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { [ ] , __2 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8435). --compile({inline,yeccpars2_115_/1}). --file("erl_parse.yrl", 452). -yeccpars2_115_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { string , ? line ( __1 ) , element ( 3 , __1 ) ++ element ( 3 , __2 ) } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8444). --compile({inline,yeccpars2_120_/1}). --file("erl_parse.yrl", 386). -yeccpars2_120_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'receive' , ? line ( __1 ) , [ ] , __3 , __4 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8453). --compile({inline,yeccpars2_122_/1}). --file("erl_parse.yrl", 384). -yeccpars2_122_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'receive' , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8462). --compile({inline,yeccpars2_125_/1}). --file("erl_parse.yrl", 388). -yeccpars2_125_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'receive' , ? line ( __1 ) , __2 , __4 , __5 } - end | __Stack]. - --compile({inline,yeccpars2_131_/1}). --file("erl_parse.yrl", 318). -yeccpars2_131_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8479). --compile({inline,yeccpars2_135_/1}). --file("erl_parse.yrl", 323). -yeccpars2_135_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { b_generate , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8488). --compile({inline,yeccpars2_137_/1}). --file("erl_parse.yrl", 322). -yeccpars2_137_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { generate , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_139_/1}). --file("erl_parse.yrl", 319). -yeccpars2_139_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8505). --compile({inline,yeccpars2_140_/1}). --file("erl_parse.yrl", 315). -yeccpars2_140_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { lc , ? line ( __1 ) , __2 , __4 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8514). --compile({inline,yeccpars2_141_/1}). --file("erl_parse.yrl", 431). -yeccpars2_141_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'query' , ? line ( __1 ) , __2 } - end | __Stack]. - --compile({inline,yeccpars2_143_/1}). --file("erl_parse.yrl", 367). -yeccpars2_143_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8531). --compile({inline,yeccpars2_145_/1}). --file("erl_parse.yrl", 371). -yeccpars2_145_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { clause , ? line ( hd ( hd ( __1 ) ) ) , [ ] , __1 , __2 } - end | __Stack]. - --compile({inline,yeccpars2_147_/1}). --file("erl_parse.yrl", 368). -yeccpars2_147_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8548). --compile({inline,yeccpars2_148_/1}). --file("erl_parse.yrl", 365). -yeccpars2_148_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'if' , ? line ( __1 ) , __2 } - end | __Stack]. - --compile({inline,yeccpars2_150_/1}). --file("erl_parse.yrl", 398). -yeccpars2_150_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_151_/1}). --file("erl_parse.yrl", 209). -yeccpars2_151_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8572). --compile({inline,yeccpars2_157_/1}). --file("erl_parse.yrl", 394). -yeccpars2_157_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'fun' , ? line ( __1 ) , { function , element ( 3 , __2 ) , element ( 3 , __4 ) , element ( 3 , __6 ) } } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8581). --compile({inline,yeccpars2_158_/1}). --file("erl_parse.yrl", 392). -yeccpars2_158_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'fun' , ? line ( __1 ) , { function , element ( 3 , __2 ) , element ( 3 , __4 ) } } - end | __Stack]. - --compile({inline,yeccpars2_160_/1}). --file("erl_parse.yrl", 402). -yeccpars2_160_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { Args , Pos } = __1 , - { clause , Pos , 'fun' , Args , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_162_/1}). --file("erl_parse.yrl", 399). -yeccpars2_162_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8607). --compile({inline,yeccpars2_163_/1}). --file("erl_parse.yrl", 396). -yeccpars2_163_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_fun ( ? line ( __1 ) , __2 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8616). --compile({inline,yeccpars2_164_/1}). --file("erl_parse.yrl", 214). -yeccpars2_164_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { 'catch' , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8625). --compile({inline,yeccpars2_168_/1}). --file("erl_parse.yrl", 375). -yeccpars2_168_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { 'case' , ? line ( __1 ) , __2 , __4 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8634). --compile({inline,yeccpars2_170_/1}). --file("erl_parse.yrl", 270). -yeccpars2_170_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { block , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8643). --compile({inline,yeccpars2_172_/1}). --file("erl_parse.yrl", 279). -yeccpars2_172_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { nil , ? line ( __1 ) } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8652). --compile({inline,yeccpars2_173_/1}). --file("erl_parse.yrl", 280). -yeccpars2_173_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { cons , ? line ( __1 ) , __2 , __3 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8661). --compile({inline,yeccpars2_175_/1}). --file("erl_parse.yrl", 282). -yeccpars2_175_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - { nil , ? line ( __1 ) } - end | __Stack]. - --compile({inline,yeccpars2_178_/1}). --file("erl_parse.yrl", 283). -yeccpars2_178_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8678). --compile({inline,yeccpars2_180_/1}). --file("erl_parse.yrl", 284). -yeccpars2_180_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { cons , ? line ( __2 ) , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_183_/1}). --file("erl_parse.yrl", 300). -yeccpars2_183_(__Stack0) -> - [begin - default - end | __Stack0]. - --compile({inline,yeccpars2_186_/1}). --file("erl_parse.yrl", 290). -yeccpars2_186_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8702). --compile({inline,yeccpars2_187_/1}). --file("erl_parse.yrl", 287). -yeccpars2_187_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { bin , ? line ( __1 ) , [ ] } - end | __Stack]. - --compile({inline,yeccpars2_189_/1}). --file("erl_parse.yrl", 291). -yeccpars2_189_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8719). --compile({inline,yeccpars2_190_/1}). --file("erl_parse.yrl", 288). -yeccpars2_190_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { bin , ? line ( __1 ) , __2 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8728). --compile({inline,yeccpars2_193_/1}). --file("erl_parse.yrl", 317). -yeccpars2_193_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { bc , ? line ( __1 ) , __2 , __4 } - end | __Stack]. - --compile({inline,yeccpars2_194_/1}). --file("erl_parse.yrl", 303). -yeccpars2_194_(__Stack0) -> - [begin - default - end | __Stack0]. - --compile({inline,yeccpars2_197_/1}). --file("erl_parse.yrl", 299). -yeccpars2_197_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8752). --compile({inline,yeccpars2_198_/1}). --file("erl_parse.yrl", 294). -yeccpars2_198_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { bin_element , ? line ( __1 ) , __1 , __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_200_/1}). --file("erl_parse.yrl", 302). -yeccpars2_200_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_201_/1}). --file("erl_parse.yrl", 306). -yeccpars2_201_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_202_/1}). --file("erl_parse.yrl", 308). -yeccpars2_202_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - element ( 3 , __1 ) - end | __Stack]. - --compile({inline,yeccpars2_204_/1}). --file("erl_parse.yrl", 309). -yeccpars2_204_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { element ( 3 , __1 ) , element ( 3 , __3 ) } - end | __Stack]. - --compile({inline,yeccpars2_206_/1}). --file("erl_parse.yrl", 305). -yeccpars2_206_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8801). --compile({inline,yeccpars2_207_/1}). --file("erl_parse.yrl", 296). -yeccpars2_207_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - ? mkop1 ( __1 , __2 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8810). --compile({inline,yeccpars2_208_/1}). --file("erl_parse.yrl", 256). -yeccpars2_208_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __1 ) , { atom , ? line ( __1 ) , '' } , __2 } - end | __Stack]. - --compile({inline,yeccpars2_210_/1}). --file("erl_parse.yrl", 269). -yeccpars2_210_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8827). --compile({inline,yeccpars2_212_/1}). --file("erl_parse.yrl", 340). -yeccpars2_212_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { record , ? line ( __1 ) , element ( 3 , __2 ) , __3 } - end | __Stack]. - --compile({inline,yeccpars2_216_/1}). --file("erl_parse.yrl", 353). -yeccpars2_216_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_219_/1}). --file("erl_parse.yrl", 350). -yeccpars2_219_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - [ ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8852). --compile({inline,yeccpars2_221_/1}). --file("erl_parse.yrl", 356). -yeccpars2_221_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __1 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8861). --compile({inline,yeccpars2_223_/1}). --file("erl_parse.yrl", 357). -yeccpars2_223_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __1 ) , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_225_/1}). --file("erl_parse.yrl", 354). -yeccpars2_225_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_226_/1}). --file("erl_parse.yrl", 351). -yeccpars2_226_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8886). --compile({inline,yeccpars2_227_/1}). --file("erl_parse.yrl", 338). -yeccpars2_227_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_index , ? line ( __1 ) , element ( 3 , __2 ) , __4 } - end | __Stack]. - --compile({inline,yeccpars2_229_/1}). --file("erl_parse.yrl", 439). -yeccpars2_229_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8903). --compile({inline,yeccpars2_232_/1}). --file("erl_parse.yrl", 217). -yeccpars2_232_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { match , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8912). --compile({inline,yeccpars2_233_/1}). --file("erl_parse.yrl", 218). -yeccpars2_233_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8921). --compile({inline,yeccpars2_235_/1}). --file("erl_parse.yrl", 221). -yeccpars2_235_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8930). --compile({inline,yeccpars2_237_/1}). --file("erl_parse.yrl", 224). -yeccpars2_237_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8939). --compile({inline,yeccpars2_247_/1}). --file("erl_parse.yrl", 228). -yeccpars2_247_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8948). --compile({inline,yeccpars2_260_/1}). --file("erl_parse.yrl", 236). -yeccpars2_260_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8957). --compile({inline,yeccpars2_268_/1}). --file("erl_parse.yrl", 240). -yeccpars2_268_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8966). --compile({inline,yeccpars2_269_/1}). --file("erl_parse.yrl", 232). -yeccpars2_269_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( __1 , __2 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8975). --compile({inline,yeccpars2_270_/1}). --file("erl_parse.yrl", 362). -yeccpars2_270_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { call , ? line ( __1 ) , __1 , element ( 1 , __2 ) } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8984). --compile({inline,yeccpars2_273_/1}). --file("erl_parse.yrl", 252). -yeccpars2_273_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { remote , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 8993). --compile({inline,yeccpars2_274_/1}). --file("erl_parse.yrl", 258). -yeccpars2_274_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __2 ) , __1 , __3 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9002). --compile({inline,yeccpars2_277_/1}). --file("erl_parse.yrl", 344). -yeccpars2_277_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record , ? line ( __2 ) , __1 , element ( 3 , __3 ) , __4 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9011). --compile({inline,yeccpars2_279_/1}). --file("erl_parse.yrl", 342). -yeccpars2_279_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __2 ) , __1 , element ( 3 , __3 ) , __5 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9020). --compile({inline,yeccpars2_280_/1}). --file("erl_parse.yrl", 435). -yeccpars2_280_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , ? line ( __1 ) } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9029). --compile({inline,yeccpars2_281_/1}). --file("erl_parse.yrl", 244). -yeccpars2_281_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - ? mkop1 ( __1 , __2 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9038). --compile({inline,yeccpars2_284_/1}). --file("erl_parse.yrl", 348). -yeccpars2_284_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record , ? line ( __2 ) , __1 , element ( 3 , __3 ) , __4 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9047). --compile({inline,yeccpars2_286_/1}). --file("erl_parse.yrl", 346). -yeccpars2_286_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { record_field , ? line ( __2 ) , __1 , element ( 3 , __3 ) , __5 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9056). --compile({inline,yeccpars2_288_/1}). --file("erl_parse.yrl", 493). -yeccpars2_288_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { clause , ? line ( __1 ) , element ( 3 , __1 ) , __2 , __3 , __4 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9065). --compile({inline,yeccpars2_289_/1}). --file("erl_parse.yrl", 203). -yeccpars2_289_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { clause , ? line ( __1 ) , element ( 3 , __1 ) , __2 , __3 , __4 } - end | __Stack]. - --compile({inline,yeccpars2_291_/1}). --file("erl_parse.yrl", 495). -yeccpars2_291_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __2 - end | __Stack]. - --compile({inline,yeccpars2_294_/1}). --file("erl_parse.yrl", 75). -yeccpars2_294_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_type_spec ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_300_/1}). --file("erl_parse.yrl", 81). -yeccpars2_300_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_303_/1}). --file("erl_parse.yrl", 85). -yeccpars2_303_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __3 , __5 } - end | __Stack]. - --compile({inline,yeccpars2_305_/1}). --file("erl_parse.yrl", 84). -yeccpars2_305_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_308_/1}). --file("erl_parse.yrl", 99). -yeccpars2_308_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_318_/1}). --file("erl_parse.yrl", 113). -yeccpars2_318_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9130). --compile({inline,yeccpars2_332_/1}). --file("erl_parse.yrl", 152). -yeccpars2_332_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , tuple , [ ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9139). --compile({inline,yeccpars2_333_/1}). --file("erl_parse.yrl", 153). -yeccpars2_333_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , tuple , __2 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9148). --compile({inline,yeccpars2_335_/1}). --file("erl_parse.yrl", 116). -yeccpars2_335_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { ann_type , ? line ( __1 ) , [ __1 , __3 ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9157). --compile({inline,yeccpars2_341_/1}). --file("erl_parse.yrl", 159). -yeccpars2_341_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , 'fun' , [ ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9166). --compile({inline,yeccpars2_345_/1}). --file("erl_parse.yrl", 163). -yeccpars2_345_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , 'fun' , - [ { type , ? line ( __1 ) , any } , __5 ] } - end | __Stack]. - --compile({inline,yeccpars2_346_/1}). --file("erl_parse.yrl", 160). -yeccpars2_346_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - __3 - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9184). --compile({inline,yeccpars2_352_/1}). --file("erl_parse.yrl", 144). -yeccpars2_352_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { remote_type , ? line ( __1 ) , - [ __1 , __3 , [ ] ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9194). --compile({inline,yeccpars2_353_/1}). --file("erl_parse.yrl", 146). -yeccpars2_353_(__Stack0) -> - [__6,__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { remote_type , ? line ( __1 ) , - [ __1 , __3 , __5 ] } - end | __Stack]. - --compile({inline,yeccpars2_355_/1}). --file("erl_parse.yrl", 141). -yeccpars2_355_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_gen_type ( __1 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9212). --compile({inline,yeccpars2_356_/1}). --file("erl_parse.yrl", 142). -yeccpars2_356_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , - normalise ( __1 ) , __3 } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9222). --compile({inline,yeccpars2_358_/1}). --file("erl_parse.yrl", 148). -yeccpars2_358_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , nil , [ ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9231). --compile({inline,yeccpars2_360_/1}). --file("erl_parse.yrl", 149). -yeccpars2_360_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , list , [ __2 ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9240). --compile({inline,yeccpars2_362_/1}). --file("erl_parse.yrl", 150). -yeccpars2_362_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , - nonempty_list , [ __2 ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9250). --compile({inline,yeccpars2_365_/1}). --file("erl_parse.yrl", 179). -yeccpars2_365_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , binary , - [ abstract ( 0 , ? line ( __1 ) ) , - abstract ( 0 , ? line ( __1 ) ) ] } - end | __Stack]. - --compile({inline,yeccpars2_368_/1}). --file("erl_parse.yrl", 189). -yeccpars2_368_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_bin_type ( [ __1 ] , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_371_/1}). --file("erl_parse.yrl", 191). -yeccpars2_371_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - build_bin_type ( [ __1 , __3 ] , __5 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9277). --compile({inline,yeccpars2_373_/1}). --file("erl_parse.yrl", 182). -yeccpars2_373_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , binary , - [ __2 , abstract ( 0 , ? line ( __1 ) ) ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9287). --compile({inline,yeccpars2_378_/1}). --file("erl_parse.yrl", 187). -yeccpars2_378_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , binary , [ __2 , __4 ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9296). --compile({inline,yeccpars2_379_/1}). --file("erl_parse.yrl", 184). -yeccpars2_379_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , binary , - [ abstract ( 0 , ? line ( __1 ) ) , __2 ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9306). --compile({inline,yeccpars2_381_/1}). --file("erl_parse.yrl", 167). -yeccpars2_381_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , 'fun' , - [ { type , ? line ( __1 ) , product , [ ] } , __4 ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9316). --compile({inline,yeccpars2_383_/1}). --file("erl_parse.yrl", 138). -yeccpars2_383_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { paren_type , ? line ( __2 ) , [ __2 ] } - end | __Stack]. - --compile({inline,yeccpars2_387_/1}). --file("erl_parse.yrl", 173). -yeccpars2_387_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9333). --compile({inline,yeccpars2_389_/1}). --file("erl_parse.yrl", 154). -yeccpars2_389_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , record , [ __2 ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9342). --compile({inline,yeccpars2_391_/1}). --file("erl_parse.yrl", 176). -yeccpars2_391_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , field_type , - [ __1 , __3 ] } - end | __Stack]. - --compile({inline,yeccpars2_393_/1}). --file("erl_parse.yrl", 174). -yeccpars2_393_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9360). --compile({inline,yeccpars2_394_/1}). --file("erl_parse.yrl", 155). -yeccpars2_394_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , - record , [ __2 | __4 ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9370). --compile({inline,yeccpars2_395_/1}). --file("erl_parse.yrl", 135). -yeccpars2_395_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - ? mkop1 ( __1 , skip_paren ( __2 ) ) - end | __Stack]. - --compile({inline,yeccpars2_397_/1}). --file("erl_parse.yrl", 114). -yeccpars2_397_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9387). --compile({inline,yeccpars2_400_/1}). --file("erl_parse.yrl", 170). -yeccpars2_400_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , 'fun' , - [ { type , ? line ( __1 ) , product , __2 } , __5 ] } - end | __Stack]. - --compile({inline,yeccpars2_402_/1}). --file("erl_parse.yrl", 120). -yeccpars2_402_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - lift_unions ( __1 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9405). --compile({inline,yeccpars2_405_/1}). --file("erl_parse.yrl", 122). -yeccpars2_405_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , range , - [ skip_paren ( __1 ) , - skip_paren ( __3 ) ] } - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9416). --compile({inline,yeccpars2_406_/1}). --file("erl_parse.yrl", 127). -yeccpars2_406_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( skip_paren ( __1 ) , - __2 , skip_paren ( __3 ) ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9426). --compile({inline,yeccpars2_408_/1}). --file("erl_parse.yrl", 131). -yeccpars2_408_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - ? mkop2 ( skip_paren ( __1 ) , - __2 , skip_paren ( __3 ) ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9436). --compile({inline,yeccpars2_410_/1}). --file("erl_parse.yrl", 103). -yeccpars2_410_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , bounded_fun , - [ __1 , __3 ] } - end | __Stack]. - --compile({inline,yeccpars2_411_/1}). --file("erl_parse.yrl", 106). -yeccpars2_411_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_415_/1}). --file("erl_parse.yrl", 111). -yeccpars2_415_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_def ( __1 , __3 ) - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9462). --compile({inline,yeccpars2_418_/1}). --file("erl_parse.yrl", 109). -yeccpars2_418_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { type , ? line ( __1 ) , constraint , - [ __1 , __3 ] } - end | __Stack]. - --compile({inline,yeccpars2_420_/1}). --file("erl_parse.yrl", 107). -yeccpars2_420_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_422_/1}). --file("erl_parse.yrl", 100). -yeccpars2_422_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_423_/1}). --file("erl_parse.yrl", 78). -yeccpars2_423_(__Stack0) -> - [__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - { __2 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_424_/1}). --file("erl_parse.yrl", 77). -yeccpars2_424_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - { __1 , __2 } - end | __Stack]. - --compile({inline,yeccpars2_425_/1}). --file("erl_parse.yrl", 73). -yeccpars2_425_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_typed_attribute ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_426_/1}). --file("erl_parse.yrl", 193). -yeccpars2_426_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_427_/1}). --file("erl_parse.yrl", 72). -yeccpars2_427_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - build_attribute ( __2 , __3 ) - end | __Stack]. - --compile({inline,yeccpars2_433_/1}). --file("erl_parse.yrl", 88). -yeccpars2_433_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { type_def , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_434_/1}). --file("erl_parse.yrl", 87). -yeccpars2_434_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { typed_record , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_438_/1}). --file("erl_parse.yrl", 92). -yeccpars2_438_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_439_/1}). --file("erl_parse.yrl", 438). -yeccpars2_439_(__Stack0) -> - [__1 | __Stack] = __Stack0, - [begin - [ __1 ] - end | __Stack]. - --compile({inline,yeccpars2_442_/1}). --file("erl_parse.yrl", 97). -yeccpars2_442_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { typed , __1 , __3 } - end | __Stack]. - --compile({inline,yeccpars2_443_/1}). --file("erl_parse.yrl", 94). -yeccpars2_443_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_445_/1}). --file("erl_parse.yrl", 93). -yeccpars2_445_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_446_/1}). --file("erl_parse.yrl", 95). -yeccpars2_446_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --file("/ldisk/bjorn/otp/bootstrap/lib/stdlib/egen/erl_parse.erl", 9592). --compile({inline,yeccpars2_447_/1}). --file("erl_parse.yrl", 90). -yeccpars2_447_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - { tuple , ? line ( __1 ) , __2 } - end | __Stack]. - --compile({inline,yeccpars2_448_/1}). --file("erl_parse.yrl", 195). -yeccpars2_448_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __2 | __4 ] - end | __Stack]. - --compile({inline,yeccpars2_449_/1}). --file("erl_parse.yrl", 74). -yeccpars2_449_(__Stack0) -> - [__5,__4,__3,__2,__1 | __Stack] = __Stack0, - [begin - build_typed_attribute ( __2 , __4 ) - end | __Stack]. - --compile({inline,yeccpars2_451_/1}). --file("erl_parse.yrl", 194). -yeccpars2_451_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_452_/1}). --file("erl_parse.yrl", 68). -yeccpars2_452_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __1 - end | __Stack]. - --compile({inline,yeccpars2_453_/1}). --file("erl_parse.yrl", 69). -yeccpars2_453_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __1 - end | __Stack]. - --compile({inline,yeccpars2_455_/1}). --file("erl_parse.yrl", 200). -yeccpars2_455_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_457_/1}). --file("erl_parse.yrl", 209). -yeccpars2_457_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - --compile({inline,yeccpars2_459_/1}). --file("erl_parse.yrl", 70). -yeccpars2_459_(__Stack0) -> - [__2,__1 | __Stack] = __Stack0, - [begin - __1 - end | __Stack]. - --compile({inline,yeccpars2_461_/1}). --file("erl_parse.yrl", 490). -yeccpars2_461_(__Stack0) -> - [__3,__2,__1 | __Stack] = __Stack0, - [begin - [ __1 | __3 ] - end | __Stack]. - --compile({inline,yeccpars2_463_/1}). --file("erl_parse.yrl", 209). -yeccpars2_463_(__Stack0) -> - [begin - [ ] - end | __Stack0]. - - --file("erl_parse.yrl", 1094). diff --git a/erts/aclocal.m4 b/erts/aclocal.m4 index 3ebea66d30..27f643921e 100644 --- a/erts/aclocal.m4 +++ b/erts/aclocal.m4 @@ -125,6 +125,9 @@ AC_DEFUN(LM_FIND_EMU_CC, ac_cv_prog_emu_cc, [ AC_TRY_COMPILE([],[ +#ifdef __llvm__ +#error "llvm is currently unable to compile beam_emu.c" +#endif __label__ lbl1; __label__ lbl2; int x = magic(); @@ -140,7 +143,7 @@ lbl2: ],ac_cv_prog_emu_cc=$CC,ac_cv_prog_emu_cc=no) if test $ac_cv_prog_emu_cc = no; then - for ac_progname in emu_cc.sh gcc; do + for ac_progname in emu_cc.sh gcc-4.2 gcc; do IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do @@ -1363,7 +1366,8 @@ case "$GCC-$host_cpu" in ;; esac - +test $enable_ethread_pre_pentium4_compatibility = yes && + AC_DEFINE(ETHR_PRE_PENTIUM4_COMPAT, 1, [Define if you want compatibility with x86 processors before pentium4.]) AC_DEFINE(ETHR_HAVE_ETHREAD_DEFINES, 1, \ [Define if you have all ethread defines]) @@ -1645,11 +1649,11 @@ dnl Freely inspired by AC_TRY_LINK. (Maybe better to create a dnl AC_LANG_JAVA instead...) AC_DEFUN(ERL_TRY_LINK_JAVA, [java_link='$JAVAC conftest.java 1>&AC_FD_CC' -changequote(�, �)dnl +changequote(, )dnl cat > conftest.java <<EOF -�$1� +$1 class conftest { public static void main(String[] args) { - �$2� + $2 ; return; }} EOF changequote([, ])dnl diff --git a/erts/configure.in b/erts/configure.in index 88337e79fd..450c4d7a83 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -3538,7 +3538,7 @@ AC_SUBST(STATIC_KERBEROS_LIBS) AC_SUBST(SSL_LINK_WITH_ZLIB) AC_SUBST(STATIC_ZLIB_LIBS) -std_ssl_locations="/usr/local /usr/sfw /opt/local /usr /usr/pkg /usr/local/openssl /usr/lib/openssl /usr/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl" +std_ssl_locations="/usr/local /usr/sfw /usr /opt/local /usr/pkg /usr/local/openssl /usr/lib/openssl /usr/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl" AC_ARG_WITH(ssl-zlib, AS_HELP_STRING([--with-ssl-zlib=PATH], diff --git a/erts/doc/src/alt_dist.xml b/erts/doc/src/alt_dist.xml index 36d83a685b..c30e04fce7 100644 --- a/erts/doc/src/alt_dist.xml +++ b/erts/doc/src/alt_dist.xml @@ -377,7 +377,7 @@ ( 1) typedef enum { ( 2) portTypeUnknown, /* An uninitialized port */ ( 3) portTypeListener, /* A listening port/socket */ -( 4) portTypeAcceptor, /* An intermidiate stage when accepting +( 4) portTypeAcceptor, /* An intermediate stage when accepting ( 5) on a listen port */ ( 6) portTypeConnector, /* An intermediate stage when connecting */ ( 7) portTypeCommand, /* A connected open port in command mode */ diff --git a/erts/doc/src/erl_nif.xml b/erts/doc/src/erl_nif.xml index 382e446dce..980fc0cc39 100644 --- a/erts/doc/src/erl_nif.xml +++ b/erts/doc/src/erl_nif.xml @@ -216,14 +216,14 @@ ok <p/> <code type="none"> ERL_NIF_TERM term; - MyStruct* ptr = enif_alloc_resource(my_resource_type, sizeof(MyStruct)); + MyStruct* obj = enif_alloc_resource(my_resource_type, sizeof(MyStruct)); /* initialize struct ... */ - term = enif_make_resource(env, ptr); + term = enif_make_resource(env, obj); if (keep_a_reference_of_our_own) { - /* store 'ptr' in static variable, private data or other resource object */ + /* store 'obj' in static variable, private data or other resource object */ } else { enif_release_resource(obj); diff --git a/erts/doc/src/erl_prim_loader.xml b/erts/doc/src/erl_prim_loader.xml index fa3daaeecc..9f5b3f385b 100644 --- a/erts/doc/src/erl_prim_loader.xml +++ b/erts/doc/src/erl_prim_loader.xml @@ -101,7 +101,7 @@ <c><anno>Bin</anno></c> is the contents of the file as a binary.</p> <p>The <c><anno>Filename</anno></c> can also be a file in an archive. For example - <c>/otp/root/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia_backup.beam</c>. + <c>$OTPROOT/lib/</c><c>mnesia-4.4.7.ez/mnesia-4.4.7/ebin/</c><c>mnesia.beam</c>. See <seealso marker="kernel:code">code(3)</seealso> about archive files.</p> </desc> </func> @@ -124,7 +124,7 @@ the names of all the files in the directory. The names are not sorted.</p> <p>The <c><anno>Dir</anno></c> can also be a directory in an archive. For example - <c>/otp/root/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin</c>. + <c>$OTPROOT/lib/</c><c>mnesia-4.4.7.ez/mnesia-4.4.7/ebin</c>. See <seealso marker="kernel:code">code(3)</seealso> about archive files.</p> </desc> </func> @@ -143,7 +143,7 @@ <p>See <seealso marker="kernel:file">file(3)</seealso> for more info about the record <c>file_info</c>.</p> <p>The <c><anno>Filename</anno></c> can also be a file in an archive. For example - <c>/otp/root/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia_backup.beam</c>. + <c>$OTPROOT/lib/</c><c>mnesia-4.4.7.ez/mnesia-4.4.7/ebin/</c><c>mnesia</c>. See <seealso marker="kernel:code">code(3)</seealso> about archive files.</p> </desc> </func> diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index 7fba12aae0..45b66a4909 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -2909,11 +2909,11 @@ os_prompt%</pre> <seealso marker="stdlib:unicode_usage">stdlib users guide </seealso> for details.</p> - <note>The characters in the name (if given as a list) + <note><p>The characters in the name (if given as a list) can only be > 255 if the Erlang VM is started in Unicode file name translation mode, otherwise the name of the executable is limited to the ISO-latin-1 - character set.</note> + character set.</p></note> <p>If the <c>Command</c> cannot be run, an error exception, with the posix error code as the reason, is @@ -3026,11 +3026,11 @@ os_prompt%</pre> Unicode translation of arguments, they can be supplied as binaries in whatever encoding is deemed appropriate.</p> - <note>The characters in the arguments (if given as a + <note><p>The characters in the arguments (if given as a list of characters) can only be > 255 if the Erlang VM is started in Unicode file name mode, otherwise the arguments are limited to the - ISO-latin-1 character set.</note> + ISO-latin-1 character set.</p></note> <p>If one, for any reason, wants to explicitly set the program name in the argument vector, the <c>arg0</c> @@ -5979,7 +5979,7 @@ true</pre> </item> <tag><c>wordsize</c></tag> <item> - <p>Same as <c>{wordsize, internal}</c></p> + <p>Same as <c>{wordsize, internal}.</c></p> </item> <tag><c>{wordsize, internal}</c></tag> <item> @@ -5988,7 +5988,7 @@ true</pre> and on a pure 64-bit architecture 8 is returned. On a halfword 64-bit emulator, 4 is returned, as the Erlang terms are stored using a virtual wordsize of half the - systems wordsize.</p> + system's wordsize.</p> </item> <tag><c>{wordsize, external}</c></tag> <item> diff --git a/erts/doc/src/erlsrv.xml b/erts/doc/src/erlsrv.xml index 0dfad2a112..919caa9542 100644 --- a/erts/doc/src/erlsrv.xml +++ b/erts/doc/src/erlsrv.xml @@ -273,7 +273,7 @@ </desc> </func> <func> - <name>erlsrv {start | stop | disable | enable} <service-name></name> + <name>erlsrv {start | start_disabled | stop | disable | enable} <service-name></name> <fsummary>Manipulate the current service status.</fsummary> <desc> <p>These commands are only added for convenience, the normal @@ -287,6 +287,21 @@ service actually is stopped. Enabling a service sets it in automatic mode, that is started at boot. This command cannot set the service to manual. </p> + + <p>The <c>start_disabled</c> command operates on a service + regardless of if it's enabled/disabled or started/stopped. It + does this by first enabling it (regardless of if it's enabled + or not), then starting it (if it's not already started) and + then disabling it. The result will be a disabled but started + service, regardless of its earlier state. This is useful for + starting services temporarily during a release upgrade. The + difference between using <c>start_disabled</c> and the + sequence <c>enable</c>, <c>start</c> and <c>disable</c> is + that all other <c>erlsrv</c> commands are locked out during + the sequence of operations in <c>start_disable</c>, making the + operation atomic from an <c>erlsrv</c> user's point of + view.</p> + </desc> </func> <func> diff --git a/erts/doc/src/erts_alloc.xml b/erts/doc/src/erts_alloc.xml index 90347824d5..86e1e5168a 100644 --- a/erts/doc/src/erts_alloc.xml +++ b/erts/doc/src/erts_alloc.xml @@ -4,7 +4,7 @@ <cref> <header> <copyright> - <year>2002</year><year>2010</year> + <year>2002</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -126,9 +126,8 @@ carrier". Main multiblock carriers are never deallocated. The size of the main multiblock carrier is determined by the value of the <seealso marker="#M_mmbcs">mmbcs</seealso> parameter.</p> - <p> <marker id="mseg_mbc_sizes"></marker> - - Sizes of multiblock carriers allocated via <c>mseg_alloc</c> are + <p><marker id="mseg_mbc_sizes"></marker>Sizes of multiblock carriers + allocated via <c>mseg_alloc</c> are decided based on the values of the largest multiblock carrier size (<seealso marker="#M_lmbcs">lmbcs</seealso>), the smallest multiblock carrier size (<seealso marker="#M_smbcs">smbcs</seealso>), @@ -157,9 +156,8 @@ <p>Coalescing of free blocks are always performed immediately. Boundary tags (headers and footers) in free blocks are used which makes the time complexity for coalescing constant.</p> - <p> <marker id="strategy"></marker> - - The memory allocation strategy used for multiblock carriers by an + <p><marker id="strategy"></marker>The memory allocation strategy + used for multiblock carriers by an allocator is configurable via the <seealso marker="#M_as">as</seealso> parameter. Currently the following strategies are available:</p> <taglist> @@ -445,10 +443,10 @@ in "the <c>alloc_util</c> framework" section.</item> <tag><marker id="M_t"><c><![CDATA[+M<S>t true|false|<amount>]]></c></marker></tag> <item> - Multiple, thread specific instances of the allocator. - This option will only have any effect on the runtime system - with SMP support. Default behaviour on the runtime system with - SMP support (<c>N</c> equals the number of scheduler threads): + <p>Multiple, thread specific instances of the allocator. + This option will only have any effect on the runtime system + with SMP support. Default behaviour on the runtime system with + SMP support (<c>N</c> equals the number of scheduler threads):</p> <taglist> <tag><c>temp_alloc</c></tag> <item><c>N + 1</c> instances.</item> @@ -459,10 +457,10 @@ <c>16</c>. <c>16</c> instances when <c>N</c> is greater than <c>16</c>.</item> </taglist> - <c>temp_alloc</c> will always use <c>N + 1</c> instances when - this option has been enabled regardless of the amount passed. - Other allocators will use the same amount of instances as the - amount passed as long as it isn't greater than <c>N</c>. + <p><c>temp_alloc</c> will always use <c>N + 1</c> instances when + this option has been enabled regardless of the amount passed. + Other allocators will use the same amount of instances as the + amount passed as long as it isn't greater than <c>N</c>.</p> </item> </taglist> <p>Currently the following flags are available for configuration of diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index 3733fb2db9..3e9e6a35f2 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -4534,7 +4534,7 @@ The race occurred when a process removed a table during termination simultaneously as another process removed the same table via <c>ets:delete/1</c> and a third process - created a table that accidentaly got the same internal + created a table that accidentally got the same internal table index as the table being removed.</p> <p> Own Id: OTP-7349</p> diff --git a/erts/doc/src/start_erl.xml b/erts/doc/src/start_erl.xml index 21cc901f52..6f6930af7e 100644 --- a/erts/doc/src/start_erl.xml +++ b/erts/doc/src/start_erl.xml @@ -69,12 +69,29 @@ <c><![CDATA[erl]]></c> program. Everything <em>after</em><c><![CDATA[++]]></c> is interpreted as options to <c><![CDATA[start_erl]]></c> itself.</item> <tag>-reldir <release root></tag> - <item>Mandatory if the environment variable <c><![CDATA[RELDIR]]></c> is not - specified. Tells start_erl where the root of the - release tree is placed in the file-system - (like <Erlang root>\\releases). The - <c><![CDATA[start_erl.data]]></c> file is expected to be placed in - this directory (if not otherwise specified).</item> + + <item>Mandatory if the environment variable + <c><![CDATA[RELDIR]]></c> is not specified and no + <c>-rootdir</c> option is given. Tells start_erl where the + root of the release tree is placed in the file-system (typically + <Erlang root>\\releases). The + <c><![CDATA[start_erl.data]]></c> file is expected to be + placed in this directory (if not otherwise specified). If + only the <c>-rootdir</c> option is given, the directory is + assumed to be <Erlang root>\\releases.</item> + + <tag>-rootdir <Erlang root directory></tag> + + <item>Mandatory if <c>-reldir</c> is not given and there is + no <c><![CDATA[RELDIR]]></c> in the environment. This + specifies the Erlang installation root directory (under + which the <c>lib</c>, <c>releases</c> and + <c>erts-<Version></c> directories are placed). If only + <c>-reldir</c> (or the environment variable + <c><![CDATA[RELDIR]]></c>) is given, the Erlang root is assumed to + be the directory exactly one level above the release + directory.</item> + <tag>-data <data file name></tag> <item>Optional, specifies another data file than start_erl.data in the <release root>. It is specified relative to the diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in index 1ecda6bfa2..6cd9be5680 100644 --- a/erts/emulator/Makefile.in +++ b/erts/emulator/Makefile.in @@ -600,11 +600,6 @@ INCLUDES += -I$(ERL_TOP)/erts/etc/vxworks endif ifeq ($(TARGET),win32) -# Usually the same as the default rule, but certain platforms (i.e. win32) mix -# different compilers -$(OBJDIR)/beam_emu.o: beam/beam_emu.c - $(EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@ - $(OBJDIR)/dll_sys.o: sys/$(ERLANG_OSTYPE)/sys.c $(CC) $(CFLAGS) -DERL_RUN_SHARED_LIB=1 $(INCLUDES) -c $< -o $@ @@ -618,6 +613,11 @@ $(OBJDIR)/beam_emu.o: beam/beam_emu.c $(CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) \ -OPT:Olimit=0 -WOPT:lpre=off:spre=off:epre=off \ $(INCLUDES) -c $< -o $@ +else +# Usually the same as the default rule, but certain platforms (e.g. win32) mix +# different compilers +$(OBJDIR)/beam_emu.o: beam/beam_emu.c + $(EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@ endif diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c index afdbd65bb5..4b5b5cbdaa 100644 --- a/erts/emulator/beam/beam_emu.c +++ b/erts/emulator/beam/beam_emu.c @@ -1145,26 +1145,11 @@ void process_main(void) Eterm *tmp_big; /* Temporary buffer for small bignums if !HEAP_ON_C_STACK. */ #endif -#ifndef ERTS_SMP -#if !HALFWORD_HEAP - static Eterm save_reg[ERTS_X_REGS_ALLOCATED]; - /* X registers -- not used directly, but - * through 'reg', because using it directly - * needs two instructions on a SPARC, - * while using it through reg needs only - * one. - */ -#endif /* - * Floating point registers. - */ - static FloatDef freg[MAX_REG]; -#else - /* X regisers and floating point registers are located in + * X registers and floating point registers are located in * scheduler specific data. */ register FloatDef *freg; -#endif /* * For keeping the negative old value of 'reds' when call saving is active. @@ -1201,14 +1186,6 @@ void process_main(void) init_done = 1; goto init_emulator; } -#ifndef ERTS_SMP -#if !HALFWORD_HEAP - reg = save_reg; /* XXX: probably wastes a register on x86 */ -#else - /* Registers need to be heap allocated (correct memory range) for tracing to work */ - reg = erts_alloc(ERTS_ALC_T_BEAM_REGISTER, ERTS_X_REGS_ALLOCATED * sizeof(Eterm)); -#endif -#endif c_p = NULL; reds_used = 0; goto do_schedule1; @@ -1229,10 +1206,8 @@ void process_main(void) #endif ERTS_SMP_REQ_PROC_MAIN_LOCK(c_p); PROCESS_MAIN_CHK_LOCKS(c_p); -#ifdef ERTS_SMP - reg = c_p->scheduler_data->save_reg; - freg = c_p->scheduler_data->freg; -#endif + reg = ERTS_PROC_GET_SCHDATA(c_p)->x_reg_array; + freg = ERTS_PROC_GET_SCHDATA(c_p)->f_reg_array; #if !HEAP_ON_C_STACK tmp_big = ERTS_PROC_GET_SCHDATA(c_p)->beam_emu_tmp_heap; #endif @@ -5151,10 +5126,8 @@ void process_main(void) c_p->def_arg_reg[4] = -neg_o_reds; reg[0] = r(0); c_p = hipe_mode_switch(c_p, cmd, reg); -#ifdef ERTS_SMP - reg = c_p->scheduler_data->save_reg; - freg = c_p->scheduler_data->freg; -#endif + reg = ERTS_PROC_GET_SCHDATA(c_p)->x_reg_array; + freg = ERTS_PROC_GET_SCHDATA(c_p)->f_reg_array; ERL_BITS_RELOAD_STATEP(c_p); neg_o_reds = -c_p->def_arg_reg[4]; FCALLS = c_p->fcalls; diff --git a/erts/emulator/beam/erl_bif_trace.c b/erts/emulator/beam/erl_bif_trace.c index 0509e51a6f..fbd8757751 100644 --- a/erts/emulator/beam/erl_bif_trace.c +++ b/erts/emulator/beam/erl_bif_trace.c @@ -679,7 +679,7 @@ trace_3(Process* p, Eterm pid_spec, Eterm how, Eterm list) } else if (tracer != NIL) { tracee_port->tracer_proc = tracer; } - /* matches are not counted for ports since it would violate compability */ + /* matches are not counted for ports since it would violate compatibility */ /* This could be a reason to modify this function or make a new one. */ } } diff --git a/erts/emulator/beam/erl_db.c b/erts/emulator/beam/erl_db.c index 59ef8fc3ea..0327850cb9 100644 --- a/erts/emulator/beam/erl_db.c +++ b/erts/emulator/beam/erl_db.c @@ -3659,9 +3659,6 @@ static Eterm table_info(Process* p, DbTable* tb, Eterm What) ret = am_true; else ret = am_false; - } else if (What == am_atom_put("kept_objects",12)) { - ret = make_small(IS_HASH_TABLE(tb->common.status) - ? db_kept_items_hash(&tb->hash) : 0); } else if (What == am_atom_put("safe_fixed",10)) { #ifdef ERTS_SMP erts_smp_mtx_lock(&tb->common.fixlock); @@ -3703,7 +3700,7 @@ static Eterm table_info(Process* p, DbTable* tb, Eterm What) Eterm* hp; db_calc_stats_hash(&tb->hash, &stats); - hp = HAlloc(p, 1 + 6 + FLOAT_SIZE_OBJECT*3); + hp = HAlloc(p, 1 + 7 + FLOAT_SIZE_OBJECT*3); f.fd = stats.avg_chain_len; avg = make_float(hp); PUT_DOUBLE(f, hp); @@ -3718,10 +3715,11 @@ static Eterm table_info(Process* p, DbTable* tb, Eterm What) std_dev_exp = make_float(hp); PUT_DOUBLE(f, hp); hp += FLOAT_SIZE_OBJECT; - ret = TUPLE6(hp, make_small(erts_smp_atomic_read_nob(&tb->hash.nactive)), + ret = TUPLE7(hp, make_small(erts_smp_atomic_read_nob(&tb->hash.nactive)), avg, std_dev_real, std_dev_exp, make_small(stats.min_chain_len), - make_small(stats.max_chain_len)); + make_small(stats.max_chain_len), + make_small(db_kept_items_hash(&tb->hash))); } else { ret = am_false; diff --git a/erts/emulator/beam/erl_init.c b/erts/emulator/beam/erl_init.c index 286fe9ff1e..8a297cded0 100644 --- a/erts/emulator/beam/erl_init.c +++ b/erts/emulator/beam/erl_init.c @@ -808,10 +808,12 @@ early_init(int *argc, char **argv) /* #if defined(HIPE) hipe_signal_init(); /* must be done very early */ #endif - erl_sys_init(); erl_sys_args(argc, argv); + /* Creates threads on Windows that depend on the arguments, so has to be after erl_sys_args */ + erl_sys_init(); + erts_ets_realloc_always_moves = 0; erts_ets_always_compress = 0; erts_dist_buf_busy_limit = ERTS_DE_BUSY_LIMIT; diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index bbdcf79d00..5ceb4ce9a8 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -1152,13 +1152,6 @@ scheduler_wait(int *fcalls, ErtsSchedulerData *esdp, ErtsRunQueue *rq) ASSERT(!(flgs & ERTS_SSI_FLG_SLEEPING)); goto sys_woken; } - if (!(flgs & ERTS_SSI_FLG_SLEEPING)) { - flgs = sched_prep_cont_spin_wait(ssi); - if (!(flgs & ERTS_SSI_FLG_WAITING)) { - ASSERT(!(flgs & ERTS_SSI_FLG_SLEEPING)); - goto sys_woken; - } - } /* * If we got new I/O tasks we aren't allowed to @@ -2723,11 +2716,14 @@ erts_init_scheduling(int mrq, int no_schedulers, int no_schedulers_online) esdp->match_pseudo_process = NULL; esdp->ssi = ERTS_SCHED_SLEEP_INFO_IX(ix); esdp->free_process = NULL; -#if HALFWORD_HEAP - /* Registers need to be heap allocated (correct memory range) for tracing to work */ - esdp->save_reg = erts_alloc(ERTS_ALC_T_BEAM_REGISTER, ERTS_X_REGS_ALLOCATED * sizeof(Eterm)); -#endif #endif + esdp->x_reg_array = + erts_alloc_permanent_cache_aligned(ERTS_ALC_T_BEAM_REGISTER, + ERTS_X_REGS_ALLOCATED * + sizeof(Eterm)); + esdp->f_reg_array = + erts_alloc_permanent_cache_aligned(ERTS_ALC_T_BEAM_REGISTER, + MAX_REG * sizeof(FloatDef)); #if !HEAP_ON_C_STACK esdp->num_tmp_heap_used = 0; #endif @@ -5785,10 +5781,13 @@ erts_sched_stat_term(Process *p, int total) void erts_schedule_misc_op(void (*func)(void *), void *arg) { - ErtsRunQueue *rq = erts_get_runq_current(NULL); + ErtsRunQueue *rq; ErtsMiscOpList *molp = misc_op_list_alloc(); + ErtsSchedulerData *esdp = erts_get_scheduler_data(); - if (!rq) { + if (esdp) { + rq = esdp->run_queue; + } else { /* * This can only happen when the sys msg dispatcher * thread schedules misc ops (this happens *very* diff --git a/erts/emulator/beam/erl_process.h b/erts/emulator/beam/erl_process.h index 739aef3130..627f10b142 100644 --- a/erts/emulator/beam/erl_process.h +++ b/erts/emulator/beam/erl_process.h @@ -387,19 +387,15 @@ do { \ } while (0) struct ErtsSchedulerData_ { - -#ifdef ERTS_SMP /* * Keep X registers first (so we get as many low * numbered registers as possible in the same cache * line). */ -#if !HALFWORD_HEAP - Eterm save_reg[ERTS_X_REGS_ALLOCATED]; /* X registers */ -#else - Eterm *save_reg; -#endif - FloatDef freg[MAX_REG]; /* Floating point registers. */ + Eterm* x_reg_array; /* X registers */ + FloatDef* f_reg_array; /* Floating point registers. */ + +#ifdef ERTS_SMP ethr_tid tid; /* Thread id */ struct erl_bits_state erl_bits_state; /* erl_bits.c state */ void *match_pseudo_process; /* erl_db_util.c:db_prog_match() */ diff --git a/erts/emulator/beam/erl_threads.h b/erts/emulator/beam/erl_threads.h index 9b897ffd24..12eaf39ec7 100644 --- a/erts/emulator/beam/erl_threads.h +++ b/erts/emulator/beam/erl_threads.h @@ -990,8 +990,9 @@ erts_mtx_destroy(erts_mtx_t *mtx) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy mutex"); + erts_thr_fatal_error(res, "destroy mutex"); } #endif } @@ -1094,8 +1095,9 @@ erts_cnd_destroy(erts_cnd_t *cnd) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy condition variable"); + erts_thr_fatal_error(res, "destroy condition variable"); } #endif } @@ -1229,8 +1231,9 @@ erts_rwmtx_destroy(erts_rwmtx_t *rwmtx) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy rwmutex"); + erts_thr_fatal_error(res, "destroy rwmutex"); } #endif } @@ -1693,8 +1696,9 @@ erts_spinlock_destroy(erts_spinlock_t *lock) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy rwlock"); + erts_thr_fatal_error(res, "destroy rwlock"); } #else (void)lock; @@ -1811,8 +1815,9 @@ erts_rwlock_destroy(erts_rwlock_t *lock) "Most likely a bug in pthread implementation."; erts_send_warning_to_logger_str_nogl(warn); } + else #endif - erts_thr_fatal_error(res, "destroy rwlock"); + erts_thr_fatal_error(res, "destroy rwlock"); } #else (void)lock; diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c index ebc4469a23..743c01d935 100644 --- a/erts/emulator/drivers/common/inet_drv.c +++ b/erts/emulator/drivers/common/inet_drv.c @@ -7012,7 +7012,7 @@ static int sctp_fill_opts(inet_descriptor* desc, char* buf, int buflen, default: RETURN_ERROR(spec, -EINVAL); /* No more valid options */ } - /* If we get here one result has been succesfully loaded */ + /* If we get here one result has been successfully loaded */ length ++; } if (buflen != 0) RETURN_ERROR(spec, -EINVAL); /* Optparam mismatch */ diff --git a/erts/emulator/drivers/win32/win_efile.c b/erts/emulator/drivers/win32/win_efile.c index 3d59564f7b..931bb196f1 100755 --- a/erts/emulator/drivers/win32/win_efile.c +++ b/erts/emulator/drivers/win32/win_efile.c @@ -127,6 +127,8 @@ static int errno_map(DWORD last_error) { return EBUSY; case ERROR_NO_PROC_SLOTS: return EAGAIN; + case ERROR_CANT_RESOLVE_FILENAME: + return EMLINK; case ERROR_ARENA_TRASHED: case ERROR_INVALID_BLOCK: case ERROR_BAD_ENVIRONMENT: @@ -1405,7 +1407,7 @@ efile_readlink(Efile_error* errInfo, char* name, char* buffer, size_t size) DWORD fileAttributes = GetFileAttributesW(wname); if ((fileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) { BOOLEAN success = 0; - HANDLE h = CreateFileW(wname, GENERIC_READ, 0,NULL, OPEN_EXISTING, 0, NULL); + HANDLE h = CreateFileW(wname, GENERIC_READ, 0,NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); int len; if(h != INVALID_HANDLE_VALUE) { success = pGetFinalPathNameByHandle(h, wbuffer, size,0); @@ -1421,7 +1423,7 @@ efile_readlink(Efile_error* errInfo, char* name, char* buffer, size_t size) if (*wbuffer == L'\\') *wbuffer = L'/'; CloseHandle(h); - } + } FreeLibrary(hModule); if (success) { return 1; diff --git a/erts/emulator/hipe/hipe_mode_switch.c b/erts/emulator/hipe/hipe_mode_switch.c index 0b35dbdf04..e5b8cf8a19 100644 --- a/erts/emulator/hipe/hipe_mode_switch.c +++ b/erts/emulator/hipe/hipe_mode_switch.c @@ -473,7 +473,7 @@ Process *hipe_mode_switch(Process *p, unsigned cmd, Eterm reg[]) p = schedule(p, reds_in - p->fcalls); #ifdef ERTS_SMP p->hipe_smp.have_receive_locks = 0; - reg = p->scheduler_data->save_reg; + reg = p->scheduler_data->x_reg_array; #endif } { diff --git a/erts/emulator/sys/common/erl_poll.c b/erts/emulator/sys/common/erl_poll.c index 81f1c95020..9bd64f5908 100644 --- a/erts/emulator/sys/common/erl_poll.c +++ b/erts/emulator/sys/common/erl_poll.c @@ -405,7 +405,7 @@ woke_up(ErtsPollSet ps) static ERTS_INLINE void wake_poller(ErtsPollSet ps, int interrupted) { - int wake; + int wake = 0; #ifdef ERTS_SMP erts_aint32_t wakeup_state; if (!interrupted) diff --git a/erts/emulator/sys/unix/sys.c b/erts/emulator/sys/unix/sys.c index fd15635168..82d2c64d81 100644 --- a/erts/emulator/sys/unix/sys.c +++ b/erts/emulator/sys/unix/sys.c @@ -527,7 +527,6 @@ erts_sys_pre_init(void) void erl_sys_init(void) { - erts_smp_rwmtx_init(&environ_rwmtx, "environ"); #if !DISABLE_VFORK { int res; @@ -3090,6 +3089,8 @@ erl_sys_args(int* argc, char** argv) { int i, j; + erts_smp_rwmtx_init(&environ_rwmtx, "environ"); + i = 1; ASSERT(argc && argv); @@ -3151,4 +3152,5 @@ erl_sys_args(int* argc, char** argv) argv[j++] = argv[i]; } *argc = j; + } diff --git a/erts/emulator/sys/win32/sys.c b/erts/emulator/sys/win32/sys.c index ce1d376a54..3e151c26d5 100644 --- a/erts/emulator/sys/win32/sys.c +++ b/erts/emulator/sys/win32/sys.c @@ -2772,7 +2772,7 @@ ready_output(ErlDrvData drv_data, ErlDrvEvent ready_event) DEBUGF(("ready_output(%d, 0x%x)\n", drv_data, ready_event)); set_busy_port(dp->port_num, 0); if (!(dp->outbuf)) { - /* Happens because event sometimes get signalled during a succesful + /* Happens because event sometimes get signalled during a successful write... */ return; } @@ -3283,6 +3283,7 @@ erts_sys_pre_init(void) } #endif erts_smp_atomic_init_nob(&sys_misc_mem_sz, 0); + erts_sys_env_init(); } void noinherit_std_handle(DWORD type) @@ -3298,8 +3299,6 @@ void erl_sys_init(void) { HANDLE handle; - erts_sys_env_init(); - noinherit_std_handle(STD_OUTPUT_HANDLE); noinherit_std_handle(STD_INPUT_HANDLE); noinherit_std_handle(STD_ERROR_HANDLE); diff --git a/erts/emulator/test/busy_port_SUITE.erl b/erts/emulator/test/busy_port_SUITE.erl index 8365e1c540..dac2a70f59 100644 --- a/erts/emulator/test/busy_port_SUITE.erl +++ b/erts/emulator/test/busy_port_SUITE.erl @@ -20,7 +20,7 @@ -module(busy_port_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_group/2,end_per_group/2,end_per_testcase/2, io_to_busy/1, message_order/1, send_3/1, system_monitor/1, no_trap_exit/1, no_trap_exit_unlinked/1, trap_exit/1, multiple_writers/1, @@ -53,6 +53,20 @@ init_per_group(_GroupName, Config) -> end_per_group(_GroupName, Config) -> Config. +end_per_testcase(_Case, Config) when is_list(Config) -> + case whereis(busy_drv_server) of + undefined -> + ok; + Pid when is_pid(Pid) -> + Ref = monitor(process, Pid), + unlink(Pid), + exit(Pid, kill), + receive + {'DOWN',Ref,process,Pid,_} -> + ok + end + end, + Config. %% Tests I/O operations to a busy port, to make sure a suspended send %% operation is correctly restarted. This used to crash Beam. diff --git a/erts/emulator/test/distribution_SUITE.erl b/erts/emulator/test/distribution_SUITE.erl index 4bebae51cc..3eaacdb044 100644 --- a/erts/emulator/test/distribution_SUITE.erl +++ b/erts/emulator/test/distribution_SUITE.erl @@ -173,15 +173,20 @@ bulk_sendsend(Terms, BinSize) -> Ratio = if MonitorCount2 == 0 -> MonitorCount1 / 1.0; true -> MonitorCount1 / MonitorCount2 end, - %% A somewhat arbitrary ratio, but hopefully one that will accomodate - %% a wide range of CPU speeds. - true = (Ratio > 8.0), - {comment, - integer_to_list(Rate1) ++ " K/s, " ++ - integer_to_list(Rate2) ++ " K/s, " ++ - integer_to_list(MonitorCount1) ++ " monitor msgs, " ++ - integer_to_list(MonitorCount2) ++ " monitor msgs, " ++ - float_to_list(Ratio) ++ " monitor ratio"}. + Comment = integer_to_list(Rate1) ++ " K/s, " ++ + integer_to_list(Rate2) ++ " K/s, " ++ + integer_to_list(MonitorCount1) ++ " monitor msgs, " ++ + integer_to_list(MonitorCount2) ++ " monitor msgs, " ++ + float_to_list(Ratio) ++ " monitor ratio", + if + %% A somewhat arbitrary ratio, but hopefully one that will + %% accommodate a wide range of CPU speeds. + Ratio > 8.0 -> + {comment,Comment}; + true -> + io:put_chars(Comment), + ?line ?t:fail(ratio_too_low) + end. bulk_sendsend2(Terms, BinSize, BusyBufSize) -> ?line Dog = test_server:timetrap(test_server:seconds(30)), @@ -1597,8 +1602,8 @@ bad_dist_ext_control(Config) when is_list(Config) -> ?line stop_node(Victim). bad_dist_ext_connection_id(Config) when is_list(Config) -> - ?line {ok, Offender} = start_node(bad_dist_ext_receive_offender), - ?line {ok, Victim} = start_node(bad_dist_ext_receive_victim), + ?line {ok, Offender} = start_node(bad_dist_ext_connection_id_offender), + ?line {ok, Victim} = start_node(bad_dist_ext_connection_id_victim), ?line start_node_monitors([Offender,Victim]), ?line Parent = self(), diff --git a/erts/emulator/test/driver_SUITE.erl b/erts/emulator/test/driver_SUITE.erl index f6cf01ce16..a77ea4f3be 100644 --- a/erts/emulator/test/driver_SUITE.erl +++ b/erts/emulator/test/driver_SUITE.erl @@ -1590,7 +1590,7 @@ otp_6879(Config) when is_list(Config) -> end end, Procs), - %% Also try it when input exeeds default buffer (256 bytes) + %% Also try it when input exceeds default buffer (256 bytes) ?line Data = lists:seq(1, 1000), ?line case open_port({spawn, Drv}, []) of Port when is_port(Port) -> diff --git a/erts/etc/win32/erlsrv/erlsrv_interactive.c b/erts/etc/win32/erlsrv/erlsrv_interactive.c index 13e029b364..4c990a694d 100644 --- a/erts/etc/win32/erlsrv/erlsrv_interactive.c +++ b/erts/etc/win32/erlsrv/erlsrv_interactive.c @@ -135,7 +135,12 @@ void print_last_error(void){ fprintf(stderr,"Error: %s",mes); LocalFree(mes); } - + +static int get_last_error(void) +{ + return (last_error) ? last_error : GetLastError(); +} + static BOOL install_service(void){ SC_HANDLE scm; SC_HANDLE service; @@ -508,7 +513,7 @@ int do_usage(char *arg0){ "\t[{-sn[ame] | -n[ame]} [<nodename>]]\n" "\t[-d[ebugtype] [{new|reuse|console}]]\n" "\t[-ar[gs] [<limited erl arguments>]]\n\n" - "%s {start | stop | disable | enable} <servicename>\n\n" + "%s {start | start_disabled | stop | disable | enable} <servicename>\n\n" "%s remove <servicename>\n\n" "%s rename <servicename> <servicename>\n\n" "%s list [<servicename>]\n\n" @@ -561,6 +566,45 @@ int do_manage(int argc,char **argv){ return 0; } } + if(!_stricmp(action,"start_disabled")){ + if(!enable_service()){ + fprintf(stderr,"%s: Failed to enable service %s.\n", + argv[0],service_name); + print_last_error(); + return 1; + } + if(!start_service() && get_last_error() != ERROR_SERVICE_ALREADY_RUNNING){ + fprintf(stderr,"%s: Failed to start service %s.\n", + argv[0],service_name); + print_last_error(); + goto failure_starting; + } + + if(!wait_service_trans(SERVICE_STOPPED, SERVICE_START_PENDING, + SERVICE_RUNNING, 60)){ + fprintf(stderr,"%s: Failed to start service %s.\n", + argv[0],service_name); + print_last_error(); + goto failure_starting; + } + + if(!disable_service()){ + fprintf(stderr,"%s: Failed to disable service %s.\n", + argv[0],service_name); + print_last_error(); + return 1; + } + printf("%s: Service %s started.\n", + argv[0],service_name); + return 0; + failure_starting: + if(!disable_service()){ + fprintf(stderr,"%s: Failed to disable service %s.\n", + argv[0],service_name); + print_last_error(); + } + return 1; + } if(!_stricmp(action,"stop")){ if(!stop_service()){ fprintf(stderr,"%s: Failed to stop service %s.\n", @@ -841,6 +885,7 @@ int do_add_or_set(int argc, char **argv){ argv[0], service_name); return 0; } + int do_rename(int argc, char **argv){ RegEntry *current = empty_reg_tab(); RegEntry *dummy = empty_reg_tab(); @@ -1129,35 +1174,131 @@ void read_arguments(int *pargc, char ***pargv){ *pargc = argc; *pargv = argv; } + +/* Create a free-for-all ACL to set on the semaphore */ +PACL get_acl(PSECURITY_DESCRIPTOR secdescp) +{ + DWORD acl_length = 0; + PSID auth_users_sidp = NULL; + PACL aclp = NULL; + SID_IDENTIFIER_AUTHORITY ntauth = SECURITY_NT_AUTHORITY; + + if(!InitializeSecurityDescriptor(secdescp, SECURITY_DESCRIPTOR_REVISION)) { + return NULL; + } + + if(!AllocateAndInitializeSid(&ntauth, + 1, + SECURITY_AUTHENTICATED_USER_RID, + 0, 0, 0, 0, 0, 0, 0, + &auth_users_sidp)) { + return NULL; + } + + acl_length = sizeof(ACL) + + sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD) + + GetLengthSid(auth_users_sidp); + + if((aclp = (PACL) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, acl_length)) == NULL) { + FreeSid(auth_users_sidp); + return NULL; + } + + if(!InitializeAcl(aclp, acl_length, ACL_REVISION)) { + FreeSid(auth_users_sidp); + HeapFree(GetProcessHeap(), 0, aclp); + return NULL; + } + + if(!AddAccessAllowedAce(aclp, ACL_REVISION, SEMAPHORE_ALL_ACCESS, auth_users_sidp)) { + FreeSid(auth_users_sidp); + HeapFree(GetProcessHeap(), 0, aclp); + return NULL; + } + + if(!SetSecurityDescriptorDacl(secdescp, TRUE, aclp, FALSE)) { + FreeSid(auth_users_sidp); + HeapFree(GetProcessHeap(), 0, aclp); + return NULL; + } + return aclp; +} + +static HANDLE lock_semaphore = NULL; + +int take_lock(void) { + SECURITY_ATTRIBUTES attr; + PACL aclp; + SECURITY_DESCRIPTOR secdesc; + + if ((aclp = get_acl(&secdesc)) == NULL) { + return -1; + } + + memset(&attr,0,sizeof(attr)); + attr.nLength = sizeof(attr); + attr.lpSecurityDescriptor = &secdesc; + attr.bInheritHandle = FALSE; + + if ((lock_semaphore = CreateSemaphore(&attr, 1, 1, ERLSRV_INTERACTIVE_GLOBAL_SEMAPHORE)) == NULL) { + return -1; + } + + if (WaitForSingleObject(lock_semaphore,INFINITE) != WAIT_OBJECT_0) { + return -1; + } + + HeapFree(GetProcessHeap(), 0, aclp); + return 0; +} + +void release_lock(void) { + ReleaseSemaphore(lock_semaphore,1,NULL); +} + int interactive_main(int argc, char **argv){ char *action = argv[1]; - + int res; + + if (take_lock() != 0) { + fprintf(stderr,"%s: unable to acquire global lock (%s).\n",argv[0], + ERLSRV_INTERACTIVE_GLOBAL_SEMAPHORE); + return 1; + } + if(!_stricmp(action,"readargs")){ - read_arguments(&argc,&argv); - action = argv[1]; + read_arguments(&argc,&argv); + action = argv[1]; } if(!_stricmp(action,"set") || !_stricmp(action,"add")) - return do_add_or_set(argc,argv); - if(!_stricmp(action,"rename")) - return do_rename(argc,argv); - if(!_stricmp(action,"remove")) - return do_remove(argc,argv); - if(!_stricmp(action,"list")) - return do_list(argc,argv); - if(!_stricmp(action,"start") || - !_stricmp(action,"stop") || - !_stricmp(action,"enable") || - !_stricmp(action,"disable")) - return do_manage(argc,argv); - if(_stricmp(action,"?") && - _stricmp(action,"/?") && - _stricmp(action,"-?") && - *action != 'h' && - *action != 'H') + res = do_add_or_set(argc,argv); + else if(!_stricmp(action,"rename")) + res = do_rename(argc,argv); + else if(!_stricmp(action,"remove")) + res = do_remove(argc,argv); + else if(!_stricmp(action,"list")) + res = do_list(argc,argv); + else if(!_stricmp(action,"start") || + !_stricmp(action,"start_disabled") || + !_stricmp(action,"stop") || + !_stricmp(action,"enable") || + !_stricmp(action,"disable")) + res = do_manage(argc,argv); + else if(_stricmp(action,"?") && + _stricmp(action,"/?") && + _stricmp(action,"-?") && + *action != 'h' && + *action != 'H') { fprintf(stderr,"%s: action %s not implemented.\n",argv[0],action); - do_usage(argv[0]); - return 1; + do_usage(argv[0]); + res = 1; + } else { + do_usage(argv[0]); + res = 0; + } + release_lock(); + return res; } diff --git a/erts/etc/win32/erlsrv/erlsrv_interactive.h b/erts/etc/win32/erlsrv/erlsrv_interactive.h index deacf81899..602da24575 100644 --- a/erts/etc/win32/erlsrv/erlsrv_interactive.h +++ b/erts/etc/win32/erlsrv/erlsrv_interactive.h @@ -19,6 +19,8 @@ #ifndef _ERLSRV_INTERACTIVE_H #define _ERLSRV_INTERACTIVE_H +#define ERLSRV_INTERACTIVE_GLOBAL_SEMAPHORE "{468d6954-e355-415f-968f-d257cb0feef4}" + int interactive_main(int argc, char **argv); #endif /* _ERLSRV_INTERACTIVE_H */ diff --git a/erts/etc/win32/start_erl.c b/erts/etc/win32/start_erl.c index dcf8c8b281..6ca7dd9b99 100644 --- a/erts/etc/win32/start_erl.c +++ b/erts/etc/win32/start_erl.c @@ -44,6 +44,8 @@ char *progname; #endif #define RELEASE_SUBDIR "\\releases" +#define ERTS_SUBDIR_PREFIX "\\erts-" +#define BIN_SUBDIR "\\bin" #define REGISTRY_BASE "Software\\Ericsson\\Erlang\\" #define DEFAULT_DATAFILE "start_erl.data" @@ -101,7 +103,8 @@ void exit_help(char *err) printf("Usage:\n%s\n" " [<erlang options>] ++\n" " [-data <datafile>]\n" - " [-reldir <releasedir>]\n" + " {-rootdir <erlang root directory> | \n" + " -reldir <releasedir>}\n" " [-bootflags <bootflagsfile>]\n" " [-noconfig]\n", progname); @@ -177,8 +180,9 @@ void split_commandline(void) */ char * unquote_optionarg(char *str, char **strp) { - char *newstr = (char *)malloc(strlen(str)+1); /* This one is realloc:ed later */ - int i=0, inquote=0; + char *newstr = (char *)malloc(strlen(str)+1); /* This one is + realloc:ed later */ + int i = 0, inquote = 0; assert(newstr); assert(str); @@ -223,8 +227,8 @@ char * unquote_optionarg(char *str, char **strp) /* - * Parses MyCommandLine and tries to fill in all the required option variables - * (one way or another). + * Parses MyCommandLine and tries to fill in all the required option + * variables (in one way or another). */ void parse_commandline(void) { @@ -237,6 +241,11 @@ void parse_commandline(void) *cmdline++; if( strnicmp(cmdline, "data", 4) == 0) { DataFileName = unquote_optionarg(cmdline+4, &cmdline); + } else if( strnicmp(cmdline, "rootdir", 7) == 0) { + RootDir = unquote_optionarg(cmdline+7, &cmdline); +#ifdef _DEBUG + fprintf(stderr, "RootDir: '%s'\n", RootDir); +#endif } else if( strnicmp(cmdline, "reldir", 6) == 0) { RelDir = unquote_optionarg(cmdline+6, &cmdline); #ifdef _DEBUG @@ -266,8 +275,8 @@ void parse_commandline(void) * Read the data file specified and get the version and release number * from it. * - * This function also construct the correct RegistryKey from the version information - * retrieved. + * This function also construct the correct RegistryKey from the version + * information retrieved. */ void read_datafile(void) { @@ -325,88 +334,6 @@ void read_datafile(void) /* - * Read the registry keys we need - */ -void read_registry_keys(void) -{ - HKEY hReg; - ULONG lLen; - - /* Create the RegistryKey name */ - RegistryKey = (char *) malloc(strlen(REGISTRY_BASE) + - strlen(Version) + 1); - assert(RegistryKey); - sprintf(RegistryKey, REGISTRY_BASE "%s", Version); - - /* We always need to find BinDir */ - if( (RegOpenKeyEx(HKEY_LOCAL_MACHINE, - RegistryKey, - 0, - KEY_READ, - &hReg)) != ERROR_SUCCESS ) { - exit_help("Could not open registry key."); - } - - /* First query size of data */ - if( (RegQueryValueEx(hReg, - "Bindir", - NULL, - NULL, - NULL, - &lLen)) != ERROR_SUCCESS) { - exit_help("Failed to query BinDir of release.\n"); - } - - /* Allocate enough space */ - BinDir = (char *)malloc(lLen+1); - assert(BinDir); - /* Retrieve the value */ - if( (RegQueryValueEx(hReg, - "Bindir", - NULL, - NULL, - (unsigned char *) BinDir, - &lLen)) != ERROR_SUCCESS) { - exit_help("Failed to query BinDir of release (2).\n"); - } - -#ifdef _DEBUG - fprintf(stderr, "Bindir: '%s'\n", BinDir); -#endif - - /* We also need the rootdir, in case we need to build RelDir later */ - - /* First query size of data */ - if( (RegQueryValueEx(hReg, - "Rootdir", - NULL, - NULL, - NULL, - &lLen)) != ERROR_SUCCESS) { - exit_help("Failed to query RootDir of release.\n"); - } - - /* Allocate enough space */ - RootDir = (char *) malloc(lLen+1); - assert(RootDir); - /* Retrieve the value */ - if( (RegQueryValueEx(hReg, - "Rootdir", - NULL, - NULL, - (unsigned char *) RootDir, - &lLen)) != ERROR_SUCCESS) { - exit_help("Failed to query RootDir of release (2).\n"); - } - -#ifdef _DEBUG - fprintf(stderr, "Rootdir: '%s'\n", RootDir); -#endif - - RegCloseKey(hReg); -} - -/* * Read the bootflags. This file contains extra command line options to erl.exe */ void read_bootflags(void) @@ -424,7 +351,8 @@ void read_bootflags(void) exit_help("Need -reldir when -bootflags " "filename has relative path."); } else { - newname = (char *)malloc(strlen(BootFlagsFile)+strlen(RelDir)+strlen(Release)+3); + newname = (char *)malloc(strlen(BootFlagsFile)+ + strlen(RelDir)+strlen(Release)+3); assert(newname); sprintf(newname, "%s\\%s\\%s", RelDir, Release, BootFlagsFile); free(BootFlagsFile); @@ -436,8 +364,6 @@ void read_bootflags(void) fprintf(stderr, "BootFlagsFile: '%s'\n", BootFlagsFile); #endif - - if( (fp=fopen(BootFlagsFile, "rb")) == NULL) { exit_help("Could not open BootFlags file."); } @@ -605,32 +531,49 @@ void complete_options(void) sz = nsz; } if (RelDir == NULL) { - if(DataFileName){ - /* Needs to be absolute for this to work, but we - can try... */ - read_datafile(); - read_registry_keys(); - } else { - /* Impossible to find all data... */ - exit_help("Need either Release directory or an absolute " - "datafile name."); - } - /* Ok, construct our own RelDir from RootDir */ - RelDir = (char *) malloc(strlen(RootDir)+strlen(RELEASE_SUBDIR)+1); - assert(RelDir); - sprintf(RelDir, "%s" RELEASE_SUBDIR, RootDir); + if (!RootDir) { + /* Impossible to find all data... */ + exit_help("Need either Root directory nor Release directory."); + } + /* Ok, construct our own RelDir from RootDir */ + RelDir = (char *) malloc(strlen(RootDir)+strlen(RELEASE_SUBDIR)+1); + assert(RelDir); + sprintf(RelDir, "%s" RELEASE_SUBDIR, RootDir); + read_datafile(); } else { read_datafile(); - read_registry_keys(); } } else { read_datafile(); - read_registry_keys(); } + if( !RootDir ) { + /* Try to construct RootDir from RelDir */ + char *p; + RootDir = malloc(strlen(RelDir)+1); + strcpy(RootDir,RelDir); + p = RootDir+strlen(RootDir)-1; + if (p >= RootDir && (*p == '/' || *p == '\\')) + --p; + while (p >= RootDir && *p != '/' && *p != '\\') + --p; + if (p <= RootDir) { /* Empty RootDir is also an error */ + exit_help("Cannot determine Root directory from " + "Release directory."); + } + *p = '\0'; + } + + + BinDir = (char *) malloc(strlen(RootDir)+strlen(ERTS_SUBDIR_PREFIX)+ + strlen(Version)+strlen(BIN_SUBDIR)+1); + assert(BinDir); + sprintf(BinDir, "%s" ERTS_SUBDIR_PREFIX "%s" BIN_SUBDIR, RootDir, Version); + read_bootflags(); #ifdef _DEBUG fprintf(stderr, "RelDir: '%s'\n", RelDir); + fprintf(stderr, "BinDir: '%s'\n", BinDir); #endif } diff --git a/erts/lib_src/common/erl_printf.c b/erts/lib_src/common/erl_printf.c index 72d18ab6f1..6aa4569d44 100644 --- a/erts/lib_src/common/erl_printf.c +++ b/erts/lib_src/common/erl_printf.c @@ -108,7 +108,7 @@ write_f_add_cr(void *vfp, char* buf, size_t len) if (PUTC(buf[i], (FILE *) vfp) == EOF) return get_error_result(); } - return 0; + return len; } static int @@ -126,13 +126,14 @@ write_f(void *vfp, char* buf, size_t len) #endif if (FWRITE((void *) buf, sizeof(char), len, (FILE *) vfp) != len) return get_error_result(); - return 0; + return len; } static int write_fd(void *vfdp, char* buf, size_t len) { ssize_t size; + size_t res = len; ASSERT(vfdp); while (len) { @@ -149,7 +150,7 @@ write_fd(void *vfdp, char* buf, size_t len) len -= size; } - return 0; + return res; } static int @@ -160,7 +161,7 @@ write_s(void *vwbufpp, char* bufp, size_t len) ASSERT(len > 0); memcpy((void *) *wbufpp, (void *) bufp, len); *wbufpp += len; - return 0; + return len; } @@ -182,6 +183,7 @@ write_sn(void *vwsnap, char* buf, size_t len) memcpy((void *) wsnap->buf, (void *) buf, sz); wsnap->buf += sz; wsnap->len -= sz; + return sz; } return 0; } @@ -201,7 +203,7 @@ write_ds(void *vdsbufp, char* buf, size_t len) } memcpy((void *) (dsbufp->str + dsbufp->str_len), (void *) buf, len); dsbufp->str_len += len; - return 0; + return len; } int diff --git a/erts/preloaded/ebin/erl_prim_loader.beam b/erts/preloaded/ebin/erl_prim_loader.beam Binary files differindex f08620b128..c7daf923c5 100644 --- a/erts/preloaded/ebin/erl_prim_loader.beam +++ b/erts/preloaded/ebin/erl_prim_loader.beam diff --git a/erts/preloaded/src/erl_prim_loader.erl b/erts/preloaded/src/erl_prim_loader.erl index ccfa7978c8..0b4db3d9d0 100644 --- a/erts/preloaded/src/erl_prim_loader.erl +++ b/erts/preloaded/src/erl_prim_loader.erl @@ -396,7 +396,7 @@ handle_timeout(State = #state{loader = inet}, Parent) -> inet_timeout_handler(State, Parent). %%% -------------------------------------------------------- -%%% Functions which handles efile as prim_loader (default). +%%% Functions which handle efile as prim_loader (default). %%% -------------------------------------------------------- %%% Reading many files in parallel is an optimization. @@ -470,7 +470,7 @@ efile_get_file_from_port2(#state{prim_state = PS} = State, File) -> end. efile_get_file_from_port3(State, File, [P | Paths]) -> - case efile_get_file_from_port2(State, concat([P,"/",File])) of + case efile_get_file_from_port2(State, join(P, File)) of {{error,Reason},State1} when Reason =/= emfile -> case Paths of [] -> % return last error @@ -523,7 +523,7 @@ efile_timeout_handler(#state{n_timeouts = N} = State, _Parent) -> end. %%% -------------------------------------------------------- -%%% Functions which handles inet prim_loader +%%% Functions which handle inet prim_loader %%% -------------------------------------------------------- %% @@ -644,7 +644,7 @@ inet_get_file_from_port(State, File, Paths) -> end. inet_get_file_from_port1(File, [P | Paths], State) -> - File1 = concat([P,"/",File]), + File1 = join(P, File), case inet_send_and_rcv({get,File1}, File1, State) of {{error,Reason},State1} -> case Paths of @@ -1152,14 +1152,8 @@ send_all(U, [IP | AL], Cmd) -> send_all(U, AL, Cmd); send_all(_U, [], _) -> ok. -%%concat([A|T]) when is_atom(A) -> %Atom -%% atom_to_list(A) ++ concat(T); -concat([C|T]) when C >= 0, C =< 255 -> - [C|concat(T)]; -concat([S|T]) -> %String - S ++ concat(T); -concat([]) -> - []. +join(P, F) -> + P ++ "/" ++ F. member(X, [X|_]) -> true; member(X, [_|Y]) -> member(X, Y); diff --git a/erts/preloaded/src/init.erl b/erts/preloaded/src/init.erl index e52c813029..c9c434dea0 100644 --- a/erts/preloaded/src/init.erl +++ b/erts/preloaded/src/init.erl @@ -345,7 +345,7 @@ notify(Pids) -> lists:foreach(fun(Pid) -> Pid ! {init,started} end, Pids). %% Garbage collect all info about initially loaded modules. -%% This information is temporary stored until the code_server +%% This information is temporarily stored until the code_server %% is started. %% We force the garbage collection as the init process holds %% this information during the initialisation of the system and diff --git a/erts/preloaded/src/prim_file.erl b/erts/preloaded/src/prim_file.erl index b18a57bfef..30b7a5246a 100644 --- a/erts/preloaded/src/prim_file.erl +++ b/erts/preloaded/src/prim_file.erl @@ -375,7 +375,7 @@ read(#file_descriptor{module = ?MODULE, data = {Port, _}}, Size) {ok, Data}; {error, enomem} -> %% Garbage collecting here might help if - %% the current processes has some old binaries left. + %% the current processes have some old binaries left. erlang:garbage_collect(), case drv_command(Port, <<?FILE_READ, Size:64>>) of {ok, {0, _Data}} when Size =/= 0 -> @@ -825,7 +825,7 @@ list_dir_int(Port, Dir) -> %% Opens a driver port and converts any problems into {error, emfile}. -%% Returns {ok, Port} when succesful. +%% Returns {ok, Port} when successful. drv_open(Driver, Portopts) -> try erlang:open_port({spawn, Driver}, Portopts) of @@ -945,7 +945,7 @@ append([I | Is], R) when is_list(R) -> append(Is, [I | R]); append([], R) -> R. -%% Converts a list of mode atoms into an mode word for the driver. +%% Converts a list of mode atoms into a mode word for the driver. %% Returns {Mode, Portopts, Setopts} where Portopts is a list of %% options for erlang:open_port/2 and Setopts is a list of %% setopt commands to send to the port, or error Reason upon failure. diff --git a/erts/preloaded/src/prim_zip.erl b/erts/preloaded/src/prim_zip.erl index 6a9856fdad..5dc8e3ca13 100644 --- a/erts/preloaded/src/prim_zip.erl +++ b/erts/preloaded/src/prim_zip.erl @@ -21,7 +21,7 @@ -module(prim_zip). -%% unzipping piecemal +%% unzipping piecemeal -export([ open/1, open/3, diff --git a/erts/test/erlc_SUITE.erl b/erts/test/erlc_SUITE.erl index 2b5cb11f02..a9e28672e3 100644 --- a/erts/test/erlc_SUITE.erl +++ b/erts/test/erlc_SUITE.erl @@ -79,7 +79,7 @@ compile_erl(Config) when is_list(Config) -> ?line run(Config, Cmd, FileName, "-Werror", ["compile: warnings being treated as errors\$", - "Warning: function foo/0 is unused\$", + "function foo/0 is unused\$", "_ERROR_"]), %% Check a bad file. diff --git a/lib/Makefile b/lib/Makefile index c443425f8b..7e52d6e32e 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -70,19 +70,15 @@ endif ifdef BOOTSTRAP SUB_DIRECTORIES = \ - kernel stdlib compiler orber/include + kernel stdlib compiler else ifdef SECONDARY_BOOTSTRAP SUB_DIRECTORIES = hipe parsetools asn1/src else ifdef TERTIARY_BOOTSTRAP - SUB_DIRECTORIES = snmp - else - ifdef FOURTH_BOOTSTRAP - SUB_DIRECTORIES = sasl jinterface ic syntax_tools - else # Not bootstrap build - SUB_DIRECTORIES = $(ERTS_SUB_DIRECTORIES) $(OTHER_SUB_DIRECTORIES) - endif + SUB_DIRECTORIES = snmp sasl jinterface ic syntax_tools + else # Not bootstrap build + SUB_DIRECTORIES = $(ERTS_SUB_DIRECTORIES) $(OTHER_SUB_DIRECTORIES) endif endif endif diff --git a/lib/asn1/doc/src/asn1ct.xml b/lib/asn1/doc/src/asn1ct.xml index 13e6977419..0b9ec3df7f 100644 --- a/lib/asn1/doc/src/asn1ct.xml +++ b/lib/asn1/doc/src/asn1ct.xml @@ -53,7 +53,7 @@ <v>Option = ber_bin | per_bin | uper_bin | der | compact_bit_string | noobj | {n2n,EnumTypeName} |{outdir,Dir} | {i,IncludeDir} | optimize | nif | asn1config | undec_rest | {inline,OutputName} | inline | - {macro_name_prefix, Prefix} | {record_name_prefix, Prefix} | verbose</v> + {macro_name_prefix, Prefix} | {record_name_prefix, Prefix} | verbose | warnings_as_errors</v> <v>OldOption = ber | per</v> <v>Reason = term()</v> <v>Prefix = string()</v> @@ -298,6 +298,10 @@ Binary = binary() <p>Causes more verbose information from the compiler describing what it is doing.</p> </item> + <tag><c>warnings_as_errors</c></tag> + <item> + <p>Causes warnings to be treated as errors.</p> + </item> </taglist> <p>Any additional option that is applied will be passed to the final step when the generated .erl file is compiled. diff --git a/lib/asn1/src/asn1ct.erl b/lib/asn1/src/asn1ct.erl index a170dd8660..85bb5b2f28 100644 --- a/lib/asn1/src/asn1ct.erl +++ b/lib/asn1/src/asn1ct.erl @@ -39,7 +39,7 @@ add_tobe_refed_func/1,add_generated_refed_func/1, maybe_rename_function/3,latest_sindex/0,current_sindex/0, set_current_sindex/1,next_sindex/0,maybe_saved_sindex/2, - parse_and_save/2,verbose/3,warning/3,error/3]). + parse_and_save/2,verbose/3,warning/3,warning/4,error/3]). -include("asn1_records.hrl"). -include_lib("stdlib/include/erl_compile.hrl"). @@ -835,10 +835,13 @@ generate({true,{M,_Module,GenTOrV}},OutFile,EncodingRule,Options) -> case catch specialized_decode_prepare(EncodingRule,M,GenTOrV,Options) of {error, enoent} -> ok; {error, Reason} -> warning("Error in configuration " - "file: ~n~p~n",[Reason],Options); + "file: ~n~p~n",[Reason],Options, + "Error in configuration file"); {'EXIT',Reason} -> warning("Internal error when " "analyzing configuration " - "file: ~n~p~n",[Reason],Options); + "file: ~n~p~n",[Reason],Options, + "Internal error when " + "analyzing configuration"); _ -> ok end, @@ -2534,14 +2537,14 @@ type_check(#'Externaltypereference'{}) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Report functions. %% -%% Errors messages are controlled with the 'errors' compiler option +%% Error messages are controlled with the 'errors' compiler option %% Warning messages are controlled with the 'warnings' compiler option %% Verbose messages are controlled with the 'verbose' compiler option error(Format, Args, S) -> case is_error(S) of true -> - io:format("Error: " ++ Format, Args); + io:format(Format, Args); false -> ok end. @@ -2554,6 +2557,17 @@ warning(Format, Args, S) -> ok end. +warning(Format, Args, S, Reason) -> + case {is_werr(S), is_error(S), is_warning(S)} of + {true, true, _} -> + io:format(Format, Args), + throw({error, Reason}); + {false, _, true} -> + io:format(Format, Args); + _ -> + ok + end. + verbose(Format, Args, S) -> case is_verbose(S) of true -> @@ -2576,3 +2590,8 @@ is_verbose(S) when is_record(S, state) -> is_verbose(S#state.options); is_verbose(O) -> lists:member(verbose, O). + +is_werr(S) when is_record(S, state) -> + is_werr(S#state.options); +is_werr(O) -> + lists:member(warnings_as_errors, O). diff --git a/lib/asn1/src/asn1ct_check.erl b/lib/asn1/src/asn1ct_check.erl index efd731f052..e318477234 100644 --- a/lib/asn1/src/asn1ct_check.erl +++ b/lib/asn1/src/asn1ct_check.erl @@ -2031,7 +2031,7 @@ get_objectset_def2(_S,T = #typedef{typespec=#'ObjectSet'{}},_CField) -> T; get_objectset_def2(S,T,_CField) -> asn1ct:warning("get_objectset_def2: uncontrolled object set structure:~n~p~n", - [T],S). + [T],S,"get_objectset_def2: uncontrolled object set structure"). type_name(S,#type{def=Def}) -> CurrMod = S#state.mname, @@ -2705,7 +2705,7 @@ normalize_value(S,Type,{'DEFAULT',Value},NameList) -> normalize_objectclassfieldvalue(S,Value,NL); Err -> asn1ct:warning("could not check default value ~p~nType:~n~p~nNameList:~n~p~n", - [Value,Type,Err],S), + [Value,Type,Err],S,"could not check default value"), Value end; normalize_value(S,Type,Val,NameList) -> @@ -2791,22 +2791,27 @@ normalize_bitstring(S,Value,Type)-> case catch lists:map(F,RecList) of {error,Reason} -> asn1ct:warning("default value not " - "compatible with type definition ~p~n", - [Reason],S), + "compatible with type definition ~p~n", + [Reason],S, + "default value not " + "compatible with type definition"), Value; NewList -> NewList end; _ -> asn1ct:warning("default value not " - "compatible with type definition ~p~n", - [RecList],S), + "compatible with type definition ~p~n", + [RecList],S, + "default value not " + "compatible with type definition"), Value end; {Name,String} when is_atom(Name) -> normalize_bitstring(S,String,Type); Other -> - asn1ct:warning("illegal default value ~p~n",[Other],S), + asn1ct:warning("illegal default value ~p~n",[Other],S, + "illegal default value"), Value end. @@ -2846,12 +2851,14 @@ normalize_octetstring(S,Value,CType) -> lists:map(fun([])-> ok; (H)when H > 255-> asn1ct:warning("not legal octet value ~p in OCTET STRING, ~p~n", - [H,List],S); + [H,List],S, + "not legal octet value ~p in OCTET STRING"); (_)-> ok end, List), List; Other -> - asn1ct:warning("unknown default value ~p~n",[Other],S), + asn1ct:warning("unknown default value ~p~n",[Other],S, + "unknown default value"), Value end. @@ -2908,13 +2915,15 @@ normalize_enumerated(S,{Name,EnumV},CType) when is_atom(Name) -> normalize_enumerated(S,Value,{CType1,CType2}) when is_list(CType1), is_list(CType2)-> normalize_enumerated(S,Value,CType1++CType2); normalize_enumerated(S,V,CType) -> - asn1ct:warning("Enumerated unknown type ~p~n",[CType],S), + asn1ct:warning("Enumerated unknown type ~p~n",[CType],S, + "Enumerated unknown type"), V. normalize_enumerated2(S,V,Enum) -> case lists:keysearch(V,1,Enum) of {value,{Val,_}} -> Val; _ -> - asn1ct:warning("Enumerated value is not correct ~p~n",[V],S), + asn1ct:warning("enumerated value is not correct ~p~n",[V],S, + "enumerated value is not correct"), V end. @@ -2925,7 +2934,8 @@ normalize_choice(S,{'CHOICE',{C,V}},CType,NameList) when is_atom(C) -> {C,normalize_value(S,CT,{'DEFAULT',V}, [Name|NameList])}; Other -> - asn1ct:warning("Wrong format of type/value ~p/~p~n",[Other,V],S), + asn1ct:warning("Wrong format of type/value ~p/~p~n",[Other,V],S, + "Wrong format of type/value"), {C,V} end; normalize_choice(S,{'DEFAULT',ValueList},CType,NameList) when is_list(ValueList) -> @@ -3101,7 +3111,8 @@ normalize_s_of(SorS,S,Value,Type,NameList) when is_list(Value) -> List when is_list(List) -> List; _ -> - asn1ct:warning("~p could not handle value ~p~n",[SorS,Value],S), + asn1ct:warning("~p could not handle value ~p~n",[SorS,Value],S, + "could not handle value"), Value end; normalize_s_of(SorS,S,Value,Type,NameList) @@ -3159,7 +3170,8 @@ get_normalized_value(S,Val,Type,Func,AddArg) -> V2 = sort_val_if_set(AddArg,NewVal,Type), call_Func(update_state(S,ExtM),V2,Type,Func,AddArg); _ -> - asn1ct:warning("default value not comparable ~p~n",[Val],S), + asn1ct:warning("default value not comparable ~p~n",[Val],S, + "default value not comparable"), Val end. @@ -5756,7 +5768,8 @@ ascending_order_check1(S,TypeName, [C1 = #'ComponentType'{tags=[{_,T}|_]}, C2 = #'ComponentType'{tags=[{_,T}|_]}|Rest]) -> asn1ct:warning("Indistinct tag ~p in SET ~p, components ~p and ~p~n", - [T,TypeName,C1#'ComponentType'.name,C2#'ComponentType'.name],S), + [T,TypeName,C1#'ComponentType'.name,C2#'ComponentType'.name],S, + "Indistinct tag in SET"), ascending_order_check1(S,TypeName,[C2|Rest]); ascending_order_check1(S,TypeName, [C1 = #'ComponentType'{tags=[{'UNIVERSAL',T1}|_]}, @@ -5764,9 +5777,10 @@ ascending_order_check1(S,TypeName, case (decode_type(T1) == decode_type(T2)) of true -> asn1ct:warning("Indistinct tags ~p and ~p in" - " SET ~p, components ~p and ~p~n", - [T1,T2,TypeName,C1#'ComponentType'.name, - C2#'ComponentType'.name],S), + " SET ~p, components ~p and ~p~n", + [T1,T2,TypeName,C1#'ComponentType'.name, + C2#'ComponentType'.name],S, + "Indistinct tags and in SET"), ascending_order_check1(S,TypeName,[C2|Rest]); _ -> ascending_order_check1(S,TypeName,[C2|Rest]) diff --git a/lib/asn1/src/asn1ct_value.erl b/lib/asn1/src/asn1ct_value.erl index 693e039a13..d099376b1b 100644 --- a/lib/asn1/src/asn1ct_value.erl +++ b/lib/asn1/src/asn1ct_value.erl @@ -435,11 +435,11 @@ get_encoding_rule(M) -> open_type_value(ber) -> [4,9,111,112,101,110,95,116,121,112,101]; open_type_value(ber_bin) -> - [4,9,111,112,101,110,95,116,121,112,101]; -% <<4,9,111,112,101,110,95,116,121,112,101>>; +% [4,9,111,112,101,110,95,116,121,112,101]; + <<4,9,111,112,101,110,95,116,121,112,101>>; open_type_value(ber_bin_v2) -> - [4,9,111,112,101,110,95,116,121,112,101]; -% <<4,9,111,112,101,110,95,116,121,112,101>>; +% [4,9,111,112,101,110,95,116,121,112,101]; + <<4,9,111,112,101,110,95,116,121,112,101>>; open_type_value(per) -> "\n\topen_type"; %octet string value "open_type" open_type_value(per_bin) -> diff --git a/lib/asn1/test/asn1_SUITE.erl.src b/lib/asn1/test/asn1_SUITE.erl.src index 5339ad78c7..124ee2d2bb 100644 --- a/lib/asn1/test/asn1_SUITE.erl.src +++ b/lib/asn1/test/asn1_SUITE.erl.src @@ -2232,8 +2232,10 @@ test_compile_options(Config) -> ?line ok = test_compile_options:path(Config), ?line ok = test_compile_options:noobj(Config), ?line ok = test_compile_options:record_name_prefix(Config), - ?line ok = test_compile_options:verbose(Config) + ?line ok = test_compile_options:verbose(Config), + ?line ok = test_compile_options:warnings_as_errors(Config) end. + testDoubleEllipses(suite) -> []; testDoubleEllipses(Config) -> ?line testDoubleEllipses:compile(Config,?BER,[]), diff --git a/lib/asn1/test/test_compile_options.erl b/lib/asn1/test/test_compile_options.erl index 5e027cdedb..5cb212eddf 100644 --- a/lib/asn1/test/test_compile_options.erl +++ b/lib/asn1/test/test_compile_options.erl @@ -24,7 +24,7 @@ -export([wrong_path/1,comp/2,path/1,ticket_6143/1,noobj/1, - record_name_prefix/1,verbose/1]). + record_name_prefix/1,verbose/1,warnings_as_errors/1]). %% OTP-5689 wrong_path(Config) -> @@ -141,6 +141,43 @@ verbose(Config) when is_list(Config) -> ?line [] = test_server:capture_get(), ok. +warnings_as_errors(Config) when is_list(Config) -> + PrivDir = ?config(priv_dir,Config), + Asn1File = filename:join([PrivDir,"WERROR.asn1"]), + OutFile = filename:join([PrivDir,"WERROR.erl"]), + Opts = [{outdir,PrivDir},noobj,verbose], + + %% Generate WERR.asn to emit warning + %% Warning: Wrong format of type/value + %% false/{'Externalvaluereference',_,'WERR',noInvokeId} + Warn = <<"WERROR DEFINITIONS IMPLICIT TAGS ::=\n" + "\n" + "BEGIN\n" + "\n" + "InvokeId ::= CHOICE\n" + "{\n" + " present INTEGER,\n" + " absent NULL\n" + "}\n" + "\n" + "noInvokeId InvokeId ::= absent:NULL\n" + "\n" + "NoInvokeId InvokeId ::= {noInvokeId}\n" + "\n" + "END -- end of useful definitions.\n">>, + ?line ok = file:write_file(Asn1File, Warn), + + %% Test warnings_as_errors compile + ?line false = filelib:is_regular(OutFile), + ?line {error, _} = asn1ct:compile(Asn1File, [warnings_as_errors|Opts]), + ?line false = filelib:is_regular(OutFile), + + %% Test normal compile + ?line ok = asn1ct:compile(Asn1File, Opts), + ?line true = filelib:is_regular(OutFile), + ?line ok = file:delete(OutFile), + ok. + outfiles_check(OutDir) -> outfiles_check(OutDir,outfiles1()). diff --git a/lib/common_test/doc/src/ct_hooks.xml b/lib/common_test/doc/src/ct_hooks.xml index 0ece3199bb..f9fc1858d0 100644 --- a/lib/common_test/doc/src/ct_hooks.xml +++ b/lib/common_test/doc/src/ct_hooks.xml @@ -302,7 +302,7 @@ <p>Note that it is not possible to add CTH's here right now, that feature might be added later, - but it would right now break backwards compatability.</p> + but it would right now break backwards compatibility.</p> </desc> </func> diff --git a/lib/common_test/doc/src/ct_hooks_chapter.xml b/lib/common_test/doc/src/ct_hooks_chapter.xml index dbb4310040..3b9620d0f2 100644 --- a/lib/common_test/doc/src/ct_hooks_chapter.xml +++ b/lib/common_test/doc/src/ct_hooks_chapter.xml @@ -405,6 +405,38 @@ terminate(State) -> ok.</code> </section> + <marker id="builtin_cths"/> + <section> + <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. + Some of these are enabled by default when starting running common_test, + they can be disabled by setting <c>enable_builtin_hooks</c> to + <c>false</c> on the command line or in the test specification. In the + table below there is a list of all current CTHs which are delivered with + Common Test.</p> + + <table> + <row> + <cell><em>CTH Name</em></cell> + <cell><em>Is Built-in</em></cell> + <cell><em>Description</em></cell> + </row> + <row> + <cell>cth_log_redirect</cell> + <cell>yes</cell> + <cell>Captures all error_logger and SASL logging events and prints them + to the current test case log. If an event can not be associated with a + testcase it will be printed in the common test framework log. This will + happen for testcases which are run in parallel and events which occur + inbetween testcases. You can configure the level of + <seealso marker="sasl:sasl_app">SASL</seealso> events report + using the normal SASL mechanisms. </cell> + </row> + </table> + + </section> + </chapter> diff --git a/lib/common_test/doc/src/run_test_chapter.xml b/lib/common_test/doc/src/run_test_chapter.xml index e668568795..816aa5b1eb 100644 --- a/lib/common_test/doc/src/run_test_chapter.xml +++ b/lib/common_test/doc/src/run_test_chapter.xml @@ -150,6 +150,8 @@ <seealso marker="event_handler_chapter#event_handling">event handlers</seealso> including start arguments.</item> <item><c><![CDATA[-ct_hooks <ct_hooks>]]></c>, to install <seealso marker="ct_hooks_chapter#installing">Common Test Hooks</seealso> including start arguments.</item> + <item><c><![CDATA[-enable_builtin_hooks <bool>]]></c>, to enable/disable + <seealso marker="ct_hooks_chapter#builtin_cths">Built-in Common Test Hooks</seealso>. Default is <c>true</c>.</item> <item><c><![CDATA[-include]]></c>, specifies include directories (see above).</item> <item><c><![CDATA[-no_auto_compile]]></c>, disables the automatic test suite compilation feature (see above).</item> <item><c><![CDATA[-multiply_timetraps <n>]]></c>, extends <seealso marker="write_test_chapter#timetraps">timetrap @@ -450,6 +452,8 @@ {ct_hooks, CTHModules}. {ct_hooks, NodeRefs, CTHModules}. + + {enable_builtin_hooks, Bool}. </pre> <p>Test terms:</p> <pre> @@ -631,7 +635,11 @@ <p>The minor log file contain full details of every single test case, each one in a separate file. This way the files should be easy to compare with previous test runs, even if the set of - test cases change.</p> + test cases change. If SASL is running those logs will also be + printed there by the + <seealso marker="common_test:ct_hooks_chapter#builtin_cths"> + cth_log_redirect built-in hook</seealso>. + </p> <p>Which information goes where is user configurable via the test server controller. Three threshold values determine what diff --git a/lib/common_test/src/Makefile b/lib/common_test/src/Makefile index 5b23558a96..125aa828fb 100644 --- a/lib/common_test/src/Makefile +++ b/lib/common_test/src/Makefile @@ -68,7 +68,8 @@ MODULES= \ ct_config_xml \ ct_slave \ ct_hooks\ - ct_hooks_lock + ct_hooks_lock\ + cth_log_redirect TARGET_MODULES= $(MODULES:%=$(EBIN)/%) BEAM_FILES= $(MODULES:%=$(EBIN)/%.$(EMULATOR)) diff --git a/lib/common_test/src/ct.erl b/lib/common_test/src/ct.erl index 66da3ef742..3a96190256 100644 --- a/lib/common_test/src/ct.erl +++ b/lib/common_test/src/ct.erl @@ -149,7 +149,7 @@ run(TestDirs) -> %%% {repeat,N} | {duration,DurTime} | {until,StopTime} | %%% {force_stop,Bool} | {decrypt,DecryptKeyOrFile} | %%% {refresh_logs,LogDir} | {basic_html,Bool} | -%%% {ct_hooks, CTHs} +%%% {ct_hooks, CTHs} | {enable_builtin_hooks,Bool} %%% TestDirs = [string()] | string() %%% Suites = [string()] | string() %%% Cases = [atom()] | atom() diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl index 9e597edf38..2ebc6c311a 100644 --- a/lib/common_test/src/ct_framework.erl +++ b/lib/common_test/src/ct_framework.erl @@ -437,7 +437,7 @@ try_set_default(Name,Key,Info,Where) -> %%% @doc Test server framework callback, called by the test_server %%% when a test case is finished. end_tc(Mod, Fun, Args) -> - %% Have to keep end_tc/3 for backwards compatabilty issues + %% Have to keep end_tc/3 for backwards compatibility issues end_tc(Mod, Fun, Args, '$end_tc_dummy'). end_tc(?MODULE,error_in_suite,_, _) -> % bad start! ok; diff --git a/lib/common_test/src/ct_hooks.erl b/lib/common_test/src/ct_hooks.erl index d5b585a831..ffafc582cf 100644 --- a/lib/common_test/src/ct_hooks.erl +++ b/lib/common_test/src/ct_hooks.erl @@ -34,6 +34,12 @@ %% If you change this, remember to update ct_util:look -> stop clause as well. -define(config_name, ct_hooks). +%% All of the hooks which are to be started by default. Remove by issuing +%% -enable_builtin_hooks false to when starting common test. +-define(BUILTIN_HOOKS,[#ct_hook_config{ module = cth_log_redirect, + opts = [], + prio = ctfirst }]). + -record(ct_hook_config, {id, module, prio, scope, opts = [], state = []}). %% ------------------------------------------------------------------------- @@ -44,7 +50,8 @@ -spec init(State :: term()) -> ok | {error, Reason :: term()}. init(Opts) -> - call(get_new_hooks(Opts, undefined), ok, init, []). + call(get_new_hooks(Opts, undefined) ++ get_builtin_hooks(Opts), + ok, init, []). %% @doc Called after all suites are done. @@ -283,6 +290,14 @@ get_new_hooks(Config) when is_list(Config) -> get_new_hooks(_Config) -> []. +get_builtin_hooks(Opts) -> + case proplists:get_value(enable_builtin_hooks,Opts) of + false -> + []; + _Else -> + [{HookConf, call_id, undefined} || HookConf <- ?BUILTIN_HOOKS] + end. + save_suite_data_async(Hooks) -> ct_util:save_suite_data_async(?config_name, Hooks). @@ -290,7 +305,7 @@ get_hooks() -> lists:keysort(#ct_hook_config.prio,ct_util:read_suite_data(?config_name)). %% Sort all calls in this order: -%% call_id < call_init < Hook Priority 1 < .. < Hook Priority N +%% call_id < call_init < ctfirst < Priority 1 < .. < Priority N < ctlast %% If Hook Priority is equal, check when it has been installed and %% sort on that instead. resort(Calls, Hooks) -> @@ -311,6 +326,14 @@ resort(Calls, Hooks) -> %% If priorities are equal, we check the position in the %% hooks list pos(Id1,Hooks) < pos(Id2,Hooks); + P1 == ctfirst -> + true; + P2 == ctfirst -> + false; + P1 == ctlast -> + false; + P2 == ctlast -> + true; true -> P1 < P2 end diff --git a/lib/common_test/src/ct_logs.erl b/lib/common_test/src/ct_logs.erl index b839521e24..6a90441d53 100644 --- a/lib/common_test/src/ct_logs.erl +++ b/lib/common_test/src/ct_logs.erl @@ -36,7 +36,7 @@ -export([make_all_suites_index/1,make_all_runs_index/1]). %% Logging stuff directly from testcase --export([tc_log/3,tc_print/3,tc_pal/3, +-export([tc_log/3,tc_print/3,tc_pal/3,ct_log/3, basic_html/0]). %% Simulate logger process for use without ct environment running @@ -360,6 +360,23 @@ tc_pal(Category,Format,Args) -> ok. +%%%----------------------------------------------------------------- +%%% @spec tc_pal(Category,Format,Args) -> ok +%%% Category = atom() +%%% Format = string() +%%% Args = list() +%%% +%%% @doc Print and log to the ct framework log +%%% +%%% <p>This function is called by internal ct functions to +%%% force logging to the ct framework log</p> +ct_log(Category,Format,Args) -> + cast({ct_log,[{div_header(Category),[]}, + {Format,Args}, + {div_footer(),[]}]}), + ok. + + %%%================================================================= %%% Internal functions int_header() -> @@ -516,7 +533,12 @@ logger_loop(State) -> {clear_stylesheet,_} when State#logger_state.stylesheet == undefined -> logger_loop(State); {clear_stylesheet,_} -> - logger_loop(State#logger_state{stylesheet=undefined}); + logger_loop(State#logger_state{stylesheet=undefined}); + {ct_log, List} -> + Fd = State#logger_state.ct_log_fd, + [begin io:format(Fd,Str,Args),io:nl(Fd) end || + {Str,Args} <- List], + logger_loop(State); stop -> io:format(State#logger_state.ct_log_fd, int_header()++int_footer(), diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl index 877ec9c7dd..0715b8abf8 100644 --- a/lib/common_test/src/ct_run.erl +++ b/lib/common_test/src/ct_run.erl @@ -55,6 +55,7 @@ config = [], event_handlers = [], ct_hooks = [], + enable_builtin_hooks = true, include = [], silent_connections, stylesheet, @@ -173,6 +174,10 @@ script_start1(Parent, Args) -> end, false, Args), EvHandlers = event_handler_args2opts(Args), CTHooks = ct_hooks_args2opts(Args), + EnableBuiltinHooks = get_start_opt(enable_builtin_hooks, + fun([CT]) -> list_to_atom(CT); + ([]) -> true + end, true, Args), %% check flags and set corresponding application env variables @@ -237,6 +242,7 @@ script_start1(Parent, Args) -> StartOpts = #opts{label = Label, vts = Vts, shell = Shell, cover = Cover, logdir = LogDir, event_handlers = EvHandlers, ct_hooks = CTHooks, + enable_builtin_hooks = EnableBuiltinHooks, include = IncludeDirs, silent_connections = SilentConns, stylesheet = Stylesheet, @@ -311,6 +317,11 @@ script_start2(StartOpts = #opts{vts = undefined, AllCTHooks = merge_vals( [StartOpts#opts.ct_hooks, SpecStartOpts#opts.ct_hooks]), + + EnableBuiltinHooks = + choose_val( + StartOpts#opts.enable_builtin_hooks, + SpecStartOpts#opts.enable_builtin_hooks), AllInclude = merge_vals([StartOpts#opts.include, SpecStartOpts#opts.include]), @@ -323,6 +334,8 @@ script_start2(StartOpts = #opts{vts = undefined, config = SpecStartOpts#opts.config, event_handlers = AllEvHs, ct_hooks = AllCTHooks, + enable_builtin_hooks = + EnableBuiltinHooks, include = AllInclude, multiply_timetraps = MultTT, scale_timetraps = ScaleTT}} @@ -339,9 +352,7 @@ script_start2(StartOpts = #opts{vts = undefined, {[],_} -> {error,no_testspec_specified}; {undefined,_} -> % no testspec used - case check_and_install_configfiles(InitConfig, TheLogDir, - Opts#opts.event_handlers, - Opts#opts.ct_hooks) of + case check_and_install_configfiles(InitConfig, TheLogDir, Opts) of ok -> % go on read tests from start flags script_start3(Opts#opts{config=InitConfig, logdir=TheLogDir}, Args); @@ -351,9 +362,7 @@ script_start2(StartOpts = #opts{vts = undefined, {_,_} -> % testspec used %% merge config from start flags with config from testspec AllConfig = merge_vals([InitConfig, Opts#opts.config]), - case check_and_install_configfiles(AllConfig, TheLogDir, - Opts#opts.event_handlers, - Opts#opts.ct_hooks) of + case check_and_install_configfiles(AllConfig, TheLogDir, Opts) of ok -> % read tests from spec {Run,Skip} = ct_testspec:prepare_tests(Terms, node()), do_run(Run, Skip, Opts#opts{config=AllConfig, @@ -367,9 +376,7 @@ script_start2(StartOpts, Args) -> %% read config/userconfig from start flags InitConfig = ct_config:prepare_config_list(Args), LogDir = which(logdir, StartOpts#opts.logdir), - case check_and_install_configfiles(InitConfig, LogDir, - StartOpts#opts.event_handlers, - StartOpts#opts.ct_hooks) of + case check_and_install_configfiles(InitConfig, LogDir, StartOpts) of ok -> % go on read tests from start flags script_start3(StartOpts#opts{config=InitConfig, logdir=LogDir}, Args); @@ -377,12 +384,17 @@ script_start2(StartOpts, Args) -> Error end. -check_and_install_configfiles(Configs, LogDir, EvHandlers, CTHooks) -> +check_and_install_configfiles( + Configs, LogDir, #opts{ + event_handlers = EvHandlers, + ct_hooks = CTHooks, + enable_builtin_hooks = EnableBuiltinHooks} ) -> case ct_config:check_config_files(Configs) of false -> install([{config,Configs}, {event_handler,EvHandlers}, - {ct_hooks,CTHooks}], LogDir); + {ct_hooks,CTHooks}, + {enable_builtin_hooks,EnableBuiltinHooks}], LogDir); {value,{error,{nofile,File}}} -> {error,{cant_read_config_file,File}}; {value,{error,{wrong_config,Message}}}-> @@ -451,18 +463,19 @@ script_start4(#opts{vts = true, config = Config, event_handlers = EvHandlers, script_start4(#opts{label = Label, shell = true, config = Config, event_handlers = EvHandlers, ct_hooks = CTHooks, + enable_builtin_hooks = EnableBuiltinHooks, logdir = LogDir, testspecs = Specs}, _Args) -> %% label - used by ct_logs application:set_env(common_test, test_label, Label), - InstallOpts = [{config,Config},{event_handler,EvHandlers}, - {ct_hooks, CTHooks}], if Config == [] -> ok; true -> io:format("\nInstalling: ~p\n\n", [Config]) end, - case install(InstallOpts) of + case install([{config,Config},{event_handler,EvHandlers}, + {ct_hooks, CTHooks}, + {enable_builtin_hooks,EnableBuiltinHooks}]) of ok -> ct_util:start(interactive, LogDir), log_ts_names(Specs), @@ -682,6 +695,11 @@ run_test1(StartOpts) -> %% CT Hooks CTHooks = get_start_opt(ct_hooks, value, [], StartOpts), + EnableBuiltinHooks = get_start_opt(enable_builtin_hooks, + fun(EBH) when EBH == true; + EBH == false -> + EBH + end, true, StartOpts), %% silent connections SilentConns = get_start_opt(silent_connections, @@ -754,6 +772,7 @@ run_test1(StartOpts) -> cover = Cover, step = Step, logdir = LogDir, config = CfgFiles, event_handlers = EvHandlers, ct_hooks = CTHooks, + enable_builtin_hooks = EnableBuiltinHooks, include = Include, silent_connections = SilentConns, stylesheet = Stylesheet, @@ -808,24 +827,28 @@ run_spec_file(Relaxed, AllCTHooks = merge_vals([Opts#opts.ct_hooks, SpecOpts#opts.ct_hooks]), + EnableBuiltinHooks = choose_val(Opts#opts.enable_builtin_hooks, + SpecOpts#opts.enable_builtin_hooks), application:set_env(common_test, include, AllInclude), - case check_and_install_configfiles(AllConfig, - which(logdir,LogDir), - AllEvHs, - AllCTHooks) of + Opts1 = Opts#opts{label = Label, + cover = Cover, + logdir = which(logdir, LogDir), + config = AllConfig, + event_handlers = AllEvHs, + include = AllInclude, + testspecs = AbsSpecs, + multiply_timetraps = MultTT, + scale_timetraps = ScaleTT, + ct_hooks = AllCTHooks, + enable_builtin_hooks = EnableBuiltinHooks + }, + + case check_and_install_configfiles(AllConfig,Opts1#opts.logdir, + Opts1) of ok -> - Opts1 = Opts#opts{label = Label, - cover = Cover, - logdir = which(logdir, LogDir), - config = AllConfig, - event_handlers = AllEvHs, - include = AllInclude, - testspecs = AbsSpecs, - multiply_timetraps = MultTT, - scale_timetraps = ScaleTT, - ct_hooks = AllCTHooks}, + {Run,Skip} = ct_testspec:prepare_tests(TS, node()), reformat_result(catch do_run(Run, Skip, Opts1, StartOpts)); {error,GCFReason} -> @@ -834,13 +857,10 @@ run_spec_file(Relaxed, end. run_prepared(Run, Skip, Opts = #opts{logdir = LogDir, - config = CfgFiles, - event_handlers = EvHandlers, - ct_hooks = CTHooks}, + config = CfgFiles }, StartOpts) -> LogDir1 = which(logdir, LogDir), - case check_and_install_configfiles(CfgFiles, LogDir1, - EvHandlers, CTHooks) of + case check_and_install_configfiles(CfgFiles, LogDir1, Opts) of ok -> reformat_result(catch do_run(Run, Skip, Opts#opts{logdir = LogDir1}, StartOpts)); @@ -872,7 +892,8 @@ check_config_file(Callback, File)-> run_dir(Opts = #opts{logdir = LogDir, config = CfgFiles, event_handlers = EvHandlers, - ct_hooks = CTHook }, StartOpts) -> + ct_hooks = CTHook, + enable_builtin_hooks = EnableBuiltinHooks }, StartOpts) -> LogDir1 = which(logdir, LogDir), Opts1 = Opts#opts{logdir = LogDir1}, AbsCfgFiles = @@ -895,7 +916,8 @@ run_dir(Opts = #opts{logdir = LogDir, end, CfgFiles), case install([{config,AbsCfgFiles}, {event_handler,EvHandlers}, - {ct_hooks, CTHook}], LogDir1) of + {ct_hooks, CTHook}, + {enable_builtin_hooks,EnableBuiltinHooks}], LogDir1) of ok -> ok; {error,IReason} -> exit(IReason) end, @@ -999,9 +1021,8 @@ run_testspec1(TestSpec) -> end, application:set_env(common_test, include, AllInclude), LogDir1 = which(logdir,Opts#opts.logdir), - case check_and_install_configfiles(Opts#opts.config, LogDir1, - Opts#opts.event_handlers, - Opts#opts.ct_hooks) of + case check_and_install_configfiles( + Opts#opts.config, LogDir1, Opts) of ok -> Opts1 = Opts#opts{testspecs = [], logdir = LogDir1, @@ -1020,6 +1041,7 @@ get_data_for_node(#testspec{label = Labels, userconfig = UsrCfgs, event_handler = EvHs, ct_hooks = CTHooks, + enable_builtin_hooks = EnableBuiltinHooks, include = Incl, multiply_timetraps = MTs, scale_timetraps = STs}, Node) -> @@ -1042,6 +1064,7 @@ get_data_for_node(#testspec{label = Labels, config = ConfigFiles, event_handlers = EvHandlers, ct_hooks = FiltCTHooks, + enable_builtin_hooks = EnableBuiltinHooks, include = Include, multiply_timetraps = MT, scale_timetraps = ST}. @@ -2067,8 +2090,11 @@ get_start_opt(Key, IfExists, IfNotExists, Args) -> end. ct_hooks_args2opts(Args) -> - ct_hooks_args2opts( - proplists:get_value(ct_hooks, Args, []),[]). + lists:foldl(fun({ct_hooks,Hooks}, Acc) -> + ct_hooks_args2opts(Hooks,Acc); + (_,Acc) -> + Acc + end,[],Args). ct_hooks_args2opts([CTH,Arg,Prio,"and"| Rest],Acc) -> ct_hooks_args2opts(Rest,[{list_to_atom(CTH), diff --git a/lib/common_test/src/ct_testspec.erl b/lib/common_test/src/ct_testspec.erl index d845358bb2..96971ccfc7 100644 --- a/lib/common_test/src/ct_testspec.erl +++ b/lib/common_test/src/ct_testspec.erl @@ -646,6 +646,10 @@ add_tests([{ct_hooks, _Node, []}|Ts], Spec) -> add_tests([{ct_hooks, Hooks}|Ts], Spec) -> add_tests([{ct_hooks, all_nodes, Hooks}|Ts], Spec); +%% -- enable_builtin_hooks -- +add_tests([{enable_builtin_hooks,Bool}|Ts],Spec) -> + add_tests(Ts, Spec#testspec{ enable_builtin_hooks = Bool }); + %% --- include --- add_tests([{include,all_nodes,InclDirs}|Ts],Spec) -> Tests = lists:map(fun(N) -> {include,N,InclDirs} end, list_nodes(Spec)), @@ -1104,6 +1108,7 @@ valid_terms() -> {event_handler,4}, {ct_hooks,2}, {ct_hooks,3}, + {enable_builtin_hooks,1}, {multiply_timetraps,2}, {multiply_timetraps,3}, {scale_timetraps,2}, diff --git a/lib/common_test/src/ct_util.hrl b/lib/common_test/src/ct_util.hrl index 556f88c84d..dbe9d9b4e6 100644 --- a/lib/common_test/src/ct_util.hrl +++ b/lib/common_test/src/ct_util.hrl @@ -37,6 +37,7 @@ userconfig=[], event_handler=[], ct_hooks=[], + enable_builtin_hooks=true, include=[], multiply_timetraps=[], scale_timetraps=[], diff --git a/lib/common_test/src/cth_log_redirect.erl b/lib/common_test/src/cth_log_redirect.erl new file mode 100644 index 0000000000..14663b7738 --- /dev/null +++ b/lib/common_test/src/cth_log_redirect.erl @@ -0,0 +1,111 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +-module(cth_log_redirect). + +%%% @doc Common Test Framework functions handling test specifications. +%%% +%%% <p>This module redirects sasl and error logger info to common test log.</p> +%%% @end + + +%% CTH Callbacks +-export([id/1, init/2, post_init_per_group/4, pre_end_per_group/3, + post_end_per_testcase/4]). + +%% Event handler Callbacks +-export([init/1, + handle_event/2, handle_call/2, handle_info/2, + terminate/2]). + +id(_Opts) -> + ?MODULE. + +init(?MODULE, _Opts) -> + error_logger:add_report_handler(?MODULE), + tc_log. + +post_init_per_group(Group, Config, Result, tc_log) -> + case lists:member(parallel,proplists:get_value( + tc_group_properties,Config,[])) of + true -> + {Result, {set_log_func(ct_log),Group}}; + false -> + {Result, tc_log} + end; +post_init_per_group(_Group, _Config, Result, State) -> + {Result, State}. + +post_end_per_testcase(_TC, _Config, Result, State) -> + %% Make sure that the event queue is flushed + %% before ending this test case. + gen_event:call(error_logger, ?MODULE, flush), + {Result, State}. + +pre_end_per_group(Group, Config, {ct_log, Group}) -> + {Config, set_log_func(tc_log)}; +pre_end_per_group(_Group, Config, State) -> + {Config, State}. + + +%% Copied and modified from sasl_report_tty_h.erl +init(_Type) -> + {ok, tc_log}. + +handle_event({_Type, GL, _Msg}, State) when node(GL) /= node() -> + {ok, State}; +handle_event(Event, LogFunc) -> + case lists:keyfind(sasl, 1, application:which_applications()) of + false -> + sasl_not_started; + _Else -> + {ok, ErrLogType} = application:get_env(sasl, errlog_type), + SReport = sasl_report:format_report(group_leader(), ErrLogType, + tag_event(Event)), + if is_list(SReport) -> + ct_logs:LogFunc(sasl, SReport, []); + true -> %% Report is an atom if no logging is to be done + ignore + end + end, + EReport = error_logger_tty_h:write_event( + tag_event(Event),io_lib), + if is_list(EReport) -> + ct_logs:LogFunc(error_logger, EReport, []); + true -> %% Report is an atom if no logging is to be done + ignore + end, + {ok, LogFunc}. + + +handle_info(_,State) -> {ok, State}. + +handle_call(flush,State) -> + {ok, ok, State}; +handle_call({set_logfunc,NewLogFunc},_) -> + {ok, NewLogFunc, NewLogFunc}; +handle_call(_Query, _State) -> {error, bad_query}. + +terminate(_Reason, _Type) -> + []. + +tag_event(Event) -> + {calendar:local_time(), Event}. + +set_log_func(Func) -> + gen_event:call(error_logger, ?MODULE, {set_logfunc, Func}). diff --git a/lib/compiler/src/beam_disasm.erl b/lib/compiler/src/beam_disasm.erl index 410233a0f7..29a634b18e 100644 --- a/lib/compiler/src/beam_disasm.erl +++ b/lib/compiler/src/beam_disasm.erl @@ -204,7 +204,7 @@ process_chunks(F) -> optional_chunk(F, ChunkTag) -> case beam_lib:chunks(F, [ChunkTag]) of {ok,{_Module,[{ChunkTag,Chunk}]}} -> Chunk; - {error,beam_lib,{missing_chunk,_,ChunkTag}} -> none + {error,beam_lib,{missing_chunk,_,_}} -> none end. %%----------------------------------------------------------------------- diff --git a/lib/compiler/src/compile.erl b/lib/compiler/src/compile.erl index 29c7ec0dcd..15849957e7 100644 --- a/lib/compiler/src/compile.erl +++ b/lib/compiler/src/compile.erl @@ -113,7 +113,7 @@ noenv_forms(Forms, Opt) when is_atom(Opt) -> noenv_output_generated(Opts) -> {_,Passes} = passes(file, expand_opts(Opts)), - any(fun ({save_binary,_F}) -> true; + any(fun ({save_binary,_T,_F}) -> true; (_Other) -> false end, Passes). @@ -122,6 +122,7 @@ noenv_output_generated(Opts) -> %% -define(pass(P), {P,fun P/1}). +-define(pass(P,T), {P,fun T/1,fun P/1}). env_default_opts() -> Key = "ERL_COMPILER_OPTIONS", @@ -304,7 +305,7 @@ run_tc({Name,Fun}, St) -> Val. comp_ret_ok(#compile{code=Code,warnings=Warn0,module=Mod,options=Opts}=St) -> - case member(warnings_as_errors, Opts) andalso length(Warn0) > 0 of + case werror(St) of true -> case member(report_warnings, Opts) of true -> @@ -339,6 +340,11 @@ comp_ret_err(#compile{warnings=Warn0,errors=Err0,options=Opts}=St) -> false -> error end. +not_werror(St) -> not werror(St). + +werror(#compile{options=Opts,warnings=Ws}) -> + Ws =/= [] andalso member(warnings_as_errors, Opts). + %% messages_per_file([{File,[Message]}]) -> [{File,[Message]}] messages_per_file(Ms) -> T = lists:sort([{File,M} || {File,Messages} <- Ms, M <- Messages]), @@ -373,7 +379,7 @@ passes(Type, Opts) -> %% insert a first pass to remove the file (unless the %% source file is a BEAM file). {Ext,case last(Passes) of - {save_binary,_Fun} -> + {save_binary,_TestFun,_Fun} -> case Passes of [{read_beam_file,_}|_] -> %% The BEAM is both input and output. @@ -655,7 +661,7 @@ asm_passes() -> binary_passes() -> [{native_compile,fun test_native/1,fun native_compile/1}, - {unless,binary,?pass(save_binary)}]. + {unless,binary,?pass(save_binary,not_werror)}]. %%% %%% Compiler passes. @@ -1379,28 +1385,34 @@ report_errors(#compile{options=Opts,errors=Errors}) -> end. report_warnings(#compile{options=Opts,warnings=Ws0}) -> - case member(report_warnings, Opts) of + Werror = member(warnings_as_errors, Opts), + P = case Werror of + true -> ""; + false -> "Warning: " + end, + ReportWerror = Werror andalso member(report_errors, Opts), + case member(report_warnings, Opts) orelse ReportWerror of true -> - Ws1 = flatmap(fun({{F,_L},Eds}) -> format_message(F, Eds); - ({F,Eds}) -> format_message(F, Eds) end, + Ws1 = flatmap(fun({{F,_L},Eds}) -> format_message(F, P, Eds); + ({F,Eds}) -> format_message(F, P, Eds) end, Ws0), Ws = lists:sort(Ws1), foreach(fun({_,Str}) -> io:put_chars(Str) end, Ws); false -> ok end. -format_message(F, [{{Line,Column}=Loc,Mod,E}|Es]) -> - M = {{F,Loc},io_lib:format("~s:~w:~w Warning: ~s\n", - [F,Line,Column,Mod:format_error(E)])}, - [M|format_message(F, Es)]; -format_message(F, [{Line,Mod,E}|Es]) -> - M = {{F,{Line,0}},io_lib:format("~s:~w: Warning: ~s\n", - [F,Line,Mod:format_error(E)])}, - [M|format_message(F, Es)]; -format_message(F, [{Mod,E}|Es]) -> - M = {none,io_lib:format("~s: Warning: ~s\n", [F,Mod:format_error(E)])}, - [M|format_message(F, Es)]; -format_message(_, []) -> []. +format_message(F, P, [{{Line,Column}=Loc,Mod,E}|Es]) -> + M = {{F,Loc},io_lib:format("~s:~w:~w ~s~s\n", + [F,Line,Column,P,Mod:format_error(E)])}, + [M|format_message(F, P, Es)]; +format_message(F, P, [{Line,Mod,E}|Es]) -> + M = {{F,{Line,0}},io_lib:format("~s:~w: ~s~s\n", + [F,Line,P,Mod:format_error(E)])}, + [M|format_message(F, P, Es)]; +format_message(F, P, [{Mod,E}|Es]) -> + M = {none,io_lib:format("~s: ~s~s\n", [F,P,Mod:format_error(E)])}, + [M|format_message(F, P, Es)]; +format_message(_, _, []) -> []. %% list_errors(File, ErrorDescriptors) -> ok diff --git a/lib/compiler/src/sys_pre_expand.erl b/lib/compiler/src/sys_pre_expand.erl index 480954adac..dd6f24e21f 100644 --- a/lib/compiler/src/sys_pre_expand.erl +++ b/lib/compiler/src/sys_pre_expand.erl @@ -223,10 +223,8 @@ attribute(export, Es, _L, St) -> St#expand{exports=union(from_list(Es), St#expand.exports)}; attribute(import, Is, _L, St) -> import(Is, St); -attribute(compile, C, _L, St) when is_list(C) -> - St#expand{compile=St#expand.compile ++ C}; -attribute(compile, C, _L, St) -> - St#expand{compile=St#expand.compile ++ [C]}; +attribute(compile, _C, _L, St) -> + St; attribute(Name, Val, Line, St) when is_list(Val) -> St#expand{attributes=St#expand.attributes ++ [{Name,Line,Val}]}; attribute(Name, Val, Line, St) -> diff --git a/lib/compiler/test/Makefile b/lib/compiler/test/Makefile index fe713fd019..b90adaf917 100644 --- a/lib/compiler/test/Makefile +++ b/lib/compiler/test/Makefile @@ -9,6 +9,7 @@ MODULES= \ andor_SUITE \ apply_SUITE \ beam_validator_SUITE \ + beam_disasm_SUITE \ bs_bincomp_SUITE \ bs_bit_binaries_SUITE \ bs_construct_SUITE \ diff --git a/lib/compiler/test/beam_disasm_SUITE.erl b/lib/compiler/test/beam_disasm_SUITE.erl new file mode 100644 index 0000000000..44574ae64a --- /dev/null +++ b/lib/compiler/test/beam_disasm_SUITE.erl @@ -0,0 +1,65 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +-module(beam_disasm_SUITE). + +-include_lib("test_server/include/test_server.hrl"). + +-export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, + init_per_group/2,end_per_group/2]). + +-export([stripped/1]). + +suite() -> [{ct_hooks,[ts_install_cth]}]. + +all() -> + [stripped]. + +groups() -> + []. + +init_per_suite(Config) -> + Config. + +end_per_suite(_Config) -> + ok. + +init_per_group(_GroupName, Config) -> + Config. + +end_per_group(_GroupName, Config) -> + Config. + +stripped(doc) -> + ["Check that stripped beam files can be disassembled"]; +stripped(Config) when is_list(Config) -> + ?line PrivDir = ?config(priv_dir, Config), + ?line SrcName = filename:join(PrivDir, "tmp.erl"), + ?line BeamName = filename:join(PrivDir, "tmp.beam"), + Prog = <<"-module(tmp).\n-export([tmp/0]).\ntmp()->ok.\n">>, + ?line ok = file:write_file(SrcName, Prog), + ?line {ok, tmp} = + compile:file(SrcName, [{outdir, PrivDir}]), + ?line {beam_file, tmp, _, Attr, CompileInfo, [_|_]} = + beam_disasm:file(BeamName), + ?line true = is_list(Attr), + ?line true = is_list(CompileInfo), + ?line {ok, {tmp, _}} = beam_lib:strip(BeamName), + ?line {beam_file, tmp, _, none, none, [_|_]} = + beam_disasm:file(BeamName), + ok. diff --git a/lib/compiler/test/error_SUITE.erl b/lib/compiler/test/error_SUITE.erl index 6e0aadf007..eb5e50818e 100644 --- a/lib/compiler/test/error_SUITE.erl +++ b/lib/compiler/test/error_SUITE.erl @@ -183,23 +183,47 @@ get_compilation_errors(Config, Filename) -> E. warnings_as_errors(Config) when is_list(Config) -> - Ts = [{warnings_as_errors, + ?line TestFile = test_filename(Config), + ?line BeamFile = filename:rootname(TestFile, ".erl") ++ ".beam", + ?line OutDir = ?config(priv_dir, Config), + + Ts1 = [{warnings_as_errors, <<" t() -> A = unused, ok. ">>, - [export_all,warnings_as_errors], - {error, - [], - [{3,erl_lint,{unused_var,'A'}}]} }], - ?line [] = run(Config, Ts), + [warnings_as_errors, export_all, {outdir, OutDir}], + {error, + [], + [{3,erl_lint,{unused_var,'A'}}]} }], + ?line [] = run(Ts1, TestFile, write_beam), + ?line false = filelib:is_regular(BeamFile), + + Ts2 = [{warning_unused_var, + <<" + t() -> + A = unused, + ok. + ">>, + [return_warnings, export_all, {outdir, OutDir}], + {warning, + [{3,erl_lint,{unused_var,'A'}}]} }], + + ?line [] = run(Ts2, TestFile, write_beam), + ?line true = filelib:is_regular(BeamFile), + ?line ok = file:delete(BeamFile), + ok. run(Config, Tests) -> + ?line File = test_filename(Config), + run(Tests, File, dont_write_beam). + +run(Tests, File, WriteBeam) -> F = fun({N,P,Ws,E}, BadL) -> - case catch run_test(Config, P, Ws) of + case catch run_test(P, File, Ws, WriteBeam) of E -> BadL; Bad -> @@ -211,8 +235,12 @@ run(Config, Tests) -> lists:foldl(F, [], Tests). run2(Config, Tests) -> + ?line File = test_filename(Config), + run2(Tests, File, dont_write_beam). + +run2(Tests, File, WriteBeam) -> F = fun({N,P,Ws,E}, BadL) -> - case catch filter(run_test(Config, P, Ws)) of + case catch filter(run_test(P, File, Ws, WriteBeam)) of E -> BadL; Bad -> @@ -231,12 +259,19 @@ filter(X) -> %% Compiles a test module and returns the list of errors and warnings. -run_test(Conf, Test0, Warnings) -> - Filename = 'errors_test.erl', - ?line DataDir = ?config(priv_dir, Conf), +test_filename(Conf) -> + Filename = "errors_test.erl", + DataDir = ?config(priv_dir, Conf), + filename:join(DataDir, Filename). + +run_test(Test0, File, Warnings, WriteBeam) -> ?line Test = ["-module(errors_test). ", Test0], - ?line File = filename:join(DataDir, Filename), - ?line Opts = [binary,return_errors|Warnings], + ?line Opts = case WriteBeam of + dont_write_beam -> + [binary,return_errors|Warnings]; + write_beam -> + [return_errors|Warnings] + end, ?line ok = file:write_file(File, Test), %% Compile once just to print all errors and warnings. @@ -252,6 +287,10 @@ run_test(Conf, Test0, Warnings) -> %io:format("compile:file(~s,~p) ->~n~p~n", % [File,Opts,Ws]), []; + {ok,errors_test,[{_File,Ws}]} -> + {warning,Ws}; + {ok,errors_test,[]} -> + []; {error,[{XFile,Es}],Ws} = _ZZ when is_list(XFile) -> %io:format("compile:file(~s,~p) ->~n~p~n", % [File,Opts,_ZZ]), diff --git a/lib/cosFileTransfer/doc/src/CosFileTransfer_FileTransferSession.xml b/lib/cosFileTransfer/doc/src/CosFileTransfer_FileTransferSession.xml index 5ac2c61c92..918f0bf9f7 100644 --- a/lib/cosFileTransfer/doc/src/CosFileTransfer_FileTransferSession.xml +++ b/lib/cosFileTransfer/doc/src/CosFileTransfer_FileTransferSession.xml @@ -159,7 +159,7 @@ </func> <func> <name>insert(FTS, SourceFile, DestinationFile, Offset) -> Return</name> - <fsummary>Insert the <c>SourceFile</c>into the <c>DestinationFile</c><c>Offset</c>bytes from the start of the file</fsummary> + <fsummary>Insert the <c>SourceFile</c>into the <c>DestinationFile</c> <c>Offset</c>bytes from the start of the file</fsummary> <type> <v>FTS = SourceFile = DestinationFile = #objref</v> <v>Offset = long()</v> @@ -168,7 +168,7 @@ <desc> <p>This operation behaves almost like the <c>append/3</c> operation. The difference is that the <c>SourceFile</c> will be inserted into the - <c>DestinationFile</c><c>Offset</c> bytes from the start of the file.</p> + <c>DestinationFile</c> <c>Offset</c> bytes from the start of the file.</p> <p>Currently, it is not possible to use this operation when the target object represents FTP.</p> </desc> diff --git a/lib/cosFileTransfer/src/CosFileTransfer_FileTransferSession_impl.erl b/lib/cosFileTransfer/src/CosFileTransfer_FileTransferSession_impl.erl index e222c5b92b..5dbe6f6b2f 100644 --- a/lib/cosFileTransfer/src/CosFileTransfer_FileTransferSession_impl.erl +++ b/lib/cosFileTransfer/src/CosFileTransfer_FileTransferSession_impl.erl @@ -792,7 +792,7 @@ target_FTS_operation(State, _SrcFile, DestFile, Op, Offset) -> %% Delete the temporary local copy. delete_tmp_file(TempName, "Transfer completed but failed to remove temporary local copy."), - %% Completed the transfer succesfully. + %% Completed the transfer successfully. {reply, ok, State}; {error, epath} -> delete_tmp_file(TempName, diff --git a/lib/crypto/c_src/crypto.c b/lib/crypto/c_src/crypto.c index c781ccb302..83772d9023 100644 --- a/lib/crypto/c_src/crypto.c +++ b/lib/crypto/c_src/crypto.c @@ -43,6 +43,7 @@ #include <openssl/aes.h> #include <openssl/md5.h> #include <openssl/md4.h> +#include <openssl/md2.h> #include <openssl/sha.h> #include <openssl/bn.h> #include <openssl/objects.h> @@ -267,6 +268,7 @@ static ERL_NIF_TERM atom_true; static ERL_NIF_TERM atom_false; static ERL_NIF_TERM atom_sha; static ERL_NIF_TERM atom_md5; +static ERL_NIF_TERM atom_md2; static ERL_NIF_TERM atom_ripemd160; static ERL_NIF_TERM atom_error; static ERL_NIF_TERM atom_rsa_pkcs1_padding; @@ -337,6 +339,7 @@ static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) atom_false = enif_make_atom(env,"false"); atom_sha = enif_make_atom(env,"sha"); atom_md5 = enif_make_atom(env,"md5"); + atom_md2 = enif_make_atom(env,"md2"); 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"); @@ -1047,16 +1050,28 @@ static ERL_NIF_TERM dss_verify(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv return(i > 0) ? atom_true : atom_false; } +struct hash_def { + int type; + unsigned int m_len; + unsigned char * (*func) (const unsigned char *d, size_t n, unsigned char *md); +}; + +static const struct hash_def md2_hash_def = { NID_md2, MD2_DIGEST_LENGTH, &MD2}; +static const struct hash_def md5_hash_def = { NID_md5, MD5_DIGEST_LENGTH, &MD5}; +static const struct hash_def sha1_hash_def = { NID_sha1, SHA_DIGEST_LENGTH, &SHA1}; + static ERL_NIF_TERM rsa_verify(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Type, Data, Signature, Key=[E,N]) */ ErlNifBinary data_bin, sign_bin; unsigned char hmacbuf[SHA_DIGEST_LENGTH]; ERL_NIF_TERM head, tail, ret; - int i, is_sha; + int i; RSA* rsa = RSA_new(); + const struct hash_def *hash_def = NULL; - if (argv[0] == atom_sha) is_sha = 1; - else if (argv[0] == atom_md5) is_sha = 0; + if (argv[0] == atom_sha) hash_def = &sha1_hash_def; + else if (argv[0] == atom_md5) hash_def = &md5_hash_def; + else if (argv[0] == atom_md2) hash_def = &md2_hash_def; else goto badarg; if (!inspect_mpint(env, argv[1], &data_bin) @@ -1070,16 +1085,9 @@ static ERL_NIF_TERM rsa_verify(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv ret = enif_make_badarg(env); } else { - if (is_sha) { - SHA1(data_bin.data+4, data_bin.size-4, hmacbuf); - i = RSA_verify(NID_sha1, hmacbuf, SHA_DIGEST_LENGTH, - sign_bin.data+4, sign_bin.size-4, rsa); - } - else { - MD5(data_bin.data+4, data_bin.size-4, hmacbuf); - i = RSA_verify(NID_md5, hmacbuf, MD5_DIGEST_LENGTH, - sign_bin.data+4, sign_bin.size-4, rsa); - } + (void) *hash_def->func(data_bin.data+4, data_bin.size-4, hmacbuf); + i = RSA_verify(hash_def->type, hmacbuf, hash_def->m_len, + sign_bin.data+4, sign_bin.size-4, rsa); ret = (i==1 ? atom_true : atom_false); } RSA_free(rsa); @@ -1221,10 +1229,12 @@ static ERL_NIF_TERM rsa_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar unsigned char hmacbuf[SHA_DIGEST_LENGTH]; unsigned rsa_s_len; RSA *rsa = RSA_new(); - int i, is_sha; + int i; + const struct hash_def *hash_def = NULL; - if (argv[0] == atom_sha) is_sha = 1; - else if (argv[0] == atom_md5) is_sha = 0; + if (argv[0] == atom_sha) hash_def = &sha1_hash_def; + else if (argv[0] == atom_md5) hash_def = &md5_hash_def; + else if (argv[0] == atom_md2) hash_def = &md2_hash_def; else goto badarg; if (!inspect_mpint(env,argv[1],&data_bin) @@ -1240,18 +1250,10 @@ static ERL_NIF_TERM rsa_sign_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar return enif_make_badarg(env); } enif_alloc_binary(RSA_size(rsa), &ret_bin); - if (is_sha) { - SHA1(data_bin.data+4, data_bin.size-4, hmacbuf); - ERL_VALGRIND_ASSERT_MEM_DEFINED(hmacbuf, SHA_DIGEST_LENGTH); - i = RSA_sign(NID_sha1, hmacbuf, SHA_DIGEST_LENGTH, - ret_bin.data, &rsa_s_len, rsa); - } - else { - MD5(data_bin.data+4, data_bin.size-4, hmacbuf); - ERL_VALGRIND_ASSERT_MEM_DEFINED(hmacbuf, MD5_DIGEST_LENGTH); - i = RSA_sign(NID_md5, hmacbuf,MD5_DIGEST_LENGTH, - ret_bin.data, &rsa_s_len, rsa); - } + (void) *hash_def->func(data_bin.data+4, data_bin.size-4, hmacbuf); + ERL_VALGRIND_ASSERT_MEM_DEFINED(hmacbuf, hash_def->m_len); + i = RSA_sign(hash_def->type, hmacbuf, hash_def->m_len, + ret_bin.data, &rsa_s_len, rsa); RSA_free(rsa); if (i) { ERL_VALGRIND_MAKE_MEM_DEFINED(ret_bin.data, rsa_s_len); diff --git a/lib/crypto/doc/src/crypto.xml b/lib/crypto/doc/src/crypto.xml index 179ba4498c..b593958264 100644 --- a/lib/crypto/doc/src/crypto.xml +++ b/lib/crypto/doc/src/crypto.xml @@ -347,7 +347,7 @@ Mpint() = <![CDATA[<<ByteLen:32/integer-big, Bytes:ByteLen/binary>>]]> </func> <func> <name>sha_mac_96(Key, Data) -> Mac</name> - <fsummary>Compute an <c>MD5 MAC</c>message authentification code</fsummary> + <fsummary>Compute an <c>SHA MAC</c>message authentification code</fsummary> <type> <v>Key = Data = iolist() | binary()</v> <v>Mac = binary()</v> @@ -744,7 +744,7 @@ Mpint() = <![CDATA[<<ByteLen:32/integer-big, Bytes:ByteLen/binary>>]]> <p>Generate a random number <c><![CDATA[N, Lo =< N < Hi.]]></c> Uses the <c>crypto</c> library pseudo-random number generator. The arguments (and result) can be either erlang integers or binary - multi-precision integers.</p> + multi-precision integers. <c>Hi</c> must be larger than <c>Lo</c>.</p> </desc> </func> <func> @@ -795,7 +795,7 @@ Mpint() = <![CDATA[<<ByteLen:32/integer-big, Bytes:ByteLen/binary>>]]> <v>E, N, D = Mpint</v> <d>Where <c>E</c> is the public exponent, <c>N</c> is public modulus and <c>D</c> is the private exponent.</d> - <v>DigestType = md5 | sha</v> + <v>DigestType = md2 | md5 | sha</v> <d>The default <c>DigestType</c> is sha.</d> <v>Mpint = binary()</v> <v>Signature = binary()</v> @@ -817,7 +817,7 @@ Mpint() = <![CDATA[<<ByteLen:32/integer-big, Bytes:ByteLen/binary>>]]> <v>Key = [E, N]</v> <v>E, N = Mpint</v> <d>Where <c>E</c> is the public exponent and <c>N</c> is public modulus.</d> - <v>DigestType = md5 | sha</v> + <v>DigestType = md2 | md5 | sha</v> <d> The default <c>DigestType</c> is sha.</d> <v>Mpint = binary()</v> </type> diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index c35dfcebab..ddad00f4b4 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -91,7 +91,7 @@ aes_ctr_stream_init, aes_ctr_stream_encrypt, aes_ctr_stream_decrypt, info_lib]). --type rsa_digest_type() :: 'md5' | 'sha'. +-type rsa_digest_type() :: 'md2' | 'md5' | 'sha'. -type dss_digest_type() :: 'none' | 'sha'. -type crypto_integer() :: binary() | integer(). @@ -415,6 +415,13 @@ rand_uniform(From,To) when is_binary(From), is_binary(To) -> Whatever end; rand_uniform(From,To) when is_integer(From),is_integer(To) -> + if From < 0 -> + rand_uniform_pos(0, To - From) + From; + true -> + rand_uniform_pos(From, To) + end. + +rand_uniform_pos(From,To) when From < To -> BinFrom = mpint(From), BinTo = mpint(To), case rand_uniform(BinFrom, BinTo) of @@ -422,7 +429,9 @@ rand_uniform(From,To) when is_integer(From),is_integer(To) -> erlint(Result); Other -> Other - end. + end; +rand_uniform_pos(_,_) -> + error(badarg). rand_uniform_nif(_From,_To) -> ?nif_stub. diff --git a/lib/crypto/test/crypto_SUITE.erl b/lib/crypto/test/crypto_SUITE.erl index 283aadb6ea..26d10d892a 100644 --- a/lib/crypto/test/crypto_SUITE.erl +++ b/lib/crypto/test/crypto_SUITE.erl @@ -138,14 +138,15 @@ link_test_2(Drv) -> Libs = os:cmd(Cmd), io:format("~p\n", [Libs]), case string:str(Libs, "libcrypto") of - 0 -> ok; - _ -> + 0 -> case ?t:is_commercial() of true -> - ?t:fail({libcrypto,not_statically_linked}); + ?t:fail({libcrypto,statically_linked}); false -> - {comment,"Not statically linked (OK for open-source platform)"} - end + {comment,"Statically linked (OK for open-source platform)"} + end; + _ -> + ok end end. @@ -878,10 +879,17 @@ rand_uniform_aux_test(0) -> rand_uniform_aux_test(N) -> ?line L = N*1000, ?line H = N*100000+1, + ?line crypto_rand_uniform(L, H), + ?line crypto_rand_uniform(-L, L), + ?line crypto_rand_uniform(-H, -L), + ?line crypto_rand_uniform(-H, L), + ?line rand_uniform_aux_test(N-1). + +crypto_rand_uniform(L,H) -> ?line R1 = crypto:rand_uniform(L, H), ?line t(R1 >= L), - ?line t(R1 < H), - ?line rand_uniform_aux_test(N-1). + ?line t(R1 < H). + %% %% @@ -1075,16 +1083,30 @@ rsa_sign_test(Config) when is_list(Config) -> PrivKey = [crypto:mpint(PubEx), crypto:mpint(Mod), crypto:mpint(PrivEx)], PubKey = [crypto:mpint(PubEx), crypto:mpint(Mod)], - ?line Sig1 = crypto:rsa_sign(sized_binary(Msg), PrivKey), - ?line m(crypto:rsa_verify(sized_binary(Msg), sized_binary(Sig1),PubKey), true), - - ?line Sig2 = crypto:rsa_sign(md5, sized_binary(Msg), PrivKey), - ?line m(crypto:rsa_verify(md5, sized_binary(Msg), sized_binary(Sig2),PubKey), true), + ?line Sig = crypto:rsa_sign(sized_binary(Msg), PrivKey), + ?line m(crypto:rsa_verify(sized_binary(Msg), sized_binary(Sig),PubKey), true), - ?line m(Sig1 =:= Sig2, false), - ?line m(crypto:rsa_verify(md5, sized_binary(Msg), sized_binary(Sig1),PubKey), false), - ?line m(crypto:rsa_verify(sha, sized_binary(Msg), sized_binary(Sig1),PubKey), true), + ?line Sig_md2 = crypto:rsa_sign(md2, sized_binary(Msg), PrivKey), + ?line Sig_md5 = crypto:rsa_sign(md5, sized_binary(Msg), PrivKey), + ?line Sig_sha = crypto:rsa_sign(sha, sized_binary(Msg), PrivKey), + + ?line m(Sig =:= Sig_sha, true), + ?line m(Sig_md2 =:= Sig_md5, false), + ?line m(Sig_md2 =:= Sig_sha, false), + ?line m(Sig_md5 =:= Sig_sha, false), + ?line m(crypto:rsa_verify(md2, sized_binary(Msg), sized_binary(Sig_md2),PubKey), true), + ?line m(crypto:rsa_verify(md2, sized_binary(Msg), sized_binary(Sig_md5),PubKey), false), + ?line m(crypto:rsa_verify(md2, sized_binary(Msg), sized_binary(Sig_sha),PubKey), false), + + ?line m(crypto:rsa_verify(md5, sized_binary(Msg), sized_binary(Sig_md2),PubKey), false), + ?line m(crypto:rsa_verify(md5, sized_binary(Msg), sized_binary(Sig_md5),PubKey), true), + ?line m(crypto:rsa_verify(md5, sized_binary(Msg), sized_binary(Sig_sha),PubKey), false), + + ?line m(crypto:rsa_verify(sha, sized_binary(Msg), sized_binary(Sig_md2),PubKey), false), + ?line m(crypto:rsa_verify(sha, sized_binary(Msg), sized_binary(Sig_md5),PubKey), false), + ?line m(crypto:rsa_verify(sha, sized_binary(Msg), sized_binary(Sig_sha),PubKey), true), + ok. dsa_sign_test(doc) -> diff --git a/lib/dialyzer/test/r9c_SUITE_data/results/asn1 b/lib/dialyzer/test/r9c_SUITE_data/results/asn1 index 571e562d0d..292275dd6e 100644 --- a/lib/dialyzer/test/r9c_SUITE_data/results/asn1 +++ b/lib/dialyzer/test/r9c_SUITE_data/results/asn1 @@ -6,7 +6,7 @@ asn1ct.erl:672: The pattern <{'false', Result}, _, _> can never match the type < asn1ct.erl:909: Guard test is_atom(Ext::[49 | 97 | 98 | 100 | 110 | 115]) can never succeed asn1ct_check.erl:1698: The pattern {'error', _} can never match the type [any()] asn1ct_check.erl:2733: The pattern {'type', Tag, _, _, _, _} can never match the type 'ASN1_OPEN_TYPE' | {_,_} | {'fixedtypevaluefield',_,_} -asn1ct_check.erl:2738: The pattern <_S, _> can never match since previous clauses completely covered the type <#state{},#ObjectClassFieldType{class::#objectclass{fields::maybe_improper_list() | {_,_,_,_}},fieldname::{_,maybe_improper_list()},type::'ASN1_OPEN_TYPE' | {_,_} | {'fixedtypevaluefield',_,_}}> +asn1ct_check.erl:2738: The pattern <_S, _> can never match since previous clauses completely covered the type <#state{},#'ObjectClassFieldType'{class::#objectclass{fields::maybe_improper_list() | {_,_,_,_}},fieldname::{_,maybe_improper_list()},type::'ASN1_OPEN_TYPE' | {_,_} | {'fixedtypevaluefield',_,_}}> asn1ct_check.erl:2887: The variable Other can never match since previous clauses completely covered the type any() asn1ct_check.erl:3188: The pattern <_S, [], B> can never match the type <#state{},{'SingleValue',_},{'ValueRange',_}> asn1ct_check.erl:3190: The pattern <_S, A, []> can never match the type <#state{},{'SingleValue',_},{'ValueRange',_}> @@ -29,8 +29,8 @@ asn1ct_check.erl:5128: Guard test is_record(Type::{_,_} | {'fixedtypevaluefield' asn1ct_check.erl:540: The pattern <_S, {'poc', _ObjSet, _Params}> can never match since previous clauses completely covered the type <#state{},_> asn1ct_check.erl:5517: The pattern <_, []> can never match the type <_,[{'ABSTRACT-SYNTAX',{_,_,_}} | {'TYPE-IDENTIFIER',{_,_,_}},...]> asn1ct_constructed_ber.erl:1075: The pattern {{{'ObjectClassFieldType', _, _, _, {'objectfield', PrimFieldName1, PFNList}}, _}, {'componentrelation', _, _}} can never match the type {#type{},_} -asn1ct_constructed_ber.erl:695: The pattern {'EXTENSIONMARK', _, _} can never match the type #ComponentType{} -asn1ct_constructed_ber.erl:748: The pattern <Erules, TopType, {CompList, _ExtList}> can never match the type <_,maybe_improper_list(),[#ComponentType{typespec::{_,_,_,_,_,_}}]> +asn1ct_constructed_ber.erl:695: The pattern {'EXTENSIONMARK', _, _} can never match the type #'ComponentType'{} +asn1ct_constructed_ber.erl:748: The pattern <Erules, TopType, {CompList, _ExtList}> can never match the type <_,maybe_improper_list(),[#'ComponentType'{typespec::{_,_,_,_,_,_}}]> asn1ct_constructed_ber_bin_v2.erl:914: The pattern {{{'ObjectClassFieldType', _, _, _, {'objectfield', PrimFieldName1, PFNList}}, _}, {'componentrelation', _, _}} can never match the type {#type{},_} asn1ct_gen.erl:740: The pattern [] can never match the type [any(),...] asn1ct_gen_ber.erl:974: The pattern <Erules, [{Name, Def} | Rest]> can never match the type <_,[#typedef{name::atom(),typespec::{_,_,_,_,_,_}}]> diff --git a/lib/dialyzer/test/small_SUITE_data/results/my_sofs b/lib/dialyzer/test/small_SUITE_data/results/my_sofs index bfee0bce0d..bc97c08d62 100644 --- a/lib/dialyzer/test/small_SUITE_data/results/my_sofs +++ b/lib/dialyzer/test/small_SUITE_data/results/my_sofs @@ -1,3 +1,3 @@ -my_sofs.erl:34: The pattern {'Set', _, _} can never match the type #OrdSet{} -my_sofs.erl:54: The pattern {'Set', _, _} can never match the type #OrdSet{} +my_sofs.erl:34: The pattern {'Set', _, _} can never match the type #'OrdSet'{} +my_sofs.erl:54: The pattern {'Set', _, _} can never match the type #'OrdSet'{} diff --git a/lib/dialyzer/test/small_SUITE_data/src/list_to_bitstring.erl b/lib/dialyzer/test/small_SUITE_data/src/list_to_bitstring.erl index 2da708cb15..109aa88f16 100644 --- a/lib/dialyzer/test/small_SUITE_data/src/list_to_bitstring.erl +++ b/lib/dialyzer/test/small_SUITE_data/src/list_to_bitstring.erl @@ -2,7 +2,7 @@ %% From: Ken Robinson %% Date: 28/04/2011, 17:26 %% -%% Program that produced borus "Function has no local return" warnings +%% Program that produced bogus "Function has no local return" warnings %% due to erlang:list_to_bitstring/1 having erroneous hard coded type %% information, namely accepting iolist() instead of bitstrlist(). %% Fixed 29/04/2011. diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index 36b6cbf0cf..2cad70e3bc 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -277,6 +277,10 @@ callback.</p> </taglist> +<p> +An invalid option will cause <seealso marker="#call">call/4</seealso> +to fail.</p> + <marker id="capability"/> </item> @@ -405,6 +409,8 @@ sense.</p> <code> eval([{M,F,A} | T]) -> apply(M, F, T ++ A); +eval([[F|A] | T]) -> + eval([F | T ++ A]); eval([F|A]) -> apply(F, A); eval(F) -> @@ -461,14 +467,14 @@ or any peer if the request does not contain a <c>Destination-Realm</c> AVP.</p> </item> -<tag><c>{host, any|UTF8String()}</c></tag> +<tag><c>{host, any|DiameterIdentity()}</c></tag> <item> <p> Matches only those peers whose <c>Origin-Host</c> has the specified value, or all peers if the atom <c>any</c>.</p> </item> -<tag><c>{realm, any|UTF8String()</c></tag> +<tag><c>{realm, any|DiameterIdentity()</c></tag> <item> <p> Matches only those peers whose <c>Origin-Realm</c> has the @@ -478,8 +484,9 @@ value, or all peers if the atom <c>any</c>.</p> <tag><c>{eval, evaluable()}</c></tag> <item> <p> -Matches only those peers for which the specified evaluable() evaluates -to true on the peer's <c>diameter_caps</c> record.</p> +Matches only those peers for which the specified evaluable() returns +<c>true</c> on the connection's <c>diameter_caps</c> record. +Any other return value or exception is equivalent to <c>false</c>.</p> </item> <tag><c>{neg, peer_filter()}</c></tag> @@ -503,6 +510,21 @@ specified list.</p> </taglist> +<p> +Note that the <c>host</c> and <c>realm</c> filters examine the +outgoing request as passed to <seealso marker="#call">call/4</seealso>, +assuming that this is a record- or list-valued message() as documented +in <seealso marker="diameter_app">diameter_app(3)</seealso>, and that +the message contains at most one of each AVP. +If this is not the case then the <c>{host|realm, DiameterIdentity()}</c> +filters must be used to achieve the desired result. +Note also that an empty host/realm (which should not be typical) +is equivalent to an unspecified one for the purposes of filtering.</p> + +<p> +An invalid filter is equivalent to <c>{any, []}</c>, a filter +that matches no peer.</p> + <marker id="service_event"/> </item> @@ -787,7 +809,7 @@ transports.</p> <type> <v>SvcName = service_name()</v> <v>App = application_alias()</v> -<v>Request = diameter_app:message()</v> +<v>Request = diameter_app:message() | term()</v> <v>Answer = term()</v> <v>Options = [call_opt()]</v> </type> @@ -819,9 +841,8 @@ If there are no suitable peers, or if <seealso marker="diameter_app#pick_peer">pick_peer/4</seealso> rejects them by returning 'false', then <c>{error, no_connection}</c> is returned. -If <seealso marker="diameter_app#pick_peer">pick_peer/4</seealso> -selects a candidate peer then a request process is spawned for the -outgoing request, in which there is a +Otherwise <seealso marker="diameter_app#pick_peer">pick_peer/4</seealso> +is followed by a <seealso marker="diameter_app#prepare_request">prepare_request/3</seealso> callback, the message is encoded and sent.</p> diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml index fc359b9d1d..a9ae0ebbec 100644 --- a/lib/diameter/doc/src/diameter_app.xml +++ b/lib/diameter/doc/src/diameter_app.xml @@ -269,7 +269,12 @@ The candidate peers list will only include those which are selected by any <c>filter</c> option specified in the call to <seealso marker="diameter#call">diameter:call/4</seealso>, and only those which have indicated support for the Diameter application in -question.</p> +question. +The order of the elements is unspecified except that any +peers whose Origin-Host and Origin-Realm matches that of the +outgoing request (in the sense of a <c>{filter, {all, [host, realm]}}</c> +option to <seealso marker="diameter#call">diameter:call/4</seealso>) +will be placed at the head of the list.</p> <p> The return values <c>false</c> and <c>{false, State}</c> are @@ -467,11 +472,11 @@ callback returned false.</p> <v>Packet = packet()</v> <v>SvcName = term()</v> <v>Peer = peer()</v> -<v>Action = Reply | {relay, Opts} | discard | {eval, Action, ContF}</v> +<v>Action = Reply | {relay, Opts} | discard | {eval, Action, PostF}</v> <v>Reply = {reply, message()} | {protocol_error, 3000..3999}</v> <v>Opts = diameter:call_opts()</v> -<v>ContF = diameter:evaluable()</v> +<v>PostF = diameter:evaluable()</v> </type> <desc> <p> @@ -559,26 +564,28 @@ will cause the request process in question to fail.</p> <tag><c>{relay, Opts}</c></tag> <item> <p> -Relay a request to another peer. -The appropriate Route-Record AVP will be added to the relayed request -by diameter and <seealso marker="#pick_peer">pick_peer/4</seealso> -and <seealso marker="#prepare_request">prepare_request/3</seealso> -callback will take place just as if <seealso +Relay a request to another peer in the role of a Diameter relay agent. +If a routing loop is detected then the request is answered with +3005 (DIAMETER_LOOP_DETECTED). +Otherwise a Route-Record AVP (containing the sending peer's Origin-Host) is +added to the request and <seealso marker="#pick_peer">pick_peer/4</seealso> +and subsequent callbacks take place just as if <seealso marker="diameter#call">diameter:call/4</seealso> had been called explicitly. -However, returning a <c>relay</c> tuple also causes the End-to-End -Identifier to be preserved in the header of the relayed request as -required by RFC 3588.</p> +The End-to-End Identifier of the incoming request is preserved in the +header of the relayed request.</p> <p> -The returned <c>Opts</c> should not specify <c>detach</c> and -the <seealso marker="#handle_answer">handle_answer/4</seealso> -callback following from a relayed request must return its first +The returned <c>Opts</c> should not specify <c>detach</c>. +A subsequent <seealso marker="#handle_answer">handle_answer/4</seealso> +callback for the relayed request must return its first argument, the <c>diameter_packet</c> record containing the answer message. Note that the <c>extra</c> option can be specified to supply arguments -that can distinguish the relay case from others if so desired, -although the form of the request message may be sufficient.</p> +that can distinguish the relay case from others if so desired. +Any other return value (for example, from a +<seealso marker="#handle_error">handle_error/4</seealso> callback) +causes the request to be answered with 3002 (DIAMETER_UNABLE_TO_DELIVER).</p> </item> <tag><c>discard</c></tag> @@ -587,18 +594,18 @@ although the form of the request message may be sufficient.</p> Discard the request.</p> </item> -<tag><c>{eval, Action, ContF}</c></tag> +<tag><c>{eval, Action, PostF}</c></tag> <item> <p> Handle the request as if <c>Action</c> has been returned and then -evaluate <c>ContF</c> in the request process.</p> +evaluate <c>PostF</c> in the request process.</p> </item> </taglist> <p> -Note that diameter will respond to protocol errors in an incoming -request without invoking <c>handle_request/3</c>.</p> +Note that protocol errors detected by diameter will result in an +answer message without <c>handle_request/3</c> being invoked.</p> </desc> </func> diff --git a/lib/diameter/doc/src/diameter_sctp.xml b/lib/diameter/doc/src/diameter_sctp.xml index d0377f4b38..c1e839b8e1 100644 --- a/lib/diameter/doc/src/diameter_sctp.xml +++ b/lib/diameter/doc/src/diameter_sctp.xml @@ -74,11 +74,12 @@ marker="diameter_transport#start">diameter_transport(3)</seealso>.</p> <p> The only diameter_sctp-specific argument is the options list. Options <c>raddr</c> and <c>rport</c> specify the remote address -and port for a connector and not valid for a listener. +and port for a connecting transport and not valid for a listening +transport. The former is required while latter defaults to 3868 if unspecified. More than one <c>raddr</c> option can be specified, in which case the -connector in question attempts each in sequence until an association -is established. +connecting transport in question attempts each in sequence until +an association is established. Remaining options are any accepted by gen_sctp:open/1, with the exception of options <c>mode</c>, <c>binary</c>, <c>list</c>, <c>active</c> and <c>sctp_events</c>. @@ -89,7 +90,8 @@ and port respectively.</p> Multiple <c>ip</c> options can be specified for a multihomed peer. If none are specified then the values of Host-IP-Address on the service are used. (In particular, one of these must be specified.) -Option <c>port</c> defaults to 3868 for a listener and 0 for a connector.</p> +Option <c>port</c> defaults to 3868 for a listening transport and 0 for a +connecting transport.</p> <p> diameter_sctp uses the <c>transport_data</c> field of diff --git a/lib/diameter/doc/src/diameter_tcp.xml b/lib/diameter/doc/src/diameter_tcp.xml index 5d6e07b1b8..a502e53972 100644 --- a/lib/diameter/doc/src/diameter_tcp.xml +++ b/lib/diameter/doc/src/diameter_tcp.xml @@ -74,13 +74,14 @@ marker="diameter_transport#start">diameter_transport(3)</seealso>.</p> <p> The only diameter_tcp-specific argument is the options list. Options <c>raddr</c> and <c>rport</c> specify the remote address -and port for a connector and not valid for a listener. +and port for a connecting transport and not valid for a listening +transport. Remaining options are any accepted by gen_tcp:connect/3 for -a connector, or gen_tcp:listen/2 for a listener, with the exception -of <c>binary</c>, <c>packet</c> and <c>active</c>. -Also, option <c>port</c> can be specified for a listener to specify the -local listening port, the default being the standardized 3868 if -unspecified. +a connecting transport, or gen_tcp:listen/2 for a listening transport, +with the exception of <c>binary</c>, <c>packet</c> and <c>active</c>. +Also, option <c>port</c> can be specified for a listening transport +to specify the local listening port, the default being the standardized +3868 if unspecified. Note that option <c>ip</c> specifies the local address.</p> <p> diff --git a/lib/diameter/include/diameter_gen.hrl b/lib/diameter/include/diameter_gen.hrl index 4c91954a21..d037e1044a 100644 --- a/lib/diameter/include/diameter_gen.hrl +++ b/lib/diameter/include/diameter_gen.hrl @@ -44,14 +44,14 @@ encode_avps(Name, Rec) -> ?MODULE, ?LINE, {Reason, Name, Rec}), - erlang:error(list_to_tuple(Reason ++ [Name, Rec, ?MODULE])); + erlang:error(list_to_tuple(Reason ++ [Name])); error: Reason -> Stack = erlang:get_stacktrace(), diameter_dbg:log({encode, failure}, ?MODULE, ?LINE, {Reason, Name, Rec, Stack}), - erlang:error({encode_failure, Reason, Name, Rec, ?MODULE, Stack}) + erlang:error({encode_failure, Reason, Name, Stack}) end. %% encode/2 diff --git a/lib/diameter/make/rules.mk.in b/lib/diameter/make/rules.mk.in index 4a1a55b8d3..6318f2bc9c 100644 --- a/lib/diameter/make/rules.mk.in +++ b/lib/diameter/make/rules.mk.in @@ -164,7 +164,7 @@ $(MAN3DIR)/%.3:: %.xml date=`date +"%B %e %Y"`; \ xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< -# left for compatability +# left for compatibility $(MAN4DIR)/%.4:: %.xml date=`date +"%B %e %Y"`; \ xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< @@ -173,7 +173,7 @@ $(MAN4DIR)/%.5:: %.xml date=`date +"%B %e %Y"`; \ xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< -# left for compatability +# left for compatibility $(MAN6DIR)/%.6:: %_app.xml date=`date +"%B %e %Y"`; \ xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< diff --git a/lib/diameter/src/app/Makefile b/lib/diameter/src/app/Makefile index 31344fa80b..96b7736a90 100644 --- a/lib/diameter/src/app/Makefile +++ b/lib/diameter/src/app/Makefile @@ -66,12 +66,20 @@ SPEC_ERL_FILES = \ SPEC_HRL_FILES = \ $(SPEC_FILES:%.dia=%.hrl) +MODULES = \ + $(RUNTIME_MODULES) \ + $(HELP_MODULES) + APP_MODULES = \ - $(MODULES) \ + $(RUNTIME_MODULES) \ $(SPEC_MODULES) +TARGET_MODULES = \ + $(APP_MODULES) \ + $(HELP_MODULES) + TARGET_FILES = \ - $(APP_MODULES:%=$(EBIN)/%.$(EMULATOR)) \ + $(TARGET_MODULES:%=$(EBIN)/%.$(EMULATOR)) \ $(APP_TARGET) \ $(APPUP_TARGET) @@ -133,17 +141,15 @@ info: # ---------------------------------------------------- # Generate the app file and then modules into in. This shouldn't know -# about ../{compiler,transport} but good enough for now. +# about ../transport but good enough for now. $(APP_TARGET): $(APP_SRC) \ ../../vsn.mk \ modules.mk \ - ../compiler/modules.mk \ ../transport/modules.mk sed -e 's;%VSN%;$(VSN);' $< > $@ M=`echo $(APP_MODULES) | sed -e 's/^ *//' -e 's/ *$$//' -e 'y/ /,/'`; \ echo "/%APP_MODULES%/s//$$M/;w;q" | tr ';' '\n' \ | ed -s $@ - $(MAKE) -C ../compiler $(APP_TARGET) APP_TARGET=$(APP_TARGET) $(MAKE) -C ../transport $(APP_TARGET) APP_TARGET=$(APP_TARGET) $(APPUP_TARGET): $(APPUP_SRC) ../../vsn.mk @@ -190,6 +196,10 @@ release_docs_spec: # Dependencies # ---------------------------------------------------- +$(SPEC_FILES:%.dia=$(EBIN)/%.$(EMULATOR)): \ + $(DIAMETER_TOP)/include/diameter.hrl \ + $(DIAMETER_TOP)/include/diameter_gen.hrl + depend: depend.mk # Generate dependencies makefile. It's assumed that the compile target diff --git a/lib/diameter/src/app/diameter.app.src b/lib/diameter/src/app/diameter.app.src index 119997953e..a806b5c78a 100644 --- a/lib/diameter/src/app/diameter.app.src +++ b/lib/diameter/src/app/diameter.app.src @@ -20,7 +20,7 @@ {application, diameter, [{description, "Diameter protocol"}, {vsn, "%VSN%"}, - {modules, [%APP_MODULES%,%COMPILER_MODULES%,%TRANSPORT_MODULES%]}, + {modules, [%APP_MODULES%,%TRANSPORT_MODULES%]}, {registered, []}, {applications, [stdlib, kernel]}, {env, []}, diff --git a/lib/diameter/src/app/diameter.appup.src b/lib/diameter/src/app/diameter.appup.src index 2b96153575..6d8ceadb92 100644 --- a/lib/diameter/src/app/diameter.appup.src +++ b/lib/diameter/src/app/diameter.appup.src @@ -20,8 +20,28 @@ {"%VSN%", [ + {"0.9", + [ + {load_module, diameter, soft_purge, soft_purge, []}, + {load_module, diameter_capx, soft_purge, soft_purge, []}, + {load_module, diameter_codec, soft_purge, soft_purge, [diameter_lib]}, + {load_module, diameter_lib, soft_purge, soft_purge, []}, + {load_module, diameter_types, soft_purge, soft_purge, []}, + {load_module, diameter_gen_base_accounting, soft_purge, soft_purge, []}, + {load_module, diameter_gen_base_rfc3588, soft_purge, soft_purge, []}, + {load_module, diameter_gen_relay, soft_purge, soft_purge, []}, + {update, diameter_service, soft, soft_purge, soft_purge, [diameter_lib]}, + {update, diameter_config, soft, soft_purge, soft_purge, []}, + {update, diameter_peer, soft, soft_purge, soft_purge, []}, + {update, diameter_peer_fsm, soft, soft_purge, soft_purge, [diameter_lib]}, + {update, diameter_reg, soft, soft_purge, soft_purge, []}, + {update, diameter_sctp, soft, soft_purge, soft_purge, []}, + {update, diameter_stats, soft, soft_purge, soft_purge, []}, + {update, diameter_sync, soft, soft_purge, soft_purge, []}, + {update, diameter_watchdog, soft, soft_purge, soft_purge, [diameter_lib]} + ] + } ], [ ] }. - diff --git a/lib/diameter/src/app/diameter_callback.erl b/lib/diameter/src/app/diameter_callback.erl index fcf9a8fc1e..6d5c8cdca1 100644 --- a/lib/diameter/src/app/diameter_callback.erl +++ b/lib/diameter/src/app/diameter_callback.erl @@ -60,28 +60,28 @@ pick_peer([Peer|_], _, _SvcName, _State) -> %%% ---------------------------------------------------------- prepare_request(Pkt, _SvcName, _Peer) -> - Pkt. + {send, Pkt}. %%% ---------------------------------------------------------- %%% # prepare_retransmit/3 %%% ---------------------------------------------------------- prepare_retransmit(Pkt, _SvcName, _Peer) -> - Pkt. + {send, Pkt}. %%% ---------------------------------------------------------- %%% # handle_request/3 %%% ---------------------------------------------------------- handle_request(_Pkt, _SvcName, _Peer) -> - discard. + {protocol_error, 3001}. %% DIAMETER_COMMAND_UNSUPPORTED %%% ---------------------------------------------------------- %%% # handle_answer/4 %%% ---------------------------------------------------------- handle_answer(#diameter_packet{msg = Ans}, _Req, _SvcName, _Peer) -> - {ok, Ans}. + Ans. %%% --------------------------------------------------------------------------- %%% # handle_error/4 diff --git a/lib/diameter/src/app/diameter_codec.erl b/lib/diameter/src/app/diameter_codec.erl index f6cbde5446..d88f42fb7c 100644 --- a/lib/diameter/src/app/diameter_codec.erl +++ b/lib/diameter/src/app/diameter_codec.erl @@ -140,10 +140,10 @@ make_flags(Flags0, #diameter_header{is_request = R, mf(undefined, F, _) -> F; mf(B, F, N) -> %% reset the affected bit - (F bxor (F band (1 bsl N))) bor (bit(B) bsl N). + (F bxor (F band (1 bsl N))) bor bit(B, N). -bit(true) -> 1; -bit(false) -> 0. +bit(true, N) -> 1 bsl N; +bit(false, _) -> 0. %% values/1 @@ -199,25 +199,16 @@ msg_header(Mod, MsgName, Header) -> p(Flags, #diameter_header{is_request = true, is_proxiable = P}) -> - Flags bor choose(P, 2#01000000, 0); + Flags band (2#10110000 bor choose(P, 2#01000000, 0)); p(Flags, _) -> Flags. -%% The header below is that of the incoming request being answered, -%% not of the answer (which hasn't been encoded yet). - h(Mod, 'answer-message' = MsgName, Header) -> ?BASE = Mod, - #diameter_header{is_request = true, - cmd_code = Code} - = Header, + #diameter_header{cmd_code = Code} = Header, {_, Flags, ApplId} = ?BASE:msg_header(MsgName), {Code, Flags, ApplId}; -h(Mod, MsgName, #diameter_header{is_request = true, - cmd_code = Code}) -> - {Code, _, _} = Mod:msg_header(MsgName); %% ensure Code - h(Mod, MsgName, _) -> Mod:msg_header(MsgName). @@ -290,7 +281,8 @@ decode_avps(MsgName, Mod, Pkt, {Bs, Avps}) -> %% invalid avp bits ... decode_avps('', Mod, Pkt, Avps) -> %% unknown message ... ?LOG(unknown, {Mod, Pkt#diameter_packet.header}), - Pkt#diameter_packet{errors = lists:reverse(Avps)}; + Pkt#diameter_packet{avps = lists:reverse(Avps), + errors = [3001]}; %% DIAMETER_COMMAND_UNSUPPORTED %% msg = undefined identifies this case. decode_avps(MsgName, Mod, Pkt, Avps) -> %% ... or not diff --git a/lib/diameter/src/app/diameter_config.erl b/lib/diameter/src/app/diameter_config.erl index 42c70890b3..a6b48fe65b 100644 --- a/lib/diameter/src/app/diameter_config.erl +++ b/lib/diameter/src/app/diameter_config.erl @@ -267,7 +267,7 @@ handle_call(uptime, _, #state{id = Time} = State) -> {reply, diameter_lib:now_diff(Time), State}; handle_call(Req, From, State) -> - warning_msg("received unexpected request from ~p:~n~w", [From, Req]), + ?UNEXPECTED([Req, From]), Reply = {error, {bad_request, Req}}, {reply, Reply, State}. @@ -276,7 +276,7 @@ handle_call(Req, From, State) -> %%% ---------------------------------------------------------- handle_cast(Msg, State) -> - warning_msg("received unexpected message:~n~w", [Msg]), + ?UNEXPECTED([Msg]), {noreply, State}. %%% ---------------------------------------------------------- @@ -309,7 +309,7 @@ handle_info(restart, State) -> {noreply, State}; handle_info(Info, State) -> - warning_msg("received unknown info:~n~w", [Info]), + ?UNEXPECTED([Info]), {noreply, State}. %%-------------------------------------------------------------------- @@ -674,8 +674,3 @@ cb(M,F) -> call(Request) -> gen_server:call(?SERVER, Request, infinity). - -%% warning_msg/2 - -warning_msg(F, A) -> - ?diameter_warning("~p: " ++ F, [?MODULE | A]). diff --git a/lib/diameter/src/app/diameter_dbg.erl b/lib/diameter/src/app/diameter_dbg.erl index b18f34e13d..5b0ac3a3b6 100644 --- a/lib/diameter/src/app/diameter_dbg.erl +++ b/lib/diameter/src/app/diameter_dbg.erl @@ -68,12 +68,6 @@ -define(VALUES(Rec), tl(tuple_to_list(Rec))). -%%% ---------------------------------------------------------- -%%% # log/4 -%%% -%%% Called to have something to trace on for happenings of interest. -%%% ---------------------------------------------------------- - log(_Slogan, _Mod, _Line, _Details) -> ok. @@ -82,9 +76,6 @@ log(_Slogan, _Mod, _Line, _Details) -> %%% ---------------------------------------------------------- help() -> - ?INFO:usage(usage()). - -usage() -> not_yet_implemented. %%% ---------------------------------------------------------- @@ -99,30 +90,23 @@ table(T) when (T == diameter_peer) orelse (T == diameter_reg) -> ?INFO:format(collect(T), fields(T), fun ?INFO:split/2); -table(diameter_service = T) -> - Fs = [name, started] ++ fields(T) ++ [peerT, - connT, - share_peers, - use_shared_peers, - shared_peers, - local_peers, - monitor], - ?INFO:format(T, - fun(R) -> - [I,N,S|Vs] = ?VALUES(R), - {Fs, [N,I] ++ ?VALUES(S) ++ Vs} - end, - fun ?INFO:split/2); - table(Table) when is_atom(Table) -> case fields(Table) of undefined = No -> No; Fields -> - ?INFO:format(Table, Fields, fun ?INFO:split/2) + ?INFO:format(Table, Fields, fun split/2) end. +split([started, name | Fs], [S, N | Vs]) -> + {name, [started | Fs], N, [S | Vs]}; +split([[F|FT]|Fs], [Rec|Vs]) -> + [_, V | VT] = tuple_to_list(Rec), + {F, FT ++ Fs, V, VT ++ Vs}; +split([F|Fs], [V|Vs]) -> + {F, Fs, V, Vs}. + %%% ---------------------------------------------------------- %%% # TableName() %%% ---------------------------------------------------------- @@ -146,14 +130,14 @@ table(Table) %%% ---------------------------------------------------------- tables() -> - format_all(fun ?INFO:split/3). - -format_all(SplitFun) -> - ?INFO:format(field(?LOCAL), SplitFun, fun collect/1). + ?INFO:format(field(?LOCAL), fun split/3, fun collect/1). field(Tables) -> lists:map(fun(T) -> {T, fields(T)} end, lists:sort(Tables)). +split(_, Fs, Vs) -> + split(Fs, Vs). + %%% ---------------------------------------------------------- %%% # modules() %%% ---------------------------------------------------------- @@ -396,76 +380,24 @@ stop() -> %% tp/1 tpl(T) -> - dbg(tpl, dbg(T)). + dbg(tpl, T). tp(T) -> - dbg(tp, dbg(T)). - -%% dbg/1 - -dbg(x) -> - [{M, x, []} || M <- [diameter_tcp, - diameter_etcp, - diameter_sctp, - diameter_peer_fsm, - diameter_watchdog]]; - -dbg(log) -> - {?MODULE, log, 4}; - -dbg({log = F, Mods}) - when is_list(Mods) -> - {?MODULE, F, [{['_','$1','_','_'], - [?ORCOND([{'==', '$1', M} || M <- Mods])], - []}]}; - -dbg({log = F, Mod}) -> - dbg({F, [Mod]}); - -dbg(send) -> - {diameter_peer, send, 2}; - -dbg(recv) -> - {diameter_peer, recv, 2}; - -dbg(sendrecv) -> - [{diameter_peer, send, 2}, - {diameter_peer, recv, 2}]; - -dbg(decode) -> - [{diameter_codec,decode,2}]; - -dbg(encode) -> - [{diameter_codec,encode,2,[]}, - {diameter_codec,encode,3,[]}, - {diameter_codec,encode,4}]; - -dbg(transition = T) -> - [{?MODULE, log, [{[T,M,'_','_'],[],[]}]} - || M <- [diameter_watchdog, diameter_peer_fsm]]; - -dbg(T) -> - T. + dbg(tp, T). %% dbg/2 -dbg(TF, L) +dbg(F, L) when is_list(L) -> - {ok, lists:foldl(fun(T,A) -> {ok, X} = dbg(TF, T), [X|A] end, [], L)}; + [dbg(F, X) || X <- L]; dbg(F, M) when is_atom(M) -> - dbg(F, {M}); + apply(dbg, F, [M, x]); dbg(F, T) when is_tuple(T) -> - [_|_] = A = tuple_to_list(T), - {ok,_} = apply(dbg, F, case is_list(lists:last(A)) of - false -> - A ++ [[{'_',[],[{exception_trace}]}]]; - true -> - A - end). + apply(dbg, F, tuple_to_list(T)). %% =========================================================================== %% =========================================================================== @@ -493,15 +425,19 @@ peers(Name) -> peers(_, undefined) -> []; -peers(Name, {Cs,As}) -> - mk_peer(Name, connector, Cs) ++ mk_peer(Name, acceptor, As). - -mk_peer(Name, T, Ts) -> - [[Name | mk_peer(T,Vs)] || Vs <- Ts]. - -mk_peer(Type, Vs) -> - [Ref, State, Opts, WPid, TPid, SApps, Caps] - = get_values(Vs, [ref, state, options, watchdog, peer, apps, caps]), +peers(Name, Ts) -> + lists:flatmap(fun(T) -> mk_peers(Name, T) end, Ts). + +mk_peers(Name, [_, {type, connect} | _] = Ts) -> + [[Name | mk_peer(Ts)]]; +mk_peers(Name, [R, {type, listen}, O, {accept = A, As}]) -> + [[Name | mk_peer([R, {type, A}, O | Ts])] || Ts <- As]. +%% This is a bit lame: service_info works to build this list and out +%% of something like what we want here and then we take it apart. + +mk_peer(Vs) -> + [Type, Ref, State, Opts, WPid, TPid, SApps, Caps] + = get_values(Vs, [type,ref,state,options,watchdog,peer,apps,caps]), [Ref, State, [{type, Type} | Opts], s(WPid), s(TPid), SApps, Caps]. get_values(Vs, Ks) -> @@ -509,9 +445,13 @@ get_values(Vs, Ks) -> s(undefined = T) -> T; +s({Pid, _Started, _State}) -> + state(Pid); +s({Pid, _Started}) -> + state(Pid). %% Collect states from watchdog/transport pids. -s(Pid) -> +state(Pid) -> MRef = erlang:monitor(process, Pid), Pid ! {state, self()}, receive @@ -541,7 +481,18 @@ fields(diameter_stats) -> [] end; -?FIELDS(diameter_service); +fields(diameter_service) -> + [started, + name, + record_info(fields, diameter_service), + peerT, + connT, + share_peers, + use_shared_peers, + shared_peers, + local_peers, + monitor]; + ?FIELDS(diameter_event); ?FIELDS(diameter_uri); ?FIELDS(diameter_avp); diff --git a/lib/diameter/src/app/diameter_internal.hrl b/lib/diameter/src/app/diameter_internal.hrl index 9de3914830..63b35550a8 100644 --- a/lib/diameter/src/app/diameter_internal.hrl +++ b/lib/diameter/src/app/diameter_internal.hrl @@ -37,13 +37,14 @@ %% Failure reports always get a stack trace. -define(STACK, erlang:get_stacktrace()). -%% Info report for anything unexpected. --define(REPORT(Reason, Func, Args), - diameter_lib:report(Reason, {?MODULE, Func, Args})). +%% Warning report for unexpected messages in various processes. +-define(UNEXPECTED(F,A), + diameter_lib:warning_report(unexpected, {?MODULE, F, A})). +-define(UNEXPECTED(A), ?UNEXPECTED(?FUNC, A)). %% Something to trace on. -define(LOG(Slogan, Details), - diameter_dbg:log(Slogan, ?MODULE, ?LINE, Details)). + diameter_lib:log(Slogan, ?MODULE, ?LINE, Details)). -define(LOGC(Bool, Slogan, Details), ((Bool) andalso ?LOG(Slogan, Details))). %% Compensate for no builtin ?FUNC for use in log reports. @@ -77,19 +78,3 @@ server_id, is_dynamic, expiration}). - -%%%---------------------------------------------------------------------- -%%% Error/warning/info message macro(s) -%%%---------------------------------------------------------------------- - --define(diameter_info(F, A), - (catch error_logger:info_msg("[ ~w : ~w : ~p ] ~n" ++ F ++ "~n", - [?APPLICATION, ?MODULE, self()|A]))). - --define(diameter_warning(F, A), - (catch error_logger:warning_msg("[ ~w : ~w : ~p ] ~n" ++ F ++ "~n", - [?APPLICATION, ?MODULE, self()|A]))). - --define(diameter_error(F, A), - (catch error_logger:error_msg("[ ~w : ~w : ~p ] ~n" ++ F ++ "~n", - [?APPLICATION, ?MODULE, self()|A]))). diff --git a/lib/diameter/src/app/diameter_lib.erl b/lib/diameter/src/app/diameter_lib.erl index b5c0e1bf6a..362d593b24 100644 --- a/lib/diameter/src/app/diameter_lib.erl +++ b/lib/diameter/src/app/diameter_lib.erl @@ -30,7 +30,8 @@ ipaddr/1, spawn_opts/2, wait/1, - fold_tuple/3]). + fold_tuple/3, + log/4]). -include("diameter_internal.hrl"). @@ -46,14 +47,9 @@ report(Reason, MFA) -> info_report(Reason, MFA). -info_report(Reason, {M,F,A}) -> - error_logger:info_report(" Reason: ~p~n" - " Pid: ~p~n" - " Node: ~p~n" - " Module: ~p~n" - " Function: ~p~n" - "Arguments: ~p~n", - [Reason, self(), node(), M, F, A]). +info_report(Reason, MFA) -> + report(fun error_logger:info_report/1, Reason, MFA), + true. %%% --------------------------------------------------------------------------- %%% # error_report(Reason, MFA) @@ -69,7 +65,7 @@ warning_report(Reason, MFA) -> report(fun error_logger:warning_report/1, Reason, MFA). report(Fun, Reason, MFA) -> - Fun([{reason, Reason}, {who, self()}, {where, node()}, {what, MFA}]), + Fun([{why, Reason}, {who, self()}, {what, MFA}]), false. %%% --------------------------------------------------------------------------- @@ -255,12 +251,22 @@ w(L) -> fold_tuple(_, T, undefined) -> T; -fold_tuple(N, T0, T) -> - element(2, lists:foldl(fun(X, {M,_} = A) -> {M+1, ft(X, A)} end, - {N, T0}, - lists:nthtail(N-1, tuple_to_list(T)))). +fold_tuple(N, T0, T1) -> + {_, T} = lists:foldl(fun(V, {I,_} = IT) -> {I+1, ft(V, IT)} end, + {N, T0}, + lists:nthtail(N-1, tuple_to_list(T1))), + T. -ft(undefined, T) -> +ft(undefined, {_, T}) -> T; -ft(X, {N, T}) -> - setelement(N, T, X). +ft(Value, {Idx, T}) -> + setelement(Idx, T, Value). + +%%% ---------------------------------------------------------- +%%% # log(Slogan, Mod, Line, Details) +%%% +%%% Called to have something to trace on for happenings of interest. +%%% ---------------------------------------------------------- + +log(_, _, _, _) -> + ok. diff --git a/lib/diameter/src/app/diameter_peer.erl b/lib/diameter/src/app/diameter_peer.erl index 6b8971b8ea..3e78c4caef 100644 --- a/lib/diameter/src/app/diameter_peer.erl +++ b/lib/diameter/src/app/diameter_peer.erl @@ -148,7 +148,7 @@ handle_call(uptime, _, #state{id = Time} = State) -> {reply, diameter_lib:now_diff(Time), State}; handle_call(Req, From, State) -> - warning_msg("received unexpected request from ~p:~n~w", [From, Req]), + ?UNEXPECTED([Req, From]), {reply, nok, State}. %%% ---------------------------------------------------------- @@ -156,7 +156,7 @@ handle_call(Req, From, State) -> %%% ---------------------------------------------------------- handle_cast(Msg, State) -> - warning_msg("received unexpected message:~n~w", [Msg]), + ?UNEXPECTED([Msg]), {noreply, State}. %%% ---------------------------------------------------------- @@ -169,7 +169,7 @@ handle_info({notify, SvcName, T}, S) -> {noreply, S}; handle_info(Info, State) -> - warning_msg("received unexpected info:~n~w", [Info]), + ?UNEXPECTED([Info]), {noreply, State}. %% ---------------------------------------------------------- @@ -223,8 +223,3 @@ value([], V) -> call(Request) -> gen_server:call(?SERVER, Request, infinity). - -%% warning_msg/2 - -warning_msg(F, A) -> - ?diameter_warning("~p: " ++ F, [?MODULE | A]). diff --git a/lib/diameter/src/app/diameter_reg.erl b/lib/diameter/src/app/diameter_reg.erl index 8e5f34c2c3..882b9da238 100644 --- a/lib/diameter/src/app/diameter_reg.erl +++ b/lib/diameter/src/app/diameter_reg.erl @@ -243,7 +243,8 @@ handle_call(state, _, State) -> handle_call(uptime, _, #state{id = Time} = State) -> {reply, diameter_lib:now_diff(Time), State}; -handle_call(_Req, _From, State) -> +handle_call(Req, From, State) -> + ?UNEXPECTED([Req, From]), {reply, nok, State}. %%% ---------------------------------------------------------- @@ -251,7 +252,7 @@ handle_call(_Req, _From, State) -> %%% ---------------------------------------------------------- handle_cast(Msg, State)-> - warning_msg("received unexpected message:~n~w", [Msg]), + ?UNEXPECTED([Msg]), {noreply, State}. %%% ---------------------------------------------------------- @@ -264,7 +265,7 @@ handle_info({'DOWN', MRef, process, Pid, _}, State) -> {noreply, State}; handle_info(Info, State) -> - warning_msg("received unknown info:~n~w", [Info]), + ?UNEXPECTED([Info]), {noreply, State}. %%% ---------------------------------------------------------- @@ -324,8 +325,3 @@ repl([], _, _) -> call(Request) -> gen_server:call(?SERVER, Request, infinity). - -%% warning_msg/2 - -warning_msg(F, A) -> - ?diameter_warning("~p: " ++ F, [?MODULE | A]). diff --git a/lib/diameter/src/app/diameter_service.erl b/lib/diameter/src/app/diameter_service.erl index 63b0649dc4..421e36ccf5 100644 --- a/lib/diameter/src/app/diameter_service.erl +++ b/lib/diameter/src/app/diameter_service.erl @@ -463,7 +463,7 @@ handle_call(stop, _From, S) -> %% stating a monitor that waits for DOWN before returning. handle_call(Req, From, S) -> - ?REPORT(unknown_request, ?FUNC, [Req, From]), + unexpected(handle_call, [Req, From], S), {reply, nok, S}. %%% --------------------------------------------------------------------------- @@ -471,7 +471,7 @@ handle_call(Req, From, S) -> %%% --------------------------------------------------------------------------- handle_cast(Req, S) -> - ?REPORT(unknown_request, ?FUNC, [Req]), + unexpected(handle_cast, [Req], S), {noreply, S}. %%% --------------------------------------------------------------------------- @@ -553,8 +553,8 @@ transition({failover, TRef, Seqs}, S) -> failover(TRef, Seqs, S), ok; -transition(Req, _) -> - ?REPORT(unknown_request, ?FUNC, [Req]), +transition(Req, S) -> + unexpected(handle_info, [Req], S), ok. %%% --------------------------------------------------------------------------- @@ -591,6 +591,9 @@ code_change(FromVsn, SvcName, Extra, #diameter_app{alias = Alias} = A) -> %% =========================================================================== %% =========================================================================== +unexpected(F, A, #state{service_name = Name}) -> + ?UNEXPECTED(F, A ++ [Name]). + cb([_|_] = M, F, A) -> eval(M, F, A); cb(Rec, F, A) -> @@ -1398,15 +1401,15 @@ recv_answer(Timeout, %% is, from the last peer to which we've transmitted. receive - {answer = A, Ref, Rq, Pkt} -> %% Answer from peer. + {answer = A, Ref, Rq, Pkt} -> %% Answer from peer {A, Rq, Pkt}; - {timeout = Reason, TRef, _} -> %% No timely reply + {timeout = Reason, TRef, _} -> %% No timely reply {error, Req, Reason}; - {failover = Reason, TRef, false} -> %% No alternative peer. + {failover = Reason, TRef, false} -> %% No alternate peer {error, Req, Reason}; - {failover, TRef, Transport} -> %% Resend to alternate peer. + {failover, TRef, Transport} -> %% Resend to alternate peer try_retransmit(Timeout, SvcName, Req, Transport); - {failover, TRef} -> %% May have missed failover notification. + {failover, TRef} -> %% May have missed failover notification Seqs = diameter_codec:sequence_numbers(RPkt), Pid = whois(SvcName), is_pid(Pid) andalso (Pid ! {failover, TRef, Seqs}), @@ -1685,9 +1688,9 @@ recv_request({Id, Alias}, T, TPid, Apps, Caps, Pkt) -> %% DIAMETER_APPLICATION_UNSUPPORTED 3007 %% A request was sent for an application that is not supported. -recv_request(false, {_, OH, OR}, TPid, _, _, Pkt) -> - ?LOG({error, application}, Pkt), - reply(answer_message({OH, OR, 3007}, collect_avps(Pkt)), ?BASE, TPid, Pkt). +recv_request(false, T, TPid, _, _, Pkt) -> + As = collect_avps(Pkt), + protocol_error(3007, T, TPid, Pkt#diameter_packet{avps = As}). collect_avps(Pkt) -> case diameter_codec:collect_avps(Pkt) of @@ -1706,13 +1709,9 @@ collect_avps(Pkt) -> %% set to an unrecognized value, or that is inconsistent with the %% AVP's definition. %% -recv_request({_, OH, OR}, {TPid, _}, _, #diameter_packet{errors = [Bs | _], - bin = Bin, - avps = Avps} - = Pkt) +recv_request(T, {TPid, _}, _, #diameter_packet{errors = [Bs | _]} = Pkt) when is_bitstring(Bs) -> - ?LOG({error, invalid_avp_bits}, Bin), - reply(answer_message({OH, OR, 3009}, Avps), ?BASE, TPid, Pkt); + protocol_error(3009, T, TPid, Pkt); %% Either we support this application but don't recognize the command %% or we're a relay and the command isn't proxiable. @@ -1722,18 +1721,15 @@ recv_request({_, OH, OR}, {TPid, _}, _, #diameter_packet{errors = [Bs | _], %% recognize or support. This MUST be used when a Diameter node %% receives an experimental command that it does not understand. %% -recv_request({_, OH, OR}, +recv_request(T, {TPid, _}, #diameter_app{id = Id}, #diameter_packet{header = #diameter_header{is_proxiable = P}, - msg = M, - avps = Avps, - bin = Bin} + msg = M} = Pkt) when ?APP_ID_RELAY /= Id, undefined == M; ?APP_ID_RELAY == Id, not P -> - ?LOG({error, command_unsupported}, Bin), - reply(answer_message({OH, OR, 3001}, Avps), ?BASE, TPid, Pkt); + protocol_error(3001, T, TPid, Pkt); %% Error bit was set on a request. %% @@ -1742,15 +1738,12 @@ recv_request({_, OH, OR}, %% either set to an invalid combination, or to a value that is %% inconsistent with the command code's definition. %% -recv_request({_, OH, OR}, +recv_request(T, {TPid, _}, _, - #diameter_packet{header = #diameter_header{is_error = true}, - avps = Avps, - bin = Bin} + #diameter_packet{header = #diameter_header{is_error = true}} = Pkt) -> - ?LOG({error, error_bit}, Bin), - reply(answer_message({OH, OR, 3008}, Avps), ?BASE, TPid, Pkt); + protocol_error(3008, T, TPid, Pkt); %% A message in a locally supported application or a proxiable message %% in the relay application. Don't distinguish between the two since @@ -1878,7 +1871,7 @@ resend(true, _, _, T, {TPid, _}, Pkt) -> %% Route-Record loop resend(false, Opts, App, - {SvcName, _, _}, + {SvcName, _, _} = T, {TPid, #diameter_caps{origin_host = {_, OH}}}, #diameter_packet{header = Hdr0, avps = Avps} @@ -1887,46 +1880,41 @@ resend(false, Seq = diameter_session:sequence(), Hdr = Hdr0#diameter_header{hop_by_hop_id = Seq}, Msg = [Hdr, Route | Avps], - %% Filter sender as ineligible receiver. - reply(call(SvcName, App, Msg, [{filter, {neg, {host, OH}}} | Opts]), - TPid, - Pkt). + resend(call(SvcName, App, Msg, Opts), T, TPid, Pkt). %% The incoming request is relayed with the addition of a -%% Route-Record. Note the requirement on the return from call/4. -%% This places a requirement on the values returned by the -%% handle_answer and handle_error callbacks of the application module -%% in question. +%% Route-Record. Note the requirement on the return from call/4 below, +%% which places a requirement on the value returned by the +%% handle_answer callback of the application module in question. +%% +%% Note that there's nothing stopping the request from being relayed +%% back to the sender. A pick_peer callback may want to avoid this but +%% a smart peer might recognize the potential loop and choose another +%% route. A less smart one will probably just relay the request back +%% again and force us to detect the loop. A pick_peer that wants to +%% avoid this can specify filter to avoid the possibility. +%% Eg. {neg, {host, OH} where #diameter_caps{origin_host = {OH, _}}. %% %% RFC 6.3 says that a relay agent does not modify Origin-Host but %% says nothing about a proxy. Assume it should behave the same way. -%% reply/3 +%% resend/4 %% %% Relay a reply to a relayed request. %% Answer from the peer: reset the hop by hop identifier and send. -reply(#diameter_packet{bin = B} - = Pkt, - TPid, - #diameter_packet{header = #diameter_header{hop_by_hop_id = Id}, - transport_data = TD}) -> +resend(#diameter_packet{bin = B} + = Pkt, + _, + TPid, + #diameter_packet{header = #diameter_header{hop_by_hop_id = Id}, + transport_data = TD}) -> send(TPid, Pkt#diameter_packet{bin = diameter_codec:hop_by_hop_id(Id, B), transport_data = TD}); %% TODO: counters -%% Not. Ignoring the error feels harsh but there is no appropriate -%% Result-Code for a protocol error (which this isn't really anyway) -%% and the RFC doesn't provide any guidance how to act. A weakness -%% here is that we don't deal well with a decode error: the request -%% will simply timeout on the peer's end. Better would be to just send -%% the answer (with modified hop by hop identifier) on regardless, at -%% least in the relay case in which there's no examination of the -%% answer. In the proxy case it's not clear that the callback won't -%% examine the answer. Just be quiet here since a decode error causes -%% the request process to crash (or not depending on the error and -%% config and/or handle_answer callback). -reply(_, _, _) -> - ok. +%% Or not: DIAMETER_UNABLE_TO_DELIVER. +resend(_, T, TPid, Pkt) -> + protocol_error(3002, T, TPid, Pkt). %% is_loop/4 %% @@ -1971,24 +1959,20 @@ reply(Msg, Dict, TPid, #diameter_packet{errors = [H|_] = Es} = Pkt) -> %% make_reply_packet/2 +%% Binaries and header/avp lists are sent as-is. make_reply_packet(Bin, _) when is_binary(Bin) -> #diameter_packet{bin = Bin}; - make_reply_packet([#diameter_header{} | _] = Msg, _) -> #diameter_packet{msg = Msg}; +%% Otherwise a reply message clears the R and T flags and retains the +%% P flag. The E flag will be set at encode. make_reply_packet(Msg, #diameter_packet{header = ReqHdr}) -> - #diameter_header{end_to_end_id = EId, - hop_by_hop_id = Hid, - is_proxiable = P} - = ReqHdr, - - Hdr = #diameter_header{version = ?DIAMETER_VERSION, - end_to_end_id = EId, - hop_by_hop_id = Hid, - is_proxiable = P, - is_retransmitted = false}, + Hdr = ReqHdr#diameter_header{version = ?DIAMETER_VERSION, + is_request = false, + is_error = undefined, + is_retransmitted = false}, #diameter_packet{header = Hdr, msg = Msg}. @@ -2126,16 +2110,6 @@ answer_message({OH, OR, RC}, Avps) -> session_id(Code, Vid, Avps) when is_list(Avps) -> try - {value, #diameter_avp{} = Avp} = find_avp(Code, Vid, Avps), - Avp - catch - error: _ -> - [] - end; - -session_id(Code, Vid, Avps) - when is_list(Avps) -> - try {value, #diameter_avp{data = D}} = find_avp(Code, Vid, Avps), [{'Session-Id', [?BASE:avp(decode, D, 'Session-Id')]}] catch @@ -2482,6 +2456,7 @@ rpd(Pid, Alias, PDict) -> %%% %%% Output: {TransportPid, #diameter_caps{}, #diameter_app{}} %%% | false +%%% | {error, Reason} %%% --------------------------------------------------------------------------- %% Initial call, from an arbitrary process. @@ -2540,28 +2515,18 @@ get_destination(Msg, Dict) -> [str(get_avp_value(Dict, 'Destination-Realm', Msg)), str(get_avp_value(Dict, 'Destination-Host', Msg))]. -%% TODO: -%% -%% Should add some way of specifying destination directly so that the -%% only requirement is that the prepare_request callback returns -%% something specific. (eg. {host, DH}; that is, let the caller specify.) -%% -%% Also, there is no longer any need to call get_destination at all in -%% the default case. - -str(T) - when T == undefined; - T == [] -> +%% This is not entirely correct. The avp could have an arity 1, in +%% which case an empty list is a DiameterIdentity of length 0 rather +%% than the list of no values we treat it as by mapping to undefined. +%% This behaviour is documented. +str([]) -> undefined; -str([X]) - when is_list(X) -> - X; str(T) -> T. %% get_avp_value/3 %% -%% Support outgoing messages in one of three forms: +%% Find an AVP in a message of one of three forms: %% %% - a message record (as generated from a .dia spec) or %% - a list of an atom message name followed by 2-tuple, avp name/value pairs. @@ -2593,8 +2558,9 @@ get_avp_value(_, Name, [_MsgName | Avps]) -> undefined end; -get_avp_value(Dict, Name, Rec) - when is_tuple(Rec) -> +%% Message is typically a record but not necessarily: diameter:call/4 +%% can be passed an arbitrary term. +get_avp_value(Dict, Name, Rec) -> try Dict:'#get-'(Name, Rec) catch @@ -2690,7 +2656,8 @@ peers(Alias, RH, Filter, Peers) -> end. %% Place a peer whose Destination-Host/Realm matches those of the -%% request at the front of the result list. +%% request at the front of the result list. Could add some sort of +%% 'sort' option to allow more control. ps([], _, _, {Ys, Ns}) -> lists:reverse(Ys, Ns); @@ -2700,11 +2667,11 @@ ps([{_TPid, #diameter_caps{} = Caps} = TC | Rest], RH, Filter, Acc) -> TC, Acc)). -pacc(true, true, TC, {Ts, Fs}) -> - {[TC|Ts], Fs}; -pacc(true, false, TC, {Ts, Fs}) -> - {Ts, [TC|Fs]}; -pacc(false, _, _, Acc) -> +pacc(true, true, Peer, {Ts, Fs}) -> + {[Peer|Ts], Fs}; +pacc(true, false, Peer, {Ts, Fs}) -> + {Ts, [Peer|Fs]}; +pacc(_, _, _, Acc) -> Acc. %% caps_filter/3 @@ -2712,17 +2679,19 @@ pacc(false, _, _, Acc) -> caps_filter(C, RH, {neg, F}) -> not caps_filter(C, RH, F); -caps_filter(C, RH, {all, L}) -> +caps_filter(C, RH, {all, L}) + when is_list(L) -> lists:all(fun(F) -> caps_filter(C, RH, F) end, L); -caps_filter(C, RH, {any, L}) -> +caps_filter(C, RH, {any, L}) + when is_list(L) -> lists:any(fun(F) -> caps_filter(C, RH, F) end, L); -caps_filter(#diameter_caps{origin_host = {_,H}}, [_,DH], host) -> - eq(undefined, DH, H); +caps_filter(#diameter_caps{origin_host = {_,OH}}, [_,DH], host) -> + eq(undefined, DH, OH); -caps_filter(#diameter_caps{origin_realm = {_,R}}, [DR,_], realm) -> - eq(undefined, DR, R); +caps_filter(#diameter_caps{origin_realm = {_,OR}}, [DR,_], realm) -> + eq(undefined, DR, OR); caps_filter(C, _, Filter) -> caps_filter(C, Filter). @@ -2738,6 +2707,9 @@ caps_filter(#diameter_caps{origin_host = {_,OH}}, {host, H}) -> caps_filter(#diameter_caps{origin_realm = {_,OR}}, {realm, R}) -> eq(any, R, OR); +%% Anything else is expected to be an eval filter. Filter failure is +%% documented as being equivalent to a non-matching filter. + caps_filter(C, T) -> try {eval, F} = T, @@ -2746,8 +2718,14 @@ caps_filter(C, T) -> _:_ -> false end. -eq(X, A, B) -> - X == A orelse A == B. +eq(Any, Id, PeerId) -> + Any == Id orelse try + iolist_to_binary(Id) == iolist_to_binary(PeerId) + catch + _:_ -> false + end. +%% OctetString() can be specified as an iolist() so test for string +%% rather then term equality. %% transports/1 diff --git a/lib/diameter/src/app/diameter_stats.erl b/lib/diameter/src/app/diameter_stats.erl index b52d4cdcfb..71479afa95 100644 --- a/lib/diameter/src/app/diameter_stats.erl +++ b/lib/diameter/src/app/diameter_stats.erl @@ -207,7 +207,7 @@ handle_call({flush, Contrib}, _From, State) -> {reply, fetch(Contrib), State}; handle_call(Req, From, State) -> - warning_msg("received unexpected request from ~p:~n~w", [From, Req]), + ?UNEXPECTED([Req, From]), {reply, nok, State}. %% ---------------------------------------------------------- @@ -219,7 +219,7 @@ handle_cast({incr, Rec}, State) -> {noreply, State}; handle_cast(Msg, State) -> - warning_msg("received unexpected message:~n~w", [Msg]), + ?UNEXPECTED([Msg]), {noreply, State}. %% ---------------------------------------------------------- @@ -231,7 +231,7 @@ handle_info({'DOWN', _MRef, process, Pid, _}, State) -> {noreply, State}; handle_info(Info, State) -> - warning_msg("received unknown info:~n~w", [Info]), + ?UNEXPECTED([Info]), {noreply, State}. %% ---------------------------------------------------------- @@ -340,8 +340,3 @@ cast(Msg) -> call(Request) -> gen_server:call(?SERVER, Request, infinity). - -%% warning_msg/2 - -warning_msg(F, A) -> - ?diameter_warning("~p: " ++ F, [?MODULE | A]). diff --git a/lib/diameter/src/app/diameter_sync.erl b/lib/diameter/src/app/diameter_sync.erl index f7777ae809..ce2db4b3a2 100644 --- a/lib/diameter/src/app/diameter_sync.erl +++ b/lib/diameter/src/app/diameter_sync.erl @@ -204,37 +204,37 @@ handle_call(?REQUEST(Type, Name, Req, Max, Timeout), T = find(Name, QD), nq(queued(T) =< Max, T, {Type, From}, Name, Req, Timeout, State); -handle_call(Request, _From, State) -> - {reply, call(Request, State), State}. +handle_call(Request, From, State) -> + {reply, call(Request, From, State), State}. -%% call/2 +%% call/3 -call(?CARP(Name), #state{queue = QD}) -> +call(?CARP(Name), _, #state{queue = QD}) -> pcar(find(Name, QD)); -call(state, State) -> +call(state, _, State) -> State; -call(uptime, #state{time = T}) -> +call(uptime, _, #state{time = T}) -> diameter_lib:now_diff(T); -call({flush, Name}, #state{queue = QD}) -> +call({flush, Name}, _, #state{queue = QD}) -> cancel(find(Name, QD)); -call(pending, #state{pending = N}) -> +call(pending, _, #state{pending = N}) -> N; -call({pending, Name}, #state{queue = QD}) -> +call({pending, Name}, _, #state{queue = QD}) -> queued(find(Name, QD)); -call(queues, #state{queue = QD}) -> +call(queues, _, #state{queue = QD}) -> fetch_keys(QD); -call({pids, Name}, #state{queue = QD}) -> +call({pids, Name}, _, #state{queue = QD}) -> plist(find(Name, QD)); -call(Req, _State) -> %% ignore - warning_msg("received unexpected request:~n~w", [Req]), +call(Req, From, _State) -> %% ignore + ?UNEXPECTED(handle_call, [Req, From]), nok. %%% ---------------------------------------------------------- @@ -242,7 +242,7 @@ call(Req, _State) -> %% ignore %%% ---------------------------------------------------------- handle_cast(Msg, State) -> - warning_msg("received unexpected message:~n~w", [Msg]), + ?UNEXPECTED([Msg]), {noreply, State}. %%% ---------------------------------------------------------- @@ -267,7 +267,7 @@ info({'DOWN', MRef, process, Pid, Info}, queue = dq(fetch(Name, QD), Pid, Info, Name, QD)}; info(Info, State) -> - warning_msg("received unknown info:~n~w", [Info]), + ?UNEXPECTED(handle_info, [Info]), State. reply({call, From}, T) -> @@ -548,8 +548,3 @@ gen_call(Server, Req, Timeout) -> exit: _ -> timeout end. - -%% warning_msg/2 - -warning_msg(F, A) -> - ?diameter_warning("~p: " ++ F, [?MODULE | A]). diff --git a/lib/diameter/src/app/modules.mk b/lib/diameter/src/app/modules.mk index a7a78b1a9d..c133e6f64e 100644 --- a/lib/diameter/src/app/modules.mk +++ b/lib/diameter/src/app/modules.mk @@ -22,17 +22,13 @@ SPEC_FILES = \ diameter_gen_base_accounting.dia \ diameter_gen_relay.dia -MODULES = \ +RUNTIME_MODULES = \ diameter \ diameter_app \ - diameter_callback \ diameter_capx \ diameter_config \ - diameter_dbg \ diameter_codec \ diameter_dict \ - diameter_exprecs \ - diameter_info \ diameter_lib \ diameter_misc_sup \ diameter_peer \ @@ -49,6 +45,12 @@ MODULES = \ diameter_watchdog \ diameter_watchdog_sup +HELP_MODULES = \ + diameter_callback \ + diameter_exprecs \ + diameter_dbg \ + diameter_info + INTERNAL_HRL_FILES = \ diameter_internal.hrl \ diameter_types.hrl diff --git a/lib/diameter/src/compiler/Makefile b/lib/diameter/src/compiler/Makefile index 3ab76064ac..779013bfbc 100644 --- a/lib/diameter/src/compiler/Makefile +++ b/lib/diameter/src/compiler/Makefile @@ -94,16 +94,6 @@ info: @echo "" # ---------------------------------------------------- -# Special Build Targets -# ---------------------------------------------------- - -# Invoked from ../app to add modules to the app file. -$(APP_TARGET): force - M=`echo $(MODULES) | sed -e 's/^ *//' -e 's/ *$$//' -e 'y/ /,/'`; \ - echo "/%COMPILER_MODULES%/s//$$M/;w;q" | tr ';' '\n' \ - | ed -s $@ - -# ---------------------------------------------------- # Release Target # ---------------------------------------------------- ifneq ($(ERL_TOP),) diff --git a/lib/diameter/src/compiler/diameter_codegen.erl b/lib/diameter/src/compiler/diameter_codegen.erl index 30caebc544..a33b07a3d3 100644 --- a/lib/diameter/src/compiler/diameter_codegen.erl +++ b/lib/diameter/src/compiler/diameter_codegen.erl @@ -37,7 +37,6 @@ file/2, file/3]). --include_lib("diameter/src/app/diameter_internal.hrl"). -include("diameter_forms.hrl"). %% Generated functions that could have no generated clauses will have diff --git a/lib/diameter/src/transport/diameter_sctp.erl b/lib/diameter/src/transport/diameter_sctp.erl index 92aa8488a0..46473e7bf1 100644 --- a/lib/diameter/src/transport/diameter_sctp.erl +++ b/lib/diameter/src/transport/diameter_sctp.erl @@ -525,7 +525,22 @@ recv({[#sctp_sndrcvinfo{stream = Id}], Bin}, #transport{parent = Pid}) recv({[], #sctp_shutdown_event{assoc_id = Id}}, #transport{assoc_id = Id}) -> - stop. + stop; + +%% Note that diameter_sctp(3) documents that sctp_events cannot be +%% specified in the list of options passed to gen_sctp and that +%% gen_opts/1 guards against this. This is to ensure that we know what +%% events to expect and also to ensure that we receive +%% #sctp_sndrcvinfo{} with each incoming message (data_io_event = +%% true). Adaptation layer events (ie. #sctp_adaptation_event{}) are +%% disabled by default so don't handle it. We could simply disable +%% events we don't react to but don't. + +recv({[], #sctp_paddr_change{}}, _) -> + ok; + +recv({[], #sctp_pdapi_event{}}, _) -> + ok. %% up/1 @@ -591,7 +606,7 @@ f([], _, _) -> %% assoc_id/1 -assoc_id(#sctp_shutdown_event{assoc_id = Id}) -> %% undocumented +assoc_id(#sctp_shutdown_event{assoc_id = Id}) -> Id; assoc_id(#sctp_assoc_change{assoc_id = Id}) -> Id; diff --git a/lib/diameter/test/.gitignore b/lib/diameter/test/.gitignore new file mode 100644 index 0000000000..df38dfc5e3 --- /dev/null +++ b/lib/diameter/test/.gitignore @@ -0,0 +1,3 @@ + +/log +/depend.mk diff --git a/lib/diameter/test/Makefile b/lib/diameter/test/Makefile index b3648c7bb1..64e200584f 100644 --- a/lib/diameter/test/Makefile +++ b/lib/diameter/test/Makefile @@ -16,41 +16,40 @@ # # %CopyrightEnd% -ifneq ($(ERL_TOP),) -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk +ifeq ($(ERL_TOP),) +TOP = $(DIAMETER_TOP) else -include $(DIAMETER_TOP)/make/target.mk -include $(DIAMETER_TOP)/make/$(TARGET)/rules.mk +TOP = $(ERL_TOP) +DIAMETER_TOP = $(TOP)/lib/diameter endif +include $(TOP)/make/target.mk +include $(TOP)/make/$(TARGET)/otp.mk + # ---------------------------------------------------- # Application version # ---------------------------------------------------- + include ../vsn.mk -VSN=$(DIAMETER_VSN) +VSN = $(DIAMETER_VSN) # ---------------------------------------------------- # Release directory specification # ---------------------------------------------------- + RELSYSDIR = $(RELEASE_PATH)/diameter_test ifeq ($(findstring win32,$(TARGET)),win32) - MAKEFILE_SRC = Makefile.win32.src - else - MAKEFILE_SRC = Makefile.src - endif ifeq ($(TT_DIR),) TT_DIR = /tmp endif - # ---------------------------------------------------- # Target Specs # ---------------------------------------------------- @@ -59,30 +58,17 @@ include modules.mk EBIN = . -HRL_FILES = diameter_test_lib.hrl - +HRL_FILES = $(INTERNAL_HRL_FILES) ERL_FILES = $(MODULES:%=%.erl) SOURCE = $(HRL_FILES) $(ERL_FILES) - TARGET_FILES = $(MODULES:%=%.$(EMULATOR)) -APP_CASES = app appup - -TRANSPORT_CASES = tcp - -ALL_CASES = \ - $(APP_CASES) \ - compiler conf sync session stats reg peer \ - $(TRANSPORT_CASES) - +SUITE_MODULES = $(filter diameter_%_SUITE, $(MODULES)) +SUITES = $(SUITE_MODULES:diameter_%_SUITE=%) EMAKEFILE = Emakefile -ifneq ($(ERL_TOP),) -MAKE_EMAKE = $(wildcard $(ERL_TOP)/make/make_emakefile) -else -MAKE_EMAKE = $(wildcard $(DIAMETER_TOP)/make/make_emakefile) -endif +MAKE_EMAKE = $(wildcard $(TOP)/make/make_emakefile) ifeq ($(MAKE_EMAKE),) BUILDTARGET = $(TARGET_FILES) @@ -92,7 +78,6 @@ BUILDTARGET = emakebuild RELTEST_FILES = $(EMAKEFILE) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) $(SOURCE) endif - # ---------------------------------------------------- # FLAGS # ---------------------------------------------------- @@ -107,291 +92,116 @@ ifeq ($(USE_DIAMETER_HIPE),true) ERL_COMPILE_FLAGS += +native -DDIAMETER_hipe_special=true endif -ifneq ($(ERL_TOP),) -ERL_COMPILE_FLAGS += \ - $(DIAMETER_ERL_COMPILE_FLAGS) \ - -pa $(ERL_TOP)/lib/test_server/ebin \ - -I$(ERL_TOP)/lib/test_server/include -else -ERL_COMPILE_FLAGS += \ - $(DIAMETER_ERL_COMPILE_FLAGS) \ - -pa $(TEST_SERVER_DIR)/ebin \ - -I$(TEST_SERVER_DIR)/include -endif - -ERL_PATH = \ - -pa ../../$(APPLICATION)/ebin \ - -pa ../../et/ebin - -ifndef SUITE -SUITE = diameter_SUITE -endif - -ESTOP = -s init stop - -ifeq ($(DONT_STOP),true) -MAYBE_ESTOP = -else -MAYBE_ESTOP = $(ESTOP) -endif - -ETVIEW = -s et_viewer -ifeq ($(USE_ET_VIEWER),true) -MAYBE_ETVIEW = -else -MAYBE_ETVIEW = $(ETVIEW) -endif - -ifeq ($(MERL),) -MERL = $(ERL) -endif - -ARGS += -noshell - -ifeq ($(DISABLE_TC_TIMEOUT),true) -ARGS += -diameter_test_timeout -endif - - -DIAMETER_TEST_SERVER = diameter_test_server - +ERL_COMPILE_FLAGS += $(DIAMETER_ERL_COMPILE_FLAGS) \ + -DDIAMETER_CT=true \ + -I $(DIAMETER_TOP)/src/app # ---------------------------------------------------- # Targets # ---------------------------------------------------- -tests debug opt: $(BUILDTARGET) +all test: $(SUITES) -targets: $(TARGET_FILES) +tests debug opt: $(BUILDTARGET) -.PHONY: emakebuild +beam targets: $(TARGET_FILES) emakebuild: $(EMAKEFILE) $(EMAKEFILE): - $(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' | grep -v Warning > $(EMAKEFILE) - $(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) | grep -v Warning >> $(EMAKEFILE) + $(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o $(EBIN) '*_SUITE_make' $(MODULES) \ + | grep -v Warning \ + > $(EMAKEFILE) clean: rm -f $(EMAKEFILE) rm -f $(TARGET_FILES) + rm -f depend.mk + +realclean: clean rm -f errs core *~ +.PHONY: all emakebuild test tests debug opt beam targets clean realclean + docs: info: - @echo "MAKE_EMAKE = $(MAKE_EMAKE)" - @echo "EMAKEFILE = $(EMAKEFILE)" - @echo "BUILDTARGET = $(BUILDTARGET)" - @echo "" + @echo "MAKE_EMAKE = $(MAKE_EMAKE)" + @echo "EMAKEFILE = $(EMAKEFILE)" + @echo "BUILDTARGET = $(BUILDTARGET)" + @echo @echo "ERL_COMPILE_FLAGS = $(ERL_COMPILE_FLAGS)" @echo "ERL = $(ERL)" @echo "ERLC = $(ERLC)" - @echo "MERL = $(MERL)" - @echo "" - @echo "ARGS = $(ARGS)" - @echo "" + @echo @echo "HRL_FILES = $(HRL_FILES)" @echo "ERL_FILES = $(ERL_FILES)" @echo "TARGET_FILES = $(TARGET_FILES)" - @echo "" + @echo + @echo "SUITE_MODULES = $(SUITE_MODULES)" + @echo "SUITES = $(SUITES)" + @echo help: - @echo "" - @echo "This Makefile controls the test of the $(APPLICATION) application. " - @echo "" + @echo + @echo "This Makefile controls the test of the $(APPLICATION) application." + @echo @echo "There are two separate ways to perform the test of $(APPLICATION)." - @echo "" + @echo @echo " a) Run the official OTP test-server (which we do not describe here)" - @echo "" - @echo " b) Run the test-server provided with this application. " - @echo " There are a number of targets to run the entire or parts" - @echo " of this applications ($(APPLICATION)) test-suite" - @echo "" + @echo + @echo " b) Run individual suites using targets in this makefile, target" + @echo " xxx running the testcases contained in $(APPLICATION)_xxx_SUITE." + @echo @echo "Targets:" - @echo "" - @echo " help" - @echo " Print this info" - @echo "" + @echo + @echo " all" + @echo " Run all test suites." + @echo + @echo " $(SUITES)" + @echo " Run a specific test suite." + @echo + @echo " beam" + @echo " Compile all test-code." + @echo + @echo " clean" + @echo " Remove generated files." + @echo @echo " info" - @echo " Prints various environment variables. " - @echo " May be useful when debugging the Makefile. " - @echo "" - @echo " tests | debug | opt " - @echo " Compile all test-code. " - @echo "" - @echo " clean " - @echo " Remove all targets. " - @echo "" - @echo " test" - @echo " Run the entire $(APPLICATION) test-suite. " - @echo "" - @echo " app" - @echo " Run the $(APPLICATION) application sub-test-suite. " - @echo "" - @echo " appup" - @echo " Run the $(APPLICATION) application upgrade (appup) sub-test-suite. " - @echo "" - @echo " compiler" - @echo " Run the $(APPLICATION) compiler sub-test-suite(s). " - @echo "" - @echo " conf" - @echo " Run the $(APPLICATION) config sub-test-suite. " - @echo " Checks various aspects of the $(APPLICATION) configuration. " - @echo "" - @echo " sync" - @echo " Run the $(APPLICATION) sync sub-test-suite. " - @echo "" - @echo " session" - @echo " Run the $(APPLICATION) session sub-test-suite. " - @echo "" - @echo " stats" - @echo " Run the $(APPLICATION) stats sub-test-suite. " - @echo "" - @echo " reg" - @echo " Run the $(APPLICATION) reg sub-test-suite. " - @echo "" - @echo " peer" - @echo " Run the $(APPLICATION) peer sub-test-suite" - @echo "" - @echo " ptab" - @echo " Run the $(APPLICATION) persistent-table sub-test-suite" - @echo "" - @echo " tcp" - @echo " Run the $(APPLICATION) tcp sub-test-suite" - @echo "" - @echo "" + @echo " Prints various environment variables." + @echo " May be useful when debugging this Makefile." + @echo + @echo " help" + @echo " Print this info." + @echo +.PHONY: docs info help # ---------------------------------------------------- # Special Targets # ---------------------------------------------------- -all: make - @echo "make sure epmd is new" - @epmd -kill > /dev/null - @echo "Running all sub-suites separatelly" - @for i in $(ALL_CASES); do \ - echo "SUITE: $$i"; \ - clearmake -V $$i > $$i.log; \ - done - -aall: make - @echo "make sure epmd is new" - @epmd -kill > /dev/null - @echo "Running all app sub-suites separatelly" - @for i in $(APP_CASES); do \ - echo "SUITE: $$i"; \ - clearmake -V $$i > $$i.log; \ - done - echo "done" - -tall: make - @echo "make sure epmd is new" - @epmd -kill > /dev/null - @echo "Running all transport sub-suites separatelly" - @for i in $(TRANSPORT_CASES); do \ - echo "SUITE: $$i"; \ - clearmake -V $$i > $$i.log; \ - done - -make: targets - -test: make - $(MERL) $(ARGS) -sname diameter_test $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t $(SUITE) \ - $(MAYBE_ESTOP) - -utest: make - $(MERL) $(ARGS) -sname diameter_utest $(ERL_PATH) \ - $(MAYBE_ETVIEW) \ - -s $(DIAMETER_TEST_SERVER) t $(SUITE) \ - $(ESTOP) - -# ftest: make -# $(MERL) $(ARGS) -sname diameter_ftest $(ERL_PATH) \ -# -s diameter_filter \ -# -s $(DIAMETER_TEST_SERVER) t $(SUITE) \ -# $(ESTOP) -# - -########################## - -# tickets: make -# $(MERL) $(ARGS) -sname diameter_tickets $(ERL_PATH) \ -# -s $(DIAMETER_TEST_SERVER) tickets $(SUITE) \ -# $(ESTOP) -# - -app: make - $(MERL) $(ARGS) -sname diameter_app $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_app_test \ - $(ESTOP) - -appup: make - $(MERL) $(ARGS) -sname diameter_appup $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_appup_test \ - $(ESTOP) - -compiler: make - $(MERL) $(ARGS) -sname diameter_compiler $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_compiler_test \ - $(ESTOP) - -conf: make - $(MERL) $(ARGS) -sname diameter_config $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_config_test \ - $(ESTOP) - -sync: make - $(MERL) $(ARGS) -sname diameter_sync $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_sync_test \ - $(ESTOP) +# Exit with a non-zero status if the output looks to indicate failure. +# diameter_ct:run/1 itself can't tell (it seems). +$(SUITES): log targets + $(ERL) -noshell \ + -pa $(DIAMETER_TOP)/ebin \ + -sname diameter_test_$@ \ + -s diameter_ct run diameter_$@_SUITE \ + -s init stop \ + | awk '1{rc=0} {print} / FAILED /{rc=1} END{exit rc}' +# Shorter in sed but requires a GNU extension (ie. Q). -session: make - $(MERL) $(ARGS) -sname diameter_session $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_session_test \ - $(ESTOP) - -stats: make - $(MERL) $(ARGS) -sname diameter_stats $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_stats_test \ - $(ESTOP) - -reg: make - $(MERL) $(ARGS) -sname diameter_reg $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_reg_test \ - $(ESTOP) - -peer: make - $(MERL) $(ARGS) -sname diameter_peer $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_peer_test \ - $(ESTOP) - -ptab: make - $(MERL) $(ARGS) -sname diameter_persistent_table $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_persistent_table_test \ - $(ESTOP) - -tcp: make - $(MERL) $(ARGS) -sname diameter_tcp $(ERL_PATH) \ - -s $(DIAMETER_TEST_SERVER) t diameter_tcp_test \ - $(ESTOP) - - -node: - $(MERL) -sname diameter $(ERL_PATH) +log: + mkdir $@ +.PHONY: $(SUITES) # ---------------------------------------------------- # Release Targets # ---------------------------------------------------- -ifneq ($(ERL_TOP),) -include $(ERL_TOP)/make/otp_release_targets.mk -else -include $(DIAMETER_TOP)/make/release_targets.mk -endif +include $(TOP)/make/otp_release_targets.mk release_spec: @@ -400,9 +210,20 @@ release_docs_spec: release_tests_spec: tests $(INSTALL_DIR) $(RELSYSDIR) $(INSTALL_DATA) $(RELTEST_FILES) $(RELSYSDIR) -# $(INSTALL_DATA) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) \ -# $(HRL_FILES) $(ERL_FILES) \ -# $(RELSYSDIR) -# - chmod -R u+w $(RELSYSDIR) +.PHONY: release_spec release_docs_spec release_test_specs + +# ---------------------------------------------------- + +depend: depend.mk + +# Generate dependencies makefile. +depend.mk: depend.sed $(MODULES:%=%.erl) Makefile + (for f in $(MODULES); do \ + sed -f $< $$f.erl | sed "s@/@/$$f@"; \ + done) \ + > $@ + +-include depend.mk + +.PHONY: depend diff --git a/lib/diameter/test/depend.sed b/lib/diameter/test/depend.sed new file mode 100644 index 0000000000..a399eb45f0 --- /dev/null +++ b/lib/diameter/test/depend.sed @@ -0,0 +1,31 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 2010-2011. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# + +# +# Extract local include dependencies from .erl files. The output is massaged +# further in Makefile. +# + +/^-include/!d +/^-include_lib/d +/diameter_gen/d + +s@^-include("@@ +s@".*@@ +s@^@$(EBIN)/.$(EMULATOR): @ diff --git a/lib/diameter/test/diameter.spec b/lib/diameter/test/diameter.spec index a6e71762eb..fae7863bec 100644 --- a/lib/diameter/test/diameter.spec +++ b/lib/diameter/test/diameter.spec @@ -1,9 +1 @@ {suites, "../diameter_test", all}. -%%{skip, {diameter_compiler_test, all, "Not yet implemented"}}. -%%{skip, {diameter_config_test, all, "Not yet implemented"}}. -%%{skip, {diameter_peer_test, all, "Not yet implemented"}}. -%%{skip, {diameter_reg_test, all, "Not yet implemented"}}. -%%{skip, {diameter_session_test, all, "Not yet implemented"}}. -%%{skip, {diameter_stats_test, all, "Not yet implemented"}}. -%%{skip, {diameter_sync_test, all, "Not yet implemented"}}. -%%{skip, {diameter_tcp_test, all, "Not yet implemented"}}. diff --git a/lib/diameter/test/diameter_SUITE.erl b/lib/diameter/test/diameter_SUITE.erl deleted file mode 100644 index 443cf90e92..0000000000 --- a/lib/diameter/test/diameter_SUITE.erl +++ /dev/null @@ -1,108 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Test application config -%%---------------------------------------------------------------------- - --module(diameter_SUITE). - --export([ - suite/0, - all/0, - groups/0, - - init_per_testcase/2, - fin_per_testcase/2, - - init_per_suite/1, - end_per_suite/1, - - init_per_group/2, - end_per_group/2, - - init/0 - ]). - --export([t/0, t/1]). - - --include("diameter_test_lib.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - -init() -> - process_flag(trap_exit, true), - ?FLUSH(). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Top test case - -suite() -> - [{ct_hooks, [{ts_install_cth, [{nodenames,1}]}]}]. - -all() -> - [ - {group, app}, - {group, appup}, - {group, compiler}, - {group, config}, - {group, sync}, - {group, session}, - {group, stats}, - {group, reg}, - {group, peer}, - {group, tcp} - ]. - -groups() -> - [{app, [], [{diameter_app_test, all}]}, - {appup, [], [{diameter_appup_test, all}]}, - {compiler, [], [{diameter_compiler_test, all}]}, - {config, [], [{diameter_config_test, all}]}, - {sync, [], [{diameter_sync_test, all}]}, - {session, [], [{diameter_session_test, all}]}, - {stats, [], [{diameter_stats_test, all}]}, - {reg, [], [{diameter_reg_test, all}]}, - {peer, [], [{diameter_peer_test, all}]}, - {tcp, [], [{diameter_tcp_test, all}]}]. - - -init_per_suite(Config) -> - Config. - -end_per_suite(_Config) -> - ok. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. diff --git a/lib/diameter/test/diameter_app_SUITE.erl b/lib/diameter/test/diameter_app_SUITE.erl new file mode 100644 index 0000000000..104785b4e6 --- /dev/null +++ b/lib/diameter/test/diameter_app_SUITE.erl @@ -0,0 +1,257 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests based on the contents of the diameter app file. +%% + +-module(diameter_app_SUITE). + +-export([suite/0, + all/0, + init_per_suite/1, + end_per_suite/1]). + +%% testcases +-export([keys/1, + vsn/1, + modules/1, + exports/1, + release/1, + xref/1, + relup/1]). + +-include("diameter_ct.hrl"). + +-define(A, list_to_atom). + +%% =========================================================================== + +suite() -> + [{timetrap, {seconds, 10}}]. + +all() -> + [keys, + vsn, + modules, + exports, + release, + xref, + relup]. + +init_per_suite(Config) -> + [{application, ?APP, App}] = diameter_util:consult(?APP, app), + [{app, App} | Config]. + +end_per_suite(_Config) -> + ok. + +%% =========================================================================== +%% # keys/1 +%% +%% Ensure that the app file contains selected keys. Some of these would +%% also be caught by other testcases. +%% =========================================================================== + +keys(Config) -> + App = fetch(app, Config), + [] = lists:filter(fun(K) -> not lists:keymember(K, 1, App) end, + [vsn, description, modules, registered, applications]). + +%% =========================================================================== +%% # vsn/1 +%% +%% Ensure that our app version sticks to convention. +%% =========================================================================== + +vsn(Config) -> + true = is_vsn(fetch(vsn, fetch(app, Config))). + +%% =========================================================================== +%% # modules/1 +%% +%% Ensure that the app file modules and installed modules differ by +%% compiler/help modules. +%% =========================================================================== + +modules(Config) -> + Mods = fetch(modules, fetch(app, Config)), + Installed = code_mods(), + Help = [diameter_callback, + diameter_codegen, + diameter_dbg, + diameter_exprecs, + diameter_info, + diameter_spec_scan, + diameter_spec_util], + {[], Help} = {Mods -- Installed, lists:sort(Installed -- Mods)}. + +code_mods() -> + Dir = code:lib_dir(?APP, ebin), + {ok, Files} = file:list_dir(Dir), + [?A(lists:reverse(R)) || N <- Files, "maeb." ++ R <- [lists:reverse(N)]]. + +%% =========================================================================== +%% # exports/1 +%% +%% Ensure that no module does export_all. +%% =========================================================================== + +exports(Config) -> + Mods = fetch(modules, fetch(app, Config)), + [] = [M || M <- Mods, exports_all(M)]. + +exports_all(Mod) -> + Opts = fetch(options, Mod:module_info(compile)), + + is_list(Opts) andalso lists:member(export_all, Opts). + +%% =========================================================================== +%% # release/1 +%% +%% Ensure that it's possible to build a minimal release with our app file. +%% =========================================================================== + +release(Config) -> + App = fetch(app, Config), + Rel = {release, + {"diameter test release", fetch(vsn, App)}, + {erts, erlang:system_info(version)}, + [{A, appvsn(A)} || A <- fetch(applications, App)]}, + Dir = fetch(priv_dir, Config), + ok = write_file(filename:join([Dir, "diameter_test.rel"]), Rel), + {ok, _, []} = systools:make_script("diameter_test", [{path, [Dir]}, + {outdir, Dir}, + silent]). + +appvsn(Name) -> + [{application, Name, App}] = diameter_util:consult(Name, app), + fetch(vsn, App). + +%% =========================================================================== +%% # xref/1 +%% +%% Ensure that no function in our application calls an undefined function. +%% =========================================================================== + +xref(Config) -> + App = fetch(app, Config), + Mods = fetch(modules, App) -- [diameter_codegen, diameter_dbg], + %% Skip modules that aren't required at runtime and that have + %% dependencies beyond those applications listed in the app file. + + {ok, XRef} = xref:start(make_name(xref_test_name)), + ok = xref:set_default(XRef, [{verbose, false}, {warnings, false}]), + + %% Only add our application and those it's dependent on according + %% to the app file. Well, almost. erts beams are also required to + %% stop xref from complaining about calls to module erlang, which + %% was previously in kernel. Erts isn't an application however, in + %% the sense that there's no .app file, and isn't listed in + %% applications. Seems less than ideal. + ok = lists:foreach(fun(A) -> add_application(XRef, A) end, + [?APP, erts | fetch(applications, App)]), + + {ok, Undefs} = xref:analyze(XRef, undefined_function_calls), + + xref:stop(XRef), + + %% Only care about calls from our own application. + [] = lists:filter(fun({{M,_,_},_}) -> lists:member(M, Mods) end, Undefs). + +add_application(XRef, App) -> + add_application(XRef, App, code:lib_dir(App)). + +%% erts will not be in the lib directory before installation. +add_application(XRef, erts, {error, _}) -> + Dir = filename:join([code:root_dir(), "erts", "preloaded", "ebin"]), + {ok, _} = xref:add_directory(XRef, Dir, []); +add_application(XRef, App, Dir) + when is_list(Dir) -> + {ok, App} = xref:add_application(XRef, Dir, []). + +make_name(Suf) -> + list_to_atom(atom_to_list(?APP) ++ "_" ++ atom_to_list(Suf)). + +%% =========================================================================== +%% # relup/1 +%% +%% Ensure that we can generate release upgrade files using our appup file. +%% =========================================================================== + +relup(Config) -> + [{Vsn, Up, Down}] = diameter_util:consult(?APP, appup), + true = is_vsn(Vsn), + + App = fetch(app, Config), + Rel = [{erts, erlang:system_info(version)} + | [{A, appvsn(A)} || A <- fetch(applications, App)]], + + Dir = fetch(priv_dir, Config), + + Name = write_rel(Dir, Rel, Vsn), + UpFrom = acc_rel(Dir, Rel, Up), + DownTo = acc_rel(Dir, Rel, Down), + + {[Name], [Name], UpFrom, DownTo} %% no intersections + = {[Name] -- UpFrom, + [Name] -- DownTo, + UpFrom -- DownTo, + DownTo -- UpFrom}, + + {ok, _, _, []} = systools:make_relup(Name, UpFrom, DownTo, [{path, [Dir]}, + {outdir, Dir}, + silent]). + +acc_rel(Dir, Rel, List) -> + lists:foldl(fun(T,A) -> acc_rel(Dir, Rel, T, A) end, + [], + List). + +acc_rel(Dir, Rel, {Vsn, _}, Acc) -> + [write_rel(Dir, Rel, Vsn) | Acc]. + +%% Write a rel file and return its name. +write_rel(Dir, [Erts | Apps], Vsn) -> + true = is_vsn(Vsn), + Name = "diameter_test_" ++ Vsn, + ok = write_file(filename:join([Dir, Name ++ ".rel"]), + {release, + {"diameter " ++ Vsn ++ " test release", Vsn}, + Erts, + Apps}), + Name. + +%% =========================================================================== +%% =========================================================================== + +fetch(Key, List) -> + {Key, {Key, Val}} = {Key, lists:keyfind(Key, 1, List)}, %% useful badmatch + Val. + +write_file(Path, T) -> + file:write_file(Path, io_lib:format("~p.", [T])). + +%% Is a version string of the expected form? Return the argument +%% itself for 'false' for a useful badmatch. +is_vsn(V) -> + is_list(V) + andalso length(V) == string:span(V, "0123456789.") + andalso V == string:join(string:tokens(V, [$.]), ".") %% no ".." + orelse {error, V}. diff --git a/lib/diameter/test/diameter_app_test.erl b/lib/diameter/test/diameter_app_test.erl deleted file mode 100644 index 7173c39caf..0000000000 --- a/lib/diameter/test/diameter_app_test.erl +++ /dev/null @@ -1,393 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the application specifics of the Diameter application -%%---------------------------------------------------------------------- --module(diameter_app_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2, - - fields/1, - modules/1, - exportall/1, - app_depend/1, - undef_funcs/1 - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(undef_funcs = Case, Config) -> - NewConfig = [{tc_timeout, ?MINUTES(10)} | Config], - diameter_test_server:init_per_testcase(Case, NewConfig); -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - [ - fields, - modules, - exportall, - app_depend, - undef_funcs - ]. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - io:format("~w:init_per_suite -> entry with" - "~n Config: ~p" - "~n", [?MODULE, Config]), - case is_app(diameter) of - {ok, AppFile} -> - io:format("AppFile: ~n~p~n", [AppFile]), - %% diameter:print_version_info(), - [{app_file, AppFile}|Config]; - {error, Reason} -> - ?FAIL(Reason) - end. - -is_app(App) -> - LibDir = code:lib_dir(App), - File = filename:join([LibDir, "ebin", atom_to_list(App) ++ ".app"]), - case file:consult(File) of - {ok, [{application, App, AppFile}]} -> - {ok, AppFile}; - Error -> - {error, {invalid_format, Error}} - end. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -fields(suite) -> - []; -fields(doc) -> - []; -fields(Config) when is_list(Config) -> - AppFile = ?KEY1SEARCH(app_file, Config), - Fields = [vsn, description, modules, registered, applications], - case check_fields(Fields, AppFile, []) of - [] -> - ok; - Missing -> - ?FAIL({missing_fields, Missing}) - end. - -check_fields([], _AppFile, Missing) -> - Missing; -check_fields([Field|Fields], AppFile, Missing) -> - check_fields(Fields, AppFile, check_field(Field, AppFile, Missing)). - -check_field(Name, AppFile, Missing) -> - io:format("checking field: ~p~n", [Name]), - case lists:keymember(Name, 1, AppFile) of - true -> - Missing; - false -> - [Name|Missing] - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -modules(suite) -> - []; -modules(doc) -> - []; -modules(Config) when is_list(Config) -> - AppFile = ?KEY1SEARCH(app_file, Config), - Mods = ?KEY1SEARCH(modules, AppFile), - EbinList = get_ebin_mods(diameter), - case missing_modules(Mods, EbinList, []) of - [] -> - ok; - Missing -> - throw({error, {missing_modules, Missing}}) - end, - Allowed = [diameter_codegen, - diameter_make, - diameter_spec_scan, - diameter_spec_util], - case extra_modules(Mods, EbinList, Allowed, []) of - [] -> - ok; - Extra -> - throw({error, {extra_modules, Extra}}) - end, - {ok, Mods}. - -get_ebin_mods(App) -> - LibDir = code:lib_dir(App), - EbinDir = filename:join([LibDir,"ebin"]), - {ok, Files0} = file:list_dir(EbinDir), - Files1 = [lists:reverse(File) || File <- Files0], - [list_to_atom(lists:reverse(Name)) || [$m,$a,$e,$b,$.|Name] <- Files1]. - - -missing_modules([], _Ebins, Missing) -> - Missing; -missing_modules([Mod|Mods], Ebins, Missing) -> - case lists:member(Mod, Ebins) of - true -> - missing_modules(Mods, Ebins, Missing); - false -> - io:format("missing module: ~p~n", [Mod]), - missing_modules(Mods, Ebins, [Mod|Missing]) - end. - - -extra_modules(_Mods, [], Allowed, Extra) -> - Extra--Allowed; -extra_modules(Mods, [Mod|Ebins], Allowed, Extra) -> - case lists:member(Mod, Mods) of - true -> - extra_modules(Mods, Ebins, Allowed, Extra); - false -> - io:format("supefluous module: ~p~n", [Mod]), - extra_modules(Mods, Ebins, Allowed, [Mod|Extra]) - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -exportall(suite) -> - []; -exportall(doc) -> - []; -exportall(Config) when is_list(Config) -> - AppFile = ?KEY1SEARCH(app_file, Config), - Mods = ?KEY1SEARCH(modules, AppFile), - check_export_all(Mods). - - -check_export_all([]) -> - ok; -check_export_all([Mod|Mods]) -> - case (catch apply(Mod, module_info, [compile])) of - {'EXIT', {undef, _}} -> - check_export_all(Mods); - O -> - case lists:keysearch(options, 1, O) of - false -> - check_export_all(Mods); - {value, {options, List}} -> - case lists:member(export_all, List) of - true -> - throw({error, {export_all, Mod}}); - false -> - check_export_all(Mods) - end - end - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -app_depend(suite) -> - []; -app_depend(doc) -> - []; -app_depend(Config) when is_list(Config) -> - AppFile = ?KEY1SEARCH(app_file, Config), - Apps = ?KEY1SEARCH(applications, AppFile), - check_apps(Apps). - - -check_apps([]) -> - ok; -check_apps([App|Apps]) -> - case is_app(App) of - {ok, _} -> - check_apps(Apps); - Error -> - throw({error, {missing_app, {App, Error}}}) - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -undef_funcs(suite) -> - []; -undef_funcs(doc) -> - []; -undef_funcs(Config) when is_list(Config) -> - ?SKIP(diameter_not_known_by_xref), - App = diameter, - AppFile = ?KEY1SEARCH(app_file, Config), - Mods = ?KEY1SEARCH(modules, AppFile), - Root = code:root_dir(), - LibDir = code:lib_dir(App), - EbinDir = filename:join([LibDir,"ebin"]), - XRefTestName = undef_funcs_make_name(App, xref_test_name), - try - begin - XRef = xref_start(XRefTestName), - xref_set_defaults(XRef, [{verbose,false},{warnings,false}]), - XRefName = undef_funcs_make_name(App, xref_name), - XRefName = xref_add_release(XRef, Root, XRefName), - xref_replace_application(XRef, App, EbinDir), - Undefs = xref_analyze(XRef), - xref_stop(XRef), - analyze_undefined_function_calls(Undefs, Mods, []) - end - catch - throw:{error, Reason} -> - ?FAIL(Reason) - end. - - -xref_start(XRefTestName) -> - case (catch xref:start(XRefTestName)) of - {ok, XRef} -> - XRef; - {error, Reason} -> - throw({error, {failed_starting_xref, Reason}}); - Error -> - throw({error, {failed_starting_xref, Error}}) - end. - -xref_set_defaults(XRef, Defs) -> - case (catch xref:set_default(XRef, Defs)) of - ok -> - ok; - Error -> - throw({error, {failed_setting_defaults, Defs, Error}}) - end. - -xref_add_release(XRef, Root, Name) -> - case (catch xref:add_release(XRef, Root, {name, Name})) of - {ok, XRefName} -> - XRefName; - {error, Reason} -> - throw({error, {failed_adding_release, Reason}}); - Error -> - throw({error, {failed_adding_release, Error}}) - end. - -xref_replace_application(XRef, App, EbinDir) -> - case (catch xref:replace_application(XRef, App, EbinDir)) of - {ok, App} -> - ok; - {error, XRefMod, Reason} -> - throw({error, {failed_replacing_app, XRefMod, Reason}}); - Error -> - throw({error, {failed_replacing_app, Error}}) - end. - -xref_analyze(XRef) -> - case (catch xref:analyze(XRef, undefined_function_calls)) of - {ok, Undefs} -> - Undefs; - {error, Reason} -> - throw({error, {failed_detecting_func_calls, Reason}}); - Error -> - throw({error, {failed_detecting_func_calls, Error}}) - end. - -xref_stop(XRef) -> - xref:stop(XRef). - -analyze_undefined_function_calls([], _, []) -> - ok; -analyze_undefined_function_calls([], _, AppUndefs) -> - exit({suite_failed, {undefined_function_calls, AppUndefs}}); -analyze_undefined_function_calls([{{Mod, _F, _A}, _C} = AppUndef|Undefs], - AppModules, AppUndefs) -> - %% Check that this module is our's - case lists:member(Mod,AppModules) of - true -> - {Calling,Called} = AppUndef, - {Mod1,Func1,Ar1} = Calling, - {Mod2,Func2,Ar2} = Called, - io:format("undefined function call: " - "~n ~w:~w/~w calls ~w:~w/~w~n", - [Mod1,Func1,Ar1,Mod2,Func2,Ar2]), - analyze_undefined_function_calls(Undefs, AppModules, - [AppUndef|AppUndefs]); - false -> - io:format("dropping ~p~n", [Mod]), - analyze_undefined_function_calls(Undefs, AppModules, AppUndefs) - end. - -%% This function is used simply to avoid cut-and-paste errors later... -undef_funcs_make_name(App, PostFix) -> - list_to_atom(atom_to_list(App) ++ "_" ++ atom_to_list(PostFix)). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%% fail(Reason) -> -%% exit({suite_failed, Reason}). - -%% ?KEY1SEARCH(Key, L) -> -%% case lists:keysearch(Key, 1, L) of -%% undefined -> -%% fail({not_found, Key, L}); -%% {value, {Key, Value}} -> -%% Value -%% end. diff --git a/lib/diameter/test/diameter_appup_test.erl b/lib/diameter/test/diameter_appup_test.erl deleted file mode 100644 index 97a089e01a..0000000000 --- a/lib/diameter/test/diameter_appup_test.erl +++ /dev/null @@ -1,539 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the application specifics of the Diameter application -%%---------------------------------------------------------------------- --module(diameter_appup_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2, - - appup/1 - ]). - --export([t/0, t/1]). - --compile({no_auto_import,[error/1]}). - --include("diameter_test_lib.hrl"). - --define(APPLICATION, diameter). - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - [appup]. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - AppFile = file_name(?APPLICATION, ".app"), - AppupFile = file_name(?APPLICATION, ".appup"), - [{app_file, AppFile}, {appup_file, AppupFile}|Config]. - - -file_name(App, Ext) -> - LibDir = code:lib_dir(App), - filename:join([LibDir, "ebin", atom_to_list(App) ++ Ext]). - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -appup(suite) -> - []; -appup(doc) -> - "perform a simple check of the appup file"; -appup(Config) when is_list(Config) -> - AppupFile = key1search(appup_file, Config), - AppFile = key1search(app_file, Config), - Modules = modules(AppFile), - check_appup(AppupFile, Modules). - -modules(File) -> - case file:consult(File) of - {ok, [{application,diameter,Info}]} -> - case lists:keysearch(modules,1,Info) of - {value, {modules, Modules}} -> - Modules; - false -> - fail({bad_appinfo, Info}) - end; - Error -> - fail({bad_appfile, Error}) - end. - - -check_appup(AppupFile, Modules) -> - case file:consult(AppupFile) of - {ok, [{V, UpFrom, DownTo}]} -> - check_appup(V, UpFrom, DownTo, Modules); - Else -> - fail({bad_appupfile, Else}) - end. - - -check_appup(V, UpFrom, DownTo, Modules) -> - check_version(V), - check_depends(up, UpFrom, Modules), - check_depends(down, DownTo, Modules), - check_module_subset(UpFrom), - check_module_subset(DownTo), - ok. - - -check_depends(_, [], _) -> - ok; -check_depends(UpDown, [Dep|Deps], Modules) -> - check_depend(UpDown, Dep, Modules), - check_depends(UpDown, Deps, Modules). - - -check_depend(up = UpDown, {add_application, ?APPLICATION} = Instr, Modules) -> - d("check_instructions(~w) -> entry with" - "~n Instruction: ~p" - "~n Modules: ~p", [UpDown, Instr, Modules]), - ok; -check_depend(down = UpDown, {remove_application, ?APPLICATION} = Instr, - Modules) -> - d("check_instructions(~w) -> entry with" - "~n Instruction: ~p" - "~n Modules: ~p", [UpDown, Instr, Modules]), - ok; -check_depend(UpDown, {V, Instructions}, Modules) -> - d("check_instructions(~w) -> entry with" - "~n V: ~p" - "~n Modules: ~p", [UpDown, V, Modules]), - check_version(V), - case check_instructions(UpDown, - Instructions, Instructions, [], [], Modules) of - {_Good, []} -> - ok; - {_, Bad} -> - fail({bad_instructions, Bad, UpDown}) - end. - - -check_instructions(_, [], _, Good, Bad, _) -> - {lists:reverse(Good), lists:reverse(Bad)}; -check_instructions(UpDown, [Instr|Instrs], AllInstr, Good, Bad, Modules) -> - d("check_instructions(~w) -> entry with" - "~n Instr: ~p", [UpDown,Instr]), - case (catch check_instruction(UpDown, Instr, AllInstr, Modules)) of - ok -> - check_instructions(UpDown, Instrs, AllInstr, - [Instr|Good], Bad, Modules); - {error, Reason} -> - d("check_instructions(~w) -> bad instruction: " - "~n Reason: ~p", [UpDown,Reason]), - check_instructions(UpDown, Instrs, AllInstr, Good, - [{Instr, Reason}|Bad], Modules) - end. - -%% A new module is added -check_instruction(up, {add_module, Module}, _, Modules) - when is_atom(Module) -> - d("check_instruction -> entry when up-add_module instruction with" - "~n Module: ~p", [Module]), - check_module(Module, Modules); - -%% An old module is re-added -check_instruction(down, {add_module, Module}, _, Modules) - when is_atom(Module) -> - d("check_instruction -> entry when down-add_module instruction with" - "~n Module: ~p", [Module]), - case (catch check_module(Module, Modules)) of - {error, {unknown_module, Module, Modules}} -> - ok; - ok -> - error({existing_readded_module, Module}) - end; - -%% Removing a module on upgrade: -%% - the module has been removed from the app-file. -%% - check that no module depends on this (removed) module -check_instruction(up, {remove, {Module, Pre, Post}}, _, Modules) - when is_atom(Module) andalso is_atom(Pre) andalso is_atom(Post) -> - d("check_instruction -> entry when up-remove instruction with" - "~n Module: ~p" - "~n Pre: ~p" - "~n Post: ~p", [Module, Pre, Post]), - case (catch check_module(Module, Modules)) of - {error, {unknown_module, Module, Modules}} -> - check_purge(Pre), - check_purge(Post); - ok -> - error({existing_removed_module, Module}) - end; - -%% Removing a module on downgrade: the module exist -%% in the app-file. -check_instruction(down, {remove, {Module, Pre, Post}}, AllInstr, Modules) - when is_atom(Module) andalso is_atom(Pre) andalso is_atom(Post) -> - d("check_instruction -> entry when down-remove instruction with" - "~n Module: ~p" - "~n Pre: ~p" - "~n Post: ~p", [Module, Pre, Post]), - case (catch check_module(Module, Modules)) of - ok -> - check_purge(Pre), - check_purge(Post), - check_no_remove_depends(Module, AllInstr); - {error, {unknown_module, Module, Modules}} -> - error({nonexisting_removed_module, Module}) - end; - -check_instruction(_, {load_module, Module, Pre, Post, Depend}, - AllInstr, Modules) - when is_atom(Module) andalso is_atom(Pre) andalso is_atom(Post) andalso is_list(Depend) -> - d("check_instruction -> entry when load_module instruction with" - "~n Module: ~p" - "~n Pre: ~p" - "~n Post: ~p" - "~n Depend: ~p", [Module, Pre, Post, Depend]), - check_module(Module, Modules), - check_module_depend(Module, Depend, Modules), - check_module_depend(Module, Depend, updated_modules(AllInstr, [])), - check_purge(Pre), - check_purge(Post); - -check_instruction(_, {update, Module, Change, Pre, Post, Depend}, - AllInstr, Modules) - when is_atom(Module) andalso is_atom(Pre) andalso is_atom(Post) andalso is_list(Depend) -> - d("check_instruction -> entry when update instruction with" - "~n Module: ~p" - "~n Change: ~p" - "~n Pre: ~p" - "~n Post: ~p" - "~n Depend: ~p", [Module, Change, Pre, Post, Depend]), - check_module(Module, Modules), - check_module_depend(Module, Depend, Modules), - check_module_depend(Module, Depend, updated_modules(AllInstr, [])), - check_change(Change), - check_purge(Pre), - check_purge(Post); - -check_instruction(_, {update, Module, supervisor}, _, Modules) - when is_atom(Module) -> - check_module(Module, Modules); - -check_instruction(_, {apply, {Module, Function, Args}}, _, Modules) - when is_atom(Module) andalso is_atom(Function) andalso is_list(Args) -> - d("check_instruction -> entry when down-apply instruction with" - "~n Module: ~p" - "~n Function: ~p" - "~n Args: ~p", [Module, Function, Args]), - check_module(Module, Modules), - check_apply(Module, Function, Args); - -check_instruction(_, {restart_application, ?APPLICATION}, _AllInstr, _Modules) -> - ok; - -check_instruction(_, Instr, _AllInstr, _Modules) -> - d("check_instruction -> entry when unknown instruction with" - "~n Instr: ~p", [Instr]), - error({error, {unknown_instruction, Instr}}). - - -%% If Module X depends on Module Y, then module Y must have an update -%% instruction of some sort (otherwise the depend is faulty). -updated_modules([], Modules) -> - d("update_modules -> entry when done with" - "~n Modules: ~p", [Modules]), - Modules; -updated_modules([Instr|Instrs], Modules) -> - d("update_modules -> entry with" - "~n Instr: ~p" - "~n Modules: ~p", [Instr,Modules]), - Module = instruction_module(Instr), - d("update_modules -> Module: ~p", [Module]), - updated_modules(Instrs, [Module|Modules]). - -instruction_module({add_module, Module}) -> - Module; -instruction_module({remove, {Module, _, _}}) -> - Module; -instruction_module({load_module, Module, _, _, _}) -> - Module; -instruction_module({update, Module, _, _, _, _}) -> - Module; -instruction_module({apply, {Module, _, _}}) -> - Module; -instruction_module(Instr) -> - d("instruction_module -> entry when unknown instruction with" - "~n Instr: ~p", [Instr]), - error({error, {unknown_instruction, Instr}}). - - -%% Check that the modules handled in an instruction set for version X -%% is a subset of the instruction set for version X-1. -check_module_subset(Instructions) -> - do_check_module_subset(modules_of(Instructions)). - -do_check_module_subset([]) -> - ok; -do_check_module_subset([_]) -> - ok; -do_check_module_subset([{_V1, Mods1}|T]) -> - {V2, Mods2} = hd(T), - %% Check that the modules in V1 is a subset of V2 - case do_check_module_subset2(Mods1, Mods2) of - ok -> - do_check_module_subset(T); - {error, Modules} -> - fail({subset_missing_instructions, V2, Modules}) - end. - -do_check_module_subset2(Mods1, Mods2) -> - do_check_module_subset2(Mods1, Mods2, []). - -do_check_module_subset2([], _, []) -> - ok; -do_check_module_subset2([], _, Acc) -> - {error, lists:reverse(Acc)}; -do_check_module_subset2([Mod|Mods], Mods2, Acc) -> - case lists:member(Mod, Mods2) of - true -> - do_check_module_subset2(Mods, Mods2, Acc); - false -> - do_check_module_subset2(Mods, Mods2, [Mod|Acc]) - end. - - -modules_of(Instructions) -> - modules_of(Instructions, []). - -modules_of([], Acc) -> - lists:reverse(Acc); -modules_of([{V,Instructions}|T], Acc) -> - Mods = modules_of2(Instructions, []), - modules_of(T, [{V, Mods}|Acc]). - -modules_of2([], Acc) -> - lists:reverse(Acc); -modules_of2([Instr|Instructions], Acc) -> - case module_of(Instr) of - {value, Mod} -> - modules_of2(Instructions, [Mod|Acc]); - false -> - modules_of2(Instructions, Acc) - end. - -module_of({add_module, Module}) -> - {value, Module}; -module_of({remove, {Module, _Pre, _Post}}) -> - {value, Module}; -module_of({load_module, Module, _Pre, _Post, _Depend}) -> - {value, Module}; -module_of({update, Module, _Change, _Pre, _Post, _Depend}) -> - {value, Module}; -module_of(_) -> - false. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% The version is a string consting of numbers separated by dots: "." -%% Example: "3.3.3" -%% -check_version(V) when is_list(V) -> - case do_check_version(string:tokens(V, [$.])) of - ok -> - ok; - {error, BadVersionPart} -> - throw({error, {bad_version, V, BadVersionPart}}) - end; -check_version(V) -> - error({bad_version, V}). - -do_check_version([]) -> - ok; -do_check_version([H|T]) -> - case (catch list_to_integer(H)) of - I when is_integer(I) -> - do_check_version(T); - _ -> - {error, H} - end. - -check_module(M, Modules) when is_atom(M) -> - case lists:member(M,Modules) of - true -> - ok; - false -> - error({unknown_module, M, Modules}) - end; -check_module(M, _) -> - error({bad_module, M}). - - -check_module_depend(M, [], _) when is_atom(M) -> - d("check_module_depend -> entry with" - "~n M: ~p", [M]), - ok; -check_module_depend(M, Deps, Modules) when is_atom(M) andalso is_list(Deps) -> - d("check_module_depend -> entry with" - "~n M: ~p" - "~n Deps: ~p" - "~n Modules: ~p", [M, Deps, Modules]), - case [Dep || Dep <- Deps, lists:member(Dep, Modules) == false] of - [] -> - ok; - Unknown -> - error({unknown_depend_modules, Unknown}) - end; -check_module_depend(_M, D, _Modules) -> - d("check_module_depend -> entry when bad depend with" - "~n D: ~p", [D]), - error({bad_depend, D}). - - -check_no_remove_depends(_Module, []) -> - ok; -check_no_remove_depends(Module, [Instr|Instrs]) -> - check_no_remove_depend(Module, Instr), - check_no_remove_depends(Module, Instrs). - -check_no_remove_depend(Module, {load_module, Mod, _Pre, _Post, Depend}) -> - case lists:member(Module, Depend) of - true -> - error({removed_module_in_depend, load_module, Mod, Module}); - false -> - ok - end; -check_no_remove_depend(Module, {update, Mod, _Change, _Pre, _Post, Depend}) -> - case lists:member(Module, Depend) of - true -> - error({removed_module_in_depend, update, Mod, Module}); - false -> - ok - end; -check_no_remove_depend(_, _) -> - ok. - - -check_change(soft) -> - ok; -check_change({advanced, _Something}) -> - ok; -check_change(Change) -> - error({bad_change, Change}). - - -check_purge(soft_purge) -> - ok; -check_purge(brutal_purge) -> - ok; -check_purge(Purge) -> - error({bad_purge, Purge}). - - -check_apply(Module, Function, Args) -> - case (catch Module:module_info()) of - Info when is_list(Info) -> - check_exported(Function, Args, Info); - {'EXIT', {undef, _}} -> - error({not_existing_module, Module}) - end. - -check_exported(Function, Args, Info) -> - case lists:keysearch(exports, 1, Info) of - {value, {exports, FuncList}} -> - Arity = length(Args), - Arities = [A || {F, A} <- FuncList, F == Function], - case lists:member(Arity, Arities) of - true -> - ok; - false -> - error({not_exported_function, Function, Arity}) - end; - _ -> - error({bad_export, Info}) - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -error(Reason) -> - throw({error, Reason}). - -fail(Reason) -> - exit({suite_failed, Reason}). - -key1search(Key, L) -> - case lists:keysearch(Key, 1, L) of - undefined -> - fail({not_found, Key, L}); - {value, {Key, Value}} -> - Value - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -d(F, A) -> - d(false, F, A). - -d(true, F, A) -> - io:format(F ++ "~n", A); -d(_, _, _) -> - ok. - - diff --git a/lib/diameter/test/diameter_codec_SUITE.erl b/lib/diameter/test/diameter_codec_SUITE.erl new file mode 100644 index 0000000000..30c60be8e9 --- /dev/null +++ b/lib/diameter/test/diameter_codec_SUITE.erl @@ -0,0 +1,76 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Test encode/decode of dictionary-related modules. Each test case +%% runs multiple tests in parallel since many of the tests are just +%% the same code with different in-data: implementing each test as a +%% single testcase would make for much duplication with ct's current +%% requirement of one function per testcase. +%% + +-module(diameter_codec_SUITE). + +-export([suite/0, + all/0, + init_per_testcase/2, + end_per_testcase/2]). + +%% testcases +-export([base/1, + gen/1, + lib/1]). + +-include("diameter_ct.hrl"). + +-define(L, atom_to_list). + +%% =========================================================================== + +suite() -> + [{timetrap, {seconds, 10}}]. + +all() -> + [base, gen, lib]. + +init_per_testcase(gen, Config) -> + [{application, ?APP, App}] = diameter_util:consult(?APP, app), + {modules, Ms} = lists:keyfind(modules, 1, App), + [_|_] = Gs = lists:filter(fun(M) -> + lists:prefix("diameter_gen_", ?L(M)) + end, + Ms), + [{dicts, Gs} | Config]; + +init_per_testcase(_Name, Config) -> + Config. + +end_per_testcase(_, _) -> + ok. + +%% =========================================================================== + +base(_Config) -> + diameter_codec_test:base(). + +gen([{dicts, Ms} | _]) -> + lists:foreach(fun diameter_codec_test:gen/1, Ms). + +lib(_Config) -> + diameter_codec_test:lib(). diff --git a/lib/diameter/test/diameter_codec_test.erl b/lib/diameter/test/diameter_codec_test.erl new file mode 100644 index 0000000000..aab7ab35cc --- /dev/null +++ b/lib/diameter/test/diameter_codec_test.erl @@ -0,0 +1,500 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +-module(diameter_codec_test). + +-compile(export_all). + +%% +%% Test encode/decode of dictionary-related modules. +%% + +-include_lib("diameter/include/diameter.hrl"). + +-define(BASE, diameter_gen_base_rfc3588). +-define(BOOL, [true, false]). + +%% =========================================================================== +%% Interface. + +base() -> + [] = run([{?MODULE, [base, T]} || T <- [zero, decode]]). + +gen(Mod) -> + Fs = [{Mod, F, []} || F <- [name, id, vendor_id, vendor_name]], + [] = run(Fs ++ [{?MODULE, [gen, Mod, T]} || T <- [messages, + command_codes, + avp_types, + grouped, + enums, + import_avps, + import_groups, + import_enums]]). + +lib() -> + Vs = {_,_} = values('Address'), + [] = run([[fun lib/2, N, Vs] || N <- [1,2]]). + +%% =========================================================================== +%% Internal functions. + +lib(N, {_,_} = T) -> + B = 1 == N rem 2, + [] = run([[fun lib/2, A, B] || A <- element(N,T)]); + +lib(IP, B) -> + LA = tuple_to_list(IP), + {SA,Fun} = ip(LA), + [] = run([[fun lib/4, IP, B, Fun, A] || A <- [IP, LA, SA]]). + +lib(IP, B, Fun, A) -> + try Fun(A) of + IP when B -> + ok + catch + error:_ when not B -> + ok + end. + +ip([_,_,_,_] = A) -> + [$.|S] = lists:append(["." ++ integer_to_list(N) || N <- A]), + {S, fun diameter_lib:ip4address/1}; +ip([_,_,_,_,_,_,_,_] = A) -> + [$:|S] = lists:flatten([":" ++ io_lib:format("~.16B", [N]) || N <- A]), + {S, fun diameter_lib:ip6address/1}. + +%% ------------------------------------------------------------------------ +%% base/1 +%% +%% Test of diameter_types. +%% ------------------------------------------------------------------------ + +base(T) -> + [] = run([{?MODULE, [base, T, F]} || F <- types()]). + +%% Ensure that 'zero' values encode only zeros. +base(zero = T, F) -> + B = diameter_types:F(encode, T), + B = z(B); + +%% Ensure that we can decode what we encode and vice-versa, and that +%% we can't decode invalid values. +base(decode, F) -> + {Eq, Vs, Ns} = b(values(F)), + [] = run([{?MODULE, [base_decode, F, Eq, V]} || V <- Vs]), + [] = run([{?MODULE, [base_invalid, F, Eq, V]} || V <- Ns]). + +base_decode(F, Eq, Value) -> + d(fun(X,V) -> diameter_types:F(X,V) end, Eq, Value). + +base_invalid(F, Eq, Value) -> + try + base_decode(F, Eq, Value), + exit(nok) + catch + error: _ -> + ok + end. + +b({_,_,_} = T) -> + T; +b({B,Vs}) + when is_atom(B) -> + {B,Vs,[]}; +b({Vs,Ns}) -> + {true, Vs, Ns}; +b(Vs) -> + {true, Vs, []}. + +types() -> + [F || {F,2} <- diameter_types:module_info(exports)]. + +%% ------------------------------------------------------------------------ +%% gen/2 +%% +%% Test of generated encode/decode module. +%% ------------------------------------------------------------------------ + +gen(M, T) -> + [] = run(lists:map(fun(X) -> {?MODULE, [gen, M, T, X]} end, + fetch(T, M:dict()))). + +fetch(T, Spec) -> + case orddict:find(T, Spec) of + {ok, L} -> + L; + error -> + [] + end. + +gen(M, messages, {Name, Code, Flags, _, _}) -> + Rname = M:msg2rec(Name), + Name = M:rec2msg(Rname), + {Code, F, _} = M:msg_header(Name), + 0 = F band 2#00001111, + Name = case M:msg_name(Code, lists:member('REQ', Flags)) of + N when Name /= 'answer-message' -> + N; + '' when Name == 'answer-message', M == ?BASE -> + Name + end, + [] = arity(M, Name, Rname); + +gen(M, command_codes = T, {Code, {Req, Abbr}, Ans}) -> + Rname = M:msg2rec(Req), + Rname = M:msg2rec(Abbr), + gen(M, T, {Code, Req, Ans}); + +gen(M, command_codes = T, {Code, Req, {Ans, Abbr}}) -> + Rname = M:msg2rec(Ans), + Rname = M:msg2rec(Abbr), + gen(M, T, {Code, Req, Ans}); + +gen(M, command_codes, {Code, Req, Ans}) -> + Msgs = orddict:fetch(messages, M:dict()), + {_, Code, _, _, _} = lists:keyfind(Req, 1, Msgs), + {_, Code, _, _, _} = lists:keyfind(Ans, 1, Msgs); + +gen(M, avp_types, {Name, Code, Type, _Flags, _Encr}) -> + {Code, Flags, VendorId} = M:avp_header(Name), + 0 = Flags band 2#00011111, + V = undefined /= VendorId, + V = 0 /= Flags band 2#10000000, + {Name, Type} = M:avp_name(Code, VendorId), + B = M:empty_value(Name), + B = z(B), + [] = avp_decode(M, Type, Name); + +gen(M, grouped, {Name, _, _, _}) -> + Rname = M:name2rec(Name), + [] = arity(M, Name, Rname); + +gen(M, enums, {Name, ED}) -> + [] = run([{?MODULE, [enum, M, Name, T]} || T <- ED]); + +gen(M, Tag, {_Mod, L}) -> + T = retag(Tag), + [] = run([{?MODULE, [gen, M, T, I]} || I <- L]). + +%% avp_decode/3 + +avp_decode(Mod, Type, Name) -> + {Eq, Vs, _} = b(values(Type, Name, Mod)), + [] = run([{?MODULE, [avp_decode, Mod, Name, Type, Eq, V]} + || V <- v(Vs)]). + +avp_decode(Mod, Name, Type, Eq, Value) -> + d(fun(X,V) -> avp(Mod, X, V, Name, Type) end, Eq, Value). + +avp(Mod, decode = X, V, Name, 'Grouped') -> + {Rec, _} = Mod:avp(X, V, Name), + Rec; +avp(Mod, X, V, Name, _) -> + Mod:avp(X, V, Name). + +%% v/1 + +%% List of values ... +v(Vs) + when is_list(Vs) -> + Vs; + +%% .. or enumeration for grouped avps. This could be quite large +%% (millions of values) but since the avps are also tested +%% individually don't bother trying everything. Instead, choose a +%% reasonable number of values at random. +v(E) -> + v(2000, E(0), E). + +v(Max, Ord, E) + when Ord =< Max -> + diameter_enum:to_list(E); +v(Max, Ord, E) -> + {M,S,U} = now(), + random:seed(M,S,U), + v(Max, Ord, E, []). + +v(0, _, _, Acc) -> + Acc; +v(N, Ord, E, Acc) -> + v(N-1, Ord, E, [E(random:uniform(Ord)) | Acc]). + +%% arity/3 + +arity(M, Name, Rname) -> + Rec = M:'#new-'(Rname), + [] = run([{?MODULE, [arity, M, Name, F, Rec]} + || F <- M:'#info-'(Rname, fields)]). + +arity(M, Name, AvpName, Rec) -> + Def = M:'#get-'(AvpName, Rec), + Def = case M:avp_arity(Name, AvpName) of + 1 -> + undefined; + A when 0 /= A -> + [] + end. + +%% enum/3 + +enum(M, Name, {E,_}) -> + B = <<E:32/integer>>, + B = M:avp(encode, E, Name), + E = M:avp(decode, B, Name). + +retag(import_avps) -> avp_types; +retag(import_groups) -> grouped; +retag(import_enums) -> enums; + +retag(avp_types) -> import_avps; +retag(enums) -> import_enums. + +%% =========================================================================== + +d(F, Eq, V) -> + B = F(encode, V), + D = F(decode, B), + V = if Eq -> %% test for value equality ... + D; + true -> %% ... or that encode/decode is idempotent + D = F(decode, F(encode, D)), + V + end. + +z(B) -> + << <<0>> || <<_>> <= B >>. + +%% values/1 +%% +%% Return a list of base type values. Can also be wrapped in a tuple +%% with 'false' to indicate that encode followed by decode may not be +%% the identity map. (Although that this composition is idempotent is +%% tested.) + +values('OctetString' = T) -> + {["", atom_to_list(T)], [-1, 256]}; + +values('Integer32') -> + Mx = (1 bsl 31) - 1, + Mn = -1*Mx, + {[Mn, 0, random(Mn,Mx), Mx], [Mn - 1, Mx + 1]}; + +values('Integer64') -> + Mx = (1 bsl 63) - 1, + Mn = -1*Mx, + {[Mn, 0, random(Mn,Mx), Mx], [Mn - 1, Mx + 1]}; + +values('Unsigned32') -> + M = (1 bsl 32) - 1, + {[0, random(M), M], [-1, M + 1]}; + +values('Unsigned64') -> + M = (1 bsl 64) - 1, + {[0, random(M), M], [-1, M + 1]}; + +values('Float32') -> + E = (1 bsl 8) - 2, + F = (1 bsl 23) - 1, + <<Mx:32/float>> = <<0:1/integer, E:8/integer, F:23/integer>>, + <<Mn:32/float>> = <<1:1/integer, E:8/integer, F:23/integer>>, + {[0.0, infinity, '-infinity', Mx, Mn], [0]}; + +values('Float64') -> + E = (1 bsl 11) - 2, + F = (1 bsl 52) - 1, + <<Mx:64/float>> = <<0:1/integer, E:11/integer, F:52/integer>>, + <<Mn:64/float>> = <<1:1/integer, E:11/integer, F:52/integer>>, + {[0.0, infinity, '-infinity', Mx, Mn], [0]}; + +values('Address') -> + {[{255,0,random(16#FF),1}, {65535,0,0,random(16#FFFF),0,0,0,1}], + [{256,0,0,1}, {65536,0,0,0,0,0,0,1}]}; + +values('DiameterIdentity') -> + {["x", "diameter.com"], [""]}; + +values('DiameterURI') -> + {false, ["aaa" ++ S ++ "://diameter.se" ++ P ++ Tr ++ Pr + || S <- ["", "s"], + P <- ["", ":1234"], + Tr <- ["" | [";transport=" ++ X + || X <- ["tcp", "sctp", "udp"]]], + Pr <- ["" | [";protocol=" ++ X + || X <- ["diameter","radius","tacacs+"]]]]}; + +values(T) + when T == 'IPFilterRule'; + T == 'QoSFilterRule' -> + ["deny in 0 from 127.0.0.1 to 10.0.0.1"]; + +%% RFC 3629 defines the UTF-8 encoding of U+0000 through U+10FFFF with the +%% exception of U+D800 through U+DFFF. +values('UTF8String') -> + {[[], + lists:seq(0,16#1FF), + [0,16#D7FF,16#E000,16#10FFFF], + [random(16#D7FF), random(16#E000,16#10FFFF)]], + [[-1], + [16#D800], + [16#DFFF], + [16#110000]]}; + +values('Time') -> + {[{{1968,1,20},{3,14,8}}, %% 19000101T000000 + 1 bsl 31 + {date(), time()}, + {{2036,2,7},{6,28,15}}, + {{2036,2,7},{6,28,16}}, %% 19000101T000000 + 2 bsl 31 + {{2104,2,26},{9,42,23}}], + [{{1968,1,20},{3,14,7}}, + {{2104,2,26},{9,42,24}}]}. %% 19000101T000000 + 3 bsl 31 + +%% values/3 +%% +%% Return list or enumerations of values for a given AVP. Can be +%% wrapped as for values/1. + +values('Enumerated', Name, Mod) -> + {_Name, Vals} = lists:keyfind(Name, 1, types(enums, Mod)), + lists:map(fun({N,_}) -> N end, Vals); + +values('Grouped', Name, Mod) -> + Rname = Mod:name2rec(Name), + Rec = Mod:'#new-'(Rname), + Avps = Mod:'#info-'(Rname, fields), + Enum = diameter_enum:combine(lists:map(fun({_,Vs,_}) -> to_enum(Vs) end, + [values(F, Mod) || F <- Avps])), + {false, diameter_enum:append(group(Mod, Name, Rec, Avps, Enum))}; + +values(_, 'Framed-IP-Address', _) -> + [{127,0,0,1}]; + +values(Type, _, _) -> + values(Type). + +to_enum(Vs) + when is_list(Vs) -> + diameter_enum:new(Vs); +to_enum(E) -> + E. + +%% values/2 + +values('AVP', _) -> + {true, [#diameter_avp{code = 0, data = <<0>>}], []}; + +values(Name, Mod) -> + Avps = types(avp_types, Mod), + {Name, _Code, Type, _Flags, _Encr} = lists:keyfind(Name, 1, Avps), + b(values(Type, Name, Mod)). + +%% group/5 +%% +%% Pack four variants of group values: tagged list containing all +%% values, the corresponding record, a minimal tagged list and the +%% coresponding record. + +group(Mod, Name, Rec, Avps, Enum) -> + lists:map(fun(B) -> group(Mod, Name, Rec, Avps, Enum, B) end, + [{A,R} || A <- ?BOOL, R <- ?BOOL]). + +group(Mod, Name, Rec, Avps, Enum, B) -> + diameter_enum:map(fun(Vs) -> g(Mod, Name, Rec, Avps, Vs, B) end, Enum). + +g(Mod, Name, Rec, Avps, Values, {All, AsRec}) -> + {Tagged, []} + = lists:foldl(fun(N, {A, [V|Vs]}) -> + {pack(All, Mod:avp_arity(Name, N), N, V, A), Vs} + end, + {[], Values}, + Avps), + g(AsRec, Mod, Tagged, Rec). + +g(true, Mod, Vals, Rec) -> + Mod:'#set-'(Vals, Rec); +g(false, _, Vals, _) -> + Vals. + +pack(true, Arity, Avp, Value, Acc) -> + [all(Arity, Avp, Value) | Acc]; +pack(false, Arity, Avp, Value, Acc) -> + min(Arity, Avp, Value, Acc). + +all(Mod, Name, Avp, V) -> + all(Mod:avp_arity(Name, Avp), Avp, V). + +all(1, Avp, V) -> + {Avp, V}; +all({0,'*'}, Avp, V) -> + a(1, Avp, V); +all({N,'*'}, Avp, V) -> + a(N, Avp, V); +all({_,N}, Avp, V) -> + a(N, Avp, V). + +a(N, Avp, V) + when N /= 0 -> + {Avp, lists:duplicate(N,V)}. + +min(Mod, Name, Avp, V, Acc) -> + min(Mod:avp_arity(Name, Avp), Avp, V, Acc). + +min(1, Avp, V, Acc) -> + [{Avp, V} | Acc]; +min({0,_}, _, _, Acc) -> + Acc; +min({N,_}, Avp, V, Acc) -> + [{Avp, lists:duplicate(N,V)} | Acc]. + +%% types/2 + +types(T, Mod) -> + types(T, retag(T), Mod). + +types(T, IT, Mod) -> + Dict = Mod:dict(), + fetch(T, Dict) ++ lists:flatmap(fun({_,As}) -> As end, fetch(IT, Dict)). + +%% random/[12] + +random(M) -> + random(0,M). + +random(Mn,Mx) -> + seed(get({?MODULE, seed})), + Mn + random:uniform(Mx - Mn + 1) - 1. + +seed(undefined) -> + put({?MODULE, seed}, true), + random:seed(now()); + +seed(true) -> + ok. + +%% run/1 +%% +%% Unravel nested badmatches resulting from [] matches on calls to +%% run/1 to make for more readable failures. + +run(L) -> + lists:flatmap(fun flatten/1, diameter_util:run(L)). + +flatten({_, {{badmatch, [{_, {{badmatch, _}, _}} | _] = L}, _}}) -> + L; +flatten(T) -> + [T]. diff --git a/lib/diameter/test/diameter_compiler_test.erl b/lib/diameter/test/diameter_compiler_test.erl deleted file mode 100644 index ae4c9c668d..0000000000 --- a/lib/diameter/test/diameter_compiler_test.erl +++ /dev/null @@ -1,104 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the dia compiler of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_compiler_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2 - - %% foo/1 - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - []. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - Config. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case example -%% - -%% foo(suite) -> -%% []; -%% foo(doc) -> -%% []; -%% foo(Config) when is_list(Config) -> -%% ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - diff --git a/lib/diameter/test/diameter_config_test.erl b/lib/diameter/test/diameter_config_test.erl deleted file mode 100644 index c44fb654ab..0000000000 --- a/lib/diameter/test/diameter_config_test.erl +++ /dev/null @@ -1,105 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the config server of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_config_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2 - - %% foo/1 - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - []. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - Config. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case example -%% - -%% foo(suite) -> -%% []; -%% foo(doc) -> -%% []; -%% foo(Config) when is_list(Config) -> -%% ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - diff --git a/lib/diameter/test/diameter_ct.erl b/lib/diameter/test/diameter_ct.erl new file mode 100644 index 0000000000..f8ee3dc1d7 --- /dev/null +++ b/lib/diameter/test/diameter_ct.erl @@ -0,0 +1,55 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +-module(diameter_ct). + +%% +%% Module used to run suites from Makefile. +%% + +-export([run/1]). + +%% ct:run_test/1 is currently documented as returning a list of test +%% results ... but no. Instead it returns 'ok' regardless of whether +%% or not the suite in question has failed testcases. + +run([Suite]) -> + Start = info(), + ok = ct:run_test([{suite, Suite}, + {logdir, "./log"}, + {auto_compile, false}]), + info(Start , info()). + +info() -> + [{time, now()}, + {process_count, erlang:system_info(process_count)} + | erlang:memory()]. + +info(L0, L1) -> + [T, C | M] + = lists:zipwith(fun({T,N0}, {T,N1}) -> {T, N1, diff(T, N0, N1)} end, + L0, + L1), + Diff = [T, C, {memory, M}], + ct:pal("INFO: ~p~n", [Diff]). + +diff(time, T0, T1) -> + timer:now_diff(T1, T0); +diff(_, N0, N1) -> + N1 - N0. diff --git a/lib/diameter/test/diameter_ct.hrl b/lib/diameter/test/diameter_ct.hrl new file mode 100644 index 0000000000..b6bd2ca9da --- /dev/null +++ b/lib/diameter/test/diameter_ct.hrl @@ -0,0 +1,21 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +-define(APP, diameter). +-define(ERROR(T), erlang:error({?MODULE, ?LINE, T})). diff --git a/lib/diameter/test/diameter_dict_SUITE.erl b/lib/diameter/test/diameter_dict_SUITE.erl new file mode 100644 index 0000000000..87bb9727fe --- /dev/null +++ b/lib/diameter/test/diameter_dict_SUITE.erl @@ -0,0 +1,151 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests of the dict-like diameter_dict. +%% + +-module(diameter_dict_SUITE). + +-export([suite/0, + all/0, + groups/0, + init_per_group/2, + end_per_group/2]). + +%% testcases +-export([append/1, + fetch/1, + fetch_keys/1, + filter/1, + find/1, + fold/1, + is_key/1, + map/1, + merge/1, + update/1, + update_counter/1]). + +-include("diameter_ct.hrl"). + +-define(dict, diameter_dict). +-define(util, diameter_util). + +%% =========================================================================== + +suite() -> + [{timetrap, {seconds, 10}}]. + +all() -> + [{group, all} | tc()]. + +groups() -> + [{all, [parallel], tc()}]. + +tc() -> + [append, + fetch, + fetch_keys, + filter, + find, + fold, + is_key, + map, + merge, + update, + update_counter]. + +init_per_group(_, Config) -> + Config. + +end_per_group(_, _) -> + ok. + +%% =========================================================================== + +-define(KV100, [{N,[N]} || N <- lists:seq(1,100)]). + +append(_) -> + D = ?dict:append(k, v, ?dict:new()), + [{k,[v,v]}] = ?dict:to_list(?dict:append(k, v, D)). + +fetch(_) -> + D = ?dict:from_list(?KV100), + [50] = ?dict:fetch(50, D), + Ref = make_ref(), + Ref = try ?dict:fetch(Ref, D) catch _:_ -> Ref end. + +fetch_keys(_) -> + L = ?KV100, + D = ?dict:from_list(L), + L = [{N,[N]} || N <- lists:sort(?dict:fetch_keys(D))]. + +filter(_) -> + L = ?KV100, + F = fun(K,[_]) -> 0 == K rem 2 end, + D = ?dict:filter(F, ?dict:from_list(L)), + true = [T || {K,V} = T <- L, F(K,V)] == lists:sort(?dict:to_list(D)). + +find(_) -> + D = ?dict:from_list(?KV100), + {ok, [50]} = ?dict:find(50, D), + error = ?dict:find(make_ref(), D). + +fold(_) -> + L = ?KV100, + S = lists:sum([N || {N,_} <- L]), + S = ?dict:fold(fun(K,[_],A) -> K + A end, 0, ?dict:from_list(L)). + +is_key(_) -> + L = ?KV100, + D = ?dict:from_list(L), + true = lists:all(fun({N,_}) -> ?dict:is_key(N,D) end, L), + false = ?dict:is_key(make_ref(), D). + +map(_) -> + L = ?KV100, + F = fun(_,V) -> [N] = V, N*2 end, + D = ?dict:map(F, ?dict:from_list(L)), + M = [{K, F(K,V)} || {K,V} <- L], + M = lists:sort(?dict:to_list(D)). + +merge(_) -> + L = ?KV100, + F = fun(_,V1,V2) -> V1 ++ V2 end, + D = ?dict:merge(F, ?dict:from_list(L), ?dict:from_list(L)), + M = [{K, F(K,V,V)} || {K,V} <- L], + M = lists:sort(?dict:to_list(D)). + +update(_) -> + L = ?KV100, + F = fun([V]) -> 2*V end, + D = ?dict:update(50, F, ?dict:from_list(L)), + 100 = ?dict:fetch(50, D), + Ref = make_ref(), + Ref = try ?dict:update(Ref, F, D) catch _:_ -> Ref end, + [Ref] = ?dict:fetch(Ref, ?dict:update(Ref, + fun(_,_) -> ?ERROR(i_think_not) end, + [Ref], + D)). + +update_counter(_) -> + L = [{N,2*N} || {N,_} <- ?KV100], + D = ?dict:update_counter(50, 20, ?dict:from_list(L)), + 120 = ?dict:fetch(50,D), + 2 = ?dict:fetch(1,D). diff --git a/lib/diameter/test/diameter_enum.erl b/lib/diameter/test/diameter_enum.erl new file mode 100644 index 0000000000..dfb6d04e3c --- /dev/null +++ b/lib/diameter/test/diameter_enum.erl @@ -0,0 +1,406 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +-module(diameter_enum). + +%% +%% This module constructs finite enumerations. +%% +%% An enumeration is represented as a function on integers, 0 mapping +%% to the number of values enumerated and successive integers mapping +%% to enumerated values. The function will fail on anything but 0 and +%% positive integers less then or equal to the value of the function +%% at 0. +%% +%% The purpose of this is to provide a way of stepping through a large +%% number of values without explicitly constructing the list of all +%% possible values. For example, consider the following function that +%% given a list of lists constructs the list of all possible lists +%% constructed by choosing one element from each sublist. +%% +%% combine([H]) -> +%% [[X] || X <- H]; +%% combine([H|T]) -> +%% Ys = combine(T), +%% [[X|Y] || X <- H, Y <- Ys]. +%% +%% Eg. [[1,2],[3,4,5]] -> [[1,3],[1,4],[1,5],[2,3],[2,4],[2,5]] +%% +%% If L is a list of three 1000 element lists then combine(L) would +%% construct a list of length 10^9 which will likely exhaust available +%% memory. (Which is how this module came into being. A tail-recursive +%% implementation doesn't fare much better.) By contrast, +%% +%% F = enum:combine([enum:new(L) || L <- Lists]) +%% +%% only maps existing lists. It may still be undesirable to step +%% through a very large number of values but it's possible, and easy +%% to step through a selection of values as an alternative. +%% + +%% Functions that return enumerations. +-export([new/1, + combine/1, + reverse/1, + map/2, + append/1, + duplicate/2, + nthtail/2, + seq/2, + seq/3, + zip/1, + zip/2, + slice/3, + split/2]). + +%% Functions that operate on existing enumerations. +-export([foreach/2, + foldl/3, + foldr/3, + all/2, + any/2, + member/2, + last/1, + nth/2, + to_list/1]). + +%% ------------------------------------------------------------------------ +%% new/1 +%% +%% Turn a list/tuple of values into an enumeration that steps through +%% each element. Turn anything else into an enumeration of that single +%% value. +%% ------------------------------------------------------------------------ + +new(L) + when is_list(L) -> + new(list_to_tuple(L)); + +new(T) + when is_tuple(T) -> + enum(size(T), fun(N) -> element(N,T) end); + +new(T) -> + fun(0) -> 1; (1) -> T end. + +enum(Ord, F) -> + fun(0) -> Ord; (N) when 0 < N, N =< Ord -> F(N) end. + +%% ------------------------------------------------------------------------ +%% combine/1 +%% +%% Map a list/tuple of enumerations to the enumeration of all +%% lists/tuples constructed by choosing one value from each +%% enumeration in the list/tuple. +%% ------------------------------------------------------------------------ + +combine(T) + when is_tuple(T) -> + F = combine(tuple_to_list(T)), + enum(F(0), fun(N) -> list_to_tuple(F(N)) end); + +combine([]) -> + fun(0) -> 0 end; + +%% Given positive integers n_1,...,n_k, construct a bijection from +%% {0,...,\prod_{i=1}^k} n_i - 1} to {0,...,n_1} x ... x {0,...,n_k} +%% that maps N to (N_1,...,N_k) where: +%% +%% N_1 = (N div 1) rem n_1 +%% ... +%% N_k = (N div n_1*...*n_{k-1}) rem n_k +%% +%% That is: +%% +%% N_i = (N div \prod_{j=1}^{i-1} n_j) rem n_i +%% +%% This corresponds to looping through N_1, incrementing N_2 as N_1 +%% loops, and so on up through N_k. The inverse map is as follows. +%% +%% (N_1,...,N_k) -> N = N_1 + N_2*n_1 + ... + N_k*n_{k-1}*...*n_1 +%% +%% = \sum_{i=1}^k N_i*\prod_{j=i}^{i-1} n_j +%% +%% [Proof: Induction on k. For k=1 we have the identity map. If +%% g_k : (N_1,...,N_k) |-> N above is bijective then consider +%% the bijection +%% +%% G : (t,n) |--> t + n*K, K = n_k*...*n_1 +%% +%% from {0,...,K-1} x {0,...,n_{k+1}-1} onto {0,...,n_{k+1}*K - 1} +%% with inverse F : n |--> (n rem K, n div K). Since +%% +%% g_{k+1}(N_1,...,N_{k+1}) = g_k(N_1,...,N_K) + N_{k+1}*K +%% = G(g_k(N_1,...,N_K), N_{k+1}) +%% +%% and G, g_k and ((N-1,...,N_k),N_{k+1}) -> (N_1,...,N_{k+1}) +%% are all bijections, so is g_{k+1}.] + +combine([_|_] = L) -> + [Ord | Divs] = lists:foldl(fun(F,[D|_] = A) -> [F(0)*D | A] end, [1], L), + RL = lists:reverse(L), + enum(Ord, fun(N) -> combine(N, Ord, Divs, RL) end). + +%% Since we use 0 to return the number of elements enumerated, use +%% bijections from {1,...,N} rather than {0,...,N-1}. + +combine(N, Ord, Divs, L) + when 0 < N, N =< Ord -> + {Vs, []} = lists:foldl(fun(F, {A, [D|Ds]}) -> + {[F(1 + (((N-1) div D) rem F(0))) | A], Ds} + end, + {[], Divs}, + L), + Vs. + +%% ------------------------------------------------------------------------ +%% reverse/1 +%% +%% Construct the enumeration that reverses the order in which values +%% are traversed. +%% ------------------------------------------------------------------------ + +reverse(E) -> + Ord = E(0), + enum(Ord, fun(N) -> E(Ord + 1 - N) end). + +%% ------------------------------------------------------------------------ +%% map/2 +%% +%% Construct an enumeration that maps enumerated values. +%% ------------------------------------------------------------------------ + +map(Fun, E) -> + enum(E(0), fun(N) -> Fun(E(N)) end). + +%% ------------------------------------------------------------------------ +%% append/2 +%% +%% Construct an enumeration that successively steps through each of a +%% list of enumerations. +%% ------------------------------------------------------------------------ + +append(Es) -> + [Ord | Os] = lists:foldl(fun(E, [N|_] = A) -> [N+E(0)|A] end, [0], Es), + Rev = lists:reverse(Es), + enum(Ord, fun(N) -> append(N, Os, Rev) end). + +append(N, [Ord | _], [E | _]) + when N > Ord -> + E(N - Ord); +append(N, [_|Os], [_|Es]) -> + append(N, Os, Es). + +%% ------------------------------------------------------------------------ +%% duplicate/2 +%% +%% Construct an enumeration that traverses an enumeration multiple +%% times. Equivalent to append(lists:duplicate(N, E)). +%% ------------------------------------------------------------------------ + +duplicate(N, E) -> + Ord = E(0), + enum(N*Ord, fun(M) -> E(1 + ((M-1) rem Ord)) end). + +%% ------------------------------------------------------------------------ +%% nthtail/2 +%% +%% Construct an enumeration that omits values at the head of an +%% existing enumeration. +%% ------------------------------------------------------------------------ + +nthtail(N, E) + when 0 =< N -> + nthtail(E(0) - N, N, E). + +nthtail(Ord, N, E) + when 0 =< Ord -> + enum(Ord, fun(M) -> E(M+N) end). + +%% ------------------------------------------------------------------------ +%% seq/[23] +%% +%% Construct an enumeration that steps through a sequence of integers. +%% ------------------------------------------------------------------------ + +seq(From, To) -> + seq(From, To, 1). + +seq(From, To, Incr) + when From =< To -> + enum((To - From + Incr) div Incr, fun(N) -> From + (N-1)*Incr end). + +%% ------------------------------------------------------------------------ +%% zip/[12] +%% +%% Construct an enumeration whose nth value is the list of nth values +%% of a list of enumerations. +%% ------------------------------------------------------------------------ + +zip(Es) -> + zip(fun(T) -> T end, Es). + +zip(_, []) -> + []; +zip(Fun, Es) -> + enum(lists:min([E(0) || E <- Es]), fun(N) -> Fun([E(N) || E <- Es]) end). + +%% ------------------------------------------------------------------------ +%% slice/3 +%% +%% Construct an enumeration of a given length from a given starting point. +%% ------------------------------------------------------------------------ + +slice(N, Len, E) + when is_integer(N), N > 0, is_integer(Len), Len >= 0 -> + slice(N, Len, E(0) - (N - 1), E). + +slice(_, _, Tail, _) + when Tail < 1 -> + fun(0) -> 0 end; + +slice(N, Len, Tail, E) -> + enum(lists:min([Len, Tail]), fun(M) -> E(N-1+M) end). + +%% ------------------------------------------------------------------------ +%% split/2 +%% +%% Split an enumeration into a list of enumerations of the specified +%% length. The last enumeration of the list may have order less than +%% this length. +%% ------------------------------------------------------------------------ + +split(Len, E) + when is_integer(Len), Len > 0 -> + split(1, E(0), Len, E, []). + +split(N, Ord, _, _, Acc) + when N > Ord -> + lists:reverse(Acc); + +split(N, Ord, Len, E, Acc) -> + split(N+Len, Ord, Len, E, [slice(N, Len, E) | Acc]). + +%% ------------------------------------------------------------------------ +%% foreach/2 +%% +%% Apply a fun to each value of an enumeration. +%% ------------------------------------------------------------------------ + +foreach(Fun, E) -> + foldl(fun(N,ok) -> Fun(N), ok end, ok, E). + +%% ------------------------------------------------------------------------ +%% foldl/3 +%% foldr/3 +%% +%% Fold through values in an enumeration. +%% ------------------------------------------------------------------------ + +foldl(Fun, Acc, E) -> + foldl(E(0), 1, Fun, Acc, E). + +foldl(M, N, _, Acc, _) + when N == M+1 -> + Acc; +foldl(M, N, Fun, Acc, E) -> + foldl(M, N+1, Fun, Fun(E(N), Acc), E). + +foldr(Fun, Acc, E) -> + foldl(Fun, Acc, reverse(E)). + +%% ------------------------------------------------------------------------ +%% all/2 +%% +%% Do all values of an enumeration satisfy a predicate? +%% ------------------------------------------------------------------------ + +all(Pred, E) -> + all(E(0), 1, Pred, E). + +all(M, N, _, _) + when N == M+1 -> + true; +all(M, N, Pred, E) -> + Pred(E(N)) andalso all(M, N+1, Pred, E). + +%% Note that andalso/orelse are tail-recusive as of R13A. + +%% ------------------------------------------------------------------------ +%% any/2 +%% +%% Does any value of an enumeration satisfy a predicate? +%% ------------------------------------------------------------------------ + +any(Pred, E) -> + any(E(0), 1, Pred, E). + +any(M, N, _, _) + when N == M+1 -> + false; +any(M, N, Pred, E) -> + Pred(E(N)) orelse any(M, N+1, Pred, E). + +%% ------------------------------------------------------------------------ +%% member/2 +%% +%% Does a value match any in an enumeration? +%% ------------------------------------------------------------------------ + +member(X, E) -> + member(E(0), 1, X, E). + +member(M, N, _, _) + when N == M+1 -> + false; +member(M, N, X, E) -> + match(E(N), X) orelse member(M, N+1, X, E). + +match(X, X) -> + true; +match(_, _) -> + false. + +%% ------------------------------------------------------------------------ +%% last/1 +%% +%% Return the last value of an enumeration. +%% ------------------------------------------------------------------------ + +last(E) -> + E(E(0)). + +%% ------------------------------------------------------------------------ +%% nth/2 +%% +%% Return a selected value of an enumeration. +%% ------------------------------------------------------------------------ + +nth(N, E) -> + E(N). + +%% ------------------------------------------------------------------------ +%% to_list/1 +%% +%% Turn an enumeration into a list. Not good if the very many values +%% are enumerated. +%% ------------------------------------------------------------------------ + +to_list(E) -> + foldr(fun(X,A) -> [X|A] end, [], E). diff --git a/lib/diameter/test/diameter_etcp_test.beam b/lib/diameter/test/diameter_etcp_test.beam Binary files differdeleted file mode 100644 index efaaec69d5..0000000000 --- a/lib/diameter/test/diameter_etcp_test.beam +++ /dev/null diff --git a/lib/diameter/test/diameter_peer_test.erl b/lib/diameter/test/diameter_peer_test.erl deleted file mode 100644 index 27e75e26ef..0000000000 --- a/lib/diameter/test/diameter_peer_test.erl +++ /dev/null @@ -1,104 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the peer component of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_peer_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2 - - %% foo/1 - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - []. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - Config. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case example -%% - -%% foo(suite) -> -%% []; -%% foo(doc) -> -%% []; -%% foo(Config) when is_list(Config) -> -%% ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - diff --git a/lib/diameter/test/diameter_reg_SUITE.erl b/lib/diameter/test/diameter_reg_SUITE.erl new file mode 100644 index 0000000000..ade824c9dd --- /dev/null +++ b/lib/diameter/test/diameter_reg_SUITE.erl @@ -0,0 +1,119 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests of the server implemented by diameter_reg.erl. +%% + +-module(diameter_reg_SUITE). + +-export([suite/0, + all/0, + groups/0, + init_per_group/2, + end_per_group/2, + init_per_suite/1, + end_per_suite/1]). + +%% testcases +-export([add/1, + add_new/1, + del/1, + repl/1, + terms/1, + pids/1]). + +-define(reg, diameter_reg). +-define(util, diameter_util). + +%% =========================================================================== + +suite() -> + [{timetrap, {seconds, 10}}]. + +all() -> + [{group, all} | tc()]. + +groups() -> + [{all, [parallel], tc()}]. + +tc() -> + [add, + add_new, + del, + repl, + terms, + pids]. + +init_per_group(_, Config) -> + Config. + +end_per_group(_, _) -> + ok. + +init_per_suite(Config) -> + ok = diameter:start(), + Config. + +end_per_suite(_Config) -> + ok = diameter:stop(). + +%% =========================================================================== + +add(_) -> + Ref = make_ref(), + true = ?reg:add(Ref), + true = ?reg:add(Ref), + [{Ref, Pid}] = ?reg:match(Ref), + Pid = self(). + +add_new(_) -> + Ref = make_ref(), + true = ?reg:add_new(Ref), + false = ?reg:add_new(Ref). + +del(_) -> + Ref = make_ref(), + true = ?reg:add_new(Ref), + true = ?reg:add_new({Ref}), + true = ?reg:del({Ref}), + [{Ref, Pid}] = ?reg:match(Ref), + Pid = self(). + +repl(_) -> + Ref = make_ref(), + true = ?reg:add_new({Ref}), + true = ?reg:repl({Ref}, Ref), + false = ?reg:add_new(Ref), + false = ?reg:repl({Ref}, Ref), + [{Ref, Pid}] = ?reg:match(Ref), + Pid = self(). + +terms(_) -> + Ref = make_ref(), + true = ?reg:add_new(Ref), + [[Pid]] = [L || {T,L} <- ?reg:terms(), T == Ref], + Pid = self(). + +pids(_) -> + Ref = make_ref(), + true = ?reg:add_new(Ref), + %% Don't match [[Ref]] since this will only necessarily be the + %% case when the test is run in its own process. + [_|_] = [L || {P,L} <- ?reg:pids(), P == self()]. diff --git a/lib/diameter/test/diameter_reg_test.erl b/lib/diameter/test/diameter_reg_test.erl deleted file mode 100644 index a2638d6712..0000000000 --- a/lib/diameter/test/diameter_reg_test.erl +++ /dev/null @@ -1,104 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011_2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the reg component of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_reg_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2 - - %% foo/1 - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - []. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - Config. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case example -%% - -%% foo(suite) -> -%% []; -%% foo(doc) -> -%% []; -%% foo(Config) when is_list(Config) -> -%% ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - diff --git a/lib/diameter/test/diameter_relay_SUITE.erl b/lib/diameter/test/diameter_relay_SUITE.erl new file mode 100644 index 0000000000..6b2fda7855 --- /dev/null +++ b/lib/diameter/test/diameter_relay_SUITE.erl @@ -0,0 +1,422 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests of traffic between seven Diameter nodes connected as follows. +%% +%% --- SERVER1.REALM2 +%% / +%% ---- RELAY.REALM2 ---- SERVER2.REALM2 +%% / | +%% CLIENT.REALM1 | +%% \ | +%% ---- RELAY.REALM3 ---- SERVER1.REALM3 +%% \ +%% --- SERVER2.REALM3 +%% + +-module(diameter_relay_SUITE). + +-export([suite/0, + all/0, + groups/0, + init_per_group/2, + end_per_group/2, + init_per_suite/1, + end_per_suite/1]). + +%% testcases +-export([send1/1, + send2/1, + send3/1, + send4/1, + send_loop/1, + send_timeout_1/1, + send_timeout_2/1, + remove_transports/1, + stop_services/1]). + +%% diameter callbacks +-export([peer_up/3, + peer_down/3, + pick_peer/4, + prepare_request/3, + prepare_retransmit/3, + handle_answer/4, + handle_error/4, + handle_request/3]). + +-ifdef(DIAMETER_CT). +-include("diameter_gen_base_rfc3588.hrl"). +-else. +-include_lib("diameter/include/diameter_gen_base_rfc3588.hrl"). +-endif. + +-include_lib("diameter/include/diameter.hrl"). +-include("diameter_ct.hrl"). + +%% =========================================================================== + +-define(ADDR, {127,0,0,1}). + +-define(CLIENT, "CLIENT.REALM1"). +-define(RELAY1, "RELAY.REALM2"). +-define(SERVER1, "SERVER1.REALM2"). +-define(SERVER2, "SERVER2.REALM2"). +-define(RELAY2, "RELAY.REALM3"). +-define(SERVER3, "SERVER1.REALM3"). +-define(SERVER4, "SERVER2.REALM3"). + +-define(DICT_COMMON, ?DIAMETER_DICT_COMMON). +-define(DICT_RELAY, ?DIAMETER_DICT_RELAY). + +-define(APP_ALIAS, the_app). +-define(APP_ID, ?DICT_COMMON:id()). + +%% Config for diameter:start_service/2. +-define(SERVICE(Host, Dict), + [{'Origin-Host', Host}, + {'Origin-Realm', realm(Host)}, + {'Host-IP-Address', [?ADDR]}, + {'Vendor-Id', 12345}, + {'Product-Name', "OTP/diameter"}, + {'Acct-Application-Id', [Dict:id()]}, + {application, [{alias, ?APP_ALIAS}, + {dictionary, Dict}, + {module, ?MODULE}, + {answer_errors, callback}]}]). + +%% Config for diameter:add_transport/2. In the listening case, listen +%% on a free port that we then lookup using the implementation detail +%% that diameter_tcp registers the port with diameter_reg. +-define(CONNECT(PortNr), + {connect, [{transport_module, diameter_tcp}, + {transport_config, [{raddr, ?ADDR}, + {rport, PortNr}, + {ip, ?ADDR}, + {port, 0}]}]}). +-define(LISTEN, + {listen, [{transport_module, diameter_tcp}, + {transport_config, [{ip, ?ADDR}, {port, 0}]}]}). + +-define(SUCCESS, 2001). +-define(LOOP_DETECTED, 3005). +-define(UNABLE_TO_DELIVER, 3002). + +-define(LOGOUT, ?'DIAMETER_BASE_TERMINATION-CAUSE_DIAMETER_LOGOUT'). +-define(AUTHORIZE_ONLY, ?'DIAMETER_BASE_RE-AUTH-REQUEST-TYPE_AUTHORIZE_ONLY'). + +-define(A, list_to_atom). +-define(L, atom_to_list). + +%% =========================================================================== + +suite() -> + [{timetrap, {seconds, 10}}]. + +all() -> + [{group, N} || {N, _, _} <- groups()] + ++ [remove_transports, stop_services]. + +groups() -> + Ts = tc(), + [{all, [], Ts}, + {p, [parallel], Ts}]. + +init_per_group(_, Config) -> + Config. + +end_per_group(_, _) -> + ok. + +init_per_suite(Config) -> + ok = diameter:start(), + + dbg:tracer(port, dbg:trace_port(file, "relay.dbg")), + dbg:p(all,c), + dbg:tpl(diameter_service, x), + dbg:tp(?MODULE, x), + + + [S1,S2,S3,S4] = S = [server(N, ?DICT_COMMON) || N <- [?SERVER1, + ?SERVER2, + ?SERVER3, + ?SERVER4]], + [R1,R2] = R = [server(N, ?DICT_RELAY) || N <- [?RELAY1, ?RELAY2]], + + ok = diameter:start_service(?CLIENT, ?SERVICE(?CLIENT, ?DICT_COMMON)), + + true = diameter:subscribe(?RELAY1), + true = diameter:subscribe(?RELAY2), + true = diameter:subscribe(?CLIENT), + + [C1,C2] = connect(?RELAY1, [S1,S2]), + [C3,C4] = connect(?RELAY2, [S3,S4]), + [C5,C6] = connect(?CLIENT, [R1,R2]), + + C7 = connect(?RELAY1, R2), + + [{transports, {S, R, [C1,C2,C3,C4,C5,C6,C7]}} | Config]. + +end_per_suite(_Config) -> + ok = diameter:stop(). + +%% Testcases to run when services are started and connections +%% established. +tc() -> + [send1, + send2, + send3, + send4, + send_loop, + send_timeout_1, + send_timeout_2]. + +server(Host, Dict) -> + ok = diameter:start_service(Host, ?SERVICE(Host, Dict)), + {ok, LRef} = diameter:add_transport(Host, ?LISTEN), + {LRef, portnr(LRef)}. + +connect(Host, {_LRef, PortNr}) -> + {ok, Ref} = diameter:add_transport(Host, ?CONNECT(PortNr)), + ok = receive + #diameter_event{service = Host, + info = {up, Ref, _, _, #diameter_packet{}}} -> + ok + after 2000 -> + false + end, + Ref; +connect(Host, Ports) -> + [connect(Host, P) || P <- Ports]. + +portnr(LRef) -> + portnr(LRef, 20). + +portnr(LRef, N) + when 0 < N -> + case diameter_reg:match({diameter_tcp, listener, {LRef, '_'}}) of + [{T, _Pid}] -> + {_, _, {LRef, {_Addr, LSock}}} = T, + {ok, PortNr} = inet:port(LSock), + PortNr; + [] -> + receive after 50 -> ok end, + portnr(LRef, N-1) + end. + +realm(Host) -> + tl(lists:dropwhile(fun(C) -> C /= $. end, Host)). + +%% =========================================================================== + +%% Send an STR intended for a specific server and expect success. +send1(_Config) -> + call(?SERVER1). +send2(_Config) -> + call(?SERVER2). +send3(_Config) -> + call(?SERVER3). +send4(_Config) -> + call(?SERVER4). + +%% Send an ASR that loops between the relays and expect the loop to +%% be detected. +send_loop(_Config) -> + Req = ['ASR', {'Destination-Realm', realm(?SERVER1)}, + {'Destination-Host', ?SERVER1}, + {'Auth-Application-Id', ?APP_ID}], + #'diameter_base_answer-message'{'Result-Code' = ?LOOP_DETECTED} + = call(Req, [{filter, realm}]). + +%% Send a RAR that is incorrectly routed and then discarded and expect +%% different results depending on whether or not we or the relay +%% timeout first. +send_timeout_1(_Config) -> + #'diameter_base_answer-message'{'Result-Code' = ?UNABLE_TO_DELIVER} + = send_timeout(7000). +send_timeout_2(_Config) -> + {error, timeout} = send_timeout(3000). + +send_timeout(Tmo) -> + Req = ['RAR', {'Destination-Realm', realm(?SERVER1)}, + {'Destination-Host', ?SERVER1}, + {'Auth-Application-Id', ?APP_ID}, + {'Re-Auth-Request-Type', ?AUTHORIZE_ONLY}], + call(Req, [{filter, realm}, {timeout, Tmo}]). + +%% Remove the client transports and expect the corresponding server +%% transport to go down. +remove_transports(Config) -> + {[S1,S2,S3,S4], [R1,R2], [C1,C2,C3,C4,C5,C6,C7]} + = proplists:get_value(transports, Config), + + true = diameter:subscribe(?SERVER1), + true = diameter:subscribe(?SERVER2), + true = diameter:subscribe(?SERVER3), + true = diameter:subscribe(?SERVER4), + true = diameter:subscribe(?RELAY1), + true = diameter:subscribe(?RELAY2), + + disconnect(S1, ?RELAY1, C1), + disconnect(S2, ?RELAY1, C2), + disconnect(S3, ?RELAY2, C3), + disconnect(S4, ?RELAY2, C4), + disconnect(R1, ?CLIENT, C5), + disconnect(R2, ?CLIENT, C6), + disconnect(R2, ?RELAY1, C7). + +disconnect({LRef, _PortNr}, Client, CRef) -> + ok = diameter:remove_transport(Client, CRef), + ok = receive #diameter_event{info = {down, LRef, _, _}} -> ok + after 2000 -> false + end. + +stop_services(_Config) -> + S = [?CLIENT, ?RELAY1, ?RELAY2, ?SERVER1, ?SERVER2, ?SERVER3, ?SERVER4], + Ok = [ok || _ <- S], + Ok = [diameter:stop_service(H) || H <- S]. + +%% =========================================================================== + +call(Server) -> + Realm = realm(Server), + Req = ['STR', {'Destination-Realm', Realm}, + {'Destination-Host', [Server]}, + {'Termination-Cause', ?LOGOUT}, + {'Auth-Application-Id', ?APP_ID}], + #diameter_base_STA{'Result-Code' = ?SUCCESS, + 'Origin-Host' = Server, + 'Origin-Realm' = Realm} + = call(Req, [{filter, realm}]). + +call(Req, Opts) -> + diameter:call(?CLIENT, ?APP_ALIAS, Req, Opts). + +set([H|T], Vs) -> + [H | Vs ++ T]. + +%% =========================================================================== +%% diameter callbacks + +%% peer_up/3 + +peer_up(_SvcName, _Peer, State) -> + State. + +%% peer_down/3 + +peer_down(_SvcName, _Peer, State) -> + State. + +%% pick_peer/4 + +pick_peer([Peer | _], _, Svc, _State) + when Svc == ?RELAY1; + Svc == ?RELAY2; + Svc == ?CLIENT-> + {ok, Peer}. + +%% prepare_request/3 + +prepare_request(Pkt, Svc, _Peer) + when Svc == ?RELAY1; + Svc == ?RELAY2 -> + {send, Pkt}; + +prepare_request(Pkt, ?CLIENT, {_Ref, Caps}) -> + {send, prepare(Pkt, Caps)}. + +prepare(#diameter_packet{msg = Req}, Caps) -> + #diameter_caps{origin_host = {OH, _}, + origin_realm = {OR, _}} + = Caps, + set(Req, [{'Session-Id', diameter:session_id(OH)}, + {'Origin-Host', OH}, + {'Origin-Realm', OR}]). + +%% prepare_retransmit/3 + +prepare_retransmit(_Pkt, false, _Peer) -> + discard. + +%% handle_answer/4 + +%% A relay must return Pkt. +handle_answer(Pkt, _Req, Svc, _Peer) + when Svc == ?RELAY1; + Svc == ?RELAY2 -> + Pkt; + +handle_answer(Pkt, _Req, ?CLIENT, _Peer) -> + #diameter_packet{msg = Rec, errors = []} = Pkt, + Rec. + +%% handle_error/4 + +handle_error(Reason, _Req, _Svc, _Peer) -> + {error, Reason}. + +%% handle_request/3 + +handle_request(Pkt, OH, {_Ref, #diameter_caps{origin_host = {OH,_}} = Caps}) + when OH /= ?CLIENT -> + request(Pkt, Caps). + +%% RELAY1 routes any ASR or RAR to RELAY2 ... +request(#diameter_packet{header = #diameter_header{cmd_code = C}}, + #diameter_caps{origin_host = {?RELAY1, _}}) + when C == 274; %% ASR + C == 258 -> %% RAR + {relay, [{filter, {realm, realm(?RELAY2)}}]}; + +%% ... which in turn routes it back. Expect diameter to either answer +%% either with DIAMETER_LOOP_DETECTED/DIAMETER_UNABLE_TO_COMPLY. +request(#diameter_packet{header = #diameter_header{cmd_code = 274}}, + #diameter_caps{origin_host = {?RELAY2, _}}) -> + {relay, [{filter, {host, ?RELAY1}}]}; +request(#diameter_packet{header = #diameter_header{cmd_code = 258}}, + #diameter_caps{origin_host = {?RELAY2, _}}) -> + discard; + +%% Other request to a relay: send on to one of the servers in the +%% same realm. +request(_Pkt, #diameter_caps{origin_host = {OH, _}}) + when OH == ?RELAY1; + OH == ?RELAY2 -> + {relay, [{filter, {all, [host, realm]}}]}; + +%% Request received by a server: answer. +request(#diameter_packet{msg = #diameter_base_STR{'Session-Id' = SId, + 'Origin-Host' = Host, + 'Origin-Realm' = Realm, + 'Route-Record' = Route}}, + #diameter_caps{origin_host = {OH, _}, + origin_realm = {OR, _}}) -> + %% The request should have the Origin-Host/Realm of the original + %% sender. + R = realm(?CLIENT), + {?CLIENT, R} = {Host, Realm}, + %% A relay appends the identity of the peer that a request was + %% received from to the Route-Record avp. + [?CLIENT] = Route, + {reply, #diameter_base_STA{'Result-Code' = ?SUCCESS, + 'Session-Id' = SId, + 'Origin-Host' = OH, + 'Origin-Realm' = OR}}. diff --git a/lib/diameter/test/diameter_session_test.erl b/lib/diameter/test/diameter_session_test.erl deleted file mode 100644 index a32647d83d..0000000000 --- a/lib/diameter/test/diameter_session_test.erl +++ /dev/null @@ -1,104 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the session component of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_session_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2 - - %% foo/1 - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - []. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - Config. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case example -%% - -%% foo(suite) -> -%% []; -%% foo(doc) -> -%% []; -%% foo(Config) when is_list(Config) -> -%% ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - diff --git a/lib/diameter/test/diameter_stats_SUITE.erl b/lib/diameter/test/diameter_stats_SUITE.erl new file mode 100644 index 0000000000..e50a0050a6 --- /dev/null +++ b/lib/diameter/test/diameter_stats_SUITE.erl @@ -0,0 +1,92 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests of the server implemented by diameter_stats.erl. +%% + +-module(diameter_stats_SUITE). + +-export([suite/0, + all/0, + groups/0, + init_per_group/2, + end_per_group/2, + init_per_suite/1, + end_per_suite/1]). + +%% testcases +-export([an/1, + twa/1]). + +-define(stat, diameter_stats). +-define(util, diameter_util). + +%% =========================================================================== + +suite() -> + [{timetrap, {seconds, 10}}]. + +all() -> + [{group, all} | tc()]. + +groups() -> + [{all, [parallel], tc()}]. + +tc() -> + [an, + twa]. + +init_per_group(_, Config) -> + Config. + +end_per_group(_, _) -> + ok. + +init_per_suite(Config) -> + ok = diameter:start(), + Config. + +end_per_suite(_Config) -> + ok = diameter:stop(). + +%% =========================================================================== + +an(_) -> + Ref = {'_', make_ref()}, + true = ?stat:reg(Ref), + true = ?stat:reg(Ref), %% duplicate + ok = ?stat:incr(x), + ok = ?stat:incr(x, Ref), + ok = ?stat:incr(y, 2), + ok = ?stat:incr(y, Ref), + %% Flushing a pid flushes even stats on the registered reference. + [{x,2},{y,3}] = lists:sort(?stat:flush()), + [] = ?stat:flush(Ref), + [] = ?stat:flush(). + +twa(_) -> + Ref = make_ref(), + ok = ?stat:incr(x, 8), + ok = ?stat:incr(x, Ref, 7), + %% Flushing a reference doesn't affect registered pids. + [{x,7}] = ?stat:flush(Ref), + [] = ?stat:flush(Ref), + [{x,8}] = ?stat:flush(), + [] = ?stat:flush(). diff --git a/lib/diameter/test/diameter_stats_test.erl b/lib/diameter/test/diameter_stats_test.erl deleted file mode 100644 index 8b666edf50..0000000000 --- a/lib/diameter/test/diameter_stats_test.erl +++ /dev/null @@ -1,104 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the stats component of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_stats_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2 - - %% foo/1 - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - []. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - Config. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case example -%% - -%% foo(suite) -> -%% []; -%% foo(doc) -> -%% []; -%% foo(Config) when is_list(Config) -> -%% ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - diff --git a/lib/diameter/test/diameter_sync_SUITE.erl b/lib/diameter/test/diameter_sync_SUITE.erl new file mode 100644 index 0000000000..84f77b6066 --- /dev/null +++ b/lib/diameter/test/diameter_sync_SUITE.erl @@ -0,0 +1,139 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests of the server implemented by diameter_sync.erl. +%% + +-module(diameter_sync_SUITE). + +-export([suite/0, + all/0, + groups/0, + init_per_group/2, + end_per_group/2, + init_per_suite/1, + end_per_suite/1]). + +%% testcases +-export([call/1, + cast/1, + timeout/1, + flush/1]). + +-define(sync, diameter_sync). +-define(util, diameter_util). + +-define(TIMEOUT, infinity). + +%% =========================================================================== + +suite() -> + [{timetrap, {seconds, 10}}]. + +all() -> + [{group, all} | tc()]. + +groups() -> + [{all, [parallel], tc()}]. + +tc() -> + [call, + cast, + timeout, + flush]. + +init_per_group(_, Config) -> + Config. + +end_per_group(_, _) -> + ok. + +init_per_suite(Config) -> + ok = diameter:start(), + Config. + +end_per_suite(_Config) -> + ok = diameter:stop(). + +%% =========================================================================== + +call(_) -> + Ref = make_ref(), + Q = {q, Ref}, + F = fun() -> Ref end, + Ref = ?sync:call(Q, F, infinity, ?TIMEOUT), + Ref = ?sync:call(Q, F, 0, infinity), + Ref = call(Q, F), + Ref = call(Q, {fun(_) -> Ref end, x}), + timeout = call(Q, fun() -> exit(unexpected) end), + {_,_,_} = call(Q, {erlang, now, []}), + {_,_,_} = call(Q, [fun erlang:now/0]). + +cast(_) -> + Ref = make_ref(), + Q = {q, Ref}, + false = ?sync:carp(Q), + [] = ?sync:pids(Q), + %% Queue a request that blocks until we send it Ref and another + %% that exits with Ref. + ok = cast(Q, fun() -> receive Ref -> ok end end), + ok = cast(Q, fun() -> exit(Ref) end), + [_,Pid] = ?sync:pids(Q), + %% Ensure some expected truths ... + 2 = ?sync:pending(Q), + true = 2 =< ?sync:pending(), + true = lists:member(Q, ?sync:queues()), + %% ... and that the max number of requests is respected. + rejected = ?sync:call(Q, {erlang, now, []}, 1, ?TIMEOUT), + rejected = ?sync:cast(Q, {erlang, now, []}, 1, ?TIMEOUT), + %% Monitor on the identifiable request and see that exits when we + %% let the blocking request finish. + MRef = erlang:monitor(process, Pid), + {value, P} = ?sync:carp(Q), + P ! Ref, + Ref = receive + {'DOWN', MRef, process, _, Reason} -> + Reason + after ?TIMEOUT -> + false + end. + +timeout(_) -> + Q = make_ref(), + ok = ?sync:cast(Q, {timer, sleep, [2000]}, infinity, 2000), + timeout = ?sync:call(Q, fun() -> ok end, infinity, 1000). + +flush(_) -> + Q = make_ref(), + F = {timer, sleep, [2000]}, + ok = cast(Q, F), + ok = cast(Q, F), + 1 = ?sync:flush(Q). + +%% =========================================================================== + +call(Q, Req) -> + sync(call, Q, Req). + +cast(Q, Req) -> + sync(cast, Q, Req). + +sync(F, Q, Req) -> + ?sync:F(Q, Req, infinity, infinity). diff --git a/lib/diameter/test/diameter_sync_test.erl b/lib/diameter/test/diameter_sync_test.erl deleted file mode 100644 index 618fa5021b..0000000000 --- a/lib/diameter/test/diameter_sync_test.erl +++ /dev/null @@ -1,104 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the sync component of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_sync_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2 - - %% foo/1 - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - []. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - Config. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case example -%% - -%% foo(suite) -> -%% []; -%% foo(doc) -> -%% []; -%% foo(Config) when is_list(Config) -> -%% ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - diff --git a/lib/diameter/test/diameter_tcp_test.erl b/lib/diameter/test/diameter_tcp_test.erl deleted file mode 100644 index b002a3d289..0000000000 --- a/lib/diameter/test/diameter_tcp_test.erl +++ /dev/null @@ -1,482 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the tcp transport component of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_tcp_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/0, - groups/0, - init_per_suite/1, end_per_suite/1, - suite_init/1, suite_fin/1, - init_per_group/2, end_per_group/2, - - start_and_stop_transport_plain/1, - start_and_listen/1, - simple_connect/1, - simple_send_and_recv/1 - - ]). - --export([t/0, t/1]). - -%% diameter_peer (internal) callback API --export([up/1, up/3, recv/2]). - --include("diameter_test_lib.hrl"). --include_lib("diameter/include/diameter.hrl"). -%% -include_lib("diameter/src/tcp/diameter_tcp.hrl"). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - [ - {group, start}, - {group, simple} - ]. - -groups() -> - [ - {start, [], [start_and_stop_transport_plain, start_and_listen]}, - {simple, [], [simple_connect, simple_send_and_recv]} - ]. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(X) -> init_per_suite(X). - -init_per_suite(suite) -> []; -init_per_suite(doc) -> []; -init_per_suite(Config) when is_list(Config) -> - Config. - - -suite_fin(X) -> end_per_suite(X). - -end_per_suite(suite) -> []; -end_per_suite(doc) -> []; -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case(s) -%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Plain start and stop of TCP transport -%% - -start_and_stop_transport_plain(suite) -> - []; -start_and_stop_transport_plain(doc) -> - []; -start_and_stop_transport_plain(Config) when is_list(Config) -> - - ?SKIP(not_yet_implemented), - - %% This has been changed *a lot* since it was written... - - process_flag(trap_exit, true), - Transport = ensure_transport_started(), - TcpTransport = ensure_tcp_transport_started(), - ensure_tcp_transport_stopped(TcpTransport), - ensure_transport_stopped(Transport), - i("done"), - ok. - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Start TCP transport and then create a listen socket -%% - -start_and_listen(suite) -> - []; -start_and_listen(doc) -> - []; -start_and_listen(Config) when is_list(Config) -> - - ?SKIP(not_yet_implemented), - - %% This has been changed *a lot* since it was written... - - process_flag(trap_exit, true), - Transport = ensure_transport_started(), - TcpTransport = ensure_tcp_transport_started(), - - case listen([{port, 0}]) of - {ok, Acceptor} when is_pid(Acceptor) -> - Ref = erlang:monitor(process, Acceptor), - [{Acceptor, Info}] = diameter_tcp:which_listeners(), - case lists:keysearch(socket, 1, Info) of - {value, {_, Listen}} -> - i("Listen socket: ~p" - "~n Opts: ~p" - "~n Stats: ~p" - "~n Name: ~p", - [Listen, - ok(inet:getopts(Listen, [keepalive, delay_send])), - ok(inet:getstat(Listen)), - ok(inet:sockname(Listen)) - ]), - ok; - _ -> - ?FAIL({bad_listener_info, Acceptor, Info}) - end, - Crash = simulate_crash, - exit(Acceptor, Crash), - receive - {'DOWN', Ref, process, Acceptor, Crash} -> - ?SLEEP(1000), - case diameter_tcp:which_listeners() of - [{NewAcceptor, _NewInfo}] -> - diameter_tcp_accept:stop(NewAcceptor), - ?SLEEP(1000), - case diameter_tcp:which_listeners() of - [] -> - ok; - UnexpectedListeners -> - ?FAIL({unexpected_listeners, empty, UnexpectedListeners}) - end; - UnexpectedListeners -> - ?FAIL({unexpected_listeners, non_empty, UnexpectedListeners}) - end - after 5000 -> - ?FAIL({failed_killing, Acceptor}) - end; - Error -> - ?FAIL({failed_creating_acceptor, Error}) - end, - ensure_tcp_transport_stopped(TcpTransport), - ensure_transport_stopped(Transport), - i("done"), - ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% TCP transport connecting -%% - -simple_connect(suite) -> - []; -simple_connect(doc) -> - []; -simple_connect(Config) when is_list(Config) -> - - ?SKIP(not_yet_implemented), - - %% This has been changed *a lot* since it was written... - - process_flag(trap_exit, true), - Transport = ensure_transport_started(), - TcpTransport = ensure_tcp_transport_started(), - {_Acceptor, Port} = ensure_tcp_listener(), - - {ok, Hostname} = inet:gethostname(), - - i("try connect"), - Opts = [{host, Hostname}, {port, Port}, {module, ?MODULE}], - Conn = case connect(Opts) of - {ok, C} -> - C; - Error -> - ?FAIL({failed_connecting, Error}) - end, - i("connected: ~p", [Conn]), - - %% Up for connect - receive - {diameter, {up, Host, Port}} -> - i("Received expected connect up (~p:~p)", [Host, Port]), - ok - after 5000 -> - ?FAIL(connect_up_confirmation_timeout) - end, - - %% Up for accept - receive - {diameter, {up, _ConnPid}} -> - i("Received expected accept up"), - ok - after 5000 -> - ?FAIL(acceptor_up_confirmation_timeout) - end, - - i("try disconnect"), - diameter_tcp:disconnect(Conn), - ensure_tcp_transport_stopped(TcpTransport), - ensure_transport_stopped(Transport), - i("done"), - ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Plain start and stop of TCP transport -%% - -simple_send_and_recv(suite) -> - []; -simple_send_and_recv(doc) -> - []; -simple_send_and_recv(Config) when is_list(Config) -> - - ?SKIP(not_yet_implemented), - - %% This has been changed *a lot* since it was written... - - process_flag(trap_exit, true), - %% -------------------------------------------------- - %% Start the TCP transport sub-system - %% - - Transport = ensure_transport_started(), - TcpTransport = ensure_tcp_transport_started(), - - {_Acceptor, Port} = ensure_tcp_listener(), - - {ok, Hostname} = inet:gethostname(), - - i("try connect"), - Opts = [{host, Hostname}, {port, Port}, {module, ?MODULE}], - Conn = case connect(Opts) of - {ok, C1} -> - C1; - Error -> - ?FAIL({failed_connecting, Error}) - end, - i("connected: ~p", [Conn]), - - %% Up for connect - receive - {diameter, {up, Host, Port}} -> - i("Received expected connect up (~p:~p)", [Host, Port]), - ok - after 5000 -> - ?FAIL(connect_up_confirmation_timeout) - end, - - %% Up for accept - APid = - receive - {diameter, {up, C2}} -> - i("Received expected accept up"), - C2 - after 5000 -> - ?FAIL(acceptor_up_confirmation_timeout) - end, - - %% -------------------------------------------------- - %% Start some stuff needed for the codec to run - %% - - i("start persistent table"), - {ok, _Pers} = diameter_persistent_table:start_link(), - - i("start session"), - {ok, _Session} = diameter_session:start_link(), - - i("try decode a (DWR) message"), - Base = diameter_gen_base_rfc3588, - DWR = ['DWR', - {'Origin-Host', Hostname}, - {'Origin-Realm', "whatever-realm"}, - {'Origin-State-Id', [10]}], - - #diameter_packet{msg = Msg} = diameter_codec:encode(Base, DWR), - - - %% -------------------------------------------------- - %% Now try to send the message - %% - %% This is not the codec-test suite, so we dont really care what we - %% send, as long as it encoded/decodes correctly in the transport - %% - - i("try send from connect side"), - ok = diameter_tcp:send_message(Conn, Msg), - - %% Wait for data on Accept side - APkt = - receive - {diameter, {recv, A}} -> - i("[accept] Received expected data message: ~p", [A]), - A - after 5000 -> - ?FAIL(acceptor_up_confirmation_timeout) - end, - - %% Send the same message back, just to have something to send... - i("try send (\"reply\") from accept side"), - ok = diameter_tcp:send_message(APid, APkt), - - %% Wait for data on Connect side - receive - {diameter, {recv, B}} -> - i("[connect] Received expected data message: ~p", [B]), - ok - after 5000 -> - ?FAIL(acceptor_up_confirmation_timeout) - end, - - i("we are done - now close shop"), - diameter_session:stop(), - diameter_persistent_table:stop(), - - ensure_tcp_transport_stopped(TcpTransport), - ensure_transport_stopped(Transport), - i("done"), - ok. - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -ensure_transport_started() -> -%% i("start diameter transport (top) supervisor"), - case diameter_transport_sup:start_link() of - {ok, TransportSup} -> - TransportSup; - Error -> - ?FAIL({failed_starting_transport_sup, Error}) - end. - -ensure_transport_stopped(Pid) when is_pid(Pid) -> -%% i("stop diameter transport (top) supervisor"), - Stop = fun(P) -> exit(P, kill) end, - ensure_stopped(Pid, Stop, failed_stopping_transport_sup). - -ensure_tcp_transport_started() -> -%% i("start diameter TCP transport"), - case diameter_tcp:start_transport() of - {ok, TcpTransport} when is_pid(TcpTransport) -> - TcpTransport; - Error -> - ?FAIL({failed_starting_transport, Error}) - end. - -ensure_tcp_transport_stopped(Pid) when is_pid(Pid) -> -%% i("stop diameter TCP transport supervisor"), - Stop = fun(P) -> diameter_tcp:stop_transport(P) end, - ensure_stopped(Pid, Stop, failed_stopping_tcp_transport). - - -ensure_tcp_listener() -> -%% i("create diameter TCP transport listen socket"), - case listen([{port, 0}]) of - {ok, Acceptor} -> - [{Acceptor, Info}] = diameter_tcp:which_listeners(), - case lists:keysearch(socket, 1, Info) of - {value, {_, Listen}} -> - {ok, Port} = inet:port(Listen), - {Acceptor, Port}; - _ -> - ?FAIL({failed_retrieving_listen_socket, Info}) - end; - Error -> - ?FAIL({failed_creating_listen_socket, Error}) - end. - - -ensure_stopped(Pid, Stop, ReasonTag) when is_pid(Pid) -> -%% i("ensure_stopped -> create monitor to ~p", [Pid]), - Ref = erlang:monitor(process, Pid), -%% i("ensure_stopped -> try stop"), - Stop(Pid), -%% i("ensure_stopped -> await DOWN message"), - receive - {'DOWN', Ref, process, Pid, _} -> -%% i("ensure_stopped -> received DOWN message"), - ok - after 5000 -> -%% i("ensure_stopped -> timeout"), - ?FAIL({ReasonTag, Pid}) - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -listen(Opts) -> - diameter_tcp:listen([{module, ?MODULE} | Opts]). - -connect(Opts) -> - diameter_tcp:connect([{module, ?MODULE} | Opts]). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -up(Pid, Host, Port) -> - Pid ! {diameter, {up, Host, Port}}, - ok. - -up(Pid) -> - Pid ! {diameter, {up, self()}}, - ok. - -recv(Pid, Pkt) -> - Pid ! {diameter, {recv, Pkt}}. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -i(F) -> - i(F, []). - -i(F, A) -> - io:format(F ++ "~n", A). - - -ok({ok, Whatever}) -> - Whatever; -ok(Crap) -> - Crap. - - diff --git a/lib/diameter/test/diameter_test_lib.erl b/lib/diameter/test/diameter_test_lib.erl deleted file mode 100644 index 3d46236526..0000000000 --- a/lib/diameter/test/diameter_test_lib.erl +++ /dev/null @@ -1,478 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1999-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Lightweight test server -%%---------------------------------------------------------------------- -%% - --module(diameter_test_lib). - --export([ - sleep/1, - - hours/1, - minutes/1, - seconds/1, - - key1search/2, - - non_pc_tc_maybe_skip/4, - os_based_skip/1, - - fail/3, - skip/3, - fatal_skip/3, - - log/4, - error/3, - - flush/0, - - proxy_start/1, proxy_start/2, - proxy_init/2, - - still_alive/1, - - prepare_test_case/5, - lookup_config/2, - - mk_nodes/2, start_nodes/3, - - display_system_info/1, display_system_info/2, display_system_info/3, - display_alloc_info/0, - alloc_info/0, - - report_event/3 - - ]). - --include("diameter_test_lib.hrl"). - --record('REASON', {mod, line, desc}). - - -%% ---------------------------------------------------------------- -%% Time related function -%% - -sleep(infinity) -> - receive - after infinity -> - ok - end; -sleep(MSecs) -> - receive - after trunc(MSecs) -> - ok - end, - ok. - - -hours(N) -> trunc(N * 1000 * 60 * 60). -minutes(N) -> trunc(N * 1000 * 60). -seconds(N) -> trunc(N * 1000). - - -%% ---------------------------------------------------------------- - -key1search(Key, L) -> - case lists:keysearch(Key, 1, L) of - undefined -> - fail({not_found, Key, L}, ?MODULE, ?LINE); - {value, {Key, Value}} -> - Value - end. - - -%% ---------------------------------------------------------------- -%% Conditional skip of testcases -%% - -non_pc_tc_maybe_skip(Config, Condition, File, Line) - when is_list(Config) andalso is_function(Condition) -> - %% Check if we shall skip the skip - case os:getenv("TS_OS_BASED_SKIP") of - "false" -> - ok; - _ -> - case lists:keysearch(ts, 1, Config) of - {value, {ts, megaco}} -> - %% Always run the testcase if we are using our own - %% test-server... - ok; - _ -> - case (catch Condition()) of - true -> - skip(non_pc_testcase, File, Line); - _ -> - ok - end - end - end. - - -os_based_skip(any) -> - true; -os_based_skip(Skippable) when is_list(Skippable) -> - {OsFam, OsName} = - case os:type() of - {_Fam, _Name} = FamAndName -> - FamAndName; - Fam -> - {Fam, undefined} - end, - case lists:member(OsFam, Skippable) of - true -> - true; - false -> - case lists:keysearch(OsFam, 1, Skippable) of - {value, {OsFam, OsName}} -> - true; - {value, {OsFam, OsNames}} when is_list(OsNames) -> - lists:member(OsName, OsNames); - _ -> - false - end - end; -os_based_skip(_) -> - false. - - -%%---------------------------------------------------------------------- - -error(Actual, Mod, Line) -> - global:send(megaco_global_logger, {failed, Mod, Line}), - log("<ERROR> Bad result: ~p~n", [Actual], Mod, Line), - Label = lists:concat([Mod, "(", Line, ") unexpected result"]), - report_event(60, Label, [{line, Mod, Line}, {error, Actual}]), - case global:whereis_name(megaco_test_case_sup) of - undefined -> - ignore; - Pid -> - Fail = #'REASON'{mod = Mod, line = Line, desc = Actual}, - Pid ! {fail, self(), Fail} - end, - Actual. - -log(Format, Args, Mod, Line) -> - case global:whereis_name(megaco_global_logger) of - undefined -> - io:format(user, "~p~p(~p): " ++ Format, - [self(), Mod, Line] ++ Args); - Pid -> - io:format(Pid, "~p~p(~p): " ++ Format, - [self(), Mod, Line] ++ Args) - end. - -skip(Actual, File, Line) -> - log("Skipping test case~n", [], File, Line), - String = lists:flatten(io_lib:format("Skipping test case ~p(~p): ~p~n", - [File, Line, Actual])), - exit({skipped, String}). - -fatal_skip(Actual, File, Line) -> - error(Actual, File, Line), - exit(shutdown). - - -fail(Actual, File, Line) -> - log("Test case failing~n", [], File, Line), - String = lists:flatten(io_lib:format("Test case failing ~p (~p): ~p~n", - [File, Line, Actual])), - exit({suite_failed, String}). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Flush the message queue and return its messages - -flush() -> - receive - Msg -> - [Msg | flush()] - after 1000 -> - [] - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% The proxy process - -proxy_start(ProxyId) -> - spawn_link(?MODULE, proxy_init, [ProxyId, self()]). - -proxy_start(Node, ProxyId) -> - spawn_link(Node, ?MODULE, proxy_init, [ProxyId, self()]). - -proxy_init(ProxyId, Controller) -> - process_flag(trap_exit, true), - ?LOG("[~p] proxy started by ~p~n",[ProxyId, Controller]), - proxy_loop(ProxyId, Controller). - -proxy_loop(OwnId, Controller) -> - receive - {'EXIT', Controller, Reason} -> - p("proxy_loop -> received exit from controller" - "~n Reason: ~p" - "~n", [Reason]), - exit(Reason); - {apply, Fun} -> - p("proxy_loop -> received apply request~n", []), - Res = Fun(), - p("proxy_loop -> apply result: " - "~n ~p" - "~n", [Res]), - Controller ! {res, OwnId, Res}, - proxy_loop(OwnId, Controller); - OtherMsg -> - p("proxy_loop -> received unknown message: " - "~n OtherMsg: ~p" - "~n", [OtherMsg]), - Controller ! {msg, OwnId, OtherMsg}, - proxy_loop(OwnId, Controller) - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Check if process is alive and kicking -still_alive(Pid) -> - case catch erlang:is_process_alive(Pid) of % New BIF in Erlang/OTP R5 - true -> - true; - false -> - false; - {'EXIT', _} -> % Pre R5 backward compatibility - case process_info(Pid, message_queue_len) of - undefined -> false; - _ -> true - end - end. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -mk_nodes(0, Nodes) -> - Nodes; -mk_nodes(N, []) -> - mk_nodes(N - 1, [node()]); -mk_nodes(N, Nodes) when N > 0 -> - Head = hd(Nodes), - [Name, Host] = node_to_name_and_host(Head), - Nodes ++ [mk_node(I, Name, Host) || I <- lists:seq(1, N)]. - -mk_node(N, Name, Host) -> - list_to_atom(lists:concat([Name ++ integer_to_list(N) ++ "@" ++ Host])). - -%% Returns [Name, Host] -node_to_name_and_host(Node) -> - string:tokens(atom_to_list(Node), [$@]). - -start_nodes([Node | Nodes], File, Line) -> - case net_adm:ping(Node) of - pong -> - start_nodes(Nodes, File, Line); - pang -> - [Name, Host] = node_to_name_and_host(Node), - case slave:start_link(Host, Name) of - {ok, NewNode} when NewNode =:= Node -> - Path = code:get_path(), - {ok, Cwd} = file:get_cwd(), - true = rpc:call(Node, code, set_path, [Path]), - ok = rpc:call(Node, file, set_cwd, [Cwd]), - true = rpc:call(Node, code, set_path, [Path]), - {_, []} = rpc:multicall(global, sync, []), - start_nodes(Nodes, File, Line); - Other -> - fatal_skip({cannot_start_node, Node, Other}, File, Line) - end - end; -start_nodes([], _File, _Line) -> - ok. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -display_alloc_info() -> - io:format("Allocator memory information:~n", []), - AllocInfo = alloc_info(), - display_alloc_info(AllocInfo). - -display_alloc_info([]) -> - ok; -display_alloc_info([{Alloc, Mem}|AllocInfo]) -> - io:format(" ~15w: ~10w~n", [Alloc, Mem]), - display_alloc_info(AllocInfo). - -alloc_info() -> - case erlang:system_info(allocator) of - {_Allocator, _Version, Features, _Settings} -> - alloc_info(Features); - _ -> - [] - end. - -alloc_info(Allocators) -> - Allocs = [temp_alloc, sl_alloc, std_alloc, ll_alloc, eheap_alloc, - ets_alloc, binary_alloc, driver_alloc], - alloc_info(Allocators, Allocs, []). - -alloc_info([], _, Acc) -> - lists:reverse(Acc); -alloc_info([Allocator | Allocators], Allocs, Acc) -> - case lists:member(Allocator, Allocs) of - true -> - Instances0 = erlang:system_info({allocator, Allocator}), - Instances = - if - is_list(Instances0) -> - [Instance || Instance <- Instances0, - element(1, Instance) =:= instance]; - true -> - [] - end, - AllocatorMem = alloc_mem_info(Instances), - alloc_info(Allocators, Allocs, [{Allocator, AllocatorMem} | Acc]); - - false -> - alloc_info(Allocators, Allocs, Acc) - end. - -alloc_mem_info(Instances) -> - alloc_mem_info(Instances, []). - -alloc_mem_info([], Acc) -> - lists:sum([Mem || {instance, _, Mem} <- Acc]); -alloc_mem_info([{instance, N, Info}|Instances], Acc) -> - InstanceMemInfo = alloc_instance_mem_info(Info), - alloc_mem_info(Instances, [{instance, N, InstanceMemInfo} | Acc]). - -alloc_instance_mem_info(InstanceInfo) -> - MBCS = alloc_instance_mem_info(mbcs, InstanceInfo), - SBCS = alloc_instance_mem_info(sbcs, InstanceInfo), - MBCS + SBCS. - -alloc_instance_mem_info(Key, InstanceInfo) -> - case lists:keysearch(Key, 1, InstanceInfo) of - {value, {Key, Info}} -> - case lists:keysearch(blocks_size, 1, Info) of - {value, {blocks_size, Mem, _, _}} -> - Mem; - _ -> - 0 - end; - _ -> - 0 - end. - - -display_system_info(WhenStr) -> - display_system_info(WhenStr, undefined, undefined). - -display_system_info(WhenStr, undefined, undefined) -> - display_system_info(WhenStr, ""); -display_system_info(WhenStr, Mod, Func) -> - ModFuncStr = lists:flatten(io_lib:format(" ~w:~w", [Mod, Func])), - display_system_info(WhenStr, ModFuncStr). - -display_system_info(WhenStr, ModFuncStr) -> - Fun = fun(F) -> case (catch F()) of - {'EXIT', _} -> - undefined; - Res -> - Res - end - end, - ProcCount = Fun(fun() -> erlang:system_info(process_count) end), - ProcLimit = Fun(fun() -> erlang:system_info(process_limit) end), - ProcMemAlloc = Fun(fun() -> erlang:memory(processes) end), - ProcMemUsed = Fun(fun() -> erlang:memory(processes_used) end), - ProcMemBin = Fun(fun() -> erlang:memory(binary) end), - ProcMemTot = Fun(fun() -> erlang:memory(total) end), - %% error_logger:info_msg( - io:format("~n" - "~n*********************************************" - "~n" - "System info ~s~s => " - "~n Process count: ~w" - "~n Process limit: ~w" - "~n Process memory alloc: ~w" - "~n Process memory used: ~w" - "~n Memory for binaries: ~w" - "~n Memory total: ~w" - "~n" - "~n*********************************************" - "~n" - "~n", [WhenStr, ModFuncStr, - ProcCount, ProcLimit, ProcMemAlloc, ProcMemUsed, - ProcMemBin, ProcMemTot]), - ok. - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -prepare_test_case(Actions, N, Config, File, Line) -> - OrigNodes = lookup_config(nodes, Config), - TestNodes = lookup_config(nodenames, Config), %% For testserver - This = node(), - SomeNodes = OrigNodes ++ (TestNodes -- OrigNodes), - AllNodes = [This | (SomeNodes -- [This])], - Nodes = pick_n_nodes(N, AllNodes, File, Line), - start_nodes(Nodes, File, Line), - do_prepare_test_case(Actions, Nodes, Config, File, Line). - -do_prepare_test_case([init | Actions], Nodes, Config, File, Line) -> - process_flag(trap_exit, true), - megaco_test_lib:flush(), - do_prepare_test_case(Actions, Nodes, Config, File, Line); -do_prepare_test_case([{stop_app, App} | Actions], Nodes, Config, File, Line) -> - _Res = rpc:multicall(Nodes, application, stop, [App]), - do_prepare_test_case(Actions, Nodes, Config, File, Line); -do_prepare_test_case([], Nodes, _Config, _File, _Line) -> - Nodes. - -pick_n_nodes(all, AllNodes, _File, _Line) -> - AllNodes; -pick_n_nodes(N, AllNodes, _File, _Line) - when is_integer(N) andalso (length(AllNodes) >= N) -> - AllNodes -- lists:nthtail(N, AllNodes); -pick_n_nodes(N, AllNodes, File, Line) -> - fatal_skip({too_few_nodes, N, AllNodes}, File, Line). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -lookup_config(Key, Config) -> - case lists:keysearch(Key, 1, Config) of - {value, {Key, Val}} -> - Val; - _ -> - [] - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -report_event(_Severity, _Label, _Content) -> - %% diameter:report_event(Severity, Label, Content). - hopefully_traced. - - -p(F,A) -> - io:format("~p" ++ F ++ "~n", [self()|A]). diff --git a/lib/diameter/test/diameter_test_lib.hrl b/lib/diameter/test/diameter_test_lib.hrl deleted file mode 100644 index 0b86f38de7..0000000000 --- a/lib/diameter/test/diameter_test_lib.hrl +++ /dev/null @@ -1,106 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Define common macros for testing -%%---------------------------------------------------------------------- -%% - --define(FLUSH(), diameter_test_lib:flush()). - --define(SLEEP(MSEC), diameter_test_lib:sleep(MSEC)). --define(M(), diameter_test_lib:millis()). --define(MDIFF(A,B), diameter_test_lib:millis_diff(A,B)). - --define(HOURS(T), diameter_test_lib:hours(T)). --define(MINUTES(T), diameter_test_lib:minutes(T)). --define(SECONDS(T), diameter_test_lib:seconds(T)). - --define(KEY1SEARCH(Key, L), diameter_test_lib:key1search(Key, L)). - - --define(APPLY(Proxy, Fun), - Proxy ! {apply, Fun}). - --define(LOG(Format, Args), - diameter_test_lib:log(Format, Args, ?MODULE, ?LINE)). - --define(ERROR(Reason), - diameter_test_lib:error(Reason, ?MODULE, ?LINE)). - --define(OS_BASED_SKIP(Skippable), - diameter_test_lib:os_based_skip(Skippable)). - --define(NON_PC_TC_MAYBE_SKIP(Config, Condition), - diameter_test_lib:non_pc_tc_maybe_skip(Config, Condition, ?MODULE, ?LINE)). - --define(FAIL(Reason), - diameter_test_lib:fail(Reason, ?MODULE, ?LINE)). - --define(SKIP(Reason), - diameter_test_lib:skip(Reason, ?MODULE, ?LINE)). - --define(VERIFYL(Expected, Expr), - fun(A,B) when list(A), list(B) -> - A1 = lists:sort(A), - B1 = lists:sort(B), - case A1 of - B1 -> ?LOG("Ok, ~p~n", [B]); - _ -> ?ERROR(B) - end, - B; - (A,A) -> - ?LOG("Ok, ~p~n", [A]), - A; - (A,B) -> - ?ERROR(B), - B - end(Expected, (catch Expr))). - --define(VERIFY(Expected, Expr), - fun() -> - AcTuAlReS = (catch (Expr)), - case AcTuAlReS of - Expected -> ?LOG("Ok, ~p~n", [AcTuAlReS]); - _ -> ?ERROR(AcTuAlReS) - end, - AcTuAlReS - end()). - --define(RECEIVE(Expected), - ?VERIFY(Expected, ?FLUSH())). - --define(MULTI_RECEIVE(Expected), - ?VERIFY(lists:sort(Expected), lists:sort(?FLUSH()))). - --define(ACQUIRE_NODES(N, Config), - diameter_test_lib:prepare_test_case([init, {stop_app, diameter}], - N, Config, ?FILE, ?LINE)). - - --define(REPORT_IMPORTANT(Label, Content), ?REPORT_EVENT(20, Label, Content)). --define(REPORT_VERBOSE(Label, Content), ?REPORT_EVENT(40, Label, Content)). --define(REPORT_DEBUG(Label, Content), ?REPORT_EVENT(60, Label, Content)). --define(REPORT_TRACE(Label, Content), ?REPORT_EVENT(80, Label, Content)). - --define(REPORT_EVENT(Severity, Label, Content), - diameter_test_lib:report_event(Severity, Label, - [{line, ?MODULE, ?LINE} | Content])). - diff --git a/lib/diameter/test/diameter_test_server.erl b/lib/diameter/test/diameter_test_server.erl deleted file mode 100644 index e2ff73fb8e..0000000000 --- a/lib/diameter/test/diameter_test_server.erl +++ /dev/null @@ -1,551 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Lightweight test server -%%---------------------------------------------------------------------- - --module(diameter_test_server). - --export([ - t/1, t/2, - - init_per_testcase/2, - fin_per_testcase/2 - ]). - --include("diameter_test_lib.hrl"). - - --define(GLOGGER, diameter_global_logger). - - -%% ---------------------------------------------------------------- -%% - -t([Case]) when is_atom(Case) -> - t(Case); -t(Case) -> - process_flag(trap_exit, true), - MEM = fun() -> case (catch erlang:memory()) of - {'EXIT', _} -> - []; - Res -> - Res - end - end, - Alloc1 = diameter_test_lib:alloc_info(), - Mem1 = MEM(), - Res = lists:flatten(t(Case, default_config())), - Alloc2 = diameter_test_lib:alloc_info(), - Mem2 = MEM(), - %% io:format("Res: ~p~n", [Res]), - display_result(Res, Alloc1, Mem1, Alloc2, Mem2), - Res. - - -groups(Mod) when is_atom(Mod) -> - try Mod:groups() of - Groups when is_list(Groups) -> - Groups; - BadGroups -> - exit({bad_groups, Mod, BadGroups}) - catch - _:_ -> - [] - end. - -init_suite(Mod, Config) -> - io:format("~w:init_suite -> entry with" - "~n Mod: ~p" - "~n Config: ~p" - "~n", [?MODULE, Mod, Config]), - Mod:init_per_suite(Config). - -end_suite(Mod, Config) -> - Mod:end_per_suite(Config). - -init_group(Mod, Group, Config) -> - Mod:init_per_group(Group, Config). - -end_group(Mod, Group, Config) -> - Mod:init_per_group(Group, Config). - -%% This is for sub-SUITEs -t({_Mod, {NewMod, all}, _Groups}, _Config) when is_atom(NewMod) -> - io:format("~w:t(all) -> entry with" - "~n NewMod: ~p" - "~n", [?MODULE, NewMod]), - t(NewMod); -t({Mod, {group, Name} = Group, Groups}, Config) - when is_atom(Mod) andalso is_atom(Name) andalso is_list(Groups) -> - io:format("~w:t(group) -> entry with" - "~n Mod: ~p" - "~n Name: ~p" - "~n Groups: ~p" - "~n Config: ~p" - "~n", [?MODULE, Mod, Name, Groups, Config]), - case lists:keysearch(Name, 1, Groups) of - {value, {Name, _Props, GroupsAndCases}} -> - try init_group(Mod, Name, Config) of - Config2 when is_list(Config2) -> - Res = [t({Mod, Case, Groups}, Config2) || - Case <- GroupsAndCases], - (catch end_group(Mod, Name, Config2)), - Res; - Error -> - io:format(" => group (~w) init failed: ~p~n", - [Name, Error]), - [{failed, {Mod, Group}, Error}] - catch - exit:{skipped, SkipReason} -> - io:format(" => skipping group: ~p~n", [SkipReason]), - [{skipped, {Mod, Group}, SkipReason, 0}]; - exit:{undef, _} -> - [t({Mod, Case, Groups}, Config) || - Case <- GroupsAndCases]; - T:E -> - [{failed, {Mod, Group}, {T,E}, 0}] - end; - false -> - exit({unknown_group, Mod, Name, Groups}) - end; -t({Mod, Fun, _}, Config) - when is_atom(Mod) andalso is_atom(Fun) -> - io:format("~w:t -> entry with" - "~n Mod: ~p" - "~n Fun: ~p" - "~n Config: ~p" - "~n", [?MODULE, Mod, Fun, Config]), - case catch apply(Mod, Fun, [suite]) of - [] -> - io:format("Eval: ~p:", [{Mod, Fun}]), - Res = eval(Mod, Fun, Config), - {R, _, _, _} = Res, - io:format(" ~p~n", [R]), - Res; - - Cases when is_list(Cases) -> - io:format("Expand: ~p ...~n", [{Mod, Fun}]), - Map = fun(Case) when is_atom(Case) -> {Mod, Case}; - (Case) -> Case - end, - t(lists:map(Map, Cases), Config); - - {'EXIT', {undef, _}} -> - io:format("Undefined: ~p~n", [{Mod, Fun}]), - [{nyi, {Mod, Fun}, ok, 0}]; - - Error -> - io:format("Ignoring: ~p: ~p~n", [{Mod, Fun}, Error]), - [{failed, {Mod, Fun}, Error, 0}] - end; -t(Mod, Config) when is_atom(Mod) -> - io:format("~w:t -> entry with" - "~n Mod: ~p" - "~n Config: ~p" - "~n", [?MODULE, Mod, Config]), - %% This is assumed to be a test suite, so we start by calling - %% the top test suite function(s) (all/0 and groups/0). - case (catch Mod:all()) of - Cases when is_list(Cases) -> - %% The list may contain atoms (actual test cases) and - %% group-tuples (a tuple naming a group of test cases). - %% A group is defined by the (optional) groups/0 function. - io:format("~w:t -> suite all ok" - "~n Cases: ~p" - "~n", [?MODULE, Cases]), - Groups = groups(Mod), - io:format("~w:t -> " - "~n Groups: ~p" - "~n", [?MODULE, Groups]), - try init_suite(Mod, Config) of - Config2 when is_list(Config2) -> - io:format("~w:t -> suite init ok" - "~n Config2: ~p" - "~n", [?MODULE, Config2]), - Res = [t({Mod, Case, Groups}, Config2) || Case <- Cases], - (catch end_suite(Mod, Config2)), - Res; - Error -> - io:format(" => suite init failed: ~p~n", [Error]), - [{failed, {Mod, init_per_suite}, Error}] - catch - exit:{skipped, SkipReason} -> - io:format(" => skipping suite: ~p~n", [SkipReason]), - [{skipped, {Mod, init_per_suite}, SkipReason, 0}]; - exit:{undef, _} -> - io:format("~w:t -> suite init failed. exit undef(1)~n", [?MODULE]), - [t({Mod, Case, Groups}, Config) || Case <- Cases]; - exit:undef -> - io:format("~w:t -> suite init failed. exit undef(2)~n", [?MODULE]), - [t({Mod, Case, Groups}, Config) || Case <- Cases]; - T:E -> - io:format("~w:t -> suite init failed. " - "~n T: ~p" - "~n E: ~p" - "~n", [?MODULE, T,E]), - [{failed, {Mod, init_per_suite}, {T,E}, 0}] - end; - {'EXIT', {undef, _}} -> - io:format("Undefined: ~p~n", [{Mod, all}]), - [{nyi, {Mod, all}, ok, 0}]; - - Crap -> - io:format("~w:t -> suite all failed: " - "~n Crap: ~p" - "~n", [?MODULE, Crap]), - Crap - end; -t(Bad, _Config) -> - io:format("~w:t -> entry with" - "~n Bad: ~p" - "~n", [?MODULE, Bad]), - [{badarg, Bad, ok, 0}]. - -eval(Mod, Fun, Config) -> - TestCase = {?MODULE, Mod, Fun}, - Label = lists:concat(["TEST CASE: ", Fun]), - ?REPORT_VERBOSE(Label ++ " started", [TestCase, Config]), - global:register_name(diameter_test_case_sup, self()), - Flag = process_flag(trap_exit, true), - put(diameter_test_server, true), - Config2 = Mod:init_per_testcase(Fun, Config), - Self = self(), - Pid = spawn_link(fun() -> do_eval(Self, Mod, Fun, Config2) end), - R = wait_for_evaluator(Pid, Mod, Fun, Config2, []), - Mod:fin_per_testcase(Fun, Config2), - erase(diameter_test_server), - global:unregister_name(diameter_test_case_sup), - process_flag(trap_exit, Flag), - R. - -wait_for_evaluator(Pid, Mod, Fun, Config, Errors) -> - wait_for_evaluator(Pid, Mod, Fun, Config, Errors, 0). -wait_for_evaluator(Pid, Mod, Fun, Config, Errors, AccTime) -> - TestCase = {?MODULE, Mod, Fun}, - Label = lists:concat(["TEST CASE: ", Fun]), - receive - {done, Pid, ok, Time} when Errors =:= [] -> - ?REPORT_VERBOSE(Label ++ " ok", - [{test_case, TestCase}, {config, Config}]), - {ok, {Mod, Fun}, Errors, Time}; - {done, Pid, ok, Time} -> - ?REPORT_VERBOSE(Label ++ " failed", - [{test_case, TestCase}, {config, Config}]), - {failed, {Mod, Fun}, Errors, Time}; - {done, Pid, {ok, _}, Time} when Errors =:= [] -> - ?REPORT_VERBOSE(Label ++ " ok", - [{test_case, TestCase}, {config, Config}]), - {ok, {Mod, Fun}, Errors, Time}; - {done, Pid, {ok, _}, Time} -> - ?REPORT_VERBOSE(Label ++ " failed", - [{test_case, TestCase}, {config, Config}]), - {failed, {Mod, Fun}, Errors, Time}; - {done, Pid, Fail, Time} -> - ?REPORT_IMPORTANT(Label ++ " failed", - [{test_case, TestCase}, - {config, Config}, - {return, Fail}, - {errors, Errors}]), - {failed, {Mod, Fun}, Fail, Time}; - {'EXIT', Pid, {skipped, Reason}, Time} -> - ?REPORT_IMPORTANT(Label ++ " skipped", - [{test_case, TestCase}, - {config, Config}, - {skipped, Reason}]), - {skipped, {Mod, Fun}, Errors, Time}; - {'EXIT', Pid, Reason, Time} -> - ?REPORT_IMPORTANT(Label ++ " crashed", - [{test_case, TestCase}, - {config, Config}, - {'EXIT', Reason}]), - {crashed, {Mod, Fun}, [{'EXIT', Reason} | Errors], Time}; - {fail, Pid, Reason, Time} -> - wait_for_evaluator(Pid, Mod, Fun, Config, - Errors ++ [Reason], AccTime + Time) - end. - -do_eval(ReplyTo, Mod, Fun, Config) -> - diameter_test_lib:display_system_info("before", Mod, Fun), - case timer:tc(Mod, Fun, [Config]) of - {Time, {'EXIT', {skipped, Reason}}} -> - display_tc_time(Time), - diameter_test_lib:display_system_info("after (skipped)", Mod, Fun), - ReplyTo ! {'EXIT', self(), {skipped, Reason}, Time}; - {Time, {'EXIT', Reason}} -> - display_tc_time(Time), - diameter_test_lib:display_system_info("after (crashed)", Mod, Fun), - ReplyTo ! {'EXIT', self(), Reason, Time}; - {Time, Other} -> - display_tc_time(Time), - diameter_test_lib:display_system_info("after", Mod, Fun), - ReplyTo ! {done, self(), Other, Time} - end, - unlink(ReplyTo), - exit(shutdown). - - -display_tc_time(Time) -> - io:format("~n" - "~n*********************************************" - "~n" - "~nTest case completion time: ~.3f sec (~w)" - "~n", [(Time / 1000000), Time]), - ok. - - -display_result(Res, Alloc1, Mem1, Alloc2, Mem2) -> - io:format("~nAllocator info: ~n", []), - display_alloc(Alloc1, Alloc2), - io:format("~nMemory info: ~n", []), - display_memory(Mem1, Mem2), - display_result(Res). - -display_alloc([], []) -> - io:format("-~n", []), - ok; -display_alloc(A1, A2) -> - do_display_alloc(A1, A2). - -do_display_alloc([], _) -> - ok; -do_display_alloc([{Alloc, Mem1}|AllocInfo1], AllocInfo2) -> - Mem2 = - case lists:keysearch(Alloc, 1, AllocInfo2) of - {value, {_, Val}} -> - Val; - false -> - undefined - end, - io:format("~15w: ~10w -> ~w~n", [Alloc, Mem1, Mem2]), - do_display_alloc(AllocInfo1, AllocInfo2). - -display_memory([], []) -> - io:format("-~n", []), - ok; -display_memory(Mem1, Mem2) -> - do_display_memory(Mem1, Mem2). - - -do_display_memory([], _) -> - ok; -do_display_memory([{Key, Mem1}|MemInfo1], MemInfo2) -> - Mem2 = - case lists:keysearch(Key, 1, MemInfo2) of - {value, {_, Val}} -> - Val; - false -> - undefined - end, - io:format("~15w: ~10w -> ~w~n", [Key, Mem1, Mem2]), - do_display_memory(MemInfo1, MemInfo2). - -display_result([]) -> - io:format("OK~n", []); -display_result(Res) when is_list(Res) -> - Ok = [{MF, Time} || {ok, MF, _, Time} <- Res], - Nyi = [MF || {nyi, MF, _, _Time} <- Res], - Skipped = [{MF, Reason} || {skipped, MF, Reason, _Time} <- Res], - Failed = [{MF, Reason} || {failed, MF, Reason, _Time} <- Res], - Crashed = [{MF, Reason} || {crashed, MF, Reason, _Time} <- Res], - display_summery(Ok, Nyi, Skipped, Failed, Crashed), - display_ok(Ok), - display_skipped(Skipped), - display_failed(Failed), - display_crashed(Crashed). - -display_summery(Ok, Nyi, Skipped, Failed, Crashed) -> - io:format("~nTest case summery:~n", []), - display_summery(Ok, "successfull"), - display_summery(Nyi, "not yet implemented"), - display_summery(Skipped, "skipped"), - display_summery(Failed, "failed"), - display_summery(Crashed, "crashed"), - io:format("~n", []). - -display_summery(Res, Info) -> - io:format(" ~w test cases ~s~n", [length(Res), Info]). - -display_ok([]) -> - ok; -display_ok(Ok) -> - io:format("Ok test cases:~n", []), - F = fun({{M, F}, Time}) -> - io:format(" ~w : ~w => ~.2f sec~n", [M, F, Time / 1000000]) - end, - lists:foreach(F, Ok), - io:format("~n", []). - -display_skipped([]) -> - ok; -display_skipped(Skipped) -> - io:format("Skipped test cases:~n", []), - F = fun({MF, Reason}) -> io:format(" ~p => ~p~n", [MF, Reason]) end, - lists:foreach(F, Skipped), - io:format("~n", []). - - -display_failed([]) -> - ok; -display_failed(Failed) -> - io:format("Failed test cases:~n", []), - F = fun({MF, Reason}) -> io:format(" ~p => ~p~n", [MF, Reason]) end, - lists:foreach(F, Failed), - io:format("~n", []). - -display_crashed([]) -> - ok; -display_crashed(Crashed) -> - io:format("Crashed test cases:~n", []), - F = fun({MF, Reason}) -> io:format(" ~p => ~p~n", [MF, Reason]) end, - lists:foreach(F, Crashed), - io:format("~n", []). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Test server callbacks -init_per_testcase(_Case, Config) -> - Pid = group_leader(), - Name = ?GLOGGER, - case global:whereis_name(Name) of - undefined -> - global:register_name(?GLOGGER, Pid); - Pid -> - io:format("~w:init_per_testcase -> " - "already registered to ~p~n", [?MODULE, Pid]), - ok; - OtherPid when is_pid(OtherPid) -> - io:format("~w:init_per_testcase -> " - "already registered to other ~p (~p)~n", - [?MODULE, OtherPid, Pid]), - exit({already_registered, {?GLOGGER, OtherPid, Pid}}) - end, - set_kill_timer(Config). - -fin_per_testcase(_Case, Config) -> - Name = ?GLOGGER, - case global:whereis_name(Name) of - undefined -> - io:format("~w:fin_per_testcase -> already un-registered~n", - [?MODULE]), - ok; - Pid when is_pid(Pid) -> - global:unregister_name(?GLOGGER), - ok - end, - reset_kill_timer(Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Set kill timer - -set_kill_timer(Config) -> - case init:get_argument(diameter_test_timeout) of - {ok, _} -> - Config; - _ -> - Time = - case lookup_config(tc_timeout, Config) of - [] -> - timer:minutes(5); - ConfigTime when is_integer(ConfigTime) -> - ConfigTime - end, - Dog = - case get(diameter_test_server) of - true -> - Self = self(), - spawn_link(fun() -> watchdog(Self, Time) end); - _ -> - test_server:timetrap(Time) - end, - [{kill_timer, Dog}|Config] - - - end. - -reset_kill_timer(Config) -> - DogKiller = - case get(diameter_test_server) of - true -> - fun(P) when is_pid(P) -> P ! stop; - (_) -> ok - end; - _ -> - fun(Ref) -> test_server:timetrap_cancel(Ref) end - end, - case lists:keysearch(kill_timer, 1, Config) of - {value, {kill_timer, Dog}} -> - DogKiller(Dog), - lists:keydelete(kill_timer, 1, Config); - _ -> - Config - end. - -watchdog(Pid, Time) -> - erlang:now(), - receive - stop -> - ok - after Time -> - case (catch process_info(Pid)) of - undefined -> - ok; - Info -> - ?LOG("<ERROR> Watchdog in test case timed out " - "for ~p after ~p min" - "~n~p" - "~n", - [Pid, Time div (1000*60), Info]), - exit(Pid, kill) - end - end. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -lookup_config(Key, Config) -> - diameter_test_lib:lookup_config(Key, Config). - -default_config() -> - [{nodes, default_nodes()}, {ts, diameter}]. - -default_nodes() -> - mk_nodes(2, []). - -mk_nodes(0, Nodes) -> - Nodes; -mk_nodes(N, []) -> - mk_nodes(N - 1, [node()]); -mk_nodes(N, Nodes) when N > 0 -> - Head = hd(Nodes), - [Name, Host] = node_to_name_and_host(Head), - Nodes ++ [mk_node(I, Name, Host) || I <- lists:seq(1, N)]. - -mk_node(N, Name, Host) -> - list_to_atom(lists:concat([Name ++ integer_to_list(N) ++ "@" ++ Host])). - -%% Returns [Name, Host] -node_to_name_and_host(Node) -> - string:tokens(atom_to_list(Node), [$@]). - - - - diff --git a/lib/diameter/test/diameter_traffic_SUITE.erl b/lib/diameter/test/diameter_traffic_SUITE.erl new file mode 100644 index 0000000000..8c85323222 --- /dev/null +++ b/lib/diameter/test/diameter_traffic_SUITE.erl @@ -0,0 +1,779 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests of traffic between two Diameter nodes, one client, one server. +%% + +-module(diameter_traffic_SUITE). + +-export([suite/0, + all/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]). + +%% testcases +-export([result_codes/1, + send_ok/1, + send_arbitrary/1, + send_unknown/1, + send_unknown_mandatory/1, + send_noreply/1, + send_unsupported/1, + send_unsupported_app/1, + send_error_bit/1, + send_unsupported_version/1, + send_long/1, + send_nopeer/1, + send_noapp/1, + send_discard/1, + send_any_1/1, + send_any_2/1, + send_all_1/1, + send_all_2/1, + send_timeout/1, + send_error/1, + send_detach/1, + send_encode_error/1, + send_destination_1/1, + send_destination_2/1, + send_destination_3/1, + send_destination_4/1, + send_destination_5/1, + send_destination_6/1, + send_bad_option_1/1, + send_bad_option_2/1, + send_bad_filter_1/1, + send_bad_filter_2/1, + send_bad_filter_3/1, + send_bad_filter_4/1, + send_multiple_filters_1/1, + send_multiple_filters_2/1, + send_multiple_filters_3/1, + send_anything/1, + remove_transports/1, + stop_services/1]). + +%% diameter callbacks +-export([peer_up/3, + peer_down/3, + pick_peer/5, pick_peer/6, + prepare_request/4, prepare_request/5, + prepare_retransmit/4, + handle_answer/5, handle_answer/6, + handle_error/5, + handle_request/3]). + +-ifdef(DIAMETER_CT). +-include("diameter_gen_base_rfc3588.hrl"). +-else. +-include_lib("diameter/include/diameter_gen_base_rfc3588.hrl"). +-endif. + +-include_lib("diameter/include/diameter.hrl"). +-include("diameter_ct.hrl"). + +%% =========================================================================== + +-define(ADDR, {127,0,0,1}). + +-define(CLIENT, "CLIENT"). +-define(SERVER, "SERVER"). +-define(REALM, "erlang.org"). +-define(HOST(Host, Realm), Host ++ [$.|Realm]). + +-define(APP_ALIAS, base). +-define(EXTRA, an_extra_argument). +-define(ENCODINGS, [list, record]). + +-define(DICT, ?DIAMETER_DICT_COMMON). +-define(APP_ID, ?DIAMETER_APP_ID_COMMON). + +%% Config for diameter:start_service/2. +-define(SERVICE(Name), + [{'Origin-Host', Name ++ "." ++ ?REALM}, + {'Origin-Realm', ?REALM}, + {'Host-IP-Address', [?ADDR]}, + {'Vendor-Id', 12345}, + {'Product-Name', "OTP/diameter"}, + {'Acct-Application-Id', [?DIAMETER_APP_ID_COMMON]}, + {application, [{alias, ?APP_ALIAS}, + {dictionary, ?DIAMETER_DICT_COMMON}, + {module, ?MODULE}, + {answer_errors, callback}]}]). + +%% Config for diameter:add_transport/2. In the listening case, listen +%% on a free port that we then lookup using the implementation detail +%% that diameter_tcp registers the port with diameter_reg. +-define(CONNECT(PortNr), + {connect, [{transport_module, diameter_tcp}, + {transport_config, [{raddr, ?ADDR}, + {rport, PortNr}, + {ip, ?ADDR}, + {port, 0}]}]}). +-define(LISTEN, + {listen, [{transport_module, diameter_tcp}, + {transport_config, [{ip, ?ADDR}, {port, 0}]}]}). + +-define(SUCCESS, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_SUCCESS'). +-define(COMMAND_UNSUPPORTED, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_COMMAND_UNSUPPORTED'). +-define(TOO_BUSY, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_TOO_BUSY'). +-define(APPLICATION_UNSUPPORTED, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_APPLICATION_UNSUPPORTED'). +-define(INVALID_HDR_BITS, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_INVALID_HDR_BITS'). +-define(AVP_UNSUPPORTED, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_AVP_UNSUPPORTED'). +-define(UNSUPPORTED_VERSION, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_UNSUPPORTED_VERSION'). +-define(REALM_NOT_SERVED, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_REALM_NOT_SERVED'). +-define(UNABLE_TO_DELIVER, + ?'DIAMETER_BASE_RESULT-CODE_DIAMETER_UNABLE_TO_DELIVER'). + +-define(EVENT_RECORD, + ?'DIAMETER_BASE_ACCOUNTING-RECORD-TYPE_EVENT_RECORD'). +-define(AUTHORIZE_ONLY, + ?'DIAMETER_BASE_RE-AUTH-REQUEST-TYPE_AUTHORIZE_ONLY'). +-define(AUTHORIZE_AUTHENTICATE, + ?'DIAMETER_BASE_RE-AUTH-REQUEST-TYPE_AUTHORIZE_AUTHENTICATE'). + +-define(LOGOUT, + ?'DIAMETER_BASE_TERMINATION-CAUSE_DIAMETER_LOGOUT'). +-define(BAD_ANSWER, + ?'DIAMETER_BASE_TERMINATION-CAUSE_DIAMETER_BAD_ANSWER'). + +-define(A, list_to_atom). +-define(L, atom_to_list). +-define(P(N), ?A("p_" ++ ?L(N))). + +%% =========================================================================== + +suite() -> + [{timetrap, {seconds, 10}}]. + +all() -> + [result_codes | [{group, N} || {N, _, _} <- groups()]] + ++ [remove_transports, stop_services]. + +groups() -> + Ts = tc(), + [{E, [], Ts} || E <- ?ENCODINGS] + ++ [{?P(E), [parallel], Ts} || E <- ?ENCODINGS]. + +init_per_suite(Config) -> + ok = diameter:start(), + ok = diameter:start_service(?SERVER, ?SERVICE(?SERVER)), + ok = diameter:start_service(?CLIENT, ?SERVICE(?CLIENT)), + {ok, LRef} = diameter:add_transport(?SERVER, ?LISTEN), + true = diameter:subscribe(?CLIENT), + {ok, CRef} = diameter:add_transport(?CLIENT, ?CONNECT(portnr())), + {up, CRef, _Peer, _Config, #diameter_packet{}} + = receive #diameter_event{service = ?CLIENT, info = I} -> I + after 2000 -> false + end, + true = diameter:unsubscribe(?CLIENT), + [{transports, {LRef, CRef}} | Config]. + +end_per_suite(_Config) -> + ok = diameter:stop(). + +init_per_group(Name, Config) -> + E = case ?L(Name) of + "p_" ++ Rest -> + ?A(Rest); + _ -> + Name + end, + [{encode, E} | Config]. + +end_per_group(_, _) -> + ok. + +init_per_testcase(Name, Config) -> + [{testcase, Name} | Config]. + +end_per_testcase(_, _) -> + ok. + +%% Testcases to run when services are started and connections +%% established. +tc() -> + [send_ok, + send_arbitrary, + send_unknown, + send_unknown_mandatory, + send_noreply, + send_unsupported, + send_unsupported_app, + send_error_bit, + send_unsupported_version, + send_long, + send_nopeer, + send_noapp, + send_discard, + send_any_1, + send_any_2, + send_all_1, + send_all_2, + send_timeout, + send_error, + send_detach, + send_encode_error, + send_destination_1, + send_destination_2, + send_destination_3, + send_destination_4, + send_destination_5, + send_destination_6, + send_bad_option_1, + send_bad_option_2, + send_bad_filter_1, + send_bad_filter_2, + send_bad_filter_3, + send_bad_filter_4, + send_multiple_filters_1, + send_multiple_filters_2, + send_multiple_filters_3, + send_anything]. + +portnr() -> + portnr(20). + +portnr(N) + when 0 < N -> + case diameter_reg:match({diameter_tcp, listener, '_'}) of + [{T, _Pid}] -> + {_, _, {_LRef, {_Addr, LSock}}} = T, + {ok, PortNr} = inet:port(LSock), + PortNr; + [] -> + receive after 50 -> ok end, + portnr(N-1) + end. + +%% =========================================================================== + +%% Ensure that result codes have the expected values. +result_codes(_Config) -> + {2001, 3001, 3002, 3003, 3004, 3007, 3008, 5001, 5011} + = {?SUCCESS, + ?COMMAND_UNSUPPORTED, + ?UNABLE_TO_DELIVER, + ?REALM_NOT_SERVED, + ?TOO_BUSY, + ?APPLICATION_UNSUPPORTED, + ?INVALID_HDR_BITS, + ?AVP_UNSUPPORTED, + ?UNSUPPORTED_VERSION}. + +%% Send an ACR and expect success. +send_ok(Config) -> + Req = ['ACR', {'Accounting-Record-Type', ?EVENT_RECORD}, + {'Accounting-Record-Number', 1}], + #diameter_base_ACA{'Result-Code' = ?SUCCESS} + = call(Config, Req). + +%% Send an ASR with an arbitrary AVP and expect success and the same +%% AVP in the reply. +send_arbitrary(Config) -> + Req = ['ASR', {'AVP', [#diameter_avp{name = 'Class', value = "XXX"}]}], + #diameter_base_ASA{'Result-Code' = ?SUCCESS, + 'AVP' = Avps} + = call(Config, Req), + [#diameter_avp{name = 'Class', + value = "XXX"}] + = Avps. + +%% Send an unknown AVP (to some client) and check that it comes back. +send_unknown(Config) -> + Req = ['ASR', {'AVP', [#diameter_avp{code = 999, + is_mandatory = false, + data = <<17>>}]}], + #diameter_base_ASA{'Result-Code' = ?SUCCESS, + 'AVP' = Avps} + = call(Config, Req), + [#diameter_avp{code = 999, + is_mandatory = false, + data = <<17>>}] + = Avps. + +%% Ditto but set the M flag. +send_unknown_mandatory(Config) -> + Req = ['ASR', {'AVP', [#diameter_avp{code = 999, + is_mandatory = true, + data = <<17>>}]}], + #diameter_base_ASA{'Result-Code' = ?AVP_UNSUPPORTED, + 'Failed-AVP' = Failed} + = call(Config, Req), + [#'diameter_base_Failed-AVP'{'AVP' = Avps}] = Failed, + [#diameter_avp{code = 999, + is_mandatory = true, + data = <<17>>}] + = Avps. + +%% Send an STR that the server ignores. +send_noreply(Config) -> + Req = ['STR', {'Termination-Cause', ?BAD_ANSWER}], + {error, timeout} = call(Config, Req). + +%% Send an unsupported command and expect 3001. +send_unsupported(Config) -> + Req = ['STR', {'Termination-Cause', ?BAD_ANSWER}], + #'diameter_base_answer-message'{'Result-Code' = ?COMMAND_UNSUPPORTED} + = call(Config, Req). + +%% Send an unsupported command and expect 3007. +send_unsupported_app(Config) -> + Req = ['STR', {'Termination-Cause', ?BAD_ANSWER}], + #'diameter_base_answer-message'{'Result-Code' = ?APPLICATION_UNSUPPORTED} + = call(Config, Req). + +%% Send a request with the E bit set and expect 3008. +send_error_bit(Config) -> + Req = ['STR', {'Termination-Cause', ?BAD_ANSWER}], + #'diameter_base_answer-message'{'Result-Code' = ?INVALID_HDR_BITS} + = call(Config, Req). + +%% Send a bad version and check that we get 5011. +send_unsupported_version(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + #diameter_base_STA{'Result-Code' = ?UNSUPPORTED_VERSION} + = call(Config, Req). + +%% Send something long that will be fragmented by TCP. +send_long(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}, + {'User-Name', [lists:duplicate(1 bsl 20, $X)]}], + #diameter_base_STA{'Result-Code' = ?SUCCESS} + = call(Config, Req). + +%% Send something for which pick_peer finds no suitable peer. +send_nopeer(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + {error, no_connection} = call(Config, Req, [{extra, [?EXTRA]}]). + +%% Send something on an unconfigured application. +send_noapp(_Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + {error, no_connection} = diameter:call(?CLIENT, unknown_alias, Req). + +%% Send something that's discarded by prepare_request. +send_discard(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + {error, unprepared} = call(Config, Req). + +%% Send with a disjunctive filter. +send_any_1(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + {error, no_connection} = call(Config, Req, [{filter, {any, []}}]). +send_any_2(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}, + {'Destination-Host', [?HOST(?SERVER, "unknown.org")]}], + #'diameter_base_answer-message'{'Result-Code' = ?UNABLE_TO_DELIVER} + = call(Config, Req, [{filter, {any, [host, realm]}}]). + +%% Send with a conjunctive filter. +send_all_1(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + Realm = lists:foldr(fun(C,A) -> [C,A] end, [], ?REALM), + #diameter_base_STA{'Result-Code' = ?SUCCESS} + = call(Config, Req, [{filter, {all, [{host, any}, + {realm, Realm}]}}]). +send_all_2(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}, + {'Destination-Host', [?HOST(?SERVER, "unknown.org")]}], + {error, no_connection} + = call(Config, Req, [{filter, {all, [host, realm]}}]). + +%% Timeout before the server manages an answer. +send_timeout(Config) -> + Req = ['RAR', {'Re-Auth-Request-Type', ?AUTHORIZE_ONLY}], + {error, timeout} = call(Config, Req, [{timeout, 1000}]). + +%% Explicitly answer with an answer-message and ensure that we +%% received the Session-Id. +send_error(Config) -> + Req = ['RAR', {'Re-Auth-Request-Type', ?AUTHORIZE_AUTHENTICATE}], + #'diameter_base_answer-message'{'Result-Code' = ?TOO_BUSY, + 'Session-Id' = SId} + = call(Config, Req), + undefined /= SId. + +%% Send a request with the detached option and receive it as a message +%% from handle_answer instead. +send_detach(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + Ref = make_ref(), + ok = call(Config, Req, [{extra, [{self(), Ref}]}, detach]), + #diameter_packet{msg = Rec, errors = []} + = receive {Ref, T} -> T after 2000 -> false end, + #diameter_base_STA{'Result-Code' = ?SUCCESS} + = Rec. + +%% Send a request which can't be encoded and expect {error, encode}. +send_encode_error(Config) -> + {error, encode} = call(Config, ['STR']). %% No Termination-Cause + +%% Send with filtering and expect success. +send_destination_1(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}, + {'Destination-Host', [?HOST(?SERVER, ?REALM)]}], + #diameter_base_STA{'Result-Code' = ?SUCCESS} + = call(Config, Req, [{filter, {all, [host, realm]}}]). +send_destination_2(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + #diameter_base_STA{'Result-Code' = ?SUCCESS} + = call(Config, Req, [{filter, {all, [host, realm]}}]). + +%% Send with filtering on and expect failure when specifying an +%% unknown host or realm. +send_destination_3(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}, + {'Destination-Realm', "unknown.org"}], + {error, no_connection} + = call(Config, Req, [{filter, {all, [host, realm]}}]). +send_destination_4(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}, + {'Destination-Host', [?HOST(?SERVER, "unknown.org")]}], + {error, no_connection} + = call(Config, Req, [{filter, {all, [host, realm]}}]). + +%% Send without filtering and expect an error answer when specifying +%% an unknown host or realm. +send_destination_5(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}, + {'Destination-Realm', "unknown.org"}], + #'diameter_base_answer-message'{'Result-Code' = ?REALM_NOT_SERVED} + = call(Config, Req). +send_destination_6(Config) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}, + {'Destination-Host', [?HOST(?SERVER, "unknown.org")]}], + #'diameter_base_answer-message'{'Result-Code' = ?UNABLE_TO_DELIVER} + = call(Config, Req). + +%% Specify an invalid option and expect failure. +send_bad_option_1(Config) -> + send_bad_option(Config, x). +send_bad_option_2(Config) -> + send_bad_option(Config, {extra, false}). + +send_bad_option(Config, Opt) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + try call(Config, Req, [Opt]) of + T -> erlang:error({?MODULE, ?LINE, T}) + catch + error: _ -> ok + end. + +%% Specify an invalid filter and expect no matching peers. +send_bad_filter_1(Config) -> + send_bad_filter(Config, {all, none}). +send_bad_filter_2(Config) -> + send_bad_filter(Config, {host, x}). +send_bad_filter_3(Config) -> + send_bad_filter(Config, {eval, fun() -> true end}). +send_bad_filter_4(Config) -> + send_bad_filter(Config, {eval, {?MODULE, not_exported, []}}). + +send_bad_filter(Config, F) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + {error, no_connection} = call(Config, Req, [{filter, F}]). + +%% Specify multiple filter options and expect them be conjunctive. +send_multiple_filters_1(Config) -> + Fun = fun(#diameter_caps{}) -> true end, + #diameter_base_STA{'Result-Code' = ?SUCCESS} + = send_multiple_filters(Config, [host, {eval, Fun}]). +send_multiple_filters_2(Config) -> + E = {erlang, is_tuple, []}, + {error, no_connection} + = send_multiple_filters(Config, [realm, {neg, {eval, E}}]). +send_multiple_filters_3(Config) -> + E1 = [fun(#diameter_caps{}, ok) -> true end, ok], + E2 = {erlang, is_tuple, []}, + E3 = {erlang, is_record, [diameter_caps]}, + E4 = [{erlang, is_record, []}, diameter_caps], + #diameter_base_STA{'Result-Code' = ?SUCCESS} + = send_multiple_filters(Config, [{eval, E} || E <- [E1,E2,E3,E4]]). + +send_multiple_filters(Config, Fs) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + call(Config, Req, [{filter, F} || F <- Fs]). + +%% Ensure that we can pass a request in any form to diameter:call/4, +%% only the return value from the prepare_request callback being +%% significant. +send_anything(Config) -> + #diameter_base_STA{'Result-Code' = ?SUCCESS} + = call(Config, anything). + +%% Remove the client transport and expect the server transport to +%% go down. +remove_transports(Config) -> + {LRef, CRef} = proplists:get_value(transports, Config), + true = diameter:subscribe(?SERVER), + ok = diameter:remove_transport(?CLIENT, CRef), + {down, LRef, _, _} + = receive #diameter_event{service = ?SERVER, info = I} -> I + after 2000 -> false + end. + +stop_services(_Config) -> + {ok, ok} = {diameter:stop_service(?CLIENT), + diameter:stop_service(?SERVER)}. + +%% =========================================================================== + +call(Config, Req) -> + call(Config, Req, []). + +call(Config, Req, Opts) -> + Name = proplists:get_value(testcase, Config), + Enc = proplists:get_value(encode, Config), + diameter:call(?CLIENT, + ?APP_ALIAS, + msg(Req, Enc), + [{extra, [Name]} | Opts]). + +msg([_|_] = L, list) -> + L; +msg([H|T], record) -> + ?DICT:'#new-'(?DICT:msg2rec(H), T); +msg(T, _) -> + T. + +%% Set only values that aren't already. +set([H|T], Vs) -> + [H | Vs ++ T]; +set(Rec, Vs) -> + lists:foldl(fun({F,_} = FV, A) -> set(?DICT:'#get-'(F, A), FV, A) end, + Rec, + Vs). + +set(E, FV, Rec) + when E == undefined; + E == [] -> + ?DICT:'#set-'(FV, Rec); +set(_, _, Rec) -> + Rec. + +%% =========================================================================== +%% diameter callbacks + +%% peer_up/3 + +peer_up(_SvcName, _Peer, State) -> + State. + +%% peer_down/3 + +peer_down(_SvcName, _Peer, State) -> + State. + +%% pick_peer/5/6 + +pick_peer([Peer], _, ?CLIENT, _State, Name) + when Name /= send_detach -> + {ok, Peer}. + +pick_peer([_Peer], _, ?CLIENT, _State, send_nopeer, ?EXTRA) -> + false; + +pick_peer([Peer], _, ?CLIENT, _State, send_detach, {_,_}) -> + {ok, Peer}. + +%% prepare_request/4/5 + +prepare_request(_Pkt, ?CLIENT, {_Ref, _Caps}, send_discard) -> + {discard, unprepared}; + +prepare_request(Pkt, ?CLIENT, {_Ref, Caps}, Name) -> + {send, prepare(Pkt, Caps, Name)}. + +prepare_request(Pkt, ?CLIENT, {_Ref, Caps}, send_detach, _) -> + {send, prepare(Pkt, Caps)}. + +prepare(Pkt, Caps, send_unsupported) -> + Req = prepare(Pkt, Caps), + #diameter_packet{bin = <<H:5/binary, _CmdCode:3/binary, T/binary>>} + = E + = diameter_codec:encode(?DICT, Pkt#diameter_packet{msg = Req}), + E#diameter_packet{bin = <<H/binary, 42:24/integer, T/binary>>}; + +prepare(Pkt, Caps, send_unsupported_app) -> + Req = prepare(Pkt, Caps), + #diameter_packet{bin = <<H:8/binary, _ApplId:4/binary, T/binary>>} + = E + = diameter_codec:encode(?DICT, Pkt#diameter_packet{msg = Req}), + E#diameter_packet{bin = <<H/binary, 42:32/integer, T/binary>>}; + +prepare(Pkt, Caps, send_error_bit) -> + #diameter_packet{header = Hdr} = Pkt, + Pkt#diameter_packet{header = Hdr#diameter_header{is_error = true}, + msg = prepare(Pkt, Caps)}; + +prepare(Pkt, Caps, send_unsupported_version) -> + #diameter_packet{header = Hdr} = Pkt, + Pkt#diameter_packet{header = Hdr#diameter_header{version = 42}, + msg = prepare(Pkt, Caps)}; + +prepare(Pkt, Caps, send_anything) -> + Req = ['STR', {'Termination-Cause', ?LOGOUT}], + prepare(Pkt#diameter_packet{msg = Req}, Caps); + +prepare(Pkt, Caps, _Name) -> + prepare(Pkt, Caps). + +prepare(#diameter_packet{msg = Req}, Caps) + when is_record(Req, diameter_base_ACR); + 'ACR' == hd(Req) -> + #diameter_caps{origin_host = {OH, _}, + origin_realm = {OR, DR}} + = Caps, + + set(Req, [{'Session-Id', diameter:session_id(OH)}, + {'Origin-Host', OH}, + {'Origin-Realm', OR}, + {'Destination-Realm', DR}]); + +prepare(#diameter_packet{msg = Req}, Caps) + when is_record(Req, diameter_base_ASR); + 'ASR' == hd(Req) -> + #diameter_caps{origin_host = {OH, DH}, + origin_realm = {OR, DR}} + = Caps, + set(Req, [{'Session-Id', diameter:session_id(OH)}, + {'Origin-Host', OH}, + {'Origin-Realm', OR}, + {'Destination-Host', DH}, + {'Destination-Realm', DR}, + {'Auth-Application-Id', ?APP_ID}]); + +prepare(#diameter_packet{msg = Req}, Caps) + when is_record(Req, diameter_base_STR); + 'STR' == hd(Req) -> + #diameter_caps{origin_host = {OH, _}, + origin_realm = {OR, DR}} + = Caps, + set(Req, [{'Session-Id', diameter:session_id(OH)}, + {'Origin-Host', OH}, + {'Origin-Realm', OR}, + {'Destination-Realm', DR}, + {'Auth-Application-Id', ?APP_ID}]); + +prepare(#diameter_packet{msg = Req}, Caps) + when is_record(Req, diameter_base_RAR); + 'RAR' == hd(Req) -> + #diameter_caps{origin_host = {OH, DH}, + origin_realm = {OR, DR}} + = Caps, + set(Req, [{'Session-Id', diameter:session_id(OH)}, + {'Origin-Host', OH}, + {'Origin-Realm', OR}, + {'Destination-Host', DH}, + {'Destination-Realm', DR}, + {'Auth-Application-Id', ?APP_ID}]). + +%% prepare_retransmit/4 + +prepare_retransmit(_Pkt, false, _Peer, _Name) -> + discard. + +%% handle_answer/5/6 + +handle_answer(Pkt, Req, ?CLIENT, Peer, Name) -> + answer(Pkt, Req, Peer, Name). + +handle_answer(Pkt, _Req, ?CLIENT, _Peer, send_detach, {Pid, Ref}) -> + Pid ! {Ref, Pkt}. + +answer(#diameter_packet{msg = Rec, errors = []}, _Req, _Peer, _) -> + Rec. + +%% handle_error/5 + +handle_error(Reason, _Req, ?CLIENT, _Peer, _Name) -> + {error, Reason}. + +%% handle_request/3 + +%% Note that diameter will set Result-Code and Failed-AVPs if +%% #diameter_packet.errors is non-null. + +handle_request(Pkt, ?SERVER, {_Ref, Caps}) -> + request(Pkt, Caps). + +request(#diameter_packet{msg + = #diameter_base_ACR{'Session-Id' = SId, + 'Accounting-Record-Type' = RT, + 'Accounting-Record-Number' = RN}}, + #diameter_caps{origin_host = {OH, _}, + origin_realm = {OR, _}}) -> + {reply, ['ACA', {'Result-Code', ?SUCCESS}, + {'Session-Id', SId}, + {'Origin-Host', OH}, + {'Origin-Realm', OR}, + {'Accounting-Record-Type', RT}, + {'Accounting-Record-Number', RN}]}; + +request(#diameter_packet{msg = #diameter_base_ASR{'Session-Id' = SId, + 'AVP' = Avps}}, + #diameter_caps{origin_host = {OH, _}, + origin_realm = {OR, _}}) -> + {reply, #diameter_base_ASA{'Result-Code' = ?SUCCESS, + 'Session-Id' = SId, + 'Origin-Host' = OH, + 'Origin-Realm' = OR, + 'AVP' = Avps}}; + +request(#diameter_packet{msg = #diameter_base_STR{'Termination-Cause' = T}}, + _Caps) + when T /= ?LOGOUT -> + discard; + +request(#diameter_packet{msg = #diameter_base_STR{'Destination-Realm'= R}}, + #diameter_caps{origin_realm = {OR, _}}) + when R /= undefined, R /= OR -> + {protocol_error, ?REALM_NOT_SERVED}; + +request(#diameter_packet{msg = #diameter_base_STR{'Destination-Host'= [H]}}, + #diameter_caps{origin_host = {OH, _}}) + when H /= OH -> + {protocol_error, ?UNABLE_TO_DELIVER}; + +request(#diameter_packet{msg = #diameter_base_STR{'Session-Id' = SId}}, + #diameter_caps{origin_host = {OH, _}, + origin_realm = {OR, _}}) -> + {reply, #diameter_base_STA{'Result-Code' = ?SUCCESS, + 'Session-Id' = SId, + 'Origin-Host' = OH, + 'Origin-Realm' = OR}}; + +request(#diameter_packet{msg = #diameter_base_RAR{}}, _Caps) -> + receive after 2000 -> ok end, + {protocol_error, ?TOO_BUSY}. diff --git a/lib/diameter/test/diameter_transport_SUITE.erl b/lib/diameter/test/diameter_transport_SUITE.erl new file mode 100644 index 0000000000..d545859fe8 --- /dev/null +++ b/lib/diameter/test/diameter_transport_SUITE.erl @@ -0,0 +1,458 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests of diameter_tcp/sctp as implementations of the diameter +%% transport interface. +%% + +-module(diameter_transport_SUITE). + +-export([suite/0, + all/0, + groups/0, + init_per_group/2, + end_per_group/2, + init_per_suite/1, + end_per_suite/1]). + +%% testcases +-export([tcp_accept/1, + tcp_connect/1, + sctp_accept/1, + sctp_connect/1]). + +-export([accept/1, + connect/1, + init/2]). + +-include_lib("kernel/include/inet_sctp.hrl"). +-include_lib("diameter/include/diameter.hrl"). +-include("diameter_ct.hrl"). + +-define(util, diameter_util). + +%% Corresponding to diameter_* transport modules. +-define(TRANSPORTS, [tcp, sctp]). + +%% Receive a message. +-define(RECV(Pat, Ret), receive Pat -> Ret end). +-define(RECV(Pat), ?RECV(Pat, now())). + +%% Or not. +-define(WAIT(Ms), receive after Ms -> now() end). + +%% Sockets are opened on the loopback address. +-define(ADDR, {127,0,0,1}). + +%% diameter_tcp doesn't use anything but host_ip_address, and that +%% only is a local address isn't configured as at transport start. +-define(SVC(Addrs), #diameter_service{capabilities + = #diameter_caps{host_ip_address + = Addrs}}). + +%% The term diameter_tcp/sctp registers after opening a listening +%% socket. This is an implementation detail that should probably be +%% replaced by some documented way of getting at the port number of +%% the listening socket, which is what we're after since we specify +%% port 0 to get something unused. +-define(TCP_LISTENER(Ref, Addr, LSock), + {diameter_tcp, listener, {Ref, {Addr, LSock}}}). +-define(SCTP_LISTENER(Ref, Addr, LSock), + {diameter_sctp, listener, {Ref, {[Addr], LSock}}}). + +%% The term we register after open a listening port with gen_tcp. +-define(TEST_LISTENER(Ref, PortNr), + {?MODULE, listen, Ref, PortNr}). + +%% Message over the transport interface. +-define(TMSG(T), {diameter, T}). + +%% Options for gen_tcp/gen_sctp. +-define(TCP_OPTS, [binary, {active, true}, {packet, 0}]). +-define(SCTP_OPTS, [binary, {active, true}, {sctp_initmsg, ?SCTP_INIT}]). + +%% Request a specific number of streams just because we can. +-define(SCTP_INIT, #sctp_initmsg{num_ostreams = 5, + max_instreams = 5}). + +%% Messages from gen_sctp. +-define(SCTP(Sock, Data), {sctp, Sock, _, _, Data}). + +%% =========================================================================== + +suite() -> + [{timetrap, {minutes, 2}}]. + +all() -> + [{group, all} | tc()]. + +groups() -> + [{all, [parallel], tc()}]. + +tc() -> + [tcp_accept, + tcp_connect, + sctp_accept, + sctp_connect]. + +init_per_group(_, Config) -> + Config. + +end_per_group(_, _) -> + ok. + +init_per_suite(Config) -> + ok = diameter:start(), + [{sctp, have_sctp()} | Config]. + +end_per_suite(_Config) -> + ok = diameter:stop(). + +%% =========================================================================== +%% tcp_accept/1 +%% sctp_accept/1 +%% +%% diameter transport accepting, test code connecting. + +tcp_accept(_) -> + accept(tcp). + +sctp_accept(Config) -> + if_sctp(fun accept/1, Config). + +%% Start multiple accepting transport processes that are connected to +%% with an equal number of connecting processes using gen_tcp/sctp +%% directly. + +-define(PEER_COUNT, 8). + +accept(Prot) -> + T = {Prot, make_ref()}, + [] = ?util:run(?util:scramble(acc(2*?PEER_COUNT, T, []))). + +acc(0, _, Acc) -> + Acc; +acc(N, T, Acc) -> + acc(N-1, T, [{?MODULE, [init, + element(1 + N rem 2, {accept, gen_connect}), + T]} + | Acc]). + +%% =========================================================================== +%% tcp_connect/1 +%% sctp_connect/1 +%% +%% Test code accepting, diameter transport connecting. + +tcp_connect(_) -> + connect(tcp). + +sctp_connect(Config) -> + if_sctp(fun connect/1, Config). + +connect(Prot) -> + T = {Prot, make_ref()}, + [] = ?util:run([{?MODULE, [init, X, T]} || X <- [gen_accept, connect]]). + +%% =========================================================================== +%% =========================================================================== + +%% have_sctp/0 + +have_sctp() -> + try gen_sctp:open() of + {ok, Sock} -> + gen_sctp:close(Sock), + true + catch + error: badarg -> + false + end. + +%% if_sctp/2 + +if_sctp(F, Config) -> + case proplists:get_value(sctp, Config) of + true -> + F(sctp); + false -> + {skip, no_sctp} + end. + +%% init/2 + +init(accept, {Prot, Ref}) -> + %% Start an accepting transport and receive notification of a + %% connection. + TPid = start_accept(Prot, Ref), + + %% Receive a message and send it back. + <<_:8, Len:24, _/binary>> = Bin = bin(Prot, ?RECV(?TMSG({recv, P}), P)), + + Len = size(Bin), + TPid ! ?TMSG({send, Bin}), + + %% Expect the transport process to die as a result of the peer + %% closing the connection. + MRef = erlang:monitor(process, TPid), + ?RECV({'DOWN', MRef, process, _, _}); + +init(gen_connect, {Prot, Ref}) -> + %% Lookup the peer's listening socket. + {ok, PortNr} = inet:port(lsock(Prot, Ref)), + + %% Connect, send a message and receive it back. + {ok, Sock} = gen_connect(Prot, PortNr, Ref), + Bin = make_msg(), + ok = gen_send(Prot, Sock, Bin), + Bin = gen_recv(Prot, Sock); + +init(gen_accept, {Prot, Ref}) -> + %% Open a listening socket and publish the port number. + {ok, LSock} = gen_listen(Prot), + {ok, PortNr} = inet:port(LSock), + true = diameter_reg:add_new(?TEST_LISTENER(Ref, PortNr)), + + %% Accept a connection, receive a message and send it back. + {ok, Sock} = gen_accept(Prot, LSock), + Bin = gen_recv(Prot, Sock), + ok = gen_send(Prot, Sock, Bin); + +init(connect, {Prot, Ref}) -> + %% Lookup the peer's listening socket. + [{?TEST_LISTENER(_, PortNr), _}] = match(?TEST_LISTENER(Ref, '_')), + + %% Start a connecting transport and receive notification of + %% the connection. + TPid = start_connect(Prot, PortNr, Ref), + + %% Send a message and receive it back. + Bin = make_msg(), + TPid ! ?TMSG({send, Bin}), + Bin = bin(Prot, ?RECV(?TMSG({recv, P}), P)), + + %% Expect the transport process to die as a result of the peer + %% closing the connection. + MRef = erlang:monitor(process, TPid), + ?RECV({'DOWN', MRef, process, _, _}). + +lsock(sctp, Ref) -> + [{?SCTP_LISTENER(_ , _, LSock), _}] + = match(?SCTP_LISTENER(Ref, ?ADDR, '_')), + LSock; +lsock(tcp, Ref) -> + [{?TCP_LISTENER(_ , _, LSock), _}] + = match(?TCP_LISTENER(Ref, ?ADDR, '_')), + LSock. + +match(Pat) -> + case diameter_reg:match(Pat) of + [] -> + ?WAIT(50), + match(Pat); + L -> + L + end. + +bin(sctp, #diameter_packet{bin = Bin}) -> + Bin; +bin(tcp, Bin) -> + Bin. + +%% make_msg/0 +%% +%% A valid Diameter message in as far as diameter_tcp examines it, +%% the module examining the length in the Diameter header to locate +%% message boundaries. + +make_msg() -> + N = 1024, + Bin = rand_bytes(4*N), + Len = 4*(N+1), + <<1:8, Len:24, Bin/binary>>. + +%% crypto:rand_bytes/1 isn't available on all platforms (since openssl +%% isn't) so roll our own. +rand_bytes(N) -> + random:seed(now()), + rand_bytes(N, <<>>). + +rand_bytes(0, Bin) -> + Bin; +rand_bytes(N, Bin) -> + Oct = random:uniform(256) - 1, + rand_bytes(N-1, <<Oct, Bin/binary>>). + +%% =========================================================================== + +%% start_connect/3 + +start_connect(Prot, PortNr, Ref) -> + {ok, TPid, [?ADDR]} = start_connect(Prot, + {connect, Ref}, + ?SVC([]), + [{raddr, ?ADDR}, + {rport, PortNr}, + {ip, ?ADDR}, + {port, 0}]), + ?RECV(?TMSG({TPid, connected, _})), + TPid. + +start_connect(sctp, T, Svc, Opts) -> + diameter_sctp:start(T, Svc, [{sctp_initmsg, ?SCTP_INIT} | Opts]); +start_connect(tcp, T, Svc, Opts) -> + diameter_tcp:start(T, Svc, Opts). + +%% start_accept/2 +%% +%% Start transports sequentially by having each wait for a message +%% from a job in a queue before commencing. Only one transport with +%% a pending accept is started at a time since diameter_sctp currently +%% assumes (and diameter currently implements) this. + +start_accept(Prot, Ref) -> + Pid = sync(accept, Ref), + + %% Configure the same port number for transports on the same + %% reference. + PortNr = portnr(Prot, Ref), + {Mod, Opts} = tmod(Prot), + + try + {ok, TPid, [?ADDR]} = Mod:start({accept, Ref}, + ?SVC([?ADDR]), + [{port, PortNr} | Opts]), + ?RECV(?TMSG({TPid, connected})), + TPid + after + Pid ! Ref + end. + +sync(What, Ref) -> + ok = diameter_sync:cast({?MODULE, What, Ref}, + [fun lock/2, Ref, self()], + infinity, + infinity), + receive {start, Ref, Pid} -> Pid end. + +lock(Ref, Pid) -> + Pid ! {start, Ref, self()}, + erlang:monitor(process, Pid), + Ref = receive T -> T end. + +tmod(sctp) -> + {diameter_sctp, [{sctp_initmsg, ?SCTP_INIT}]}; +tmod(tcp) -> + {diameter_tcp, []}. + +portnr(sctp, Ref) -> + case diameter_reg:match(?SCTP_LISTENER(Ref, ?ADDR, '_')) of + [{?SCTP_LISTENER(_, _, LSock), _}] -> + {ok, N} = inet:port(LSock), + N; + [] -> + 0 + end; +portnr(tcp, Ref) -> + case diameter_reg:match(?TCP_LISTENER(Ref, ?ADDR, '_')) of + [{?TCP_LISTENER(_, _, LSock), _}] -> + {ok, N} = inet:port(LSock), + N; + [] -> + 0 + end. + +%% =========================================================================== + +%% gen_connect/3 + +gen_connect(Prot, PortNr, Ref) -> + Pid = sync(connect, Ref), + + %% Stagger connect attempts to avoid the situation that no + %% transport process is accepting yet. + receive after 250 -> ok end, + + try + gen_connect(Prot, PortNr) + after + Pid ! Ref + end. + +gen_connect(sctp = P, PortNr) -> + {ok, Sock} = Ok = gen_sctp:open([{ip, ?ADDR}, {port, 0} | ?SCTP_OPTS]), + ok = gen_sctp:connect_init(Sock, ?ADDR, PortNr, []), + Ok = gen_accept(P, Sock); +gen_connect(tcp, PortNr) -> + gen_tcp:connect(?ADDR, PortNr, ?TCP_OPTS). + +%% gen_listen/1 + +gen_listen(sctp) -> + {ok, Sock} = gen_sctp:open([{ip, ?ADDR}, {port, 0} | ?SCTP_OPTS]), + {gen_sctp:listen(Sock, true), Sock}; +gen_listen(tcp) -> + gen_tcp:listen(0, [{ip, ?ADDR} | ?TCP_OPTS]). + +%% gen_accept/2 + +gen_accept(sctp, Sock) -> + Assoc = ?RECV(?SCTP(Sock, {_, #sctp_assoc_change{state = comm_up, + outbound_streams = O, + inbound_streams = I, + assoc_id = A}}), + {O, I, A}), + putr(assoc, Assoc), + {ok, Sock}; +gen_accept(tcp, LSock) -> + gen_tcp:accept(LSock). + +%% gen_send/3 + +gen_send(sctp, Sock, Bin) -> + {OS, _IS, Id} = getr(assoc), + {_, _, Us} = now(), + gen_sctp:send(Sock, Id, Us rem OS, Bin); +gen_send(tcp, Sock, Bin) -> + gen_tcp:send(Sock, Bin). + +%% gen_recv/2 + +gen_recv(sctp, Sock) -> + {_OS, _IS, Id} = getr(assoc), + ?RECV(?SCTP(Sock, {[#sctp_sndrcvinfo{assoc_id = Id}], Bin}), Bin); +gen_recv(tcp, Sock) -> + tcp_recv(Sock, <<>>). + +tcp_recv(_, <<_:8, Len:24, _/binary>> = Bin) + when Len =< size(Bin) -> + Bin; +tcp_recv(Sock, B) -> + receive {tcp, Sock, Bin} -> tcp_recv(Sock, <<B/binary, Bin/binary>>) end. + +%% putr/2 + +putr(Key, Val) -> + put({?MODULE, Key}, Val). + +%% getr/1 + +getr(Key) -> + get({?MODULE, Key}). diff --git a/lib/diameter/test/diameter_util.erl b/lib/diameter/test/diameter_util.erl new file mode 100644 index 0000000000..99f4fa1977 --- /dev/null +++ b/lib/diameter/test/diameter_util.erl @@ -0,0 +1,177 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +-module(diameter_util). + +%% +%% Utility functions. +%% + +-export([consult/2, + run/1, + fold/3, + foldl/3, + scramble/1, + ps/0]). + +-define(L, atom_to_list). + +%% consult/2 +%% +%% Extract info from the app/appup file (presumably) of the named +%% application. + +consult(Name, Suf) + when is_atom(Name), is_atom(Suf) -> + case code:lib_dir(Name, ebin) of + {error = E, Reason} -> + {E, {Name, Reason}}; + Dir -> + consult(filename:join([Dir, ?L(Name) ++ "." ++ ?L(Suf)])) + end. + +consult(Path) -> + case file:consult(Path) of + {ok, Terms} -> + Terms; + {error, Reason} -> + {error, {Path, Reason}} + end. +%% Name/Path in the return value distinguish the errors and allow for +%% a useful badmatch. + +%% run/1 +%% +%% Evaluate functions in parallel and return a list of those that +%% failed to return. The fun takes a boolean (did the function return +%% or not), the function that was evaluated, the return value or exit +%% reason and the prevailing accumulator. + +run(L) -> + fold(fun cons/4, [], L). + +cons(true, _, _, Acc) -> + Acc; +cons(false, F, RC, Acc) -> + [{F, RC} | Acc]. + +%% fold/3 +%% +%% Parallel fold. Results are folded in the order received. + +fold(Fun, Acc0, L) + when is_function(Fun, 4) -> + Ref = make_ref(), + %% Spawn a middleman to collect down messages from processes + %% spawned for each function so as not to assume that all DOWN + %% messages are ours. + MRef = run1([fun fold/4, Ref, Fun, Acc0, L], Ref), + {Ref, RC} = down(MRef), + RC. + +fold(Ref, Fun, Acc0, L) -> + recv(run(Ref, L), Ref, Fun, Acc0). + +run(Ref, L) -> + [{run1(F, Ref), F} || F <- L]. + +run1(F, Ref) -> + {_, MRef} = spawn_monitor(fun() -> exit({Ref, eval(F)}) end), + MRef. + +recv([], _, _, Acc) -> + Acc; +recv(L, Ref, Fun, Acc) -> + {MRef, R} = down(), + {MRef, F} = lists:keyfind(MRef, 1, L), + recv(lists:keydelete(MRef, 1, L), + Ref, + Fun, + acc(R, Ref, F, Fun, Acc)). + +acc({Ref, RC}, Ref, F, Fun, Acc) -> + Fun(true, F, RC, Acc); +acc(Reason, _, F, Fun, Acc) -> + Fun(false, F, Reason, Acc). + +down(MRef) -> + receive {'DOWN', MRef, process, _, Reason} -> Reason end. + +down() -> + receive {'DOWN', MRef, process, _, Reason} -> {MRef, Reason} end. + +%% foldl/3 +%% +%% Parallel fold. Results are folded in order of the function list. + +foldl(Fun, Acc0, L) + when is_function(Fun, 4) -> + Ref = make_ref(), + recvl(run(Ref, L), Ref, Fun, Acc0). + +recvl([], _, _, Acc) -> + Acc; +recvl([{MRef, F} | L], Ref, Fun, Acc) -> + R = down(MRef), + recvl(L, Ref, Fun, acc(R, Ref, F, Fun, Acc)). + +%% scramble/1 +%% +%% Sort a list into random order. + +scramble(L) -> + foldl(fun(true, _, S, false) -> S end, + false, + [[fun s/1, L]]). + +s(L) -> + random:seed(now()), + s([], L). + +s(Acc, []) -> + Acc; +s(Acc, L) -> + {H, [T|Rest]} = lists:split(random:uniform(length(L)) - 1, L), + s([T|Acc], H ++ Rest). + +%% ps/0 + +ps() -> + [{P, process_info(P)} || P <- erlang:processes()]. + +%% eval/1 + +eval({M,[F|A]}) + when is_atom(F) -> + apply(M,F,A); + +eval({M,F,A}) -> + apply(M,F,A); + +eval([F|A]) + when is_function(F) -> + apply(F,A); + +eval(L) + when is_list(L) -> + run(L); + +eval(F) + when is_function(F,0) -> + F(). diff --git a/lib/diameter/test/diameter_watchdog_SUITE.erl b/lib/diameter/test/diameter_watchdog_SUITE.erl new file mode 100644 index 0000000000..dec307529a --- /dev/null +++ b/lib/diameter/test/diameter_watchdog_SUITE.erl @@ -0,0 +1,540 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Tests of the RFC3539 watchdog state machine as implemented by +%% module diameter_watchdog. +%% + +-module(diameter_watchdog_SUITE). + +-export([suite/0, + all/0, + init_per_suite/1, + end_per_suite/1]). + +%% testcases +-export([reopen/1, reopen/4]). + +-export([start/3, %% diameter_transport callback + id/1, %% jitter callback + run/1]). + +-include_lib("diameter/include/diameter.hrl"). +-include("diameter_ct.hrl"). + +%% =========================================================================== + +-define(util, diameter_util). + +-define(BASE, diameter_gen_base_rfc3588). +-define(APPL_ID, diameter_gen_base_rfc3588:id()). +-define(SUCCESS, 2001). %% DIAMETER_SUCCESS + +%% Addresses for the local and remote diameter nodes. The values don't +%% matter since we're faking transport. +-define(LOCALHOST, {127,0,0,1}). +-define(REMOTEHOST, {10,0,0,1}). + +-define(CAPS, #diameter_caps{origin_host = "node.innan.com", + origin_realm = "innan.com", + host_ip_address = [?LOCALHOST], + vendor_id = 1022, + product_name = "remote", + auth_application_id = [?APPL_ID]}). + +-define(APPL, #diameter_app{alias = ?MODULE, + dictionary = ?BASE, + module = [?MODULE], + init_state = now(), + id = ?APPL_ID, + mutable = false}). + +%% Service record maintained by our faked service process. +-define(SERVICE, #diameter_service{pid = self(), + capabilities = ?CAPS, + applications = [?APPL]}). + +%% Watchdog timer as a callback. +-define(WD(T), {?MODULE, id, [T]}). + +%% Watchdog timers used by the testcases. Note that the short timeout +%% with random jitter is excluded since the reopen/1 isn't smart +%% enough to deal with it: see ONE_WD below. +-define(WD_TIMERS, [?WD(6000) + | [F_(T_) || T_ <- [10000, 20000, 30000], + F_ <- [fun(T__) -> T__ end, + fun(T__) -> ?WD(T__) end]]]). + +%% Transport types. +-define(TRANSPORTS, [connect, accept]). + +%% Message over the transport interface. +-define(TMSG(T), {diameter, T}). + +%% Receive a message within a specified time. +-define(RECV(T, Timeout), + receive T -> now() + after Timeout -> ?ERROR({timeout, Timeout}) + end). + +%% Receive a message in a given number of watchdogs, plus or minus +%% half. Note that the call to now_diff assumes left to right +%% evaluation order. +-define(RECV(T, N, WdL, WdH), + [?ERROR({received, _Elapsed_, _LowerBound_, N, WdL}) + || _UpperBound_ <- [(N)*(WdH) + (WdH) div 2], + _Elapsed_ <- [now_diff(now(), ?RECV(T, _UpperBound_))], + _LowerBound_ <- [(N)*(WdL) - (WdL) div 2], + _Elapsed_ =< _LowerBound_*1000]). + +%% A timeout that ensures one watchdog. The ensure only one watchdog +%% requires (Wd + 2000) + 1000 < 2*(Wd - 2000) ==> 7000 < Wd for the +%% case with random jitter. +-define(ONE_WD(Wd), jitter(Wd,2000) + 1000). + +%% =========================================================================== + +suite() -> + [{timetrap, {minutes, 6}}].%% enough for 11 watchdogs @ 30 sec plus jitter + +all() -> + [reopen]. + +init_per_suite(Config) -> + ok = diameter:start(), + Config. + +end_per_suite(_Config) -> + ok = diameter:stop(). + +%% =========================================================================== +%% # reopen/1 +%% =========================================================================== + +%% Test the watchdog state machine for the required failover, failback +%% and reopen behaviour. Do this by having the testcase replace +%% diameter_service and start watchdogs, and having this module +%% implement a transport process that plays the role of the peer +%% Diameter node. + +reopen(_) -> + [] = ?util:run([{?MODULE, [run, [reopen, Wd, T, N, M]]} + || Wd <- ?WD_TIMERS, + T <- ?TRANSPORTS, + N <- [0,1,2], + M <- ['DWR', 'DWA', other]]). + +reopen(Wd, Type, N, What) -> + Ref = make_ref(), + + %% The maker of transport processes. + TPid = start({N, Wd, What, Ref}), + + %% Act like diameter_service and start the watchdog process, which + %% in turn starts a peer_fsm process, which in turn starts a + %% transport process by way of start/3. Messages received by the + %% testcase are those sent by diameter_watchdog to the service + %% process (= process starting the watchdog). + WPid1 = watchdog(Type, Ref, TPid, Wd), + + %% Low/high watchdog timeouts. + WdL = jitter(Wd, -2000), + WdH = jitter(Wd, 2000), + + %% Connection should come up immediately as a consequence of + %% starting the watchdog process. In the accepting case this + %% results in a new watchdog on a transport waiting for a new + %% connection. + ?RECV({connection_up, WPid1, _}, 1000), + + WPid2 = case Type of + connect -> + WPid1; + accept -> + watchdog(Type, Ref, TPid, Wd) + end, + + %% OKAY Timer expires & Failover() + %% Pending SetWatchdog() SUSPECT + %% + %% Since our transport is replying to N DWR's before becoming + %% silent, we should go down after N+2 watchdog_timer expirations: + %% that is, after the first unanswered DWR. Knowing the min/max + %% watchdog timeout values gives the time interval in which the + %% down message is expected. + ?RECV({connection_down, WPid1}, N+2, WdL, WdH), + + %% SUSPECT Receive DWA Pending = FALSE + %% Failback() + %% SetWatchdog() OKAY + %% + %% SUSPECT Receive non-DWA Failback() + %% SetWatchdog() OKAY + %% + %% The transport receives a message before the expiry of another + %% watchdog to induce failback. + ?RECV({connection_up, WPid1}, WdH), + + %% OKAY Timer expires & SendWatchdog() + %% !Pending SetWatchdog() + %% Pending = TRUE OKAY + %% + %% OKAY Timer expires & Failover() + %% Pending SetWatchdog() SUSPECT + %% + %% The transport is still not responding to watchdogs so the + %% connection should go back down after either one or two watchdog + %% expiries, depending on whether or not DWA restored the connection. + F = choose(What == 'DWA', 2, 1), + ?RECV({connection_down, WPid1}, F, WdL, WdH), + + %% SUSPECT Timer expires CloseConnection() + %% SetWatchdog() DOWN + %% + %% DOWN Timer expires AttemptOpen() + %% SetWatchdog() DOWN + %% + %% Our transport tells us when the fake connection is + %% reestablished, which should happen after another couple of + %% watchdog expiries, the first bringing the watchdog to state + %% DOWN, the second triggering an attempt to reopen the + %% connection. + ?RECV({reopen, Ref}, 2, WdL, WdH), + + %% DOWN Connection up NumDWA = 0 + %% SendWatchdog() + %% SetWatchdog() + %% Pending = TRUE REOPEN + %% + %% REOPEN Receive DWA & Pending = FALSE + %% NumDWA < 2 NumDWA++ REOPEN + %% + %% REOPEN Receive DWA & Pending = FALSE + %% NumDWA == 2 NumDWA++ + %% Failback() OKAY + %% + %% Now the watchdog should require three received DWA's before + %% taking the connection back up. The first DWR is sent directly + %% after capabilities exchange so it should take no more than two + %% watchdog expiries. + ?RECV({connection_up, WPid2, _}, 2, WdL, WdH). + +%% =========================================================================== + +%% Start the fake transport process. From diameter's point of view +%% it's started when diameter calls start/3. We start it before this +%% happens since we use the same fake transport each time diameter +%% calls start/3. The process lives and dies with the test case. +start(Config) -> + Pid = self(), + spawn(fun() -> loop(init(Pid, Config)) end). + +%% Transport start from diameter. This may be called multiple times +%% depending on the testcase. +start({Type, _Ref}, #diameter_service{}, Pid) -> + Ref = make_ref(), + MRef = erlang:monitor(process, Pid), + Pid ! {start, self(), Type, Ref}, + {Ref, TPid} = receive + {Ref, _} = T -> + T; + {'DOWN', MRef, process, _, _} = T -> + T + end, + erlang:demonitor(MRef, [flush]), + {ok, TPid}. + +%% id/1 + +id(T) -> + T. + +%% =========================================================================== + +choose(true, X, _) -> X; +choose(false, _, X) -> X. + +%% run/1 +%% +%% A more useful badmatch in case of failure. + +run([F|A]) -> + ok = try + apply(?MODULE, F, A), + ok + catch + E:R -> + {A, E, R, erlang:get_stacktrace()} + end. + +%% now_diff/2 + +now_diff(T1, T2) -> + timer:now_diff(T2, T1). + +%% jitter/2 + +jitter(?WD(T), _) -> + T; +jitter(T,D) -> + T+D. + +%% watchdog/4 +%% +%% Fake the call from diameter_service. The watchdog process will send +%% messages to the calling "service" process so our tests are that the +%% watchdog responds as expected. + +watchdog(Type, Ref, TPid, Wd) -> + Opts = [{transport_module, ?MODULE}, + {transport_config, TPid}, + {watchdog_timer, Wd}], + monitor(diameter_watchdog:start({Type, Ref}, + {false, Opts, false, ?SERVICE})). + +monitor(Pid) -> + erlang:monitor(process, Pid), + Pid. + +%% =========================================================================== + +%% Transport process implmentation. Fakes reception of messages by +%% sending fakes to the parent (peer fsm) process that called start/3. + +-record(transport, + {type, %% connect | accept | manager + parent, %% pid() of peer_fsm/ervice process + open = false, %% done with capabilities exchange? + config}).%% testcase-specific config + +%% init/2 + +%% Testcase starting the manager. +init(SvcPid, {_,_,_,_} = Config) -> + putr(peer, [{'Origin-Host', hostname() ++ ".utan.com"}, + {'Origin-Realm', "utan.com"}]), + #transport{type = manager, + parent = monitor(SvcPid), + config = Config}; + +%% Manager starting a transport. +init(_, {Type, ParentPid, SvcPid, TwinPid, Peer, {N,_,_,_} = Config}) -> + putr(peer, Peer), + putr(service, SvcPid), + putr(count, init(Type, ParentPid, TwinPid, N)),%% number of DWR's to answer + #transport{type = Type, + parent = monitor(ParentPid), + config = Config}. + +init(Type, ParentPid, undefined, N) -> + connected(ParentPid, Type), + N; +init(_, _, TPid, _) -> + monitor(TPid), + 3. + +%% Generate a unique hostname for the faked peer. +hostname() -> + lists:flatten(io_lib:format("~p-~p-~p", tuple_to_list(now()))). + +%% loop/1 + +loop(S) -> + loop(msg(receive T -> T end, S)). + +msg(T,S) -> + case transition(T,S) of + ok -> + S; + #transport{} = NS -> + NS; + {stop, Reason} -> + x(Reason) + end. + +x(Reason) -> + exit(Reason). + +%% transition/2 + +%% Manager is being asked for a new transport process. +transition({start, Pid, Type, Ref}, #transport{type = manager, + parent = SvcPid, + config = Config}) -> + TPid = start({Type, Pid, SvcPid, getr(transport), getr(peer), Config}), + Pid ! {Ref, TPid}, + putr(transport, TPid), + ok; + +%% Peer fsm or testcase process has died. +transition({'DOWN', _, process, Pid, _} = T, #transport{parent = Pid}) -> + {stop, T}; + +%% Twin transport process has gone down. In the connect case, the +%% transport isn't started until this happens in the first place so +%% connect immediately. In the accept case, fake the peer reconnecting +%% only after another watchdog expiry. +transition({'DOWN', _, process, _, _}, #transport{type = Type, + config = {_, Wd, _, _}}) -> + Tmo = case Type of + connect -> + 0; + accept -> + ?ONE_WD(Wd) + end, + erlang:send_after(Tmo, self(), reconnect), + ok; + +transition(reconnect, #transport{type = Type, + parent = Pid, + config = {_,_,_,Ref}}) -> + getr(service) ! {reopen, Ref}, + connected(Pid, Type), + ok; + +%% Peer fsm process is sending CER: fake the peer's CEA. +transition(?TMSG({send, Bin}), #transport{type = connect, + open = false, + parent = Pid} + = S) -> + {Code, Flags, _} = ?BASE:msg_header('CER'), + <<_:32, Flags:8, Code:24, _:96, _/binary>> = Bin, + Hdr = make_header(Bin), + recv(Pid, {Hdr, make_cea()}), + S#transport{open = true}; + +%% Peer fsm process is sending CEA. +transition(?TMSG({send, Bin}), #transport{type = accept, + open = false} + = S) -> + {Code, Flags, _} = ?BASE:msg_header('CEA'), + <<_:32, Flags:8, Code:24, _:96, _/binary>> = Bin, + S#transport{open = true}; + +%% Watchdog is sending DWR or DWA. +transition(?TMSG({send, Bin}), #transport{open = true} = S) -> + {Code, _, _} = ?BASE:msg_header('DWR'), + {Code, _, _} = ?BASE:msg_header('DWA'), + <<_:32, R:1, 0:7, Code:24, _:96, _/binary>> = Bin, + Hdr = make_header(Bin), + dwa(1 == R, S, Hdr), + ok; + +%% We're telling ourselves to fake a received message. +transition({recv, Msg}, #transport{parent = Pid}) -> + recv(Pid, Msg), + ok; + +%% We're telling ourselves to receive a message to induce failback. +transition(failback = T, #transport{parent = Pid}) -> + recv(Pid, eraser(T)), + ok. + +make_header(Bin) -> + #diameter_header{end_to_end_id = E, + hop_by_hop_id = H} + = diameter_codec:decode_header(Bin), + #diameter_header{end_to_end_id = E, + hop_by_hop_id = H}. + +recv(Pid, Msg) -> + Pid ! ?TMSG({recv, encode(Msg)}). + +%% Replace the end-to-end/hop-by-hop identifiers with those from an +%% incoming request to which we're constructing a reply. +encode({Hdr, [_|_] = Msg}) -> + #diameter_header{hop_by_hop_id = HBH, + end_to_end_id = E2E} + = Hdr, + #diameter_packet{bin = Bin} = diameter_codec:encode(?BASE, Msg), + <<H:12/binary, _:64, T/binary>> = Bin, + <<H/binary, HBH:32, E2E:32, T/binary>>; + +encode([_|_] = Msg) -> + #diameter_packet{bin = Bin} = diameter_codec:encode(?BASE, Msg), + Bin. + +connected(Pid, connect) -> + Pid ! ?TMSG({self(), connected, make_ref()}); +connected(Pid, accept) -> + Pid ! ?TMSG({self(), connected}), + recv(Pid, make_cer()). + +make_cer() -> + ['CER' | getr(peer)] ++ [{'Host-IP-Address', [?REMOTEHOST]}, + {'Vendor-Id', 1028}, + {'Product-Name', "Utan"}, + {'Auth-Application-Id', [?APPL_ID]}]. + +make_cea() -> + ['CER' | Rest] = make_cer(), + ['CEA', {'Result-Code', ?SUCCESS} | Rest]. + +make_dwr() -> + ['DWR' | getr(peer)]. + +make_dwa() -> + ['DWR' | Rest] = make_dwr(), + ['DWA', {'Result-Code', ?SUCCESS} | Rest]. + +dwa(false, _, _) -> %% outgoing was DWA ... + ok; +dwa(true, S, Hdr) -> %% ... or DWR + dwa(getr(count), Hdr, S); + +%% React to the DWR only after another watchdog expiry. We shouldn't +%% get another DWR while the answer is pending. +dwa(0, Hdr, #transport{config = {_, Wd, What, _}}) -> + erlang:send_after(?ONE_WD(Wd), self(), failback), + putr(failback, make_msg(What, Hdr)), + eraser(count); + +dwa(undefined, _, _) -> + undefined = getr(failback), %% ensure this is after failback + ok; + +%% Reply with DWA. +dwa(N, Hdr, #transport{parent = Pid}) -> + putr(count, N-1), + recv(Pid, {Hdr, make_dwa()}). + +%% Answer to received DWR. +make_msg('DWA', Hdr) -> + {Hdr, make_dwa()}; + +%% DWR from peer. +make_msg('DWR', _) -> + make_dwr(); + +%% An unexpected answer is discarded after passing through the +%% watchdog state machine. +make_msg(other, _) -> + ['RAA', {'Session-Id', diameter:session_id("abc")}, + {'Result-Code', 2001} + | getr(peer)]. + +putr(Key, Val) -> + put({?MODULE, Key}, Val). + +getr(Key) -> + get({?MODULE, Key}). + +eraser(Key) -> + erase({?MODULE, Key}). diff --git a/lib/diameter/test/modules.mk b/lib/diameter/test/modules.mk index ddc720d0c1..c6f709dc36 100644 --- a/lib/diameter/test/modules.mk +++ b/lib/diameter/test/modules.mk @@ -17,31 +17,24 @@ # # %CopyrightEnd% -TEST_SPEC_FILE = diameter.spec - +TEST_SPEC_FILE = diameter.spec COVER_SPEC_FILE = diameter.cover -BEHAVIOUR_MODULES = - MODULES = \ - $(BEHAVIOUR_MODULES) \ - diameter_SUITE \ - diameter_app_test \ - diameter_appup_test \ - diameter_compiler_test \ - diameter_config_test \ - diameter_peer_test \ - diameter_reg_test \ - diameter_session_test \ - diameter_stats_test \ - diameter_sync_test \ - diameter_tcp_test \ - diameter_test_lib \ - diameter_test_server - + diameter_ct \ + diameter_util \ + diameter_enum \ + diameter_codec_SUITE \ + diameter_codec_test \ + diameter_app_SUITE \ + diameter_dict_SUITE \ + diameter_reg_SUITE \ + diameter_sync_SUITE \ + diameter_stats_SUITE \ + diameter_watchdog_SUITE \ + diameter_transport_SUITE \ + diameter_traffic_SUITE \ + diameter_relay_SUITE INTERNAL_HRL_FILES = \ - diameter_test_lib.hrl - - - + diameter_ct.hrl diff --git a/lib/diameter/test/slask/diameter_persistent_table_test.erl b/lib/diameter/test/slask/diameter_persistent_table_test.erl deleted file mode 100644 index bb907a5777..0000000000 --- a/lib/diameter/test/slask/diameter_persistent_table_test.erl +++ /dev/null @@ -1,495 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the persistent-table component of the Diameter application -%%---------------------------------------------------------------------- -%% --module(diameter_persistent_table_test). - --export([ - init_per_testcase/2, fin_per_testcase/2, - - all/1, - suite_init/1, suite_fin/1, - - simple_start_and_stop/1, - table_create_and_delete/1 - - ]). - --export([t/0, t/1]). - --include("diameter_test_lib.hrl"). - --record(command, {id, desc, cmd, verify}). - - -t() -> diameter_test_server:t(?MODULE). -t(Case) -> diameter_test_server:t({?MODULE, Case}). - - -%% Test server callbacks -init_per_testcase(Case, Config) -> - diameter_test_server:init_per_testcase(Case, Config). - -fin_per_testcase(Case, Config) -> - diameter_test_server:fin_per_testcase(Case, Config). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all(suite) -> - Cases = - [ - simple_start_and_stop, - table_create_and_delete - ], - {req, [], {conf, suite_init, Cases, suite_fin}}. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -suite_init(suite) -> []; -suite_init(doc) -> []; -suite_init(Config) when is_list(Config) -> - Config. - - -suite_fin(suite) -> []; -suite_fin(doc) -> []; -suite_fin(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Test case(s) -%% - -simple_start_and_stop(suite) -> - []; -simple_start_and_stop(doc) -> - []; -simple_start_and_stop(Config) when is_list(Config) -> - diameter:enable_trace(100, io), - case diameter_persistent_table:start_link() of - {ok, Pid} -> - unlink(Pid); - {error, Reason} -> - exit({failed_starting, Reason}) - end, - - ok = diameter_persistent_table:stop(), - ok. - - -table_create_and_delete(suite) -> - []; -table_create_and_delete(doc) -> - []; -table_create_and_delete(Config) when is_list(Config) -> - process_flag(trap_exit, true), - - %% Command range values - Initial = 100, - ClientCreation = 200, - Nice = 300, - Evil = 400, - End = 500, - - Verbosity = min, - %% Verbosity = max, - - Data01 = lists:sort([{a, 10}, {b, 20}, {c, 30}]), - Data02 = lists:sort([{x, 100}, {y, 200}, {z, 300}]), - - Commands = - [ - %% Initial commands - initial_command( Initial + 0, - "enable trace", - fun() -> diameter:enable_trace(Verbosity, io) end, - ok), - initial_command( Initial + 1, - "start persistent-table process", - fun() -> - case diameter_persistent_table:start_link() of - {ok, Pid} when is_pid(Pid) -> - ok; - Error -> - Error - end - end, - ok), - - client_create_command( ClientCreation + 1, - "1", - client01), - - client_create_command( ClientCreation + 2, - "2", - client02), - - nice_command( Nice + 1, - "client 1 create table 1", - fun() -> - create_table(client01, tab01, []), - diameter_persistent_table:which_tables() - end, - fun([tab01] = Tabs) -> - {ok, Tabs}; - (Unexpected) -> - {error, {bad_tables, Unexpected}} - end), - - nice_command( Nice + 2, - "client 1 create table 2", - fun() -> - create_table(client01, tab02, []), - diameter_persistent_table:which_tables() - end, - fun([tab01, tab02] = Tabs) -> - {ok, Tabs}; - ([tab02, tab01] = Tabs) -> - {ok, Tabs}; - (Unexpected) -> - {error, {bad_tables, Unexpected}} - end), - - nice_command( Nice + 3, - "client 2 create table 1", - fun() -> - create_table(client02, tab03, []), - diameter_persistent_table:which_tables(whereis(client02)) - end, - fun([tab03] = Tabs) -> - {ok, Tabs}; - (Unexpected) -> - {error, {bad_tables, Unexpected}} - end), - - nice_command( Nice + 4, - "client 1 delete table 1", - fun() -> - delete_table(client01, tab01), - diameter_persistent_table:which_tables(whereis(client01)) - end, - fun([tab02] = Tabs) -> - {ok, Tabs}; - (Unexpected) -> - {error, {bad_tables, Unexpected}} - end), - - nice_command( Nice + 5, - "client 1 fill in some data in tab02", - fun() -> - populate_table(client01, tab02, Data01), - lists:sort(ets:tab2list(tab02)) - end, - fun(Data) when Data =:= Data01 -> - {ok, Data}; - (Unexpected) -> - {error, {bad_data, Unexpected}} - end), - - nice_command( Nice + 6, - "client 2 fill in some data in tab03", - fun() -> - populate_table(client02, tab03, Data02), - lists:sort(ets:tab2list(tab03)) - end, - fun(Data) when Data =:= Data02 -> - {ok, Data}; - (Unexpected) -> - {error, {bad_data, Unexpected}} - end), - - nice_command( Nice + 7, - "simulate client 1 crash", - fun() -> - simulate_crash(client01) - end, - fun(ok) -> - {ok, crashed}; - (Unexpected) -> - {error, {bad_simulation_result, Unexpected}} - end), - - client_create_command( Nice + 8, - "1 restarted", - client01), - - nice_command( Nice + 9, - "client 1 create tab02 - verify data", - fun() -> - create_table(client01, tab02, []), - lists:sort(ets:tab2list(tab02)) - end, - fun(Data) when Data =:= Data01 -> - {ok, Data}; - (Unexpected) -> - {error, {bad_data, Unexpected}} - end), - - evil_command( Evil + 1, - "try (and fail) to delete the non-existing table tab04", - fun() -> - delete_table(client02, tab04) - end, - fun({error, {unknown_table, tab04}}) -> - {ok, tab04}; - (X) -> - {error, {bad_result, X}} - end), - - evil_command( Evil + 2, - "try (and fail) to delete a not owned table tab02", - fun() -> - delete_table(client02, tab02) - end, - fun({error, {not_owner, tab02}}) -> - {ok, tab02}; - (X) -> - {error, {bad_result, X}} - end), - - evil_command( Evil + 3, - "try (and fail) to create an already existing *and* owned table - tab03", - fun() -> - create_table(client02, tab03, []) - end, - fun({error, {already_owner, tab03}}) -> - {ok, tab03}; - (X) -> - {error, {bad_result, X}} - end), - - evil_command( Evil + 4, - "try (and fail) to create an already existing not owned table - tab02", - fun() -> - create_table(client02, tab02, []) - end, - fun({error, {not_owner, _Owner, tab02}}) -> - {ok, tab02}; - (X) -> - {error, {bad_result, X}} - end), - - end_command( End + 1, - "stop client01", - fun() -> stop_client(client01) end), - - end_command( End + 2, - "stop client02", - fun() -> stop_client(client02) end), - - end_command( End + 2, - "stop persistent-table", - fun() -> diameter_persistent_table:stop() end), - - evil_command( Evil + 5, - "try (and fail) to stop a not running persistent-table process", - fun() -> - diameter_persistent_table:stop() - end, - fun({'EXIT', {noproc, _}}) -> - {ok, not_running}; - (X) -> - {error, {bad_result, X}} - end) - - ], - - exec(Commands). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% -%% Command engine -%% - -exec([]) -> - ok; -exec([#command{id = No, - desc = Desc, - cmd = Cmd, - verify = Verify}|Commands]) -> - io:format("Executing command ~2w: ~s: ", [No, Desc]), - case (catch Verify((catch Cmd()))) of - {ok, OK} -> - io:format("ok => ~p~n", [OK]), - exec(Commands); - {error, Reason} -> - io:format("error => ~p~n", [Reason]), - {error, {bad_result, No, Reason}}; - Error -> - io:format("exit => ~p~n", [Error]), - {error, {unexpected_result, No, Error}} - end. - -initial_command(No, Desc0, Cmd, VerifyVal) when is_function(Cmd) -> - Desc = lists:flatten(io_lib:format("Initial - ~s", [Desc0])), - command(No, Desc, Cmd, VerifyVal). - -client_create_command(No, Desc0, Name) -> - Desc = lists:flatten(io_lib:format("Client create - ~s", [Desc0])), - Self = self(), - Cmd = fun() -> start_client(Self, Name) end, - command(No, Desc, Cmd, ok). - -nice_command(No, Desc0, Cmd, Verify) - when is_function(Cmd) andalso is_function(Verify) -> - Desc = lists:flatten(io_lib:format("Nice - ~s", [Desc0])), - command(No, Desc, Cmd, Verify). - -evil_command(No, Desc0, Cmd, Verify) - when is_function(Cmd) andalso is_function(Verify) -> - Desc = lists:flatten(io_lib:format("Evil - ~s", [Desc0])), - command(No, Desc, Cmd, Verify). - -end_command(No, Desc0, Cmd) when is_function(Cmd) -> - Desc = lists:flatten(io_lib:format("End - ~s", [Desc0])), - command(No, Desc, Cmd, ok). - -command(No, Desc, Cmd, Verify) - when (is_integer(No) andalso - is_list(Desc) andalso - is_function(Cmd) andalso - is_function(Verify)) -> - #command{id = No, - desc = Desc, - cmd = Cmd, - verify = Verify}; -command(No, Desc, Cmd, VerifyVal) - when (is_integer(No) andalso - is_list(Desc) andalso - is_function(Cmd)) -> - Verify = - fun(Val) -> - case Val of - VerifyVal -> - {ok, Val}; - _ -> - {error, Val} - end - end, - #command{id = No, - desc = Desc, - cmd = Cmd, - verify = Verify}. - - -start_client(Parent, Name) -> - ClientPid = spawn_link(fun() -> client_init(Parent, Name) end), - receive - {ClientPid, started} -> - ClientPid, - ok; - {'EXIT', ClientPid, Reason} -> - {error, {failed_starting_client, Reason}} - end. - -stop_client(Client) -> - Pid = whereis(Client), - Pid ! stop, - receive - {'EXIT', Pid, normal} -> - ok - end. - -create_table(Client, Tab, Opts) -> - Self = self(), - Pid = whereis(Client), - Pid ! {create_table, Tab, Opts, Self}, - receive - {Pid, created} -> - ok; - {Pid, {create_failed, Error}} -> - Error - end. - -delete_table(Client, Tab) -> - Self = self(), - Pid = whereis(Client), - Pid ! {delete_table, Tab, Self}, - receive - {Pid, deleted} -> - ok; - {Pid, {delete_failed, Error}} -> - Error - end. - -populate_table(Client, Tab, Data) -> - Self = self(), - Pid = whereis(Client), - Pid ! {populate_table, Tab, Data, Self}, - receive - {Pid, populated} -> - ok - end. - -simulate_crash(Client) -> - Pid = whereis(Client), - Pid ! simulate_crash, - receive - {'EXIT', Pid, simulated_crash} -> - ok - end. - -client_init(Parent, Name) -> - erlang:register(Name, self()), - process_flag(trap_exit, true), - Parent ! {self(), started}, - client_loop(). - -client_loop() -> - receive - stop -> - exit(normal); - - {create_table, T, Opts, From} when is_atom(T) andalso is_list(Opts) -> - case diameter_persistent_table:create(T, Opts) of - ok -> - From ! {self(), created}; - Error -> - From ! {self(), {create_failed, Error}} - end, - client_loop(); - - {delete_table, T, From} -> - case diameter_persistent_table:delete(T) of - ok -> - From ! {self(), deleted}; - Error -> - From ! {self(), {delete_failed, Error}} - end, - client_loop(); - - {populate_table, Tab, Data, From} -> - ets:insert(Tab, Data), - From ! {self(), populated}, - client_loop(); - - simulate_crash -> - exit(simulated_crash) - end. - diff --git a/lib/diameter/vsn.mk b/lib/diameter/vsn.mk index 9f822e4e85..c783450c9f 100644 --- a/lib/diameter/vsn.mk +++ b/lib/diameter/vsn.mk @@ -18,7 +18,7 @@ # %CopyrightEnd% APPLICATION = diameter -DIAMETER_VSN = 0.9 +DIAMETER_VSN = 0.10 PRE_VSN = APP_VSN = "$(APPLICATION)-$(DIAMETER_VSN)$(PRE_VSN)" diff --git a/lib/erl_docgen/priv/xsl/db_eix.xsl b/lib/erl_docgen/priv/xsl/db_eix.xsl index 4545322bc2..7a648ddfd7 100644 --- a/lib/erl_docgen/priv/xsl/db_eix.xsl +++ b/lib/erl_docgen/priv/xsl/db_eix.xsl @@ -22,10 +22,16 @@ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + extension-element-prefixes="exsl" xmlns:fn="http://www.w3.org/2005/02/xpath-functions"> <xsl:output method="text" encoding="UTF-8" indent="no"/> + <xsl:param name="specs_file" select="''"/> + <xsl:variable name="i" select="document($specs_file)"></xsl:variable> + + <!-- Book --> <xsl:template match="/book"> <xsl:text>%% %% Search data file for </xsl:text><xsl:value-of select="$appname"/><xsl:text> </xsl:text><xsl:value-of select="$appver"/> @@ -50,9 +56,7 @@ <xsl:template match="erlref"> <xsl:text>{"</xsl:text><xsl:value-of select="module"/><xsl:text>.html", {function, {"</xsl:text><xsl:value-of select="$appname"/> <xsl:text>", "</xsl:text><xsl:value-of select="module"/><xsl:text>"}}, [ </xsl:text> - <xsl:apply-templates select="funcs"> - <xsl:with-param name="mod" select="module"/> - </xsl:apply-templates> + <xsl:apply-templates select="funcs"/> <xsl:text>]}. </xsl:text> <xsl:text>{"</xsl:text><xsl:value-of select="module"/><xsl:text>.html", {module, "</xsl:text> <xsl:value-of select="$appname"/><xsl:text>"}, ["</xsl:text><xsl:value-of select="module"/><xsl:text>"]}. </xsl:text> @@ -62,9 +66,7 @@ <xsl:template match="cref"> <xsl:text>{"</xsl:text><xsl:value-of select="lib"/><xsl:text>.html", {function, {"</xsl:text><xsl:value-of select="$appname"/> <xsl:text>", "</xsl:text><xsl:value-of select="lib"/><xsl:text>"}}, [ </xsl:text> - <xsl:apply-templates select="funcs"> - <xsl:with-param name="mod" select="lib"/> - </xsl:apply-templates> + <xsl:apply-templates select="funcs"/> <xsl:text>]}. </xsl:text> <xsl:text>{"</xsl:text><xsl:value-of select="lib"/><xsl:text>.html", {clib, "</xsl:text> <xsl:value-of select="$appname"/><xsl:text>"}, ["</xsl:text><xsl:value-of select="lib"/><xsl:text>"]}. </xsl:text> @@ -91,69 +93,157 @@ <!-- Funcs --> <xsl:template match="funcs"> - <xsl:param name="mod"/> <xsl:variable name="lastfuncsblock"> <xsl:value-of select="position() = last()"/> </xsl:variable> <xsl:apply-templates select="func/name"> - <xsl:with-param name="mod" select="$mod"/> <xsl:with-param name="lastfuncsblock" select="$lastfuncsblock"/> </xsl:apply-templates> </xsl:template> + <xsl:template match="name"> + <xsl:param name="lastfuncsblock"/> + <xsl:choose> + <!-- @arity is mandatory when referring to a specification --> + <xsl:when test="string-length(@arity) > 0"> + <xsl:call-template name="spec_name"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <xsl:template name="err"> + <xsl:param name="f"/> + <xsl:param name="m"/> + <xsl:param name="n"/> + <xsl:param name="a"/> + <xsl:param name="s"/> + <xsl:message terminate="yes"> + Error <xsl:if test="$f != ''">in <xsl:value-of select ="$f"/>:</xsl:if> + <xsl:if test="$m != ''"><xsl:value-of select ="$m"/>:</xsl:if> + <xsl:value-of select="$n"/> + <xsl:if test="$a != ''">/<xsl:value-of + select ="$a"/></xsl:if>: <xsl:value-of select="$s"/> + </xsl:message> + </xsl:template> + <xsl:template name="find_spec"> + <xsl:variable name="curModule" select="ancestor::erlref/module"/> + <xsl:variable name="mod" select="@mod"/> + <xsl:variable name="name" select="@name"/> + <xsl:variable name="arity" select="@arity"/> + <xsl:variable name="clause_i" select="@clause_i"/> + <xsl:variable name="spec0" select= + "$i/specs/module[@name=$curModule]/spec + [name=$name and arity=$arity + and (string-length($mod) = 0 or module = $mod)]"/> + <xsl:variable name="spec" select="$spec0[string-length($clause_i) = 0 + or position() = $clause_i]"/> - <xsl:template match="name"> - <xsl:param name="mod"/> + <xsl:if test="count($spec) != 1"> + <xsl:variable name="why"> + <xsl:choose> + <xsl:when test="count($spec) > 1">ambiguous spec</xsl:when> + <xsl:when test="count($spec) = 0">unknown spec</xsl:when> + </xsl:choose> + </xsl:variable> + <xsl:call-template name="err"> + <xsl:with-param name="f" select="$curModule"/> + <xsl:with-param name="m" select="$mod"/> + <xsl:with-param name="n" select="$name"/> + <xsl:with-param name="a" select="$arity"/> + <xsl:with-param name="s" select="$why"/> + </xsl:call-template> + </xsl:if> + <xsl:copy-of select="$spec"/> + </xsl:template> + + + <xsl:template name="spec_name"> + <xsl:param name="lastfuncsblock"/> + <xsl:variable name="fname" select="@name"/> + <xsl:variable name="arity" select="@arity"/> + <xsl:variable name="spec0"> + <xsl:call-template name="find_spec"/> + </xsl:variable> + <xsl:variable name="spec" select="exsl:node-set($spec0)/spec"/> + + <xsl:variable name="tmpstring"> + <xsl:value-of select="substring-before($spec/contract/clause/head, ' ->')"/> + </xsl:variable> + + <xsl:text> {"</xsl:text><xsl:value-of select="$fname"/> + <xsl:text>", "</xsl:text><xsl:value-of select="$tmpstring"/> + <xsl:text>", "</xsl:text><xsl:value-of select="$fname"/> + <xsl:text>-</xsl:text><xsl:value-of select="$arity"/><xsl:text>"}</xsl:text> + + <xsl:choose> + <xsl:when test="($lastfuncsblock = 'true') and (position() = last())"> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>, </xsl:text> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + + <xsl:template name="name"> <xsl:param name="lastfuncsblock"/> <xsl:variable name="tmpstring"> <xsl:value-of select="substring-before(substring-after(., '('), '->')"/> - </xsl:variable> + </xsl:variable> + <xsl:variable name="ustring"> <xsl:choose> - <xsl:when test="string-length($tmpstring) > 0"> - <xsl:call-template name="remove-paren"> - <xsl:with-param name="string" select="$tmpstring"/> - </xsl:call-template> - </xsl:when> - <xsl:otherwise> - <xsl:call-template name="remove-paren"> - <xsl:with-param name="string" select="substring-after(., '(')"/> - </xsl:call-template> - </xsl:otherwise> + <xsl:when test="string-length($tmpstring) > 0"> + <xsl:call-template name="remove-paren"> + <xsl:with-param name="string" select="$tmpstring"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="remove-paren"> + <xsl:with-param name="string" select="substring-after(., '(')"/> + </xsl:call-template> + </xsl:otherwise> </xsl:choose> - </xsl:variable> + </xsl:variable> + <xsl:variable name="arity"> <xsl:call-template name="calc-arity"> - <xsl:with-param name="string" select="substring-before($ustring, ')')"/> - <xsl:with-param name="no-of-pars" select="0"/> + <xsl:with-param name="string" select="substring-before($ustring, ')')"/> + <xsl:with-param name="no-of-pars" select="0"/> </xsl:call-template> - </xsl:variable> + </xsl:variable> + <xsl:variable name="fname"> <xsl:choose> - <xsl:when test="ancestor::cref"> - <xsl:value-of select="substring-before(nametext, '(')"/> - </xsl:when> - <xsl:when test="ancestor::erlref"> - <xsl:variable name="fname1"> - <xsl:value-of select="substring-before(., '(')"/> - </xsl:variable> - <xsl:variable name="fname2"> - <xsl:value-of select="substring-after($fname1, 'erlang:')"/> - </xsl:variable> - <xsl:choose> - <xsl:when test="string-length($fname2) > 0"> - <xsl:value-of select="$fname2"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$fname1"/> - </xsl:otherwise> - </xsl:choose> - </xsl:when> + <xsl:when test="ancestor::cref"> + <xsl:value-of select="substring-before(nametext, '(')"/> + </xsl:when> + <xsl:when test="ancestor::erlref"> + <xsl:variable name="fname1"> + <xsl:value-of select="substring-before(., '(')"/> + </xsl:variable> + <xsl:variable name="fname2"> + <xsl:value-of select="substring-after($fname1, 'erlang:')"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="string-length($fname2) > 0"> + <xsl:value-of select="$fname2"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$fname1"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> </xsl:choose> - </xsl:variable> + </xsl:variable> + <xsl:text> {"</xsl:text><xsl:value-of select="$fname"/> <xsl:text>", "</xsl:text><xsl:value-of select="$fname"/> <xsl:text>(</xsl:text><xsl:value-of select="normalize-space($tmpstring)"/> diff --git a/lib/erl_docgen/priv/xsl/db_man.xsl b/lib/erl_docgen/priv/xsl/db_man.xsl index 8db4714249..1df96caa36 100644 --- a/lib/erl_docgen/priv/xsl/db_man.xsl +++ b/lib/erl_docgen/priv/xsl/db_man.xsl @@ -25,12 +25,12 @@ xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl"> - <xsl:preserve-space elements="code pre"/> + <xsl:preserve-space elements="code pre p"/> <xsl:strip-space elements="*"/> <xsl:output method="text" encoding="UTF-8" indent="no"/> <!-- Start of Dialyzer type/spec tags. See also the templates - matching "name" and "seealso" + matching "name", "seealso" and "br" --> <!-- Note: specs data for *one* module (as opposed to html and pdf) --> @@ -137,8 +137,8 @@ (there is no spec with more than one clause) --> <xsl:if test="count($clause/guard) > 0 or count($type) > 0"> <xsl:text> .RS</xsl:text> - <xsl:text> .TP</xsl:text> - <xsl:text> Types</xsl:text> + <xsl:text> .TP 3</xsl:text> + <xsl:text> Types: </xsl:text> <xsl:choose> <xsl:when test="$output_subtypes"> @@ -223,10 +223,13 @@ <xsl:for-each select="$subtype"> <xsl:variable name="tname" select="typename"/> - <xsl:text> </xsl:text> - <xsl:apply-templates select="string"/> - <xsl:text> .br</xsl:text> - <xsl:apply-templates select="$type_desc[@variable = $tname]"/> + <xsl:variable name="string" select="string"/> + <xsl:if test="string-length($string) > 0"> + <xsl:text> </xsl:text> + <xsl:apply-templates select="$string"/> + <xsl:text> .br</xsl:text> + <xsl:apply-templates select="$type_desc[@variable = $tname]"/> + </xsl:if> </xsl:for-each> </xsl:template> @@ -319,8 +322,7 @@ </xsl:template> <xsl:template match="typehead"> - <xsl:text> .nf </xsl:text> - <xsl:text> .B </xsl:text> + <xsl:text> .nf </xsl:text> <xsl:apply-templates/> <xsl:text> .br</xsl:text> <xsl:text> .fi</xsl:text> @@ -345,6 +347,13 @@ <xsl:text> .br</xsl:text> </xsl:template> + <!-- The name of data types --> + <xsl:template match="marker"> + <xsl:if test="string-length(.) != 0"> + <xsl:text>\fB</xsl:text><xsl:apply-templates/><xsl:text>\fR\&</xsl:text> + </xsl:if> + </xsl:template> + <!-- Used both in <datatype> and in <func>! --> <xsl:template match="anno"> <xsl:variable name="curModule" select="ancestor::erlref/module"/> @@ -465,13 +474,13 @@ <xsl:text> .TP 2 </xsl:text> <xsl:text>* </xsl:text> <xsl:apply-templates/> - <xsl:text> .LP </xsl:text> + <xsl:text> .LP</xsl:text> </xsl:template> <xsl:template match="taglist"> <xsl:text> .RS 2</xsl:text> <xsl:apply-templates select="tag|item"/> - <xsl:text> .RE </xsl:text> + <xsl:text> .RE</xsl:text> </xsl:template> <xsl:template match="taglist/tag"> @@ -494,7 +503,7 @@ </xsl:when> <xsl:otherwise> <xsl:text> .RS 2</xsl:text> - <xsl:text> .LP .LP </xsl:text> + <xsl:text> .LP </xsl:text> <xsl:value-of select="$content"/> <xsl:text> .RE</xsl:text> </xsl:otherwise> @@ -503,18 +512,42 @@ <!-- Note --> <xsl:template match="note"> - <xsl:text> .SS Note:</xsl:text> + <xsl:text> .LP </xsl:text> + <xsl:text> .RS -4</xsl:text> + <xsl:text> .B </xsl:text> + <xsl:text>Note:</xsl:text> + <xsl:text> .RE</xsl:text> <xsl:apply-templates/> <xsl:text> </xsl:text> </xsl:template> <!-- Warning --> <xsl:template match="warning"> - <xsl:text> .SS Warning:</xsl:text> + <xsl:text> .LP </xsl:text> + <xsl:text> .RS -4</xsl:text> + <xsl:text> .B </xsl:text> + <xsl:text>Warning:</xsl:text> + <xsl:text> .RE</xsl:text> <xsl:apply-templates/> <xsl:text> </xsl:text> </xsl:template> + <xsl:template match="warning/p | note/p"> + <xsl:variable name="content"> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + </xsl:variable> + <xsl:choose> + <xsl:when test="position() = 1"> + <xsl:value-of select="$content"/> + </xsl:when> + <xsl:otherwise> + <xsl:text> .LP</xsl:text> + <xsl:value-of select="$content"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <!-- Paragraph --> <xsl:template match="p"> <xsl:text> .LP </xsl:text> @@ -529,7 +562,16 @@ </xsl:template> <xsl:template match="br"> - <xsl:text> .br </xsl:text> + <xsl:choose> + <xsl:when test="ancestor::head"> + <!-- The header of Dialyzer specs. + .B makes next line appear in bold face --> + <xsl:text> .B </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> .br </xsl:text> + </xsl:otherwise> + </xsl:choose> </xsl:template> <xsl:template match="c"> @@ -547,17 +589,17 @@ <!-- Code --> <xsl:template match="code"> <xsl:text> .LP </xsl:text> - <xsl:text> .nf </xsl:text> + <xsl:text>.nf </xsl:text> <xsl:apply-templates/> - <xsl:text> .fi </xsl:text> + <xsl:text> .fi</xsl:text> </xsl:template> <!-- Pre --> <xsl:template match="pre"> <xsl:text> .LP </xsl:text> - <xsl:text> .nf </xsl:text> + <xsl:text>.nf </xsl:text> <xsl:apply-templates/> - <xsl:text> .fi </xsl:text> + <xsl:text> .fi</xsl:text> </xsl:template> @@ -715,8 +757,8 @@ <!-- The case where @name != 0 is taken care of in "type_name" --> <xsl:if test="string-length(@name) = 0 and string-length(@variable) = 0"> <xsl:text> .RS</xsl:text> - <xsl:text> .TP</xsl:text> - <xsl:text> Types</xsl:text> + <xsl:text> .TP 3</xsl:text> + <xsl:text> Types: </xsl:text> <xsl:apply-templates/> <xsl:text> .RE</xsl:text> </xsl:if> @@ -788,7 +830,36 @@ <!-- Replace ' by \&' ans . by \&. --> <xsl:template match="text()"> <xsl:variable name="startstring"> - <xsl:value-of select="normalize-space()"/><xsl:text> </xsl:text> + <xsl:value-of select="normalize-space()"/> + </xsl:variable> + <!-- 'C' is just any character but whitespace --> + <xsl:variable name="tmp" select="normalize-space(concat('C',.,'C'))"/> + <xsl:variable name="space_before"> + <xsl:choose> + <!-- '<p>A<marker id="swamp"/> swamp</p>' does not work; instead: + '<p>A <marker id="swamp"/>swamp</p>' --> + <xsl:when test="starts-with($tmp, 'C ') + and not (string(preceding-sibling::*[position()=1]) = '' + and parent::p)"> + <!-- and not (position() = 1 and parent::p)"> --> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="space_after"> + <xsl:choose> + <xsl:when test="substring($tmp, string-length($tmp)-1,1) = ' ' + and $startstring != '' + and not (position() = last() and parent::p)"> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text/> + </xsl:otherwise> + </xsl:choose> </xsl:variable> <xsl:variable name="rep1"> <xsl:call-template name="replace-string"> @@ -804,11 +875,16 @@ <xsl:with-param name="with" select=""\&'"" /> </xsl:call-template> </xsl:variable> - <xsl:call-template name="replace-string"> - <xsl:with-param name="text" select="$rep2" /> - <xsl:with-param name="replace" select=""."" /> - <xsl:with-param name="with" select=""\&."" /> - </xsl:call-template> + <xsl:variable name="reply"> + <xsl:call-template name="replace-string"> + <xsl:with-param name="text" select="$rep2" /> + <xsl:with-param name="replace" select=""."" /> + <xsl:with-param name="with" select=""\&."" /> + </xsl:call-template> + </xsl:variable> + <xsl:value-of select="$space_before"/> + <xsl:value-of select="$reply"/> + <xsl:value-of select="$space_after"/> </xsl:template> <!-- Template replace-string is borrowed at http://www.dpawson.co.uk/xsl/sect2/replace.html --> diff --git a/lib/erl_docgen/priv/xsl/db_pdf.xsl b/lib/erl_docgen/priv/xsl/db_pdf.xsl index a3d601d861..48a7a026c1 100644 --- a/lib/erl_docgen/priv/xsl/db_pdf.xsl +++ b/lib/erl_docgen/priv/xsl/db_pdf.xsl @@ -732,22 +732,23 @@ <xsl:template name="bookmarks1"> <xsl:param name="entries"/> <xsl:if test="$entries != ''"> + <xsl:for-each select="$entries"> - <fo:bookmark internal-destination="{generate-id(/book/parts/part)}" - starting-state="hide"> - <fo:bookmark-title>User's Guide</fo:bookmark-title> - - <xsl:for-each select="$entries"> + <fo:bookmark internal-destination="{generate-id(header/title)}" + starting-state="hide"> + <fo:bookmark-title><xsl:value-of select="header/title"/></fo:bookmark-title> + <xsl:call-template name="bookmarks2"> <xsl:with-param name="entries" select="chapter[header/title]"/> </xsl:call-template> - </xsl:for-each> - - </fo:bookmark> + + </fo:bookmark> + </xsl:for-each> </xsl:if> </xsl:template> + <xsl:template name="bookmarks2"> <xsl:param name="entries"/> <xsl:for-each select="$entries"> @@ -934,9 +935,9 @@ <xsl:template match="part"> <xsl:variable name="partnum"><xsl:number level="any" from="book" count="part|application"/></xsl:variable> - <fo:block xsl:use-attribute-sets="h1" id="{generate-id()}"> + <fo:block xsl:use-attribute-sets="h1" id="{generate-id(header/title)}"> <xsl:value-of select="$partnum"/>    - <xsl:text>User's Guide</xsl:text> + <xsl:value-of select="header/title"/> </fo:block> <xsl:apply-templates select="description"> @@ -1382,16 +1383,15 @@ <!-- Func --> <xsl:template match="func"> <xsl:param name="partnum"/> - - <xsl:apply-templates select="name"/> - <xsl:apply-templates - select="name[string-length(@arity) > 0 and position()=last()]" - mode="types"/> - - <xsl:apply-templates select="fsummary|type|desc"> - <xsl:with-param name="partnum" select="$partnum"/> - </xsl:apply-templates> - + <fo:block space-before="1.5em"> + <xsl:apply-templates select="name"/> + <xsl:apply-templates + select="name[string-length(@arity) > 0 and position()=last()]" + mode="types"/> + <xsl:apply-templates select="fsummary|type|desc"> + <xsl:with-param name="partnum" select="$partnum"/> + </xsl:apply-templates> + </fo:block> </xsl:template> @@ -1424,14 +1424,10 @@ <xsl:param name="partnum"/> <xsl:choose> <xsl:when test="ancestor::cref"> - <fo:block id="{generate-id(nametext)}"> - <xsl:value-of select="ret"/><xsl:text> </xsl:text><xsl:value-of select="nametext"/> - </fo:block> + <fo:block id="{generate-id(nametext)}"><xsl:value-of select="ret"/><xsl:text></xsl:text><xsl:value-of select="nametext"/></fo:block> </xsl:when> <xsl:otherwise> - <fo:block id="{generate-id(.)}"> - <xsl:value-of select="."/> - </fo:block> + <fo:block id="{generate-id(.)}"><xsl:value-of select="."/></fo:block> </xsl:otherwise> </xsl:choose> </xsl:template> @@ -1468,7 +1464,7 @@ </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()" format="justify"> - <fo:block font-weight="bold"> + <fo:block font-weight="bold" font-family="monospace" > <xsl:apply-templates> <xsl:with-param name="partnum" select="$partnum"/> </xsl:apply-templates> diff --git a/lib/erl_docgen/priv/xsl/db_pdf_params.xsl b/lib/erl_docgen/priv/xsl/db_pdf_params.xsl index 7de20f2092..d2f0350cf1 100644 --- a/lib/erl_docgen/priv/xsl/db_pdf_params.xsl +++ b/lib/erl_docgen/priv/xsl/db_pdf_params.xsl @@ -29,7 +29,7 @@ <!-- Fixed strings --> <xsl:variable name="companyname"><xsl:value-of select="/book/header/copyright/holder"/></xsl:variable> - <xsl:variable name="copyright">Copyright © <xsl:value-of select="/book/header/copyright/year[1]"/><xsl:text>-</xsl:text><xsl:value-of select="substring-after(substring-after($gendate, ' '), ' ')"/></xsl:variable> + <xsl:variable name="copyright">Copyright © <xsl:value-of select="/book/header/copyright/year[1]"/><xsl:text>-</xsl:text><xsl:value-of select="substring-after(normalize-space(substring-after($gendate, ' ')), ' ')"/></xsl:variable> <!-- FIXME: remove when appendix creation has been fixed --> <!-- xsl:variable name="appendix_title"--> @@ -316,8 +316,8 @@ <xsl:attribute name="font-family">monospace</xsl:attribute> <!-- xsl:attribute name="font-size">0.8em</xsl:attribute --> <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute> - <xsl:attribute name="space-after">0.3em</xsl:attribute> - <xsl:attribute name="space-before">1.5em</xsl:attribute> + <xsl:attribute name="space-after">0.25em</xsl:attribute> + <!-- xsl:attribute name="space-before">1.5em</xsl:attribute --> </xsl:attribute-set> <xsl:attribute-set name="type-listblock"> diff --git a/lib/erl_interface/doc/src/ei.xml b/lib/erl_interface/doc/src/ei.xml index de4e4b4301..76e02a6858 100644 --- a/lib/erl_interface/doc/src/ei.xml +++ b/lib/erl_interface/doc/src/ei.xml @@ -581,9 +581,9 @@ ei_x_encode_empty_list(&x); <c><![CDATA[term]]></c> union, it is decoded, and the appropriate field in <c><![CDATA[term->value]]></c> is set, and <c><![CDATA[*index]]></c> is incremented by the term size.</p> - <p>The function returns 0 on successful decoding, -1 on error, - and 1 if the term seems alright, but does not fit in the - <c><![CDATA[term]]></c> structure. If it returns 0, the <c><![CDATA[index]]></c> + <p>The function returns 1 on successful decoding, -1 on error, + and 0 if the term seems alright, but does not fit in the + <c><![CDATA[term]]></c> structure. If it returns 1, the <c><![CDATA[index]]></c> will be incremented, and the <c><![CDATA[term]]></c> contains the decoded term.</p> <p>The <c><![CDATA[term]]></c> structure will contain the arity for a tuple diff --git a/lib/erl_interface/doc/src/erl_format.xml b/lib/erl_interface/doc/src/erl_format.xml index 5699485845..f036b12879 100644 --- a/lib/erl_interface/doc/src/erl_format.xml +++ b/lib/erl_interface/doc/src/erl_format.xml @@ -4,7 +4,7 @@ <cref> <header> <copyright> - <year>1996</year><year>2009</year> + <year>1996</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -105,7 +105,7 @@ erl_format("[{name,~a},{age,~i},{data,~w}]", values in <c><![CDATA[Term]]></c>. </p> <p>If <c><![CDATA[Term]]></c> and <c><![CDATA[Pattern]]></c> can be matched, the function returns a non-zero value and binds any unbound - variables in <c><![CDATA[Pattern]]></c>. If <c><![CDATA[Term]]></c><c><![CDATA[Pattern]]></c> do + variables in <c><![CDATA[Pattern]]></c>. If <c><![CDATA[Term]]></c> <c><![CDATA[Pattern]]></c> do not match, the function returns 0. For example:</p> <code type="none"><![CDATA[ ETERM *term, *pattern, *pattern2; diff --git a/lib/erl_interface/src/legacy/erl_fix_alloc.c b/lib/erl_interface/src/legacy/erl_fix_alloc.c index 20f3024e41..ca09fc3b8b 100644 --- a/lib/erl_interface/src/legacy/erl_fix_alloc.c +++ b/lib/erl_interface/src/legacy/erl_fix_alloc.c @@ -109,6 +109,10 @@ void *erl_eterm_alloc (void) erl_eterm_state->freed--; } else if ((b = malloc(sizeof(*b))) == NULL) { erl_errno = ENOMEM; +#ifdef _REENTRANT + ei_mutex_unlock(erl_eterm_state->lock); +#endif /* _REENTRANT */ + return NULL; } erl_eterm_state->allocated++; b->free = 0; diff --git a/lib/erl_interface/src/misc/ei_decode_term.c b/lib/erl_interface/src/misc/ei_decode_term.c index bfb4571337..0b82ef0e35 100644 --- a/lib/erl_interface/src/misc/ei_decode_term.c +++ b/lib/erl_interface/src/misc/ei_decode_term.c @@ -25,8 +25,8 @@ #include "ei_decode_term.h" #include "putget.h" -/* Returns 0 on successful encoding, -1 on error, and 1 if the term seems - alright, but does not fit in the term structure. If it returns 0, the +/* Returns 1 on successful encoding, -1 on error, and 0 if the term seems + alright, but does not fit in the term structure. If it returns 1, the index will be incremented, and the term contains the decoded term. */ int ei_decode_ei_term(const char* buf, int* index, ei_term* term) @@ -111,10 +111,10 @@ int ei_decode_ei_term(const char* buf, int* index, ei_term* term) break; case ERL_SMALL_TUPLE_EXT: term->arity = get8(s); - break; /*return 0;*/ + break; case ERL_LARGE_TUPLE_EXT: term->arity = get32be(s); - break; /*return 0;*/ + break; case ERL_NIL_EXT: term->arity = 0; break; @@ -123,7 +123,7 @@ int ei_decode_ei_term(const char* buf, int* index, ei_term* term) return 0; case ERL_LIST_EXT: term->arity = get32be(s); - break; /*return 0;*/ + break; case ERL_BINARY_EXT: term->size = get32be(s); return 0; diff --git a/lib/erl_interface/src/registry/reg_dump.c b/lib/erl_interface/src/registry/reg_dump.c index 1e640fb506..d2854c10b5 100644 --- a/lib/erl_interface/src/registry/reg_dump.c +++ b/lib/erl_interface/src/registry/reg_dump.c @@ -215,6 +215,7 @@ static int mn_send_write(int fd, erlang_pid *mnesia, const char *key, ei_reg_obj else ei_encode_long(msgbuf,&index,(long)(obj->val.p)); /* just the pointer */ break; default: + if (dbuf) free(dbuf); return -1; } diff --git a/lib/erl_interface/src/registry/reg_restore.c b/lib/erl_interface/src/registry/reg_restore.c index 765c3f4314..7bc1c758af 100644 --- a/lib/erl_interface/src/registry/reg_restore.c +++ b/lib/erl_interface/src/registry/reg_restore.c @@ -303,6 +303,9 @@ int ei_reg_restore(int fd, ei_reg *reg, const char *mntab) if (mn_decode_insert(reg,msgbuf,&index,keybuf)) goto restore_failure; } + if (keybuf) free(keybuf); + if (dbuf) free(dbuf); + /* wait for unlink */ if (mn_unlink(fd)) return -1; @@ -310,8 +313,6 @@ int ei_reg_restore(int fd, ei_reg *reg, const char *mntab) ei_hash_foreach(reg->tab,clean_obj); /* success */ - if (keybuf) free(keybuf); - if (dbuf) free(dbuf); return 0; restore_failure: diff --git a/lib/erl_interface/test/all_SUITE_data/Makefile.src b/lib/erl_interface/test/all_SUITE_data/Makefile.src index 9be2360656..42d4c6f27f 100644 --- a/lib/erl_interface/test/all_SUITE_data/Makefile.src +++ b/lib/erl_interface/test/all_SUITE_data/Makefile.src @@ -30,6 +30,8 @@ CHMOD=chmod all: $(ALL_OBJS) +$(EI_COMMON_OBJS): gccifier@exe@ + @IFEQ@ (@erl_interface_cross_compile@, true) gccifier@exe@: $(CP) gccifier.sh gccifier@exe@ diff --git a/lib/erl_interface/test/port_call_SUITE_data/Makefile.src b/lib/erl_interface/test/port_call_SUITE_data/Makefile.src index dc7385ba32..0799187d64 100644 --- a/lib/erl_interface/test/port_call_SUITE_data/Makefile.src +++ b/lib/erl_interface/test/port_call_SUITE_data/Makefile.src @@ -26,7 +26,7 @@ LIBPATH = @erl_interface_libpath@ LIBERL = $(LIBPATH)/@erl_interface_lib_drv@ LIBEI = $(LIBPATH)/@erl_interface_eilib_drv@ -SHLIB_EXTRA_LDLIBS = $(LIBERL) $(LIBEI) +SHLIB_EXTRA_LDLIBS = $(LIBERL) $(LIBEI) @erl_interface_threadlib@ SHLIB_EXTRA_CFLAGS = -I@erl_interface_include@ -I../all_SUITE_data diff --git a/lib/gs/contribs/bonk/sounder.erl b/lib/gs/contribs/bonk/sounder.erl index 11ab03d167..899f20d4e0 100644 --- a/lib/gs/contribs/bonk/sounder.erl +++ b/lib/gs/contribs/bonk/sounder.erl @@ -72,13 +72,13 @@ stop() -> sounder ! {stop}, ok end. -new(File) when list(File) -> new(list_to_atom(File)); -new(File) when atom(File) -> +new(File) when is_list(File) -> new(list_to_atom(File)); +new(File) when is_atom(File) -> catch begin check(), sounder ! {new,File,self()}, wait_for_ack(sounder) end. -play(No) when integer(No) -> +play(No) when is_integer(No) -> catch begin check(), sounder ! {play, No, self()}, wait_for_ack(sounder) end. @@ -94,14 +94,14 @@ go() -> loop(Port) -> receive - {new, File, From} when atom(File) -> + {new, File, From} when is_atom(File) -> Port ! {self(),{command,lists:append([0],atom_to_list(File))}}, From ! {sounder,wait_for_ack(Port)}, loop(Port); {play,silent,From} -> From ! {sounder,false}, loop(Port); - {play,No,From} when integer(No) -> + {play,No,From} when is_integer(No) -> Port ! {self(),{command,[No]}}, From ! {sounder,wait_for_ack(Port)}, loop(Port); @@ -118,13 +118,13 @@ loop(Port) -> nosound() -> receive - {new,File,From} when atom(File) -> + {new,File,From} when is_atom(File) -> From ! {sounder,{ok,silent}}, nosound(); {play,silent,From} -> From ! {sounder,true}, nosound(); - {play,No,From} when integer(No) -> + {play,No,From} when is_integer(No) -> From ! {sounder,{error,no_audio_cap}}, nosound(); {stop} -> @@ -135,7 +135,7 @@ nosound() -> wait_for_ack(sounder) -> receive {sounder,Res} -> Res end; -wait_for_ack(Port) when port(Port) -> +wait_for_ack(Port) when is_port(Port) -> receive {Port,{data,"ok"}} -> ok; @@ -149,7 +149,7 @@ wait_for_ack(Port) when port(Port) -> check() -> case whereis(sounder) of - Pid when pid(Pid) -> + Pid when is_pid(Pid) -> ok; undefined -> throw({error,sounder_not_started}) diff --git a/lib/gs/contribs/cols/cols.erl b/lib/gs/contribs/cols/cols.erl index 67b46d0dfb..439eb717f7 100644 --- a/lib/gs/contribs/cols/cols.erl +++ b/lib/gs/contribs/cols/cols.erl @@ -278,7 +278,7 @@ fall_column([], _X, _Y, ColumnAcc, ChecksAcc) -> fall_column([black|Colors], X, Y, ColumnAcc, ChecksAcc) -> case find_box(Colors) of false -> {ColumnAcc, ChecksAcc}; - NewColors when list(NewColors) -> + NewColors when is_list(NewColors) -> fall_one_step(NewColors, X, Y, ColumnAcc, ChecksAcc) end; fall_column([Color|Colors], X, Y, ColumnAcc, ChecksAcc) -> @@ -330,7 +330,7 @@ new_column_list([], _, _) -> []. %%---------------------------------------------------------------------- %% Returns: a reversed list of colors. %%---------------------------------------------------------------------- -columntuple_to_list(ColumnTuple) when tuple(ColumnTuple) -> +columntuple_to_list(ColumnTuple) when is_tuple(ColumnTuple) -> columntuple_to_list(tuple_to_list(ColumnTuple),[]). columntuple_to_list([],Acc) -> Acc; diff --git a/lib/gs/contribs/mandel/mandel.erl b/lib/gs/contribs/mandel/mandel.erl index d4d2452463..579f8e487b 100644 --- a/lib/gs/contribs/mandel/mandel.erl +++ b/lib/gs/contribs/mandel/mandel.erl @@ -119,7 +119,7 @@ start_client(Opts,Nodes) -> try_random(random,Low,High) -> random:uniform()*(High-Low)+Low; -try_random(Float,_Low,_High) when number(Float) -> Float. +try_random(Float,_Low,_High) when is_number(Float) -> Float. %%----------------------------------------------------------------- diff --git a/lib/gs/contribs/othello/othello_board.erl b/lib/gs/contribs/othello/othello_board.erl index 0206ba2ded..6ccb79b7e4 100644 --- a/lib/gs/contribs/othello/othello_board.erl +++ b/lib/gs/contribs/othello/othello_board.erl @@ -147,7 +147,7 @@ but_pressed("Help",_ButtId,_User,GamePid,_Shell,_Wids,_Op) -> but_pressed("Newgame",_ButtId,_User,GamePid,_Shell,Wids,Options) -> new_game(GamePid,Wids,Options); but_pressed([],ButtId,User,GamePid,_Shell,_Wids,_Op) - when pid(GamePid),User == player -> + when is_pid(GamePid),User == player -> [C,R] = atom_to_list(ButtId), GamePid ! {self(),position,othello_adt:pos(C-96,translate(R-48))}, GamePid; @@ -243,7 +243,7 @@ game_msg(Msg,User,GamePid,Shell,Wids,Options) -> end. -new_game(GamePid,Wids,Options) when pid(GamePid) -> +new_game(GamePid,Wids,Options) when is_pid(GamePid) -> exit(GamePid,kill), new_game(Wids,Options); new_game(_,Wids,Options) -> diff --git a/lib/gs/examples/calc2.erl b/lib/gs/examples/calc2.erl index d28780de01..9969a6c40f 100644 --- a/lib/gs/examples/calc2.erl +++ b/lib/gs/examples/calc2.erl @@ -54,7 +54,7 @@ calc() -> calc_loop(Lbl,M,V,Op) -> receive - {gs,_,click,D,_} when integer(D) -> + {gs,_,click,D,_} when is_integer(D) -> digit_press(Lbl,M,V*10+D,Op); {gs,_,click,'C',_} -> c(Lbl,M,V,Op); diff --git a/lib/gs/src/Makefile b/lib/gs/src/Makefile index b3f11fb71b..964966ba00 100644 --- a/lib/gs/src/Makefile +++ b/lib/gs/src/Makefile @@ -90,7 +90,7 @@ clean: # Special Build Targets # ---------------------------------------------------- -gstk_generic.hrl: gs_make.erl ../ebin/gs.$(EMULATOR) +gstk_generic.hrl: gs_make.erl ../ebin/gs_make.$(EMULATOR) ../ebin/gs.$(EMULATOR) $(ERL) -pa $(EBIN) -s gs_make -s erlang halt -noshell $(APP_TARGET): $(APP_SRC) ../vsn.mk diff --git a/lib/hipe/cerl/erl_bif_types.erl b/lib/hipe/cerl/erl_bif_types.erl index 3212c1e4ff..1483b2aee1 100644 --- a/lib/hipe/cerl/erl_bif_types.erl +++ b/lib/hipe/cerl/erl_bif_types.erl @@ -1202,6 +1202,7 @@ type(erlang, process_flag, 2, Xs) -> case t_atom_vals(Flag) of ['error_handler'] -> t_atom(); ['min_heap_size'] -> t_non_neg_integer(); + ['scheduler'] -> t_non_neg_integer(); ['monitor_nodes'] -> t_boolean(); ['priority'] -> t_process_priority_level(); ['save_calls'] -> t_non_neg_integer(); @@ -1902,7 +1903,7 @@ type(prim_file, internal_native2name, 1, Xs) -> fun (_) -> t_prim_file_name() end); type(prim_file, internal_normalize_utf8, 1, Xs) -> strict(arg_types(prim_file, internal_normalize_utf8, 1), Xs, - fun (_) -> t_binary() end); + fun (_) -> t_unicode_string() end); %%-- gen_tcp ------------------------------------------------------------------ %% NOTE: All type information for this module added to avoid loss of precision type(gen_tcp, accept, 1, Xs) -> @@ -2327,10 +2328,7 @@ type(lists, keyfind, 3, Xs) -> case t_tuple_subtypes(Tuple) of unknown -> Ret; List -> - Keys = [type(erlang, element, 2, [Y, S]) - || S <- List], - Infs = [t_inf(Key, X) || Key <- Keys], - case all_is_none(Infs) of + case key_comparisons_fail(X, Y, List) of true -> t_atom('false'); false -> Ret end @@ -2360,9 +2358,7 @@ type(lists, keymember, 3, Xs) -> case t_tuple_subtypes(Tuple) of unknown -> t_boolean(); List -> - Keys = [type(erlang, element, 2, [Y,S]) || S <- List], - Infs = [t_inf(Key, X) || Key <- Keys], - case all_is_none(Infs) of + case key_comparisons_fail(X, Y, List) of true -> t_atom('false'); false -> t_boolean() end @@ -2392,10 +2388,7 @@ type(lists, keysearch, 3, Xs) -> case t_tuple_subtypes(Tuple) of unknown -> Ret; List -> - Keys = [type(erlang, element, 2, [Y, S]) - || S <- List], - Infs = [t_inf(Key, X) || Key <- Keys], - case all_is_none(Infs) of + case key_comparisons_fail(X, Y, List) of true -> t_atom('false'); false -> Ret end @@ -2823,9 +2816,6 @@ list_replace(1, E, [_X | Xs]) -> any_is_none_or_unit(Ts) -> lists:any(fun erl_types:t_is_none_or_unit/1, Ts). -all_is_none(Ts) -> - lists:all(fun erl_types:t_is_none/1, Ts). - check_guard([X], Test, Type) -> check_guard_single(X, Test, Type). @@ -3220,6 +3210,15 @@ type_order() -> [t_number(), t_atom(), t_reference(), t_fun(), t_port(), t_pid(), t_tuple(), t_list(), t_binary()]. +key_comparisons_fail(X0, KeyPos, TupleList) -> + X = case t_is_number(t_inf(X0, t_number())) of + false -> X0; + true -> t_number() + end, + lists:all(fun(Tuple) -> + Key = type(erlang, element, 2, [KeyPos, Tuple]), + t_is_none(t_inf(Key, X)) + end, TupleList). %%============================================================================= @@ -3744,6 +3743,7 @@ arg_types(erlang, process_display, 2) -> arg_types(erlang, process_flag, 2) -> [t_sup([t_atom('trap_exit'), t_atom('error_handler'), t_atom('min_heap_size'), t_atom('priority'), t_atom('save_calls'), + t_atom('scheduler'), % undocumented t_atom('monitor_nodes'), % undocumented t_tuple([t_atom('monitor_nodes'), t_list()])]), % undocumented t_sup([t_boolean(), t_atom(), t_non_neg_integer()])]; @@ -3785,7 +3785,7 @@ arg_types(erlang, send, 3) -> arg_types(erlang, send_after, 3) -> [t_non_neg_integer(), t_sup(t_pid(), t_atom()), t_any()]; arg_types(erlang, seq_trace, 2) -> - [t_atom(), t_sup([t_boolean(), t_tuple([t_fixnum(), t_fixnum()]), t_nil()])]; + [t_atom(), t_sup([t_boolean(), t_tuple([t_fixnum(), t_fixnum()]), t_fixnum(), t_nil()])]; arg_types(erlang, seq_trace_info, 1) -> [t_seq_trace_info()]; arg_types(erlang, seq_trace_print, 1) -> @@ -4034,7 +4034,7 @@ arg_types(ets, match_object, 3) -> arg_types(ets, match_spec_compile, 1) -> [t_matchspecs()]; arg_types(ets, match_spec_run_r, 3) -> - [t_matchspecs(), t_any(), t_list()]; + [t_list(t_tuple()),t_matchspecs(), t_list()]; arg_types(ets, member, 2) -> [t_tab(), t_any()]; arg_types(ets, new, 2) -> @@ -4066,8 +4066,12 @@ arg_types(ets, select_reverse, 3) -> arg_types(ets, slot, 2) -> [t_tab(), t_non_neg_fixnum()]; % 2nd arg can be 0 arg_types(ets, setopts, 2) -> - Opt = t_sup(t_tuple([t_atom('heir'), t_pid(), t_any()]), - t_tuple([t_atom('heir'), t_atom('none')])), + Opt = t_sup([t_tuple([t_atom('heir'), t_pid(), t_any()]), + t_tuple([t_atom('heir'), t_atom('none')]), + t_tuple([t_atom('protection'), + t_sup([t_atom('protected'), + t_atom('private'), + t_atom('public')])])]), [t_tab(), t_sup(Opt, t_list(Opt))]; arg_types(ets, update_counter, 3) -> Int = t_integer(), @@ -4859,6 +4863,9 @@ t_ets_info_items() -> t_atom('owner'), t_atom('protection'), t_atom('size'), + t_atom('compressed'), + t_atom('heir'), + t_atom('stats'), t_atom('type')]). %% ===================================================================== diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl index 1748c1cc16..7ff170776e 100644 --- a/lib/hipe/cerl/erl_types.erl +++ b/lib/hipe/cerl/erl_types.erl @@ -211,7 +211,8 @@ record_field_diffs_to_string/2, subst_all_vars_to_any/1, lift_list_to_pos_empty/1, - is_erl_type/1 + is_erl_type/1, + atom_to_string/1 ]). %%-define(DO_ERL_TYPES_TEST, true). @@ -3360,14 +3361,14 @@ t_to_string(?var(Id), _RecDict) when is_integer(Id) -> record_to_string(Tag, [_|Fields], FieldNames, RecDict) -> FieldStrings = record_fields_to_string(Fields, FieldNames, RecDict, []), - "#" ++ atom_to_list(Tag) ++ "{" ++ string:join(FieldStrings, ",") ++ "}". + "#" ++ atom_to_string(Tag) ++ "{" ++ string:join(FieldStrings, ",") ++ "}". record_fields_to_string([F|Fs], [{FName, _DefType}|FDefs], RecDict, Acc) -> NewAcc = case t_is_any(F) orelse t_is_atom('undefined', F) of true -> Acc; false -> - StrFV = atom_to_list(FName) ++ "::" ++ t_to_string(F, RecDict), + StrFV = atom_to_string(FName) ++ "::" ++ t_to_string(F, RecDict), %% ActualDefType = t_subtract(DefType, t_atom('undefined')), %% Str = case t_is_any(ActualDefType) of %% true -> StrFV; @@ -3393,7 +3394,7 @@ field_diffs([F|Fs], [{FName, DefType}|FDefs], RecDict, Acc) -> case t_is_subtype(F, DefType) of true -> Acc; false -> - Str = atom_to_list(FName) ++ "::" ++ t_to_string(DefType, RecDict), + Str = atom_to_string(FName) ++ "::" ++ t_to_string(DefType, RecDict), [Str|Acc] end, field_diffs(Fs, FDefs, RecDict, NewAcc); @@ -3906,7 +3907,7 @@ t_form_to_string({type, _L, union, Args}) -> string:join(t_form_to_string_list(Args), " | "); t_form_to_string({type, _L, Name, []} = T) -> try t_to_string(t_from_form(T)) - catch throw:{error, _} -> atom_to_list(Name) ++ "()" + catch throw:{error, _} -> atom_to_string(Name) ++ "()" end; t_form_to_string({type, _L, Name, List}) -> io_lib:format("~w(~s)", @@ -3920,6 +3921,11 @@ t_form_to_string_list([H|T], Acc) -> t_form_to_string_list([], Acc) -> lists:reverse(Acc). +-spec atom_to_string(atom()) -> string(). + +atom_to_string(Atom) -> + lists:flatten(io_lib:format("~w", [Atom])). + %%============================================================================= %% %% Utilities diff --git a/lib/hipe/icode/hipe_beam_to_icode.erl b/lib/hipe/icode/hipe_beam_to_icode.erl index f557d3419e..45b390acbd 100644 --- a/lib/hipe/icode/hipe_beam_to_icode.erl +++ b/lib/hipe/icode/hipe_beam_to_icode.erl @@ -724,7 +724,7 @@ trans_fun([{test,bs_get_float2,{f,Lbl},[Ms,_Live,Size,Unit,{field_flags,Flags0}, ?EXIT({bad_bs_size_constant,Size}); BitReg -> Bits = mk_var(BitReg), - {{bs_get_float,Unit,Flags}, [Bits,MsVar]} + {{bs_get_float,Unit,Flags}, [MsVar,Bits]} end, trans_op_call({hipe_bs_primop,Name}, Lbl, Args, [Dst,MsVar], Env, Instructions); trans_fun([{test,bs_get_integer2,{f,Lbl},[Ms,_Live,Size,Unit,{field_flags,Flags0},X]}| diff --git a/lib/hipe/regalloc/hipe_node_sets.erl b/lib/hipe/regalloc/hipe_node_sets.erl index b5e2971c4d..0bb21d7506 100644 --- a/lib/hipe/regalloc/hipe_node_sets.erl +++ b/lib/hipe/regalloc/hipe_node_sets.erl @@ -29,7 +29,7 @@ -record(node_sets, {spilled, % Nodes marked for spilling - colored % Nodes succesfully colored + colored % Nodes successfully colored }). spilled(Node_sets) -> Node_sets#node_sets.spilled. diff --git a/lib/hipe/rtl/hipe_rtl_lcm.erl b/lib/hipe/rtl/hipe_rtl_lcm.erl index 5d65389d48..d45ab4ed46 100644 --- a/lib/hipe/rtl/hipe_rtl_lcm.erl +++ b/lib/hipe/rtl/hipe_rtl_lcm.erl @@ -269,7 +269,7 @@ insert_expr_last(CFG0, Label, Instr) -> %% is a branch operation). insert_expr_last_work(_, Instr, []) -> %% This case should not happen since this means that block was completely - %% empty when the function was called. For compability we insert it last. + %% empty when the function was called. For compatibility we insert it last. [Instr]; insert_expr_last_work(_, Instr, [Code1]) -> %% We insert the code next to last. diff --git a/lib/ic/doc/src/Makefile b/lib/ic/doc/src/Makefile index 8eda436a24..acb6848fee 100644 --- a/lib/ic/doc/src/Makefile +++ b/lib/ic/doc/src/Makefile @@ -206,6 +206,8 @@ JAVADOCFLAGS = \ # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(JAVA_OUT_DIR)) + $(HTMLDIR)/%.gif: %.gif $(INSTALL_DATA) $< $@ @@ -256,10 +258,7 @@ clean clean_docs clean_tex: endif -$(JAVA_OUT_DIR): - mkdir $(JAVA_OUT_DIR) - -$(JAVADOC_GENERATED_FILES): $(JAVA_OUT_DIR) +$(JAVADOC_GENERATED_FILES): @(cd ../../java_src; $(JAVADOC) $(JAVADOCFLAGS) com.ericsson.otp.ic) man: $(MAN3_FILES) diff --git a/lib/ic/src/ic.erl b/lib/ic/src/ic.erl index 3c6ce3d9d6..e22179fe42 100644 --- a/lib/ic/src/ic.erl +++ b/lib/ic/src/ic.erl @@ -320,7 +320,7 @@ pragma(G, File, T) -> time, time("pragma registration ", ic_pragma, pragma_reg, [G,T]), ic_pragma:pragma_reg(G,T)) of - %% All pragmas were succesfully applied + %% All pragmas were successfully applied {ok,Clean} -> typing(G, File, Clean); diff --git a/lib/inets/doc/src/http_server.xml b/lib/inets/doc/src/http_server.xml index 599a939913..f29b505bc7 100644 --- a/lib/inets/doc/src/http_server.xml +++ b/lib/inets/doc/src/http_server.xml @@ -406,7 +406,7 @@ http://your.server.org/***/Module[:/]Function(?QueryString|/PathInfo) phase instead of first generating the whole web page and then sending it to the client. The option to implement a function with arity two is only kept for - backwardcompatibilty reasons. + backwards compatibility reasons. See <seealso marker="mod_esi">mod_esi(3)</seealso> for implementation details of the esi callback function.</p> </section> diff --git a/lib/inets/doc/src/mod_auth.xml b/lib/inets/doc/src/mod_auth.xml index 42c49e9c35..2134ebeeae 100644 --- a/lib/inets/doc/src/mod_auth.xml +++ b/lib/inets/doc/src/mod_auth.xml @@ -80,7 +80,7 @@ <marker id="delete_user"></marker> <p><c>delete_user/2, delete_user/3</c> and <c>delete_user/4</c> deletes a user - from the user database. If the operation is succesfull, this + from the user database. If the operation is successful, this function returns <c>true</c>. If an error occurs, <c>{error,Reason}</c> is returned. When <c>delete_user/2</c> is called the Port and Dir options are mandatory.</p> diff --git a/lib/inets/doc/src/mod_esi.xml b/lib/inets/doc/src/mod_esi.xml index 9674cd9a88..9906ae0895 100644 --- a/lib/inets/doc/src/mod_esi.xml +++ b/lib/inets/doc/src/mod_esi.xml @@ -31,8 +31,8 @@ <module>mod_esi</module> <modulesummary>Erlang Server Interface </modulesummary> <description> - <p>This module defines the API - Erlang Server Interface (ESI). - Which is a more efficient way of writing erlang scripts + <p>This module defines the Erlang Server Interface (ESI) API. + It is a more efficient way of writing erlang scripts for your Inets web server than writing them as common CGI scripts.</p> <marker id="deliver"></marker> @@ -95,12 +95,12 @@ the server uses when <c>deliver/2</c> is called; do not assume anything about the datatype.</p> <p>Use this callback function to dynamically generate dynamic web - content. when a part of the page is generated send the + content. When a part of the page is generated send the data back to the client through <c>deliver/2</c>. Note that the first chunk of data sent to the client must at least contain all HTTP header fields that the response will generate. If the first chunk does not contain the - <em>End of HTTP the header</em>, that is <c>"\r\n\r\n",</c> + <em>End of HTTP header</em>, that is <c>"\r\n\r\n",</c> the server will assume that no HTTP header fields will be generated.</p> </desc> @@ -118,8 +118,8 @@ <desc> <p>This callback format consumes a lot of memory since the whole response must be generated before it is sent to the - user. This functions is deprecated and only keept for backwards - compatibility. + user. This function is deprecated and only kept for backwards + compatibility. For new development Module:Function/3 should be used.</p> </desc> </func> diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml index c53aa653d8..87a8c173a5 100644 --- a/lib/inets/doc/src/notes.xml +++ b/lib/inets/doc/src/notes.xml @@ -93,6 +93,57 @@ </section> <!-- 5.8 --> + + <section><title>Inets 5.7.1</title> + + <section><title>Improvements and New Features</title> + <p>-</p> + +<!-- + <list> + <item> + <p>[httpc|httpd] Added support for IPv6 with ssl. </p> + <p>Own Id: OTP-5566</p> + </item> + + </list> +--> + + </section> + + <section><title>Fixed Bugs and Malfunctions</title> +<!-- + <p>-</p> +--> + + <list> + <item> + <p>[httpc] Parsing of a cookie expire date should be more forgiving. + That is, if the parsing fails, the date should be ignored. + Also added support for (yet another) date format: + "Tue Jan 01 08:00:01 2036 GMT". </p> + <p>Own Id: OTP-9433</p> + </item> + + <item> + <p>[httpc] Rewrote cookie parsing. Among other things solving + cookie processing from www.expedia.com. </p> + <p>Own Id: OTP-9434</p> + </item> + + <item> + <p>[httpd] Fix httpd directory traversal on Windows. + Directory traversal was possible on Windows where + backward slash is used as directory separator. </p> + <p>Andr�s Veres-Szentkir�lyi.</p> + <p>Own Id: OTP-9561</p> + </item> + + </list> + </section> + + </section> <!-- 5.7.1 --> + <section><title>Inets 5.7</title> diff --git a/lib/inets/doc/src/notes_history.xml b/lib/inets/doc/src/notes_history.xml index 6480bad758..f70ce5cf46 100644 --- a/lib/inets/doc/src/notes_history.xml +++ b/lib/inets/doc/src/notes_history.xml @@ -123,7 +123,7 @@ re-receive of acknowledgments. If multiple copies of the same acknowledgments is received the spurious ones are silently ignored. This fix was intended for inets-4.7.14 - but accidentaly it was not included in that release.</p> + but accidentally it was not included in that release.</p> <p>Own Id: OTP-6706 Aux Id: OTP-6691 </p> </item> </list> diff --git a/lib/inets/src/http_client/httpc_cookie.erl b/lib/inets/src/http_client/httpc_cookie.erl index 4d61f82b5a..1addbe944d 100644 --- a/lib/inets/src/http_client/httpc_cookie.erl +++ b/lib/inets/src/http_client/httpc_cookie.erl @@ -18,12 +18,32 @@ %% %% Description: Cookie handling according to RFC 2109 +%% The syntax for the Set-Cookie response header is +%% +%% set-cookie = "Set-Cookie:" cookies +%% cookies = 1#cookie +%% cookie = NAME "=" VALUE *(";" cookie-av) +%% NAME = attr +%% VALUE = value +%% cookie-av = "Comment" "=" value +%% | "Domain" "=" value +%% | "Max-Age" "=" value +%% | "Path" "=" value +%% | "Secure" +%% | "Version" "=" 1*DIGIT + + +%% application:start(inets). +%% httpc:set_options([{cookies, enabled}, {proxy, {{"www-proxy.ericsson.se",8080}, ["*.ericsson.se"]}}]). +%% (catch httpc:request("http://www.expedia.com")). + -module(httpc_cookie). -include("httpc_internal.hrl"). -export([open_db/3, close_db/1, insert/2, header/4, cookies/3]). -export([reset_db/1, which_cookies/1]). +-export([image_of/2, print/2]). -record(cookie_db, {db, session_db}). @@ -125,7 +145,7 @@ insert(#cookie_db{db = Db} = CookieDb, name = Name, path = Path, max_age = 0}) -> - ?hcrt("insert", [{domain, Key}, {name, Name}, {path, Path}]), + ?hcrt("insert cookie", [{domain, Key}, {name, Name}, {path, Path}]), Pattern = #http_cookie{domain = Key, name = Name, path = Path, _ = '_'}, case dets:match_object(Db, Pattern) of [] -> @@ -136,7 +156,7 @@ insert(#cookie_db{db = Db} = CookieDb, ok; insert(#cookie_db{db = Db} = CookieDb, #http_cookie{domain = Key, name = Name, path = Path} = Cookie) -> - ?hcrt("insert", [{cookie, Cookie}]), + ?hcrt("insert cookie", [{cookie, Cookie}]), Pattern = #http_cookie{domain = Key, name = Name, path = Path, @@ -163,6 +183,7 @@ header(CookieDb, Scheme, {Host, _}, Path) -> [] -> {"cookie", ""}; Cookies -> + %% print_cookies("Header Cookies", Cookies), {"cookie", cookies_to_string(Scheme, Cookies)} end. @@ -173,11 +194,20 @@ header(CookieDb, Scheme, {Host, _}, Path) -> %%-------------------------------------------------------------------- cookies(Headers, RequestPath, RequestHost) -> + ?hcrt("cookies", [{headers, Headers}, {request_path, RequestPath}, {request_host, RequestHost}]), + Cookies = parse_set_cookies(Headers, {RequestPath, RequestHost}), - accept_cookies(Cookies, RequestPath, RequestHost). + + %% print_cookies("Parsed Cookies", Cookies), + + AcceptedCookies = accept_cookies(Cookies, RequestPath, RequestHost), + + %% print_cookies("Accepted Cookies", AcceptedCookies), + + AcceptedCookies. %%-------------------------------------------------------------------- @@ -266,7 +296,8 @@ cookies_to_string(_, [], CookieStrs) -> lists:flatten(lists:reverse(CookieStrs)) end; -cookies_to_string(https, [#http_cookie{secure = true} = Cookie| Cookies], +cookies_to_string(https = Scheme, + [#http_cookie{secure = true} = Cookie| Cookies], CookieStrs) -> Str = case Cookies of [] -> @@ -274,7 +305,7 @@ cookies_to_string(https, [#http_cookie{secure = true} = Cookie| Cookies], _ -> cookie_to_string(Cookie) ++ "; " end, - cookies_to_string(https, Cookies, [Str | CookieStrs]); + cookies_to_string(Scheme, Cookies, [Str | CookieStrs]); cookies_to_string(Scheme, [#http_cookie{secure = true}| Cookies], CookieStrs) -> @@ -303,63 +334,54 @@ add_domain(Str, #http_cookie{domain_default = true}) -> add_domain(Str, #http_cookie{domain = Domain}) -> Str ++ "; $Domain=" ++ Domain. -parse_set_cookies(OtherHeaders, DefaultPathDomain) -> - SetCookieHeaders = - lists:foldl(fun({"set-cookie", Value}, Acc) -> - [string:tokens(Value, ",")| Acc]; - (_, Acc) -> - Acc - end, [], OtherHeaders), - - lists:flatten( - lists:map(fun(CookieHeader) -> - NewHeader = fix_netscape_cookie(CookieHeader, []), - parse_set_cookie(NewHeader, [], DefaultPathDomain) - end, - SetCookieHeaders)). - -parse_set_cookie([], AccCookies, _) -> - AccCookies; -parse_set_cookie([CookieHeader | CookieHeaders], AccCookies, - Defaults = {DefaultPath, DefaultDomain}) -> - [CookieStr | Attributes] = case string:tokens(CookieHeader, ";") of - [CStr] -> - [CStr, ""]; - [CStr | Attr] -> - [CStr, Attr] - end, - Pos = string:chr(CookieStr, $=), - Name = string:substr(CookieStr, 1, Pos - 1), - Value = string:substr(CookieStr, Pos + 1), - Cookie = #http_cookie{name = string:strip(Name), - value = string:strip(Value)}, - NewAttributes = parse_set_cookie_attributes(Attributes), - TmpCookie = cookie_attributes(NewAttributes, Cookie), +parse_set_cookies(CookieHeaders, DefaultPathDomain) -> + SetCookieHeaders = [Value || {"set-cookie", Value} <- CookieHeaders], + Cookies = [parse_set_cookie(SetCookieHeader, DefaultPathDomain) || + SetCookieHeader <- SetCookieHeaders], + %% print_cookies("Parsed Cookies", Cookies), + Cookies. + +parse_set_cookie(CookieHeader, {DefaultPath, DefaultDomain}) -> + %% io:format("Raw Cookie: ~s~n", [CookieHeader]), + Pos = string:chr(CookieHeader, $=), + Name = string:substr(CookieHeader, 1, Pos - 1), + {Value, Attrs} = + case string:substr(CookieHeader, Pos + 1) of + [$;|ValueAndAttrs] -> + {"", string:tokens(ValueAndAttrs, ";")}; + ValueAndAttrs -> + [V | A] = string:tokens(ValueAndAttrs, ";"), + {V, A} + end, + Cookie = #http_cookie{name = string:strip(Name), + value = string:strip(Value)}, + Attributes = parse_set_cookie_attributes(Attrs), + TmpCookie = cookie_attributes(Attributes, Cookie), %% Add runtime defult values if necessary - NewCookie = domain_default(path_default(TmpCookie, DefaultPath), - DefaultDomain), - parse_set_cookie(CookieHeaders, [NewCookie | AccCookies], Defaults). - -parse_set_cookie_attributes([]) -> - []; -parse_set_cookie_attributes([Attributes]) -> - lists:map(fun(Attr) -> - [AttrName, AttrValue] = - case string:tokens(Attr, "=") of - %% All attributes have the form - %% Name=Value except "secure"! - [Name] -> - [Name, ""]; - [Name, Value] -> - [Name, Value]; - %% Anything not expected will be - %% disregarded - _ -> - ["Dummy",""] - end, - {http_util:to_lower(string:strip(AttrName)), - string:strip(AttrValue)} - end, Attributes). + NewCookie = domain_default(path_default(TmpCookie, DefaultPath), + DefaultDomain), + NewCookie. + +parse_set_cookie_attributes(Attributes) when is_list(Attributes) -> + [parse_set_cookie_attribute(A) || A <- Attributes]. + +parse_set_cookie_attribute(Attribute) -> + {AName, AValue} = + case string:tokens(Attribute, "=") of + %% All attributes have the form + %% Name=Value except "secure"! + [Name] -> + {Name, ""}; + [Name, Value] -> + {Name, Value}; + %% Anything not expected will be + %% disregarded + _ -> + {"Dummy", ""} + end, + StrippedName = http_util:to_lower(string:strip(AName)), + StrippedValue = string:strip(AValue), + {StrippedName, StrippedValue}. cookie_attributes([], Cookie) -> Cookie; @@ -375,10 +397,15 @@ cookie_attributes([{"max-age", Value}| Attributes], Cookie) -> Cookie#http_cookie{max_age = ExpireTime}); %% Backwards compatibility with netscape cookies cookie_attributes([{"expires", Value}| Attributes], Cookie) -> - Time = http_util:convert_netscapecookie_date(Value), - ExpireTime = calendar:datetime_to_gregorian_seconds(Time), - cookie_attributes(Attributes, - Cookie#http_cookie{max_age = ExpireTime}); + try http_util:convert_netscapecookie_date(Value) of + Time -> + ExpireTime = calendar:datetime_to_gregorian_seconds(Time), + cookie_attributes(Attributes, + Cookie#http_cookie{max_age = ExpireTime}) + catch + _:_ -> + cookie_attributes(Attributes, Cookie) + end; cookie_attributes([{"path", Value}| Attributes], Cookie) -> cookie_attributes(Attributes, Cookie#http_cookie{path = Value}); @@ -404,7 +431,7 @@ path_default(#http_cookie{path = undefined} = Cookie, DefaultPath) -> path_default(Cookie, _) -> Cookie. -%% Note: if the path is only / that / will be keept +%% Note: if the path is only / that / will be kept skip_right_most_slash("/") -> "/"; skip_right_most_slash(Str) -> @@ -476,20 +503,43 @@ path_sort(Cookies)-> lists:reverse(lists:keysort(#http_cookie.path, Cookies)). -%% Informally, the Set-Cookie response header comprises the token -%% Set-Cookie:, followed by a comma-separated list of one or more -%% cookies. Netscape cookies expires attribute may also have a, -%% in this case the header list will have been incorrectly split -%% in parse_set_cookies/2 this functions fix that problem. -fix_netscape_cookie([Cookie1, Cookie2 | Rest], Acc) -> - case inets_regexp:match(string:to_lower(Cookie1), "expires=") of - {_, _, _} -> - fix_netscape_cookie(Rest, [Cookie1 ++ Cookie2 | Acc]); - nomatch -> - fix_netscape_cookie([Cookie2 |Rest], [Cookie1| Acc]) - end; -fix_netscape_cookie([Cookie | Rest], Acc) -> - fix_netscape_cookie(Rest, [Cookie | Acc]); - -fix_netscape_cookie([], Acc) -> - Acc. +%% print_cookies(Header, Cookies) -> +%% io:format("~s:~n", [Header]), +%% Prefix = " ", +%% lists:foreach(fun(Cookie) -> print(Prefix, Cookie) end, Cookies). + +image_of(Prefix, + #http_cookie{domain = Domain, + domain_default = DomainDef, + name = Name, + value = Value, + comment = Comment, + max_age = MaxAge, + path = Path, + path_default = PathDef, + secure = Sec, + version = Version}) -> + lists:flatten( + io_lib:format("~sCookie ~s: " + "~n~s Value: ~p" + "~n~s Domain: ~p" + "~n~s DomainDef: ~p" + "~n~s Comment: ~p" + "~n~s MaxAge: ~p" + "~n~s Path: ~p" + "~n~s PathDef: ~p" + "~n~s Secure: ~p" + "~n~s Version: ~p", + [Prefix, Name, + Prefix, Value, + Prefix, Domain, + Prefix, DomainDef, + Prefix, Comment, + Prefix, MaxAge, + Prefix, Path, + Prefix, PathDef, + Prefix, Sec, + Prefix, Version])). + +print(Prefix, Cookie) when is_record(Cookie, http_cookie) -> + io:format("~s~n", [image_of(Prefix, Cookie)]). diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl index 9ac9ee6f7b..587e24cc8d 100644 --- a/lib/inets/src/http_client/httpc_handler.erl +++ b/lib/inets/src/http_client/httpc_handler.erl @@ -1157,7 +1157,7 @@ handle_cookies(Headers, Request, #options{cookies = enabled}, ProfileName) -> httpc_manager:store_cookies(Cookies, Request#request.address, ProfileName). -%% This request could not be pipelined or used as sequential keept alive +%% This request could not be pipelined or used as sequential keep alive %% queue handle_queue(#state{status = close} = State, _) -> {stop, normal, State}; diff --git a/lib/inets/src/http_lib/http_util.erl b/lib/inets/src/http_lib/http_util.erl index 5511ed388d..973600d7be 100644 --- a/lib/inets/src/http_lib/http_util.erl +++ b/lib/inets/src/http_lib/http_util.erl @@ -104,6 +104,22 @@ convert_netscapecookie_date([_D,_A,_Y, $ , Sec = list_to_integer([S1,S2]), {{Year,Month,Day},{Hour,Min,Sec}}; +%% Example: Tue Jan 01 08:00:01 2036 GMT +convert_netscapecookie_date([_D,_A,_Y, $ , + M,O,N, $ , + D1,D2, $ , + H1,H2, $:, + M1,M2, $:, + S1,S2, $ , + Y1,Y2,Y3,Y4, $ |_Rest]) -> + Year = list_to_integer([Y1,Y2,Y3,Y4]), + Day = list_to_integer([D1,D2]), + Month = convert_month([M,O,N]), + Hour = list_to_integer([H1,H2]), + Min = list_to_integer([M1,M2]), + Sec = list_to_integer([S1,S2]), + {{Year,Month,Day},{Hour,Min,Sec}}; + %% Sloppy... convert_netscapecookie_date([_D,_A,_Y, $,, _SP, D1,D2,_DA, diff --git a/lib/inets/src/http_server/httpd_conf.erl b/lib/inets/src/http_server/httpd_conf.erl index 189527e2b3..1ff73d756b 100644 --- a/lib/inets/src/http_server/httpd_conf.erl +++ b/lib/inets/src/http_server/httpd_conf.erl @@ -304,7 +304,7 @@ load("MaxKeepAliveRequests " ++ MaxRequests, []) -> " is an invalid MaxKeepAliveRequests")} end; -%% This clause is keept for backwards compability +%% This clause is kept for backwards compatibility load("MaxKeepAliveRequest " ++ MaxRequests, []) -> case make_integer(MaxRequests) of {ok, Integer} -> diff --git a/lib/inets/src/http_server/httpd_esi.erl b/lib/inets/src/http_server/httpd_esi.erl index 026ec9a5fe..aac5645282 100644 --- a/lib/inets/src/http_server/httpd_esi.erl +++ b/lib/inets/src/http_server/httpd_esi.erl @@ -39,7 +39,7 @@ %% body part. Note that it is presumed that <Data> starts with a %% string including "\r\n\r\n" if there is any header information %% present. The returned headers will not contain the HTTP header body -%% delimiter \r\n. (All header, header delimiters are keept.) +%% delimiter \r\n. (All header, header delimiters are kept.) %% Ex: ["Content-Type : text/html\r\n Connection : closing \r\n\r\n" | %% io_list()] --> {"Content-Type : text/html\r\n Connection : closing \r\n", %% io_list()} diff --git a/lib/inets/src/http_server/httpd_request.erl b/lib/inets/src/http_server/httpd_request.erl index 7084d9824a..90f8bdd912 100644 --- a/lib/inets/src/http_server/httpd_request.erl +++ b/lib/inets/src/http_server/httpd_request.erl @@ -312,8 +312,8 @@ validate_uri(RequestURI) -> {'EXIT',_Reason} -> {error, {bad_request, {malformed_syntax, RequestURI}}}; _ -> - Path = format_request_uri(UriNoQueryNoHex), - Path2=[X||X<-string:tokens(Path, "/"),X=/="."], %% OTP-5938 + Path = format_request_uri(UriNoQueryNoHex), + Path2 = [X||X<-string:tokens(Path, "/\\"),X=/="."], validate_path( Path2,0, RequestURI) end. diff --git a/lib/inets/src/http_server/mod_auth_mnesia.erl b/lib/inets/src/http_server/mod_auth_mnesia.erl index ffe028617b..b7b9520649 100644 --- a/lib/inets/src/http_server/mod_auth_mnesia.erl +++ b/lib/inets/src/http_server/mod_auth_mnesia.erl @@ -55,7 +55,7 @@ store_directory_data(_Directory, _DirData, _Server_root) -> %% API %% -%% Compability API +%% Compatibility API store_user(UserName, Password, Port, Dir, _AccessPassword) -> %% AccessPassword is ignored - was not used in previous version diff --git a/lib/inets/src/inets_app/inets.appup.src b/lib/inets/src/inets_app/inets.appup.src index 65cee34cb3..e6d315819c 100644 --- a/lib/inets/src/inets_app/inets.appup.src +++ b/lib/inets/src/inets_app/inets.appup.src @@ -18,6 +18,11 @@ {"%VSN%", [ + {"5.7.1", + [ + {restart_application, inets} + ] + }, {"5.7", [ {restart_application, inets} @@ -30,6 +35,11 @@ } ], [ + {"5.7.1", + [ + {restart_application, inets} + ] + }, {"5.7", [ {restart_application, inets} diff --git a/lib/inets/test/http_format_SUITE.erl b/lib/inets/test/http_format_SUITE.erl index 931ac6e024..04c7358715 100644 --- a/lib/inets/test/http_format_SUITE.erl +++ b/lib/inets/test/http_format_SUITE.erl @@ -584,7 +584,9 @@ convert_netscapecookie_date(Config) when is_list(Config) -> http_util:convert_netscapecookie_date("Sun, 12-Dec-06 08:59:38 GMT"), {{2006,12,12},{8,59,38}} = http_util:convert_netscapecookie_date("Sun 12-Dec-06 08:59:38 GMT"), - ok. + {{2036,1,1},{8,0,1}} = + http_util:convert_netscapecookie_date("Tue Jan 01 08:00:01 2036 GMT"), + ok. %%-------------------------------------------------------------------- %%% Internal functions diff --git a/lib/inets/test/httpc_cookie_SUITE.erl b/lib/inets/test/httpc_cookie_SUITE.erl index ba50a42633..93dbc270c5 100644 --- a/lib/inets/test/httpc_cookie_SUITE.erl +++ b/lib/inets/test/httpc_cookie_SUITE.erl @@ -119,10 +119,18 @@ end_per_testcase(Case, Config) -> suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> - [session_cookies_only, netscape_cookies, cookie_cancel, - cookie_expires, persistent_cookie, domain_cookie, - secure_cookie, update_cookie, update_cookie_session, - cookie_attributes]. + [ + session_cookies_only, + netscape_cookies, + cookie_cancel, + cookie_expires, + persistent_cookie, + domain_cookie, + secure_cookie, + update_cookie, + update_cookie_session, + cookie_attributes + ]. groups() -> []. @@ -305,38 +313,93 @@ secure_cookie(Config) when is_list(Config) -> tsp("secure_cookie -> done"), ok. +expect_cookie_header(No, ExpectedCookie) -> + case httpc:cookie_header(?URL) of + {"cookie", ExpectedCookie} -> + ok; + {"cookie", BadCookie} -> + io:format("Bad Cookie ~w: " + "~n Expected: ~s" + "~n Received: ~s" + "~n", [No, ExpectedCookie, BadCookie]), + exit({bad_cookie_header, No, ExpectedCookie, BadCookie}) + end. + +print_cookies(Pre) -> + io:format("~s: ", [Pre]), + print_cookies2(httpc:which_cookies()). + +print_cookies2([]) -> + ok; +print_cookies2([{cookies, Cookies}|Rest]) -> + print_cookies3("Cookies", Cookies), + print_cookies2(Rest); +print_cookies2([{session_cookies, Cookies}|Rest]) -> + print_cookies3("Session Cookies", Cookies), + print_cookies2(Rest); +print_cookies2([_|Rest]) -> + print_cookies2(Rest). + +print_cookies3(Header, []) -> + io:format(" ~s: []", [Header]); +print_cookies3(Header, Cookies) -> + io:format(" ~s: ", [Header]), + Prefix = " ", + PrintCookie = + fun(Cookie) -> + io:format("~s", [httpc_cookie:image_of(Prefix, Cookie)]) + end, + lists:foreach(PrintCookie, Cookies). + update_cookie(doc)-> - ["Test that a cookie can be updated."]; + ["Test that a (plain) cookie can be updated."]; update_cookie(suite) -> []; -update_cookie(Config) when is_list(Config)-> - SetCookieHeaders = [{"set-cookie", "test_cookie=true; path=/;" - "max-age=6500"}, - {"set-cookie", "test_cookie2=true; path=/;" - "max-age=6500"}], +update_cookie(Config) when is_list(Config) -> + print_cookies("Cookies before store"), + + SetCookieHeaders = + [{"set-cookie", "test_cookie=true; path=/; max-age=6500"}, + {"set-cookie", "test_cookie2=true; path=/; max-age=6500"}], httpc:store_cookies(SetCookieHeaders, ?URL), - {"cookie", "$Version=0; test_cookie2=true; $Path=/; " - "test_cookie=true; $Path=/"} = httpc:cookie_header(?URL), - NewSetCookieHeaders = [{"set-cookie", "test_cookie=false; " - "path=/;max-age=6500"}], + print_cookies("Cookies after first store"), + ExpectCookie1 = + "$Version=0; " + "test_cookie=true; $Path=/; " + "test_cookie2=true; $Path=/", + expect_cookie_header(1, ExpectCookie1), + + NewSetCookieHeaders = + [{"set-cookie", "test_cookie=false; path=/; max-age=6500"}], httpc:store_cookies(NewSetCookieHeaders, ?URL), - {"cookie", "$Version=0; test_cookie2=true; $Path=/; " - "test_cookie=false; $Path=/"} = httpc:cookie_header(?URL). - + print_cookies("Cookies after second store"), + ExpectCookie2 = + "$Version=0; " + "test_cookie2=true; $Path=/; " + "test_cookie=false; $Path=/", + expect_cookie_header(2, ExpectCookie2). + update_cookie_session(doc)-> - ["Test that a cookie can be updated."]; + ["Test that a session cookie can be updated."]; update_cookie_session(suite) -> []; update_cookie_session(Config) when is_list(Config)-> + print_cookies("Cookies before store"), + SetCookieHeaders = [{"set-cookie", "test_cookie=true; path=/"}, {"set-cookie", "test_cookie2=true; path=/"}], httpc:store_cookies(SetCookieHeaders, ?URL), - {"cookie", "$Version=0; test_cookie2=true; $Path=/; " - "test_cookie=true; $Path=/"} = httpc:cookie_header(?URL), + print_cookies("Cookies after first store"), + ExpectedCookie1 = + "$Version=0; test_cookie=true; $Path=/; test_cookie2=true; $Path=/", + expect_cookie_header(1, ExpectedCookie1), + NewSetCookieHeaders = [{"set-cookie", "test_cookie=false; path=/"}], httpc:store_cookies(NewSetCookieHeaders, ?URL), - {"cookie", "$Version=0; test_cookie2=true; $Path=/; " - "test_cookie=false; $Path=/"} = httpc:cookie_header(?URL). + print_cookies("Cookies after second store"), + ExpectedCookie2 = + "$Version=0; test_cookie2=true; $Path=/; test_cookie=false; $Path=/", + expect_cookie_header(2, ExpectedCookie2). cookie_attributes(doc) -> diff --git a/lib/inets/test/httpd_SUITE.erl b/lib/inets/test/httpd_SUITE.erl index ea704e509e..faeed3b5f9 100644 --- a/lib/inets/test/httpd_SUITE.erl +++ b/lib/inets/test/httpd_SUITE.erl @@ -593,7 +593,7 @@ init_per_testcase3(Case, Config) -> ok -> "mod_htaccess"; Other -> - error_logger:info_report("Other: ~p~n", [Other]), + error_logger:info_msg("Other: ~p~n", [Other]), {skip, "SSL does not seem to be supported"} end; [X, $s, $s, $l, $_ | Rest] -> @@ -609,7 +609,7 @@ init_per_testcase3(Case, Config) -> ok -> Rest; Other -> - error_logger:info_report("Other: ~p~n", [Other]), + error_logger:info_msg("Other: ~p~n", [Other]), {skip, "SSL does not seem to be supported"} end; "ipv6_" ++ _ = TestCaseStr -> diff --git a/lib/kernel/doc/src/app.xml b/lib/kernel/doc/src/app.xml index ef1f5985f4..ff8a12fe97 100644 --- a/lib/kernel/doc/src/app.xml +++ b/lib/kernel/doc/src/app.xml @@ -4,7 +4,7 @@ <fileref> <header> <copyright> - <year>1997</year><year>2009</year> + <year>1997</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -170,7 +170,6 @@ Phases [{Phase,PhaseArgs}] undefined start phase defined by the <c>start_phases</c> key, and only after this extended start procedure will <c>application:start(Application)</c> return.</p> - <p></p> <p>Start phases may be used to synchronize startup of an application and its included applications. In this case, the <c>mod</c> key must be specified as:</p> @@ -182,7 +181,6 @@ Phases [{Phase,PhaseArgs}] undefined for the primary application) both for the primary application and for each of its included application, for which the start phase is defined.</p> - <p></p> <p>This implies that for an included application, the set of start phases must be a subset of the set of phases defined for the primary application. Refer to <em>OTP Design Principles</em> for more information.</p> diff --git a/lib/kernel/doc/src/code.xml b/lib/kernel/doc/src/code.xml index 98cdd416b0..6b89711924 100644 --- a/lib/kernel/doc/src/code.xml +++ b/lib/kernel/doc/src/code.xml @@ -177,9 +177,9 @@ archives. But the functions in <c>erl_prim_loader</c> may also be used by other applications to read files from archives. For example, the call - <c>erl_prim_loader:list_dir("/otp/root/lib/mnesia-4.4.7.ez/mnesia-4.4.7/examples/bench)"</c> + <c>erl_prim_loader:list_dir( "/otp/root/lib/mnesia-4.4.7.ez/mnesia-4.4.7/examples/bench)"</c> would list the contents of a directory inside an archive. - See <seealso marker="erts:erl_prim_loader">erl_prim_loader(3)</seealso></p> + See <seealso marker="erts:erl_prim_loader">erl_prim_loader(3)</seealso></p>. <p>An application archive file and a regular application directory may coexist. This may be useful when there is a need of having diff --git a/lib/kernel/doc/src/disk_log.xml b/lib/kernel/doc/src/disk_log.xml index 9721907162..d278d54d93 100644 --- a/lib/kernel/doc/src/disk_log.xml +++ b/lib/kernel/doc/src/disk_log.xml @@ -475,8 +475,7 @@ <fsummary>Close a disk log.</fsummary> <type name="close_error_rsn"/> <desc> - <p> <marker id="close_1"></marker> -The function <c>close/1</c> closes a + <p><marker id="close_1"></marker>The function <c>close/1</c> closes a local or distributed disk log properly. An internally formatted log must be closed before the Erlang system is stopped, otherwise the log is regarded as unclosed and the diff --git a/lib/kernel/doc/src/erl_ddll.xml b/lib/kernel/doc/src/erl_ddll.xml index f9514dda2f..1911fb628e 100644 --- a/lib/kernel/doc/src/erl_ddll.xml +++ b/lib/kernel/doc/src/erl_ddll.xml @@ -989,7 +989,7 @@ <c>{ok, pending_driver}</c> or <c>{ok, pending_process}</c>.</p> </item> </taglist> - <p>The <c>pending_driver</c><c>MonitorOption</c> is by far + <p>The <c>pending_driver</c> <c>MonitorOption</c> is by far the most useful and it has to be used to ensure that the driver has really been unloaded and the ports closed whenever the <c>kill_ports</c> option is used or the diff --git a/lib/kernel/doc/src/file.xml b/lib/kernel/doc/src/file.xml index 861c582211..7db20e6343 100644 --- a/lib/kernel/doc/src/file.xml +++ b/lib/kernel/doc/src/file.xml @@ -60,11 +60,13 @@ converted, why the Unicode mode for file names is not default on systems having completely transparent file naming.</p> - <note>As of R14B01, the most basic file handling modules - (<c>file</c>, <c>prim_file</c>, <c>filelib</c> and - <c>filename</c>) accept raw file names, but the rest of OTP is not - guaranteed to handle them, why Unicode file naming on systems - where it is not default is still considered experimental.</note> + <note> + <p>As of R14B01, the most basic file handling modules + (<c>file</c>, <c>prim_file</c>, <c>filelib</c> and + <c>filename</c>) accept raw file names, but the rest of OTP is not + guaranteed to handle them, why Unicode file naming on systems + where it is not default is still considered experimental.</p> + </note> <p>Raw file names is a new feature in OTP R14B01, which allows the user to supply completely uninterpreted file names to the @@ -249,11 +251,9 @@ </item> </taglist> <p>Example:</p> - <code type="none"> -f.txt: {person, "kalle", 25}. +<code type="none">f.txt: {person, "kalle", 25}. {person, "pelle", 30}.</code> - <pre> -1> <input>file:consult("f.txt").</input> +<pre>1> <input>file:consult("f.txt").</input> {ok,[{person,"kalle",25},{person,"pelle",30}]}</pre> </desc> </func> @@ -362,7 +362,6 @@ f.txt: {person, "kalle", 25}. <p>In a future release, a bad type for the <c><anno>Filename</anno></c> argument will probably generate an exception.</p> - <p></p> </warning> </desc> </func> @@ -1523,7 +1522,6 @@ f.txt: {person, "kalle", 25}. <p>In a future release, a bad type for the <c><anno>Dir</anno></c> argument will probably generate an exception.</p> - <p></p> </warning> </desc> </func> diff --git a/lib/kernel/doc/src/gen_sctp.xml b/lib/kernel/doc/src/gen_sctp.xml index cc49090386..688cd0f78f 100644 --- a/lib/kernel/doc/src/gen_sctp.xml +++ b/lib/kernel/doc/src/gen_sctp.xml @@ -47,8 +47,7 @@ SUSE Linux Enterprise Server 10 Service Pack 1 (x86_64) kernel 2.6.16.54-0.2.3-smp with lksctp-tools-1.0.7.</p> <p>Record definitions for the <c>gen_sctp</c> module can be found using:</p> - <pre> - -include_lib("kernel/include/inet_sctp.hrl"). </pre> +<pre> -include_lib("kernel/include/inet_sctp.hrl"). </pre> <p>These record definitions use the "new" spelling 'adaptation', not the deprecated 'adaption', regardless of which spelling the underlying C API uses.</p> @@ -152,8 +151,7 @@ The result of <c>connect/*</c> is an <c>#sctp_assoc_change{}</c> event which contains, in particular, the new <seealso marker="#type-assoc_id">Association ID</seealso>.</p> - <pre> - #sctp_assoc_change{ +<pre> #sctp_assoc_change{ state = atom(), error = atom(), outbound_streams = integer(), @@ -163,8 +161,7 @@ <p>The number of outbound and inbound streams can be set by giving an <c>sctp_initmsg</c> option to <c>connect</c> as in:</p> - <pre> - connect(<anno>Socket</anno>, Ip, <anno>Port</anno>, +<pre> connect(<anno>Socket</anno>, Ip, <anno>Port</anno>, [{sctp_initmsg,#sctp_initmsg{num_ostreams=OutStreams, max_instreams=MaxInStreams}}]) </pre> <p>All options <c><anno>Opt</anno></c> are set on the socket before the @@ -340,8 +337,7 @@ <p><seealso marker="#record-sctp_assoc_change">#sctp_assoc_change{}</seealso>;</p> </item> <item> - <pre> - #sctp_paddr_change{ +<pre> #sctp_paddr_change{ addr = {ip_address(),port()}, state = atom(), error = integer(), @@ -378,8 +374,7 @@ converted into a string using <c>error_string/1</c>.</p> </item> <item> - <pre> - #sctp_send_failed{ +<pre> #sctp_send_failed{ flags = true | false, error = integer(), info = #sctp_sndrcvinfo{}, @@ -399,8 +394,7 @@ returned by <c>recv/*</c>.</p> </item> <item> - <pre> - #sctp_adaptation_event{ +<pre> #sctp_adaptation_event{ adaptation_ind = integer(), assoc_id = assoc_id() } </pre> @@ -411,8 +405,7 @@ the Erlang/SCTP binding, this event is disabled by default.</p> </item> <item> - <pre> - #sctp_pdapi_event{ +<pre> #sctp_pdapi_event{ indication = sctp_partial_delivery_aborted, assoc_id = assoc_id() } </pre> @@ -469,7 +462,7 @@ <marker id="option-binary"></marker> <marker id="option-list"></marker> <taglist> - <tag><c>{mode, list|binary}</c>or just <c>list</c> or <c>binary</c>.</tag> + <tag><c>{mode, list|binary}</c> or just <c>list</c> or <c>binary</c></tag> <item> <p>Determines the type of data returned from <c>gen_sctp:recv/1,2</c>.</p> <marker id="option-active"></marker> @@ -562,8 +555,7 @@ </item> <tag><c>{sctp_rtoinfo, #sctp_rtoinfo{}}</c></tag> <item> - <pre> - #sctp_rtoinfo{ +<pre> #sctp_rtoinfo{ assoc_id = assoc_id(), initial = integer(), max = integer(), @@ -577,8 +569,7 @@ </item> <tag><c>{sctp_associnfo, #sctp_assocparams{}}</c></tag> <item> - <pre> - #sctp_assocparams{ +<pre> #sctp_assocparams{ assoc_id = assoc_id(), asocmaxrxt = integer(), number_peer_destinations = integer(), @@ -593,8 +584,7 @@ </item> <tag><c>{sctp_initmsg, #sctp_initmsg{}}</c></tag> <item> - <pre> - #sctp_initmsg{ +<pre> #sctp_initmsg{ num_ostreams = integer(), max_instreams = integer(), max_attempts = integer(), @@ -622,7 +612,6 @@ for establishing an association.</p> </item> </list> - <p></p> </item> <tag><c>{sctp_autoclose, integer() >= 0}</c></tag> <item> @@ -657,8 +646,7 @@ </item> <tag><c>{sctp_primary_addr, #sctp_prim{}}</c></tag> <item> - <pre> - #sctp_prim{ +<pre> #sctp_prim{ assoc_id = assoc_id(), addr = {IP, Port} } @@ -671,8 +659,7 @@ </item> <tag><c>{sctp_set_peer_primary_addr, #sctp_setpeerprim{}}</c></tag> <item> - <pre> - #sctp_setpeerprim{ +<pre> #sctp_setpeerprim{ assoc_id = assoc_id(), addr = {IP, Port} } @@ -686,8 +673,7 @@ <tag><c>{sctp_adaptation_layer, #sctp_setadaptation{}}</c></tag> <item> <marker id="record-sctp_setadaptation"></marker> - <pre> - #sctp_setadaptation{ +<pre> #sctp_setadaptation{ adaptation_ind = integer() } </pre> <p>When set, requests that the local endpoint uses the value given by @@ -698,8 +684,7 @@ </item> <tag><c>{sctp_peer_addr_params, #sctp_paddrparams{}}</c></tag> <item> - <pre> - #sctp_paddrparams{ +<pre> #sctp_paddrparams{ assoc_id = assoc_id(), address = {IP, Port}, hbinterval = integer(), @@ -756,16 +741,13 @@ <p><c>sackdelay_disable</c>: disable SAC delay.</p> </item> </list> - <p></p> </item> </list> - <p></p> </item> <tag><c>{sctp_default_send_param, #sctp_sndrcvinfo{}}</c></tag> <item> <marker id="record-sctp_sndrcvinfo"></marker> - <pre> - #sctp_sndrcvinfo{ +<pre> #sctp_sndrcvinfo{ stream = integer(), ssn = integer(), flags = list(), @@ -807,20 +789,17 @@ association, with flushing of unsent data.</p> </item> </list> - <p></p> <p>Other fields are rarely used. See <url href="http://www.rfc-archive.org/getrfc.php?rfc=2960">RFC2960</url> and <url href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets API Extensions for SCTP</url> for full information.</p> </item> </list> - <p></p> <marker id="option-sctp_events"></marker> </item> <tag><c>{sctp_events, #sctp_event_subscribe{}}</c></tag> <item> <marker id="record-sctp_event_subscribe"></marker> - <pre> - #sctp_event_subscribe{ +<pre> #sctp_event_subscribe{ data_io_event = true | false, association_event = true | false, address_event = true | false, @@ -845,8 +824,7 @@ </item> <tag><c>{sctp_delayed_ack_time, #sctp_assoc_value{}}</c></tag> <item> - <pre> - #sctp_assoc_value{ +<pre> #sctp_assoc_value{ assoc_id = assoc_id(), assoc_value = integer() } </pre> @@ -857,8 +835,7 @@ </item> <tag><c>{sctp_status, #sctp_status{}}</c></tag> <item> - <pre> - #sctp_status{ +<pre> #sctp_status{ assoc_id = assoc_id(), state = atom(), rwnd = integer(), @@ -930,14 +907,12 @@ address (see below for the format of <c>#sctp_paddrinfo{}</c>).</p> </item> </list> - <p></p> <marker id="option-sctp_get_peer_addr_info"></marker> </item> <tag><c>{sctp_get_peer_addr_info, #sctp_paddrinfo{}}</c></tag> <item> <marker id="record-sctp_paddrinfo"></marker> - <pre> - #sctp_paddrinfo{ +<pre> #sctp_paddrinfo{ assoc_id = assoc_id(), address = {IP, Port}, state = inactive | active, @@ -968,8 +943,7 @@ <item> <p>Example of an Erlang SCTP Server which receives SCTP messages and prints them on the standard output:</p> - <pre> - -module(sctp_server). +<pre> -module(sctp_server). -export([server/0,server/1,server/2]). -include_lib("kernel/include/inet.hrl"). @@ -998,7 +972,6 @@ io:format("Received: ~p~n", [Data]) end, server_loop(S). </pre> - <p></p> </item> <item> <p>Example of an Erlang SCTP Client which interacts with the above Server. @@ -1008,8 +981,7 @@ over Stream 5 fails. The client then <c>abort</c>s the association, which results in the corresponding Event being received on the Server side.</p> - <pre> - -module(sctp_client). +<pre> -module(sctp_client). -export([client/0, client/1, client/2]). -include_lib("kernel/include/inet.hrl"). @@ -1042,13 +1014,11 @@ timer:sleep(1000), gen_sctp:close(S). </pre> - <p></p> </item> <item> <p>A very simple Erlang SCTP Client which uses the connect_init API.</p> - <pre> --module(ex3). +<pre>-module(ex3). -export([client/4]). -include_lib("kernel/include/inet.hrl"). @@ -1101,7 +1071,6 @@ client_loop(S, Peer1, Port1, AssocId1, Peer2, Port2, AssocId2) -> ok end. </pre> - <p></p> </item> </list> </section> diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index b36c28e027..fad5af85bb 100644 --- a/lib/kernel/doc/src/inet.xml +++ b/lib/kernel/doc/src/inet.xml @@ -555,8 +555,14 @@ fe80::204:acff:fe17:bf38 mode will return <c>{ok, HttpPacket}</c> from <c>gen_tcp:recv</c> while an active socket will send messages like <c>{http, Socket, HttpPacket}</c>.</p> - <p>Note that the packet type <c>httph</c> is not - needed when reading from a socket.</p> + </item> + <tag><c>httph | httph_bin</c></tag> + <item> + <p>These two types are often not needed as the socket will + automatically switch from <c>http</c>/<c>http_bin</c> to + <c>httph</c>/<c>httph_bin</c> internally after the first line + has been read. There might be occasions however when they are + useful, such as parsing trailers from chunked encoding.</p> </item> </taglist> </item> diff --git a/lib/kernel/doc/src/net_kernel.xml b/lib/kernel/doc/src/net_kernel.xml index 96e2aa665d..3b7a710664 100644 --- a/lib/kernel/doc/src/net_kernel.xml +++ b/lib/kernel/doc/src/net_kernel.xml @@ -37,13 +37,10 @@ monitoring of the network.</p> <p>An Erlang node is started using the command line flag <c>-name</c> or <c>-sname</c>:</p> - <pre> -$ <input>erl -sname foobar</input></pre> +<pre>$ <input>erl -sname foobar</input></pre> <p>It is also possible to call <c>net_kernel:start([foobar])</c> directly from the normal Erlang shell prompt:</p> - <p></p> - <pre> -1> <input>net_kernel:start([foobar, shortnames]).</input> +<pre>1> <input>net_kernel:start([foobar, shortnames]).</input> {ok,<0.64.0>} (foobar@gringotts)2></pre> <p>If the node is started with the command line flag <c>-sname</c>, @@ -226,7 +223,6 @@ $ <input>erl -sname foobar</input></pre> <c><anno>NetTicktime</anno></c> seconds. <c><anno>TransitionPeriod</anno></c> defaults to 60.</p> <p>Some definitions:</p> - <p></p> <taglist> <tag>The minimum transition traffic interval (<c>MTTI</c>)</tag> <item> diff --git a/lib/kernel/doc/src/notes.xml b/lib/kernel/doc/src/notes.xml index e325443f6c..fc8360b3d1 100644 --- a/lib/kernel/doc/src/notes.xml +++ b/lib/kernel/doc/src/notes.xml @@ -2535,7 +2535,7 @@ <c>badarg</c> if a process is already registered. As it turns out there is no check in <c>global</c> if a process is registered under more than one name. If some process is - accidentaly or by design given several names, it is + accidentally or by design given several names, it is possible that the name registry becomes inconsistent due to the way the resolve function is called when name clashes are discovered (see <c>register_name/3</c> in diff --git a/lib/kernel/examples/uds_dist/c_src/uds_drv.c b/lib/kernel/examples/uds_dist/c_src/uds_drv.c index fb10a375f4..9327ab19dc 100644 --- a/lib/kernel/examples/uds_dist/c_src/uds_drv.c +++ b/lib/kernel/examples/uds_dist/c_src/uds_drv.c @@ -111,7 +111,7 @@ do { \ typedef enum { portTypeUnknown, /* An uninitialized port */ portTypeListener, /* A listening port/socket */ - portTypeAcceptor, /* An intermidiate stage when accepting + portTypeAcceptor, /* An intermediate stage when accepting on a listen port */ portTypeConnector, /* An intermediate stage when connecting */ portTypeCommand, /* A connected open port in command mode */ @@ -401,7 +401,7 @@ static void uds_finish(void) /* ** Protocol to control: ** 'C': Set port in command mode. -** 'I': Set port in intermidiate mode +** 'I': Set port in intermediate mode ** 'D': Set port in data mode ** 'N': Get identification number for listen port ** 'S': Get statistics @@ -1000,7 +1000,7 @@ static int ensure_dir(char *path) /* ** Try to open a lock file and lock the first byte write-only (advisory) -** return the file descriptor if succesful, otherwise -1 (<0). +** return the file descriptor if successful, otherwise -1 (<0). */ static int try_lock(char *sockname, Byte *p_creation) { diff --git a/lib/kernel/include/dist.hrl b/lib/kernel/include/dist.hrl new file mode 100644 index 0000000000..aea1ab81ba --- /dev/null +++ b/lib/kernel/include/dist.hrl @@ -0,0 +1,38 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%% Distribution capabilities flags (corresponds with dist.h). +%% + +-define(DFLAG_PUBLISHED,1). +-define(DFLAG_ATOM_CACHE,2). +-define(DFLAG_EXTENDED_REFERENCES,4). +-define(DFLAG_DIST_MONITOR,8). +-define(DFLAG_FUN_TAGS,16#10). +-define(DFLAG_DIST_MONITOR_NAME,16#20). +-define(DFLAG_HIDDEN_ATOM_CACHE,16#40). +-define(DFLAG_NEW_FUN_TAGS,16#80). +-define(DFLAG_EXTENDED_PIDS_PORTS,16#100). +-define(DFLAG_EXPORT_PTR_TAG,16#200). +-define(DFLAG_BIT_BINARIES,16#400). +-define(DFLAG_NEW_FLOATS,16#800). +-define(DFLAG_UNICODE_IO,16#1000). +-define(DFLAG_DIST_HDR_ATOM_CACHE,16#2000). +-define(DFLAG_SMALL_ATOM_TAGS, 16#4000). diff --git a/lib/kernel/include/dist_util.hrl b/lib/kernel/include/dist_util.hrl new file mode 100644 index 0000000000..f2b0598532 --- /dev/null +++ b/lib/kernel/include/dist_util.hrl @@ -0,0 +1,87 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% uncomment this if tracing of handshake etc is wanted +%%-define(dist_trace, true). +%%-define(dist_debug, true). + + +-ifdef(dist_debug). +-define(debug(Term), erlang:display(Term)). +-else. +-define(debug(Term), ok). +-endif. + +-ifdef(dist_trace). +-define(trace(Fmt,Args), io:format("~p ~p:~s",[erlang:now(),node(),lists:flatten(io_lib:format(Fmt, Args))])). +% Use the one below for config-file (early boot) connection tracing +%-define(trace(Fmt,Args), erlang:display([erlang:now(),node(),lists:flatten(io_lib:format(Fmt, Args))])). +-define(trace_factor,8). +-else. +-define(trace(Fmt,Args), ok). +-define(trace_factor,1). +-endif. + +-define(shutdown(Data), dist_util:shutdown(?MODULE, ?LINE, Data)). +-define(shutdown2(Data, Reason), dist_util:shutdown(?MODULE, ?LINE, Data, Reason)). + +%% Handshake state structure +-record(hs_data, { + kernel_pid, %% Pid of net_kernel + other_node, %% Name of peer + this_node, %% my nodename + socket, %% The connection "socket" + timer, %% The setup timer + %% (stream_dist_handshake:start_timer) + this_flags, %% Flags my node should use + allowed, %% Allowed nodes list + other_version, %% The other nodes distribution version + other_flags, %% The other nodes flags. + other_started, %% True if the other node initiated. + f_send, %% Fun that behaves like gen_tcp:send + f_recv, %% Fun that behaves like gen_tcp:recv + f_setopts_pre_nodeup, %% Sets "socket" options before + %% nodeup is delivered to net_kernel + f_setopts_post_nodeup, %% Sets "socket" options after + %% nodeup is delivered + f_getll, %% Get low level port or pid. + f_address, %% The address of the "socket", + %% generated from Socket,Node + %% These two are used in the tick loop, + %% so they are not fun's to avoid holding old code. + mf_tick, %% Takes the socket as parameters and + %% sends a tick, this is no fun, it + %% is a tuple {M,F}. + %% Is should place {tcp_closed, Socket} + %% in the message queue on failure. + mf_getstat, %% Returns + %% {ok, RecvCnt, SendCnt, SendPend} for + %% a given socket. This is a {M,F}, + %% returning {error, Reason on failure} + request_type = normal +}). + + +%% The following should be filled in upon enter of... +%% - handshake_we_started: +%% kernel_pid, other_node, this_node, socket, timer, +%% this_flags, other_version, All fun's/mf's. +%% - handshake_other_started: +%% kernel_pid, this_node, socket, timer, +%% this_flags, allowed, All fun's/mf's. + diff --git a/lib/kernel/include/net_address.hrl b/lib/kernel/include/net_address.hrl new file mode 100644 index 0000000000..5342076507 --- /dev/null +++ b/lib/kernel/include/net_address.hrl @@ -0,0 +1,28 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% Generic address format + +-record(net_address, + { + address, %% opaque address + host, %% host name + protocol, %% protocol + family %% address family + }). diff --git a/lib/kernel/src/Makefile b/lib/kernel/src/Makefile index 9db6014a7d..02be6b5036 100644 --- a/lib/kernel/src/Makefile +++ b/lib/kernel/src/Makefile @@ -118,11 +118,14 @@ MODULES = \ user_sup \ wrap_log_reader -HRL_FILES= ../include/file.hrl ../include/inet.hrl ../include/inet_sctp.hrl +HRL_FILES= ../include/file.hrl ../include/inet.hrl ../include/inet_sctp.hrl \ + ../include/dist.hrl ../include/dist_util.hrl \ + ../include/net_address.hrl + INTERNAL_HRL_FILES= application_master.hrl disk_log.hrl \ - net_address.hrl inet_dns.hrl inet_res.hrl \ + inet_dns.hrl inet_res.hrl \ inet_boot.hrl inet_config.hrl inet_int.hrl \ - dist.hrl dist_util.hrl inet_dns_record_adts.hrl + inet_dns_record_adts.hrl ERL_FILES= $(MODULES:%=%.erl) @@ -215,7 +218,7 @@ $(EBIN)/code_server.beam: ../include/file.hrl $(EBIN)/disk_log.beam: disk_log.hrl $(EBIN)/disk_log_1.beam: disk_log.hrl ../include/file.hrl $(EBIN)/disk_log_server.beam: disk_log.hrl -$(EBIN)/dist_util.beam: dist_util.hrl dist.hrl +$(EBIN)/dist_util.beam: ../include/dist_util.hrl ../include/dist.hrl $(EBIN)/erl_boot_server.beam: inet_boot.hrl $(EBIN)/erl_epmd.beam: inet_int.hrl erl_epmd.hrl $(EBIN)/file.beam: ../include/file.hrl @@ -226,7 +229,7 @@ $(EBIN)/global.beam: ../../stdlib/include/ms_transform.hrl $(EBIN)/hipe_unified_loader.beam: ../../hipe/main/hipe.hrl hipe_ext_format.hrl $(EBIN)/inet.beam: ../include/inet.hrl inet_int.hrl ../include/inet_sctp.hrl $(EBIN)/inet6_tcp.beam: inet_int.hrl -$(EBIN)/inet6_tcp_dist.beam: net_address.hrl dist.hrl dist_util.hrl +$(EBIN)/inet6_tcp_dist.beam: ../include/net_address.hrl ../include/dist.hrl ../include/dist_util.hrl $(EBIN)/inet6_udp.beam: inet_int.hrl $(EBIN)/inet6_sctp.beam: inet_int.hrl $(EBIN)/inet_config.beam: inet_config.hrl ../include/inet.hrl @@ -237,10 +240,10 @@ $(EBIN)/inet_hosts.beam: ../include/inet.hrl $(EBIN)/inet_parse.beam: ../include/file.hrl $(EBIN)/inet_res.beam: ../include/inet.hrl inet_res.hrl inet_dns.hrl inet_int.hrl $(EBIN)/inet_tcp.beam: inet_int.hrl -$(EBIN)/inet_udp_dist.beam: net_address.hrl dist.hrl dist_util.hrl +$(EBIN)/inet_udp_dist.beam: ../include/net_address.hrl ../include/dist.hrl ../include/dist_util.hrl $(EBIN)/inet_udp.beam: inet_int.hrl $(EBIN)/inet_sctp.beam: inet_int.hrl ../include/inet_sctp.hrl -$(EBIN)/net_kernel.beam: net_address.hrl +$(EBIN)/net_kernel.beam: ../include/net_address.hrl $(EBIN)/os.beam: ../include/file.hrl $(EBIN)/ram_file.beam: ../include/file.hrl $(EBIN)/wrap_log_reader.beam: disk_log.hrl ../include/file.hrl diff --git a/lib/kernel/src/auth.erl b/lib/kernel/src/auth.erl index ac25ab958c..c329a5652a 100644 --- a/lib/kernel/src/auth.erl +++ b/lib/kernel/src/auth.erl @@ -212,7 +212,7 @@ handle_info({From,badcookie,net_kernel,{From,spawn_link,_M,_F,_A,_Gleader}}, O) {noreply, O}; handle_info({_From,badcookie,ddd_server,_Mess}, O) -> %% Ignore bad messages to the ddd server, they will be resent - %% If the authentication is succesful + %% If the authentication is successful {noreply, O}; handle_info({From,badcookie,rex,_Msg}, O) -> auth:print(getnode(From), diff --git a/lib/kernel/test/file_SUITE.erl b/lib/kernel/test/file_SUITE.erl index fdab2eb02b..77fc7e73f9 100644 --- a/lib/kernel/test/file_SUITE.erl +++ b/lib/kernel/test/file_SUITE.erl @@ -2165,7 +2165,7 @@ write_compressed(Config) when is_list(Config) -> ?line Second = io:get_line(Fd1, ''), ?line ok = ?FILE_MODULE:close(Fd1), - %% Verify succesful compression by uncompressing the file + %% Verify successful compression by uncompressing the file %% using zlib:gunzip/1. ?line {ok,Contents} = file:read_file(MyFile), diff --git a/lib/megaco/doc/src/megaco.xml b/lib/megaco/doc/src/megaco.xml index b9bf414299..5dd622368c 100644 --- a/lib/megaco/doc/src/megaco.xml +++ b/lib/megaco/doc/src/megaco.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2000</year><year>2010</year> + <year>2000</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -646,7 +646,7 @@ megaco_incr_timer() = #megaco_incr_timer{} segments has not yet been received.</p> <p>When the timer finally expires, a "megaco segments not received" (459) error message is sent to the other side - and the user is notified with a <c><![CDATA[segment timeout]]></c><c><![CDATA[UserReply]]></c> in either the + and the user is notified with a <c><![CDATA[segment timeout]]></c> <c><![CDATA[UserReply]]></c> in either the <seealso marker="megaco_user#trans_reply">handle_trans_reply</seealso> callback function or the return value of the <seealso marker="megaco#call">call</seealso> function. </p> @@ -1165,7 +1165,7 @@ megaco_incr_timer() = #megaco_incr_timer{} <p>When the timer finally expires, a "megaco segments not received" (459) error message is sent to the other side and the user is notified with a - <c><![CDATA[segment timeout]]></c><c><![CDATA[UserReply]]></c> in either the + <c><![CDATA[segment timeout]]></c> <c><![CDATA[UserReply]]></c> in either the <seealso marker="megaco_user#trans_reply">handle_trans_reply</seealso> callback function or the return value of the diff --git a/lib/megaco/doc/src/notes.xml b/lib/megaco/doc/src/notes.xml index 4f678a2a1b..2aba8db71b 100644 --- a/lib/megaco/doc/src/notes.xml +++ b/lib/megaco/doc/src/notes.xml @@ -36,6 +36,48 @@ section is the version number of Megaco.</p> + <section><title>Megaco 3.15.1.1</title> + + <p>Version 3.15.1.1 supports code replacement in runtime from/to + version 3.15.1 and 3.15.</p> + + <section> + <title>Improvements and new features</title> + +<!-- + <p>-</p> +--> + + <list type="bulleted"> + <item> + <p>Correct various XML errors. </p> + <p>Own Id: OTP-9550</p> + </item> + + </list> + + </section> + + <section> + <title>Fixed bugs and malfunctions</title> + + <p>-</p> + + <!-- + <list type="bulleted"> + <item> + <p>Fixing miscellaneous things detected by dialyzer. </p> + <p>Own Id: OTP-9075</p> + </item> + + </list> + --> + + </section> + + </section> <!-- 3.15.1.1 --> + + <section><title>Megaco 3.15.1</title> <p>Version 3.15.1 supports code replacement in runtime from/to diff --git a/lib/megaco/src/app/megaco.appup.src b/lib/megaco/src/app/megaco.appup.src index 01b070d79f..7107178d1a 100644 --- a/lib/megaco/src/app/megaco.appup.src +++ b/lib/megaco/src/app/megaco.appup.src @@ -136,10 +136,17 @@ %% | %% v %% 3.15.1 +%% | +%% v +%% 3.15.1.1 %% %% {"%VSN%", [ + {"3.15.1", + [ + ] + }, {"3.15", [ {load_module, megaco_flex_scanner, soft_purge, soft_purge, []}, @@ -153,6 +160,10 @@ } ], [ + {"3.15.1", + [ + ] + }, {"3.15", [ {load_module, megaco_flex_scanner, soft_purge, soft_purge, []}, diff --git a/lib/megaco/vsn.mk b/lib/megaco/vsn.mk index 5f71712360..c1476488ca 100644 --- a/lib/megaco/vsn.mk +++ b/lib/megaco/vsn.mk @@ -18,6 +18,6 @@ # %CopyrightEnd% APPLICATION = megaco -MEGACO_VSN = 3.15.1 +MEGACO_VSN = 3.15.1.1 PRE_VSN = APP_VSN = "$(APPLICATION)-$(MEGACO_VSN)$(PRE_VSN)" diff --git a/lib/mnesia/doc/src/mnesia.xml b/lib/mnesia/doc/src/mnesia.xml index 7a8f796cee..19ec70118f 100644 --- a/lib/mnesia/doc/src/mnesia.xml +++ b/lib/mnesia/doc/src/mnesia.xml @@ -246,7 +246,7 @@ If a new item is inserted with the same key as </p> </item> <item> - <p><c>{max,MaxTabs}</c><c>MaxTabs</c> is a list of + <p><c>{max,MaxTabs}</c>. <c>MaxTabs</c> is a list of tables that should be included in the checkpoint. The default is []. For these tables, the redundancy will be maximized and checkpoint information will be retained together @@ -274,7 +274,7 @@ If a new item is inserted with the same key as </p> </item> <item> - <p><c>{ram_overrides_dump,Bool} </c> Only applicable + <p><c>{ram_overrides_dump,Bool}</c>. Only applicable for <c>ram_copies</c>. <c>Bool</c> allows you to choose to backup the table state as it is in RAM, or as it is on disc. <c>true</c> means that the latest committed diff --git a/lib/mnesia/doc/src/mnesia_frag_hash.xml b/lib/mnesia/doc/src/mnesia_frag_hash.xml index 73162c3974..665796f20d 100644 --- a/lib/mnesia/doc/src/mnesia_frag_hash.xml +++ b/lib/mnesia/doc/src/mnesia_frag_hash.xml @@ -64,7 +64,7 @@ <p>Note that the <c>add_frag/2</c> function will be invoked one time each for the rest of the fragments (all but number 1) as a part of the table creation procedure.</p> - <p><c>State</c> is the initial value of the <c>hash_state</c><c>frag_property</c>. The <c>NewState</c> will be stored as + <p><c>State</c> is the initial value of the <c>hash_state</c> <c>frag_property</c>. The <c>NewState</c> will be stored as <c>hash_state</c> among the other <c>frag_properties</c>. </p> </desc> diff --git a/lib/mnesia/src/Makefile b/lib/mnesia/src/Makefile index e032f563fa..1c8ec54605 100644 --- a/lib/mnesia/src/Makefile +++ b/lib/mnesia/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2009. All Rights Reserved. +# Copyright Ericsson AB 1996-2011. All Rights Reserved. # # The contents of this file are subject to the Erlang Public License, # Version 1.1, (the "License"); you may not use this file except in @@ -113,6 +113,8 @@ clean: docs: +$(TARGET_FILES): $(HRL_FILES) + # ---------------------------------------------------- # Special Build Targets # ---------------------------------------------------- diff --git a/lib/mnesia/src/mnesia_controller.erl b/lib/mnesia/src/mnesia_controller.erl index d4b2c7b5cc..1d3bd55b48 100644 --- a/lib/mnesia/src/mnesia_controller.erl +++ b/lib/mnesia/src/mnesia_controller.erl @@ -57,7 +57,8 @@ release_schema_commit_lock/0, create_table/1, get_disc_copy/1, - get_cstructs/0, + get_remote_cstructs/0, % new function + get_cstructs/0, % old function sync_and_block_table_whereabouts/4, sync_del_table_copy_whereabouts/2, block_table/1, @@ -278,9 +279,51 @@ rec_tabs([], _, _, Init) -> unlink(Init), ok. -get_cstructs() -> +%% New function that does exactly what get_cstructs() used to do. +%% When this function is called, we know that the calling node knows +%% how to convert cstructs on the receiving end (should they differ). +get_remote_cstructs() -> call(get_cstructs). +%% Old function kept for backwards compatibility; converts cstructs before sending. +get_cstructs() -> + {cstructs, Cstructs, Running} = call(get_cstructs), + Node = node(group_leader()), + {cstructs, normalize_cstructs(Cstructs, Node), Running}. + +normalize_cstructs(Cstructs, Node) -> + %% backward-compatibility hack; normalize before returning + case rpc:call(Node, mnesia_lib, val, [{schema,cstruct}]) of + {badrpc, _} -> + %% assume it's not a schema merge + Cstructs; + #cstruct{} -> + %% same format + Cstructs; + Cstruct -> + %% some other format + RemoteFields = [F || {F,_} <- rpc:call(Node, mnesia_schema, cs2list, [Cstruct])], + [convert_cs(Cs, RemoteFields) || Cs <- Cstructs] + end. + +convert_cs(Cs, Fields) -> + MyFields = record_info(fields, cstruct), + convert(tl(tuple_to_list(Cs)), MyFields, Fields, []). + +convert([H|T], [F|FsL], [F|FsR], Acc) -> + convert(T, FsL, FsR, [H|Acc]); +convert([H|T], [Fl|FsL] = L, [Fr|FsR] = R, Acc) -> + case {lists:member(Fl, FsR), lists:member(Fr, FsL)} of + {true, false} -> + convert(T, L, FsR, [H|Acc]); + {false, true} -> + %% Field Fl doesn't exist on receiver side; skip. + convert(T, FsL, R, Acc) + end; +convert([], _, _, Acc) -> + list_to_tuple([cstruct|lists:reverse(Acc)]). + + update(Fun) -> call({update,Fun}). diff --git a/lib/mnesia/src/mnesia_dumper.erl b/lib/mnesia/src/mnesia_dumper.erl index 92fd9dfade..f8d7664156 100644 --- a/lib/mnesia/src/mnesia_dumper.erl +++ b/lib/mnesia/src/mnesia_dumper.erl @@ -214,7 +214,12 @@ insert_rec(Rec, InPlace, InitBy, LogV) when is_record(Rec, commit) -> {Tid, committed} -> do_insert_rec(Tid, Rec, InPlace, InitBy, LogV); {Tid, aborted} -> - mnesia_schema:undo_prepare_commit(Tid, Rec) + case InitBy of + startup -> + mnesia_schema:undo_prepare_commit(Tid, Rec); + _ -> + ok + end end; insert_rec(H, _InPlace, _InitBy, _LogV) when is_record(H, log_header) -> CurrentVersion = mnesia_log:version(), @@ -359,7 +364,7 @@ dets_insert(Op,Tab,Key,Val) -> ok = dets:delete_object(Tab, Val); clear_table -> dets_cleared(Tab), - ok = dets:match_delete(Tab, '_') + ok = dets:delete_all_objects(Tab) end. dets_updated(Tab,Key) -> diff --git a/lib/mnesia/src/mnesia_lib.erl b/lib/mnesia/src/mnesia_lib.erl index 775d370d0f..ae6631646c 100644 --- a/lib/mnesia/src/mnesia_lib.erl +++ b/lib/mnesia/src/mnesia_lib.erl @@ -1141,12 +1141,18 @@ db_erase(ram_copies, Tab, Key) -> ?ets_delete(Tab, Key), ok; db_erase(disc_copies, Tab, Key) -> ?ets_delete(Tab, Key), ok; db_erase(disc_only_copies, Tab, Key) -> dets:delete(Tab, Key). +db_match_erase(Tab, '_') -> + db_delete_all(val({Tab, storage_type}),Tab); db_match_erase(Tab, Pat) -> db_match_erase(val({Tab, storage_type}), Tab, Pat). db_match_erase(ram_copies, Tab, Pat) -> ?ets_match_delete(Tab, Pat), ok; db_match_erase(disc_copies, Tab, Pat) -> ?ets_match_delete(Tab, Pat), ok; db_match_erase(disc_only_copies, Tab, Pat) -> dets:match_delete(Tab, Pat). +db_delete_all(ram_copies, Tab) -> ets:delete_all_objects(Tab); +db_delete_all(disc_copies, Tab) -> ets:delete_all_objects(Tab); +db_delete_all(disc_only_copies, Tab) -> dets:delete_all_objects(Tab). + db_first(Tab) -> db_first(val({Tab, storage_type}), Tab). db_first(ram_copies, Tab) -> ?ets_first(Tab); diff --git a/lib/mnesia/src/mnesia_loader.erl b/lib/mnesia/src/mnesia_loader.erl index 607e205fef..c4b22814a8 100644 --- a/lib/mnesia/src/mnesia_loader.erl +++ b/lib/mnesia/src/mnesia_loader.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2010. All Rights Reserved. +%% Copyright Ericsson AB 1998-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -27,7 +27,6 @@ net_load_table/4, send_table/3]). --export([old_node_init_table/6]). %% Spawned old node protocol conversion hack -export([spawned_receiver/8]). %% Spawned lock taking process -import(mnesia_lib, [set/2, fatal/2, verbose/2, dbg_out/2]). @@ -36,7 +35,7 @@ val(Var) -> case ?catch_val(Var) of - {'EXIT', Reason} -> mnesia_lib:other_val(Var, Reason); + {'EXIT', Reason} -> mnesia_lib:other_val(Var, Reason); Value -> Value end. @@ -51,7 +50,7 @@ disc_load_table(Tab, Reason) -> ?eval_debug_fun({?MODULE, do_get_disc_copy}, [{tab, Tab}, {reason, Reason}, - {storage, Storage}, + {storage, Storage}, {type, Type}]), do_get_disc_copy2(Tab, Reason, Storage, Type). @@ -63,19 +62,19 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == disc_copies -> %% NOW we create the actual table Repair = mnesia_monitor:get_env(auto_repair), Args = [{keypos, 2}, public, named_table, Type], - case Reason of + case Reason of {dumper, _} -> %% Resources allready allocated ignore; _ -> mnesia_monitor:mktab(Tab, Args), - Count = mnesia_log:dcd2ets(Tab, Repair), + Count = mnesia_log:dcd2ets(Tab, Repair), case ets:info(Tab, size) of X when X < Count * 4 -> - ok = mnesia_log:ets2dcd(Tab); + ok = mnesia_log:ets2dcd(Tab); _ -> ignore end - end, + end, mnesia_index:init_index(Tab, Storage), snmpify(Tab, Storage), set({Tab, load_node}, node()), @@ -84,7 +83,7 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == disc_copies -> do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == ram_copies -> Args = [{keypos, 2}, public, named_table, Type], - case Reason of + case Reason of {dumper, _} -> %% Resources allready allocated ignore; _ -> @@ -94,12 +93,12 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == ram_copies -> Repair = mnesia_monitor:get_env(auto_repair), case mnesia_monitor:use_dir() of true -> - case mnesia_lib:exists(Fname) of + case mnesia_lib:exists(Fname) of true -> mnesia_log:dcd2ets(Tab, Repair); false -> case mnesia_lib:exists(Datname) of true -> - mnesia_lib:dets_to_ets(Tab, Tab, Datname, + mnesia_lib:dets_to_ets(Tab, Tab, Datname, Type, Repair, no); false -> false @@ -154,11 +153,11 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == disc_only_copies - %% Disable rehashing of table %% Release read lock on table %% Send table to receiver in chunks -%% +%% %% Grab read lock on table %% Block dirty updates %% Update wherabouts -%% +%% %% Cancel the update subscription %% Process the subscription events %% Optionally dump to disc @@ -166,7 +165,7 @@ do_get_disc_copy2(Tab, Reason, Storage, Type) when Storage == disc_only_copies - %% Release read lock on table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --define(MAX_TRANSFER_SIZE, 7500). +-define(MAX_TRANSFER_SIZE, 7500). -define(MAX_RAM_FILE_SIZE, 1000000). -define(MAX_RAM_TRANSFERS, (?MAX_RAM_FILE_SIZE div ?MAX_TRANSFER_SIZE) + 1). -define(MAX_NOPACKETS, 20). @@ -187,14 +186,14 @@ try_net_load_table(Tab, Reason, Ns, Cs) -> do_get_network_copy(Tab, _Reason, _Ns, unknown, _Cs) -> verbose("Local table copy of ~p has recently been deleted, ignored.~n", [Tab]), {not_loaded, storage_unknown}; -do_get_network_copy(Tab, Reason, Ns, Storage, Cs) -> +do_get_network_copy(Tab, Reason, Ns, Storage, Cs) -> [Node | Tail] = Ns, case lists:member(Node,val({current, db_nodes})) of true -> dbg_out("Getting table ~p (~p) from node ~p: ~p~n", [Tab, Storage, Node, Reason]), ?eval_debug_fun({?MODULE, do_get_network_copy}, - [{tab, Tab}, {reason, Reason}, + [{tab, Tab}, {reason, Reason}, {nodes, Ns}, {storage, Storage}]), case init_receiver(Node, Tab, Storage, Cs, Reason) of ok -> @@ -208,7 +207,7 @@ do_get_network_copy(Tab, Reason, Ns, Storage, Cs) -> restart -> try_net_load_table(Tab, Reason, Tail ++ [Node], Cs); down -> - try_net_load_table(Tab, Reason, Tail, Cs) + try_net_load_table(Tab, Reason, Tail, Cs) end; false -> try_net_load_table(Tab, Reason, Tail, Cs) @@ -223,10 +222,10 @@ do_snmpify(Tab, Us, Storage) -> Snmp = mnesia_snmp_hook:create_table(Us, Tab, Storage), set({Tab, {index, snmp}}, Snmp). -%% Start the recieiver +%% Start the recieiver init_receiver(Node, Tab, Storage, Cs, Reas={dumper,add_table_copy}) -> case start_remote_sender(Node, Tab, Storage) of - {SenderPid, TabSize, DetsData} -> + {SenderPid, TabSize, DetsData} -> start_receiver(Tab,Storage,Cs,SenderPid,TabSize,DetsData,Reas); Else -> Else @@ -234,21 +233,21 @@ init_receiver(Node, Tab, Storage, Cs, Reas={dumper,add_table_copy}) -> init_receiver(Node, Tab,Storage,Cs,Reason) -> %% Grab a schema lock to avoid deadlock between table_loader and schema_commit dumping. %% Both may grab tables-locks in different order. - Load = - fun() -> - {_,Tid,Ts} = get(mnesia_activity_state), + Load = + fun() -> + {_,Tid,Ts} = get(mnesia_activity_state), mnesia_locker:rlock(Tid, Ts#tidstore.store, {schema, Tab}), - %% Check that table still exists + %% Check that table still exists Active = val({Tab, active_replicas}), %% Check that we havn't loaded it already case val({Tab,where_to_read}) == node() of true -> ok; _ -> - %% And that sender still got a copy - %% (something might have happend while + %% And that sender still got a copy + %% (something might have happend while %% we where waiting for the lock) true = lists:member(Node, Active), - {SenderPid, TabSize, DetsData} = + {SenderPid, TabSize, DetsData} = start_remote_sender(Node,Tab,Storage), Init = table_init_fun(SenderPid), Args = [self(),Tab,Storage,Cs,SenderPid, @@ -258,18 +257,18 @@ init_receiver(Node, Tab,Storage,Cs,Reason) -> wait_on_load_complete(Pid) end end, - Res = + Res = case mnesia:transaction(Load, 20) of - {atomic, {error,Result}} when - element(1,Reason) == dumper -> + {atomic, {error,Result}} when + element(1,Reason) == dumper -> {error,Result}; - {atomic, {error,Result}} -> + {atomic, {error,Result}} -> fatal("Cannot create table ~p: ~p~n", [[Tab, Storage], Result]); {atomic, Result} -> Result; {aborted, nomore} -> restart; - {aborted, _Reas} -> - verbose("Receiver failed on ~p from ~p:~nReason: ~p~n", + {aborted, _Reas} -> + verbose("Receiver failed on ~p from ~p:~nReason: ~p~n", [Tab,Node,_Reas]), down %% either this node or sender is dying end, @@ -279,7 +278,7 @@ init_receiver(Node, Tab,Storage,Cs,Reason) -> start_remote_sender(Node,Tab,Storage) -> mnesia_controller:start_remote_sender(Node, Tab, self(), Storage), put(mnesia_table_sender_node, {Tab, Node}), - receive + receive {SenderPid, {first, TabSize}} -> {SenderPid, TabSize, false}; {SenderPid, {first, TabSize, DetsData}} -> @@ -291,22 +290,14 @@ start_remote_sender(Node,Tab,Storage) -> end. table_init_fun(SenderPid) -> - PConv = mnesia_monitor:needs_protocol_conversion(node(SenderPid)), - MeMyselfAndI = self(), fun(read) -> - Receiver = - if - PConv == true -> - MeMyselfAndI ! {actual_tabrec, self()}, - MeMyselfAndI; %% Old mnesia - PConv == false -> self() - end, + Receiver = self(), SenderPid ! {Receiver, more}, get_data(SenderPid, Receiver) end. %% Add_table_copy get's it's own locks. -start_receiver(Tab,Storage,Cs,SenderPid,TabSize,DetsData,{dumper,add_table_copy}) -> +start_receiver(Tab,Storage,Cs,SenderPid,TabSize,DetsData,{dumper,add_table_copy}) -> Init = table_init_fun(SenderPid), case do_init_table(Tab,Storage,Cs,SenderPid,TabSize,DetsData,self(), Init) of Err = {error, _} -> @@ -317,8 +308,8 @@ start_receiver(Tab,Storage,Cs,SenderPid,TabSize,DetsData,{dumper,add_table_copy} end. spawned_receiver(ReplyTo,Tab,Storage,Cs, SenderPid,TabSize,DetsData, Init) -> - process_flag(trap_exit, true), - Done = do_init_table(Tab,Storage,Cs, + process_flag(trap_exit, true), + Done = do_init_table(Tab,Storage,Cs, SenderPid,TabSize,DetsData, ReplyTo, Init), ReplyTo ! {self(),Done}, @@ -327,17 +318,17 @@ spawned_receiver(ReplyTo,Tab,Storage,Cs, SenderPid,TabSize,DetsData, Init) -> exit(normal). wait_on_load_complete(Pid) -> - receive - {Pid, Res} -> + receive + {Pid, Res} -> Res; - {'EXIT', Pid, Reason} -> + {'EXIT', Pid, Reason} -> exit(Reason); - Else -> + Else -> Pid ! Else, wait_on_load_complete(Pid) end. -do_init_table(Tab,Storage,Cs,SenderPid, +do_init_table(Tab,Storage,Cs,SenderPid, TabSize,DetsInfo,OrigTabRec,Init) -> case create_table(Tab, TabSize, Storage, Cs) of {Storage,Tab} -> @@ -345,11 +336,9 @@ do_init_table(Tab,Storage,Cs,SenderPid, Node = node(SenderPid), put(mnesia_table_receiver, {Tab, Node, SenderPid}), mnesia_tm:block_tab(Tab), - PConv = mnesia_monitor:needs_protocol_conversion(Node), - - case init_table(Tab,Storage,Init,PConv,DetsInfo,SenderPid) of - ok -> - tab_receiver(Node,Tab,Storage,Cs,PConv,OrigTabRec); + case init_table(Tab,Storage,Init,DetsInfo,SenderPid) of + ok -> + tab_receiver(Node,Tab,Storage,Cs,OrigTabRec); Reason -> Msg = "[d]ets:init table failed", verbose("~s: ~p: ~p~n", [Msg, Tab, Reason]), @@ -360,7 +349,7 @@ do_init_table(Tab,Storage,Cs,SenderPid, end. create_table(Tab, TabSize, Storage, Cs) -> - if + if Storage == disc_only_copies -> mnesia_lib:lock_table(Tab), Tmp = mnesia_lib:tab2tmp(Tab), @@ -390,54 +379,30 @@ create_table(Tab, TabSize, Storage, Cs) -> end end. -tab_receiver(Node, Tab, Storage, Cs, PConv, OrigTabRec) -> +tab_receiver(Node, Tab, Storage, Cs, OrigTabRec) -> receive - {SenderPid, {no_more, DatBin}} when PConv == false -> + {SenderPid, {no_more, DatBin}} -> finish_copy(Storage,Tab,Cs,SenderPid,DatBin,OrigTabRec); - - %% Protocol conversion hack - {SenderPid, {no_more, DatBin}} when is_pid(PConv) -> - PConv ! {SenderPid, no_more}, - receive - {old_init_table_complete, ok} -> - finish_copy(Storage, Tab, Cs, SenderPid, DatBin,OrigTabRec); - {old_init_table_complete, Reason} -> - Msg = "OLD: [d]ets:init table failed", - verbose("~s: ~p: ~p~n", [Msg, Tab, Reason]), - down(Tab, Storage) - end; - - {actual_tabrec, Pid} -> - tab_receiver(Node, Tab, Storage, Cs, Pid,OrigTabRec); - - {SenderPid, {more, [Recs]}} when is_pid(PConv) -> - PConv ! {SenderPid, {more, Recs}}, %% Forward Msg to OldNodes - tab_receiver(Node, Tab, Storage, Cs, PConv,OrigTabRec); - {'EXIT', PConv, Reason} -> %% [d]ets:init process crashed - Msg = "Receiver crashed", - verbose("~s: ~p: ~p~n", [Msg, Tab, Reason]), - down(Tab, Storage); - %% Protocol conversion hack {copier_done, Node} -> verbose("Sender of table ~p crashed on node ~p ~n", [Tab, Node]), down(Tab, Storage); - + {'EXIT', Pid, Reason} -> handle_exit(Pid, Reason), - tab_receiver(Node, Tab, Storage, Cs, PConv,OrigTabRec) + tab_receiver(Node, Tab, Storage, Cs, OrigTabRec) end. make_table_fun(Pid, TabRec) -> fun(close) -> ok; (read) -> - get_data(Pid, TabRec) + get_data(Pid, TabRec) end. get_data(Pid, TabRec) -> - receive + receive {Pid, {more_z, CompressedRecs}} when is_binary(CompressedRecs) -> Pid ! {TabRec, more}, {zlib_uncompress(CompressedRecs), make_table_fun(Pid,TabRec)}; @@ -448,7 +413,7 @@ get_data(Pid, TabRec) -> end_of_input; {copier_done, Node} -> case node(Pid) of - Node -> + Node -> {copier_done, Node}; _ -> get_data(Pid, TabRec) @@ -458,10 +423,10 @@ get_data(Pid, TabRec) -> get_data(Pid, TabRec) end. -init_table(Tab, disc_only_copies, Fun, false, DetsInfo,Sender) -> +init_table(Tab, disc_only_copies, Fun, DetsInfo,Sender) -> ErtsVer = erlang:system_info(version), case DetsInfo of - {ErtsVer, DetsData} -> + {ErtsVer, DetsData} -> Res = (catch dets:is_compatible_bchunk_format(Tab, DetsData)), case Res of {'EXIT',{undef,[{dets,_,_,_}|_]}} -> @@ -481,28 +446,19 @@ init_table(Tab, disc_only_copies, Fun, false, DetsInfo,Sender) -> _ -> dets:init_table(Tab, Fun) end; -init_table(Tab, _, Fun, false, _DetsInfo,_) -> +init_table(Tab, _, Fun, _DetsInfo,_) -> case catch ets:init_table(Tab, Fun) of true -> ok; {'EXIT', Else} -> Else - end; -init_table(Tab, Storage, Fun, true, _DetsInfo, Sender) -> %% Old Nodes - spawn_link(?MODULE, old_node_init_table, - [Tab, Storage, Fun, self(), false, Sender]), - ok. + end. -old_node_init_table(Tab, Storage, Fun, TabReceiver, DetsInfo,Sender) -> - Res = init_table(Tab, Storage, Fun, false, DetsInfo,Sender), - TabReceiver ! {old_init_table_complete, Res}, - unlink(TabReceiver), - ok. finish_copy(Storage,Tab,Cs,SenderPid,DatBin,OrigTabRec) -> TabRef = {Storage, Tab}, subscr_receiver(TabRef, Cs#cstruct.record_name), case handle_last(TabRef, Cs#cstruct.type, DatBin) of - ok -> + ok -> mnesia_index:init_index(Tab, Storage), snmpify(Tab, Storage), %% OrigTabRec must not be the spawned tab-receiver @@ -534,7 +490,7 @@ subscr_receiver(TabRef = {_, Tab}, RecName) -> ok end. -handle_event(TabRef, write, Rec) -> +handle_event(TabRef, write, Rec) -> db_put(TabRef, Rec); handle_event(TabRef, delete, {_Tab, Key}) -> db_erase(TabRef, Key); @@ -545,8 +501,8 @@ handle_event(TabRef, clear_table, {_Tab, _Key}) -> handle_last({disc_copies, Tab}, _Type, nobin) -> Ret = mnesia_log:ets2dcd(Tab), - Fname = mnesia_lib:tab2dat(Tab), - case mnesia_lib:exists(Fname) of + Fname = mnesia_lib:tab2dat(Tab), + case mnesia_lib:exists(Fname) of true -> %% Remove old .DAT files. file:delete(Fname); false -> @@ -653,31 +609,29 @@ send_table(Pid, Tab, RemoteS) -> {error, {no_exists, Tab}}; Storage -> %% Send first - TabSize = mnesia:table_info(Tab, size), - Pconvert = mnesia_monitor:needs_protocol_conversion(node(Pid)), + TabSize = mnesia:table_info(Tab, size), KeysPerTransfer = calc_nokeys(Storage, Tab), ChunkData = dets:info(Tab, bchunk_format), - UseDetsChunk = - Storage == RemoteS andalso - Storage == disc_only_copies andalso - ChunkData /= undefined andalso - Pconvert == false, - if + UseDetsChunk = + Storage == RemoteS andalso + Storage == disc_only_copies andalso + ChunkData /= undefined, + if UseDetsChunk == true -> DetsInfo = erlang:system_info(version), Pid ! {self(), {first, TabSize, {DetsInfo, ChunkData}}}; true -> Pid ! {self(), {first, TabSize}} end, - + %% Debug info put(mnesia_table_sender, {Tab, node(Pid), Pid}), {Init, Chunk} = reader_funcs(UseDetsChunk, Tab, Storage, KeysPerTransfer), - + SendIt = fun() -> prepare_copy(Pid, Tab, Storage), - send_more(Pid, 1, Chunk, Init(), Tab, Pconvert), + send_more(Pid, 1, Chunk, Init(), Tab), finish_copy(Pid, Tab, Storage, RemoteS) end, @@ -698,7 +652,7 @@ send_table(Pid, Tab, RemoteS) -> {error, Reason} end end. - + prepare_copy(Pid, Tab, Storage) -> Trans = fun() -> @@ -717,11 +671,11 @@ prepare_copy(Pid, Tab, Storage) -> update_where_to_write(Tab, Node) -> case val({Tab, access_mode}) of - read_only -> + read_only -> ignore; - read_write -> + read_write -> Current = val({current, db_nodes}), - Ns = + Ns = case lists:member(Node, Current) of true -> Current; false -> [Node | Current] @@ -729,27 +683,27 @@ update_where_to_write(Tab, Node) -> update_where_to_write(Ns, Tab, Node) end. -update_where_to_write([], _, _) -> +update_where_to_write([], _, _) -> ok; update_where_to_write([H|T], Tab, AddNode) -> - rpc:call(H, mnesia_controller, call, + rpc:call(H, mnesia_controller, call, [{update_where_to_write, [add, Tab, AddNode], self()}]), update_where_to_write(T, Tab, AddNode). -send_more(Pid, N, Chunk, DataState, Tab, OldNode) -> +send_more(Pid, N, Chunk, DataState, Tab) -> receive {NewPid, more} -> - case send_packet(N - 1, NewPid, Chunk, DataState, OldNode) of - New when is_integer(New) -> + case send_packet(N - 1, NewPid, Chunk, DataState) of + New when is_integer(New) -> New - 1; NewData -> - send_more(NewPid, ?MAX_NOPACKETS, Chunk, NewData, Tab, OldNode) + send_more(NewPid, ?MAX_NOPACKETS, Chunk, NewData, Tab) end; {_NewPid, {old_protocol, Tab}} -> Storage = val({Tab, storage_type}), - {Init, NewChunk} = + {Init, NewChunk} = reader_funcs(false, Tab, Storage, calc_nokeys(Storage, Tab)), - send_more(Pid, 1, NewChunk, Init(), Tab, OldNode); + send_more(Pid, 1, NewChunk, Init(), Tab); {copier_done, Node} when Node == node(Pid)-> verbose("Receiver of table ~p crashed on ~p (more)~n", [Tab, Node]), @@ -770,7 +724,7 @@ dets_bchunk(Tab, Chunk) -> %% Arrg case dets:bchunk(Tab, Chunk) of {Cont, Data} -> {Data, Cont}; Else -> Else - end. + end. zlib_compress(Data, Level) -> BinData = term_to_binary(Data), @@ -793,28 +747,20 @@ compression_level() -> Val -> Val end. -send_packet(N, Pid, _Chunk, '$end_of_table', OldNode) -> - case OldNode of - true -> ignore; %% Old nodes can't handle the new no_more - false -> Pid ! {self(), no_more} - end, +send_packet(N, Pid, _Chunk, '$end_of_table') -> + Pid ! {self(), no_more}, N; -send_packet(N, Pid, Chunk, {[], Cont}, OldNode) -> - send_packet(N, Pid, Chunk, Chunk(Cont), OldNode); -send_packet(N, Pid, Chunk, {Recs, Cont}, OldNode) when N < ?MAX_NOPACKETS -> - case OldNode of - true -> - Pid ! {self(), {more, [Recs]}}; %% Old need's wrapping list - false -> - case compression_level() of - 0 -> - Pid ! {self(), {more, Recs}}; - Level -> - Pid ! {self(), {more_z, zlib_compress(Recs, Level)}} - end +send_packet(N, Pid, Chunk, {[], Cont}) -> + send_packet(N, Pid, Chunk, Chunk(Cont)); +send_packet(N, Pid, Chunk, {Recs, Cont}) when N < ?MAX_NOPACKETS -> + case compression_level() of + 0 -> + Pid ! {self(), {more, Recs}}; + Level -> + Pid ! {self(), {more_z, zlib_compress(Recs, Level)}} end, - send_packet(N+1, Pid, Chunk, Chunk(Cont), OldNode); -send_packet(_N, _Pid, _Chunk, DataState, _OldNode) -> + send_packet(N+1, Pid, Chunk, Chunk(Cont)); +send_packet(_N, _Pid, _Chunk, DataState) -> DataState. finish_copy(Pid, Tab, Storage, RemoteS) -> @@ -855,5 +801,5 @@ dat2bin(_Tab, _LocalS, _RemoteS) -> handle_exit(Pid, Reason) when node(Pid) == node() -> exit(Reason); -handle_exit(_Pid, _Reason) -> %% Not from our node, this will be handled by +handle_exit(_Pid, _Reason) -> %% Not from our node, this will be handled by ignore. %% mnesia_down soon. diff --git a/lib/mnesia/src/mnesia_log.erl b/lib/mnesia/src/mnesia_log.erl index 9e804cc4c2..94153473cb 100644 --- a/lib/mnesia/src/mnesia_log.erl +++ b/lib/mnesia/src/mnesia_log.erl @@ -1021,7 +1021,8 @@ add_recs([LogH|Rest], N) LogH#log_header.log_version >= "1.0" -> add_recs(Rest, N); add_recs([{{Tab, _Key}, _Val, clear_table} | Rest], N) -> - true = ets:match_delete(Tab, '_'), - add_recs(Rest, N+ets:info(Tab, size)); + Size = ets:info(Tab, size), + true = ets:delete_all_objects(Tab), + add_recs(Rest, N+Size); add_recs([], N) -> N. diff --git a/lib/mnesia/src/mnesia_monitor.erl b/lib/mnesia/src/mnesia_monitor.erl index b6eda9ad3a..e110ad3241 100644 --- a/lib/mnesia/src/mnesia_monitor.erl +++ b/lib/mnesia/src/mnesia_monitor.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. +%% Copyright Ericsson AB 1996-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -76,13 +76,13 @@ -include("mnesia.hrl"). --record(state, {supervisor, pending_negotiators = [], +-record(state, {supervisor, pending_negotiators = [], going_down = [], tm_started = false, early_connects = [], connecting, mq = []}). --define(current_protocol_version, {7,6}). +-define(current_protocol_version, {8,0}). --define(previous_protocol_version, {7,5}). +-define(previous_protocol_version, {7,6}). start() -> gen_server:start_link({local, ?MODULE}, ?MODULE, @@ -151,12 +151,12 @@ check_protocol([{Node, {accept, Mon, Version, Protocol}} | Tail], Protocols) -> case lists:member(Protocol, Protocols) of true -> case Protocol == protocol_version() of - true -> + true -> set({protocol, Node}, {Protocol, false}); false -> set({protocol, Node}, {Protocol, true}) end, - [node(Mon) | check_protocol(Tail, Protocols)]; + [node(Mon) | check_protocol(Tail, Protocols)]; false -> verbose("Failed to connect with ~p. ~p protocols rejected. " "expected version = ~p, expected protocol = ~p~n", @@ -179,7 +179,7 @@ check_protocol([], [Protocol | _Protocols]) -> set(protocol_version, Protocol), []. -protocol_version() -> +protocol_version() -> case ?catch_val(protocol_version) of {'EXIT', _} -> ?current_protocol_version; Version -> Version @@ -189,14 +189,14 @@ protocol_version() -> %% preferred protocols are first in the list acceptable_protocol_versions() -> [protocol_version(), ?previous_protocol_version]. - + needs_protocol_conversion(Node) -> case {?catch_val({protocol, Node}), protocol_version()} of {{'EXIT', _}, _} -> false; - {{_, Bool}, ?current_protocol_version} -> + {{_, Bool}, ?current_protocol_version} -> Bool; - {{_, Bool}, _} -> + {{_, Bool}, _} -> not Bool end. @@ -255,15 +255,15 @@ terminate_proc(Who, Reason, _State) -> %%---------------------------------------------------------------------- init([Parent]) -> process_flag(trap_exit, true), - ?ets_new_table(mnesia_gvar, [set, public, named_table]), - ?ets_new_table(mnesia_stats, [set, public, named_table]), + ?ets_new_table(mnesia_gvar, [set, public, named_table]), + ?ets_new_table(mnesia_stats, [set, public, named_table]), set(subscribers, []), set(activity_subscribers, []), mnesia_lib:verbose("~p starting: ~p~n", [?MODULE, self()]), Version = mnesia:system_info(version), set(version, Version), dbg_out("Version: ~p~n", [Version]), - + case catch process_config_args(env()) of ok -> mnesia_lib:set({'$$$_report', current_pos}, 0), @@ -283,7 +283,7 @@ init([Parent]) -> set(checkpoints, []), set(pending_checkpoints, []), set(pending_checkpoint_pids, []), - + {ok, #state{supervisor = Parent}}; {'EXIT', Reason} -> mnesia_lib:report_fatal("Bad configuration: ~p~n", [Reason]), @@ -398,9 +398,9 @@ handle_call({unsafe_close_log, Name}, _From, State) -> disk_log:close(Name), {reply, ok, State}; -handle_call({negotiate_protocol, Mon, _Version, _Protocols}, _From, State) +handle_call({negotiate_protocol, Mon, _Version, _Protocols}, _From, State) when State#state.tm_started == false -> - State2 = State#state{early_connects = [node(Mon) | State#state.early_connects]}, + State2 = State#state{early_connects = [node(Mon) | State#state.early_connects]}, {reply, {node(), {reject, self(), uninitialized, uninitialized}}, State2}; %% From remote monitor.. @@ -412,7 +412,7 @@ handle_call({negotiate_protocol, Mon, Version, Protocols}, From, State) true -> accept_protocol(Mon, MyVersion, Protocol, From, State); false -> - %% in this release we should be able to handle the previous + %% in this release we should be able to handle the previous %% protocol case hd(Protocols) of ?previous_protocol_version -> @@ -427,7 +427,7 @@ handle_call({negotiate_protocol, Mon, Version, Protocols}, From, State) end; %% Local request to negotiate with other monitors (nodes). -handle_call({negotiate_protocol, Nodes}, From, State) -> +handle_call({negotiate_protocol, Nodes}, From, State) -> case mnesia_lib:intersect(State#state.going_down, Nodes) of [] -> spawn_link(?MODULE, negotiate_protocol_impl, [Nodes, From]), @@ -461,7 +461,7 @@ accept_protocol(Mon, Version, Protocol, From, State) -> %% No need for wait link(Mon), %% link to remote Monitor case Protocol == protocol_version() of - true -> + true -> set({protocol, Node}, {Protocol, false}); false -> set({protocol, Node}, {Protocol, true}) @@ -509,7 +509,7 @@ handle_cast({disconnect, Node}, State) -> ignore; undefined -> ignore; - RemoteMon when is_pid(RemoteMon) -> + RemoteMon when is_pid(RemoteMon) -> unlink(RemoteMon) end, {noreply, State}; @@ -534,7 +534,7 @@ handle_info({'EXIT', Pid, R}, State) when Pid == State#state.supervisor -> dbg_out("~p was ~p by supervisor~n",[?MODULE, R]), {stop, R, State}; -handle_info({'EXIT', Pid, fatal}, State) when node(Pid) == node() -> +handle_info({'EXIT', Pid, fatal}, State) when node(Pid) == node() -> dbg_out("~p got FATAL ERROR from: ~p~n",[?MODULE, Pid]), exit(State#state.supervisor, shutdown), {noreply, State}; @@ -550,7 +550,7 @@ handle_info(Msg = {'EXIT',Pid,_}, State) -> Node /= node() -> {noreply, State#state{mq = State#state.mq ++ [{info, Msg}]}}; true -> - %% We have probably got an exit signal from + %% We have probably got an exit signal from %% disk_log or dets Hint = "Hint: check that the disk still is writable", fatal("~p got unexpected info: ~p; ~p~n", @@ -567,10 +567,10 @@ handle_info({nodeup, Node}, State) -> %% Let's check if Mnesia is running there in order %% to detect if the network has been partitioned %% due to communication failure. - + HasDown = mnesia_recover:has_mnesia_down(Node), ImRunning = mnesia_lib:is_running(), - + if %% If I'm not running the test will be made later. HasDown == true, ImRunning == yes -> @@ -589,7 +589,7 @@ handle_info({disk_log, _Node, Log, Info}, State) -> {truncated, _No} -> ok; _ -> - mnesia_lib:important("Warning Log file ~p error reason ~s~n", + mnesia_lib:important("Warning Log file ~p error reason ~s~n", [Log, disk_log:format_error(Info)]) end, {noreply, State}; @@ -681,38 +681,38 @@ env() -> send_compressed ]. -default_env(access_module) -> +default_env(access_module) -> mnesia; -default_env(auto_repair) -> +default_env(auto_repair) -> true; -default_env(backup_module) -> +default_env(backup_module) -> mnesia_backup; -default_env(debug) -> +default_env(debug) -> none; default_env(dir) -> Name = lists:concat(["Mnesia.", node()]), filename:absname(Name); -default_env(dump_log_load_regulation) -> +default_env(dump_log_load_regulation) -> false; -default_env(dump_log_time_threshold) -> +default_env(dump_log_time_threshold) -> timer:minutes(3); -default_env(dump_log_update_in_place) -> +default_env(dump_log_update_in_place) -> true; default_env(dump_log_write_threshold) -> 1000; -default_env(embedded_mnemosyne) -> +default_env(embedded_mnemosyne) -> false; -default_env(event_module) -> +default_env(event_module) -> mnesia_event; -default_env(extra_db_nodes) -> +default_env(extra_db_nodes) -> []; -default_env(ignore_fallback_at_startup) -> +default_env(ignore_fallback_at_startup) -> false; default_env(fallback_error_function) -> {mnesia, lkill}; -default_env(max_wait_for_decision) -> +default_env(max_wait_for_decision) -> infinity; -default_env(schema_location) -> +default_env(schema_location) -> opt_disc; default_env(core_dir) -> false; @@ -732,7 +732,7 @@ check_type(Env, Val) -> NewVal -> NewVal end. - + do_check_type(access_module, A) when is_atom(A) -> A; do_check_type(auto_repair, B) -> bool(B); do_check_type(backup_module, B) when is_atom(B) -> B; @@ -749,7 +749,7 @@ do_check_type(dump_log_update_in_place, B) -> bool(B); do_check_type(dump_log_write_threshold, I) when is_integer(I), I > 0 -> I; do_check_type(event_module, A) when is_atom(A) -> A; do_check_type(ignore_fallback_at_startup, B) -> bool(B); -do_check_type(fallback_error_function, {Mod, Func}) +do_check_type(fallback_error_function, {Mod, Func}) when is_atom(Mod), is_atom(Func) -> {Mod, Func}; do_check_type(embedded_mnemosyne, B) -> bool(B); do_check_type(extra_db_nodes, L) when is_list(L) -> @@ -804,8 +804,8 @@ detect_inconcistency(Nodes, Context) -> has_remote_mnesia_down(Node) -> HasDown = mnesia_recover:has_mnesia_down(Node), Master = mnesia_recover:get_master_nodes(schema), - if - HasDown == true, Master == [] -> + if + HasDown == true, Master == [] -> {true, node()}; true -> {false, node()} diff --git a/lib/mnesia/src/mnesia_recover.erl b/lib/mnesia/src/mnesia_recover.erl index b3eed1de6e..4750291a10 100644 --- a/lib/mnesia/src/mnesia_recover.erl +++ b/lib/mnesia/src/mnesia_recover.erl @@ -227,11 +227,13 @@ do_log_decision(D, DoTell, NodeD) -> note_outcome(D2), case mnesia_monitor:use_dir() of true -> - mnesia_log:append(latest_log, D2), if DoTell == true, Outcome /= unclear -> tell_im_certain(NodeD#decision.disc_nodes--[node()],D2), - tell_im_certain(NodeD#decision.ram_nodes--[node()], D2); + tell_im_certain(NodeD#decision.ram_nodes--[node()], D2), + mnesia_log:log(D2); + Outcome /= unclear -> + mnesia_log:log(D2); true -> ignore end; diff --git a/lib/mnesia/src/mnesia_schema.erl b/lib/mnesia/src/mnesia_schema.erl index fef72ad39c..05be474aea 100644 --- a/lib/mnesia/src/mnesia_schema.erl +++ b/lib/mnesia/src/mnesia_schema.erl @@ -100,7 +100,7 @@ ]). %% Needed outside to be able to use/set table_properties -%% from user (not supported) +%% from user (not supported) -export([schema_transaction/1, insert_schema_ops/2, do_create_table/1, @@ -118,9 +118,9 @@ %% Here comes the init function which also resides in %% this module, it is called upon by the trans server %% at startup of the system -%% +%% %% We have a meta table which looks like -%% {table, schema, +%% {table, schema, %% {type, set}, %% {disc_copies, all}, %% {arity, 2} @@ -149,14 +149,14 @@ exit_on_error(GoodRes) -> val(Var) -> case ?catch_val(Var) of - {'EXIT', Reason} -> mnesia_lib:other_val(Var, Reason); - Value -> Value + {'EXIT', Reason} -> mnesia_lib:other_val(Var, Reason); + Value -> Value end. %% This function traverses all cstructs in the schema and %% sets all values in mnesia_gvar accordingly for each table/cstruct -set_schema('$end_of_table') -> +set_schema('$end_of_table') -> []; set_schema(Tab) -> do_set_schema(Tab), @@ -253,8 +253,8 @@ version() -> incr_version(Cs) -> {{Major, Minor}, _} = Cs#cstruct.version, Nodes = mnesia_lib:intersect(val({schema, disc_copies}), - mnesia_lib:cs_to_nodes(Cs)), - V = + mnesia_lib:cs_to_nodes(Cs)), + V = case Nodes -- val({Cs#cstruct.name, active_replicas}) of [] -> {Major + 1, 0}; % All replicas are active _ -> {Major, Minor + 1} % Some replicas are inactive @@ -359,7 +359,7 @@ delete_schema2() -> {error, Reason} -> {error, Reason} end. - + ensure_no_schema([H|T]) when is_atom(H) -> case rpc:call(H, ?MODULE, remote_read_schema, []) of {badrpc, Reason} -> @@ -407,7 +407,7 @@ opt_create_dir(UseDir, Dir) when UseDir == true-> check_can_write(Dir); false -> case file:make_dir(Dir) of - ok -> + ok -> verbose("Create Directory ~p~n", [Dir]), ok; {error, Reason} -> @@ -417,7 +417,7 @@ opt_create_dir(UseDir, Dir) when UseDir == true-> end; opt_create_dir(false, _) -> {error, {has_no_disc, node()}}. - + check_can_write(Dir) -> case file:read_file_info(Dir) of {ok, FI} when FI#file_info.type == directory, @@ -450,7 +450,7 @@ read_schema(Keep) -> read_schema(Keep, IgnoreFallback) -> lock_schema(), - Res = + Res = case mnesia:system_info(is_running) of yes -> {ok, ram, get_create_list(schema)}; @@ -477,7 +477,7 @@ read_disc_schema(Keep, IgnoreFallback) -> case mnesia_bup:fallback_exists() of true when IgnoreFallback == false, Running /= yes -> mnesia_bup:fallback_to_schema(); - _ -> + _ -> %% If we're running, we read the schema file even %% if fallback exists Dat = mnesia_lib:tab2dat(schema), @@ -499,7 +499,7 @@ read_disc_schema(Keep, IgnoreFallback) -> end. do_read_disc_schema(Fname, Keep) -> - T = + T = case Keep of false -> Args = [{keypos, 2}, public, set], @@ -523,7 +523,7 @@ do_read_disc_schema(Fname, Keep) -> get_initial_schema(SchemaStorage, Nodes) -> Cs = #cstruct{name = schema, record_name = schema, - attributes = [table, cstruct]}, + attributes = [table, cstruct]}, Cs2 = case SchemaStorage of ram_copies -> Cs#cstruct{ram_copies = Nodes}; @@ -532,7 +532,7 @@ get_initial_schema(SchemaStorage, Nodes) -> cs2list(Cs2). read_cstructs_from_disc() -> - %% Assumptions: + %% Assumptions: %% - local schema lock in global %% - use_dir is true %% - Mnesia is not running @@ -552,14 +552,14 @@ read_cstructs_from_disc() -> end, Cstructs = dets:traverse(Tab, Fun), dets:close(Tab), - {ok, Cstructs}; + {ok, Cstructs}; {error, Reason} -> {error, Reason} end; false -> {error, "No schema file exists"} end. - + %% We run a very special type of transactions when we %% we want to manipulate the schema. @@ -593,20 +593,20 @@ schema_transaction(Fun) -> %% This process may dump the transaction log, and should %% therefore not be run in an application process -%% +%% schema_coordinator(Client, _Fun, undefined) -> Res = {aborted, {node_not_running, node()}}, Client ! {transaction_done, Res, self()}, unlink(Client); - + schema_coordinator(Client, Fun, Controller) when is_pid(Controller) -> %% Do not trap exit in order to automatically die %% when the controller dies link(Controller), unlink(Client), - - %% Fulfull the transaction even if the client dies + + %% Fulfull the transaction even if the client dies Res = mnesia:transaction(Fun), Client ! {transaction_done, Res, self()}, unlink(Controller), % Avoids spurious exit message @@ -619,7 +619,7 @@ schema_coordinator(Client, Fun, Controller) when is_pid(Controller) -> insert_schema_ops({_Mod, _Tid, Ts}, SchemaIOps) -> do_insert_schema_ops(Ts#tidstore.store, SchemaIOps). - + do_insert_schema_ops(Store, [Head | Tail]) -> ?ets_insert(Store, Head), do_insert_schema_ops(Store, Tail); @@ -628,15 +628,56 @@ do_insert_schema_ops(_Store, []) -> cs2list(Cs) when is_record(Cs, cstruct) -> Tags = record_info(fields, cstruct), - rec2list(Tags, 2, Cs); + rec2list(Tags, Tags, 2, Cs); cs2list(CreateList) when is_list(CreateList) -> - CreateList. - -rec2list([Tag | Tags], Pos, Rec) -> + CreateList; +%% 4.4.19 +cs2list(Cs) when element(1, Cs) == cstruct, tuple_size(Cs) == 18 -> + Tags = [name,type,ram_copies,disc_copies,disc_only_copies, + load_order,access_mode,majority,index,snmp,local_content, + record_name,attributes,user_properties,frag_properties, + cookie,version], + rec2list(Tags, Tags, 2, Cs); +%% 4.4.18 and earlier +cs2list(Cs) when element(1, Cs) == cstruct, tuple_size(Cs) == 17 -> + Tags = [name,type,ram_copies,disc_copies,disc_only_copies, + load_order,access_mode,index,snmp,local_content, + record_name,attributes,user_properties,frag_properties, + cookie,version], + rec2list(Tags, Tags, 2, Cs). + +cs2list(false, Cs) -> + cs2list(Cs); +cs2list(ver4_4_18, Cs) -> + Orig = record_info(fields, cstruct), + Tags = [name,type,ram_copies,disc_copies,disc_only_copies, + load_order,access_mode,index,snmp,local_content, + record_name,attributes,user_properties,frag_properties, + cookie,version], + rec2list(Tags, Orig, 2, Cs); +cs2list(ver4_4_19, Cs) -> + Orig = record_info(fields, cstruct), + Tags = [name,type,ram_copies,disc_copies,disc_only_copies, + load_order,access_mode,majority,index,snmp,local_content, + record_name,attributes,user_properties,frag_properties, + cookie,version], + rec2list(Tags, Orig, 2, Cs). + +rec2list([Tag | Tags], [Tag | Orig], Pos, Rec) -> Val = element(Pos, Rec), - [{Tag, Val} | rec2list(Tags, Pos + 1, Rec)]; -rec2list([], _Pos, _Rec) -> - []. + [{Tag, Val} | rec2list(Tags, Orig, Pos + 1, Rec)]; +rec2list([], _, _Pos, _Rec) -> + []; +rec2list(Tags, [_|Orig], Pos, Rec) -> + rec2list(Tags, Orig, Pos+1, Rec). + +api_list2cs(List) when is_list(List) -> + Name = pick(unknown, name, List, must), + Keys = check_keys(Name, List, record_info(fields, cstruct)), + check_duplicates(Name, Keys), + list2cs(List); +api_list2cs(Other) -> + mnesia:abort({badarg, Other}). list2cs(List) when is_list(List) -> Name = pick(unknown, name, List, must), @@ -667,10 +708,7 @@ list2cs(List) when is_list(List) -> Frag = pick(Name, frag_properties, List, []), verify({alt, [nil, list]}, mnesia_lib:etype(Frag), - {badarg, Name, {frag_properties, Frag}}), - - Keys = check_keys(Name, List, record_info(fields, cstruct)), - check_duplicates(Name, Keys), + {badarg, Name, {frag_properties, Frag}}), #cstruct{name = Name, ram_copies = Rc, disc_copies = Dc, @@ -687,9 +725,7 @@ list2cs(List) when is_list(List) -> user_properties = lists:sort(UserProps), frag_properties = lists:sort(Frag), cookie = Cookie, - version = Version}; -list2cs(Other) -> - mnesia:abort({badarg, Other}). + version = Version}. pick(Tab, Key, List, Default) -> case lists:keysearch(Key, 1, List) of @@ -708,7 +744,7 @@ attr_tab_to_pos(_Tab, Pos) when is_integer(Pos) -> Pos; attr_tab_to_pos(Tab, Attr) -> attr_to_pos(Attr, val({Tab, attributes})). - + %% Convert attribute name to integer if neccessary attr_to_pos(Pos, _Attrs) when is_integer(Pos) -> Pos; @@ -723,7 +759,7 @@ attr_to_pos(Attr, [_ | Attrs], Pos) -> attr_to_pos(Attr, Attrs, Pos + 1); attr_to_pos(Attr, _, _) -> mnesia:abort({bad_type, Attr}). - + check_keys(Tab, [{Key, _Val} | Tail], Items) -> case lists:member(Key, Items) of true -> [Key | check_keys(Tab, Tail, Items)]; @@ -759,7 +795,7 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> {bad_type, Tab, {type, Type}}), %% Currently ordered_set is not supported for disk_only_copies. - if + if Type == ordered_set, Cs#cstruct.disc_only_copies /= [] -> mnesia:abort({bad_type, Tab, {not_supported, Type, disc_only_copies}}); true -> @@ -776,10 +812,10 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> Arity = length(Attrs) + 1, verify(true, Arity > 2, {bad_type, Tab, {attributes, Attrs}}), - + lists:foldl(fun(Attr,_Other) when Attr == snmp -> mnesia:abort({bad_type, Tab, {attributes, [Attr]}}); - (Attr,Other) -> + (Attr,Other) -> verify(atom, mnesia_lib:etype(Attr), {bad_type, Tab, {attributes, [Attr]}}), verify(false, lists:member(Attr, Other), @@ -792,7 +828,7 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> Index = Cs#cstruct.index, verify({alt, [nil, list]}, mnesia_lib:etype(Index), {bad_type, Tab, {index, Index}}), - + IxFun = fun(Pos) -> verify(true, fun() -> @@ -807,7 +843,7 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> {bad_type, Tab, {index, [Pos]}}) end, lists:foreach(IxFun, Index), - + LC = Cs#cstruct.local_content, verify({alt, [true, false]}, LC, {bad_type, Tab, {local_content, LC}}), @@ -834,7 +870,7 @@ verify_cstruct(Cs) when is_record(Cs, cstruct) -> lists:foreach(CheckProp, Cs#cstruct.user_properties), case Cs#cstruct.cookie of - {{MegaSecs, Secs, MicroSecs}, _Node} + {{MegaSecs, Secs, MicroSecs}, _Node} when is_integer(MegaSecs), is_integer(Secs), is_integer(MicroSecs), is_atom(node) -> ok; @@ -870,15 +906,15 @@ verify_nodes(Cs) -> end, verify(integer, mnesia_lib:etype(LoadOrder), {bad_type, Tab, {load_order, LoadOrder}}), - + Nodes = Ram ++ Disc ++ DiscOnly, verify(list, mnesia_lib:etype(Nodes), {combine_error, Tab, [{ram_copies, []}, {disc_copies, []}, {disc_only_copies, []}]}), verify(false, has_duplicates(Nodes), {combine_error, Tab, Nodes}), - AtomCheck = fun(N) -> verify(atom, mnesia_lib:etype(N), {bad_type, Tab, N}) end, + AtomCheck = fun(N) -> verify(atom, mnesia_lib:etype(N), {bad_type, Tab, N}) end, lists:foreach(AtomCheck, Nodes). - + verify(Expected, Fun, Error) when is_function(Fun) -> do_verify(Expected, catch Fun(), Error); verify(Expected, Actual, Error) -> @@ -909,7 +945,7 @@ ensure_active(Cs, What) -> W = {Tab, What}, ensure_non_empty(W), Nodes = mnesia_lib:intersect(val({schema, disc_copies}), - mnesia_lib:cs_to_nodes(Cs)), + mnesia_lib:cs_to_nodes(Cs)), case Nodes -- val(W) of [] -> ok; @@ -936,7 +972,7 @@ ensure_non_empty({Tab, Vhat}) -> ensure_not_active(Tab = schema, Node) -> Active = val({Tab, active_replicas}), - case lists:member(Node, Active) of + case lists:member(Node, Active) of false when Active =/= [] -> ok; false -> @@ -970,7 +1006,7 @@ create_table(TabDef) -> do_multi_create_table(TabDef) -> get_tid_ts_and_lock(schema, write), ensure_writable(schema), - Cs = list2cs(TabDef), + Cs = api_list2cs(TabDef), case Cs#cstruct.frag_properties of [] -> do_create_table(Cs); @@ -999,7 +1035,7 @@ unsafe_make_create_table(Cs) -> {_Mod, Tid, Ts} = get_tid_ts_and_lock(schema, none), verify_cstruct(Cs), Tab = Cs#cstruct.name, - + %% Check that we have all disc replica nodes running DiscNodes = Cs#cstruct.disc_copies ++ Cs#cstruct.disc_only_copies, RunningNodes = val({current, db_nodes}), @@ -1017,7 +1053,7 @@ unsafe_make_create_table(Cs) -> check_if_exists(Tab) -> TidTs = get_tid_ts_and_lock(schema, write), {_, _, Ts} = TidTs, - Store = Ts#tidstore.store, + Store = Ts#tidstore.store, ets:foldl( fun({op, create_table, [{name, T}|_]}, _Acc) when T==Tab -> true; @@ -1054,7 +1090,7 @@ make_delete_table(Tab, Mode) -> %% nodes etc. TidTs = get_tid_ts_and_lock(schema, write), {_, _, Ts} = TidTs, - Store = Ts#tidstore.store, + Store = Ts#tidstore.store, Deleted = ets:select_delete( Store, [{{op,'$1',[{name,Tab}|'_']}, [{'or', @@ -1077,9 +1113,9 @@ make_delete_table(Tab, Mode) -> [] -> [make_delete_table2(Tab)]; _Props -> - %% Check if it is a base table - mnesia_frag:lookup_frag_hash(Tab), - + %% Check if it is a base table + mnesia_frag:lookup_frag_hash(Tab), + %% Check for foreigners F = mnesia_frag:lookup_foreigners(Tab), verify([], F, {combine_error, @@ -1101,7 +1137,7 @@ make_delete_table2(Tab) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Change fragmentation of a table - + change_table_frag(Tab, Change) -> schema_transaction(fun() -> do_change_table_frag(Tab, Change) end). @@ -1112,7 +1148,7 @@ do_change_table_frag(Tab, Change) when is_atom(Tab), Tab /= schema -> ok; do_change_table_frag(Tab, _Change) -> mnesia:abort({bad_type, Tab}). - + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Clear a table @@ -1150,7 +1186,7 @@ make_add_table_copy(Tab, Node, Storage) -> verify(false, lists:member(Node, Ns), {already_exists, Tab, Node}), Cs2 = new_cs(Cs, Node, Storage, add), verify_cstruct(Cs2), - + %% Check storage and if node is running IsRunning = lists:member(Node, val({current, db_nodes})), if @@ -1177,21 +1213,21 @@ del_table_copy(Tab, Node) -> do_del_table_copy(Tab, Node) when is_atom(Node) -> TidTs = get_tid_ts_and_lock(schema, write), -%% get_tid_ts_and_lock(Tab, write), +%% get_tid_ts_and_lock(Tab, write), insert_schema_ops(TidTs, make_del_table_copy(Tab, Node)); do_del_table_copy(Tab, Node) -> mnesia:abort({badarg, Tab, Node}). - + make_del_table_copy(Tab, Node) -> ensure_writable(schema), Cs = incr_version(val({Tab, cstruct})), Storage = mnesia_lib:schema_cs_to_storage_type(Node, Cs), - Cs2 = new_cs(Cs, Node, Storage, del), + Cs2 = new_cs(Cs, Node, Storage, del), case mnesia_lib:cs_to_nodes(Cs2) of [] when Tab == schema -> mnesia:abort({combine_error, Tab, "Last replica"}); [] -> - ensure_active(Cs), + ensure_active(Cs), dbg_out("Last replica deleted in table ~p~n", [Tab]), make_delete_table(Tab, whole_table); _ when Tab == schema -> @@ -1210,14 +1246,14 @@ remove_node_from_tabs([], _Node) -> []; remove_node_from_tabs([schema|Rest], Node) -> remove_node_from_tabs(Rest, Node); -remove_node_from_tabs([Tab|Rest], Node) -> - {Cs, IsFragModified} = +remove_node_from_tabs([Tab|Rest], Node) -> + {Cs, IsFragModified} = mnesia_frag:remove_node(Node, incr_version(val({Tab, cstruct}))), case mnesia_lib:schema_cs_to_storage_type(Node, Cs) of unknown -> case IsFragModified of true -> - [{op, change_table_frag, {del_node, Node}, cs2list(Cs)} | + [{op, change_table_frag, {del_node, Node}, cs2list(Cs)} | remove_node_from_tabs(Rest, Node)]; false -> remove_node_from_tabs(Rest, Node) @@ -1246,7 +1282,7 @@ new_cs(Cs, Node, ram_copies, del) -> new_cs(Cs, Node, disc_copies, del) -> Cs#cstruct{disc_copies = lists:delete(Node , Cs#cstruct.disc_copies)}; new_cs(Cs, Node, disc_only_copies, del) -> - Cs#cstruct{disc_only_copies = + Cs#cstruct{disc_only_copies = lists:delete(Node , Cs#cstruct.disc_only_copies)}; new_cs(Cs, _Node, Storage, _Op) -> mnesia:abort({badarg, Cs#cstruct.name, Storage}). @@ -1278,7 +1314,7 @@ make_move_table(Tab, FromNode, ToNode) -> Running = val({current, db_nodes}), Storage = mnesia_lib:schema_cs_to_storage_type(FromNode, Cs), verify(true, lists:member(ToNode, Running), {not_active, schema, ToNode}), - + Cs2 = new_cs(Cs, ToNode, Storage, add), Cs3 = new_cs(Cs2, FromNode, Storage, del), verify_cstruct(Cs3), @@ -1306,7 +1342,7 @@ make_change_table_copy_type(Tab, Node, unknown) -> make_change_table_copy_type(Tab, Node, ToS) -> ensure_writable(schema), Cs = incr_version(val({Tab, cstruct})), - FromS = mnesia_lib:storage_type_at_node(Node, Tab), + FromS = mnesia_lib:storage_type_at_node(Node, Tab), case compare_storage_type(false, FromS, ToS) of {same, _} -> @@ -1320,12 +1356,12 @@ make_change_table_copy_type(Tab, Node, ToS) -> Cs2 = new_cs(Cs, Node, FromS, del), Cs3 = new_cs(Cs2, Node, ToS, add), verify_cstruct(Cs3), - + [{op, change_table_copy_type, Node, FromS, ToS, cs2list(Cs3)}]. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% change index functions .... -%% Pos is allready added by 1 in both of these functions +%% Pos is allready added by 1 in both of these functions add_table_index(Tab, Pos) -> schema_transaction(fun() -> do_add_table_index(Tab, Pos) end). @@ -1412,14 +1448,14 @@ make_del_snmp(Tab) -> [{op, del_snmp, cs2list(Cs2)}]. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% +%% -transform_table(Tab, Fun, NewAttrs, NewRecName) - when is_function(Fun), is_list(NewAttrs), is_atom(NewRecName) -> +transform_table(Tab, Fun, NewAttrs, NewRecName) + when is_function(Fun), is_list(NewAttrs), is_atom(NewRecName) -> schema_transaction(fun() -> do_transform_table(Tab, Fun, NewAttrs, NewRecName) end); -transform_table(Tab, ignore, NewAttrs, NewRecName) - when is_list(NewAttrs), is_atom(NewRecName) -> +transform_table(Tab, ignore, NewAttrs, NewRecName) + when is_list(NewAttrs), is_atom(NewRecName) -> schema_transaction(fun() -> do_transform_table(Tab, ignore, NewAttrs, NewRecName) end); transform_table(Tab, Fun, NewAttrs, NewRecName) -> @@ -1438,7 +1474,7 @@ make_transform(Tab, Fun, NewAttrs, NewRecName) -> ensure_active(Cs), ensure_writable(Tab), case mnesia_lib:val({Tab, index}) of - [] -> + [] -> Cs2 = Cs#cstruct{attributes = NewAttrs, record_name = NewRecName}, verify_cstruct(Cs2), [{op, transform, Fun, cs2list(Cs2)}]; @@ -1464,7 +1500,7 @@ make_transform(Tab, Fun, NewAttrs, NewRecName) -> end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% +%% change_table_access_mode(Tab, Mode) -> schema_transaction(fun() -> do_change_table_access_mode(Tab, Mode) end). @@ -1598,9 +1634,9 @@ change_prop_in_existing_op(Tab, Prop, How, Store) -> false -> false end. - -update_existing_op([{op, Op, L = [{name,Tab}|_], _OldProp}|Ops], - Tab, Prop, How, Acc) when Op == write_property; + +update_existing_op([{op, Op, L = [{name,Tab}|_], _OldProp}|Ops], + Tab, Prop, How, Acc) when Op == write_property; Op == delete_property -> %% Apparently, mnesia_dumper doesn't care about OldProp here -- just L, %% so we will throw away OldProp (not that it matters...) and insert Prop. @@ -1625,7 +1661,7 @@ update_existing_op([], _, _, _, _) -> do_read_table_property(Tab, Key) -> TidTs = get_tid_ts_and_lock(schema, read), {_, _, Ts} = TidTs, - Store = Ts#tidstore.store, + Store = Ts#tidstore.store, Props = ets:foldl( fun({op, create_table, [{name, T}|Opts]}, _Acc) when T==Tab -> @@ -1689,7 +1725,7 @@ do_delete_table_property(Tab, PropKey) -> [Tab,PropKey]), %% this must be an existing table get_tid_ts_and_lock(Tab, none), - insert_schema_ops(TidTs, + insert_schema_ops(TidTs, make_delete_table_properties(Tab, [PropKey])) end. @@ -1711,17 +1747,17 @@ make_delete_table_properties(_Tab, [], _Cs) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Ensure that the transaction can be committed even +%% Ensure that the transaction can be committed even %% if the node crashes and Mnesia is restarted prepare_commit(Tid, Commit, WaitFor) -> case Commit#commit.schema_ops of [] -> {false, Commit, optional}; OrigOps -> - {Modified, Ops, DumperMode} = + {Modified, Ops, DumperMode} = prepare_ops(Tid, OrigOps, WaitFor, false, [], optional), InitBy = schema_prepare, - GoodRes = {Modified, + GoodRes = {Modified, Commit#commit{schema_ops = lists:reverse(Ops)}, DumperMode}, case DumperMode of @@ -1737,7 +1773,7 @@ prepare_commit(Tid, Commit, WaitFor) -> end end, case Ops of - [] -> + [] -> ignore; _ -> %% We need to grab a dumper lock here, the log may not @@ -1749,20 +1785,20 @@ prepare_commit(Tid, Commit, WaitFor) -> prepare_ops(Tid, [Op | Ops], WaitFor, Changed, Acc, DumperMode) -> case prepare_op(Tid, Op, WaitFor) of - {true, mandatory} -> + {true, mandatory} -> prepare_ops(Tid, Ops, WaitFor, Changed, [Op | Acc], mandatory); - {true, optional} -> + {true, optional} -> prepare_ops(Tid, Ops, WaitFor, Changed, [Op | Acc], DumperMode); - {true, Ops2, mandatory} -> + {true, Ops2, mandatory} -> prepare_ops(Tid, Ops, WaitFor, true, Ops2 ++ Acc, mandatory); - {true, Ops2, optional} -> + {true, Ops2, optional} -> prepare_ops(Tid, Ops, WaitFor, true, Ops2 ++ Acc, DumperMode); - {false, optional} -> + {false, optional} -> prepare_ops(Tid, Ops, WaitFor, true, Acc, DumperMode) end; prepare_ops(_Tid, [], _WaitFor, Changed, Acc, DumperMode) -> {Changed, Acc, DumperMode}. - + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Prepare for commit %% returns true if Op should be included, i.e. unmodified @@ -1781,8 +1817,8 @@ prepare_op(_Tid, {op, rec, unknown, Rec}, _WaitFor) -> prepare_op(_Tid, {op, announce_im_running, Node, SchemaDef, Running, RemoteRunning}, _WaitFor) -> SchemaCs = list2cs(SchemaDef), - if - Node == node() -> %% Announce has already run on local node + if + Node == node() -> %% Announce has already run on local node ignore; %% from do_merge_schema true -> %% If a node has restarted it may still linger in db_nodes, @@ -1794,9 +1830,9 @@ prepare_op(_Tid, {op, announce_im_running, Node, SchemaDef, Running, RemoteRunni end, {false, optional}; -prepare_op(_Tid, {op, sync_trans}, {part, CoordPid}) -> +prepare_op(_Tid, {op, sync_trans}, {part, CoordPid}) -> CoordPid ! {sync_trans, self()}, - receive + receive {sync_trans, CoordPid} -> {false, optional}; {mnesia_down, _Node} = Else -> @@ -1807,7 +1843,7 @@ prepare_op(_Tid, {op, sync_trans}, {part, CoordPid}) -> mnesia:abort(Else) end; -prepare_op(_Tid, {op, sync_trans}, {coord, Nodes}) -> +prepare_op(_Tid, {op, sync_trans}, {coord, Nodes}) -> case receive_sync(Nodes, []) of {abort, Reason} -> mnesia_lib:verbose("sync_op terminated due to ~p~n", [Reason]), @@ -1838,7 +1874,7 @@ prepare_op(Tid, {op, create_table, TabDef}, _WaitFor) -> create_ram_table(Tab, Cs#cstruct.type), create_disc_table(Tab), insert_cstruct(Tid, Cs, false), - {true, optional}; + {true, optional}; disc_only_copies -> mnesia_lib:set({Tab, create_table},true), create_disc_only_table(Tab,Cs#cstruct.type), @@ -1857,15 +1893,15 @@ prepare_op(Tid, {op, add_table_copy, Storage, Node, TabDef}, _WaitFor) -> if Tab == schema -> {true, optional}; - + Node == node() -> - case mnesia_lib:val({schema, storage_type}) of - ram_copies when Storage /= ram_copies -> + case mnesia_lib:val({schema, storage_type}) of + ram_copies when Storage /= ram_copies -> Error = {combine_error, Tab, "has no disc", Node}, mnesia:abort(Error); _ -> ok - end, + end, %% Tables are created by mnesia_loader get_network code insert_cstruct(Tid, Cs, true), case mnesia_controller:get_network_copy(Tab, Cs) of @@ -1902,22 +1938,22 @@ prepare_op(Tid, {op, add_table_copy, Storage, Node, TabDef}, _WaitFor) -> prepare_op(Tid, {op, del_table_copy, _Storage, Node, TabDef}, _WaitFor) -> Cs = list2cs(TabDef), Tab = Cs#cstruct.name, - + if %% Schema table lock is always required to run a schema op. %% No need to look it. - node(Tid#tid.pid) == node(), Tab /= schema -> + node(Tid#tid.pid) == node(), Tab /= schema -> Self = self(), Pid = spawn_link(fun() -> lock_del_table(Tab, Node, Cs, Self) end), put(mnesia_lock, Pid), - receive - {Pid, updated} -> + receive + {Pid, updated} -> {true, optional}; {Pid, FailReason} -> mnesia:abort(FailReason); {'EXIT', Pid, Reason} -> mnesia:abort(Reason) - end; + end; true -> {true, optional} end; @@ -1928,12 +1964,12 @@ prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}, _WaitFor) Tab = Cs#cstruct.name, NotActive = mnesia_lib:not_active_here(Tab), - - if + + if NotActive == true -> mnesia:abort({not_active, Tab, node()}); - - Tab == schema -> + + Tab == schema -> case {FromS, ToS} of {ram_copies, disc_copies} -> case mnesia:system_info(schema_location) of @@ -1943,7 +1979,7 @@ prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}, _WaitFor) mnesia:abort({combine_error, Tab, node(), "schema_location must be opt_disc"}) end, - Dir = mnesia_lib:dir(), + Dir = mnesia_lib:dir(), case opt_create_dir(true, Dir) of ok -> purge_dir(Dir, []), @@ -1967,18 +2003,18 @@ prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}, _WaitFor) _ -> mnesia:abort({combine_error, Tab, ToS}) end; - - FromS == ram_copies -> + + FromS == ram_copies -> case mnesia_monitor:use_dir() of - true -> + true -> Dat = mnesia_lib:tab2dcd(Tab), case mnesia_lib:exists(Dat) of true -> mnesia:abort({combine_error, Tab, node(), "Table dump exists"}); false -> - case ToS of - disc_copies -> + case ToS of + disc_copies -> mnesia_log:ets2dcd(Tab, dmp); disc_only_copies -> mnesia_dumper:raw_named_dump_table(Tab, dmp) @@ -1988,7 +2024,7 @@ prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}, _WaitFor) false -> mnesia:abort({has_no_disc, node()}) end; - + FromS == disc_copies, ToS == disc_only_copies -> mnesia_dumper:raw_named_dump_table(Tab, dmp); FromS == disc_only_copies -> @@ -2020,7 +2056,7 @@ prepare_op(_Tid, {op, dump_table, unknown, TabDef}, _WaitFor) -> case lists:member(node(), Cs#cstruct.ram_copies) of true -> case mnesia_monitor:use_dir() of - true -> + true -> mnesia_log:ets2dcd(Tab, dmp), Size = mnesia:table_info(Tab, size), {true, [{op, dump_table, Size, TabDef}], optional}; @@ -2058,7 +2094,7 @@ prepare_op(_Tid, {op, transform, Fun, TabDef}, _WaitFor) -> mnesia_lib:db_fixtable(Storage, Tab, true), Key = mnesia_lib:db_first(Tab), Op = {op, transform, Fun, TabDef}, - case catch transform_objs(Fun, Tab, RecName, + case catch transform_objs(Fun, Tab, RecName, Key, NewArity, Storage, Type, [Op]) of {'EXIT', Reason} -> mnesia_lib:db_fixtable(Storage, Tab, false), @@ -2072,7 +2108,7 @@ prepare_op(_Tid, {op, transform, Fun, TabDef}, _WaitFor) -> prepare_op(_Tid, {op, merge_schema, TabDef}, _WaitFor) -> Cs = list2cs(TabDef), case verify_merge(Cs) of - ok -> + ok -> {true, optional}; Error -> verbose("Merge_Schema ~p failed on ~p: ~p~n", [_Tid,node(),Error]), @@ -2093,7 +2129,7 @@ create_ram_table(Tab, Type) -> create_disc_table(Tab) -> File = mnesia_lib:tab2dcd(Tab), file:delete(File), - FArg = [{file, File}, {name, {mnesia,create}}, + FArg = [{file, File}, {name, {mnesia,create}}, {repair, false}, {mode, read_write}], case mnesia_monitor:open_log(FArg) of {ok,Log} -> @@ -2124,7 +2160,7 @@ receive_sync([], Pids) -> receive_sync(Nodes, Pids) -> receive {sync_trans, Pid} -> - Node = node(Pid), + Node = node(Pid), receive_sync(lists:delete(Node, Nodes), [Pid | Pids]); Else -> {abort, Else} @@ -2140,16 +2176,16 @@ lock_del_table(Tab, Node, Cs, Father) -> false; ({badrpc, {'EXIT', {undef, _}}}) -> %% This will be the case we talks with elder nodes - %% than 3.8.2, they will set where_to_read without - %% getting a lock. + %% than 3.8.2, they will set where_to_read without + %% getting a lock. false; (_) -> true end, case lists:filter(Filter, Res) of - [] -> + [] -> Father ! {self(), updated}, - %% When transaction is commited the process dies + %% When transaction is commited the process dies %% and the lock is released. receive _ -> ok end; Err -> @@ -2166,7 +2202,7 @@ lock_del_table(Tab, Node, Cs, Father) -> exit(normal). set_where_to_read(Tab, Node, Cs) -> - case mnesia_lib:val({Tab, where_to_read}) of + case mnesia_lib:val({Tab, where_to_read}) of Node -> case Cs#cstruct.local_content of true -> @@ -2185,16 +2221,16 @@ transform_objs(_Fun, _Tab, _RT, '$end_of_table', _NewArity, _Storage, _Type, Acc transform_objs(Fun, Tab, RecName, Key, A, Storage, Type, Acc) -> Objs = mnesia_lib:db_get(Tab, Key), NextKey = mnesia_lib:db_next_key(Tab, Key), - Oid = {Tab, Key}, + Oid = {Tab, Key}, NewObjs = {Ws, Ds} = transform_obj(Tab, RecName, Key, Fun, Objs, A, Type, [], []), - if - NewObjs == {[], []} -> + if + NewObjs == {[], []} -> transform_objs(Fun, Tab, RecName, NextKey, A, Storage, Type, Acc); - Type == bag -> + Type == bag -> transform_objs(Fun, Tab, RecName, NextKey, A, Storage, Type, [{op, rec, Storage, {Oid, Ws, write}}, {op, rec, Storage, {Oid, [Oid], delete}} | Acc]); - Ds == [] -> + Ds == [] -> %% Type is set or ordered_set, no need to delete the record first transform_objs(Fun, Tab, RecName, NextKey, A, Storage, Type, [{op, rec, Storage, {Oid, Ws, write}} | Acc]); @@ -2215,15 +2251,15 @@ transform_obj(Tab, RecName, Key, Fun, [Obj|Rest], NewArity, Type, Ws, Ds) -> NewObj == Obj -> transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, Type, Ws, Ds); RecName == element(1, NewObj), Key == element(2, NewObj) -> - transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, + transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, Type, [NewObj | Ws], Ds); - NewObj == delete -> - case Type of + NewObj == delete -> + case Type of bag -> %% Just don't write that object - transform_obj(Tab, RecName, Key, Fun, Rest, - NewArity, Type, Ws, Ds); + transform_obj(Tab, RecName, Key, Fun, Rest, + NewArity, Type, Ws, Ds); _ -> - transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, + transform_obj(Tab, RecName, Key, Fun, Rest, NewArity, Type, Ws, [NewObj | Ds]) end; true -> @@ -2247,7 +2283,7 @@ undo_prepare_commit(Tid, Commit) -> %% Undo in reverse order undo_prepare_ops(Tid, [Op | Ops]) -> - case element(1, Op) of + case element(1, Op) of TheOp when TheOp /= op, TheOp /= restore_op -> undo_prepare_ops(Tid, Ops); _ -> @@ -2274,7 +2310,7 @@ undo_prepare_op(Tid, {op, create_table, TabDef}) -> mnesia_lib:unset({Tab, create_table}), delete_cstruct(Tid, Cs), case mnesia_lib:cs_to_storage_type(node(), Cs) of - unknown -> + unknown -> ok; ram_copies -> ram_delete_table(Tab, ram_copies); @@ -2289,7 +2325,7 @@ undo_prepare_op(Tid, {op, create_table, TabDef}) -> %% disc_delete_table(Tab, Storage), file:delete(Dat) end; - + undo_prepare_op(Tid, {op, add_table_copy, Storage, Node, TabDef}) -> Cs = list2cs(TabDef), Tab = Cs#cstruct.name, @@ -2314,21 +2350,21 @@ undo_prepare_op(Tid, {op, add_table_copy, Storage, Node, TabDef}) -> Cs2 = new_cs(Cs, Node, Storage, del), insert_cstruct(Tid, Cs2, true) % Don't care about the version end; - -undo_prepare_op(_Tid, {op, del_table_copy, _, Node, TabDef}) + +undo_prepare_op(_Tid, {op, del_table_copy, _, Node, TabDef}) when Node == node() -> Cs = list2cs(TabDef), Tab = Cs#cstruct.name, mnesia_lib:set({Tab, where_to_read}, Node); -undo_prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}) +undo_prepare_op(_Tid, {op, change_table_copy_type, N, FromS, ToS, TabDef}) when N == node() -> Cs = list2cs(TabDef), Tab = Cs#cstruct.name, mnesia_checkpoint:tm_change_table_copy_type(Tab, ToS, FromS), Dmp = mnesia_lib:tab2dmp(Tab), - + case {FromS, ToS} of {ram_copies, disc_copies} when Tab == schema -> file:delete(Dmp), @@ -2382,9 +2418,9 @@ ram_delete_table(Tab, Storage) -> ignore; disc_only_copies -> ignore; - _Else -> + _Else -> %% delete possible index files and data ..... - %% Got to catch this since if no info has been set in the + %% Got to catch this since if no info has been set in the %% mnesia_gvar it will crash catch mnesia_index:del_transient(Tab, Storage), case ?catch_val({Tab, {index, snmp}}) of @@ -2454,7 +2490,7 @@ has_known_suffix(File, [Suffix | Tail], false) -> has_known_suffix(File, Tail, lists:suffix(Suffix, File)); has_known_suffix(_File, [], Bool) -> Bool. - + known_suffixes() -> real_suffixes() ++ tmp_suffixes(). real_suffixes() -> [".DAT", ".LOG", ".BUP", ".DCL", ".DCD"]. @@ -2477,11 +2513,11 @@ info2(Tab, [{frag_hash, _V} | Tail]) -> % Ignore frag_hash info2(Tab, [{P, V} | Tail]) -> io:format("~-20w -> ~p~n",[P,V]), info2(Tab, Tail); -info2(_, []) -> +info2(_, []) -> io:format("~n", []). get_table_properties(Tab) -> - case catch mnesia_lib:db_match_object(ram_copies, + case catch mnesia_lib:db_match_object(ram_copies, mnesia_gvar, {{Tab, '_'}, '_'}) of {'EXIT', _} -> mnesia:abort({no_exists, Tab, all}); @@ -2509,9 +2545,9 @@ get_table_properties(Tab) -> recs = error_recs }). -restore(Opaque) -> +restore(Opaque) -> restore(Opaque, [], mnesia_monitor:get_env(backup_module)). -restore(Opaque, Args) when is_list(Args) -> +restore(Opaque, Args) when is_list(Args) -> restore(Opaque, Args, mnesia_monitor:get_env(backup_module)); restore(_Opaque, BadArg) -> {aborted, {badarg, BadArg}}. @@ -2522,7 +2558,7 @@ restore(Opaque, Args, Module) when is_list(Args), is_atom(Module) -> case mnesia_bup:read_schema(R#r.module, Opaque) of {error, Reason} -> {aborted, Reason}; - BupSchema -> + BupSchema -> schema_transaction(fun() -> do_restore(R, BupSchema) end) end; {'EXIT', Reason} -> @@ -2556,8 +2592,8 @@ check_restore_arg({keep_tables, List}, R) when is_list(List) -> check_restore_arg({skip_tables, List}, R) when is_list(List) -> TableList = [{Tab, skip_tables} || Tab <- List], R#r{table_options = R#r.table_options ++ TableList}; -check_restore_arg({default_op, Op}, R) -> - case Op of +check_restore_arg({default_op, Op}, R) -> + case Op of clear_tables -> ok; recreate_tables -> ok; keep_tables -> ok; @@ -2588,12 +2624,12 @@ restore_items([Rec | Recs], Header, Schema, R) -> case lists:keysearch(Tab, 1, R#r.tables) of {value, {Tab, Where0, Snmp, RecName}} -> Where = case Where0 of - undefined -> + undefined -> val({Tab, where_to_commit}); _ -> Where0 end, - {Rest, NRecs} = restore_tab_items([Rec | Recs], Tab, + {Rest, NRecs} = restore_tab_items([Rec | Recs], Tab, RecName, Where, Snmp, R#r.recs, R#r.insert_op), restore_items(Rest, Header, Schema, R#r{recs = NRecs}); @@ -2601,12 +2637,12 @@ restore_items([Rec | Recs], Header, Schema, R) -> Rest = skip_tab_items(Recs, Tab), restore_items(Rest, Header, Schema, R) end; - + restore_items([], _Header, _Schema, R) -> R. restore_func(Tab, R) -> - case lists:keysearch(Tab, 1, R#r.table_options) of + case lists:keysearch(Tab, 1, R#r.table_options) of {value, {Tab, OP}} -> OP; false -> @@ -2618,24 +2654,24 @@ where_to_commit(Tab, CsList) -> Disc = [{N, disc_copies} || N <- pick(Tab, disc_copies, CsList, [])], DiscO = [{N, disc_only_copies} || N <- pick(Tab, disc_only_copies, CsList, [])], Ram ++ Disc ++ DiscO. - + %% Changes of the Meta info of schema itself is not allowed restore_schema([{schema, schema, _List} | Schema], R) -> restore_schema(Schema, R); restore_schema([{schema, Tab, List} | Schema], R) -> case restore_func(Tab, R) of - clear_tables -> + clear_tables -> do_clear_table(Tab), - Snmp = val({Tab, snmp}), - RecName = val({Tab, record_name}), + Snmp = val({Tab, snmp}), + RecName = val({Tab, record_name}), R2 = R#r{tables = [{Tab, undefined, Snmp, RecName} | R#r.tables]}, restore_schema(Schema, R2); - recreate_tables -> + recreate_tables -> case ?catch_val({Tab, cstruct}) of - {'EXIT', _} -> + {'EXIT', _} -> TidTs = {_Mod, Tid, Ts} = get(mnesia_activity_state), RunningNodes = val({current, db_nodes}), - Nodes = mnesia_lib:intersect(mnesia_lib:cs_to_nodes(list2cs(List)), + Nodes = mnesia_lib:intersect(mnesia_lib:cs_to_nodes(list2cs(List)), RunningNodes), mnesia_locker:wlock_no_exist(Tid, Ts#tidstore.store, Tab, Nodes), TidTs; @@ -2643,20 +2679,20 @@ restore_schema([{schema, Tab, List} | Schema], R) -> TidTs = get_tid_ts_and_lock(Tab, write) end, NC = {cookie, ?unique_cookie}, - List2 = lists:keyreplace(cookie, 1, List, NC), + List2 = lists:keyreplace(cookie, 1, List, NC), Where = where_to_commit(Tab, List2), Snmp = pick(Tab, snmp, List2, []), RecName = pick(Tab, record_name, List2, Tab), insert_schema_ops(TidTs, [{op, restore_recreate, List2}]), R2 = R#r{tables = [{Tab, Where, Snmp, RecName} | R#r.tables]}, restore_schema(Schema, R2); - keep_tables -> + keep_tables -> get_tid_ts_and_lock(Tab, write), Snmp = val({Tab, snmp}), - RecName = val({Tab, record_name}), + RecName = val({Tab, record_name}), R2 = R#r{tables = [{Tab, undefined, Snmp, RecName} | R#r.tables]}, restore_schema(Schema, R2); - skip_tables -> + skip_tables -> restore_schema(Schema, R) end; @@ -2667,7 +2703,7 @@ restore_schema([{schema, Tab} | Schema], R) -> restore_schema([], R) -> R. -restore_tab_items([Rec | Rest], Tab, RecName, Where, Snmp, Recs, Op) +restore_tab_items([Rec | Rest], Tab, RecName, Where, Snmp, Recs, Op) when element(1, Rec) == Tab -> NewRecs = Op(Rec, Recs, RecName, Where, Snmp), restore_tab_items(Rest, Tab, RecName, Where, Snmp, NewRecs, Op); @@ -2675,7 +2711,7 @@ restore_tab_items([Rec | Rest], Tab, RecName, Where, Snmp, Recs, Op) restore_tab_items(Rest, _Tab, _RecName, _Where, _Snmp, Recs, _Op) -> {Rest, Recs}. -skip_tab_items([Rec| Rest], Tab) +skip_tab_items([Rec| Rest], Tab) when element(1, Rec) == Tab -> skip_tab_items(Rest, Tab); skip_tab_items(Recs, _) -> @@ -2710,7 +2746,6 @@ merge_schema() -> merge_schema(UserFun) -> schema_transaction(fun() -> UserFun(fun(Arg) -> do_merge_schema(Arg) end) end). - do_merge_schema(LockTabs0) -> {_Mod, Tid, Ts} = get_tid_ts_and_lock(schema, write), LockTabs = [{T, tab_to_nodes(T)} || T <- LockTabs0], @@ -2732,14 +2767,14 @@ do_merge_schema(LockTabs0) -> [mnesia_locker:wlock_no_exist( Tid, Store, T, mnesia_lib:intersect(Ns, OtherNodes)) || {T,Ns} <- LockTabs], - case rpc:call(Node, mnesia_controller, get_cstructs, []) of + case fetch_cstructs(Node) of {cstructs, Cstructs, RemoteRunning1} -> LockedAlready = Running ++ [Node], {New, Old} = mnesia_recover:connect_nodes(RemoteRunning1), RemoteRunning = mnesia_lib:intersect(New ++ Old, RemoteRunning1), - if + if RemoteRunning /= RemoteRunning1 -> - mnesia_lib:error("Mnesia on ~p could not connect to node(s) ~p~n", + mnesia_lib:error("Mnesia on ~p could not connect to node(s) ~p~n", [node(), RemoteRunning1 -- RemoteRunning]), mnesia:abort({node_not_running, RemoteRunning1 -- RemoteRunning}); true -> ok @@ -2749,24 +2784,24 @@ do_merge_schema(LockTabs0) -> [mnesia_locker:wlock_no_exist(Tid, Store, T, mnesia_lib:intersect(Ns,NeedsLock)) || {T,Ns} <- LockTabs], - {value, SchemaCs} = - lists:keysearch(schema, #cstruct.name, Cstructs), + NeedsConversion = need_old_cstructs(NeedsLock ++ LockedAlready), + {value, SchemaCs} = lists:keysearch(schema, #cstruct.name, Cstructs), + SchemaDef = cs2list(NeedsConversion, SchemaCs), %% Announce that Node is running - A = [{op, announce_im_running, node(), - cs2list(SchemaCs), Running, RemoteRunning}], + A = [{op, announce_im_running, node(), SchemaDef, Running, RemoteRunning}], do_insert_schema_ops(Store, A), - + %% Introduce remote tables to local node - do_insert_schema_ops(Store, make_merge_schema(Node, Cstructs)), - + do_insert_schema_ops(Store, make_merge_schema(Node, NeedsConversion, Cstructs)), + %% Introduce local tables to remote nodes Tabs = val({schema, tables}), Ops = [{op, merge_schema, get_create_list(T)} || T <- Tabs, not lists:keymember(T, #cstruct.name, Cstructs)], do_insert_schema_ops(Store, Ops), - + %% Ensure that the txn will be committed on all nodes NewNodes = RemoteRunning -- Running, mnesia_lib:set(prepare_op, {announce_im_running,NewNodes}), @@ -2782,19 +2817,49 @@ do_merge_schema(LockTabs0) -> not_merged end. +fetch_cstructs(Node) -> + case mnesia_monitor:needs_protocol_conversion(Node) of + true -> + case rpc:call(Node, mnesia_controller, get_cstructs, []) of + {cstructs, Cs0, RR} -> + {cstructs, [list2cs(cs2list(Cs)) || Cs <- Cs0], RR}; + Err -> Err + end; + false -> + rpc:call(Node, mnesia_controller, get_remote_cstructs, []) + end. + +need_old_cstructs(Nodes) -> + Filter = fun(Node) -> not mnesia_monitor:needs_protocol_conversion(Node) end, + case lists:dropwhile(Filter, Nodes) of + [] -> false; + [Node|_] -> + case rpc:call(Node, mnesia_lib, val, [{schema,cstruct}]) of + #cstruct{} -> + %% mnesia_lib:warning("Mnesia on ~p do not need to convert cstruct (~p)~n", + %% [node(), Node]), + false; + {badrpc, _} -> + need_old_cstructs(lists:delete(Node,Nodes)); + Cs when element(1, Cs) == cstruct, tuple_size(Cs) == 17 -> + ver4_4_18; % Without majority + Cs when element(1, Cs) == cstruct, tuple_size(Cs) == 18 -> + ver4_4_19 % With majority + end + end. + tab_to_nodes(Tab) when is_atom(Tab) -> Cs = val({Tab, cstruct}), mnesia_lib:cs_to_nodes(Cs). -make_merge_schema(Node, [Cs | Cstructs]) -> - Ops = do_make_merge_schema(Node, Cs), - Ops ++ make_merge_schema(Node, Cstructs); -make_merge_schema(_Node, []) -> +make_merge_schema(Node, NeedsConv, [Cs | Cstructs]) -> + Ops = do_make_merge_schema(Node, NeedsConv, Cs), + Ops ++ make_merge_schema(Node, NeedsConv, Cstructs); +make_merge_schema(_Node, _, []) -> []. %% Merge definitions of schema table -do_make_merge_schema(Node, RemoteCs) - when RemoteCs#cstruct.name == schema -> +do_make_merge_schema(Node, NeedsConv, RemoteCs = #cstruct{name = schema}) -> Cs = val({schema, cstruct}), Masters = mnesia_recover:get_master_nodes(schema), HasRemoteMaster = lists:member(Node, Masters), @@ -2804,15 +2869,15 @@ do_make_merge_schema(Node, RemoteCs) StCsLocal = mnesia_lib:cs_to_storage_type(node(), Cs), StRcsLocal = mnesia_lib:cs_to_storage_type(node(), RemoteCs), StCsRemote = mnesia_lib:cs_to_storage_type(Node, Cs), - StRcsRemote = mnesia_lib:cs_to_storage_type(Node, RemoteCs), - + StRcsRemote = mnesia_lib:cs_to_storage_type(Node, RemoteCs), + if Cs#cstruct.cookie == RemoteCs#cstruct.cookie, Cs#cstruct.version == RemoteCs#cstruct.version -> %% Great, we have the same cookie and version %% and do not need to merge cstructs []; - + Cs#cstruct.cookie /= RemoteCs#cstruct.cookie, Cs#cstruct.disc_copies /= [], RemoteCs#cstruct.disc_copies /= [] -> @@ -2823,14 +2888,14 @@ do_make_merge_schema(Node, RemoteCs) HasRemoteMaster == false -> %% Choose local cstruct, %% since it's the master - [{op, merge_schema, cs2list(Cs)}]; + [{op, merge_schema, cs2list(NeedsConv, Cs)}]; HasRemoteMaster == true, HasLocalMaster == false -> %% Choose remote cstruct, %% since it's the master - [{op, merge_schema, cs2list(RemoteCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, RemoteCs)}]; + true -> Str = io_lib:format("Incompatible schema cookies. " "Please, restart from old backup." @@ -2838,12 +2903,12 @@ do_make_merge_schema(Node, RemoteCs) [Node, cs2list(RemoteCs), node(), cs2list(Cs)]), throw(Str) end; - + StCsLocal /= StRcsLocal, StRcsLocal /= unknown, StCsLocal /= ram_copies -> Str = io_lib:format("Incompatible schema storage types (local). " "on ~w storage ~w, on ~w storage ~w~n", [node(), StCsLocal, Node, StRcsLocal]), - throw(Str); + throw(Str); StCsRemote /= StRcsRemote, StCsRemote /= unknown, StRcsRemote /= ram_copies -> Str = io_lib:format("Incompatible schema storage types (remote). " "on ~w cs ~w, on ~w rcs ~w~n", @@ -2854,27 +2919,27 @@ do_make_merge_schema(Node, RemoteCs) %% Choose local cstruct, %% since it involves disc nodes MergedCs = merge_cstructs(Cs, RemoteCs, Force), - [{op, merge_schema, cs2list(MergedCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}]; + RemoteCs#cstruct.disc_copies /= [] -> %% Choose remote cstruct, %% since it involves disc nodes MergedCs = merge_cstructs(RemoteCs, Cs, Force), - [{op, merge_schema, cs2list(MergedCs)}]; + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}]; Cs > RemoteCs -> %% Choose remote cstruct MergedCs = merge_cstructs(RemoteCs, Cs, Force), - [{op, merge_schema, cs2list(MergedCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}]; + true -> %% Choose local cstruct MergedCs = merge_cstructs(Cs, RemoteCs, Force), - [{op, merge_schema, cs2list(MergedCs)}] + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}] end; %% Merge definitions of normal table -do_make_merge_schema(Node, RemoteCs) -> +do_make_merge_schema(Node, NeedsConv, RemoteCs = #cstruct{}) -> Tab = RemoteCs#cstruct.name, Masters = mnesia_recover:get_master_nodes(schema), HasRemoteMaster = lists:member(Node, Masters), @@ -2883,27 +2948,27 @@ do_make_merge_schema(Node, RemoteCs) -> case ?catch_val({Tab, cstruct}) of {'EXIT', _} -> %% A completely new table, created while Node was down - [{op, merge_schema, cs2list(RemoteCs)}]; + [{op, merge_schema, cs2list(NeedsConv, RemoteCs)}]; Cs when Cs#cstruct.cookie == RemoteCs#cstruct.cookie -> if Cs#cstruct.version == RemoteCs#cstruct.version -> %% We have exactly the same version of the %% table def []; - + Cs#cstruct.version > RemoteCs#cstruct.version -> %% Oops, we have different versions %% of the table def, lets merge them. %% The only changes that may have occurred %% is that new replicas may have been added. MergedCs = merge_cstructs(Cs, RemoteCs, Force), - [{op, merge_schema, cs2list(MergedCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}]; + Cs#cstruct.version < RemoteCs#cstruct.version -> %% Oops, we have different versions %% of the table def, lets merge them MergedCs = merge_cstructs(RemoteCs, Cs, Force), - [{op, merge_schema, cs2list(MergedCs)}] + [{op, merge_schema, cs2list(NeedsConv, MergedCs)}] end; Cs -> %% Different cookies, not possible to merge @@ -2912,14 +2977,14 @@ do_make_merge_schema(Node, RemoteCs) -> HasRemoteMaster == false -> %% Choose local cstruct, %% since it's the master - [{op, merge_schema, cs2list(Cs)}]; + [{op, merge_schema, cs2list(NeedsConv, Cs)}]; HasRemoteMaster == true, HasLocalMaster == false -> %% Choose remote cstruct, %% since it's the master - [{op, merge_schema, cs2list(RemoteCs)}]; - + [{op, merge_schema, cs2list(NeedsConv, RemoteCs)}]; + true -> Str = io_lib:format("Bad cookie in table definition" " ~w: ~w = ~w, ~w = ~w~n", @@ -2989,7 +3054,7 @@ compare_storage_type(true, One, Another) -> compare_storage_type(false, Another, One); compare_storage_type(false, _One, _Another) -> incompatible. - + change_storage_type(N, ram_copies, Cs) -> Nodes = [N | Cs#cstruct.ram_copies], Cs#cstruct{ram_copies = mnesia_lib:uniq(Nodes)}; @@ -3071,14 +3136,14 @@ verify_merge(RemoteCs) -> if StCsLocal == StRcsLocal -> ok; StCsLocal == unknown -> ok; - (StRcsLocal == unknown), (HasRemoteMaster == false) -> + (StRcsLocal == unknown), (HasRemoteMaster == false) -> {merge_error, Cs, RemoteCs}; %% Trust the merger true -> ok end end. -announce_im_running([N | Ns], SchemaCs) -> +announce_im_running([N | Ns], SchemaCs) -> {L1, L2} = mnesia_recover:connect_nodes([N]), case lists:member(N, L1) or lists:member(N, L2) of true -> @@ -3095,7 +3160,7 @@ announce_im_running([], _) -> unannounce_im_running([N | Ns]) -> mnesia_lib:del({current, db_nodes}, N), - mnesia_controller:del_active_replica(schema, N), + mnesia_controller:del_active_replica(schema, N), unannounce_im_running(Ns); unannounce_im_running([]) -> ok. diff --git a/lib/odbc/c_src/Makefile.in b/lib/odbc/c_src/Makefile.in index ed3eeb1d42..dda896bcd2 100644 --- a/lib/odbc/c_src/Makefile.in +++ b/lib/odbc/c_src/Makefile.in @@ -89,9 +89,10 @@ TARGET_FLAGS = @TARGET_FLAGS@ # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(OBJ_DIR) $(BIN_DIR)) ifdef EXE_TARGET -opt debug: create_dirs $(EXE_TARGET) +opt debug: $(EXE_TARGET) else opt debug: endif @@ -119,10 +120,6 @@ endif $(OBJ_DIR)/odbcserver.o: odbcserver.c $(CC) $(CFLAGS) $(INCLUDES) $(TARGET_FLAGS) -o $@ -c odbcserver.c -create_dirs: - $(INSTALL_DIR) $(OBJ_DIR) - $(INSTALL_DIR) $(BIN_DIR) - # ---------------------------------------------------- # Release Target # ---------------------------------------------------- diff --git a/lib/odbc/doc/src/odbc.xml b/lib/odbc/doc/src/odbc.xml index 11ca97f743..8a58dc2848 100644 --- a/lib/odbc/doc/src/odbc.xml +++ b/lib/odbc/doc/src/odbc.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1999</year><year>2010</year> + <year>1999</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -138,7 +138,7 @@ <fsummary>Opens a connection to the database. </fsummary> <type> <v>ConnectStr = string()</v> - <d>An example of a connection string:<c>"DSN=sql-server;UID=aladdin;PWD=sesame"</c>where DSN is your ODBC Data Source Name, UID is a database user id and PWD is the password for that user. These are usually the attributes required in the connection string, but some drivers have other driver specific attributes, for example<c>"DSN=Oracle8;DBQ=gandalf;UID=aladdin;PWD=sesame"</c>where DBQ is your TNSNAMES.ORA entry name e.g. some Oracle specific configuration attribute.</d> + <d>An example of a connection string: <c>"DSN=sql-server;UID=aladdin;PWD=sesame"</c> where DSN is your ODBC Data Source Name, UID is a database user id and PWD is the password for that user. These are usually the attributes required in the connection string, but some drivers have other driver specific attributes, for example <c>"DSN=Oracle8;DBQ=gandalf;UID=aladdin;PWD=sesame"</c> where DBQ is your TNSNAMES.ORA entry name e.g. some Oracle specific configuration attribute.</d> <v>Options = [] | [option()]</v> <d>All options has default values. </d> <v>option() = {auto_commit, on | off} | {timeout, milliseconds()} @@ -432,7 +432,7 @@ <desc> <p>Selects <c>N</c> consecutive rows of the result set. If <c>Position</c> is <c>next</c> it is semantically equivalent - of calling <c>next/[1,2]</c><c>N</c> times. If + of calling <c>next/[1,2]</c> <c>N</c> times. If <c>Position</c> is <c>{relative, Pos}</c>, <c>Pos</c> will be used as an offset from the current cursor position to determine the first selected row. If <c>Position</c> is diff --git a/lib/odbc/test/odbc_test_lib.erl b/lib/odbc/test/odbc_test_lib.erl index 4d7d1ae2fa..a8439d5fb6 100644 --- a/lib/odbc/test/odbc_test_lib.erl +++ b/lib/odbc/test/odbc_test_lib.erl @@ -36,18 +36,25 @@ match_float(Float, Match, Delta) -> (Float < Match + Delta) and (Float > Match - Delta). odbc_check() -> - case erlang:system_info({wordsize, external}) of - 4 -> - ok; - Other -> - case os:type() of - {unix, linux} -> + case os:type() of + {unix,darwin} -> + lists:flatten( + io_lib:format("Currently we have no working drivers for MAC", + [])); + _ -> + case erlang:system_info({wordsize, external}) of + 4 -> ok; - Platform -> - lists:flatten( - io_lib:format("Word on platform ~w size" - " ~w not supported", [Other, - Platform])) + Other -> + case os:type() of + {unix, linux} -> + ok; + Platform -> + lists:flatten( + io_lib:format("Word on platform ~w size" + " ~w not supported", [Other, + Platform])) + end end end. diff --git a/lib/orber/doc/src/orber_ifr.xml b/lib/orber/doc/src/orber_ifr.xml index 021082e101..2d47d57476 100644 --- a/lib/orber/doc/src/orber_ifr.xml +++ b/lib/orber/doc/src/orber_ifr.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1997</year><year>2009</year> + <year>1997</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -297,7 +297,7 @@ </desc> </func> <func> - <name>describe_contents(Objref,Limit_type,Exclude_inherited,Max_returned_objs) -> Return</name> + <name>describe_contents(Objref, Limit_type, Exclude_inherited, Max_returned_objs) -> Return</name> <fsummary>Return a list of descriptions of the IFR objects contained by the target Container object</fsummary> <type> <v>Objref = #IFR_objref</v> diff --git a/lib/orber/include/Makefile b/lib/orber/include/Makefile deleted file mode 100644 index 219b7085e6..0000000000 --- a/lib/orber/include/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1998-2009. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -# -# -include $(ERL_TOP)/make/target.mk - -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Application version -# ---------------------------------------------------- -include ../vsn.mk -VSN=$(ORBER_VSN) - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/orber-$(VSN) - -# ---------------------------------------------------- -# Target Specs -# ---------------------------------------------------- - -EXTERNAL_HRL_FILES= ../include/corba.hrl \ - ../include/ifr_types.hrl \ - ../include/orber_pi.hrl - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- -debug opt clean docs: - - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - - -release_spec: opt - $(INSTALL_DIR) $(RELSYSDIR)/include - $(INSTALL_DATA) $(EXTERNAL_HRL_FILES) $(RELSYSDIR)/include - - -release_docs_spec: - - diff --git a/lib/os_mon/c_src/cpu_sup.c b/lib/os_mon/c_src/cpu_sup.c index fbf318c614..e3bdbd1489 100644 --- a/lib/os_mon/c_src/cpu_sup.c +++ b/lib/os_mon/c_src/cpu_sup.c @@ -191,7 +191,10 @@ int main(int argc, char** argv) { static cpu_t *read_procstat(FILE *fp, cpu_t *cpu) { char buffer[BUFFERSIZE]; - fgets(buffer, BUFFERSIZE, fp); + if (fgets(buffer, BUFFERSIZE, fp) == NULL) { + memset(cpu, 0, sizeof(cpu_t)); + return cpu; + } sscanf(buffer, "cpu%u %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", &(cpu->id), &(cpu->user), @@ -223,7 +226,11 @@ static void util_measure(unsigned int **result_vec, int *result_sz) { return; } - fgets(buffer, BUFFERSIZE, fp); /*ignore read*/ + /*ignore read*/ + if (fgets(buffer, BUFFERSIZE, fp) == NULL) { + *result_sz = 0; + return; + } rv = *result_vec; rv[0] = no_of_cpus; rv[1] = CU_VALUES; @@ -447,8 +454,12 @@ static void sendv(unsigned int data[], int ints) { } static void error(char* err_msg) { - write(FD_ERR, err_msg, strlen(err_msg)); - write(FD_ERR, "\n", 1); + /* + * if we get error here we have trouble, + * silence unnecessary warnings + */ + if(write(FD_ERR, err_msg, strlen(err_msg))); + if(write(FD_ERR, "\n", 1)); exit(-1); } diff --git a/lib/parsetools/doc/src/yecc.xml b/lib/parsetools/doc/src/yecc.xml index 1d2a985d7d..66bc6f4795 100644 --- a/lib/parsetools/doc/src/yecc.xml +++ b/lib/parsetools/doc/src/yecc.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1996</year><year>2009</year> + <year>1996</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -336,7 +336,7 @@ element -> list : '$1'. </code> <code type="none"> {cons, {atom, 1, a,} {cons, {atom, 1, b}, {cons, {atom, 1, c}, nil}}} </code> - <p>The associated code contains <c>pseudo variables</c><c>'$1'</c>, <c>'$2'</c>, <c>'$3'</c>, etc. which refer to (are + <p>The associated code contains <c>pseudo variables</c> <c>'$1'</c>, <c>'$2'</c>, <c>'$3'</c>, etc. which refer to (are bound to) the values associated previously by the parser with the symbols of the right hand side of the rule. When these symbols are terminal categories, the values are token tuples of diff --git a/lib/parsetools/src/leex.erl b/lib/parsetools/src/leex.erl index 942e9928b1..cdf20461d9 100644 --- a/lib/parsetools/src/leex.erl +++ b/lib/parsetools/src/leex.erl @@ -73,12 +73,15 @@ %%% Interface to erl_compile. compile(Input0, Output0, - #options{warning = WarnLevel, verbose=Verbose, includes=Includes}) -> + #options{warning = WarnLevel, verbose=Verbose, includes=Includes, + specific=Specific}) -> Input = assure_extension(shorten_filename(Input0), ".xrl"), Output = assure_extension(shorten_filename(Output0), ".erl"), Includefile = lists:sublist(Includes, 1), + Werror = proplists:get_bool(warnings_as_errors, Specific), Opts = [{scannerfile,Output},{includefile,Includefile},{verbose,Verbose}, - {report_errors,true},{report_warnings,WarnLevel > 0}], + {report_errors,true},{report_warnings,WarnLevel > 0}, + {warnings_as_errors, Werror}], case file(Input, Opts) of {ok, _} -> ok; @@ -107,7 +110,7 @@ file(File, Opts0) -> St = try {ok,REAs,Actions,Code,St2} = parse_file(St1), {DFA,DF} = make_dfa(REAs, St2), - case werr(St2) of + case werror(St2) of false -> St3 = out_file(St2, DFA, DF, Actions, Code), case lists:member(dfa_graph, St3#leex.opts) of @@ -259,9 +262,9 @@ leex_ret(St) -> report_warnings(St), Es = pack_errors(St#leex.errors), Ws = pack_warnings(St#leex.warnings), - Werr = werr(St), + Werror = werror(St), if - Werr -> + Werror -> do_error_return(St, Es, Ws); Es =:= [] -> case member(return_warnings, St#leex.opts) of @@ -278,9 +281,9 @@ do_error_return(St, Es, Ws) -> false -> error end. -werr(St) -> - member(warnings_as_errors, St#leex.opts) - andalso length(St#leex.warnings) > 0. +werror(St) -> + St#leex.warnings =/= [] + andalso member(warnings_as_errors, St#leex.opts). pack_errors([{File,_} | _] = Es) -> [{File, flatmap(fun({_,E}) -> [E] end, sort(Es))}]; @@ -304,15 +307,24 @@ report_errors(St) -> end, report_errors, St#leex.opts). report_warnings(St) -> - when_opt(fun () -> - foreach(fun({File,{none,Mod,W}}) -> - io:fwrite("~s: Warning: ~s\n", - [File,Mod:format_error(W)]); - ({File,{Line,Mod,W}}) -> - io:fwrite("~s:~w: Warning: ~s\n", - [File,Line,Mod:format_error(W)]) - end, sort(St#leex.warnings)) - end, report_warnings, St#leex.opts). + Werror = member(warnings_as_errors, St#leex.opts), + Prefix = case Werror of + true -> ""; + false -> "Warning: " + end, + ReportWerror = Werror andalso member(report_errors, St#leex.opts), + ShouldReport = member(report_warnings, St#leex.opts) orelse ReportWerror, + when_bool(fun () -> + foreach(fun({File,{none,Mod,W}}) -> + io:fwrite("~s: ~s~s\n", + [File,Prefix, + Mod:format_error(W)]); + ({File,{Line,Mod,W}}) -> + io:fwrite("~s:~w: ~s~s\n", + [File,Line,Prefix, + Mod:format_error(W)]) + end, sort(St#leex.warnings)) + end, ShouldReport). -spec add_error(_, #leex{}) -> no_return(). add_error(E, St) -> @@ -360,6 +372,12 @@ when_opt(Do, Opt, Opts) -> false -> ok end. +when_bool(Do, Bool) -> + case Bool of + true -> Do(); + false -> ok + end. + verbose_print(St, Format, Args) -> when_opt(fun () -> io:fwrite(Format, Args) end, verbose, St#leex.opts). diff --git a/lib/parsetools/src/yecc.erl b/lib/parsetools/src/yecc.erl index 72cff3af92..354d56527d 100644 --- a/lib/parsetools/src/yecc.erl +++ b/lib/parsetools/src/yecc.erl @@ -133,12 +133,15 @@ %%% Interface to erl_compile. compile(Input0, Output0, - #options{warning = WarnLevel, verbose=Verbose, includes=Includes}) -> + #options{warning = WarnLevel, verbose=Verbose, includes=Includes, + specific=Specific}) -> Input = shorten_filename(Input0), Output = shorten_filename(Output0), Includefile = lists:sublist(Includes, 1), + Werror = proplists:get_bool(warnings_as_errors, Specific), Opts = [{parserfile,Output}, {includefile,Includefile}, {verbose,Verbose}, - {report_errors, true}, {report_warnings, WarnLevel > 0}], + {report_errors, true}, {report_warnings, WarnLevel > 0}, + {warnings_as_errors, Werror}], case file(Input, Opts) of {ok, _OutFile} -> ok; @@ -411,15 +414,15 @@ infile(Parent, Infilex, Options) -> {error, Reason} -> add_error(St0#yecc.infile, none, {file_error, Reason}, St0) end, - case {St#yecc.errors, werr(St)} of + case {St#yecc.errors, werror(St)} of {[], false} -> ok; _ -> _ = file:delete(St#yecc.outfile) end, Parent ! {self(), yecc_ret(St)}. -werr(St) -> - member(warnings_as_errors, St#yecc.options) - andalso length(St#yecc.warnings) > 0. +werror(St) -> + St#yecc.warnings =/= [] + andalso member(warnings_as_errors, St#yecc.options). outfile(St0) -> case file:open(St0#yecc.outfile, [write, delayed_write]) of @@ -783,9 +786,9 @@ yecc_ret(St0) -> report_warnings(St), Es = pack_errors(St#yecc.errors), Ws = pack_warnings(St#yecc.warnings), - Werr = werr(St), + Werror = werror(St), if - Werr -> + Werror -> do_error_return(St, Es, Ws); Es =:= [] -> case member(return_warnings, St#yecc.options) of @@ -849,14 +852,22 @@ report_errors(St) -> end. report_warnings(St) -> - case member(report_warnings, St#yecc.options) of + Werror = member(warnings_as_errors, St#yecc.options), + Prefix = case Werror of + true -> ""; + false -> "Warning: " + end, + ReportWerror = Werror andalso member(report_errors, St#yecc.options), + case member(report_warnings, St#yecc.options) orelse ReportWerror of true -> foreach(fun({File,{none,Mod,W}}) -> - io:fwrite(<<"~s: Warning: ~s\n">>, - [File,Mod:format_error(W)]); + io:fwrite(<<"~s: ~s~s\n">>, + [File,Prefix, + Mod:format_error(W)]); ({File,{Line,Mod,W}}) -> - io:fwrite(<<"~s:~w: Warning: ~s\n">>, - [File,Line,Mod:format_error(W)]) + io:fwrite(<<"~s:~w: ~s~s\n">>, + [File,Line,Prefix, + Mod:format_error(W)]) end, sort(St#yecc.warnings)); false -> ok diff --git a/lib/parsetools/test/leex_SUITE.erl b/lib/parsetools/test/leex_SUITE.erl index 48312445ef..1e50aedf07 100644 --- a/lib/parsetools/test/leex_SUITE.erl +++ b/lib/parsetools/test/leex_SUITE.erl @@ -152,6 +152,7 @@ file(Config) when is_list(Config) -> ?line writable(Dotfile), file:delete(Dotfile), + ok = file:delete(Scannerfile), Warn = <<"Definitions.1998\n" "D = [0-9]\n" "Rules.\n" @@ -159,11 +160,15 @@ file(Config) when is_list(Config) -> "Erlang code.\n">>, ok = file:write_file(Filename, Warn), error = leex:file(Filename, [warnings_as_errors]), + false = filelib:is_regular(Scannerfile), error = leex:file(Filename, [return_warnings,warnings_as_errors]), - {ok,Scannerfile,[{Filename,[{1,leex,ignored_characters}]}]} = - leex:file(Filename, [return_warnings]), + false = filelib:is_regular(Scannerfile), {error,_,[{Filename,[{1,leex,ignored_characters}]}]} = - leex:file(Filename, [return_errors,warnings_as_errors]), + leex:file(Filename, [return_errors,warnings_as_errors]), + false = filelib:is_regular(Scannerfile), + {ok,Scannerfile,[{Filename,[{1,leex,ignored_characters}]}]} = + leex:file(Filename, [return_warnings]), + true = filelib:is_regular(Scannerfile), file:delete(Filename), ok. diff --git a/lib/parsetools/test/yecc_SUITE.erl b/lib/parsetools/test/yecc_SUITE.erl index 0133524950..a5f66b48e9 100644 --- a/lib/parsetools/test/yecc_SUITE.erl +++ b/lib/parsetools/test/yecc_SUITE.erl @@ -173,6 +173,7 @@ syntax(Config) when is_list(Config) -> %% Report errors. Very simple test of format_error/1. Ret = [return, {report, true}], Filename = filename:join(Dir, "file.yrl"), + Parserfile = filename:join(Dir, "file.erl"), Parserfile1 = filename:join(Dir, "a file"), ?line ok = file:write_file(Filename, <<"">>), @@ -248,12 +249,17 @@ syntax(Config) when is_list(Config) -> yecc:file(Filename, Ret), %% Bad declaration with warnings_as_errors. + ok = file:delete(Parserfile), error = yecc:file(Filename, [warnings_as_errors]), + false = filelib:is_regular(Parserfile), error = yecc:file(Filename, [return_warnings,warnings_as_errors]), - {ok,_,[{_,[{2,yecc,bad_declaration}]}]} = - yecc:file(Filename, [return_warnings]), + false = filelib:is_regular(Parserfile), {error,_,[{_,[{2,yecc,bad_declaration}]}]} = yecc:file(Filename, [return_errors,warnings_as_errors]), + false = filelib:is_regular(Parserfile), + {ok,_,[{_,[{2,yecc,bad_declaration}]}]} = + yecc:file(Filename, [return_warnings]), + true = filelib:is_regular(Parserfile), %% Bad declaration. ?line ok = file:write_file(Filename, diff --git a/lib/public_key/doc/src/public_key.xml b/lib/public_key/doc/src/public_key.xml index 9a3832c68b..b3ce49e2ca 100644 --- a/lib/public_key/doc/src/public_key.xml +++ b/lib/public_key/doc/src/public_key.xml @@ -79,7 +79,7 @@ <p><code> rsa_padding() = 'rsa_pkcs1_padding' | 'rsa_pkcs1_oaep_padding' | 'rsa_no_padding'</code></p> - <p><code> rsa_digest_type() = 'md5' | 'sha' </code></p> + <p><code> rsa_digest_type() = 'md2' | 'md5' | 'sha' </code></p> <p><code> dss_digest_type() = 'none' | 'sha' </code></p> diff --git a/lib/public_key/src/pubkey_cert.erl b/lib/public_key/src/pubkey_cert.erl index 5ab9642279..61082a1ec5 100644 --- a/lib/public_key/src/pubkey_cert.erl +++ b/lib/public_key/src/pubkey_cert.erl @@ -38,7 +38,7 @@ %%==================================================================== %%-------------------------------------------------------------------- --spec verify_data(DER::binary()) -> {md5 | sha, binary(), binary()}. +-spec verify_data(DER::binary()) -> {md2 | md5 | sha, binary(), binary()}. %% %% Description: Extracts data from DerCert needed to call public_key:verify/4. %%-------------------------------------------------------------------- @@ -378,6 +378,8 @@ digest_type(?sha1WithRSAEncryption) -> sha; digest_type(?md5WithRSAEncryption) -> md5; +digest_type(?md2WithRSAEncryption) -> + md2; digest_type(?'id-dsa-with-sha1') -> sha. diff --git a/lib/public_key/src/public_key.appup.src b/lib/public_key/src/public_key.appup.src index 4986801dad..18fae54d18 100644 --- a/lib/public_key/src/public_key.appup.src +++ b/lib/public_key/src/public_key.appup.src @@ -1,6 +1,12 @@ %% -*- erlang -*- {"%VSN%", [ + {"0.12", + [ + {update, public_key, soft, soft_purge, soft_purge, []}, + {update, pubkey_cert, soft, soft_purge, soft_purge, []}, + ] + }, {"0.11", [ {update, public_key, soft, soft_purge, soft_purge, []}, @@ -35,6 +41,12 @@ } ], [ + {"0.12", + [ + {update, public_key, soft, soft_purge, soft_purge, []}, + {update, pubkey_cert, soft, soft_purge, soft_purge, []}, + ] + }, {"0.11", [ {update, public_key, soft, soft_purge, soft_purge, []}, diff --git a/lib/public_key/src/public_key.erl b/lib/public_key/src/public_key.erl index 33fcce2c44..940efffcd0 100644 --- a/lib/public_key/src/public_key.erl +++ b/lib/public_key/src/public_key.erl @@ -55,7 +55,7 @@ -type rsa_padding() :: 'rsa_pkcs1_padding' | 'rsa_pkcs1_oaep_padding' | 'rsa_no_padding'. -type public_crypt_options() :: [{rsa_pad, rsa_padding()}]. --type rsa_digest_type() :: 'md5' | 'sha'. +-type rsa_digest_type() :: 'md2' | 'md5' | 'sha'. -type dss_digest_type() :: 'none' | 'sha'. -define(UINT32(X), X:32/unsigned-big-integer). @@ -307,7 +307,8 @@ encrypt_private(PlainText, #'RSAPrivateKey'{modulus = N, sign(PlainText, DigestType, #'RSAPrivateKey'{modulus = N, publicExponent = E, privateExponent = D}) when is_binary(PlainText), - (DigestType == md5 orelse + (DigestType == md2 orelse + DigestType == md5 orelse DigestType == sha) -> crypto:rsa_sign(DigestType, sized_binary(PlainText), [crypto:mpint(E), @@ -335,7 +336,10 @@ sign(PlainText, sha, #'DSAPrivateKey'{p = P, q = Q, g = G, x = X}) %%-------------------------------------------------------------------- verify(PlainText, DigestType, Signature, #'RSAPublicKey'{modulus = Mod, publicExponent = Exp}) - when is_binary (PlainText), DigestType == sha; DigestType == md5 -> + when is_binary(PlainText), + (DigestType == md2 orelse + DigestType == md5 orelse + DigestType == sha) -> crypto:rsa_verify(DigestType, sized_binary(PlainText), sized_binary(Signature), diff --git a/lib/public_key/test/public_key_SUITE.erl b/lib/public_key/test/public_key_SUITE.erl index b11e4d092a..a9c198c581 100644 --- a/lib/public_key/test/public_key_SUITE.erl +++ b/lib/public_key/test/public_key_SUITE.erl @@ -537,7 +537,10 @@ rsa_sign_verify(Config) when is_list(Config) -> false = public_key:verify(Msg, sha, <<1:8, RSASign/binary>>, PublicRSA), RSASign1 = public_key:sign(Msg, md5, PrivateRSA), - true = public_key:verify(Msg, md5, RSASign1, PublicRSA). + true = public_key:verify(Msg, md5, RSASign1, PublicRSA), + + RSASign2 = public_key:sign(Msg, md2, PrivateRSA), + true = public_key:verify(Msg, md2, RSASign2, PublicRSA). %%-------------------------------------------------------------------- diff --git a/lib/public_key/vsn.mk b/lib/public_key/vsn.mk index 3c6b012152..66ac78a65d 100644 --- a/lib/public_key/vsn.mk +++ b/lib/public_key/vsn.mk @@ -1 +1 @@ -PUBLIC_KEY_VSN = 0.12 +PUBLIC_KEY_VSN = 0.13 diff --git a/lib/runtime_tools/doc/src/dbg.xml b/lib/runtime_tools/doc/src/dbg.xml index a17896e4ff..c7c5cd4ff0 100644 --- a/lib/runtime_tools/doc/src/dbg.xml +++ b/lib/runtime_tools/doc/src/dbg.xml @@ -723,7 +723,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard) c value from the last invocation of the fun. The initial value of the second parameter is specified in the <c>InitialData</c> part of the <c>HandlerSpec</c>. The <c>HandlerFun</c> may - chose any appropriate action to take when invoked, and can + choose any appropriate action to take when invoked, and can save a state for the next invocation by returning it. </p> <p>If <c>Type</c> is a port, then the second parameter should @@ -783,7 +783,7 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard) c <p>This function creates a trace port generating <em>fun</em>. The <em>fun</em> takes no arguments and returns a newly opened trace port. The return value from this function is suitable as - a second parameter to tracer/2, i. e. <c>dbg:tracer(port, dbg:trace_port(ip, 4711))</c>. </p> + a second parameter to tracer/2, i.e. <c>dbg:tracer(port, dbg:trace_port(ip, 4711))</c>. </p> <p>A trace port is an Erlang port to a dynamically linked in driver that handles trace messages directly, without the overhead of sending them @@ -869,9 +869,9 @@ Error: fun containing local erlang function calls ('is_atomm' called in guard) c <desc> <p>This function is used to do a control operation on the active trace port driver on the given node - (<c>Nodename</c>). Which operations that are allowed as well - as their return values are depending on which trace driver - that is used.</p> + (<c>Nodename</c>). Which operations are allowed as well + as their return values depend on which trace driver + is used.</p> <p>Returns either <c>ok</c> or <c>{ok, Result}</c> if the operation was successful, or <c>{error, Reason}</c> if the current tracer is a process diff --git a/lib/sasl/doc/src/systools.xml b/lib/sasl/doc/src/systools.xml index 883c9c372b..8c1c327d74 100644 --- a/lib/sasl/doc/src/systools.xml +++ b/lib/sasl/doc/src/systools.xml @@ -45,7 +45,8 @@ <v>Name = string()</v> <v>UpFrom = DownTo = [Name | {Name,Descr}]</v> <v> Descr = term()</v> - <v>Opt = {path,[Dir]} | restart_emulator | silent | noexec | {outdir,Dir}</v> + <v>Opt = {path,[Dir]} | restart_emulator | silent | noexec | {outdir,Dir} + | 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> @@ -122,6 +123,8 @@ <p>If the option <c>noexec</c> is provided, 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> </desc> </func> <func> @@ -130,7 +133,8 @@ <fsummary>Generate a boot script <c>.script/.boot</c>.</fsummary> <type> <v>Name = string()</v> - <v>Opt = src_tests | {path,[Dir]} | local | {variables,[Var]} | exref | {exref,[App]}] | silent | {outdir,Dir}</v> + <v>Opt = src_tests | {path,[Dir]} | local | {variables,[Var]} | exref | {exref,[App]}] + | silent | {outdir,Dir} | warnings_as_errors</v> <v> Dir = string()</v> <v> Var = {VarName,Prefix}</v> <v> VarName = Prefix = string()</v> @@ -232,6 +236,8 @@ 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> </desc> </func> <func> diff --git a/lib/sasl/src/release_handler_1.erl b/lib/sasl/src/release_handler_1.erl index ef95606bb5..8d0baf3ab1 100644 --- a/lib/sasl/src/release_handler_1.erl +++ b/lib/sasl/src/release_handler_1.erl @@ -21,7 +21,7 @@ %% External exports -export([eval_script/1, eval_script/5, check_script/2, check_old_processes/2]). --export([get_current_vsn/1]). %% exported because used in a test case +-export([get_current_vsn/1, get_supervised_procs/0]). %% exported because used in a test case -record(eval_state, {bins = [], stopped = [], suspended = [], apps = [], libdirs, unpurged = [], vsns = [], newlibs = [], @@ -493,6 +493,19 @@ start(Procs) -> %% supervisor module, we should load the new version, and then %% delete the old. Then we should perform the start changes %% manually, by adding/deleting children. +%% +%% Recent changes to this code cause the upgrade error out and +%% log the case where a suspended supervisor has which_children +%% called against it. This retains the behavior of causing a VM +%% restart to the *old* version of a release but has the +%% advantage of logging the pid and supervisor that had the +%% issue. +%% +%% A second case where this can occur is if a child spec is +%% incorrect and get_modules is called against a process that +%% can't respond to the gen:call. Again an error is logged, +%% an error returned and a VM restart is issued. +%% %% Returns: [{SuperPid, ChildName, ChildPid, Mods}] %%----------------------------------------------------------------- %% OTP-3452. For each application the first item contains the pid @@ -502,49 +515,81 @@ start(Procs) -> get_supervised_procs() -> lists:foldl( fun(Application, Procs) -> - case application_controller:get_master(Application) of - Pid when is_pid(Pid) -> - {Root, _AppMod} = application_master:get_child(Pid), - case get_supervisor_module(Root) of - {ok, SupMod} -> - get_procs(supervisor:which_children(Root), - Root) ++ - [{undefined, undefined, Root, [SupMod]} | - Procs]; - {error, _} -> - error_logger:error_msg("release_handler: " - "cannot find top " - "supervisor for " - "application ~w~n", - [Application]), - get_procs(supervisor:which_children(Root), - Root) ++ Procs - end; - _ -> Procs - end + get_master_procs(Application, + Procs, + application_controller:get_master(Application)) end, [], - lists:map(fun({Application, _Name, _Vsn}) -> - Application - end, - application:which_applications())). + get_application_names()). + +get_supervised_procs(_, Root, Procs, {ok, SupMod}) -> + get_procs(maybe_supervisor_which_children(get_proc_state(Root), SupMod, Root), Root) ++ + [{undefined, undefined, Root, [SupMod]} | Procs]; +get_supervised_procs(Application, Root, Procs, {error, _}) -> + error_logger:error_msg("release_handler: cannot find top supervisor for " + "application ~w~n", [Application]), + get_procs(maybe_supervisor_which_children(get_proc_state(Root), Application, Root), Root) ++ Procs. + +get_application_names() -> + lists:map(fun({Application, _Name, _Vsn}) -> + Application + end, + application:which_applications()). + +get_master_procs(Application, Procs, Pid) when is_pid(Pid) -> + {Root, _AppMod} = application_master:get_child(Pid), + get_supervised_procs(Application, Root, Procs, get_supervisor_module(Root)); +get_master_procs(_, Procs, _) -> + Procs. get_procs([{Name, Pid, worker, dynamic} | T], Sup) when is_pid(Pid) -> - Mods = get_dynamic_mods(Pid), + Mods = maybe_get_dynamic_mods(Name, Pid), [{Sup, Name, Pid, Mods} | get_procs(T, Sup)]; get_procs([{Name, Pid, worker, Mods} | T], Sup) when is_pid(Pid), is_list(Mods) -> [{Sup, Name, Pid, Mods} | get_procs(T, Sup)]; get_procs([{Name, Pid, supervisor, Mods} | T], Sup) when is_pid(Pid) -> - [{Sup, Name, Pid, Mods} | get_procs(T, Sup)] ++ - get_procs(supervisor:which_children(Pid), Pid); + [{Sup, Name, Pid, Mods} | get_procs(T, Sup)] ++ + get_procs(maybe_supervisor_which_children(get_proc_state(Pid), Name, Pid), Pid); get_procs([_H | T], Sup) -> get_procs(T, Sup); get_procs(_, _Sup) -> []. -get_dynamic_mods(Pid) -> - {ok,Res} = gen:call(Pid, self(), get_modules), - Res. +get_proc_state(Proc) -> + {status, _, {module, _}, [_, State, _, _, _]} = sys:get_status(Proc), + State. + +maybe_supervisor_which_children(suspended, Name, Pid) -> + error_logger:error_msg("release_handler: a which_children call" + " to ~p (~p) was avoided. This supervisor" + " is suspended and should likely be upgraded" + " differently. Exiting ...~n", [Name, Pid]), + error(suspended_supervisor); + +maybe_supervisor_which_children(State, Name, Pid) -> + case catch supervisor:which_children(Pid) of + Res when is_list(Res) -> + Res; + Other -> + error_logger:error_msg("release_handler: ~p~nerror during" + " a which_children call to ~p (~p)." + " [State: ~p] Exiting ... ~n", + [Other, Name, Pid, State]), + error(which_children_failed) + end. + +maybe_get_dynamic_mods(Name, Pid) -> + case catch gen:call(Pid, self(), get_modules) of + {ok, Res} -> + Res; + Other -> + error_logger:error_msg("release_handler: ~p~nerror during a" + " get_modules call to ~p (~p)," + " there may be an error in it's" + " childspec. Exiting ...~n", + [Other, Name, Pid]), + error(get_modules_failed) + end. %% XXXX %% Note: The following is a terrible hack done in order to resolve the diff --git a/lib/sasl/src/systools_lib.erl b/lib/sasl/src/systools_lib.erl index f951647b79..1b6ea125d9 100644 --- a/lib/sasl/src/systools_lib.erl +++ b/lib/sasl/src/systools_lib.erl @@ -24,7 +24,7 @@ %% -export([file_term2binary/2, read_term/1, read_term_from_stream/2, - get_dirs/1, get_path/1]). + get_dirs/1, get_path/1, werror/2]). -include_lib("kernel/include/file.hrl"). @@ -219,6 +219,7 @@ flat([H|T], Ack) -> flat(T, [H|Ack]); flat([], Ack) -> lists:reverse(Ack). - - + +werror(Options, Warnings) -> + lists:member(warnings_as_errors, Options) andalso Warnings =/= []. diff --git a/lib/sasl/src/systools_make.erl b/lib/sasl/src/systools_make.erl index 5dc83e7b2a..7f400f5cce 100644 --- a/lib/sasl/src/systools_make.erl +++ b/lib/sasl/src/systools_make.erl @@ -44,10 +44,12 @@ %%----------------------------------------------------------------- %% Create a boot script from a release file. -%% Options is a list of {path, Path} | silent | local where path sets -%% the search path, silent supresses error message printing on console, -%% local generates a script with references to the directories there -%% the applications are found. +%% Options is a list of {path, Path} | silent | local +%% | warnings_as_errors +%% where path sets the search path, silent supresses error message +%% printing on console, local generates a script with references +%% to the directories there the applications are found, +%% and warnings_as_errors treats warnings as errors. %% %% New options: {path,Path} can contain wildcards %% src_tests @@ -85,11 +87,16 @@ make_script(RelName, Output, Flags) when is_list(RelName), ModTestP = {member(src_tests, Flags),xref_p(Flags)}, case get_release(RelName, Path, ModTestP, machine(Flags)) of {ok, Release, Appls, Warnings} -> - case generate_script(Output,Release,Appls,Flags) of - ok -> + case systools_lib:werror(Flags, Warnings) of + true -> return(ok,Warnings,Flags); - Error -> - return(Error,Warnings,Flags) + false -> + case generate_script(Output,Release,Appls,Flags) of + ok -> + return(ok,Warnings,Flags); + Error -> + return(Error,Warnings,Flags) + end end; Error -> return(Error,[],Flags) @@ -130,10 +137,21 @@ get_outdir(Flags) -> return(ok,Warnings,Flags) -> case member(silent,Flags) of true -> - {ok,?MODULE,Warnings}; + case systools_lib:werror(Flags, Warnings) of + true -> + error; + false -> + {ok,?MODULE,Warnings} + end; _ -> - io:format("~s",[format_warning(Warnings)]), - ok + case member(warnings_as_errors,Flags) of + true -> + io:format("~s",[format_warning(Warnings, true)]), + error; + false -> + io:format("~s",[format_warning(Warnings)]), + ok + end end; return({error,Mod,Error},_,Flags) -> case member(silent,Flags) of @@ -1833,78 +1851,89 @@ get_flag(_,_) -> false. %% Check Options for make_script check_args_script(Args) -> cas(Args, - {undef, undef, undef, undef, undef, undef, undef, undef, []}). + {undef, undef, undef, undef, undef, undef, undef, undef, + undef, []}). -cas([], {_Path,_Sil,_Loc,_Test,_Var,_Mach,_Xref,_XrefApps, X}) -> +cas([], {_Path,_Sil,_Loc,_Test,_Var,_Mach,_Xref,_XrefApps,_Werror, X}) -> X; %%% path --------------------------------------------------------------- -cas([{path, P} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_list(P) -> +cas([{path, P} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_list(P) -> case check_path(P) of ok -> - cas(Args, {P, Sil, Loc, Test, Var, Mach, Xref, XrefApps,X}); + cas(Args, {P, Sil, Loc, Test, Var, Mach, Xref, XrefApps, + Werror, X}); error -> cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, - X++[{path,P}]}) + Werror, X++[{path,P}]}) end; %%% silent ------------------------------------------------------------- -cas([silent | Args], {Path, _Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) -> - cas(Args, {Path, silent, Loc, Test, Var, Mach, Xref, XrefApps, X}); +cas([silent | Args], {Path, _Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, silent, Loc, Test, Var, Mach, Xref, XrefApps, + Werror, X}); %%% local -------------------------------------------------------------- -cas([local | Args], {Path, Sil, _Loc, Test, Var, Mach, - Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, local, Test, Var, Mach, Xref, XrefApps, X}); +cas([local | Args], {Path, Sil, _Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, Sil, local, Test, Var, Mach, Xref, XrefApps, + Werror, X}); %%% src_tests ------------------------------------------------------- -cas([src_tests | Args], {Path, Sil, Loc, _Test, Var, Mach, - Xref, XrefApps, X}) -> +cas([src_tests | Args], {Path, Sil, Loc, _Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> cas(Args, - {Path, Sil, Loc, src_tests, Var, Mach, Xref, XrefApps,X}); + {Path, Sil, Loc, src_tests, Var, Mach, Xref, Werror, XrefApps,X}); %%% variables ---------------------------------------------------------- -cas([{variables, V} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_list(V) -> +cas([{variables, V} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_list(V) -> case check_vars(V) of ok -> cas(Args, - {Path, Sil, Loc, Test, V, Mach, Xref, XrefApps, X}); + {Path, Sil, Loc, Test, V, Mach, Xref, XrefApps, Werror, X}); error -> cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, - X++[{variables, V}]}) + Werror, X++[{variables, V}]}) end; %%% machine ------------------------------------------------------------ -cas([{machine, M} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_atom(M) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, X}); +cas([{machine, M} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_atom(M) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, X}); %%% exref -------------------------------------------------------------- -cas([exref | Args], {Path, Sil, Loc, Test, Var, Mach, - _Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, exref, XrefApps, X}); +cas([exref | Args], {Path, Sil, Loc, Test, Var, Mach, _Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, exref, XrefApps, Werror, X}); %%% exref Apps --------------------------------------------------------- -cas([{exref, Apps} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_list(Apps) -> +cas([{exref, Apps} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_list(Apps) -> case check_apps(Apps) of ok -> cas(Args, {Path, Sil, Loc, Test, Var, Mach, - Xref, Apps, X}); + Xref, Apps, Werror, X}); error -> cas(Args, {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X++[{exref, Apps}]}) + Xref, XrefApps, Werror, X++[{exref, Apps}]}) end; %%% outdir Dir --------------------------------------------------------- -cas([{outdir, Dir} | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) when is_list(Dir) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, X}); +cas([{outdir, Dir} | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) when is_list(Dir) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, X}); %%% otp_build (secret, not documented) --------------------------------- -cas([otp_build | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, X}); +cas([otp_build | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, X}); %%% no_module_tests (kept for backwards compatibility, but ignored) ---- -cas([no_module_tests | Args], {Path, Sil, Loc, Test, Var, Mach, - Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps,X}); +cas([no_module_tests | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, X}); +%%% warnings_as_errors (kept for backwards compatibility, but ignored) ---- +cas([warnings_as_errors | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, + XrefApps, _Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, + warnings_as_errors, X}); %%% ERROR -------------------------------------------------------------- -cas([Y | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, X}) -> - cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps,X++[Y]}). +cas([Y | Args], {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, + Werror, X}) -> + cas(Args, {Path, Sil, Loc, Test, Var, Mach, Xref, XrefApps, Werror, + X++[Y]}). @@ -2030,7 +2059,6 @@ check_apps([H|T]) when is_atom(H) -> check_apps(_) -> error. - %% Format error format_error(badly_formatted_release) -> @@ -2144,21 +2172,31 @@ form_tar_err({add, File, Error}) -> %% Format warning format_warning(Warnings) -> - map(fun({warning,W}) -> form_warn(W) end, Warnings). - -form_warn({source_not_found,{Mod,_,App,_,_}}) -> - io_lib:format("*WARNING* ~p: Source code not found: ~p.erl~n", - [App,Mod]); -form_warn({{parse_error, File},{_,_,App,_,_}}) -> - io_lib:format("*WARNING* ~p: Parse error: ~p~n", - [App,File]); -form_warn({obj_out_of_date,{Mod,_,App,_,_}}) -> - io_lib:format("*WARNING* ~p: Object code (~p) out of date~n",[App,Mod]); -form_warn({exref_undef, Undef}) -> - F = fun({M,F,A}) -> - io_lib:format("*WARNING* Undefined function ~p:~p/~p~n", - [M,F,A]) + format_warning(Warnings, false). + +format_warning(Warnings, Werror) -> + Prefix = case Werror of + true -> + ""; + false -> + "*WARNING* " + end, + map(fun({warning,W}) -> form_warn(Prefix, W) end, Warnings). + +form_warn(Prefix, {source_not_found,{Mod,_,App,_,_}}) -> + io_lib:format("~s~p: Source code not found: ~p.erl~n", + [Prefix,App,Mod]); +form_warn(Prefix, {{parse_error, File},{_,_,App,_,_}}) -> + io_lib:format("~s~p: Parse error: ~p~n", + [Prefix,App,File]); +form_warn(Prefix, {obj_out_of_date,{Mod,_,App,_,_}}) -> + io_lib:format("~s~p: Object code (~p) out of date~n", + [Prefix,App,Mod]); +form_warn(Prefix, {exref_undef, Undef}) -> + F = fun({M,F,A}) -> + io_lib:format("~sUndefined function ~p:~p/~p~n", + [Prefix,M,F,A]) end, map(F, Undef); -form_warn(What) -> - io_lib:format("*WARNING* ~p~n", [What]). +form_warn(Prefix, What) -> + io_lib:format("~s ~p~n", [Prefix,What]). diff --git a/lib/sasl/src/systools_relup.erl b/lib/sasl/src/systools_relup.erl index ec5486226c..6d9e922900 100644 --- a/lib/sasl/src/systools_relup.erl +++ b/lib/sasl/src/systools_relup.erl @@ -122,7 +122,7 @@ %% rel_filename() = description() = string() %% Opts = [opt()] %% opt() = {path, [path()]} | silent | noexec | restart_emulator -%% | {outdir, string()} +%% | {outdir, string()} | warnings_as_errors %% path() = [string()] %% Ret = ok | error | {ok, Relup, Module, Warnings} | {error, Module, Error} %% @@ -139,8 +139,9 @@ %% %% The option `path' sets search path, `silent' suppresses printing of %% error messages to the console, `noexec' inhibits the creation of -%% the output "relup" file, and restart_emulator ensures that the new -%% emulator is restarted (as the final step). +%% the output "relup" file, restart_emulator ensures that the new +%% emulator is restarted (as the final step), and `warnings_as_errors' +%% treats warnings as errors. %% ---------------------------------------------------------------- mk_relup(TopRelFile, BaseUpRelDcs, BaseDnRelDcs) -> mk_relup(TopRelFile, BaseUpRelDcs, BaseDnRelDcs, []). @@ -153,14 +154,29 @@ mk_relup(TopRelFile, BaseUpRelDcs, BaseDnRelDcs, Opts) -> {false, false} -> case R of {ok, _Res, _Mod, Ws} -> - print_warnings(Ws), - ok; + print_warnings(Ws, Opts), + case systools_lib:werror(Opts, Ws) of + true -> + error; + false -> + ok + end; Other -> print_error(Other), error end; - _ -> - R + _ -> + case R of + {ok, _Res, _Mod, Ws} -> + case systools_lib:werror(Opts, Ws) of + true -> + error; + false -> + R + end; + R -> + R + end end; BadArg -> erlang:error({badarg, BadArg}) @@ -195,7 +211,12 @@ do_mk_relup(TopRelFile, BaseUpRelDcs, BaseDnRelDcs, Path, Opts) -> {Dn, Ws2} = foreach_baserel_dn(TopRel, TopApps, BaseDnRelDcs, Path, Opts, Ws1), Relup = {TopRel#release.vsn, Up, Dn}, - write_relup_file(Relup, Opts), + case systools_lib:werror(Opts, Ws2) of + true -> + ok; + false -> + write_relup_file(Relup, Opts) + end, {ok, Relup, ?MODULE, Ws2}; Other -> throw(Other) @@ -527,20 +548,29 @@ format_error(Error) -> io:format("~p~n", [Error]). -print_warnings(Ws) when is_list(Ws) -> - lists:foreach(fun(W) -> print_warning(W) end, Ws); -print_warnings(W) -> - print_warning(W). +print_warnings(Ws, Opts) when is_list(Ws) -> + lists:foreach(fun(W) -> print_warning(W, Opts) end, Ws); +print_warnings(W, Opts) -> + print_warning(W, Opts). -print_warning(W) -> - S = format_warning(W), +print_warning(W, Opts) -> + Prefix = case lists:member(warnings_as_errors, Opts) of + true -> + ""; + false -> + "*WARNING* " + end, + S = format_warning(Prefix, W), io:format("~s", [S]). -format_warning({erts_vsn_changed, {Rel1, Rel2}}) -> - io_lib:format("*WARNING* The ERTS version changed between ~p and ~p~n", - [Rel1, Rel2]); -format_warning(What) -> - io_lib:format("*WARNING* ~p~n",[What]). +format_warning(W) -> + format_warning("*WARNING* ", W). + +format_warning(Prefix, {erts_vsn_changed, {Rel1, Rel2}}) -> + io_lib:format("~sThe ERTS version changed between ~p and ~p~n", + [Prefix, Rel1, Rel2]); +format_warning(Prefix, What) -> + io_lib:format("~s~p~n",[Prefix, What]). get_reason({error, {open, _, _}}) -> open; diff --git a/lib/sasl/test/release_handler_SUITE.erl b/lib/sasl/test/release_handler_SUITE.erl index b44da72d35..af2183bfff 100644 --- a/lib/sasl/test/release_handler_SUITE.erl +++ b/lib/sasl/test/release_handler_SUITE.erl @@ -58,7 +58,7 @@ cases() -> [otp_2740, otp_2760, otp_5761, otp_9402, otp_9417, otp_9395_check_old_code, otp_9395_check_and_purge, otp_9395_update_many_mods, otp_9395_rm_many_mods, - instructions, eval_appup]. + instructions, eval_appup, supervisor_which_children_timeout]. groups() -> [{release,[], @@ -523,6 +523,29 @@ no_cc() -> %%%----------------------------------------------------------------- %%----------------------------------------------------------------- +%% release_handler_1:get_supervised_procs/0 test +%%----------------------------------------------------------------- +supervisor_which_children_timeout(Conf) -> + PrivDir = priv_dir(Conf), + Dir = filename:join(PrivDir,"supervisor_which_children_timeout"), + DataDir = ?config(data_dir,Conf), + LibDir = filename:join([DataDir,release_handler_timeouts]), + + Rel1 = create_and_install_fake_first_release(Dir,[{dummy,"0.1",LibDir}]), + + {ok, Node} = t_start_node(supervisor_which_children_timeout, Rel1, []), + Proc = rpc:call(Node, erlang, whereis, [dummy_sup_2]), + ok = rpc:call(Node, sys, suspend, [Proc]), + Result = {badrpc, {'EXIT', {suspended_supervisor, _}}} = + rpc:call(Node, release_handler_1, get_supervised_procs, []), + ?t:format("release_handler_1:get_supervised_procs/0: ~p~n", [Result]), + + ok. + +supervisor_which_children_timeout(cleanup, Conf) -> + stop_node(node_name(supervisor_which_children_timeout)). + +%%----------------------------------------------------------------- %% Ticket: OTP-2740 %% Slogan: vsn not numeric doesn't work so good in release_handling %%----------------------------------------------------------------- diff --git a/lib/sasl/test/release_handler_SUITE_data/Makefile.src b/lib/sasl/test/release_handler_SUITE_data/Makefile.src index 9b07e7ce0a..edb446413d 100644 --- a/lib/sasl/test/release_handler_SUITE_data/Makefile.src +++ b/lib/sasl/test/release_handler_SUITE_data/Makefile.src @@ -64,8 +64,13 @@ C= \ c/b.@EMULATOR@ \ c/c_sup.@EMULATOR@ +SUP= \ + release_handler_timeouts/dummy-0.1/ebin/dummy_app.@EMULATOR@ \ + release_handler_timeouts/dummy-0.1/ebin/dummy_server.@EMULATOR@ \ + release_handler_timeouts/dummy-0.1/ebin/dummy_sup.@EMULATOR@ \ + release_handler_timeouts/dummy-0.1/ebin/dummy_sup_2.@EMULATOR@ -all: $(P2B) $(LIB) $(APP) $(OTP2740) $(C) +all: $(P2B) $(LIB) $(APP) $(OTP2740) $(C) $(SUP) P2B/a-2.0/ebin/a.@EMULATOR@: P2B/a-2.0/src/a.erl erlc $(EFLAGS) -oP2B/a-2.0/ebin P2B/a-2.0/src/a.erl @@ -195,3 +200,12 @@ c/b.@EMULATOR@: c/b.erl erlc $(EFLAGS) -oc c/b.erl c/c_sup.@EMULATOR@: c/c_sup.erl erlc $(EFLAGS) -oc c/c_sup.erl + +release_handler_timeouts/dummy-0.1/ebin/dummy_app.@EMULATOR@: release_handler_timeouts/dummy-0.1/src/dummy_app.erl + erlc $(EFLAGS) -orelease_handler_timeouts/dummy-0.1/ebin release_handler_timeouts/dummy-0.1/src/dummy_app.erl +release_handler_timeouts/dummy-0.1/ebin/dummy_server.@EMULATOR@: release_handler_timeouts/dummy-0.1/src/dummy_server.erl + erlc $(EFLAGS) -orelease_handler_timeouts/dummy-0.1/ebin release_handler_timeouts/dummy-0.1/src/dummy_server.erl +release_handler_timeouts/dummy-0.1/ebin/dummy_sup.@EMULATOR@: release_handler_timeouts/dummy-0.1/src/dummy_sup.erl + erlc $(EFLAGS) -orelease_handler_timeouts/dummy-0.1/ebin release_handler_timeouts/dummy-0.1/src/dummy_sup.erl +release_handler_timeouts/dummy-0.1/ebin/dummy_sup_2.@EMULATOR@: release_handler_timeouts/dummy-0.1/src/dummy_sup_2.erl + erlc $(EFLAGS) -orelease_handler_timeouts/dummy-0.1/ebin release_handler_timeouts/dummy-0.1/src/dummy_sup_2.erl diff --git a/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/ebin/dummy.app b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/ebin/dummy.app new file mode 100644 index 0000000000..9efdc2e5da --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/ebin/dummy.app @@ -0,0 +1,7 @@ +{application,dummy, + [{description,"a dummy app"}, + {vsn,"0.1"}, + {registered,[dummy_app]}, + {mod,{dummy_app,[]}}, + {applications,[kernel,stdlib,sasl]}, + {modules,[dummy_app,dummy_server,dummy_sup,dummy_sup_2]}]}.
\ No newline at end of file diff --git a/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_app.erl b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_app.erl new file mode 100644 index 0000000000..51363b3630 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_app.erl @@ -0,0 +1,9 @@ +-module(dummy_app). +-behaviour(application). + +-export([start/2, stop/1]). + +start(_,_) -> + dummy_sup:start_link(). + +stop(_) -> ok. diff --git a/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_server.erl b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_server.erl new file mode 100644 index 0000000000..382251eba7 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_server.erl @@ -0,0 +1,56 @@ +-module(dummy_server). +-behaviour(gen_server). + +-export([start_link/0, set_state/1, get_state/0]). + +-export([init/1, + handle_call/3, + handle_cast/2, + handle_info/2, + terminate/2, + code_change/3]). + +%% + +start_link() -> + gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). + +set_state(What) -> + gen_server:call(?MODULE, {set_state, What}). + +get_state() -> + gen_server:call(?MODULE, get_state). + + +%% + +init([]) -> + say("init, setting state to 0", []), + {ok, 0}. + + +handle_call({set_state, NewState}, _From, _State) -> + {reply, {ok, NewState}, NewState}; + +handle_call(get_state, _From, State) -> + {reply, State, State}. + +handle_cast('__not_implemented', State) -> + {noreply, State}. + +handle_info(_Info, State) -> + say("info ~p, ~p.", [_Info, State]), + {noreply, State}. + +terminate(_Reason, _State) -> + say("terminate ~p, ~p", [_Reason, _State]), + ok. + +code_change(_OldVsn, State, _Extra) -> + say("code_change ~p, ~p, ~p", [_OldVsn, State, _Extra]), + {ok, State}. + +%% Internal + +say(Format, Data) -> + io:format("~p:~p: ~s~n", [?MODULE, self(), io_lib:format(Format, Data)]). diff --git a/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_sup.erl b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_sup.erl new file mode 100644 index 0000000000..3d7b5060df --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_sup.erl @@ -0,0 +1,15 @@ +-module(dummy_sup). +-behaviour(supervisor). + +-export([start_link/0]). +-export([init/1]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init([]) -> + DummySup2 = {dummy_sup_2, + {dummy_sup_2, start_link, []}, + permanent, 5000, supervisor, [dummy_sup_2]}, + + {ok, {{one_for_one, 10, 10}, [DummySup2]}}. diff --git a/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_sup_2.erl b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_sup_2.erl new file mode 100644 index 0000000000..d936cbcbd6 --- /dev/null +++ b/lib/sasl/test/release_handler_SUITE_data/release_handler_timeouts/dummy-0.1/src/dummy_sup_2.erl @@ -0,0 +1,15 @@ +-module(dummy_sup_2). +-behaviour(supervisor). + +-export([start_link/0]). +-export([init/1]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init([]) -> + Dummy = {dummy_server, + {dummy_server, start_link, []}, + permanent, 5000, worker, [dummy_server]}, + + {ok, {{one_for_one, 10, 10}, [Dummy]}}. diff --git a/lib/sasl/test/systools_SUITE.erl b/lib/sasl/test/systools_SUITE.erl index 539f6de99d..e352247d44 100644 --- a/lib/sasl/test/systools_SUITE.erl +++ b/lib/sasl/test/systools_SUITE.erl @@ -396,6 +396,7 @@ src_tests_script(Config) when is_list(Config) -> ?line PSAVE = code:get_path(), % Save path ?line {LatestDir, LatestName} = create_script(latest,Config), + ?line BootFile = LatestName ++ ".boot", ?line DataDir = filename:absname(?copydir), ?line LibDir = fname([DataDir, d_missing_src, lib]), @@ -416,14 +417,32 @@ src_tests_script(Config) when is_list(Config) -> ?line Erl2 = filename:join([P1,"..","src","db2.erl"]), ?line file:delete(Erl2), - %% Then make script - two warnings should be issued when - %% src_tests is given + %% Then make script + + %% .boot file should not exist + ?line ok = file:delete(BootFile), + ?line false = filelib:is_regular(BootFile), + %% With warnings_as_errors and src_tests option, an error should be issued + ?line error = + systools:make_script(LatestName, [silent, {path, N}, src_tests, + warnings_as_errors]), + ?line error = + systools:make_script(LatestName, [{path, N}, src_tests, + warnings_as_errors]), + + %% due to warnings_as_errors .boot file should still not exist + ?line false = filelib:is_regular(BootFile), + + %% Two warnings should be issued when src_tests is given %% 1. old object code for db1.beam %% 2. missing source code for db2.beam ?line {ok, _, [{warning,{obj_out_of_date,_}}, {warning,{source_not_found,_}}]} = systools:make_script(LatestName, [silent, {path, N}, src_tests]), + %% .boot file should exist now + ?line true = filelib:is_regular(BootFile), + %% Without the src_tests option, no warning should be issued ?line {ok, _, []} = systools:make_script(LatestName, [silent, {path, N}]), @@ -1150,6 +1169,21 @@ normal_relup(Config) when is_list(Config) -> [{path, P}, silent]), ?line ok = check_relup([{db, "2.1"}], [{db, "1.0"}]), + %% file should not be written if warnings_as_errors is enabled. + %% delete before running tests. + ?line ok = file:delete("relup"), + + %% Check that warnings are treated as errors + ?line error = + systools:make_relup(LatestName, [LatestName2], [LatestName1], + [{path, P}, warnings_as_errors]), + ?line error = + systools:make_relup(LatestName, [LatestName2], [LatestName1], + [{path, P}, silent, warnings_as_errors]), + + %% relup file should not exist + ?line false = filelib:is_regular("relup"), + %% Check that warnings get through ?line ok = systools:make_relup(LatestName, [LatestName2], [LatestName1], [{path, P}]), @@ -1159,6 +1193,9 @@ normal_relup(Config) when is_list(Config) -> [{path, P}, silent]), ?line ok = check_relup([{fe, "3.1"}, {db, "2.1"}], [{db, "1.0"}]), + %% relup file should exist now + ?line true = filelib:is_regular("relup"), + ?line ok = file:set_cwd(OldDir), ok. diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml index 4178192120..9e1a060dee 100644 --- a/lib/snmp/doc/src/notes.xml +++ b/lib/snmp/doc/src/notes.xml @@ -33,6 +33,62 @@ </header> <section> + <title>SNMP Development Toolkit 4.21.1</title> + <p>Version 4.21.1 supports code replacement in runtime from/to + version 4.20.1, 4.20 and 4.19. </p> + + <section> + <title>Improvements and new features</title> +<!-- + <p>-</p> +--> + <list type="bulleted"> + <item> + <p>[compiler] Used wrong variable name (for + warnings-as-errors variable), which caused the + compiler to crash when using the snmpc (e)script. </p> + <p>Also added the option + <seealso marker="snmpc(command)#option_werror">--Werror</seealso> + for the SNMP MIB compiler (escript) frontend (to mimic + <seealso marker="erts:erlc">erlc</seealso>), + which specifies whether warnings should be treated as errors. </p> + <p>Own Id: OTP-9447</p> + </item> + + <item> + <p>[agent] Some very minor debugging improvements. </p> + <p>Own Id: OTP-9446</p> + </item> + </list> + + </section> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <p>-</p> + +<!-- + <list type="bulleted"> + <item> + <p>The snmp config tool could not handle (manager) audit trail config + because the option seqno was not handled. </p> + <p>Own Id: OTP-9354</p> + </item> + + </list> +--> + </section> + + + <section> + <title>Incompatibilities</title> + <p>-</p> + </section> + + </section> <!-- 4.21.1 --> + + + <section> <title>SNMP Development Toolkit 4.21</title> <p>Version 4.21 supports code replacement in runtime from/to version 4.20.1, 4.20 and 4.19. </p> diff --git a/lib/snmp/doc/src/snmpc_cmd.xml b/lib/snmp/doc/src/snmpc_cmd.xml index 72116f8981..971f8a3cff 100644 --- a/lib/snmp/doc/src/snmpc_cmd.xml +++ b/lib/snmp/doc/src/snmpc_cmd.xml @@ -79,16 +79,18 @@ <p>Print debug info. </p> <p><c>verbosity</c> = <c>trace</c> | <c>debug</c> | <c>log</c> | <c>info</c> | <c>silence</c></p> <p>Defaults to <c>silence</c>.</p> + <marker id="option_w"></marker> <marker id="option_warnings"></marker> </item> - <tag>--warnings</tag> + <tag>--warnings | --W</tag> <item> <p>Print warning messages. </p> <marker id="option_wae"></marker> + <marker id="option_werror"></marker> </item> - <tag>--wae</tag> + <tag>--wae | --Werror</tag> <item> <p>Warnings as errors. Indicates that warnings shall be treated as errors. </p> @@ -211,7 +213,7 @@ <section> <title>SEE ALSO</title> - <p><seealso marker="erlc">erlc(1)</seealso>, + <p><seealso marker="erts:erlc">erlc(1)</seealso>, <seealso marker="compiler:compile">compile(3)</seealso>, <seealso marker="snmp:snmpc">snmpc(3)</seealso></p> </section> diff --git a/lib/snmp/src/agent/snmp_target_mib.erl b/lib/snmp/src/agent/snmp_target_mib.erl index 77910541a2..60bd3e0912 100644 --- a/lib/snmp/src/agent/snmp_target_mib.erl +++ b/lib/snmp/src/agent/snmp_target_mib.erl @@ -383,10 +383,18 @@ is_valid_tag(Tag, TDomain, TAddress) -> is_valid_tag(TDomain, TAddress, Tag, []). is_valid_tag(TDomain, TAddress, Tag, Key) -> + ?vtrace("is_valid_tag -> entry with" + "~n TDomain: ~p" + "~n TAddress: ~p" + "~n Tag: ~p" + "~n Key: ~p", [TDomain, TAddress, Tag, Key]), case table_next(snmpTargetAddrTable, Key) of endOfTable -> + ?vtrace("is_valid_tag -> endOfTable", []), false; NextKey -> + ?vtrace("is_valid_tag -> next key found" + "~n NextKey: ~p", [NextKey]), case get(snmpTargetAddrTable, NextKey, [?snmpTargetAddrTDomain, ?snmpTargetAddrTAddress, ?snmpTargetAddrTagList, @@ -395,6 +403,8 @@ is_valid_tag(TDomain, TAddress, Tag, Key) -> {value, TAddress}, % RFC2576: chapters 5.2.1 & 5.3 {value, TagList}, {value, []}] -> + ?vtrace("is_valid_tag -> found with exact match" + "~n TagList: ~p", [TagList]), case snmp_misc:is_tag_member(Tag, TagList) of true -> ?vtrace("is_valid_tag -> exact: " @@ -410,9 +420,14 @@ is_valid_tag(TDomain, TAddress, Tag, Key) -> {value, TAddress2}, {value, TagList}, {value, TMask}] when TMask =/= [] -> + ?vtrace("is_valid_tag -> found with exact match" + "~n TagList: ~p" + "~n TMask: ~p", [TagList, TMask]), case snmp_misc:is_tmask_match(TAddress, TAddress2, TMask) of true -> + ?vtrace("is_valid_tag -> " + "tmask match - now check tag member", []), case snmp_misc:is_tag_member(Tag, TagList) of true -> ?vtrace("is_valid_tag -> masked: " @@ -425,10 +440,12 @@ is_valid_tag(TDomain, TAddress, Tag, Key) -> Tag, NextKey) end; false -> + ?vtrace("is_valid_tag -> tmask NO match", []), is_valid_tag(TDomain, TAddress, Tag, NextKey) end; _ -> + ?vtrace("is_valid_tag -> not found - try next", []), is_valid_tag(TDomain, TAddress, Tag, NextKey) end end. @@ -591,9 +608,9 @@ snmpTargetAddrTable(print) -> [Prefix, element(?snmpTargetAddrName, Row), Prefix, element(?snmpTargetAddrTDomain, Row), case element(?snmpTargetAddrTDomain, Row) of - ?snmpUDPDomain -> udp; - ?transportDomainUdpIpv4 -> udpIpv4; - ?transportDomainUdpIpv6 -> udpIpv6; + ?snmpUDPDomain -> snmpUDPDomain; + ?transportDomainUdpIpv4 -> transportDomainUdpIpv4; + ?transportDomainUdpIpv6 -> transportDomainUdpIpv6; _ -> undefined end, Prefix, element(?snmpTargetAddrTAddress, Row), diff --git a/lib/snmp/src/app/snmp.appup.src b/lib/snmp/src/app/snmp.appup.src index 8e1855b4df..0b6ea93231 100644 --- a/lib/snmp/src/app/snmp.appup.src +++ b/lib/snmp/src/app/snmp.appup.src @@ -22,8 +22,14 @@ %% ----- U p g r a d e ------------------------------------------------------- [ + {"4.21", + [ + {load_module, snmp_target_mib, soft_purge, soft_purge, []} + ] + }, {"4.20.1", [ + {load_module, snmp_target_mib, soft_purge, soft_purge, []}, {load_module, snmp_view_based_acm_mib, soft_purge, soft_purge, []}, {load_module, snmpm, soft_purge, soft_purge, [snmpm_server, snmpm_config, snmp_config]}, @@ -109,8 +115,14 @@ %% ------D o w n g r a d e --------------------------------------------------- [ + {"4.21", + [ + {load_module, snmp_target_mib, soft_purge, soft_purge, []} + ] + }, {"4.20.1", [ + {load_module, snmp_target_mib, soft_purge, soft_purge, []}, {load_module, snmp_view_based_acm_mib, soft_purge, soft_purge, []}, {load_module, snmpm, soft_purge, soft_purge, [snmpm_server, snmpm_config, snmp_config]}, diff --git a/lib/snmp/src/compile/snmpc.src b/lib/snmp/src/compile/snmpc.src index 4e91ae9a03..f993335b89 100644 --- a/lib/snmp/src/compile/snmpc.src +++ b/lib/snmp/src/compile/snmpc.src @@ -46,7 +46,7 @@ agent_capabilities = false, module, no_defaults = false, - relaxed_row_name_assigne_check = false, + relaxed_row_name_assign_check = false, %% The default verbosity (silence) will be filled in %% during argument processing. verbosity, @@ -75,7 +75,7 @@ %% --version %% --verbosity V %% --warnings -%% --wae +%% --Werror | --wae | --warnings_as_errors main(Args) when is_list(Args) -> case (catch process_args(Args)) of ok -> @@ -154,7 +154,7 @@ mk_mib_options(#state{outdir = OutDir, agent_capabilities = AC, module = Mod, no_defaults = ND, - relaxed_row_name_assigne_check = RRNAC, + relaxed_row_name_assign_check = RRNAC, %% The default verbosity (silence) will be filled in %% during argument processing. verbosity = V, @@ -182,7 +182,7 @@ mk_mib_options(#state{outdir = OutDir, maybe_option(MI, module_identity) ++ maybe_option(MC, module_compliance) ++ maybe_option(AC, agent_capabilities) ++ - maybe_option(WE, warnings_as_errors). + maybe_option(WAE, warnings_as_errors). maybe_option(true, Opt) -> [Opt]; maybe_option(_, _) -> []. @@ -234,6 +234,8 @@ process_args(["--verbosity", Verbosity0|Args], #state{verbosity = V} = State) process_args(["--verbosity"|_Args], #state{verbosity = V}) when (V =/= undefined) -> e(lists:flatten(io_lib:format("Verbosity already set to ~w", [V]))); +process_args(["--w"|Args], State) -> + process_args(Args, State#state{warnings = true}); process_args(["--warnings"|Args], State) -> process_args(Args, State#state{warnings = true}); process_args(["--o", Dir|Args], State) -> @@ -295,9 +297,13 @@ process_args(["--mod"|_Args], #state{module = M}) process_args(["--nd"|Args], State) -> process_args(Args, State#state{no_defaults = true}); process_args(["--rrnac"|Args], State) -> - process_args(Args, State#state{relaxed_row_name_assigne_check = true}); + process_args(Args, State#state{relaxed_row_name_assign_check = true}); +process_args(["--Werror"|Args], State) -> + process_args(Args, State#state{warnings_as_errors = true}); process_args(["--wae"|Args], State) -> process_args(Args, State#state{warnings_as_errors = true}); +process_args(["--warnings_as_errors"|Args], State) -> + process_args(Args, State#state{warnings_as_errors = true}); process_args([MIB], State) -> Ext = filename:extension(MIB), if @@ -332,7 +338,7 @@ usage() -> "~n --verbosity <verbosity> - Print debug info." "~n verbosity = trace | debug | log | info | silence" "~n Defaults to silence." - "~n --warnings - Print warning messages." + "~n --warnings | --W - Print warning messages." "~n --o <output dir> - The output dir." "~n Defaults to current working dir." "~n --i <include dir> - Add this dir to the list of dirs that will be" @@ -340,16 +346,19 @@ usage() -> "~n The current workin dir will always be included. " "~n --il <include_lib dir> - Add this dir to the list of dirs that will be" "~n searched for imported (compiled) MIB files." - "~n It assumes that the first element in the dir name" - "~n correspond to an OTP application. For example snmp/mibs/" - "~n The current workin dir and the <snmp-home>/priv/mibs " + "~n It assumes that the first element in the dir " + "~n name correspond to an OTP application. " + "~n For example snmp/mibs/ " + "~n The current workin dir and the " + "~n <snmp-home>/priv/mibs " "~n are always listed last the includ path. " "~n --db <DB> - Database to used for the default instrumentation." "~n Defaults to volatile." - "~n --sgc - This option (skip group check), if present, disables " - "~n the \"group check\" of the mib compiler. " - "~n That is, should the OBJECT-GROUP and the NOTIFICATION-GROUP " - "~n macro(s) be checked for correctness or not. " + "~n --sgc - This option (skip group check), if present, " + "~n disables the \"group check\" of the mib compiler. " + "~n That is, should the OBJECT-GROUP and the " + "~n NOTIFICATION-GROUP macro(s) be checked for " + "~n correctness or not. " "~n By default the check is done. " "~n --dep - Keep deprecated definition(s)." "~n If not specified the compiler will ignore" @@ -360,25 +369,27 @@ usage() -> "~n --mi - The MODULE-IDENTITY field will be included." "~n --mc - The MODULE-COMPLIANCE field will be included." "~n --ac - The AGENT-CAPABILITIES field will be included." - "~n --mod <module> - The module which implements all the instrumentation" - "~n functions. " + "~n --mod <module> - The module which implements all the " + "~n instrumentation functions. " "~n The name of all instrumentation functions must" "~n be the same as the corresponding managed object" "~n it implements." - "~n --nd - The default instrumentation functions will *not* be used" - "~n if a managed object have no instrumentation function. " - "~n Instead this will be reported as an error, and the " - "~n compilation aborts. " - "~n --rrnac - This option, if present, specifies that the row name " - "~n assign check shall not be done strictly according to" - "~n the SMI (which allows only the value 1). " - "~n With this option, all values greater than zero is allowed" - "~n (>= 1). This means that the error will be converted to " + "~n --nd - The default instrumentation functions will *not* " + "~n be used if a managed object have no " + "~n instrumentation function. Instead this will be " + "~n reported as an error, and the compilation aborts. " + "~n --rrnac - This option, if present, specifies that the row " + "~n name assign check shall not be done strictly " + "~n according to the SMI (which allows only the " + "~n value 1). With this option, all values greater " + "~n than zero is allowed (>= 1). " + "~n This means that the error will be converted to " "~n a warning. " - "~n By default it is not included, but if this option is " - "~n present it will be. " - "~n --wae - Warnings as errors. " - "~n Indicates that warnings shall be treated as errors. " + "~n By default it is not included, but if this " + "~n option is present it will be. " + "~n --wae | --Werror - Warnings as errors. " + "~n Indicates that warnings shall be treated as " + "~n errors. " "~n " "~n", []), halt(1). diff --git a/lib/snmp/src/compile/snmpc_lib.erl b/lib/snmp/src/compile/snmpc_lib.erl index 4f71c47bfa..a0a35e91c4 100644 --- a/lib/snmp/src/compile/snmpc_lib.erl +++ b/lib/snmp/src/compile/snmpc_lib.erl @@ -1754,12 +1754,12 @@ error(FormatStr, Data, Line) when is_list(FormatStr) -> exit(error). print_error(FormatStr, Data) when is_list(FormatStr) -> - ok = io:format("~s: Error: " ++ FormatStr,[get(filename)|Data]), + ok = io:format("~s: " ++ FormatStr,[get(filename)|Data]), put(errors,yes), io:format("~n"). print_error(FormatStr, Data,Line) when is_list(FormatStr) -> - ok = io:format("~s: ~w: Error: " ++ FormatStr,[get(filename), Line |Data]), + ok = io:format("~s: ~w: " ++ FormatStr,[get(filename), Line |Data]), put(errors,yes), io:format("~n"). diff --git a/lib/snmp/test/snmp_compiler_test.erl b/lib/snmp/test/snmp_compiler_test.erl index cee11ba97a..c964b08168 100644 --- a/lib/snmp/test/snmp_compiler_test.erl +++ b/lib/snmp/test/snmp_compiler_test.erl @@ -47,7 +47,7 @@ module_identity/1, agent_capabilities/1, module_compliance/1, - warnings_as_errors/1, + warnings_as_errors/1, otp_6150/1, otp_8574/1, @@ -101,7 +101,7 @@ all() -> module_identity, agent_capabilities, module_compliance, - warnings_as_errors, + warnings_as_errors, {group, tickets} ]. @@ -282,8 +282,8 @@ warnings_as_errors(Config) when is_list(Config) -> MibDir = ?config(mib_dir, Config), MibFile = join(MibDir, "OTP8574-MIB.mib"), OutFile = join(Dir, "OTP8574-MIB.bin"), - Opts = [{group_check, false}, - {outdir, Dir}, + Opts = [{group_check, false}, + {outdir, Dir}, {verbosity, trace}, relaxed_row_name_assign_check], {error, compilation_failed} = @@ -291,6 +291,7 @@ warnings_as_errors(Config) when is_list(Config) -> false = filelib:is_regular(OutFile), {ok, _} = snmpc:compile(MibFile, Opts), true = filelib:is_regular(OutFile), + ok = file:delete(OutFile), ok. diff --git a/lib/snmp/vsn.mk b/lib/snmp/vsn.mk index 08251ab9ea..c95e0a22d1 100644 --- a/lib/snmp/vsn.mk +++ b/lib/snmp/vsn.mk @@ -17,6 +17,6 @@ # # %CopyrightEnd% -SNMP_VSN = 4.21 +SNMP_VSN = 4.21.1 PRE_VSN = APP_VSN = "snmp-$(SNMP_VSN)$(PRE_VSN)" diff --git a/lib/ssl/doc/src/ssl.xml b/lib/ssl/doc/src/ssl.xml index 0c4c8796be..47991ca477 100644 --- a/lib/ssl/doc/src/ssl.xml +++ b/lib/ssl/doc/src/ssl.xml @@ -649,10 +649,10 @@ fun(OtpCert :: #'OTPCertificate'{}, Event :: {bad_cert, Reason :: atom()} | <p> Upgrades a gen_tcp, or equivalent, socket to an ssl socket i.e. performs the ssl server-side handshake.</p> - <p><warning>Note that the listen socket should be in {active, false} mode + <warning><p>Note that the listen socket should be in {active, false} mode before telling the client that the server is ready to upgrade and calling this function, otherwise the upgrade may - or may not succeed depending on timing.</warning></p> + or may not succeed depending on timing.</p></warning> </desc> </func> diff --git a/lib/ssl/doc/src/ssl_distribution.xml b/lib/ssl/doc/src/ssl_distribution.xml index 7bcc12eb5f..a2c7370ddc 100644 --- a/lib/ssl/doc/src/ssl_distribution.xml +++ b/lib/ssl/doc/src/ssl_distribution.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2000</year><year>2010</year> + <year>2000</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -33,36 +33,32 @@ </header> <p>This chapter describes how the Erlang distribution can use SSL to get additional verification and security. - - <note><p>Note this - documentation is written for the old ssl implementation and - will be updated for the new one once this functionality is - supported by the new implementation.</p></note> </p> <section> <title>Introduction</title> <p>The Erlang distribution can in theory use almost any connection based protocol as bearer. A module that implements the protocol - specific parts of connection setup is however needed. The + specific parts of the connection setup is however needed. The default distribution module is <c>inet_tcp_dist</c> which is included in the Kernel application. When starting an Erlang node distributed, <c>net_kernel</c> uses this module to setup listen ports and connections. </p> - <p>In the SSL application there is an additional distribution - module, <c>inet_ssl_dist</c> which can be used as an + + <p>In the SSL application there is an additional distribution + module, <c>inet_tls_dist</c> which can be used as an alternative. All distribution connections will be using SSL and all participating Erlang nodes in a distributed system must use this distribution module.</p> - <p>The security depends on how the connections are set up, one can - use key files or certificates to just get a encrypted - connection. One can also make the SSL package verify the - certificates of other nodes to get additional security. - Cookies are however always used as they can be used to - differentiate between two different Erlang networks.</p> + + <p>The security level depends on the parameters provided to the + SSL connection setup. Erlang node cookies are however always + used, as they can be used to differentiate between two different + Erlang networks.</p> <p>Setting up Erlang distribution over SSL involves some simple but necessary steps:</p> - <list type="bulleted"> + + <list type="bulleted"> <item>Building boot scripts including the SSL application</item> <item>Specifying the distribution module for net_kernel</item> <item>Specifying security options and other SSL options</item> @@ -77,122 +73,135 @@ SASL application. Refer to the SASL documentations for more information on systools. This is only an example of what can be done.</p> - <p>The simplest boot script possible includes only the Kernel + + <p>The simplest boot script possible includes only the Kernel and STDLIB applications. Such a script is located in the Erlang distributions bin directory. The source for the script can be found under the Erlang installation top directory under - <c><![CDATA[releases/<OTP version>start_clean.rel]]></c>. Copy that + <c><![CDATA[releases/<OTP version>/start_clean.rel]]></c>. Copy that script to another location (and preferably another name) - and add the SSL application with its current version number + and add the applications crypto, public_key and SSL with their current version numbers after the STDLIB application.</p> <p>An example .rel file with SSL added may look like this:</p> + <code type="none"> -{release, {"OTP APN 181 01","P7A"}, {erts, "5.0"}, - [{kernel,"2.5"}, - {stdlib,"1.8.1"}, - {ssl,"2.2.1"}]}. </code> - <p>Note that the version numbers surely will differ in your system. - Whenever one of the applications included in the script is - upgraded, the script has to be changed.</p> - <p>Assuming the above .rel file is stored in a file - <c>start_ssl.rel</c> in the current directory, a boot script - can be built like this:</p> - <code type="none"> -1> systools:make_script("start_ssl",[]). </code> - <p>There will now be a file <c>start_ssl.boot</c> in the current - directory. To test the boot script, start Erlang with the - <c>-boot</c> command line parameter specifying this boot script - (with its full path but without the <c>.boot</c> suffix), in - Unix it could look like this:</p> - <p></p> - <code type="none"><![CDATA[ + {release, {"OTP APN 181 01","R15A"}, {erts, "5.9"}, + [{kernel,"2.15"}, + {stdlib,"1.18"}, + {crypto, "2.0.3"}, + {public_key, "0.12"}, + {ssl, "5.0"} + ]}. + </code> + + <p>Note that the version numbers surely will differ in your system. + Whenever one of the applications included in the script is + upgraded, the script has to be changed.</p> + <p>Assuming the above .rel file is stored in a file + <c>start_ssl.rel</c> in the current directory, a boot script + can be built like this:</p> + + <code type="none"> + 1> systools:make_script("start_ssl",[]). </code> + + <p>There will now be a file <c>start_ssl.boot</c> in the current + directory. To test the boot script, start Erlang with the + <c>-boot</c> command line parameter specifying this boot script + (with its full path but without the <c>.boot</c> suffix), in + Unix it could look like this:</p> + <p></p> + + <code type="none"><![CDATA[ $ erl -boot /home/me/ssl/start_ssl Erlang (BEAM) emulator version 5.0 Eshell V5.0 (abort with ^G) -1> whereis(ssl_server). -<0.32.0> ]]></code> +1> whereis(ssl_manager). +<0.41.0> ]]></code> <p>The <c>whereis</c> function call verifies that the SSL application is really started.</p> - <p>As an alternative to building a bootscript, one can explicitly - add the path to the ssl <c>ebin</c> directory on the command + + <p>As an alternative to building a bootscript, one can explicitly + add the path to the SSL <c>ebin</c> directory on the command line. This is done with the command line option <c>-pa</c>. This - works as the ssl application really need not be started for the - distribution to come up, a primitive version of the ssl server - is started by the distribution module itself, so as long as the - primitive code server can reach the code, the distribution will + works as the SSL application does not need to be started for the + distribution to come up, as a clone of the SSL application is + hooked into the kernel application, so as long as the + SSL applications code can be reached, the distribution will start. The <c>-pa</c> method is only recommended for testing purposes.</p> + + <note><p>Note that the clone of the SSL application is necessary to + enable the use of the SSL code in such an early bootstage as + needed to setup the distribution, however this will make it + impossible to soft upgrade the SSL application.</p></note> </section> <section> <title>Specifying distribution module for net_kernel</title> - <p>The distribution module for SSL is named <c>inet_ssl_dist</c> - and is specified on the command line whit the <c>-proto_dist</c> + <p>The distribution module for SSL is named <c>inet_tls_dist</c> + and is specified on the command line with the <c>-proto_dist</c> option. The argument to <c>-proto_dist</c> should be the module name without the <c>_dist</c> suffix, so this distribution - module is specified with <c>-proto_dist inet_ssl</c> on the + module is specified with <c>-proto_dist inet_tls</c> on the command line.</p> <p></p> + <p>Extending the command line from above gives us the following:</p> <code type="none"> -$ erl -boot /home/me/ssl/start_ssl -proto_dist inet_ssl </code> - <p>For the distribution to actually be started, we need to give - the emulator a name as well:</p> +$ erl -boot /home/me/ssl/start_ssl -proto_dist inet_tls </code> + +<p>For the distribution to actually be started, we need to give +the emulator a name as well:</p> <code type="none"> -$ erl -boot /home/me/ssl/start_ssl -proto_dist inet_ssl -sname ssl_test +$ erl -boot /home/me/ssl/start_ssl -proto_dist inet_tls -sname ssl_test Erlang (BEAM) emulator version 5.0 [source] Eshell V5.0 (abort with ^G) (ssl_test@myhost)1> </code> <p>Note however that a node started in this way will refuse to talk - to other nodes, as no certificates or key files are supplied + to other nodes, as no ssl parameters are supplied (see below).</p> - <p>When the SSL distribution starts, the OTP system is in its - early boot stage, why neither <c>application</c> nor <c>code</c> - are usable. As SSL needs to start a port program in this early - stage, it tries to determine the path to that program from the - primitive code loaders code path. If this fails, one need to - specify the directory where the port program resides. This can - be done either with an environment variable - <c>ERL_SSL_PORTPROGRAM_DIR</c> or with the command line option - <c>-ssl_portprogram_dir</c>. The value should be the directory - where the <c>ssl_esock</c> port program is located. Note that - this option is never needed in a normal Erlang installation.</p> </section> <section> - <title>Specifying security options and other SSL options</title> - <p>For SSL to work, you either need certificate files or a - key file. Certificate files can be specified both when working as - client and as server (connecting or accepting). </p> - <p></p> + <title>Specifying SSL options</title> <p>For SSL to work, at least + a public key and certificate needs to be specified for the server + side. In the following example the PEM-files consists of two + entries the servers certificate and its private key.</p> + <p>On the <c>erl</c> command line one can specify options that the - ssl distribution will add when creation a socket. It is - mandatory to specify at least a key file or client and server - certificates. One can specify any <em>SSL option</em> on the - command line, but must not specify any socket options (like - packet size and such). The SSL options are listed in the - Reference Manual. The only difference between the - options in the reference manual and the ones that can be - specified to the distribution on the command line is that - <c>certfile</c> can (and usually needs to) be specified as - <c>client_certfile</c> and <c>server_certfile</c>. The - <c>client_certfile</c> is used when the distribution initiates a - connection to another node and the <c>server_certfile</c> is used - when accepting a connection from a remote node. </p> - <p>The command line argument for specifying the SSL options is named - <c>-ssl_dist_opt</c> and should be followed by an even number of - SSL options/option values. The <c>-ssl_dist_opt</c> argument can - be repeated any number of times.</p> - <p>An example command line would now look something like this + SSL distribution will add when creating a socket.</p> + + <p>One can specify the simpler SSL options certfile, keyfile, + password, cacertfile, verify, reuse_sessions, + secure_renegotiation, depth, hibernate_after and ciphers (use old + string format) by adding the prefix server_ or client_ to the + option name. The server can also take the options dhfile and + fail_if_no_peer_cert (also prefixed). + <c>client_</c>-prfixed options are used when the distribution initiates a + connection to another node and the <c>server_</c>-prefixed options are used + when accepting a connection from a remote node. </p> + + <p> More complex options such as verify_fun are not available at + the moment but a mechanism to handle such options may be added in + a future release. </p> + + <p> Raw socket options such as packet and size must not be specified on + the command line</p>. + + <p>The command line argument for specifying the SSL options is named + <c>-ssl_dist_opt</c> and should be followed by pairs of + SSL options and their values. The <c>-ssl_dist_opt</c> argument can + be repeated any number of times.</p> + + <p>An example command line would now look something like this (line breaks in the command are for readability, they should not be there when typed):</p> <code type="none"> -$ erl -boot /home/me/ssl/start_ssl -proto_dist inet_ssl - -ssl_dist_opt client_certfile "/home/me/ssl/erlclient.pem" +$ erl -boot /home/me/ssl/start_ssl -proto_dist inet_tls -ssl_dist_opt server_certfile "/home/me/ssl/erlserver.pem" - -ssl_dist_opt verify 1 depth 1 + -ssl_dist_opt server_secure_renegotiation true client_secure_renegotiate true -sname ssl_test Erlang (BEAM) emulator version 5.0 [source] @@ -211,12 +220,11 @@ Eshell V5.0 (abort with ^G) subsequent invocations of Erlang.</p> <p></p> <p>In a Unix (Bourne) shell it could look like this (line breaks for - readability):</p> + readability, they should not be there when typed):</p> <code type="none"> -$ ERL_FLAGS="-boot \\"/home/me/ssl/start_ssl\\" -proto_dist inet_ssl - -ssl_dist_opt client_certfile \\"/home/me/ssl/erlclient.pem\\" - -ssl_dist_opt server_certfile \\"/home/me/ssl/erlserver.pem\\" - -ssl_dist_opt verify 1 -ssl_dist_opt depth 1" +$ ERL_FLAGS="-boot /home/me/ssl/start_ssl -proto_dist inet_tls + -ssl_dist_opt server_certfile /home/me/ssl/erlserver.pem + -ssl_dist_opt server_secure_renegotiation true client_secure_renegotiate true" $ export ERL_FLAGS $ erl -sname ssl_test Erlang (BEAM) emulator version 5.0 [source] @@ -227,15 +235,12 @@ Eshell V5.0 (abort with ^G) {progname,["erl "]}, {sname,["ssl_test"]}, {boot,["/home/me/ssl/start_ssl"]}, - {proto_dist,["inet_ssl"]}, - {ssl_dist_opt,["client_certfile","/home/me/ssl/erlclient.pem"]}, + {proto_dist,["inet_tls"]}, {ssl_dist_opt,["server_certfile","/home/me/ssl/erlserver.pem"]}, - {ssl_dist_opt,["verify","1"]}, - {ssl_dist_opt,["depth","1"]}, + {ssl_dist_opt,["server_secure_renegotiation","true", + "client_secure_renegotiate","true"] {home,["/home/me"]}] </code> <p>The <c>init:get_arguments()</c> call verifies that the correct arguments are supplied to the emulator. </p> </section> </chapter> - - diff --git a/lib/ssl/doc/src/ssl_protocol.xml b/lib/ssl/doc/src/ssl_protocol.xml index ca5cc8bc7a..17268a634d 100644 --- a/lib/ssl/doc/src/ssl_protocol.xml +++ b/lib/ssl/doc/src/ssl_protocol.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2003</year><year>2010</year> + <year>2003</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -25,18 +25,18 @@ <file>ssl_protocol.xml</file> </header> - <p>The erlang ssl application currently supports SSL 3.0 and TLS 1.0 + <p>The erlang SSL application currently supports SSL 3.0 and TLS 1.0 RFC 2246, and will in the future also support later versions of TLS. SSL 2.0 is not supported. </p> - <p>By default erlang ssl is run over the TCP/IP protocol even + <p>By default erlang SSL is run over the TCP/IP protocol even though you could plug in any other reliable transport protocol with the same API as gen_tcp.</p> <p>If a client and server wants to use an upgrade mechanism, such as - defined by RFC2817, to upgrade a regular TCP/IP connection to an ssl - connection the erlang ssl API supports this. This can be useful for + defined by RFC2817, to upgrade a regular TCP/IP connection to an SSL + connection the erlang SSL API supports this. This can be useful for things such as supporting HTTP and HTTPS on the same port and implementing virtual hosting. </p> @@ -131,7 +131,7 @@ connections. Sessions are used to avoid the expensive negotiation of new security parameters for each connection."</p> - <p>Session data is by default kept by the ssl application in a + <p>Session data is by default kept by the SSL application in a memory storage hence session data will be lost at application restart or takeover. Users may define their own callback module to handle session data storage if persistent data storage is @@ -140,8 +140,8 @@ possible to configure the amount of time the session data should be saved.</p> - <p>Ssl clients will by default try to reuse an available session, - ssl servers will by default agree to reuse sessions when clients + <p>SSL clients will by default try to reuse an available session, + SSL servers will by default agree to reuse sessions when clients ask to do so.</p> </section> diff --git a/lib/ssl/src/Makefile b/lib/ssl/src/Makefile index 7514ad2aa2..9c40d4ea53 100644 --- a/lib/ssl/src/Makefile +++ b/lib/ssl/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1999-2010. All Rights Reserved. +# Copyright Ericsson AB 1999-2011. All Rights Reserved. # # The contents of this file are subject to the Erlang Public License, # Version 1.1, (the "License"); you may not use this file except in @@ -43,10 +43,12 @@ MODULES= \ ssl_app \ ssl_broker \ ssl_broker_sup \ + ssl_dist_sup\ ssl_server \ ssl_sup \ ssl_prim \ inet_ssl_dist \ + inet_tls_dist \ ssl_certificate\ ssl_certificate_db\ ssl_cipher \ @@ -62,6 +64,7 @@ MODULES= \ ssl_ssl2 \ ssl_ssl3 \ ssl_tls1 \ + ssl_tls_dist_proxy INTERNAL_HRL_FILES = \ ssl_int.hrl ssl_broker_int.hrl ssl_debug.hrl \ diff --git a/lib/ssl/src/inet_ssl_dist.erl b/lib/ssl/src/inet_ssl_dist.erl index 6c0fbc0618..42a03a4879 100644 --- a/lib/ssl/src/inet_ssl_dist.erl +++ b/lib/ssl/src/inet_ssl_dist.erl @@ -31,9 +31,7 @@ -import(error_logger,[error_msg/2]). --include("net_address.hrl"). - - +-include_lib("kernel/include/net_address.hrl"). -define(to_port(Socket, Data, Opts), case ssl_prim:send(Socket, Data, Opts) of @@ -44,9 +42,8 @@ R end). - --include("dist.hrl"). --include("dist_util.hrl"). +-include_lib("kernel/include/dist.hrl"). +-include_lib("kernel/include/dist_util.hrl"). %% ------------------------------------------------------------- %% This function should return a valid childspec, so that diff --git a/lib/ssl/src/inet_tls_dist.erl b/lib/ssl/src/inet_tls_dist.erl new file mode 100644 index 0000000000..f42c076460 --- /dev/null +++ b/lib/ssl/src/inet_tls_dist.erl @@ -0,0 +1,275 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2011-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +-module(inet_tls_dist). + +-export([childspecs/0, listen/1, accept/1, accept_connection/5, + setup/5, close/1, select/1, is_node_name/1]). + +-include_lib("kernel/include/net_address.hrl"). +-include_lib("kernel/include/dist.hrl"). +-include_lib("kernel/include/dist_util.hrl"). + +childspecs() -> + {ok, [{ssl_dist_sup,{ssl_dist_sup, start_link, []}, + permanent, 2000, worker, [ssl_dist_sup]}]}. + +select(Node) -> + case split_node(atom_to_list(Node), $@, []) of + [_,_Host] -> + true; + _ -> + false + end. + +is_node_name(Node) when is_atom(Node) -> + select(Node); +is_node_name(_) -> + false. + +listen(Name) -> + ssl_tls_dist_proxy:listen(Name). + +accept(Listen) -> + ssl_tls_dist_proxy:accept(Listen). + +accept_connection(AcceptPid, Socket, MyNode, Allowed, SetupTime) -> + Kernel = self(), + spawn_link(fun() -> do_accept(Kernel, AcceptPid, Socket, + MyNode, Allowed, SetupTime) end). + +setup(Node, Type, MyNode, LongOrShortNames,SetupTime) -> + Kernel = self(), + spawn(fun() -> do_setup(Kernel, Node, Type, MyNode, LongOrShortNames, SetupTime) end). + +do_setup(Kernel, Node, Type, MyNode, LongOrShortNames, SetupTime) -> + [Name, Address] = splitnode(Node, LongOrShortNames), + case inet:getaddr(Address, inet) of + {ok, Ip} -> + Timer = dist_util:start_timer(SetupTime), + case erl_epmd:port_please(Name, Ip) of + {port, TcpPort, Version} -> + ?trace("port_please(~p) -> version ~p~n", + [Node,Version]), + dist_util:reset_timer(Timer), + case ssl_tls_dist_proxy:connect(Ip, TcpPort) of + {ok, Socket} -> + HSData = connect_hs_data(Kernel, Node, MyNode, Socket, + Timer, Version, Ip, TcpPort, Address, + Type), + dist_util:handshake_we_started(HSData); + _ -> + %% Other Node may have closed since + %% port_please ! + ?trace("other node (~p) " + "closed since port_please.~n", + [Node]), + ?shutdown(Node) + end; + _ -> + ?trace("port_please (~p) " + "failed.~n", [Node]), + ?shutdown(Node) + end; + _Other -> + ?trace("inet_getaddr(~p) " + "failed (~p).~n", [Node,Other]), + ?shutdown(Node) + end. + +close(Socket) -> + try + erlang:error(foo) + catch _:_ -> + io:format("close called ~p ~p~n",[Socket, erlang:get_stacktrace()]) + end, + gen_tcp:close(Socket), + ok. + +do_accept(Kernel, AcceptPid, Socket, MyNode, Allowed, SetupTime) -> + process_flag(priority, max), + receive + {AcceptPid, controller} -> + Timer = dist_util:start_timer(SetupTime), + case check_ip(Socket) of + true -> + HSData = accept_hs_data(Kernel, MyNode, Socket, Timer, Allowed), + dist_util:handshake_other_started(HSData); + {false,IP} -> + error_logger:error_msg("** Connection attempt from " + "disallowed IP ~w ** ~n", [IP]), + ?shutdown(no_node) + end + end. +%% ------------------------------------------------------------ +%% Do only accept new connection attempts from nodes at our +%% own LAN, if the check_ip environment parameter is true. +%% ------------------------------------------------------------ +check_ip(Socket) -> + case application:get_env(check_ip) of + {ok, true} -> + case get_ifs(Socket) of + {ok, IFs, IP} -> + check_ip(IFs, IP); + _ -> + ?shutdown(no_node) + end; + _ -> + true + end. + +get_ifs(Socket) -> + case ssl_prim:peername(Socket) of + {ok, {IP, _}} -> + case ssl_prim:getif(Socket) of + {ok, IFs} -> {ok, IFs, IP}; + Error -> Error + end; + Error -> + Error + end. + +check_ip([{OwnIP, _, Netmask}|IFs], PeerIP) -> + case {mask(Netmask, PeerIP), mask(Netmask, OwnIP)} of + {M, M} -> true; + _ -> check_ip(IFs, PeerIP) + end; +check_ip([], PeerIP) -> + {false, PeerIP}. + +mask({M1,M2,M3,M4}, {IP1,IP2,IP3,IP4}) -> + {M1 band IP1, + M2 band IP2, + M3 band IP3, + M4 band IP4}; + +mask({M1,M2,M3,M4, M5, M6, M7, M8}, {IP1,IP2,IP3,IP4, IP5, IP6, IP7, IP8}) -> + {M1 band IP1, + M2 band IP2, + M3 band IP3, + M4 band IP4, + M5 band IP5, + M6 band IP6, + M7 band IP7, + M8 band IP8}. + + +%% If Node is illegal terminate the connection setup!! +splitnode(Node, LongOrShortNames) -> + case split_node(atom_to_list(Node), $@, []) of + [Name|Tail] when Tail =/= [] -> + Host = lists:append(Tail), + check_node(Name, Node, Host, LongOrShortNames); + [_] -> + error_logger:error_msg("** Nodename ~p illegal, no '@' character **~n", + [Node]), + ?shutdown(Node); + _ -> + error_logger:error_msg("** Nodename ~p illegal **~n", [Node]), + ?shutdown(Node) + end. + +check_node(Name, Node, Host, LongOrShortNames) -> + case split_node(Host, $., []) of + [_] when LongOrShortNames == longnames -> + error_logger:error_msg("** System running to use " + "fully qualified " + "hostnames **~n" + "** Hostname ~s is illegal **~n", + [Host]), + ?shutdown(Node); + [_, _ | _] when LongOrShortNames == shortnames -> + error_logger:error_msg("** System NOT running to use fully qualified " + "hostnames **~n" + "** Hostname ~s is illegal **~n", + [Host]), + ?shutdown(Node); + _ -> + [Name, Host] + end. + +split_node([Chr|T], Chr, Ack) -> + [lists:reverse(Ack)|split_node(T, Chr, [])]; +split_node([H|T], Chr, Ack) -> + split_node(T, Chr, [H|Ack]); +split_node([], _, Ack) -> + [lists:reverse(Ack)]. + +connect_hs_data(Kernel, Node, MyNode, Socket, Timer, Version, Ip, TcpPort, Address, Type) -> + common_hs_data(Kernel, MyNode, Socket, Timer, + #hs_data{other_node = Node, + other_version = Version, + f_address = + fun(_,_) -> + #net_address{address = {Ip,TcpPort}, + host = Address, + protocol = proxy, + family = inet} + end, + request_type = Type + }). + +accept_hs_data(Kernel, MyNode, Socket, Timer, Allowed) -> + common_hs_data(Kernel, MyNode, Socket, Timer, #hs_data{ + allowed = Allowed, + f_address = fun(S, N) -> + ssl_tls_dist_proxy:get_remote_id(S, N) + end + }). + +common_hs_data(Kernel, MyNode, Socket, Timer, HsData) -> + HsData#hs_data{ + kernel_pid = Kernel, + this_node = MyNode, + socket = Socket, + timer = Timer, + this_flags = 0, + f_send = + fun(S,D) -> + gen_tcp:send(S,D) + end, + f_recv = + fun(S,N,T) -> + gen_tcp:recv(S,N,T) + end, + f_setopts_pre_nodeup = + fun(S) -> + inet:setopts(S, [{active, false}, {packet, 4}]) + end, + f_setopts_post_nodeup = + fun(S) -> + inet:setopts(S, [{deliver, port},{active, true}]) + end, + f_getll = + fun(S) -> + inet:getll(S) + end, + mf_tick = + fun(S) -> + gen_tcp:send(S, <<>>) + end, + mf_getstat = + fun(S) -> + {ok, Stats} = inet:getstat(S, [recv_cnt, send_cnt, send_pend]), + R = proplists:get_value(recv_cnt, Stats, 0), + W = proplists:get_value(send_cnt, Stats, 0), + P = proplists:get_value(send_pend, Stats, 0), + {ok, R,W,P} + end}. diff --git a/lib/ssl/src/ssl.app.src b/lib/ssl/src/ssl.app.src index b9716786e6..afe19da900 100644 --- a/lib/ssl/src/ssl.app.src +++ b/lib/ssl/src/ssl.app.src @@ -8,6 +8,9 @@ ssl_broker, ssl_broker_sup, ssl_prim, + inet_tls_dist, + ssl_tls_dist_proxy, + ssl_dist_sup, inet_ssl_dist, ssl_tls1, ssl_ssl3, diff --git a/lib/ssl/src/ssl.erl b/lib/ssl/src/ssl.erl index 59f8479a4c..57e0570bee 100644 --- a/lib/ssl/src/ssl.erl +++ b/lib/ssl/src/ssl.erl @@ -742,7 +742,8 @@ handle_options(Opts0, _Role) -> secure_renegotiate = handle_option(secure_renegotiate, Opts, false), renegotiate_at = handle_option(renegotiate_at, Opts, ?DEFAULT_RENEGOTIATE_AT), debug = handle_option(debug, Opts, []), - hibernate_after = handle_option(hibernate_after, Opts, undefined) + hibernate_after = handle_option(hibernate_after, Opts, undefined), + erl_dist = handle_option(erl_dist, Opts, false) }, CbInfo = proplists:get_value(cb_info, Opts, {gen_tcp, tcp, tcp_closed, tcp_error}), @@ -751,7 +752,7 @@ handle_options(Opts0, _Role) -> depth, cert, certfile, key, keyfile, password, cacerts, cacertfile, dh, dhfile, ciphers, debug, reuse_session, reuse_sessions, ssl_imp, - cb_info, renegotiate_at, secure_renegotiate, hibernate_after], + cb_info, renegotiate_at, secure_renegotiate, hibernate_after, erl_dist], SockOpts = lists:foldl(fun(Key, PropList) -> proplists:delete(Key, PropList) @@ -862,6 +863,9 @@ validate_option(hibernate_after, undefined) -> undefined; validate_option(hibernate_after, Value) when is_integer(Value), Value >= 0 -> Value; +validate_option(erl_dist,Value) when Value == true; + Value == false -> + Value; validate_option(Opt, Value) -> throw({error, {eoptions, {Opt, Value}}}). @@ -1007,7 +1011,7 @@ version() -> %% Only used to remove exit messages from old ssl %% First is a nonsense clause to provide some -%% backward compability for orber that uses this +%% backward compatibility for orber that uses this %% function in a none recommended way, but will %% work correctly if a valid pid is returned. pid(#sslsocket{fd = new_ssl}) -> diff --git a/lib/ssl/src/ssl_connection.erl b/lib/ssl/src/ssl_connection.erl index 5187d0f78f..79ee054200 100644 --- a/lib/ssl/src/ssl_connection.erl +++ b/lib/ssl/src/ssl_connection.erl @@ -1033,7 +1033,8 @@ code_change(_OldVsn, StateName, State, _Extra) -> %%-------------------------------------------------------------------- %%% Internal functions %%-------------------------------------------------------------------- -start_fsm(Role, Host, Port, Socket, Opts, User, {CbModule, _,_, _} = CbInfo, +start_fsm(Role, Host, Port, Socket, {#ssl_options{erl_dist = false},_} = Opts, + User, {CbModule, _,_, _} = CbInfo, Timeout) -> try {ok, Pid} = ssl_connection_sup:start_child([Role, Host, Port, Socket, @@ -1044,9 +1045,26 @@ start_fsm(Role, Host, Port, Socket, Opts, User, {CbModule, _,_, _} = CbInfo, catch error:{badmatch, {error, _} = Error} -> Error + end; + +start_fsm(Role, Host, Port, Socket, {#ssl_options{erl_dist = true},_} = Opts, + User, {CbModule, _,_, _} = CbInfo, + Timeout) -> + try + {ok, Pid} = ssl_connection_sup:start_child_dist([Role, Host, Port, Socket, + Opts, User, CbInfo]), + {ok, SslSocket} = socket_control(Socket, Pid, CbModule), + ok = handshake(SslSocket, Timeout), + {ok, SslSocket} + catch + error:{badmatch, {error, _} = Error} -> + Error end. ssl_init(SslOpts, Role) -> + + init_manager_name(SslOpts#ssl_options.erl_dist), + {ok, CertDbRef, CertDbHandle, CacheHandle, OwnCert} = init_certificates(SslOpts, Role), PrivateKey = init_private_key(CertDbHandle, SslOpts#ssl_options.key, SslOpts#ssl_options.keyfile, @@ -1054,6 +1072,10 @@ ssl_init(SslOpts, Role) -> DHParams = init_diffie_hellman(CertDbHandle, SslOpts#ssl_options.dh, SslOpts#ssl_options.dhfile, Role), {ok, CertDbRef, CertDbHandle, CacheHandle, OwnCert, PrivateKey, DHParams}. +init_manager_name(false) -> + put(ssl_manager, ssl_manager); +init_manager_name(true) -> + put(ssl_manager, ssl_manager_dist). init_certificates(#ssl_options{cacerts = CaCerts, cacertfile = CACertFile, @@ -1778,7 +1800,8 @@ format_reply(binary, _, N, Data) when N > 0 -> % Header mode format_reply(binary, _, _, Data) -> Data; format_reply(list, Packet, _, Data) - when Packet == http; Packet == {http, headers}; Packet == http_bin; Packet == {http_bin, headers} -> + when Packet == http; Packet == {http, headers}; Packet == http_bin; Packet == {http_bin, headers}; Packet == httph; + Packet == httph_bin-> Data; format_reply(list, _,_, Data) -> binary_to_list(Data). @@ -2090,7 +2113,9 @@ set_socket_opts(Socket, [{packet, Packet}| Opts], SockOpts, Other) when Packet = Packet == tpkt; Packet == line; Packet == http; - Packet == http_bin -> + Packet == httph; + Packet == http_bin; + Packet == httph_bin -> set_socket_opts(Socket, Opts, SockOpts#socket_options{packet = Packet}, Other); set_socket_opts(_, [{packet, _} = Opt| _], SockOpts, _) -> diff --git a/lib/ssl/src/ssl_connection_sup.erl b/lib/ssl/src/ssl_connection_sup.erl index e9328d5f7c..78cfda5e63 100644 --- a/lib/ssl/src/ssl_connection_sup.erl +++ b/lib/ssl/src/ssl_connection_sup.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2009. All Rights Reserved. +%% Copyright Ericsson AB 2007-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -26,8 +26,8 @@ -behaviour(supervisor). %% API --export([start_link/0]). --export([start_child/1]). +-export([start_link/0, start_link_dist/0]). +-export([start_child/1, start_child_dist/1]). %% Supervisor callback -export([init/1]). @@ -38,9 +38,15 @@ start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). +start_link_dist() -> + supervisor:start_link({local, ssl_connection_sup_dist}, ?MODULE, []). + start_child(Args) -> supervisor:start_child(?MODULE, Args). +start_child_dist(Args) -> + supervisor:start_child(ssl_connection_sup_dist, Args). + %%%========================================================================= %%% Supervisor callback %%%========================================================================= diff --git a/lib/ssl/src/ssl_dist_sup.erl b/lib/ssl/src/ssl_dist_sup.erl new file mode 100644 index 0000000000..c1912401d7 --- /dev/null +++ b/lib/ssl/src/ssl_dist_sup.erl @@ -0,0 +1,84 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2011-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% + +-module(ssl_dist_sup). + +-behaviour(supervisor). + +%% API +-export([start_link/0]). + +%% Supervisor callback +-export([init/1]). + +%%%========================================================================= +%%% API +%%%========================================================================= + +-spec start_link() -> {ok, pid()} | ignore | {error, term()}. + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +%%%========================================================================= +%%% Supervisor callback +%%%========================================================================= +-spec init([]) -> {ok, {SupFlags :: tuple(), [ChildSpec :: tuple()]}}. + +init([]) -> + SessionCertManager = session_and_cert_manager_child_spec(), + ConnetionManager = connection_manager_child_spec(), + ProxyServer = proxy_server_child_spec(), + + {ok, {{one_for_all, 10, 3600}, [SessionCertManager, ConnetionManager, + ProxyServer]}}. + +%%-------------------------------------------------------------------- +%%% Internal functions +%%-------------------------------------------------------------------- +session_and_cert_manager_child_spec() -> + Opts = ssl_sup:manager_opts(), + Name = ssl_manager_dist, + StartFunc = {ssl_manager, start_link_dist, [Opts]}, + Restart = permanent, + Shutdown = 4000, + Modules = [ssl_manager], + Type = worker, + {Name, StartFunc, Restart, Shutdown, Type, Modules}. + +connection_manager_child_spec() -> + Name = ssl_connection_dist, + StartFunc = {ssl_connection_sup, start_link_dist, []}, + Restart = permanent, + Shutdown = 4000, + Modules = [ssl_connection], + Type = supervisor, + {Name, StartFunc, Restart, Shutdown, Type, Modules}. + +proxy_server_child_spec() -> + Name = ssl_tls_dist_proxy, + StartFunc = {ssl_tls_dist_proxy, start_link, []}, + Restart = permanent, + Shutdown = 4000, + Modules = [ssl_tls_dist_proxy], + Type = worker, + {Name, StartFunc, Restart, Shutdown, Type, Modules}. + diff --git a/lib/ssl/src/ssl_handshake.erl b/lib/ssl/src/ssl_handshake.erl index 453ea20f99..f873a6a913 100644 --- a/lib/ssl/src/ssl_handshake.erl +++ b/lib/ssl/src/ssl_handshake.erl @@ -39,6 +39,8 @@ encode_handshake/2, init_hashes/0, update_hashes/2, decrypt_premaster_secret/2]). +-export([dec_hello_extensions/2]). + -type tls_handshake() :: #client_hello{} | #server_hello{} | #server_hello_done{} | #certificate{} | #certificate_request{} | #client_key_exchange{} | #finished{} | #certificate_verify{} | @@ -912,9 +914,12 @@ dec_hello_extensions(<<?UINT16(?RENEGOTIATION_EXT), ?UINT16(Len), Info:Len/binar end, dec_hello_extensions(Rest, [{renegotiation_info, #renegotiation_info{renegotiated_connection = RenegotiateInfo}} | Acc]); -dec_hello_extensions(<<?UINT16(_), ?UINT16(Len), _Unknown:Len, Rest/binary>>, Acc) -> + +%% Ignore data following the ClientHello (i.e., +%% extensions) if not understood. +dec_hello_extensions(<<?UINT16(_), ?UINT16(Len), _Unknown:Len/binary, Rest/binary>>, Acc) -> dec_hello_extensions(Rest, Acc); -%% Need this clause? +%% This theoretically should not happen if the protocol is followed, but if it does it is ignored. dec_hello_extensions(_, Acc) -> Acc. diff --git a/lib/ssl/src/ssl_internal.hrl b/lib/ssl/src/ssl_internal.hrl index 6bf1edc452..483e06067c 100644 --- a/lib/ssl/src/ssl_internal.hrl +++ b/lib/ssl/src/ssl_internal.hrl @@ -98,10 +98,12 @@ renegotiate_at, secure_renegotiate, debug, - hibernate_after % undefined if not hibernating, + hibernate_after,% undefined if not hibernating, % or number of ms of inactivity % after which ssl_connection will % go into hibernation + %% This option should only be set to true by inet_tls_dist + erl_dist = false }). -record(socket_options, diff --git a/lib/ssl/src/ssl_manager.erl b/lib/ssl/src/ssl_manager.erl index 725a085d1f..dcf310c535 100644 --- a/lib/ssl/src/ssl_manager.erl +++ b/lib/ssl/src/ssl_manager.erl @@ -27,7 +27,7 @@ -include("ssl_internal.hrl"). %% Internal application API --export([start_link/1, +-export([start_link/1, start_link_dist/1, connection_init/2, cache_pem_file/2, lookup_trusted_cert/4, issuer_candidate/2, client_session_id/4, server_session_id/4, @@ -66,10 +66,20 @@ %%-------------------------------------------------------------------- -spec start_link(list()) -> {ok, pid()} | ignore | {error, term()}. %% -%% Description: Starts the server +%% Description: Starts the ssl manager that takes care of sessions +%% and certificate caching. %%-------------------------------------------------------------------- start_link(Opts) -> - gen_server:start_link({local, ?MODULE}, ?MODULE, [Opts], []). + gen_server:start_link({local, ?MODULE}, ?MODULE, [?MODULE, Opts], []). + +%%-------------------------------------------------------------------- +-spec start_link_dist(list()) -> {ok, pid()} | ignore | {error, term()}. +%% +%% Description: Starts a special instance of the ssl manager to +%% be used by the erlang distribution. Note disables soft upgrade! +%%-------------------------------------------------------------------- +start_link_dist(Opts) -> + gen_server:start_link({local, ssl_manager_dist}, ?MODULE, [ssl_manager_dist, Opts], []). %%-------------------------------------------------------------------- -spec connection_init(string()| {der, list()}, client | server) -> @@ -166,7 +176,8 @@ invalidate_session(Port, Session) -> %% %% Description: Initiates the server %%-------------------------------------------------------------------- -init([Opts]) -> +init([Name, Opts]) -> + put(ssl_manager, Name), process_flag(trap_exit, true), CacheCb = proplists:get_value(session_cb, Opts, ssl_session_cache), SessionLifeTime = @@ -376,10 +387,10 @@ code_change(_OldVsn, State, _Extra) -> %%% Internal functions %%-------------------------------------------------------------------- call(Msg) -> - gen_server:call(?MODULE, {Msg, self()}, infinity). + gen_server:call(get(ssl_manager), {Msg, self()}, infinity). cast(Msg) -> - gen_server:cast(?MODULE, Msg). + gen_server:cast(get(ssl_manager), Msg). validate_session(Host, Port, Session, LifeTime) -> case ssl_session:valid_session(Session, LifeTime) of @@ -399,9 +410,10 @@ validate_session(Port, Session, LifeTime) -> start_session_validator(Cache, CacheCb, LifeTime) -> spawn_link(?MODULE, init_session_validator, - [[Cache, CacheCb, LifeTime]]). + [[get(ssl_manager), Cache, CacheCb, LifeTime]]). -init_session_validator([Cache, CacheCb, LifeTime]) -> +init_session_validator([SslManagerName, Cache, CacheCb, LifeTime]) -> + put(ssl_manager, SslManagerName), CacheCb:foldl(fun session_validation/2, LifeTime, Cache). diff --git a/lib/ssl/src/ssl_sup.erl b/lib/ssl/src/ssl_sup.erl index 316ed8a4e9..a008682b89 100644 --- a/lib/ssl/src/ssl_sup.erl +++ b/lib/ssl/src/ssl_sup.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2010. All Rights Reserved. +%% Copyright Ericsson AB 1998-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -24,7 +24,7 @@ -behaviour(supervisor). %% API --export([start_link/0]). +-export([start_link/0, manager_opts/0]). %% Supervisor callback -export([init/1]). @@ -62,6 +62,22 @@ init([]) -> {ok, {{one_for_all, 10, 3600}, [Child2, SessionCertManager, ConnetionManager]}}. + +manager_opts() -> + CbOpts = case application:get_env(ssl, session_cb) of + {ok, Cb} when is_atom(Cb) -> + InitArgs = session_cb_init_args(), + [{session_cb, Cb}, {session_cb_init_args, InitArgs}]; + _ -> + [] + end, + case application:get_env(ssl, session_lifetime) of + {ok, Time} when is_integer(Time) -> + [{session_lifetime, Time}| CbOpts]; + _ -> + CbOpts + end. + %%-------------------------------------------------------------------- %%% Internal functions %%-------------------------------------------------------------------- @@ -86,21 +102,6 @@ connection_manager_child_spec() -> {Name, StartFunc, Restart, Shutdown, Type, Modules}. -manager_opts() -> - CbOpts = case application:get_env(ssl, session_cb) of - {ok, Cb} when is_atom(Cb) -> - InitArgs = session_cb_init_args(), - [{session_cb, Cb}, {session_cb_init_args, InitArgs}]; - _ -> - [] - end, - case application:get_env(ssl, session_lifetime) of - {ok, Time} when is_integer(Time) -> - [{session_lifetime, Time}| CbOpts]; - _ -> - CbOpts - end. - session_cb_init_args() -> case application:get_env(ssl, session_cb_init_args) of {ok, Args} when is_list(Args) -> diff --git a/lib/ssl/src/ssl_tls_dist_proxy.erl b/lib/ssl/src/ssl_tls_dist_proxy.erl new file mode 100644 index 0000000000..1a998a0f34 --- /dev/null +++ b/lib/ssl/src/ssl_tls_dist_proxy.erl @@ -0,0 +1,326 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2011-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +-module(ssl_tls_dist_proxy). + + +-export([listen/1, accept/1, connect/2, get_remote_id/2]). +-export([init/1, start_link/0, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3, ssl_options/2]). + +-include_lib("kernel/include/net_address.hrl"). + +-record(state, + {listen, + accept_loop + }). + +-define(PPRE, 4). +-define(PPOST, 4). + + +%%==================================================================== +%% Internal application API +%%==================================================================== + +listen(Name) -> + gen_server:call(?MODULE, {listen, Name}, infinity). + +accept(Listen) -> + gen_server:call(?MODULE, {accept, Listen}, infinity). + +connect(Ip, Port) -> + gen_server:call(?MODULE, {connect, Ip, Port}, infinity). + +get_remote_id(Socket, Node) -> + gen_server:call(?MODULE, {get_remote_id, {Socket,Node}}, infinity). + +%%==================================================================== +%% gen_server callbacks +%%==================================================================== + +start_link() -> + gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). + +init([]) -> + process_flag(priority, max), + {ok, #state{}}. + +handle_call({listen, Name}, _From, State) -> + case gen_tcp:listen(0, [{active, false}, {packet,?PPRE}]) of + {ok, Socket} -> + {ok, World} = gen_tcp:listen(0, [{active, false}, binary, {packet,?PPRE}]), + TcpAddress = get_tcp_address(Socket), + WorldTcpAddress = get_tcp_address(World), + {_,Port} = WorldTcpAddress#net_address.address, + {ok, Creation} = erl_epmd:register_node(Name, Port), + {reply, {ok, {Socket, TcpAddress, Creation}}, + State#state{listen={Socket, World}}}; + Error -> + {reply, Error, State} + end; + +handle_call({accept, Listen}, {From, _}, State = #state{listen={_, World}}) -> + Self = self(), + ErtsPid = spawn_link(fun() -> accept_loop(Self, erts, Listen, From) end), + WorldPid = spawn_link(fun() -> accept_loop(Self, world, World, Listen) end), + {reply, ErtsPid, State#state{accept_loop={ErtsPid, WorldPid}}}; + +handle_call({connect, Ip, Port}, {From, _}, State) -> + Me = self(), + Pid = spawn_link(fun() -> setup_proxy(Ip, Port, Me) end), + receive + {Pid, go_ahead, LPort} -> + Res = {ok, Socket} = try_connect(LPort), + ok = gen_tcp:controlling_process(Socket, From), + flush_old_controller(From, Socket), + {reply, Res, State}; + {Pid, Error} -> + {reply, Error, State} + end; + +handle_call({get_remote_id, {Socket,_Node}}, _From, State) -> + Address = get_tcp_address(Socket), + {reply, Address, State}; + +handle_call(_What, _From, State) -> + {reply, ok, State}. + +handle_cast(_What, State) -> + {noreply, State}. + +handle_info(_What, State) -> + {noreply, State}. + +terminate(_Reason, _St) -> + ok. + +code_change(_OldVsn, St, _Extra) -> + {ok, St}. + +%%-------------------------------------------------------------------- +%%% Internal functions +%%-------------------------------------------------------------------- +get_tcp_address(Socket) -> + {ok, Address} = inet:sockname(Socket), + {ok, Host} = inet:gethostname(), + #net_address{ + address = Address, + host = Host, + protocol = proxy, + family = inet + }. + +accept_loop(Proxy, Type, Listen, Extra) -> + process_flag(priority, max), + case Type of + erts -> + case gen_tcp:accept(Listen) of + {ok, Socket} -> + Extra ! {accept,self(),Socket,inet,proxy}, + receive + {_Kernel, controller, Pid} -> + ok = gen_tcp:controlling_process(Socket, Pid), + flush_old_controller(Pid, Socket), + Pid ! {self(), controller}; + {_Kernel, unsupported_protocol} -> + exit(unsupported_protocol) + end; + Error -> + exit(Error) + end; + world -> + case gen_tcp:accept(Listen) of + {ok, Socket} -> + Opts = get_ssl_options(server), + case ssl:ssl_accept(Socket, Opts) of + {ok, SslSocket} -> + PairHandler = + spawn_link(fun() -> + setup_connection(SslSocket, Extra) + end), + ok = ssl:controlling_process(SslSocket, PairHandler), + flush_old_controller(PairHandler, SslSocket); + _ -> + gen_tcp:close(Socket) + end; + Error -> + exit(Error) + end + end, + accept_loop(Proxy, Type, Listen, Extra). + + +try_connect(Port) -> + case gen_tcp:connect({127,0,0,1}, Port, [{active, false}, {packet,?PPRE}]) of + R = {ok, _S} -> + R; + {error, _R} -> + try_connect(Port) + end. + +setup_proxy(Ip, Port, Parent) -> + process_flag(trap_exit, true), + Opts = get_ssl_options(client), + case ssl:connect(Ip, Port, [{active, true}, binary, {packet,?PPRE}] ++ Opts) of + {ok, World} -> + {ok, ErtsL} = gen_tcp:listen(0, [{active, true}, binary, {packet,?PPRE}]), + #net_address{address={_,LPort}} = get_tcp_address(ErtsL), + Parent ! {self(), go_ahead, LPort}, + case gen_tcp:accept(ErtsL) of + {ok, Erts} -> + %% gen_tcp:close(ErtsL), + loop_conn_setup(World, Erts); + Err -> + Parent ! {self(), Err} + end; + Err -> + Parent ! {self(), Err} + end. + +setup_connection(World, ErtsListen) -> + process_flag(trap_exit, true), + TcpAddress = get_tcp_address(ErtsListen), + {_Addr,Port} = TcpAddress#net_address.address, + {ok, Erts} = gen_tcp:connect({127,0,0,1}, Port, [{active, true}, binary, {packet,?PPRE}]), + ssl:setopts(World, [{active,true}, {packet,?PPRE}]), + loop_conn_setup(World, Erts). + +loop_conn_setup(World, Erts) -> + receive + {ssl, World, Data = <<$a, _/binary>>} -> + gen_tcp:send(Erts, Data), + ssl:setopts(World, [{packet,?PPOST}]), + inet:setopts(Erts, [{packet,?PPOST}]), + loop_conn(World, Erts); + {tcp, Erts, Data = <<$a, _/binary>>} -> + ssl:send(World, Data), + ssl:setopts(World, [{packet,?PPOST}]), + inet:setopts(Erts, [{packet,?PPOST}]), + loop_conn(World, Erts); + {ssl, World, Data = <<_, _/binary>>} -> + gen_tcp:send(Erts, Data), + loop_conn_setup(World, Erts); + {tcp, Erts, Data = <<_, _/binary>>} -> + ssl:send(World, Data), + loop_conn_setup(World, Erts); + {ssl, World, Data} -> + gen_tcp:send(Erts, Data), + loop_conn_setup(World, Erts); + {tcp, Erts, Data} -> + ssl:send(World, Data), + loop_conn_setup(World, Erts) + end. + +loop_conn(World, Erts) -> + receive + {ssl, World, Data} -> + gen_tcp:send(Erts, Data), + loop_conn(World, Erts); + {tcp, Erts, Data} -> + ssl:send(World, Data), + loop_conn(World, Erts); + {tcp_closed, Erts} -> + ssl:close(World); + {ssl_closed, World} -> + gen_tcp:close(Erts) + end. + +get_ssl_options(Type) -> + case init:get_argument(ssl_dist_opt) of + {ok, Args} -> + [{erl_dist, true} | ssl_options(Type, Args)]; + _ -> + [{erl_dist, true}] + end. + +ssl_options(_,[]) -> + []; +ssl_options(server, [["client_" ++ _, _Value]|T]) -> + ssl_options(server,T); +ssl_options(client, [["server_" ++ _, _Value]|T]) -> + ssl_options(client,T); +ssl_options(server, [["server_certfile", Value]|T]) -> + [{certfile, Value} | ssl_options(server,T)]; +ssl_options(client, [["client_certfile", Value]|T]) -> + [{certfile, Value} | ssl_options(client,T)]; +ssl_options(server, [["server_cacertfile", Value]|T]) -> + [{cacertfile, Value} | ssl_options(server,T)]; +ssl_options(client, [["client_cacertfile", Value]|T]) -> + [{cacertfile, Value} | ssl_options(client,T)]; +ssl_options(server, [["server_keyfile", Value]|T]) -> + [{keyfile, Value} | ssl_options(server,T)]; +ssl_options(client, [["client_keyfile", Value]|T]) -> + [{keyfile, Value} | ssl_options(client,T)]; +ssl_options(server, [["server_password", Value]|T]) -> + [{password, Value} | ssl_options(server,T)]; +ssl_options(client, [["client_password", Value]|T]) -> + [{password, Value} | ssl_options(client,T)]; +ssl_options(server, [["server_verify", Value]|T]) -> + [{verify, atomize(Value)} | ssl_options(server,T)]; +ssl_options(client, [["client_verify", Value]|T]) -> + [{verify, atomize(Value)} | ssl_options(client,T)]; +ssl_options(server, [["server_reuse_sessions", Value]|T]) -> + [{reuse_sessions, atomize(Value)} | ssl_options(server,T)]; +ssl_options(client, [["client_reuse_sessions", Value]|T]) -> + [{reuse_sessions, atomize(Value)} | ssl_options(client,T)]; +ssl_options(server, [["server_secure_renegotiation", Value]|T]) -> + [{secure_renegotiation, atomize(Value)} | ssl_options(server,T)]; +ssl_options(client, [["client_secure_renegotiation", Value]|T]) -> + [{secure_renegotiation, atomize(Value)} | ssl_options(client,T)]; +ssl_options(server, [["server_depth", Value]|T]) -> + [{depth, list_to_integer(Value)} | ssl_options(server,T)]; +ssl_options(client, [["client_depth", Value]|T]) -> + [{depth, list_to_integer(Value)} | ssl_options(client,T)]; +ssl_options(server, [["server_hibernate_after", Value]|T]) -> + [{hibernate_after, list_to_integer(Value)} | ssl_options(server,T)]; +ssl_options(client, [["client_hibernate_after", Value]|T]) -> + [{hibernate_after, list_to_integer(Value)} | ssl_options(client,T)]; +ssl_options(server, [["server_ciphers", Value]|T]) -> + [{ciphers, Value} | ssl_options(server,T)]; +ssl_options(client, [["client_ciphers", Value]|T]) -> + [{ciphers, Value} | ssl_options(client,T)]; +ssl_options(server, [["server_dhfile", Value]|T]) -> + [{dhfile, Value} | ssl_options(server,T)]; +ssl_options(server, [["server_fail_if_no_peer_cert", Value]|T]) -> + [{fail_if_no_peer_cert, atomize(Value)} | ssl_options(server,T)]; +ssl_options(_,_) -> + exit(malformed_ssl_dist_opt). + +atomize(List) when is_list(List) -> + list_to_atom(List); +atomize(Atom) when is_atom(Atom) -> + Atom. + +flush_old_controller(Pid, Socket) -> + receive + {tcp, Socket, Data} -> + Pid ! {tcp, Socket, Data}, + flush_old_controller(Pid, Socket); + {tcp_closed, Socket} -> + Pid ! {tcp_closed, Socket}, + flush_old_controller(Pid, Socket); + {ssl, Socket, Data} -> + Pid ! {ssl, Socket, Data}, + flush_old_controller(Pid, Socket); + {ssl_closed, Socket} -> + Pid ! {ssl_closed, Socket}, + flush_old_controller(Pid, Socket) + after 0 -> + ok + end. diff --git a/lib/ssl/test/Makefile b/lib/ssl/test/Makefile index 5be07cad2c..38bc529445 100644 --- a/lib/ssl/test/Makefile +++ b/lib/ssl/test/Makefile @@ -35,17 +35,19 @@ VSN=$(GS_VSN) # ---------------------------------------------------- MODULES = \ - ssl_test_lib \ + ssl_test_lib \ ssl_basic_SUITE \ + ssl_handshake_SUITE \ ssl_packet_SUITE \ ssl_payload_SUITE \ ssl_to_openssl_SUITE \ ssl_session_cache_SUITE \ + ssl_dist_SUITE \ ssl_test_MACHINE \ old_ssl_active_SUITE \ old_ssl_active_once_SUITE \ old_ssl_passive_SUITE \ - old_ssl_verify_SUITE \ + old_ssl_verify_SUITE \ old_ssl_peer_cert_SUITE \ old_ssl_misc_SUITE \ old_ssl_protocol_SUITE \ diff --git a/lib/ssl/test/ssl_basic_SUITE.erl b/lib/ssl/test/ssl_basic_SUITE.erl index 37a021e7cf..8da1d947d3 100644 --- a/lib/ssl/test/ssl_basic_SUITE.erl +++ b/lib/ssl/test/ssl_basic_SUITE.erl @@ -253,7 +253,7 @@ all() -> unknown_server_ca_fail, der_input, unknown_server_ca_accept_verify_none, unknown_server_ca_accept_verify_peer, - unknown_server_ca_accept_backwardscompatibilty, + unknown_server_ca_accept_backwardscompatibility, %%different_ca_peer_sign, no_reuses_session_server_restart_new_cert, no_reuses_session_server_restart_new_cert_file, reuseaddr, @@ -3282,11 +3282,11 @@ unknown_server_ca_accept_verify_peer(Config) when is_list(Config) -> ssl_test_lib:close(Client). %%-------------------------------------------------------------------- -unknown_server_ca_accept_backwardscompatibilty(doc) -> +unknown_server_ca_accept_backwardscompatibility(doc) -> ["Test that old style verify_funs will work"]; -unknown_server_ca_accept_backwardscompatibilty(suite) -> +unknown_server_ca_accept_backwardscompatibility(suite) -> []; -unknown_server_ca_accept_backwardscompatibilty(Config) when is_list(Config) -> +unknown_server_ca_accept_backwardscompatibility(Config) when is_list(Config) -> ClientOpts = ?config(client_opts, Config), ServerOpts = ?config(server_opts, Config), {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), diff --git a/lib/ssl/test/ssl_dist_SUITE.erl b/lib/ssl/test/ssl_dist_SUITE.erl new file mode 100644 index 0000000000..7325e97ff5 --- /dev/null +++ b/lib/ssl/test/ssl_dist_SUITE.erl @@ -0,0 +1,603 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2007-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +-module(ssl_dist_SUITE). + +-include_lib("test_server/include/test_server.hrl"). + +%% Note: This directive should only be used in test suites. +-compile(export_all). + +-define(DEFAULT_TIMETRAP_SECS, 240). + +-define(AWAIT_SLL_NODE_UP_TIMEOUT, 30000). + +-record(node_handle, + {connection_handler, + socket, + name, + nodename} + ). + +suite() -> + [{ct_hooks,[ts_install_cth]}]. + +all() -> + [basic]. + +groups() -> + []. + +init_per_group(_GroupName, Config) -> + Config. + +end_per_group(_GroupName, Config) -> + Config. + +init_per_suite(Config) -> + try crypto:start() of + ok -> + add_ssl_opts_config(Config) + catch _:_ -> + {skip, "Crypto did not start"} + end. + +end_per_suite(Config) -> + application:stop(crypto), + Config. + +init_per_testcase(Case, Config) when list(Config) -> + Dog = ?t:timetrap(?t:seconds(?DEFAULT_TIMETRAP_SECS)), + [{watchdog, Dog},{testcase, Case}|Config]. + +end_per_testcase(_Case, Config) when list(Config) -> + Dog = ?config(watchdog, Config), + ?t:timetrap_cancel(Dog), + ok. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% +%% Testcases %% +%% %% + +basic(doc) -> + ["Test that two nodes can connect via ssl distribution"]; +basic(suite) -> + []; +basic(Config) when is_list(Config) -> + NH1 = start_ssl_node(Config), + Node1 = NH1#node_handle.nodename, + NH2 = start_ssl_node(Config), + Node2 = NH2#node_handle.nodename, + + pong = apply_on_ssl_node(NH1, fun () -> net_adm:ping(Node2) end), + + [Node2] = apply_on_ssl_node(NH1, fun () -> nodes() end), + [Node1] = apply_on_ssl_node(NH2, fun () -> nodes() end), + + %% The test_server node has the same cookie as the ssl nodes + %% but it should not be able to communicate with the ssl nodes + %% via the erlang distribution. + pang = net_adm:ping(Node1), + pang = net_adm:ping(Node2), + + %% + %% Check that we are able to communicate over the erlang + %% distribution between the ssl nodes. + %% + Ref = make_ref(), + spawn(fun () -> + apply_on_ssl_node( + NH1, + fun () -> + tstsrvr_format("Hi from ~p!~n", [node()]), + send_to_tstcntrl({Ref, self()}), + receive + {From, ping} -> + tstsrvr_format("Received ping ~p!~n", [node()]), + From ! {self(), pong} + end + end) + end), + receive + {Ref, SslPid} -> + ok = apply_on_ssl_node( + NH2, + fun () -> + tstsrvr_format("Hi from ~p!~n", [node()]), + SslPid ! {self(), ping}, + receive + {SslPid, pong} -> + ok + end + end) + end, + stop_ssl_node(NH1), + stop_ssl_node(NH2), + success(Config). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% +%% Internal functions %% +%% %% + +%% +%% ssl_node side api +%% + +tstsrvr_format(Fmt, ArgList) -> + send_to_tstsrvr({format, Fmt, ArgList}). + +send_to_tstcntrl(Message) -> + send_to_tstsrvr({message, Message}). + + +%% +%% test_server side api +%% + +apply_on_ssl_node(Node, M, F, A) when atom(M), atom(F), list(A) -> + Ref = make_ref(), + send_to_ssl_node(Node, {apply, self(), Ref, M, F, A}), + receive + {Ref, Result} -> + Result + end. + +apply_on_ssl_node(Node, Fun) when is_function(Fun, 0) -> + Ref = make_ref(), + send_to_ssl_node(Node, {apply, self(), Ref, Fun}), + receive + {Ref, Result} -> + Result + end. + +stop_ssl_node(#node_handle{connection_handler = Handler, + socket = Socket, + name = Name}) -> + ?t:format("Trying to stop ssl node ~s.~n", [Name]), + Mon = erlang:monitor(process, Handler), + unlink(Handler), + case gen_tcp:send(Socket, term_to_binary(stop)) of + ok -> + receive + {'DOWN', Mon, process, Handler, Reason} -> + case Reason of + normal -> ok; + _ -> exit(Reason) + end + end; + Error -> + erlang:demonitor(Mon, [flush]), + exit(Error) + end. + +start_ssl_node(Config) -> + start_ssl_node(Config, ""). + +start_ssl_node(Config, XArgs) -> + Name = mk_node_name(Config), + SSL = ?config(ssl_opts, Config), + SSLDistOpts = setup_dist_opts(Name, ?config(priv_dir, Config)), + start_ssl_node_raw(Name, SSL ++ " " ++ SSLDistOpts ++ XArgs). + +start_ssl_node_raw(Name, Args) -> + {ok, LSock} = gen_tcp:listen(0, + [binary, {packet, 4}, {active, false}]), + {ok, ListenPort} = inet:port(LSock), + CmdLine = mk_node_cmdline(ListenPort, Name, Args), + ?t:format("Attempting to start ssl node ~s: ~s~n", [Name, CmdLine]), + case open_port({spawn, CmdLine}, []) of + Port when port(Port) -> + unlink(Port), + erlang:port_close(Port), + case await_ssl_node_up(Name, LSock) of + #node_handle{} = NodeHandle -> + ?t:format("Ssl node ~s started.~n", [Name]), + NodeName = list_to_atom(Name ++ "@" ++ host_name()), + NodeHandle#node_handle{nodename = NodeName}; + Error -> + exit({failed_to_start_node, Name, Error}) + end; + Error -> + exit({failed_to_start_node, Name, Error}) + end. + +%% +%% command line creation +%% + +host_name() -> + [$@ | Host] = lists:dropwhile(fun ($@) -> false; (_) -> true end, + atom_to_list(node())), + Host. + +mk_node_name(Config) -> + {A, B, C} = erlang:now(), + Case = ?config(testcase, Config), + atom_to_list(?MODULE) + ++ "_" + ++ atom_to_list(Case) + ++ "_" + ++ integer_to_list(A) + ++ "-" + ++ integer_to_list(B) + ++ "-" + ++ integer_to_list(C). + +mk_node_cmdline(ListenPort, Name, Args) -> + Static = "-detached -noinput", + Pa = filename:dirname(code:which(?MODULE)), + Prog = case catch init:get_argument(progname) of + {ok,[[P]]} -> P; + _ -> exit(no_progname_argument_found) + end, + NameSw = case net_kernel:longnames() of + false -> "-sname "; + _ -> "-name " + end, + {ok, Pwd} = file:get_cwd(), + Prog ++ " " + ++ Static ++ " " + ++ NameSw ++ " " ++ Name ++ " " + ++ "-pa " ++ Pa ++ " " + ++ "-run application start crypto -run application start public_key " + ++ "-run " ++ atom_to_list(?MODULE) ++ " cnct2tstsrvr " + ++ host_name() ++ " " + ++ integer_to_list(ListenPort) ++ " " + ++ Args ++ " " + ++ "-env ERL_CRASH_DUMP " ++ Pwd ++ "/erl_crash_dump." ++ Name ++ " " + ++ "-setcookie " ++ atom_to_list(erlang:get_cookie()). + +%% +%% Connection handler test_server side +%% + +await_ssl_node_up(Name, LSock) -> + case gen_tcp:accept(LSock, ?AWAIT_SLL_NODE_UP_TIMEOUT) of + timeout -> + gen_tcp:close(LSock), + ?t:format("Timeout waiting for ssl node ~s to come up~n", + [Name]), + timeout; + {ok, Socket} -> + gen_tcp:close(LSock), + case gen_tcp:recv(Socket, 0) of + {ok, Bin} -> + check_ssl_node_up(Socket, Name, Bin); + {error, closed} -> + gen_tcp:close(Socket), + exit({lost_connection_with_ssl_node_before_up, Name}) + end; + {error, Error} -> + gen_tcp:close(LSock), + exit({accept_failed, Error}) + end. + +check_ssl_node_up(Socket, Name, Bin) -> + case catch binary_to_term(Bin) of + {'EXIT', _} -> + gen_tcp:close(Socket), + exit({bad_data_received_from_ssl_node, Name, Bin}); + {ssl_node_up, NodeName} -> + case list_to_atom(Name++"@"++host_name()) of + NodeName -> + Parent = self(), + Go = make_ref(), + %% Spawn connection handler on test server side + Pid = spawn_link( + fun () -> + receive Go -> ok end, + tstsrvr_con_loop(Name, Socket, Parent) + end), + ok = gen_tcp:controlling_process(Socket, Pid), + Pid ! Go, + #node_handle{connection_handler = Pid, + socket = Socket, + name = Name}; + _ -> + exit({unexpected_ssl_node_connected, NodeName}) + end; + Msg -> + exit({unexpected_msg_instead_of_ssl_node_up, Name, Msg}) + end. + +send_to_ssl_node(#node_handle{connection_handler = Hndlr}, Term) -> + Hndlr ! {relay_to_ssl_node, term_to_binary(Term)}, + ok. + +tstsrvr_con_loop(Name, Socket, Parent) -> + inet:setopts(Socket,[{active,once}]), + receive + {relay_to_ssl_node, Data} when is_binary(Data) -> + case gen_tcp:send(Socket, Data) of + ok -> + ok; + _Error -> + gen_tcp:close(Socket), + exit({failed_to_relay_data_to_ssl_node, Name, Data}) + end; + {tcp, Socket, Bin} -> + case catch binary_to_term(Bin) of + {'EXIT', _} -> + gen_tcp:close(Socket), + exit({bad_data_received_from_ssl_node, Name, Bin}); + {format, FmtStr, ArgList} -> + ?t:format(FmtStr, ArgList); + {message, Msg} -> + ?t:format("Got message ~p", [Msg]), + Parent ! Msg; + {apply_res, To, Ref, Res} -> + To ! {Ref, Res}; + bye -> + ?t:format("Ssl node ~s stopped.~n", [Name]), + gen_tcp:close(Socket), + exit(normal); + Unknown -> + exit({unexpected_message_from_ssl_node, Name, Unknown}) + end; + {tcp_closed, Socket} -> + gen_tcp:close(Socket), + exit({lost_connection_with_ssl_node, Name}) + end, + tstsrvr_con_loop(Name, Socket, Parent). + +%% +%% Connection handler ssl_node side +%% + +% cnct2tstsrvr() is called via command line arg -run ... +cnct2tstsrvr([Host, Port]) when list(Host), list(Port) -> + %% Spawn connection handler on ssl node side + ConnHandler + = spawn(fun () -> + case catch gen_tcp:connect(Host, + list_to_integer(Port), + [binary, + {packet, 4}, + {active, false}]) of + {ok, Socket} -> + notify_ssl_node_up(Socket), + ets:new(test_server_info, + [set, + public, + named_table, + {keypos, 1}]), + ets:insert(test_server_info, + {test_server_handler, self()}), + ssl_node_con_loop(Socket); + _Error -> + halt("Failed to connect to test server") + end + end), + spawn(fun () -> + Mon = erlang:monitor(process, ConnHandler), + receive + {'DOWN', Mon, process, ConnHandler, Reason} -> + receive after 1000 -> ok end, + halt("test server connection handler terminated: " + ++ + lists:flatten(io_lib:format("~p", [Reason]))) + end + end). + +notify_ssl_node_up(Socket) -> + case catch gen_tcp:send(Socket, + term_to_binary({ssl_node_up, node()})) of + ok -> ok; + _ -> halt("Failed to notify test server that I'm up") + end. + +send_to_tstsrvr(Term) -> + case catch ets:lookup_element(test_server_info, test_server_handler, 2) of + Hndlr when pid(Hndlr) -> + Hndlr ! {relay_to_test_server, term_to_binary(Term)}, ok; + _ -> + receive after 200 -> ok end, + send_to_tstsrvr(Term) + end. + +ssl_node_con_loop(Socket) -> + inet:setopts(Socket,[{active,once}]), + receive + {relay_to_test_server, Data} when is_binary(Data) -> + case gen_tcp:send(Socket, Data) of + ok -> + ok; + _Error -> + gen_tcp:close(Socket), + halt("Failed to relay data to test server") + end; + {tcp, Socket, Bin} -> + case catch binary_to_term(Bin) of + {'EXIT', _} -> + gen_tcp:close(Socket), + halt("test server sent me bad data"); + {apply, From, Ref, M, F, A} -> + spawn_link( + fun () -> + send_to_tstsrvr({apply_res, + From, + Ref, + (catch apply(M, F, A))}) + end); + {apply, From, Ref, Fun} -> + spawn_link(fun () -> + send_to_tstsrvr({apply_res, + From, + Ref, + (catch Fun())}) + end); + stop -> + gen_tcp:send(Socket, term_to_binary(bye)), + gen_tcp:close(Socket), + init:stop(), + receive after infinity -> ok end; + _Unknown -> + halt("test server sent me an unexpected message") + end; + {tcp_closed, Socket} -> + halt("Lost connection to test server") + end, + ssl_node_con_loop(Socket). + +%% +%% Setup ssl dist info +%% + +rand_bin(N) -> + rand_bin(N, []). + +rand_bin(0, Acc) -> + Acc; +rand_bin(N, Acc) -> + rand_bin(N-1, [random:uniform(256)-1|Acc]). + +make_randfile(Dir) -> + {ok, IoDev} = file:open(filename:join([Dir, "RAND"]), [write]), + {A, B, C} = erlang:now(), + random:seed(A, B, C), + ok = file:write(IoDev, rand_bin(1024)), + file:close(IoDev). + +append_files(FileNames, ResultFileName) -> + {ok, ResultFile} = file:open(ResultFileName, [write]), + do_append_files(FileNames, ResultFile). + +do_append_files([], RF) -> + ok = file:close(RF); +do_append_files([F|Fs], RF) -> + {ok, Data} = file:read_file(F), + ok = file:write(RF, Data), + do_append_files(Fs, RF). + +setup_dist_opts(Name, PrivDir) -> + NodeDir = filename:join([PrivDir, Name]), + RGenDir = filename:join([NodeDir, "rand_gen"]), + ok = file:make_dir(NodeDir), + ok = file:make_dir(RGenDir), + make_randfile(RGenDir), + make_certs:all(RGenDir, NodeDir), + SDir = filename:join([NodeDir, "server"]), + SC = filename:join([SDir, "cert.pem"]), + SK = filename:join([SDir, "key.pem"]), + SKC = filename:join([SDir, "keycert.pem"]), + append_files([SK, SC], SKC), + CDir = filename:join([NodeDir, "client"]), + CC = filename:join([CDir, "cert.pem"]), + CK = filename:join([CDir, "key.pem"]), + CKC = filename:join([CDir, "keycert.pem"]), + append_files([CK, CC], CKC), + "-proto_dist inet_tls " + ++ "-ssl_dist_opt server_certfile " ++ SKC ++ " " + ++ "-ssl_dist_opt client_certfile " ++ CKC ++ " ". + +%% +%% Start scripts etc... +%% + +add_ssl_opts_config(Config) -> + %% + %% Start with boot scripts if on an installed system; otherwise, + %% just point out ssl ebin with -pa. + %% + try + Dir = ?config(priv_dir, Config), + LibDir = code:lib_dir(), + Apps = application:which_applications(), + {value, {stdlib, _, STDL_VSN}} = lists:keysearch(stdlib, 1, Apps), + {value, {kernel, _, KRNL_VSN}} = lists:keysearch(kernel, 1, Apps), + StdlDir = filename:join([LibDir, "stdlib-" ++ STDL_VSN]), + KrnlDir = filename:join([LibDir, "kernel-" ++ KRNL_VSN]), + {ok, _} = file:read_file_info(StdlDir), + {ok, _} = file:read_file_info(KrnlDir), + SSL_VSN = vsn(ssl), + VSN_CRYPTO = vsn(crypto), + VSN_PKEY = vsn(public_key), + + SslDir = filename:join([LibDir, "ssl-" ++ SSL_VSN]), + {ok, _} = file:read_file_info(SslDir), + %% We are using an installed otp system, create the boot script. + Script = filename:join(Dir, atom_to_list(?MODULE)), + {ok, RelFile} = file:open(Script ++ ".rel", [write]), + io:format(RelFile, + "{release, ~n" + " {\"SSL distribution test release\", \"~s\"},~n" + " {erts, \"~s\"},~n" + " [{kernel, \"~s\"},~n" + " {stdlib, \"~s\"},~n" + " {crypto, \"~s\"},~n" + " {public_key, \"~s\"},~n" + " {ssl, \"~s\"}]}.~n", + [case catch erlang:system_info(otp_release) of + {'EXIT', _} -> "R11B"; + Rel -> Rel + end, + erlang:system_info(version), + KRNL_VSN, + STDL_VSN, + VSN_CRYPTO, + VSN_PKEY, + SSL_VSN]), + ok = file:close(RelFile), + ok = systools:make_script(Script, []), + [{ssl_opts, "-boot " ++ Script} | Config] + catch + _:_ -> + [{ssl_opts, "-pa " ++ filename:dirname(code:which(ssl))} + | add_comment_config( + "Bootscript wasn't used since the test wasn't run on an " + "installed OTP system.", + Config)] + end. + +%% +%% Add common comments to config +%% + +add_comment_config(Comment, []) -> + [{comment, Comment}]; +add_comment_config(Comment, [{comment, OldComment} | Cs]) -> + [{comment, Comment ++ " " ++ OldComment} | Cs]; +add_comment_config(Comment, [C|Cs]) -> + [C|add_comment_config(Comment, Cs)]. + +%% +%% Call when test case success +%% + +success(Config) -> + case lists:keysearch(comment, 1, Config) of + {value, {comment, _} = Res} -> Res; + _ -> ok + end. + +vsn(App) -> + application:start(App), + try + {value, + {ssl, + _, + VSN}} = lists:keysearch(App, + 1, + application:which_applications()), + VSN + after + application:stop(ssl) + end. diff --git a/lib/ssl/test/ssl_handshake_SUITE.erl b/lib/ssl/test/ssl_handshake_SUITE.erl new file mode 100644 index 0000000000..08c23b2d47 --- /dev/null +++ b/lib/ssl/test/ssl_handshake_SUITE.erl @@ -0,0 +1,67 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% + +-module(ssl_handshake_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). +-include("ssl_internal.hrl"). +-include("ssl_handshake.hrl"). + +suite() -> [{ct_hooks,[ts_install_cth]}]. + +all() -> [ + decode_hello_handshake, + decode_single_hello_extension_correctly, + decode_unknown_hello_extension_correctly]. + +decode_hello_handshake(_Config) -> + HelloPacket = <<16#02, 16#00, 16#00, + 16#44, 16#03, 16#03, 16#4e, 16#7f, 16#c1, 16#03, 16#35, + 16#c2, 16#07, 16#b9, 16#4a, 16#58, 16#af, 16#34, 16#07, + 16#a6, 16#7e, 16#ef, 16#52, 16#cb, 16#e0, 16#ea, 16#b7, + 16#aa, 16#47, 16#c8, 16#c2, 16#2c, 16#66, 16#fa, 16#f8, + 16#09, 16#42, 16#cf, 16#00, 16#c0, 16#30, 16#00, 16#00, + 16#1c, + 16#00, 16#0b, 16#00, 16#04, 16#03, 16#00, 16#01, 16#02, % ec_point_formats + 16#ff, 16#01, 16#00, 16#01, 16#00, %% renegotiate + 16#00, 16#23, + 16#00, 16#00, 16#33, 16#74, 16#00, 16#07, 16#06, 16#73, + 16#70, 16#64, 16#79, 16#2f, 16#32>>, + + {Records, _Buffer} = ssl_handshake:get_tls_handshake(HelloPacket, <<>>), + + {Hello, _Data} = hd(Records), + #renegotiation_info{renegotiated_connection = <<0>>} = Hello#server_hello.renegotiation_info. + +decode_single_hello_extension_correctly(_Config) -> + Renegotiation = <<?UINT16(?RENEGOTIATION_EXT), ?UINT16(1), 0>>, + Extensions = ssl_handshake:dec_hello_extensions(Renegotiation, []), + [{renegotiation_info,#renegotiation_info{renegotiated_connection = <<0>>}}] = Extensions. + + +decode_unknown_hello_extension_correctly(_Config) -> + FourByteUnknown = <<16#CA,16#FE, ?UINT16(4), 3, 0, 1, 2>>, + Renegotiation = <<?UINT16(?RENEGOTIATION_EXT), ?UINT16(1), 0>>, + Extensions = ssl_handshake:dec_hello_extensions(<<FourByteUnknown/binary, Renegotiation/binary>>, []), + [{renegotiation_info,#renegotiation_info{renegotiated_connection = <<0>>}}] = Extensions. + diff --git a/lib/ssl/test/ssl_packet_SUITE.erl b/lib/ssl/test/ssl_packet_SUITE.erl index d22d5d2954..9d2599b778 100644 --- a/lib/ssl/test/ssl_packet_SUITE.erl +++ b/lib/ssl/test/ssl_packet_SUITE.erl @@ -151,6 +151,9 @@ all() -> packet_cdr_decode, packet_cdr_decode_list, packet_http_decode, packet_http_decode_list, packet_http_bin_decode_multi, packet_http_error_passive, + packet_httph_active, packet_httph_bin_active, + packet_httph_active_once, packet_httph_bin_active_once, + packet_httph_passive, packet_httph_bin_passive, packet_line_decode, packet_line_decode_list, packet_asn1_decode, packet_asn1_decode_list, packet_tpkt_decode, packet_tpkt_decode_list, @@ -1594,7 +1597,7 @@ client_http_decode(Socket, HttpRequest) -> %%-------------------------------------------------------------------- packet_http_decode_list(doc) -> ["Test setting the packet option {packet, http}, {mode, list}" - "(Body will be litst too)"]; + "(Body will be list too)"]; packet_http_decode_list(suite) -> []; packet_http_decode_list(Config) when is_list(Config) -> @@ -1804,7 +1807,304 @@ server_http_decode_error(Socket, HttpResponse) -> assert_packet_opt(Socket, http), ok = ssl:send(Socket, HttpResponse), ok. +%%-------------------------------------------------------------------- +packet_httph_active(doc) -> + ["Test setting the packet option {packet, httph}"]; +packet_httph_active(suite) -> + []; +packet_httph_active(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_active, + []}}, + {options, [{active, true}, + {packet, httph}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +server_send_trailer(Socket, Trailer)-> + ssl:send(Socket, Trailer), + ok. + +client_http_decode_trailer_active(Socket) -> + receive + {ssl, Socket, + {http_header,36,'Content-Encoding',undefined,"gzip"}} -> + ok; + Other1 -> + exit({?LINE, Other1}) + end, + receive + {ssl, Socket, http_eoh} -> + ok; + Other2 -> + exit({?LINE, Other2}) + end, + ok. + +%%-------------------------------------------------------------------- +packet_httph_bin_active(doc) -> + ["Test setting the packet option {packet, httph_bin}"]; +packet_httph_bin_active(suite) -> + []; +packet_httph_bin_active(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_bin_active, + []}}, + {options, [{active, true}, + {packet, httph_bin}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +client_http_decode_trailer_bin_active(Socket) -> + receive + {ssl, Socket, + {http_header,36,'Content-Encoding',undefined, <<"gzip">>}} -> + ok; + Other1 -> + exit({?LINE, Other1}) + end, + receive + {ssl, Socket, http_eoh} -> + ok; + Other2 -> + exit({?LINE, Other2}) + end, + ok. +%%-------------------------------------------------------------------- +packet_httph_active_once(doc) -> + ["Test setting the packet option {packet, httph}"]; +packet_httph_active_once(suite) -> + []; +packet_httph_active_once(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_active_once, + []}}, + {options, [{active, false}, + {packet, httph}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + + +client_http_decode_trailer_active_once(Socket) -> + ssl:setopts(Socket, [{active, once}]), + receive + {ssl, Socket, + {http_header,36,'Content-Encoding',undefined,"gzip"}} -> + ok; + Other1 -> + exit({?LINE, Other1}) + end, + ssl:setopts(Socket, [{active, once}]), + receive + {ssl, Socket, http_eoh} -> + ok; + Other2 -> + exit({?LINE, Other2}) + end, + ok. +%%-------------------------------------------------------------------- +packet_httph_bin_active_once(doc) -> + ["Test setting the packet option {packet, httph_bin}"]; +packet_httph_bin_active_once(suite) -> + []; +packet_httph_bin_active_once(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_bin_active_once, + []}}, + {options, [{active, false}, + {packet, httph_bin}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +client_http_decode_trailer_bin_active_once(Socket) -> + ssl:setopts(Socket, [{active, once}]), + receive + {ssl, Socket, + {http_header,36,'Content-Encoding',undefined, <<"gzip">>}} -> + ok; + Other1 -> + exit({?LINE, Other1}) + end, + ssl:setopts(Socket, [{active, once}]), + receive + {ssl, Socket, http_eoh} -> + ok; + Other2 -> + exit({?LINE, Other2}) + end, + ok. + +%%-------------------------------------------------------------------- + +packet_httph_passive(doc) -> + ["Test setting the packet option {packet, httph}"]; +packet_httph_passive(suite) -> + []; +packet_httph_passive(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_passive, + []}}, + {options, [{active, false}, + {packet, httph}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +client_http_decode_trailer_passive(Socket) -> + {ok,{http_header,36,'Content-Encoding',undefined,"gzip"}} = ssl:recv(Socket, 0), + {ok, http_eoh} = ssl:recv(Socket, 0), + ok. + +%%-------------------------------------------------------------------- +packet_httph_bin_passive(doc) -> + ["Test setting the packet option {packet, httph_bin}"]; +packet_httph_bin_passive(suite) -> + []; +packet_httph_bin_passive(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Trailer = "Content-Encoding: gzip\r\n" + "\r\n", + + Server = ssl_test_lib:start_server([{node, ClientNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, server_send_trailer, + [Trailer]}}, + {options, [{active, true}, binary | + ServerOpts]}]), + + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ServerNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, client_http_decode_trailer_bin_passive, + []}}, + {options, [{active, false}, + {packet, httph_bin}, + list | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). + +client_http_decode_trailer_bin_passive(Socket) -> + {ok,{http_header,36,'Content-Encoding',undefined,<<"gzip">>}} = ssl:recv(Socket, 0), + {ok, http_eoh} = ssl:recv(Socket, 0), + ok. %%-------------------------------------------------------------------- packet_line_decode(doc) -> diff --git a/lib/stdlib/doc/src/beam_lib.xml b/lib/stdlib/doc/src/beam_lib.xml index 013e94c393..db65eb3848 100644 --- a/lib/stdlib/doc/src/beam_lib.xml +++ b/lib/stdlib/doc/src/beam_lib.xml @@ -88,7 +88,6 @@ it is recommended that it contains at least 32 characters and that both upper and lower case letters as well as digits and special characters are used.</p> - <p></p> <p>The default type -- and currently the only type -- of crypto algorithm is <c>des3_cbc</c>, three rounds of DES. The key string will be scrambled using <c>erlang:md5/1</c> to generate diff --git a/lib/stdlib/doc/src/dets.xml b/lib/stdlib/doc/src/dets.xml index 54fefbe2b8..215ec154ed 100644 --- a/lib/stdlib/doc/src/dets.xml +++ b/lib/stdlib/doc/src/dets.xml @@ -1006,8 +1006,7 @@ ok <name name="table" arity="2"/> <fsummary>Return a QLC query handle.</fsummary> <desc> - <p><marker id="qlc_table"></marker> - Returns a QLC (Query List + <p><marker id="qlc_table"></marker>Returns a QLC (Query List Comprehension) query handle. The module <c>qlc</c> implements a query language aimed mainly at Mnesia but Ets tables, Dets tables, and lists are also recognized by <c>qlc</c> diff --git a/lib/stdlib/doc/src/erl_tar.xml b/lib/stdlib/doc/src/erl_tar.xml index 929620bb88..fe166dbd01 100644 --- a/lib/stdlib/doc/src/erl_tar.xml +++ b/lib/stdlib/doc/src/erl_tar.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2003</year><year>2009</year> + <year>2003</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -89,9 +89,8 @@ <v>Reason = term()</v> </type> <desc> - <p>The <marker id="add"></marker> -<c>add/3</c> function adds a file to a tar file - that has been opened for writing by + <p>The <marker id="add"></marker><c>add/3</c> function adds + a file to a tar file that has been opened for writing by <seealso marker="#open">open/1</seealso>.</p> <taglist> <tag><c>dereference</c></tag> @@ -138,8 +137,8 @@ <v>TarDescriptor = term()</v> </type> <desc> - <p>The <marker id="close"></marker> -<c>close/1</c> function closes a tar file + <p>The <marker id="close"></marker><c>close/1</c> function + closes a tar file opened by <seealso marker="#open">open/1</seealso>.</p> </desc> </func> @@ -151,11 +150,12 @@ <v>FileList = [Filename|{NameInArchive, binary()},{NameInArchive, Filename}]</v> <v>Filename = filename()</v> <v>NameInArchive = filename()</v> - <v>RetValue = ok|{error,{Name,Reason}} <V>Reason = term()</v> + <v>RetValue = ok|{error,{Name,Reason}}</v> + <v>Reason = term()</v> </type> <desc> - <p>The <marker id="create_2"></marker> -<c>create/2</c> function creates a tar file and + <p>The <marker id="create_2"></marker><c>create/2</c> function + creates a tar file and archives the files whose names are given in <c>FileList</c> into it. The files may either be read from disk or given as binaries.</p> @@ -171,11 +171,11 @@ <v>NameInArchive = filename()</v> <v>OptionList = [Option]</v> <v>Option = compressed|cooked|dereference|verbose</v> - <v>RetValue = ok|{error,{Name,Reason}} <V>Reason = term()</v> + <v>RetValue = ok|{error,{Name,Reason}}</v> + <v>Reason = term()</v> </type> <desc> - <p>The <marker id="create_3"></marker> -<c>create/3</c> function + <p>The <marker id="create_3"></marker><c>create/3</c> function creates a tar file and archives the files whose names are given in <c>FileList</c> into it. The files may either be read from disk or given as binaries.</p> @@ -220,9 +220,8 @@ <v>Reason = term()</v> </type> <desc> - <p>The <marker id="extract_1"></marker> -<c>extract/1</c> function extracts - all files from a tar archive.</p> + <p>The <marker id="extract_1"></marker><c>extract/1</c> function + extracts all files from a tar archive.</p> <p>If the <c>Name</c> argument is given as "<c>{binary,Binary}</c>", the contents of the binary is assumed to be a tar archive. </p> @@ -250,9 +249,8 @@ <v>Reason = term()</v> </type> <desc> - <p>The <marker id="extract_2"></marker> -<c>extract/2</c> function extracts - files from a tar archive.</p> + <p>The <marker id="extract_2"></marker><c>extract/2</c> function + extracts files from a tar archive.</p> <p>If the <c>Name</c> argument is given as "<c>{binary,Binary}</c>", the contents of the binary is assumed to be a tar archive. </p> @@ -322,8 +320,8 @@ <v>Reason = term()</v> </type> <desc> - <p>The <marker id="format_error_1"></marker> -<c>format_error/1</c> converts + <p>The <marker id="format_error_1"></marker><c>format_error/1</c> + function converts an error reason term to a human-readable error message string.</p> </desc> </func> @@ -339,8 +337,8 @@ <v>Reason = term()</v> </type> <desc> - <p>The <marker id="open"></marker> -<c>open/2</c> function creates a tar file for writing. + <p>The <marker id="open"></marker><c>open/2</c> function creates + a tar file for writing. (Any existing file with the same name will be truncated.)</p> <p>By convention, the name of a tar file should end in "<c>.tar</c>". To abide to the convention, you'll need to add "<c>.tar</c>" yourself @@ -373,7 +371,6 @@ You should not rely on the specific contents of the <c>TarDescriptor</c> term, as it may change in future versions as more features are added to the <c>erl_tar</c> module.</p> - <p></p> </warning> </desc> </func> @@ -386,9 +383,8 @@ <v>Reason = term()</v> </type> <desc> - <p>The <marker id="table_1"></marker> -<c>table/1</c> function retrieves - the names of all files in the tar file <c>Name</c>.</p> + <p>The <marker id="table_1"></marker><c>table/1</c> function + retrieves the names of all files in the tar file <c>Name</c>.</p> </desc> </func> <func> @@ -398,9 +394,8 @@ <v>Name = filename()</v> </type> <desc> - <p>The <marker id="table_2"></marker> -<c>table/2</c> function retrieves - the names of all files in the tar file <c>Name</c>.</p> + <p>The <marker id="table_2"></marker><c>table/2</c> function + retrieves the names of all files in the tar file <c>Name</c>.</p> </desc> </func> <func> @@ -410,8 +405,7 @@ <v>Name = filename()</v> </type> <desc> - <p>The <marker id="t_1"></marker> -<c>t/1</c> function prints the names + <p>The <marker id="t_1"></marker><c>t/1</c> function prints the names of all files in the tar file <c>Name</c> to the Erlang shell. (Similar to "<c>tar t</c>".)</p> </desc> @@ -423,8 +417,8 @@ <v>Name = filename()</v> </type> <desc> - <p>The <marker id="tt_1"></marker> -<c>tt/1</c> function prints names and + <p>The <marker id="tt_1"></marker><c>tt/1</c> function prints + names and information about all files in the tar file <c>Name</c> to the Erlang shell. (Similar to "<c>tar tv</c>".)</p> </desc> diff --git a/lib/stdlib/doc/src/ets.xml b/lib/stdlib/doc/src/ets.xml index 8c952708c5..efd9514db6 100644 --- a/lib/stdlib/doc/src/ets.xml +++ b/lib/stdlib/doc/src/ets.xml @@ -512,8 +512,10 @@ Error: fun containing local Erlang function calls of the reference counter, keeping track of how many times the table has been fixed by the process.</p> <p>If the table never has been fixed, the call returns - <c>false</c>.</p> - </item> + <c>false</c>.</p></item> + <item><p><c>Item=stats, Value=tuple()</c> <br></br> + Returns internal statistics about set, bag and duplicate_bag tables on an internal format used by OTP test suites. + Not for production use.</p></item> </list> </desc> </func> @@ -658,9 +660,9 @@ ets:is_compiled_ms(Broken).</code> table. The difference being the same as between <c>=:=</c> and <c>==</c>. As an example, one might insert an object with the - <c>integer()</c><c>1</c> as a key in an <c>ordered_set</c> + <c>integer()</c> <c>1</c> as a key in an <c>ordered_set</c> and get the object returned as a result of doing a - <c>lookup/2</c> with the <c>float()</c><c>1.0</c> as the + <c>lookup/2</c> with the <c>float()</c> <c>1.0</c> as the key to search for.</p> <p>If the table is of type <c>set</c> or <c>ordered_set</c>, the function returns either the empty list or a list with one @@ -943,7 +945,7 @@ ets:select(Table,MatchSpec),</code> table is named or not. If one or more options are left out, the default values are used. This means that not specifying any options (<c>[]</c>) is the same as specifying - <c>[set,protected,{keypos,1},{heir,none},{write_concurrency,false},{read_concurrency,false}]</c>.</p> + <c>[set, protected, {keypos,1}, {heir,none}, {write_concurrency,false}, {read_concurrency,false}]</c>.</p> <list type="bulleted"> <item> <p><c>set</c> @@ -960,7 +962,7 @@ ets:select(Table,MatchSpec),</code> <c>ordered_set</c> tables regard keys as equal when they <em>compare equal</em>, not only when they match. This means that to an <c>ordered_set</c>, the - <c>integer()</c><c>1</c> and the <c>float()</c><c>1.0</c> are regarded as equal. This also means that the + <c>integer()</c> <c>1</c> and the <c>float()</c> <c>1.0</c> are regarded as equal. This also means that the key used to lookup an element not necessarily <em>matches</em> the key in the elements returned, if <c>float()</c>'s and <c>integer()</c>'s are mixed in diff --git a/lib/stdlib/doc/src/gb_sets.xml b/lib/stdlib/doc/src/gb_sets.xml index 38de51322f..f91fac9c82 100644 --- a/lib/stdlib/doc/src/gb_sets.xml +++ b/lib/stdlib/doc/src/gb_sets.xml @@ -61,7 +61,6 @@ and do the same thing in the <c>sets</c> and <c>ordsets</c> modules. That is, by only changing the module name for each call, you can try out different set representations.</p> - <p></p> <list type="bulleted"> <item> <p><c>add_element/2</c></p> diff --git a/lib/stdlib/doc/src/gen_fsm.xml b/lib/stdlib/doc/src/gen_fsm.xml index e35b5adace..421eeb4fd3 100644 --- a/lib/stdlib/doc/src/gen_fsm.xml +++ b/lib/stdlib/doc/src/gen_fsm.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1996</year><year>2010</year> + <year>1996</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -430,7 +430,6 @@ gen_fsm:sync_send_all_state_event -----> Module:handle_sync_event/4 denote a state of the state machine. <em>state data</em> is used to denote the internal state of the Erlang process which implements the state machine.</p> - <p></p> </section> <funcs> <func> diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml index 60c0b91212..36089f2603 100644 --- a/lib/stdlib/doc/src/notes.xml +++ b/lib/stdlib/doc/src/notes.xml @@ -2632,7 +2632,7 @@ that is, also when starting a gen_server, gen_fsm etc. </p> <p>This limitation has now been properly documented and the behavior of the <c>gen_fsm</c>, <c>gen_server</c>, and - <c>proc_lib</c><c>start</c> and <c>start_link</c> + <c>proc_lib</c> <c>start</c> and <c>start_link</c> functions when providing this option has been changed from hanging indefinitely to failing with reason <c>badarg</c>.</p> @@ -2749,7 +2749,6 @@ <c>join</c> option that can be used to force QLC to use a particular kind of join in some QLC expression.</p> <p>Several other changes have also been included:</p> - <p></p> <list type="bulleted"> <item> <p>The new <c>tmpdir</c> option of <c>cursor/2</c>, diff --git a/lib/stdlib/doc/src/qlc.xml b/lib/stdlib/doc/src/qlc.xml index 6a45ade447..ce50631ca9 100644 --- a/lib/stdlib/doc/src/qlc.xml +++ b/lib/stdlib/doc/src/qlc.xml @@ -688,7 +688,6 @@ ets:match_spec_run(ets:lookup(86033, {2,2}), </datatype> <datatype> <name name="tmp_file_usage"></name> - <desc><p></p></desc> </datatype> </datatypes> diff --git a/lib/stdlib/doc/src/supervisor.xml b/lib/stdlib/doc/src/supervisor.xml index edd119d37a..ec607d6e4c 100644 --- a/lib/stdlib/doc/src/supervisor.xml +++ b/lib/stdlib/doc/src/supervisor.xml @@ -59,7 +59,6 @@ processes are started in order from left to right according to this list. When the supervisor terminates, it first terminates its child processes in reversed start order, from right to left.</p> - <p></p> <p>A supervisor can have one of the following <em>restart strategies</em>:</p> <list type="bulleted"> <item> diff --git a/lib/stdlib/doc/src/timer.xml b/lib/stdlib/doc/src/timer.xml index b741ab7db1..0c1e398dc4 100644 --- a/lib/stdlib/doc/src/timer.xml +++ b/lib/stdlib/doc/src/timer.xml @@ -84,7 +84,7 @@ <name name="send_after" arity="3"/> <fsummary>Send <c>Message</c>to <c>Pid</c>after a specified <c>Time</c>.</fsummary> <desc> - <p></p> + <p> <taglist> <tag><c>send_after/3</c></tag> <item> @@ -98,6 +98,7 @@ <p>Same as <c>send_after(<anno>Time</anno>, self(), <anno>Message</anno>)</c>.</p> </item> </taglist> + </p> </desc> </func> <func> @@ -107,7 +108,7 @@ <name name="exit_after" arity="3"/> <fsummary>Send an exit signal with <c>Reason</c>after a specified <c>Time</c>.</fsummary> <desc> - <p></p> + <p> <taglist> <tag><c>exit_after/3</c></tag> <item> @@ -128,6 +129,7 @@ <p>Same as <c>exit_after(<anno>Time</anno>, self(), kill)</c>. </p> </item> </taglist> + </p> </desc> </func> <func> @@ -144,7 +146,7 @@ <name name="send_interval" arity="3"/> <fsummary>Send <c>Message</c>repeatedly at intervals of <c>Time</c>.</fsummary> <desc> - <p></p> + <p> <taglist> <tag><c>send_interval/3</c></tag> <item> @@ -158,6 +160,7 @@ <p>Same as <c>send_interval(<anno>Time</anno>, self(), <anno>Message</anno>)</c>.</p> </item> </taglist> + </p> </desc> </func> <func> @@ -188,7 +191,7 @@ Function, Arguments)</c> or <c>apply(Fun, Arguments)</c></fsummary> <type_desc variable="Time">In microseconds</type_desc> <desc> - <p></p> + <p> <taglist> <tag><c>tc/3</c></tag> <item> @@ -209,6 +212,7 @@ </item> </taglist> + </p> </desc> </func> <func> @@ -254,7 +258,6 @@ <section> <title>Examples</title> <p>This example illustrates how to print out "Hello World!" in 5 seconds:</p> - <p></p> <pre> 1> <input>timer:apply_after(5000, io, format, ["~nHello World!~n", []]).</input> {ok,TRef} diff --git a/lib/stdlib/doc/src/zip.xml b/lib/stdlib/doc/src/zip.xml index b03fc7f4e2..cf0d581352 100644 --- a/lib/stdlib/doc/src/zip.xml +++ b/lib/stdlib/doc/src/zip.xml @@ -243,12 +243,10 @@ <name name="extract" arity="2"/> <fsummary>Extract files from a zip archive</fsummary> <desc> - <p>The <marker id="unzip_1"></marker> -<c>unzip/1</c> function extracts - all files from a zip archive. The - <marker id="unzip_2"></marker> -<c>unzip/2</c> function provides options - to extract some files, and more.</p> + <p>The <marker id="unzip_1"></marker><c>unzip/1</c> function extracts + all files from a zip archive. + The <marker id="unzip_2"></marker><c>unzip/2</c> function provides + options to extract some files, and more.</p> <p>If the <c><anno>Archive</anno></c> argument is given as a binary, the contents of the binary is assumed to be a zip archive, otherwise it should be a filename.</p> @@ -413,8 +411,8 @@ <name name="zip_open" arity="2"/> <fsummary>Open an archive and return a handle to it</fsummary> <desc> - <p>The <marker id="zip_open"></marker> -<c>zip_open</c> function opens a + <p>The <marker id="zip_open"></marker><c>zip_open</c> function + opens a zip archive, and reads and saves its directory. This means that subsequently reading files from the archive will be faster than unzipping files one at a time with <c>unzip</c>.</p> @@ -436,8 +434,7 @@ <name name="zip_get" arity="2"/> <fsummary>Extract files from an open archive</fsummary> <desc> - <p>The <marker id="zip_get"></marker> -<c>zip_get</c> function extracts + <p>The <marker id="zip_get"></marker><c>zip_get</c> function extracts one or all files from an open archive.</p> <p>The files will be unzipped to memory or to file, depending on the options given to the <c>zip_open</c> function when the @@ -448,9 +445,8 @@ <name name="zip_close" arity="1"/> <fsummary>Close an open archive</fsummary> <desc> - <p>The <marker id="zip_close"></marker> -<c>zip_close/1</c> function closes - a zip archive, previously opened with <c>zip_open</c>. All + <p>The <marker id="zip_close"></marker><c>zip_close/1</c> function + closes a zip archive, previously opened with <c>zip_open</c>. All resources are closed, and the handle should not be used after closing.</p> </desc> diff --git a/lib/stdlib/src/beam_lib.erl b/lib/stdlib/src/beam_lib.erl index 9077e59fdc..e9a5e6831e 100644 --- a/lib/stdlib/src/beam_lib.erl +++ b/lib/stdlib/src/beam_lib.erl @@ -896,13 +896,17 @@ call_crypto_server(Req) -> gen_server:call(?CRYPTO_KEY_SERVER, Req, infinity) catch exit:{noproc,_} -> - start_crypto_server(), - erlang:yield(), - call_crypto_server(Req) + %% Not started. + call_crypto_server_1(Req); + exit:{normal,_} -> + %% The process finished just as we called it. + call_crypto_server_1(Req) end. -start_crypto_server() -> - gen_server:start({local,?CRYPTO_KEY_SERVER}, ?MODULE, [], []). +call_crypto_server_1(Req) -> + gen_server:start({local,?CRYPTO_KEY_SERVER}, ?MODULE, [], []), + erlang:yield(), + call_crypto_server(Req). -spec init([]) -> {'ok', #state{}}. diff --git a/lib/stdlib/src/dets_v8.erl b/lib/stdlib/src/dets_v8.erl index af36958c1c..299b037c28 100644 --- a/lib/stdlib/src/dets_v8.erl +++ b/lib/stdlib/src/dets_v8.erl @@ -163,7 +163,7 @@ %% The 8(c) version uses a different hashing algorithm, erlang:phash %% (former versions use erlang:hash). %% Version 8(b) files are only converted to version 8(c) if repair is -%% done, so we need compatability with 8(b) for a _long_ time. +%% done, so we need compatibility with 8(b) for a _long_ time. %% %% There are known bugs due to the fact that keys and objects are %% sometimes compared (==) and sometimes matched (=:=). The version diff --git a/lib/stdlib/src/erl_expand_records.erl b/lib/stdlib/src/erl_expand_records.erl index eada563914..20fd247cea 100644 --- a/lib/stdlib/src/erl_expand_records.erl +++ b/lib/stdlib/src/erl_expand_records.erl @@ -35,7 +35,7 @@ trecords=sets:new(), % Typed records uses_types=false, % Are there -spec or -type in the module strict_ra=[], % strict record accesses - checked_ra=[] % succesfully accessed records + checked_ra=[] % successfully accessed records }). -spec(module(AbsForms, CompileOptions) -> AbsForms when diff --git a/lib/stdlib/src/error_logger_tty_h.erl b/lib/stdlib/src/error_logger_tty_h.erl index 435e57aa0e..fa13fbb2bd 100644 --- a/lib/stdlib/src/error_logger_tty_h.erl +++ b/lib/stdlib/src/error_logger_tty_h.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -34,10 +34,12 @@ handle_event/2, handle_call/2, handle_info/2, terminate/2, code_change/3]). +-export([write_event/2]). + %% This one is used when we takeover from the simple error_logger. init({[], {error_logger, Buf}}) -> User = set_group_leader(), - write_events(Buf), + write_events(Buf,io), {ok, {User, error_logger}}; %% This one is used if someone took over from us, and now wants to %% go back. @@ -52,7 +54,7 @@ init([]) -> handle_event({_Type, GL, _Msg}, State) when node(GL) =/= node() -> {ok, State}; handle_event(Event, State) -> - write_event(tag_event(Event)), + write_event(tag_event(Event),io), {ok, State}. handle_info({'EXIT', User, _Reason}, {User, PrevHandler}) -> @@ -64,10 +66,10 @@ handle_info({'EXIT', User, _Reason}, {User, PrevHandler}) -> PrevHandler, go_back} end; handle_info({emulator, GL, Chars}, State) when node(GL) == node() -> - write_event(tag_event({emulator, GL, Chars})), + write_event(tag_event({emulator, GL, Chars}),io), {ok, State}; handle_info({emulator, noproc, Chars}, State) -> - write_event(tag_event({emulator, noproc, Chars})), + write_event(tag_event({emulator, noproc, Chars}),io), {ok, State}; handle_info(_, State) -> {ok, State}. @@ -97,65 +99,65 @@ set_group_leader() -> tag_event(Event) -> {erlang:localtime(), Event}. -write_events(Events) -> write_events1(lists:reverse(Events)). +write_events(Events,IOMod) -> write_events1(lists:reverse(Events),IOMod). -write_events1([Event|Es]) -> - write_event(Event), - write_events1(Es); -write_events1([]) -> +write_events1([Event|Es],IOMod) -> + write_event(Event,IOMod), + write_events1(Es,IOMod); +write_events1([],_IOMod) -> ok. -write_event({Time, {error, _GL, {Pid, Format, Args}}}) -> +write_event({Time, {error, _GL, {Pid, Format, Args}}},IOMod) -> T = write_time(maybe_utc(Time)), case catch io_lib:format(add_node(Format,Pid), Args) of S when is_list(S) -> - format(T ++ S); + format(IOMod, T ++ S); _ -> F = add_node("ERROR: ~p - ~p~n", Pid), - format(T ++ F, [Format,Args]) + format(IOMod, T ++ F, [Format,Args]) end; -write_event({Time, {emulator, _GL, Chars}}) -> +write_event({Time, {emulator, _GL, Chars}},IOMod) -> T = write_time(maybe_utc(Time)), case catch io_lib:format(Chars, []) of S when is_list(S) -> - format(T ++ S); + format(IOMod, T ++ S); _ -> - format(T ++ "ERROR: ~p ~n", [Chars]) + format(IOMod, T ++ "ERROR: ~p ~n", [Chars]) end; -write_event({Time, {info, _GL, {Pid, Info, _}}}) -> +write_event({Time, {info, _GL, {Pid, Info, _}}},IOMod) -> T = write_time(maybe_utc(Time)), - format(T ++ add_node("~p~n",Pid),[Info]); -write_event({Time, {error_report, _GL, {Pid, std_error, Rep}}}) -> + format(IOMod, T ++ add_node("~p~n",Pid),[Info]); +write_event({Time, {error_report, _GL, {Pid, std_error, Rep}}},IOMod) -> T = write_time(maybe_utc(Time)), S = format_report(Rep), - format(T ++ S ++ add_node("", Pid)); -write_event({Time, {info_report, _GL, {Pid, std_info, Rep}}}) -> + format(IOMod, T ++ S ++ add_node("", Pid)); +write_event({Time, {info_report, _GL, {Pid, std_info, Rep}}},IOMod) -> T = write_time(maybe_utc(Time), "INFO REPORT"), S = format_report(Rep), - format(T ++ S ++ add_node("", Pid)); -write_event({Time, {info_msg, _GL, {Pid, Format, Args}}}) -> + format(IOMod, T ++ S ++ add_node("", Pid)); +write_event({Time, {info_msg, _GL, {Pid, Format, Args}}},IOMod) -> T = write_time(maybe_utc(Time), "INFO REPORT"), case catch io_lib:format(add_node(Format,Pid), Args) of S when is_list(S) -> - format(T ++ S); + format(IOMod, T ++ S); _ -> F = add_node("ERROR: ~p - ~p~n", Pid), - format(T ++ F, [Format,Args]) + format(IOMod, T ++ F, [Format,Args]) end; -write_event({Time, {warning_report, _GL, {Pid, std_warning, Rep}}}) -> +write_event({Time, {warning_report, _GL, {Pid, std_warning, Rep}}},IOMod) -> T = write_time(maybe_utc(Time), "WARNING REPORT"), S = format_report(Rep), - format(T ++ S ++ add_node("", Pid)); -write_event({Time, {warning_msg, _GL, {Pid, Format, Args}}}) -> + format(IOMod, T ++ S ++ add_node("", Pid)); +write_event({Time, {warning_msg, _GL, {Pid, Format, Args}}},IOMod) -> T = write_time(maybe_utc(Time), "WARNING REPORT"), case catch io_lib:format(add_node(Format,Pid), Args) of S when is_list(S) -> - format(T ++ S); + format(IOMod, T ++ S); _ -> F = add_node("ERROR: ~p - ~p~n", Pid), - format(T ++ F, [Format,Args]) + format(IOMod, T ++ F, [Format,Args]) end; -write_event({_Time, _Error}) -> +write_event({_Time, _Error},_IOMod) -> ok. maybe_utc(Time) -> @@ -178,8 +180,9 @@ maybe_utc(Time) -> Time end. -format(String) -> io:format(user, String, []). -format(String, Args) -> io:format(user, String, Args). +format(IOMod, String) -> format(IOMod, String, []). +format(io_lib, String, Args) -> io_lib:format(String, Args); +format(io, String, Args) -> io:format(user, String, Args). format_report(Rep) when is_list(Rep) -> case string_p(Rep) of diff --git a/lib/stdlib/test/beam_lib_SUITE.erl b/lib/stdlib/test/beam_lib_SUITE.erl index 1788dcc85e..5df19ca7f1 100644 --- a/lib/stdlib/test/beam_lib_SUITE.erl +++ b/lib/stdlib/test/beam_lib_SUITE.erl @@ -591,8 +591,18 @@ do_encrypted_abstr(Beam, Key) -> ?line {ok,{simple,[{"Abst",Abst}]}} = beam_lib:chunks(Beam, ["Abst"]), ?line {ok,cleared} = beam_lib:clear_crypto_key_fun(), + + %% Try to force a stop/start race. + ?line start_stop_race(10000), + ok. +start_stop_race(0) -> + ok; +start_stop_race(N) -> + {error,_} = beam_lib:crypto_key_fun(bad_fun), + undefined = beam_lib:clear_crypto_key_fun(), + start_stop_race(N-1). bad_fun(F) -> {error,E} = beam_lib:crypto_key_fun(F), diff --git a/lib/stdlib/test/ets_SUITE.erl b/lib/stdlib/test/ets_SUITE.erl index 02e97fb3a8..e048764a55 100644 --- a/lib/stdlib/test/ets_SUITE.erl +++ b/lib/stdlib/test/ets_SUITE.erl @@ -819,6 +819,14 @@ t_delete_all_objects(Config) when is_list(Config) -> repeat_for_opts(t_delete_all_objects_do), ?line verify_etsmem(EtsMem). +get_kept_objects(T) -> + case ets:info(T,stats) of + false -> + 0; + {_,_,_,_,_,_,KO} -> + KO + end. + t_delete_all_objects_do(Opts) -> ?line T=ets_new(x,Opts), ?line filltabint(T,4000), @@ -828,10 +836,10 @@ t_delete_all_objects_do(Opts) -> ?line true = ets:delete_all_objects(T), ?line '$end_of_table' = ets:next(T,O), ?line 0 = ets:info(T,size), - ?line 4000 = ets:info(T,kept_objects), + ?line 4000 = get_kept_objects(T), ?line ets:safe_fixtable(T,false), ?line 0 = ets:info(T,size), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), ?line filltabint(T,4000), ?line 4000 = ets:info(T,size), ?line true = ets:delete_all_objects(T), @@ -861,10 +869,10 @@ t_delete_object_do(Opts) -> ?line ets:delete_object(T,{First, integer_to_list(First)}), ?line Next = ets:next(T,First), ?line 3999 = ets:info(T,size), - ?line 1 = ets:info(T,kept_objects), + ?line 1 = get_kept_objects(T), ?line ets:safe_fixtable(T,false), ?line 3999 = ets:info(T,size), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), ?line ets:delete(T), ?line T1 = ets_new(x,[ordered_set | Opts]), ?line filltabint(T1,4000), @@ -2717,7 +2725,8 @@ ordered_do(Opts) -> 9,10,11,12, 1,2,3,4, 17,18,19,20, - 13,14,15,16 + 13,14,15,16, + 1 bsl 33 ], ?line lists:foreach(fun(X) -> ets:insert(T,{X,integer_to_list(X)}) @@ -2732,13 +2741,14 @@ ordered_do(Opts) -> ?line S2 = L2, ?line [{1,"1"}] = ets:slot(T,0), ?line [{28,"28"}] = ets:slot(T,27), + ?line [{1 bsl 33,_}] = ets:slot(T,28), ?line 27 = ets:prev(T,28), ?line [{7,"7"}] = ets:slot(T,6), - ?line '$end_of_table' = ets:next(T,28), + ?line '$end_of_table' = ets:next(T,1 bsl 33), ?line [{12,"12"}] = ets:slot(T,11), - ?line '$end_of_table' = ets:slot(T,28), + ?line '$end_of_table' = ets:slot(T,29), ?line [{1,"1"}] = ets:slot(T,0), - ?line 28 = ets:prev(T,29), + ?line 28 = ets:prev(T,1 bsl 33), ?line 1 = ets:next(T,0), ?line pick_all_forward(T), ?line [{7,"7"}] = ets:slot(T,6), @@ -4969,7 +4979,7 @@ grow_pseudo_deleted_do(Type) -> [true]}]), Left = Mult*(Mod-1), ?line Left = ets:info(T,size), - ?line Mult = ets:info(T,kept_objects), + ?line Mult = get_kept_objects(T), filltabstr(T,Mult), spawn_opt(fun()-> ?line true = ets:info(T,fixed), Self ! start, @@ -4983,7 +4993,7 @@ grow_pseudo_deleted_do(Type) -> ?line true = ets:safe_fixtable(T,false), io:format("Unfix table done. ~p nitems=~p\n",[now(),ets:info(T,size)]), ?line false = ets:info(T,fixed), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), ?line done = receive_any(), %%verify_table_load(T), % may fail if concurrency is poor (genny) ets:delete(T), @@ -5010,7 +5020,7 @@ shrink_pseudo_deleted_do(Type) -> [{'>', '$1', Half}], [true]}]), ?line Half = ets:info(T,size), - ?line Half = ets:info(T,kept_objects), + ?line Half = get_kept_objects(T), spawn_opt(fun()-> ?line true = ets:info(T,fixed), Self ! start, io:format("Starting to delete... ~p\n",[now()]), @@ -5023,7 +5033,7 @@ shrink_pseudo_deleted_do(Type) -> ?line true = ets:safe_fixtable(T,false), io:format("Unfix table done. ~p nitems=~p\n",[now(),ets:info(T,size)]), ?line false = ets:info(T,fixed), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), ?line done = receive_any(), %%verify_table_load(T), % may fail if concurrency is poor (genny) ets:delete(T), @@ -5139,7 +5149,7 @@ smp_fixed_delete_do() -> ?line 0 = ets:info(T,size), ?line true = ets:info(T,fixed), ?line Buckets = num_of_buckets(T), - ?line NumOfObjs = ets:info(T,kept_objects), + ?line NumOfObjs = get_kept_objects(T), ets:safe_fixtable(T,false), %% Will fail as unfix does not shrink the table: %%?line Mem = ets:info(T,memory), @@ -5171,7 +5181,7 @@ smp_unfix_fix_do() -> Left = NumOfObjs - Deleted, ?line Left = ets:info(T,size), ?line true = ets:info(T,fixed), - ?line Deleted = ets:info(T,kept_objects), + ?line Deleted = get_kept_objects(T), {Child, Mref} = spawn_opt(fun()-> ?line true = ets:info(T,fixed), @@ -5188,7 +5198,7 @@ smp_unfix_fix_do() -> end, Deleted), ?line 0 = ets:info(T,size), - ?line true = ets:info(T,kept_objects) >= Left, + ?line true = get_kept_objects(T) >= Left, ?line done = receive_any() end, [link, monitor, {scheduler,2}]), @@ -5201,7 +5211,7 @@ smp_unfix_fix_do() -> Child ! done, {'DOWN', Mref, process, Child, normal} = receive_any(), ?line false = ets:info(T,fixed), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), %%verify_table_load(T), ets:delete(T), process_flag(scheduler,0). @@ -5239,7 +5249,7 @@ otp_8166_do(WC) -> ZombieCrPid ! quit, {'DOWN', ZombieCrMref, process, ZombieCrPid, normal} = receive_any(), ?line false = ets:info(T,fixed), - ?line 0 = ets:info(T,kept_objects), + ?line 0 = get_kept_objects(T), %%verify_table_load(T), ets:delete(T), process_flag(scheduler,0). @@ -5306,7 +5316,7 @@ otp_8166_zombie_creator(T,Deleted) -> verify_table_load(T) -> ?line Stats = ets:info(T,stats), - ?line {Buckets,AvgLen,StdDev,ExpSD,_MinLen,_MaxLen} = Stats, + ?line {Buckets,AvgLen,StdDev,ExpSD,_MinLen,_MaxLen,_} = Stats, ?line ok = if AvgLen > 7 -> io:format("Table overloaded: Stats=~p\n~p\n", @@ -5918,7 +5928,7 @@ very_big_num(0, Result) -> ?line Result. make_port() -> - ?line open_port({spawn, efile}, [eof]). + ?line open_port({spawn, "efile"}, [eof]). make_pid() -> ?line spawn_link(?MODULE, sleeper, []). diff --git a/lib/stdlib/test/tar_SUITE.erl b/lib/stdlib/test/tar_SUITE.erl index 48f58cd05d..9ad3936928 100644 --- a/lib/stdlib/test/tar_SUITE.erl +++ b/lib/stdlib/test/tar_SUITE.erl @@ -283,17 +283,16 @@ long_names(doc) -> long_names(Config) when is_list(Config) -> ?line DataDir = ?config(data_dir, Config), ?line Long = filename:join(DataDir, "long_names.tar"), + run_in_short_tempdir(Config, + fun() -> do_long_names(Long) end). +do_long_names(Long) -> %% Try table/2 and extract/2. ?line case erl_tar:table(Long, [verbose]) of {ok,List} when is_list(List) -> ?line io:format("~p\n", [List]) end, - - %% To avoid getting too long paths for Windows to handle, extract into - %% the current directory (which is the test_server directory). Its path - %% is quite a bit shorter than the path to priv_dir. ?line {ok,Cwd} = file:get_cwd(), ?line ok = erl_tar:extract(Long), ?line Base = filename:join([Cwd, "original_software", "written_by", @@ -312,17 +311,16 @@ long_names(Config) when is_list(Config) -> ?line "Here"++_ = binary_to_list(First), ?line "And"++_ = binary_to_list(Second), - %% Clean up. - ?line delete_files([filename:join(Cwd, "original_software"),EmptyDir]), - ok. create_long_names(doc) -> ["Creates a tar file from a deep directory structure (filenames are ", "longer than 100 characters)."]; create_long_names(Config) when is_list(Config) -> - ?line PrivDir = ?config(priv_dir, Config), - ?line ok = file:set_cwd(PrivDir), + run_in_short_tempdir(Config, fun create_long_names/0). + +create_long_names() -> + ?line {ok,Dir} = file:get_cwd(), Dirs = ["aslfjkshjkhliuf", "asdhjfehnbfsky", "sahajfskdfhsz", @@ -334,7 +332,7 @@ create_long_names(Config) when is_list(Config) -> ?line AFile = filename:join(DeepDir, "a_file"), ?line Hello = "hello, world\n", ?line ok = file:write_file(AFile, Hello), - ?line TarName = filename:join(PrivDir, "my_tar_with_long_names.tar"), + ?line TarName = filename:join(Dir, "my_tar_with_long_names.tar"), ?line ok = erl_tar:create(TarName, [AFile]), %% Print contents. @@ -347,9 +345,6 @@ create_long_names(Config) when is_list(Config) -> ?line {ok, Bin} = file:read_file(filename:join(ExtractDir, AFile)), ?line Hello = binary_to_list(Bin), - %% Clean up. - ?line delete_files([ExtractDir,TarName,hd(Dirs)]), - ok. make_dirs([Dir|Rest], []) -> @@ -734,3 +729,42 @@ delete_files([Item|Rest]) -> end, delete_files(Rest). +%% Move to a temporary directory with as short name as possible and +%% execute Fun. Remove the directory and any files in it afterwards. +%% This is necessary because pathnames on Windows may be limited to +%% 260 characters. +run_in_short_tempdir(Config, Fun) -> + {ok,Cwd} = file:get_cwd(), + PrivDir0 = ?config(priv_dir, Config), + + %% Normalize name to make sure that there is no slash at the end. + PrivDir = filename:absname(PrivDir0), + + %% We need a base directory with a much shorter pathname than + %% priv_dir. We KNOW that priv_dir is located four levels below + %% the directory that common_test puts the ct_run.* directories + %% in. That fact is not documented, but an usually reliable source + %% assured me that the directory structure is unlikely to change + %% in future versions of common_test because of backward + %% compatibility (tools developed by users of common_test depend + %% on the current directory layout). + Base = lists:foldl(fun(_, D) -> + filename:dirname(D) + end, PrivDir, [1,2,3,4]), + + Dir = make_temp_dir(Base, 0), + ok = file:set_cwd(Dir), + io:format("Running test in ~s\n", [Dir]), + try + Fun() + after + file:set_cwd(Cwd), + delete_files([Dir]) + end. + +make_temp_dir(Base, I) -> + Name = filename:join(Base, integer_to_list(I, 36)), + case file:make_dir(Name) of + ok -> Name; + {error,eexist} -> make_temp_dir(Base, I+1) + end. diff --git a/lib/test_server/doc/src/ts.xml b/lib/test_server/doc/src/ts.xml index 496ad3667a..f9b48d8372 100644 --- a/lib/test_server/doc/src/ts.xml +++ b/lib/test_server/doc/src/ts.xml @@ -77,7 +77,7 @@ </p> <p><c>ts:install/0</c> is used if the target platform is the same as the controller host, i.e. if you run on "local target" - and no options are needed. Then running <c>ts:install/0</c><c>ts</c> + and no options are needed. Then running <c>ts:install/0</c> <c>ts</c> will run an autoconf script for your current environment and set up the necessary variables needed by the test suites. diff --git a/lib/test_server/src/test_server_ctrl.erl b/lib/test_server/src/test_server_ctrl.erl index de9b962dfc..f3445b742b 100644 --- a/lib/test_server/src/test_server_ctrl.erl +++ b/lib/test_server/src/test_server_ctrl.erl @@ -4674,13 +4674,13 @@ collect_subcases(Mod, Case, MFA, St, Suite) -> [] when Case == all -> {ok,[],St}; [] when element(1, Case) == conf -> {ok,[],St}; [] -> {ok,[MFA],St}; -%%%! --- START Kept for backwards compatibilty --- +%%%! --- START Kept for backwards compatibility --- %%%! Requirements are not used {req,ReqList} -> collect_case_deny(Mod, Case, MFA, ReqList, [], St); {req,ReqList,SubCases} -> collect_case_deny(Mod, Case, MFA, ReqList, SubCases, St); -%%%! --- END Kept for backwards compatibilty --- +%%%! --- END Kept for backwards compatibility --- {Skip,Reason} when Skip==skip; Skip==skipped -> {ok,[{skip_case,{MFA,Reason}}],St}; {error,Reason} -> diff --git a/lib/test_server/src/ts.config b/lib/test_server/src/ts.config index f021f5958b..cf3d269616 100644 --- a/lib/test_server/src/ts.config +++ b/lib/test_server/src/ts.config @@ -12,7 +12,7 @@ % "10.10.0.1", %IP string % {10,10,0,1}, %IP tuple % ["my_ip4_host"], %Any aliases -% "::ffff:10.10.0.1", %IPv6 string (compatibilty addr) +% "::ffff:10.10.0.1", %IPv6 string (compatibility addr) % {0,0,0,0,0,65535,2570,1} %IPv6 tuple % }}. diff --git a/lib/toolbar/src/toolbar_toolconfig.erl b/lib/toolbar/src/toolbar_toolconfig.erl index 7d8f2b4d21..693a7b4570 100644 --- a/lib/toolbar/src/toolbar_toolconfig.erl +++ b/lib/toolbar/src/toolbar_toolconfig.erl @@ -126,7 +126,7 @@ loop(S,Window) -> show_info(Window,Info), move_focus(Window,file); - %% Erronous version number -- Notify user + %% Erroneous version number -- Notify user {error,version} -> Win = Window#tfwindow.window, tool_utils:notify(Win,[FileName, @@ -136,7 +136,7 @@ loop(S,Window) -> _Error -> Win = Window#tfwindow.window, tool_utils:notify(Win,[FileName, - "File is on erronous format"]) + "File is in erroneous format"]) end; %% The file can not be read, show default values diff --git a/lib/tools/c_src/Makefile.in b/lib/tools/c_src/Makefile.in index 65a7f5f424..6921193154 100644 --- a/lib/tools/c_src/Makefile.in +++ b/lib/tools/c_src/Makefile.in @@ -142,7 +142,9 @@ EMEM_OBJS = $(addprefix $(EMEM_OBJ_DIR)/,$(notdir $(EMEM_SRCS:.c=.o))) # Misc targets # -all: $(CREATE_DIRS) erts_lib $(PROGS) $(DRIVERS) +_create_dirs := $(shell mkdir -p $(CREATE_DIRS)) + +all: erts_lib $(PROGS) $(DRIVERS) erts_lib: cd $(ERL_TOP)/erts/lib_src && $(MAKE) $(TYPE) @@ -158,13 +160,6 @@ clean: .PHONY: all erts_lib docs clean # -# Make dir targets -# - -$(CREATE_DIRS): - $(MKDIR) -p $@ - -# # Object targets # diff --git a/lib/tools/doc/src/instrument.xml b/lib/tools/doc/src/instrument.xml index 12877994de..a7c62c8770 100644 --- a/lib/tools/doc/src/instrument.xml +++ b/lib/tools/doc/src/instrument.xml @@ -342,7 +342,7 @@ <p>Stores the current memory allocation map on the file <c>File</c>. Returns <c>true</c> if the emulator has been started with the "<c>+Mim true</c>" command-line argument, and - the map was successfuly stored; otherwise, <c>false</c>. The + the map was successfully stored; otherwise, <c>false</c>. The contents of the file can later be read using <seealso marker="#read_memory_data/1">read_memory_data/1</seealso>. <em>NOTE:</em><c>store_memory_data/0</c> blocks execution of @@ -360,7 +360,7 @@ <p>Stores the current memory status on the file <c>File</c>. Returns <c>true</c> if the emulator has been started with the "<c>+Mis true</c>", or "<c>+Mim true</c>" - command-line arguments, and the data was successfuly stored; + command-line arguments, and the data was successfully stored; otherwise, <c>false</c>. The contents of the file can later be read using <seealso marker="#read_memory_status/1">read_memory_status/1</seealso>.</p> diff --git a/lib/tools/emacs/erlang.el b/lib/tools/emacs/erlang.el index a8dd3ec3ac..bc7a190fb4 100644 --- a/lib/tools/emacs/erlang.el +++ b/lib/tools/emacs/erlang.el @@ -1225,7 +1225,7 @@ Lock syntax table. The effect is that `apply' in the atom `( (char-after (1- (or ,pos (point))))))) ;; defvar some obsolete variables, which we still support for -;; backwardscompatibility reasons. +;; backwards compatibility reasons. (eval-when-compile (defvar comment-indent-hook) (defvar dabbrev-case-fold-search) diff --git a/lib/tools/src/cover.erl b/lib/tools/src/cover.erl index 905ad895c9..fb9744d759 100644 --- a/lib/tools/src/cover.erl +++ b/lib/tools/src/cover.erl @@ -55,14 +55,14 @@ %% compiled module. This is necessary so that the code can be loaded %% on remote nodes that are started after the compilation. %% -%% PARELLALISM +%% PARALLELISM %% To take advantage of SMP when doing the cover analysis both the data %% collection and analysis has been parallelized. One process is spawned for %% each node when collecting data, and on the remote node when collecting data %% one process is spawned per module. %% %% When analyzing data it is possible to issue multiple analyse(_to_file)/X -%% calls at once. They are however all calls (for backwardscompatability +%% calls at once. They are however all calls (for backwards compatibility %% reasons) so the user of cover will have to spawn several processes to to the %% calls ( or use async_analyse_to_file ). %% diff --git a/lib/typer/src/typer.erl b/lib/typer/src/typer.erl index e40c4f39cd..fd906c8c46 100644 --- a/lib/typer/src/typer.erl +++ b/lib/typer/src/typer.erl @@ -539,7 +539,7 @@ get_type_string(F, A, Info, Mode) -> case {Mode, Type} of {file, {contract, _}} -> ""; _ -> - Prefix = lists:concat(["-spec ", F]), + Prefix = lists:concat(["-spec ", erl_types:atom_to_string(F)]), lists:concat([Prefix, TypeStr, "."]) end; true -> diff --git a/lib/wx/api_gen/gen_util.erl b/lib/wx/api_gen/gen_util.erl index b53f817ce0..df5b4c3405 100644 --- a/lib/wx/api_gen/gen_util.erl +++ b/lib/wx/api_gen/gen_util.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -43,23 +43,27 @@ strip_name(String,[]) -> String. get_hook(_Type, undefined) -> ignore; get_hook(Type, List) -> proplists:get_value(Type, List, ignore). - + +get_taylor_made(Str, Name) -> + re:run(Str, "<<"++Name++"(.*)"++Name++">>", + [dotall, {capture, all_but_first, list}]). + open_write(File) -> %% io:format("Generating ~s~n",[File]), {ok, Fd} = file:open(File++".temp", [write]), put(current_file, {Fd,File}). - + close() -> case get(current_file) of - undefined -> + undefined -> ok; {closed, File} -> io:format("Closing twice ~s~n",[File]); {Fd,File} -> file:close(Fd), case os:cmd("diff " ++ File ++ " " ++ File ++ ".temp" ++ "| head -30") of - [] -> + [] -> ok = file:delete(File ++ ".temp"), %% So that make understands that we have made this %% case os:getenv("CLEARCASE_ROOT") of @@ -71,11 +75,11 @@ close() -> case check_diff(Diff) of copyright -> %% We ignore copyright changes only ok = file:delete(File ++ ".temp"); - _ -> + _ -> io:format("Diff in ~s~n~s ~n", [File, Diff]), case file:rename(File ++ ".temp", File) of ok -> ok; - _ -> + _ -> io:format("***** Failed to save file ~p ~n",[File]) end end @@ -85,9 +89,9 @@ close() -> check_diff(Diff) -> - try + try [_,D1,_,D2|Tail] = re:split(Diff, "\n"), - case Tail of + case Tail of [] -> ok; [<<>>] -> ok; _ -> throw(diff) @@ -117,29 +121,29 @@ args(Fun, Limit, List, Max) -> args(Fun, Limit, List, Max, 0). args(_Fun, _Limit, [], _Max, _) -> ""; %% No args -args(Fun, _Limit, [Last], _Max, _Pos) -> - case Fun(Last) of +args(Fun, _Limit, [Last], _Max, _Pos) -> + case Fun(Last) of skip -> ""; %% FIXME bug if last skips Str -> Str end; args(Fun, Limit, [H|R], Max, Pos) -> - case Fun(H) of + case Fun(H) of skip -> args(Fun,Limit,R, Max, Pos); - Str -> - {NL, NewPos} = + Str -> + {NL, NewPos} = case length(Str) + Pos of Curr when Curr > Max -> {"\n ", 0}; - Curr -> + Curr -> {"", Curr} end, - case args(Fun,Limit,R, Max, NewPos) of + case args(Fun,Limit,R, Max, NewPos) of "" -> Str; End -> Str ++ Limit ++ NL ++ End end end. - + tokens(S) -> @@ -167,11 +171,11 @@ replace_and_remove([E|R], Acc) when is_list(E) -> %% Keep everything that is a w replace_and_remove(R, [E|Acc]); replace_and_remove([$\n | R], Acc) -> %% It is semi line oriented so keep eol replace_and_remove(R, [eol|Acc]); -replace_and_remove([$( | R], Acc) -> +replace_and_remove([$( | R], Acc) -> replace_and_remove(R, ["("|Acc]); replace_and_remove([$) | R], Acc) -> replace_and_remove(R, [")"|Acc]); -replace_and_remove([${ | R], Acc) -> +replace_and_remove([${ | R], Acc) -> replace_and_remove(R, ["{"|Acc]); replace_and_remove([$} | R], Acc) -> replace_and_remove(R, ["}"|Acc]); @@ -187,7 +191,7 @@ replace_and_remove([$, | R], Acc) -> replace_and_remove(R, [cont|Acc]); replace_and_remove([$; | R], Acc) -> replace_and_remove(R, [eoe|Acc]); -replace_and_remove([$@ | R], Acc) -> +replace_and_remove([$@ | R], Acc) -> replace_and_remove(R, [directive|Acc]); replace_and_remove([_E|R], Acc) -> %% Ignore everthing else @@ -213,7 +217,7 @@ erl_copyright() -> w("%%~n",[]), w("%% %CopyrightBegin%~n",[]), w("%%~n",[]), - w("%% Copyright Ericsson AB ~p-2010. All Rights Reserved.~n", + w("%% Copyright Ericsson AB ~p-2011. All Rights Reserved.~n", [StartYear]), w("%%~n",[]), w("%% The contents of this file are subject to the Erlang Public License,~n",[]), @@ -229,11 +233,11 @@ erl_copyright() -> w("%%~n",[]), w("%% %CopyrightEnd%~n",[]). -c_copyright() -> +c_copyright() -> w("/*~n",[]), w(" * %CopyrightBegin%~n",[]), w(" *~n",[]), - w(" * Copyright Ericsson AB 2008-2010. All Rights Reserved.~n",[]), + w(" * Copyright Ericsson AB 2008-2011. All Rights Reserved.~n",[]), w(" *~n",[]), w(" * The contents of this file are subject to the Erlang Public License,~n",[]), w(" * Version 1.1, (the \"License\"); you may not use this file except in~n",[]), diff --git a/lib/wx/api_gen/gl_gen.erl b/lib/wx/api_gen/gl_gen.erl index 374e0bd12b..b665d949b3 100644 --- a/lib/wx/api_gen/gl_gen.erl +++ b/lib/wx/api_gen/gl_gen.erl @@ -44,7 +44,7 @@ devcode() -> spawn(fun() -> safe(fun gen_code/0,false) end). safe(What, QuitOnErr) -> try What(), - io:format("Completed succesfully~n~n", []), + io:format("Completed successfully~n~n", []), QuitOnErr andalso gen_util:halt(0) catch Err:Reason -> io:format("Error ~p: ~p:~p~n ~p~n", diff --git a/lib/wx/api_gen/wx_extra/wxListCtrl.c_src b/lib/wx/api_gen/wx_extra/wxListCtrl.c_src index cd3074e481..54d6fafd01 100644 --- a/lib/wx/api_gen/wx_extra/wxListCtrl.c_src +++ b/lib/wx/api_gen/wx_extra/wxListCtrl.c_src @@ -1,3 +1,161 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + + +<<wxListCtrl_class +class EwxListCtrl : public wxListCtrl { + public: ~EwxListCtrl(); + EwxListCtrl(wxWindow * parent,wxWindowID winid,const wxPoint& pos,const wxSize& size,long style,const wxValidator& validator) : wxListCtrl(parent,winid,pos,size,style,validator) {}; + EwxListCtrl() : wxListCtrl() {}; + + int onGetItemText; + int onGetItemAttr; + int onGetItemColumnImage; + ErlDrvPort port; + + private: + virtual wxString OnGetItemText(long item, long col) const; + virtual wxListItemAttr* OnGetItemAttr(long item) const; + virtual int OnGetItemImage(long item) const; + virtual int OnGetItemColumnImage(long item, long column) const; +}; +wxListCtrl_class>> + +<<wxListCtrl_new_0 +case ~s: { // wxListCtrl::wxListCtrl + wxListCtrl * Result = new EwxListCtrl(); + newPtr((void *) Result, 0, memenv); + rt.addRef(getRef((void *)Result,memenv), "wxListCtrl"); + break; +} +wxListCtrl_new_0>> + +<<wxListCtrl_new_2 +case ~s: { // wxListCtrl::wxListCtrl + wxWindowID winid=wxID_ANY; + wxPoint pos= wxDefaultPosition; + wxSize size= wxDefaultSize; + long style=wxLC_ICON; + const wxValidator * validator= &wxDefaultValidator; + wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; + int onGetItemText = 0, onGetItemAttr = 0, onGetItemColumnImage = 0; + + bp += 4; /* Align */ + while( * (int*) bp) { switch (* (int*) bp) { + case 1: {bp += 4; + winid = (wxWindowID)*(int *) bp; bp += 4; + } break; + case 2: {bp += 4; + int * posX = (int *) bp; bp += 4; + int * posY = (int *) bp; bp += 4; + pos = wxPoint(*posX,*posY); + bp += 4; /* Align */ + } break; + case 3: {bp += 4; + int * sizeW = (int *) bp; bp += 4; + int * sizeH = (int *) bp; bp += 4; + size = wxSize(*sizeW,*sizeH); + bp += 4; /* Align */ + } break; + case 4: {bp += 4; + style = (long)*(int *) bp; bp += 4; + } break; + case 5: {bp += 4; +validator = (wxValidator *) getPtr(bp,memenv); bp += 4; + } break; + case 6: {bp += 4; + onGetItemText = *(int *) bp; bp += 4; + } break; + case 7: {bp += 4; + onGetItemAttr = *(int *) bp; bp += 4; + } break; + case 8: {bp += 4; + onGetItemColumnImage = *(int *) bp; bp += 4; + } break; + }}; + EwxListCtrl * Result = new EwxListCtrl(parent,winid,pos,size,style,*validator); + Result->onGetItemText = onGetItemText; + Result->onGetItemAttr = onGetItemAttr; + Result->onGetItemColumnImage = onGetItemColumnImage; + Result->port = Ecmd.port; + newPtr((void *) Result, 0, memenv); + rt.addRef(getRef((void *)Result,memenv), "wxListCtrl"); + break; +} +wxListCtrl_new_2>> + +<<Create +case ~s: { // wxListCtrl::Create + wxWindowID winid=wxID_ANY; + wxPoint pos= wxDefaultPosition; + wxSize size= wxDefaultSize; + long style=wxLC_ICON; + const wxValidator * validator= &wxDefaultValidator; + EwxListCtrl *This = (EwxListCtrl *) getPtr(bp,memenv); bp += 4; + wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; + int onGetItemText = 0, onGetItemAttr = 0, onGetItemColumnImage = 0; + + bp += 4; /* Align */ + while( * (int*) bp) { switch (* (int*) bp) { + case 1: {bp += 4; + winid = (wxWindowID)*(int *) bp; bp += 4; + } break; + case 2: {bp += 4; + int * posX = (int *) bp; bp += 4; + int * posY = (int *) bp; bp += 4; + pos = wxPoint(*posX,*posY); + bp += 4; /* Align */ + } break; + case 3: {bp += 4; + int * sizeW = (int *) bp; bp += 4; + int * sizeH = (int *) bp; bp += 4; + size = wxSize(*sizeW,*sizeH); + bp += 4; /* Align */ + } break; + case 4: {bp += 4; + style = (long)*(int *) bp; bp += 4; + } break; + case 5: {bp += 4; +validator = (wxValidator *) getPtr(bp,memenv); bp += 4; + } break; + case 6: {bp += 4; + onGetItemText = *(int *) bp; bp += 4; + } break; + case 7: {bp += 4; + onGetItemAttr = *(int *) bp; bp += 4; + } break; + case 8: {bp += 4; + onGetItemColumnImage = *(int *) bp; bp += 4; + } break; + }}; + if(!This) throw wxe_badarg(0); + bool Result = This->Create(parent,winid,pos,size,style,*validator); + This->onGetItemText = onGetItemText; + This->onGetItemAttr = onGetItemAttr; + This->onGetItemColumnImage = onGetItemColumnImage; + This->port = Ecmd.port; + + rt.addBool(Result); + break; +} +Create>> + <<SortItems case ~s: { // wxListCtrl::SortItems taylormade wxListCtrl *This = (wxListCtrl *) getPtr(bp,memenv); bp += 4; @@ -22,3 +180,6 @@ case ~s: { // wxListCtrl::SortItems taylormade break; } SortItems>> + + + diff --git a/lib/wx/api_gen/wx_extra/wxListCtrl.erl b/lib/wx/api_gen/wx_extra/wxListCtrl.erl index e6470182cb..99255bc53f 100644 --- a/lib/wx/api_gen/wx_extra/wxListCtrl.erl +++ b/lib/wx/api_gen/wx_extra/wxListCtrl.erl @@ -1,32 +1,33 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2011. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %% + <<EXPORT:SortItems sortItems/2 SortItems:EXPORT>> <<SortItems %% @spec (This::wxListCtrl(), SortCallBack::function()) -> boolean() %% @doc Sort the items in the list control<br /> -%% <pre>SortCalBack(Item1,Item2) -> integer()</pre> +%% <pre>SortCallBack(Item1,Item2) -> integer()</pre> %% <br /> SortCallBack receives the client data associated with two items %% to compare, and should return 0 if the items are equal, a negative %% value if the first item is less than the second one and a positive %% value if the first item is greater than the second one. -%% <br /> NOTE: The callback may not call other processes. +%% <br /> NOTE: The callback may not call other (wx) processes. sortItems(#wx_ref{type=ThisT,ref=ThisRef}, SortCallBack) when is_function(SortCallBack, 2) -> ?CLASS(ThisT,wxListCtrl), @@ -37,3 +38,100 @@ sortItems(#wx_ref{type=ThisT,ref=ThisRef}, SortCallBack) SortId = wxe_util:get_cbId(Sort), wxe_util:call(~s, <<ThisRef:32/?UI,SortId:32/?UI>>). SortItems>> + +<<EXPORT:wxListCtrl new/0, new/1, new/2 wxListCtrl:EXPORT>> + +<<wxListCtrl_new_0 +%% @spec () -> wxListCtrl() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistctrl.html#wxlistctrlwxlistctrl">external documentation</a>. +new() -> + wxe_util:construct(~s, <<>>). +wxListCtrl_new_0>> + +<<wxListCtrl_new_2 +%% @spec (Parent::wxWindow:wxWindow()) -> wxListCtrl() +%% @equiv new(Parent, []) +new(Parent) + when is_record(Parent, wx_ref) -> + new(Parent, []). + +%% @spec (Parent::wxWindow:wxWindow(), [Option]) -> wxListCtrl() +%% Option = {winid, integer()} | +%% {pos, {X::integer(),Y::integer()}} | +%% {size, {W::integer(),H::integer()}} | +%% {style, integer()} | +%% {validator, wx:wx()} | +%% {onGetItemText, OnGetItemText} | +%% {onGetItemAttr, OnGetItemAttr} | +%% {onGetItemColumnImage, OnGetItemColumnImage} +%% +%% OnGetItemText = (This, Item, Column) -> wxString() +%% OnGetItemAttr = (This, Item) -> wxListItemAttr() +%% OnGetItemColumnImage = (This, Item, Column) -> integer() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistctrl.html#wxlistctrlwxlistctrl">external documentation</a>. + +new(#wx_ref{type=ParentT,ref=ParentRef}, Options) + when is_list(Options)-> + ?CLASS(ParentT,wxWindow), + MOpts = fun({winid, Winid}, Acc) -> [<<1:32/?UI,Winid:32/?UI>>|Acc]; + ({pos, {PosX,PosY}}, Acc) -> [<<2:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; + ({size, {SizeW,SizeH}}, Acc) -> [<<3:32/?UI,SizeW:32/?UI,SizeH:32/?UI,0:32>>|Acc]; + ({style, Style}, Acc) -> [<<4:32/?UI,Style:32/?UI>>|Acc]; + ({validator, #wx_ref{type=ValidatorT,ref=ValidatorRef}}, Acc) -> + ?CLASS(ValidatorT,wx),[<<5:32/?UI,ValidatorRef:32/?UI>>|Acc]; + ({onGetItemText, F}, Acc) when is_function(F) -> + Fun = fun([This,Item,Col]) -> unicode:characters_to_binary([F(This,Item,Col),0]) end, + [<<6:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({onGetItemAttr, F}, Acc) when is_function(F) -> + Fun = fun([This,Item]) -> + #wx_ref{type=wxListItemAttr,ref=ThisRef} = F(This,Item), + <<ThisRef:32/?UI>> + end, + [<<7:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({onGetItemColumnImage, F}, Acc) when is_function(F) -> + Fun = fun([This,Item, Col]) -> <<(F(This,Item,Col)):32/?I>> end, + [<<8:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, + BinOpt = list_to_binary(lists:foldl(MOpts, [<<0:32>>], Options)), + wxe_util:construct(~s, <<ParentRef:32/?UI, 0:32,BinOpt/binary>>). + +wxListCtrl_new_2>> + +<<EXPORT:Create create/2, create/3 Create:EXPORT>> + +<<Create +%% @spec (This::wxListCtrl(), Parent::wxWindow:wxWindow()) -> bool() +%% @equiv create(This,Parent, []) +create(This,Parent) + when is_record(This, wx_ref),is_record(Parent, wx_ref) -> + create(This,Parent, []). + +%% @spec (This::wxListCtrl(), Parent::wxWindow:wxWindow(), [Option]) -> bool() +%% Option = {winid, integer()} | +%% {pos, {X::integer(),Y::integer()}} | +%% {size, {W::integer(),H::integer()}} | +%% {style, integer()} | +%% {validator, wx:wx()} | +%% {onGetItemText, OnGetItemText} | +%% {onGetItemAttr, OnGetItemAttr} | +%% {onGetItemColumnImage, OnGetItemColumnImage} +%% +%% OnGetItemText = (This, Item, Column) -> wxString() +%% OnGetItemAttr = (This, Item) -> wxListItemAttr() +%% OnGetItemColumnImage = (This, Item, Column) -> integer() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistctrl.html#wxlistctrlcreate">external documentation</a>. +create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef}, Options) + when is_list(Options) -> + ?CLASS(ThisT,wxListCtrl), + ?CLASS(ParentT,wxWindow), + MOpts = fun({winid, Winid}, Acc) -> [<<1:32/?UI,Winid:32/?UI>>|Acc]; + ({pos, {PosX,PosY}}, Acc) -> [<<2:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; + ({size, {SizeW,SizeH}}, Acc) -> [<<3:32/?UI,SizeW:32/?UI,SizeH:32/?UI,0:32>>|Acc]; + ({style, Style}, Acc) -> [<<4:32/?UI,Style:32/?UI>>|Acc]; + ({validator, #wx_ref{type=ValidatorT,ref=ValidatorRef}}, Acc) -> ?CLASS(ValidatorT,wx),[<<5:32/?UI,ValidatorRef:32/?UI>>|Acc]; + (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, + BinOpt = list_to_binary(lists:foldl(MOpts, [<<0:32>>], Options)), + wxe_util:call(~s, + <<ThisRef:32/?UI,ParentRef:32/?UI, BinOpt/binary>>). + +Create>> diff --git a/lib/wx/api_gen/wx_gen.erl b/lib/wx/api_gen/wx_gen.erl index 2f20c42a5d..209de48496 100644 --- a/lib/wx/api_gen/wx_gen.erl +++ b/lib/wx/api_gen/wx_gen.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -30,6 +30,12 @@ -compile(export_all). +-define(DBGCF(Class, Func, Format, Args), + case {get(current_class), get(current_func)} of + {Class, Func} -> io:format("~p:~p: " ++ Format, [?MODULE,?LINE] ++ Args); + _ -> ok + end). + code() -> safe(fun gen_code/0,true). xml() -> safe(fun gen_xml/0,true). @@ -38,7 +44,7 @@ devcode() -> erase(),safe(fun gen_code/0,false). safe(What, QuitOnErr) -> try What(), - io:format("Completed succesfully~n~n", []), + io:format("Completed successfully~n~n", []), QuitOnErr andalso gen_util:halt(0) catch Err:Reason -> io:format("Error in ~p ~p~n", [get(current_class),get(current_func)]), @@ -957,17 +963,17 @@ erl_skip_opt(All=[Ms=[{_,{Len,_,_},_}|_]|R],Acc1=[{_,{N,_,_},_}|_], Acc2) -> end; erl_skip_opt([],Acc1,Acc2) -> [strip_ti(Acc1)|Acc2]. -erl_skip_opt2([F={_,{N,In,_},M=#method{where=Where}}|Ms],Acc1,Acc2,Check) -> +erl_skip_opt2([F={_,{N,In,_},M=#method{where=Where}}|Ms],Acc1,Acc2,Check) -> case N > 0 andalso lists:last(In) =:= opt_list of - true when Where =/= merged_c, Where =/= taylormade -> - case Check of - [] -> + true when Where =/= merged_c, Where =/= taylormade -> + case Check of + [] -> erl_skip_opt2(Ms,[F|Acc1],[M#method{where=erl_no_opt}|Acc2],[]); - _ -> + _ -> Skipped = reverse(tl(reverse(In))), T = fun({_,{_,Args,_},_}) -> true =:= types_differ(Skipped,Args) end, case lists:all(T, Check) of - true -> + true -> erl_skip_opt2(Ms,[F|Acc1], [M#method{where=erl_no_opt}|Acc2], Check); @@ -976,7 +982,7 @@ erl_skip_opt2([F={_,{N,In,_},M=#method{where=Where}}|Ms],Acc1,Acc2,Check) -> end end; _ -> - erl_skip_opt2(Ms,[F|Acc1],Acc2,[]) + erl_skip_opt2(Ms,[F|Acc1],Acc2,Check) end; erl_skip_opt2([],Acc1,Acc2,_) -> {Acc1,Acc2}. @@ -1025,7 +1031,6 @@ types_differ([{class,C1}|R1], [{class,C2}|R2]) -> true -> true; false -> -%% _ -> {class,C1,C2}; {class,C1,C2} -> {class,C1,C2}; diff --git a/lib/wx/api_gen/wx_gen_cpp.erl b/lib/wx/api_gen/wx_gen_cpp.erl index 4b33068d8f..4632fdbffe 100644 --- a/lib/wx/api_gen/wx_gen_cpp.erl +++ b/lib/wx/api_gen/wx_gen_cpp.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -19,7 +19,7 @@ %%%------------------------------------------------------------------- %%% File : wx_gen_cpp.erl %%% Author : Dan Gudmundsson <[email protected]> -%%% Description : +%%% Description : %%% %%% Created : 19 Feb 2007 by Dan Gudmundsson <[email protected]> %%%------------------------------------------------------------------- @@ -35,7 +35,7 @@ args/3, strip_name/2]). -import(wx_gen, [next_id/1]). -gen(Defs) -> +gen(Defs) -> open_write("../c_src/gen/wxe_derived_dest.h"), c_copyright(), w("~n/***** This file is generated do not edit ****/~n~n", []), @@ -49,48 +49,26 @@ gen(Defs) -> open_write("../c_src/gen/wxe_macros.h"), c_copyright(), - gen_macros(), + gen_macros(), close(), open_write("../c_src/gen/wxe_init.cpp"), c_copyright(), build_enums(), close(), - + build_events(), Res. - + gen_derived_dest(Defs) -> [gen_derived_dest_2(Class) || Class <- Defs], - - UglySkipList = ["wxCaret", "wxCalendarDateAttr", - "wxFileDataObject", "wxTextDataObject", "wxBitmapDataObject" - ], - - ?WTC("gen_derived_dest"), - w("void WxeApp::delete_object(void *ptr, wxeRefData *refd) {~n", []), - w(" switch(refd->type) {~n", []), - Case = fun(#class{name=Class, id=Id, abstract=IsAbs, parent=P}) when P /= "static" -> - UglyWorkaround = lists:member(Class, UglySkipList), - case hd(reverse(wx_gen_erl:parents(Class))) of - root when IsAbs == false, UglyWorkaround == false -> - w(" case ~p: delete (~s *) ptr; break;~n", [Id, Class]); - root when IsAbs == false, UglyWorkaround == true -> - w(" case ~p: /* delete (~s *) ptr;" - "These objects must be deleted by owner object */ " - "break;~n", [Id, Class]); - _ -> ok - end; - (_) -> ok - end, - [Case(Class) || Class <- Defs], - w(" default: delete (wxObject *) ptr;~n", []), - w("}}~n~n", []). + ok. gen_derived_dest_2(C=#class{name=Class}) -> - case is_derived(C) of - true -> - ?WTC("gen_derived_dest_2"), + ?WTC("gen_derived_dest_2"), + Derived = is_derived(C), + TaylorMade = taylormade_class(C), + if Derived andalso (TaylorMade =:= false) -> w("class E~s : public ~s {~n",[Class,Class]), case Class of "wxGLCanvas" -> %% Special for cleaning up gl context @@ -101,15 +79,32 @@ gen_derived_dest_2(C=#class{name=Class}) -> end, gen_constructors(C), w("};~n~n", []); - false -> + TaylorMade /= false -> + w("~s~n", [TaylorMade]); + true -> ignore end. +taylormade_class(#class{name=CName, methods=Ms}) -> + TaylorMade = lists:any(fun([#method{where=taylormade}|_]) -> true; + (_) -> false + end, Ms), + case TaylorMade of + false -> false; + true -> + {ok, Bin} = file:read_file(filename:join([wx_extra, CName ++".c_src"])), + Src = binary_to_list(Bin), + case gen_util:get_taylor_made(Src, CName ++ "_class") of + nomatch -> false; + {match, [Str0]} -> Str0 + end + end. + gen_constructors(#class{name=Class, methods=Ms0}) -> Ms = lists:append(Ms0), Cs = lists:filter(fun(#method{method_type=MT}) -> MT =:= constructor end, Ms), [gen_constructor(Class, Const) || Const <- Cs]. - + gen_constructor(_Class, #method{where=merged_c}) -> ok; gen_constructor(_Class, #method{where=erl_no_opt}) -> ok; gen_constructor(Class, _M=#method{params=Ps}) -> @@ -119,7 +114,7 @@ gen_constructor(Class, _M=#method{params=Ps}) -> HaveMergedType = fun(#param{type={merged,_,_,_,_,_,_}}) -> true; (_) -> false end, ?WTC("gen_constructor"), case lists:any(HaveMergedType, Ps) of - false -> + false -> w(" E~s(~s) : ~s(~s) {};~n", [Class,args(Gen1,",",Ps),Class,args(CallA,",",Ps)]); true -> @@ -141,9 +136,9 @@ gen_type(#type{name=Type, ref=undefined, single=array, mod=Mod},_) -> mods(Mod) ++ to_string(Type) ++ " * "; gen_type(#type{name=Type, ref=undefined, mod=Mod},_) -> mods(Mod) ++ to_string(Type) ++ " "; -gen_type({merged, _, T1, _,_, _T2,_}, 1) -> +gen_type({merged, _, T1, _,_, _T2,_}, 1) -> gen_type(T1,error); -gen_type({merged, _, _T1,_, _, T2,_}, 2) -> +gen_type({merged, _, _T1,_, _, T2,_}, 2) -> gen_type(T2,error). gen_funcs(Defs) -> @@ -168,7 +163,7 @@ gen_funcs(Defs) -> %% w(" case WXE_REMOVE_PORT:~n", []), %% w(" { destroyMemEnv(Ecmd.port); } break;~n", []), w(" case DESTROY_OBJECT: {~n"), - w(" wxObject *This = (wxObject *) getPtr(bp,memenv); "), + w(" wxObject *This = (wxObject *) getPtr(bp,memenv); "), w(" if(This) {"), w(" ((WxeApp *) wxTheApp)->clearPtr((void *) This);~n"), w(" delete This; }~n } break;~n"), @@ -203,16 +198,39 @@ gen_funcs(Defs) -> w(" error.addTupleCount(2);~n"), w(" error.addTupleCount(3);~n"), w(" error.send();~n"), - w("}} /* The End */~n"), + w("}} /* The End */~n~n~n"), + + UglySkipList = ["wxCaret", "wxCalendarDateAttr", + "wxFileDataObject", "wxTextDataObject", "wxBitmapDataObject" + ], + + w("void WxeApp::delete_object(void *ptr, wxeRefData *refd) {~n", []), + w(" switch(refd->type) {~n", []), + Case = fun(#class{name=Class, id=Id, abstract=IsAbs, parent=P}) when P /= "static" -> + UglyWorkaround = lists:member(Class, UglySkipList), + case hd(reverse(wx_gen_erl:parents(Class))) of + root when IsAbs == false, UglyWorkaround == false -> + w(" case ~p: delete (~s *) ptr; break;~n", [Id, Class]); + root when IsAbs == false, UglyWorkaround == true -> + w(" case ~p: /* delete (~s *) ptr;" + "These objects must be deleted by owner object */ " + "break;~n", [Id, Class]); + _ -> ok + end; + (_) -> ok + end, + [Case(Class) || Class <- Defs], + w(" default: delete (wxObject *) ptr;~n", []), + w("}}~n~n", []), Res. - + gen_class(C=#class{name=Name,methods=Ms,options=Opts}) -> put(current_class, Name), - NewMs = + NewMs = case lists:member(taylormade, Opts) of true -> {ok, Bin} = file:read_file(filename:join([wx_extra,Name++".c_src"])), - ?WTC("gen_class"), + ?WTC("gen_class"), w("~s~n", [binary_to_list(Bin)]), Ms; false -> @@ -220,13 +238,13 @@ gen_class(C=#class{name=Name,methods=Ms,options=Opts}) -> {value, {ifdef, What}} -> w("#if ~p~n",[What]), Methods = lists:flatten(Ms), - MsR = [gen_method(Name,M) || + MsR = [gen_method(Name,M) || M <- lists:keysort(#method.id, Methods)], w("#endif // ~p~n",[What]), MsR; false -> Methods = lists:flatten(Ms), - [gen_method(Name,M) || + [gen_method(Name,M) || M <- lists:keysort(#method.id, Methods)] end end, @@ -234,15 +252,19 @@ gen_class(C=#class{name=Name,methods=Ms,options=Opts}) -> C#class{methods=NewMs}. gen_method(_CName, M=#method{where=erl_no_opt}) -> M; -gen_method(CName, M=#method{where=taylormade, name=Name, id=Id}) -> +gen_method(CName, M=#method{where=taylormade, name=Name, id=Id}) -> {ok, Bin} = file:read_file(filename:join([wx_extra, CName ++".c_src"])), - Str0 = binary_to_list(Bin), + Src = binary_to_list(Bin), %% io:format("C++ Class ~p ~p~n", [CName, Name]), - - {match, [Str1]} = re:run(Str0, "<<"++Name++"(.*)"++Name++">>", - [dotall, {capture, all_but_first, list}]), + Str = case gen_util:get_taylor_made(Src, Name) of + nomatch -> + {match, [Str0]} = gen_util:get_taylor_made(Src, wx_gen_erl:get_unique_name(Id)), + Str0; + {match, [Str0]} -> + Str0 + end, ?WTC("gen_method"), - w(Str1, [wx_gen_erl:get_unique_name(Id)]), + w(Str, [wx_gen_erl:get_unique_name(Id)]), M; gen_method(CName, M=#method{name=N,params=[Ps],method_type=destructor,id=MethodId}) -> case hd(reverse(wx_gen_erl:parents(CName))) of @@ -253,7 +275,7 @@ gen_method(CName, M=#method{name=N,params=[Ps],method_type=destructor,id=MethodI w(" if(This) {", []), w(" ((WxeApp *) wxTheApp)->clearPtr((void *) This);~n", []), w(" delete This;}~n", []), - free_args(), + free_args(), w(" break;~n}~n", []); object -> %% Use default ignore @@ -266,7 +288,7 @@ gen_method(CName, M=#method{name=N,params=Ps0,type=T,method_type=MT,id=MethodId w("case ~s: { // ~s::~s~n", [wx_gen_erl:get_unique_name(MethodId),CName,N]), Ps1 = declare_variables(void, Ps0), {Ps2,Align} = decode_arguments(Ps1), - Opts = [Opt || Opt = #param{def=Def,in=In,where=Where} <- Ps2, + Opts = [Opt || Opt = #param{def=Def,in=In,where=Where} <- Ps2, Def =/= none, In =/= false, Where =/= c], decode_options(Opts, Align), case gen_util:get_hook(c, M#method.pre_hook) of @@ -292,7 +314,7 @@ declare_variables(T, Ps) -> declare_var(P = #param{where=erl}) -> P; declare_var(P = #param{where=this}) -> P; -declare_var(P = #param{name=Name,def=Def,type=Type,in=true}) when Def =/= none -> +declare_var(P = #param{name=Name,def=Def,type=Type,in=true}) when Def =/= none -> declare_type(Name, true, Def, Type), P; declare_var(P = #param{in=In}) when In =/= false -> P; @@ -304,7 +326,7 @@ declare_type(N,false,_,#type{name="wxArrayInt"}) -> w(" wxArrayInt ~s;~n", [N]); declare_type(N,false,_,#type{name="wxArrayString"}) -> w(" wxArrayString ~s;~n", [N]); -declare_type(N,false,_,#type{base=Base,single=true,name=Type,by_val=false,mod=Mod}) +declare_type(N,false,_,#type{base=Base,single=true,name=Type,by_val=false,mod=Mod}) when Base =:= int; Base =:= long; Base =:= float; Base =:= double -> w(" ~s~s ~s;~n", [mods(Mod),Type,N]); declare_type(N,false,_,#type{base={enum,_},single=true,name=Type,by_val=false,mod=Mod}) -> @@ -315,7 +337,7 @@ declare_type(N,false,_,#type{name="wxDateTime"}) -> w(" wxDateTime ~s;~n", [N]); declare_type(N,false,_,#type{name=Type, base=int64, ref=reference}) -> w(" ~s ~s;~n", [Type,N]); -declare_type(N,true,Def,#type{base=Base,single=true,name=Type,by_val=true}) +declare_type(N,true,Def,#type{base=Base,single=true,name=Type,by_val=true}) when Base =:= int; Base =:= long; Base =:= float; Base =:= double; Base =:= bool -> w(" ~s ~s=~s;~n", [Type,N,Def]); declare_type(N,true,Def,#type{base={comp,_,_},single=true,name=Type,mod=Mod,ref={pointer,1}}) -> @@ -328,7 +350,7 @@ declare_type(N,true,Def,#type{base={class,_},single=true,name=Type,ref={pointer, w(" ~s~s * ~s=~s;~n", [mods(Mod),Type,N,Def]); declare_type(N,true,Def,#type{base={class,_},single=true,name=Type,ref=reference,mod=Mod}) -> w(" ~s~s * ~s= &~s;~n", [mods(Mod),Type,N,Def]); -declare_type(N,true,Def,#type{base=Base,single=true,name=Type,by_val=false,ref={pointer,1}}) +declare_type(N,true,Def,#type{base=Base,single=true,name=Type,by_val=false,ref={pointer,1}}) when Base =:= int; Base =:= long; Base =:= float; Base =:= double; Base =:= bool -> w(" ~s *~s=~s;~n", [Type,N,Def]); declare_type(N,true,Def,#type{single=true,name="wxArtClient"}) -> @@ -345,7 +367,7 @@ declare_type(N,true,Def,#type{name=Type, ref={pointer,2}}) -> %% xxxx w(" ~s ** ~s = ~s;~n", [Type,N,Def]); declare_type(N,true,Def,#type{name=Type, single=array, ref={pointer,1}}) -> - w(" int * ~sLen = 0;~n", [N]), + w(" int * ~sLen = 0;~n", [N]), w(" ~s * ~s = ~s;~n", [Type,N,Def]); declare_type(N,true,"",#type{name="wxArrayString", single=array, ref=reference}) -> w(" wxArrayString ~s;~n", [N]); @@ -363,12 +385,12 @@ decode_options(Opts, Align) -> decode_opt(#param{name=Name,type=Type}, N) -> w(" case ~p: {bp += 4;~n", [N]), - Align = decode_arg(Name,Type,opt,1), + Align = decode_arg(Name,Type,opt,1), align(Align, 64), w(" } break;~n", []), N+1. -decode_arguments(Ps0) -> +decode_arguments(Ps0) -> lists:mapfoldl(fun decode_arg/2,0,Ps0). store_free(N) -> @@ -380,7 +402,7 @@ store_free(N) -> free_args() -> case get(free_args) of undefined -> ignore; - List -> + List -> erase(free_args), [w(" driver_free(~s);~n", [Arg]) || Arg <- List] end. @@ -388,7 +410,7 @@ free_args() -> decode_arg(P = #param{where=erl},A) -> {P,A}; decode_arg(P = #param{where=c},A) -> {P,A}; decode_arg(P = #param{in=false},A) -> {P,A}; -decode_arg(P = #param{def=Def},A) when Def =/= none -> {P,A}; +decode_arg(P = #param{def=Def},A) when Def =/= none -> {P,A}; decode_arg(P = #param{name=Name,type=Type},A0) -> A = decode_arg(Name, Type, arg, A0), {P, A}. @@ -426,22 +448,22 @@ decode_arg(N,#type{base=float,single=true,name=Type},arg,A0) -> align(A0,32); decode_arg(N,#type{base=double,single=true,name=Type},Arg,A0) -> A = align(A0,64), - case Arg of + case Arg of arg -> w(" ~s * ~s = (~s *) bp; bp += 8;~n", [Type,N,Type]); opt -> w(" ~s = * (~s *) bp; bp += 8;~n", [N,Type]) end, A; decode_arg(N,#type{base=bool,single=true,name=Type},Arg,A0) -> - case Arg of + case Arg of arg -> w(" bool * ~s = (~s *) bp; bp += 4;~n", [N,Type]); opt -> w(" ~s = *(~s *) bp; bp += 4;~n", [N,Type]) end, align(A0,32); decode_arg(N,#type{base={enum,Type},single=true},Arg,A0) -> - wa(" ~s ", [enum_type(Type)], "~s = *(~s *) bp; bp += 4;;~n",[N, enum_type(Type)], Arg), + wa(" ~s ", [enum_type(Type)], "~s = *(~s *) bp; bp += 4;;~n",[N, enum_type(Type)], Arg), align(A0,32); decode_arg(N,#type{base={comp,"wxDateTime",List},single=true,name=Type,ref=Ref},Arg,A0) -> - Decl = fun({int,Spec}) -> + Decl = fun({int,Spec}) -> w(" int * ~s~s = (int *) bp; bp += 4;~n", [N,Spec]) end, align(A0,32), @@ -452,15 +474,15 @@ decode_arg(N,#type{base={comp,"wxDateTime",List},single=true,name=Type,ref=Ref}, end, case Arg of arg -> w(" ~s ~s = ~s(~s);~n", [Type,N,Type,args(Name, ",", List)]); - opt when Ref =:= {pointer,1} -> - w(" ~sTmp = ~s(~s); ~s = & ~sTmp;~n", + opt when Ref =:= {pointer,1} -> + w(" ~sTmp = ~s(~s); ~s = & ~sTmp;~n", [N,Type,args(Name, ",", List), N,N]); opt -> w(" ~s = ~s(~s);~n", [N,Type,args(Name, ",", List)]) end, (A0+length(List)) rem 2; decode_arg(N,#type{base={comp,_,List},single=true,name=Type,ref=Ref},Arg,A0) -> - Decl = fun({int,Spec}) -> + Decl = fun({int,Spec}) -> w(" int * ~s~s = (int *) bp; bp += 4;~n", [N,Spec]); ({double, Spec}) -> w(" wxDouble * ~s~s = (wxDouble *) bp; bp += 8;~n", [N,Spec]) @@ -473,8 +495,8 @@ decode_arg(N,#type{base={comp,_,List},single=true,name=Type,ref=Ref},Arg,A0) -> Name = fun({_,Spec}) -> "*"++N++Spec end, case Arg of arg -> w(" ~s ~s = ~s(~s);~n", [Type,N,Type,args(Name, ",", List)]); - opt when Ref =:= {pointer,1} -> - w(" ~sTmp = ~s(~s); ~s = & ~sTmp;~n", + opt when Ref =:= {pointer,1} -> + w(" ~sTmp = ~s(~s); ~s = & ~sTmp;~n", [N,Type,args(Name, ",", List), N,N]); opt -> w(" ~s = ~s(~s);~n", [N,Type,args(Name, ",", List)]) @@ -483,7 +505,7 @@ decode_arg(N,#type{base={comp,_,List},single=true,name=Type,ref=Ref},Arg,A0) -> {int, _} -> (A0+length(List)) rem 2; {double, _} -> 0 end; - + decode_arg(N,#type{name=Class="wxTreeItemId",single=true},Arg,A0) -> A = align(A0,64), wa(" ~s ",[Class],"~s = wxTreeItemId((void *) *(wxUint64 *) bp); bp += 8;~n",[N],Arg), @@ -492,7 +514,7 @@ decode_arg(N,#type{name=Class="wxTreeItemIdValue",single=true},Arg,A0) -> A = align(A0,64), wa(" ~s ",[Class],"~s = (~s) * (wxUint64 *) bp; bp += 8;~n",[N,Class],Arg), A; -decode_arg(N,#type{name="wxChar", single=S},Arg,A0) +decode_arg(N,#type{name="wxChar", single=S},Arg,A0) when S =/= true -> w(" int * ~sLen = (int *) bp; bp += 4;~n", [N]), wa(" wxString", []," ~s = wxString(bp, wxConvUTF8);~n", [N],Arg), @@ -501,7 +523,7 @@ decode_arg(N,#type{name="wxChar", single=S},Arg,A0) decode_arg(N,#type{base=string, name="wxFileName"},Arg,A0) -> w(" int * ~sLen = (int *) bp; bp += 4;~n", [N]), wa(" wxString", []," ~sStr = wxString(bp, wxConvUTF8);~n", [N],Arg), - w(" bp += *~sLen+((8-((~p+ *~sLen) & 7)) & 7);~n", [N,4*((A0+1) rem 2),N]), + w(" bp += *~sLen+((8-((~p+ *~sLen) & 7)) & 7);~n", [N,4*((A0+1) rem 2),N]), w(" wxFileName ~s = wxFileName(~sStr);~n",[N,N]), 0; decode_arg(N,#type{base=string},Arg,A0) -> @@ -541,7 +563,7 @@ decode_arg(N,#type{name="wxArrayDouble"},arg,A0) -> decode_arg(_N,#type{base=eventType},_Arg,A0) -> %% w(" int * ~sLen = (int *) bp; bp += 4;~n", [N]), %% case Arg of -%% arg -> +%% arg -> %% w(" int ~s = wxeEventTypeFromAtom(bp);bp += *~sLen;~n",[N,N]), %% w(" char *class_name = bp;~n", []), %% w(" wxeCallbackData * Evt_cb = new wxeCallbackData(Ecmd.caller,This,class_name);~n", @@ -551,7 +573,7 @@ decode_arg(_N,#type{base=eventType},_Arg,A0) -> decode_arg(N,#type{name=Type,base=binary,mod=Mod0},Arg,A0) -> Mod = mods([M || M <- Mod0]), case Arg of - arg -> + arg -> w(" ~s~s * ~s = (~s~s*) Ecmd.bin[~p]->base;~n", [Mod,Type,N,Mod,Type, next_id(bin_count)]); opt -> @@ -564,10 +586,10 @@ decode_arg(N,#type{base={term,"wxTreeItemData"},mod=Mod0},Arg,A0) -> Type = "wxETreeItemData", BinCnt = next_id(bin_count), case Arg of - arg -> + arg -> w(" ~s~s * ~s = new ~s(Ecmd.bin[~p]->size, Ecmd.bin[~p]->base);~n", [Mod,Type,N,Type,BinCnt,BinCnt]); - opt -> + opt -> w(" ~s = new ~s(Ecmd.bin[~p]->size, Ecmd.bin[~p]->base);~n", [N,Type,BinCnt,BinCnt]) end, @@ -576,10 +598,10 @@ decode_arg(N,#type{name=Type,base={term,_},mod=Mod0},Arg,A0) -> Mod = mods([M || M <- Mod0]), BinCnt = next_id(bin_count), case Arg of - arg -> + arg -> w(" ~s~s * ~s = new ~s(Ecmd.bin[~p]);~n", [Mod,Type,N,Type,BinCnt]); - opt -> + opt -> w(" ~s = new ~s(Ecmd.bin[~p]);~n", [N,Type,BinCnt]) end, @@ -588,17 +610,17 @@ decode_arg(N,#type{single=array,base=int},Arg,A0) -> case Arg of arg -> w(" int * ~sLen = (int *) bp; bp += 4;~n", [N]), - w(" int * ~s = (int *) bp; bp += *~sLen*4+((~p+ *~sLen)%2 )*4;~n", + w(" int * ~s = (int *) bp; bp += *~sLen*4+((~p+ *~sLen)%2 )*4;~n", [N,N,(A0+1) rem 2,N]); - opt -> + opt -> w(" ~sLen = (int *) bp; bp += 4;~n", [N]), - w(" ~s = (int *) bp; bp += *~sLen*4+((~p+ *~sLen)%2 )*4;~n", + w(" ~s = (int *) bp; bp += *~sLen*4+((~p+ *~sLen)%2 )*4;~n", [N,N,(A0+1) rem 2,N]) end, 0; decode_arg(N,#type{by_val=true,single=array,base={comp,Class="wxPoint",_}},arg,A0) -> - w(" int * ~sLen = (int *) bp; bp += 4;~n", [N]), - w(" ~s *~s;~n",[Class,N]), + w(" int * ~sLen = (int *) bp; bp += 4;~n", [N]), + w(" ~s *~s;~n",[Class,N]), w(" ~s = (~s *) driver_alloc(sizeof(~s) * *~sLen);~n",[N,Class,Class,N]), store_free(N), w(" for(int i=0; i < *~sLen; i++) {~n", [N]), @@ -629,13 +651,13 @@ decode_arg(Name,T, Arg,_A) -> align(0, 32) -> 1; align(1, 32) -> 0; align(0, 64) -> 0; -align(1, 64) -> +align(1, 64) -> w(" bp += 4; /* Align */~n"), 0; align(N,Sz) -> align(N rem 2, Sz). -call_wx(_N,{constructor,_},#type{base={class,RClass}},Ps) -> +call_wx(_N,{constructor,_},#type{base={class,RClass}},Ps) -> #class{id=Id} = ClassDef = get({class,RClass}), Class = case is_derived(ClassDef) of true -> "E" ++ RClass; @@ -648,8 +670,8 @@ call_wx(_N,{constructor,_},#type{base={class,RClass}},Ps) -> case is_dialog(RClass) of true -> 2; %% Dialogs must be closed first event before windows false -> 0 - end; - false -> + end; + false -> case hd(reverse(wx_gen_erl:parents(RClass))) of root -> Id; _ -> 1 @@ -682,10 +704,10 @@ call_wx(N,{static,Class},Type,Ps) -> return_res(void) -> {"", ""}; return_res(Type = #type{mod=Mod}) -> case lists:member(const, Mod) of - true -> - {Beg, End} = return_res1(Type), + true -> + {Beg, End} = return_res1(Type), {"const " ++ Beg, End}; - _ -> + _ -> return_res1(Type) end. @@ -695,8 +717,8 @@ return_res1(#type{name=Type,ref={pointer,_}}) -> {Type ++ " * Result = (" ++ Type ++ "*)", ""}; return_res1(#type{name=Type,single=true,ref=reference}) -> {Type ++ " * Result = &", ""}; -return_res1(#type{name=Type,single=true,by_val=true}) - when is_atom(Type) -> +return_res1(#type{name=Type,single=true,by_val=true}) + when is_atom(Type) -> {atom_to_list(Type) ++ " Result = ", ""}; return_res1(#type{name=Type="wxArrayInt"}) -> {Type ++ " Result = ", ""}; @@ -705,19 +727,19 @@ return_res1(#type{name=Type,base={class,_},single=list,ref=reference}) -> return_res1(#type{name=Type,base={comp,_,_},single=array,by_val=true}) -> {Type ++ " Result = ", ""}; return_res1(#type{name=Type,single=true,by_val=true, base={class, _}}) -> - %% Memory leak !!!!!! XXXX BUGBUG FIXME or doument!! - case Type of + %% Memory leak !!!!!! XXXX BUGBUG FIXME or doument!! + case Type of "wxImage" -> ok; "wxFont" -> ok; "wxBitmap" -> ok; "wxIcon" -> ok; "wxGraphics" ++ _ -> ok; _ -> - io:format("~s::~s Building return value of temp ~s~n", + io:format("~s::~s Building return value of temp ~s~n", [get(current_class),get(current_func),Type]) end, %% #class{id=Id} = get({class,Type}), - {Type ++ " * Result = new " ++ Type ++ "(", "); newPtr((void *) Result," + {Type ++ " * Result = new " ++ Type ++ "(", "); newPtr((void *) Result," ++ "3, memenv);"}; return_res1(#type{base={enum,_Type},single=true,by_val=true}) -> {"int Result = " , ""}; @@ -730,7 +752,7 @@ return_res1(#type{name=Type,single=true,by_val=true}) -> filter(Ps) -> lists:filter(fun filter_arg/1, Ps). -filter_arg(#param{where=erl}) -> false; +filter_arg(#param{where=erl}) -> false; filter_arg(#param{where=this}) -> false; filter_arg(#param{}) -> true. %%filter_arg(#param{def=Def, in=In}) -> Def =:= none orelse In =:= false. @@ -739,20 +761,20 @@ filter_arg(#param{}) -> true. call_arg(#param{where=c, alt={length,Alt}}) when is_list(Alt) -> "*" ++ Alt ++ "Len"; call_arg(#param{where=c, alt={size,Id}}) when is_integer(Id) -> - %% It's a binary + %% It's a binary "Ecmd.bin["++ integer_to_list(Id) ++ "]->size"; -call_arg(#param{name=N,def=Def,type=#type{name=Type,by_val=true,single=true,base=Base}}) - when Base =:= int; Base =:= long; Base =:= float; Base =:= double; Base =:= bool -> +call_arg(#param{name=N,def=Def,type=#type{name=Type,by_val=true,single=true,base=Base}}) + when Base =:= int; Base =:= long; Base =:= float; Base =:= double; Base =:= bool -> case Def of none -> "(" ++ to_string(Type) ++ ") *" ++ N; _ -> N end; -call_arg(#param{name=N,type=#type{base={enum,Type}, by_val=true,single=true}}) -> +call_arg(#param{name=N,type=#type{base={enum,Type}, by_val=true,single=true}}) -> "(" ++ enum_type(Type) ++") " ++ N; call_arg(#param{name=N,type=#type{base={class,_},by_val=true,single=true}}) -> "*" ++ N; call_arg(#param{name=N,type=#type{base={class,_},ref=reference,single=true}}) -> "*" ++ N; -call_arg(#param{name=N,type=#type{base=eventType}}) -> +call_arg(#param{name=N,type=#type{base=eventType}}) -> N ++ ", (wxObjectEventFunction)(wxEventFunction) &WxeApp::handle_evt, Evt_cb, this"; call_arg(#param{name=N,type=#type{by_val=true, single=_False}}) -> N; call_arg(#param{name=N,def=Def,type=#type{by_val=false, ref={pointer,2}}}) @@ -760,20 +782,20 @@ call_arg(#param{name=N,def=Def,type=#type{by_val=false, ref={pointer,2}}}) call_arg(#param{name=N,type=#type{by_val=false, ref={pointer,2}}}) -> "&" ++ N; call_arg(#param{name=N,in=false,type=#type{ref=reference, single=true}}) -> N; call_arg(#param{name=N,in=false,type=#type{by_val=false, single=true}}) -> "&" ++ N; -call_arg(#param{name=N,def=Def,type=#type{base={comp,_,_},ref={pointer,1},single=true}}) +call_arg(#param{name=N,def=Def,type=#type{base={comp,_,_},ref={pointer,1},single=true}}) when Def =:= none -> "&" ++N; call_arg(#param{name=N,type=#type{by_val=false}}) -> N; call_arg(#param{name=N,type={merged,_,#type{base={class,_},single=true, by_val=ByVal, - ref=Ref},_,_,_,_}}) - when ByVal =:= true; Ref =:= reference -> + ref=Ref},_,_,_,_}}) + when ByVal =:= true; Ref =:= reference -> "*" ++ N; -call_arg(#param{def=Def, type=void}) when Def =/= none -> Def; +call_arg(#param{def=Def, type=void}) when Def =/= none -> Def; call_arg(#param{name=N,type=#type{base={ref,_},by_val=true,single=true}}) -> N; call_arg(#param{name=N,type={merged,_,_,_,_,_,_}}) -> N. -%% call_arg(#param{name=N,type=#type{base=Tuple,ref=reference}}) +%% call_arg(#param{name=N,type=#type{base=Tuple,ref=reference}}) %% when is_tuple(Tuple) -> "&" ++ N; to_string(Type) when is_atom(Type) -> atom_to_list(Type); @@ -781,19 +803,19 @@ to_string(Type) when is_list(Type) -> Type. virtual_dest(#class{abstract=true, parent="root"}) -> false; virtual_dest(#class{abstract=true, parent="object"}) -> true; -virtual_dest(#class{abstract=true, parent=Parent}) -> +virtual_dest(#class{abstract=true, parent=Parent}) -> virtual_dest(get({class,Parent})); virtual_dest(#class{methods=Ms, parent=Parent}) -> case lists:keysearch(destructor,#method.method_type, lists:append(Ms)) of {value, #method{method_type=destructor, virtual=Virtual}} -> case Virtual of - undefined -> + undefined -> case get({class,Parent}) of - undefined -> + undefined -> case Parent of - "object" -> + "object" -> true; - "root" -> + "root" -> false; _ -> io:format("Error: ~p~n",[Parent]), @@ -802,10 +824,10 @@ virtual_dest(#class{methods=Ms, parent=Parent}) -> PClass -> virtual_dest(PClass) end; - _ -> + _ -> Virtual end; - false -> + false -> false end. @@ -819,24 +841,24 @@ is_derived(#class{abstract=true}) -> false; is_derived(C = #class{}) -> virtual_dest(C). is_window(Class) -> - lists:member("wxWindow", wx_gen_erl:parents(Class)). + lists:member("wxWindow", wx_gen_erl:parents(Class)). is_dialog(Class) -> lists:member("wxDialog", wx_gen_erl:parents(Class)). - + build_return_vals(Type,Ps) -> HaveType = case Type of void -> 0; _ -> 1 end, NoOut = lists:sum([1 || #param{in=In} <- Ps, In =/= true]) + HaveType, OutTupSz = if NoOut > 1 -> NoOut; true -> 0 end, - + build_ret_types(Type,Ps), - if + if OutTupSz > 1 -> w(" rt.addTupleCount(~p);~n",[OutTupSz]); true -> ignore - end, + end, Ps. -build_ret_types(void,Ps) -> +build_ret_types(void,Ps) -> Calc = fun(#param{name=N,in=False,type=T}, Free) when False =/= true -> case build_ret(N, False, T) of ok -> Free; @@ -845,7 +867,7 @@ build_ret_types(void,Ps) -> (_, Free) -> Free end, lists:foldl(Calc, [], Ps); -build_ret_types(Type,Ps) -> +build_ret_types(Type,Ps) -> Free = case build_ret("Result", out, Type) of ok -> []; FreeStr -> [FreeStr] @@ -854,8 +876,8 @@ build_ret_types(Type,Ps) -> case build_ret(N, False, T) of ok -> FreeAcc; FreeMe -> [FreeMe|FreeAcc] - end; - (_, FreeAcc) -> FreeAcc + end; + (_, FreeAcc) -> FreeAcc end, lists:foldl(Calc, Free, Ps). @@ -898,17 +920,17 @@ build_ret(Name,_,#type{name="wxArrayInt"}) -> build_ret(Name,_,#type{base={comp,_,_},single=array}) -> w(" for(unsigned int i=0; i < ~s.GetCount(); i++) {~n", [Name]), w(" rt.add(~s[i]);~n }~n",[Name]), - w(" rt.endList(~s.GetCount());~n",[Name]); + w(" rt.endList(~s.GetCount());~n",[Name]); build_ret(Name,_,#type{name=List,single=list,base={class,Class}}) -> w(" int i=0;~n"), w(" for(~s::const_iterator it = ~s.begin(); it != ~s.end(); ++it) {~n", [List, Name, Name]), w(" ~s * ~sTmp = *it;~n", [Class,Name]), w(" rt.addRef(getRef((void *)~sTmp,memenv), \"~s\"); i++;}~n",[Name,Class]), - w(" rt.endList(~s.GetCount());~n",[Name]); - + w(" rt.endList(~s.GetCount());~n",[Name]); + build_ret(Name,_,#type{name="wxArrayTreeItemIds"}) -> - w(" for(unsigned int i=0; i < ~s.GetCount(); i++) {~n", [Name]), + w(" for(unsigned int i=0; i < ~s.GetCount(); i++) {~n", [Name]), w(" rt.add((wxUIntPtr *)~s[i].m_pItem);}~n",[Name]), w(" rt.endList(~s.GetCount());~n",[Name]); @@ -923,10 +945,10 @@ build_ret(Name,_,#type{name="wxArrayString", single=array}) -> w(" rt.add(~s);~n", [Name]); build_ret(Name,In,T) -> ?error({nyi, Name,In, T}). - + mods([const|R]) -> "const " ++ mods(R); mods([unsigned|R]) -> "unsigned " ++ mods(R); -mods([]) -> "". +mods([]) -> "". build_enums() -> Tree = get(consts), @@ -935,13 +957,13 @@ build_enums() -> w("#include \"../wxe_impl.h\"~n"), w("#include \"wxe_macros.h\"~n"), w("#include \"../wxe_return.h\"~n"), - w("void WxeApp::init_nonconsts(wxeMemEnv *memenv, ErlDrvTermData caller) {~n"), + w("void WxeApp::init_nonconsts(wxeMemEnv *memenv, ErlDrvTermData caller) {~n"), NotConsts = [NC || NC = #const{is_const=false} <- gb_trees:values(Tree)], Size = length(NotConsts), GVars = get(gvars), GSize = length(GVars), w(" wxeReturn rt = wxeReturn(WXE_DRV_PORT, caller);~n"), - w(" rt.addAtom((char*)\"wx_consts\");~n"), + w(" rt.addAtom((char*)\"wx_consts\");~n"), [build_enum(NConst) || NConst <- lists:keysort(#const.val, NotConsts)], _Cnt = foldl(fun(Gvar, I) -> build_gvar(Gvar,I) end, 0, lists:sort(GVars)), w(" rt.endList(~p);~n", [Size+GSize]), @@ -968,9 +990,9 @@ build_gvar({Name, Class, _Id}, Cnt) -> Cnt+1. gen_macros() -> - w("#include <wx/caret.h>~n"), %% Arrg wxw forgot?? some files - w("#include <wx/tooltip.h>~n"), - w("#include <wx/gbsizer.h>~n"), + w("#include <wx/caret.h>~n"), %% Arrg wxw forgot?? some files + w("#include <wx/tooltip.h>~n"), + w("#include <wx/gbsizer.h>~n"), w("#include <wx/splash.h>~n"), w("#include <wx/grid.h>~n"), w("#include <wx/image.h>~n"), @@ -995,15 +1017,15 @@ gen_macros() -> w("#include <wx/stc/stc.h>~n"), w("#include <wx/minifram.h>~n"), w("#include <wx/sashwin.h>~n"), - w("#include <wx/laywin.h>~n"), - w("#include <wx/graphics.h>~n"), - w("#include <wx/aui/aui.h>~n"), - w("#include <wx/datectrl.h>~n"), - w("#include <wx/filepicker.h>~n"), - w("#include <wx/fontpicker.h>~n"), - w("#include <wx/clrpicker.h>~n"), - w("#include <wx/statline.h>~n"), - w("#include <wx/clipbrd.h>~n"), + w("#include <wx/laywin.h>~n"), + w("#include <wx/graphics.h>~n"), + w("#include <wx/aui/aui.h>~n"), + w("#include <wx/datectrl.h>~n"), + w("#include <wx/filepicker.h>~n"), + w("#include <wx/fontpicker.h>~n"), + w("#include <wx/clrpicker.h>~n"), + w("#include <wx/statline.h>~n"), + w("#include <wx/clipbrd.h>~n"), w("#include <wx/splitter.h>~n"), w("#include <wx/choicebk.h>~n"), w("#include <wx/toolbook.h>~n"), @@ -1012,14 +1034,14 @@ gen_macros() -> w("#include <wx/html/htmlwin.h>~n"), w("#include <wx/html/htmlcell.h>~n"), w("#include <wx/filename.h>~n"), - + w("~n~n", []), w("#ifndef wxICON_DEFAULT_BITMAP_TYPE~n",[]), w(" #define wxICON_DEFAULT_BITMAP_TYPE wxBITMAP_TYPE_ICO_RESOURCE~n",[]), w("#endif~n", []), w("~n~n", []), - [w("#define ~s_~s ~p~n", [Class,Name,Id]) || + [w("#define ~s_~s ~p~n", [Class,Name,Id]) || {Class,Name,_,Id} <- wx_gen_erl:get_unique_names()], w("~n~n"). @@ -1032,29 +1054,29 @@ build_events() -> w("#include \"wxe_macros.h\"~n"), w("#include \"../wxe_events.h\"~n~n"), w("#include \"../wxe_return.h\"~n~n"), - + w("wxeEtype::wxeEtype(const char *name, int Id) {eName = name;cID = Id;}~n~n"), w("WX_DECLARE_HASH_MAP(int, wxeEtype*, wxIntegerHash, wxIntegerEqual, wxeETmap );~n~n"), - + w("wxeETmap etmap;~n~n"), - + w( "int wxeEventTypeFromAtom(char *etype_atom) { wxeETmap::iterator it; for(it = etmap.begin(); it != etmap.end(); ++it) { wxeEtype * value = it->second; - if(strcmp(value->eName, etype_atom) == 0) { - if(it->first > wxEVT_USER_FIRST) { + if(strcmp(value->eName, etype_atom) == 0) { + if(it->first > wxEVT_USER_FIRST) { return it->first - wxEVT_USER_FIRST; } else { return it->first; } } - } - return -1; + } + return -1; } -"), +"), Evs0 = [C || {_,C=#class{event=Evs}} <- get(), Evs =/= false], Evs = lists:keysort(#class.id, Evs0), @@ -1067,7 +1089,7 @@ initEventTable(Evs) -> w(" struct { ",[]), w("int ev_type; int class_id; const char * ev_name;} event_types[] =~n {~n",[]), - lists:foreach(fun(Ev) -> init_event_classes(Ev) end, + lists:foreach(fun(Ev) -> init_event_classes(Ev) end, [#class{id=0,event=[wxEVT_NULL]}|Evs]), w(" {-1, 0, ""}~n };~n",[]), w(" for(int i=0; event_types[i].ev_type != -1; i++) {~n",[]), @@ -1085,7 +1107,7 @@ initEventTable(Evs) -> " }~n" " }~n", []), w("}~n~n"). - + init_event_classes(#class{event=ETs, id=Id}) -> F = fun({Eev, Cev, OtherClass}) -> w(" {~w + wxEVT_USER_FIRST, ~w, ~p},~n", @@ -1105,7 +1127,7 @@ find_id(OtherClass) -> Class = get({class,atom_to_list(OtherClass)}), %%{value, Class} = lists:keysearch(atom_to_list(OtherClass), #class.name, All), Class#class.id. - + encode_events(Evs) -> ?WTC("encode_events"), w("void wxeEvtListener::forward(wxEvent& event)~n" @@ -1132,7 +1154,7 @@ encode_events(Evs) -> " wxeMemEnv *memenv = app->getMemEnv(port);~n" " if(!memenv) return 0;~n~n" " wxeReturn rt = wxeReturn(port, cb->listener);~n"), - + w("~n rt.addAtom((char*)\"wx\");~n" " rt.addInt((int) event->GetId());~n" " rt.addRef(getRef((void *)(cb->obj), memenv), cb->class_name);~n" @@ -1155,15 +1177,15 @@ encode_events(Evs) -> w(" app->clearPtr((void *) event);~n"), w(" } else {~n"), w(" send_res = rt.send();~n"), - w(" if(cb->skip) event->Skip();~n"), + w(" if(cb->skip) event->Skip();~n"), w(" };~n"), w(" return send_res;~n"), w(" }~n"). encode_event(C = #class{name=Class, id=Id, options=Opts}) -> ?WTC("encode_event"), - case proplists:get_value("mixed_event", Opts) of - undefined -> + case proplists:get_value("mixed_event", Opts) of + undefined -> w("case ~p: {// ~s~n", [Id,Class]), encode_event2(C), ok; @@ -1189,10 +1211,10 @@ encode_event2(Class = #class{name=Name}) -> build_event_attrs(ClassRec = #class{name=Class}) -> Attrs0 = wx_gen_erl:filter_attrs(ClassRec), - Rename = - fun(Att = #param{name=Name,prot=public,acc=undefined}, {All,Use}) -> + Rename = + fun(Att = #param{name=Name,prot=public,acc=undefined}, {All,Use}) -> {[Att#param{name= "ev->" ++ Name}|All],Use}; - (Att = #param{acc=Acc}, {All,_}) -> + (Att = #param{acc=Acc}, {All,_}) -> {[Att#param{name= "ev->" ++ Acc}|All], true} end, case foldr(Rename,{[],false},Attrs0) of @@ -1202,9 +1224,9 @@ build_event_attrs(ClassRec = #class{name=Class}) -> %% Attrs; {Attrs,_} -> w(" ~s * ev = (~s *) event;~n",[Class,Class]), - FixClass = + FixClass = fun(P=#param{name=N,acc=Acc,type=#type{single=Single,by_val=ByVal, - base={class,C}}}) + base={class,C}}}) when Acc =/= undefined -> Var = var_name(N), if Single, ByVal -> @@ -1215,17 +1237,17 @@ build_event_attrs(ClassRec = #class{name=Class}) -> end, P#param{name=Var}; (P) -> P - end, + end, lists:map(FixClass, Attrs) end. -var_name("ev->" ++ Name0) -> +var_name("ev->" ++ Name0) -> case reverse(Name0) of ")(" ++ Name -> reverse(Name); _ -> Name0 end; var_name(Name) -> Name. - + enum_name({Class,Type}) -> uppercase_all(Class ++ "_" ++ Type); enum_name(Type) -> diff --git a/lib/wx/api_gen/wx_gen_erl.erl b/lib/wx/api_gen/wx_gen_erl.erl index e1201ab0d4..e882ae87ca 100644 --- a/lib/wx/api_gen/wx_gen_erl.erl +++ b/lib/wx/api_gen/wx_gen_erl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -19,7 +19,7 @@ %%%------------------------------------------------------------------- %%% File : wx_gen_erl.erl %%% Author : Dan Gudmundsson <[email protected]> -%%% Description : +%%% Description : %%% %%% Created : 25 Jan 2007 by Dan Gudmundsson <[email protected]> %%%------------------------------------------------------------------- @@ -32,7 +32,7 @@ -import(lists, [foldl/3,foldr/3,reverse/1, keysearch/3, map/2, filter/2]). -import(gen_util, [lowercase/1, lowercase_all/1, uppercase/1, uppercase_all/1, - open_write/1, close/0, erl_copyright/0, w/2, + open_write/1, close/0, erl_copyright/0, w/2, args/3, args/4, strip_name/2]). gen(Defs) -> @@ -42,9 +42,9 @@ gen(Defs) -> gen_enums_ints(), [gen_class(Class) || Class <- Defs], gen_funcnames(). - + gen_class(Class) -> - try + try gen_class1(Class) catch throw:skipped -> Class @@ -52,10 +52,10 @@ gen_class(Class) -> gen_class1(C=#class{name=Name,parent="static",methods=Ms,options=_Opts}) -> open_write("../src/gen/wx_misc.erl"), - put(current_class, Name), + put(current_class, Name), erl_copyright(), w("", []), - w("%% This file is generated DO NOT EDIT~n~n", []), + w("%% This file is generated DO NOT EDIT~n~n", []), w("%% @doc See external documentation: " "<a href=\"http://www.wxwidgets.org/manuals/stable/wx_miscellany.html\">Misc</a>.\n\n",[]), @@ -67,8 +67,8 @@ gen_class1(C=#class{name=Name,parent="static",methods=Ms,options=_Opts}) -> Exp = fun(M) -> gen_export(C,M) end, ExportList = lists:usort(lists:append(lists:map(Exp,reverse(Ms)))), w("-export([~s]).~n~n", [args(fun(EF) -> EF end, ",", ExportList, 60)]), - - + + Gen = fun(M) -> gen_method(Name,M) end, NewMs = lists:map(Gen,reverse(Ms)), close(), @@ -79,13 +79,13 @@ gen_class1(C=#class{name=Name,parent=Parent,methods=Ms,options=Opts}) -> case Opts of ["ignore"] -> throw(skipped); _ -> ok - end, + end, open_write("../src/gen/"++Name++".erl"), - put(current_class, Name), + put(current_class, Name), erl_copyright(), w("", []), - w("%% This file is generated DO NOT EDIT~n~n", []), - + w("%% This file is generated DO NOT EDIT~n~n", []), + case lists:member(taylormade, Opts) of true -> {ok, Bin} = file:read_file(filename:join([wx_extra, Name++".erl"])), @@ -95,33 +95,33 @@ gen_class1(C=#class{name=Name,parent=Parent,methods=Ms,options=Opts}) -> w("%% @doc See external documentation: " "<a href=\"http://www.wxwidgets.org/manuals/stable/wx_~s.html\">~s</a>.\n", [lowercase_all(Name), Name]), - + case C#class.doc of undefined -> ignore; Str -> w("%%~n%% ~s~n~n%%~n", [Str]) end, - + case C#class.event of false -> ignore; Evs -> EvTypes = [event_type_name(Ev) || Ev <- Evs], EvStr = args(fun(Ev) -> "<em>"++Ev++"</em>" end, ", ", EvTypes), - + w("%% <dl><dt>Use {@link wxEvtHandler:connect/3.} with EventType:</dt>~n",[]), w("%% <dd>~s</dd></dl>~n", [EvStr]), - w("%% See also the message variant {@link wxEvtHandler:~s(). #~s{}} event record type.~n", + w("%% See also the message variant {@link wxEvtHandler:~s(). #~s{}} event record type.~n", [event_rec_name(Name),event_rec_name(Name)]), w("%%~n",[]), ok end, - + Parents = parents(Parent), case [P || P <- Parents, P =/= root, P =/= object] of [] -> ignore; - Ps -> + Ps -> w("%% <p>This class is derived (and can use functions) from:~n", []), [w("%% <br />{@link ~s}~n", [P]) || P <- Ps], - w("%% </p>~n",[]) + w("%% </p>~n",[]) end, w("%% @type ~s(). An object reference, The representation is internal~n",[Name]), w("%% and can be changed without notice. It can't be used for comparsion~n", []), @@ -137,17 +137,17 @@ gen_class1(C=#class{name=Name,parent=Parent,methods=Ms,options=Opts}) -> Done0 = ["Destroy", "New", "Create", "destroy", "new", "create"], Done = gb_sets:from_list(Done0 ++ [M|| #method{name=M} <- lists:append(Ms)]), {_, InExported} = gen_inherited(Parents, Done, []), - w("-export([~s]).~n~n", [args(fun(EF) -> EF end, ",", - lists:usort(["parent_class/1"|InExported]), + w("-export([~s]).~n~n", [args(fun(EF) -> EF end, ",", + lists:usort(["parent_class/1"|InExported]), 60)]), - + w("%% @hidden~n", []), parents_check(Parents), - + Gen = fun(M) -> gen_method(Name,M) end, NewMs = lists:map(Gen,reverse(Ms)), - gen_dest(C, Ms), - + gen_dest(C, Ms), + gen_inherited(Parents, Done, true) end, @@ -203,26 +203,26 @@ gen_export(#class{name=Class,abstract=Abs},Ms0) -> [] -> []; [M=#method{where=taylormade}|_] -> [taylormade_export(Class, M)]; - Ms -> + Ms -> GetF = fun(#method{method_type=constructor,where=W,params=Ps}) -> {Args,Opts} = split_optional(Ps), - OptLen = case Opts of - [] -> 0; + OptLen = case Opts of + [] -> 0; _ when W =:= erl_no_opt -> 0; - _ -> 1 + _ -> 1 end, "new/" ++ integer_to_list(length(Args)+OptLen); (#method{method_type=destructor}) -> - case Abs of - true -> []; + case Abs of + true -> []; _ -> "destroy/1" end; (#method{name=N,alias=A,where=W, params=Ps}) -> {Args,Opts} = split_optional(Ps), - OptLen = case Opts of - [] -> 0; + OptLen = case Opts of + [] -> 0; _ when W =:= erl_no_opt -> 0; - _ -> 1 + _ -> 1 end, erl_func_name(N,A) ++ "/" ++ integer_to_list(length(Args) + OptLen) end, @@ -235,10 +235,10 @@ gen_method(Class,Ms0) -> Res = filter(RemoveC, Ms0), case Res of [] -> Ms0; - [M=#method{where=taylormade}|_] -> - taylormade_func(Class, M), + [#method{where=taylormade}|_] -> + taylormade_func(Class, Res), Ms0; - Ms -> + Ms -> gen_doc(Class,Ms), gen_method1(Ms), Ms0 @@ -279,22 +279,22 @@ gen_method2(M=#method{name=N,alias=A,params=Ps,type=T,method_type=MT,id=MethodId ignore -> skip; _ -> w(" _Result =", []) end, - + case have_return_vals(T, Ps) of _ when MT =:= constructor -> w(" wxe_util:construct(~s,~n <<~s~s>>)", [MId, MArgs,MOpts]); true -> w(" wxe_util:call(~s,~n <<~s~s>>)", [MId, MArgs,MOpts]); - false -> + false -> w(" wxe_util:cast(~s,~n <<~s~s>>)", [MId, MArgs,MOpts]) end, case gen_util:get_hook(erl, M#method.post_hook) of ignore -> skip; - Post -> + Post -> w(",~n ~s~n", [Post]), w(" _Result", []) end, - + erase(current_func), M. @@ -306,9 +306,9 @@ gen_dest(#class{name=CName,abstract=Abs}, Ms) -> case lists:keysearch(destructor,#method.method_type, lists:append(Ms)) of {value, #method{method_type=destructor, id=Id}} -> case hd(reverse(parents(CName))) of - object -> + object -> gen_dest2(CName, object); - root -> + root -> gen_dest2(CName, Id) end; false -> @@ -320,7 +320,7 @@ gen_dest2(Class, Id) -> w("%% @spec (This::~s()) -> ok~n", [Class]), w("%% @doc Destroys this object, do not use object again~n", []), w("destroy(Obj=#wx_ref{type=Type}) ->~n", []), - w(" ?CLASS(Type,~s),~n",[Class]), + w(" ?CLASS(Type,~s),~n",[Class]), case Id of object -> w(" wxe_util:destroy(?DESTROY_OBJECT,Obj),~n ok.~n", []); @@ -341,14 +341,14 @@ gen_inherited([Parent|Ps], Done0, Exported0) -> gen_inherited(Ps, gb_sets:union(Done,Done0), Exported). gen_inherited_ms([[#method{name=Name,alias=A,params=Ps0,where=W,method_type=MT}|_]|R], - Class,Skip,Done, Exported) - when W =/= merged_c -> + Class,Skip,Done, Exported) + when W =/= merged_c -> case gb_sets:is_member(Name,Skip) of false when MT =:= member, Exported =:= true -> Ps = [patch_param(P,all) || P <- Ps0], Opts = if W =:= erl_no_opt -> []; - true -> - [Opt || Opt = #param{def=Def,in=In, where=Where} <- Ps, + true -> + [Opt || Opt = #param{def=Def,in=In, where=Where} <- Ps, Def =/= none, In =/= false, Where =/= c] end, w("%% @hidden~n", []), @@ -359,10 +359,10 @@ gen_inherited_ms([[#method{name=Name,alias=A,params=Ps0,where=W,method_type=MT}| gen_inherited_ms(R,Class, Skip, gb_sets:add(Name,Done), Exported); false when MT =:= member, is_list(Exported) -> {Args,Opts} = split_optional(Ps0), - OptLen = case Opts of - [] -> 0; + OptLen = case Opts of + [] -> 0; _ when W =:= erl_no_opt -> 0; - _ -> 1 + _ -> 1 end, Export = erl_func_name(Name,A) ++ "/" ++ integer_to_list(length(Args) + OptLen), gen_inherited_ms(R,Class,Skip, gb_sets:add(Name,Done), [Export|Exported]); @@ -374,17 +374,21 @@ gen_inherited_ms([[_|Check]|R],Class,Skip, Done0,Exp) -> gen_inherited_ms([[]|R],Class,Skip,Done0,Exp) -> gen_inherited_ms(R,Class,Skip,Done0,Exp); gen_inherited_ms([], _, _Skip, Done,Exp) -> {Done,Exp}. - + %%%%%%%%%%%%%%% -taylormade_func(Class, #method{name=Name, id=Id}) -> +taylormade_func(Class, [#method{name=Name, id=Id}|_]) -> {ok, Bin} = file:read_file(filename:join([wx_extra, Class ++".erl"])), - Str0 = binary_to_list(Bin), - {match, [Str1]} = re:run(Str0, "<<"++Name++"(.*)"++Name++">>", - [dotall, {capture, all_but_first, list}]), - - w(Str1, ["?" ++ get_unique_name(Id)]), + Src = binary_to_list(Bin), + Str = case gen_util:get_taylor_made(Src, Name) of + nomatch -> + {match, [Str0]} = gen_util:get_taylor_made(Src, get_unique_name(Id)), + Str0; + {match, [Str0]} -> + Str0 + end, + w(Str, ["?" ++ get_unique_name(Id)]), ok. taylormade_export(Class, #method{name=Name}) -> @@ -398,12 +402,12 @@ taylormade_export(Class, #method{name=Name}) -> arg_type_tests([P|Ps], Mid0) -> case arg_type_test(P,"\n",Mid0) of - Mid0 -> + Mid0 -> arg_type_tests(Ps, Mid0); Mid -> %% Already checked the other args Mid end; -arg_type_tests([],Mid) -> Mid. +arg_type_tests([],Mid) -> Mid. arg_type_test(#param{where=c}, _, Acc) -> Acc; @@ -412,7 +416,7 @@ arg_type_test(#param{name=Name0,in=In,type=#type{base={class,T},single=true},def Name = erl_arg_name(Name0), w(" ?CLASS(~sT,~s),~s", [Name,T,EOS]), Acc; -arg_type_test(#param{name=Name0,in=In,type=#type{base={class,T}}, def=none},EOS,Acc) +arg_type_test(#param{name=Name0,in=In,type=#type{base={class,T}}, def=none},EOS,Acc) when In =/= false -> Name = erl_arg_name(Name0), w(" [?CLASS(~sT,~s) || #wx_ref{type=~sT} <- ~s],~s", [Name,T,Name,Name,EOS]), @@ -420,35 +424,35 @@ arg_type_test(#param{name=Name0,in=In,type=#type{base={class,T}}, def=none},EOS, arg_type_test(#param{name=Name0,def=none,in=In, type={merged, M1, #type{base={class,T1},single=true},Ps1, - M2, #type{base={class,T2},single=true},Ps2}}, EOS, _Acc) + M2, #type{base={class,T2},single=true},Ps2}}, EOS, _Acc) when In =/= false -> Name = erl_arg_name(Name0), Opname = Name++"OP", w(" ~s = case ?CLASS_T(~sT,~s) of~n true ->\n ", [Opname,Name,T1]), - lists:foreach(fun(Param) -> arg_type_test(Param,"\n ", ignore) end, + lists:foreach(fun(Param) -> arg_type_test(Param,"\n ", ignore) end, element(1,split_optional(Ps1))), w("?~s;~n",[get_unique_name(M1)]), w(" _ -> ?CLASS(~sT,~s),\n ",[Name,T2]), {Ps21,_} = split_optional(patchArgName(Ps2,Ps1)), - lists:foreach(fun(Param) -> arg_type_test(Param,"\n ", ignore) end, + lists:foreach(fun(Param) -> arg_type_test(Param,"\n ", ignore) end, Ps21), w("?~s\n end,~s",[get_unique_name(M2),EOS]), Opname; -arg_type_test(#param{name=Name0, type=#type{base=eventType}}, EOS, Acc) -> +arg_type_test(#param{name=Name0, type=#type{base=eventType}}, EOS, Acc) -> Name = erl_arg_name(Name0), w(" ~sBin = list_to_binary([atom_to_list(~s)|[0]]),~s", [Name,Name,EOS]), w(" ThisTypeBin = list_to_binary([atom_to_list(ThisT)|[0]]),~s", [EOS]), Acc; -arg_type_test(#param{name=Name0,def=none,type=#type{base={term,_}}}, EOS, Acc) -> +arg_type_test(#param{name=Name0,def=none,type=#type{base={term,_}}}, EOS, Acc) -> Name = erl_arg_name(Name0), w(" wxe_util:send_bin(term_to_binary(~s)),~s", [Name,EOS]), Acc; -arg_type_test(#param{name=Name0,type=#type{base=binary}},EOS,Acc) -> +arg_type_test(#param{name=Name0,type=#type{base=binary}},EOS,Acc) -> Name = erl_arg_name(Name0), w(" wxe_util:send_bin(~s),~s", [Name,EOS]), Acc; -arg_type_test(#param{name=Name0,type=#type{name=Type,base=Base,single=Single}},EOS,Acc) -> - if +arg_type_test(#param{name=Name0,type=#type{name=Type,base=Base,single=Single}},EOS,Acc) -> + if Type =:= "wxArtClient", Single =:= true -> Name = erl_arg_name(Name0), w(" ~s_UC = unicode:characters_to_binary([~s, $_, $C,0]),~s", @@ -458,11 +462,11 @@ arg_type_test(#param{name=Name0,type=#type{name=Type,base=Base,single=Single}},E w(" ~s_UC = unicode:characters_to_binary([~s,0]),~s", [Name,Name,EOS]); Type =:= "wxArrayString" -> Name = erl_arg_name(Name0), - w(" ~s_UCA = [unicode:characters_to_binary([~sTemp,0]) || ~s", + w(" ~s_UCA = [unicode:characters_to_binary([~sTemp,0]) || ~s", [Name,Name, EOS]), w(" ~sTemp <- ~s],~s", [Name,Name,EOS]); true -> %% Not a string - ignore + ignore end, Acc; arg_type_test(_,_,Acc) -> Acc. @@ -476,10 +480,10 @@ have_return_vals(void, Ps) -> have_return_vals(#type{}, _) -> true. gen_function_clause(Name0,MT,Ps,Optional,Variant) -> - PArg = fun(Arg) -> + PArg = fun(Arg) -> case lists:member(name_only, Variant) of true -> func_arg_name(Arg); - false -> + false -> case lists:member(name_type, Variant) of true -> Name = func_arg_name(Arg), @@ -495,17 +499,17 @@ gen_function_clause(Name0,MT,Ps,Optional,Variant) -> Args = args(PArg, ",", Ps), Name = case MT of constructor -> "new"; _ -> Name0 end, w("~s(~s",[Name,Args]), - Opts = case Optional of + Opts = case Optional of [] -> ""; empty_list when Args =:= [] -> "[]"; empty_list -> ", []"; _ when Args =:= [] -> "Options"; - _ -> ", Options" + _ -> ", Options" end, w("~s)", [Opts]), case lists:member(no_guards, Variant) of true -> ok; - false -> + false -> Guards = args(fun guard_test/1, ",", Ps), if Guards =:= [], Opts =:= "" -> w(" ->~n", []); @@ -517,10 +521,10 @@ gen_function_clause(Name0,MT,Ps,Optional,Variant) -> split_optional(Ps) -> split_optional(Ps, [], []). -split_optional([P=#param{def=Def,in=In, where=Where}|Ps], Standard, Opts) +split_optional([P=#param{def=Def,in=In, where=Where}|Ps], Standard, Opts) when Def =/= none, In =/= false, Where =/= c -> split_optional(Ps, Standard, [P|Opts]); -split_optional([P=#param{def=Def,in=In, where=Where}|Ps], Standard, Opts) +split_optional([P=#param{def=Def,in=In, where=Where}|Ps], Standard, Opts) when Def =:= none, In =/= false, Where =/= c -> split_optional(Ps, [P|Standard], Opts); split_optional([_|Ps], Standard, Opts) -> @@ -532,24 +536,24 @@ patch_param(P=#param{type=#type{base=Tuple}}, all) when is_tuple(Tuple) -> P#param{type={class,ignore}}; patch_param(P=#param{type={merged,_,_,_,_,_,_}}, _) -> P#param{type={class,ignore}}; -patch_param(P=#param{type=#type{base={class,_}}},_) -> +patch_param(P=#param{type=#type{base={class,_}}},_) -> P#param{type={class,ignore}}; -patch_param(P=#param{type=#type{base={ref,_}}},_) -> +patch_param(P=#param{type=#type{base={ref,_}}},_) -> P#param{type={class,ignore}}; patch_param(P,_) -> P. func_arg_name(#param{def=Def}) when Def =/= none -> skip; func_arg_name(#param{in=false}) -> skip; func_arg_name(#param{where=c}) -> skip; -func_arg_name(#param{name=Name}) -> +func_arg_name(#param{name=Name}) -> erl_arg_name(Name). func_arg(#param{def=Def}) when Def =/= none -> skip; func_arg(#param{in=false}) -> skip; func_arg(#param{where=c}) -> skip; -func_arg(#param{name=Name,type=#type{base=string}}) -> +func_arg(#param{name=Name,type=#type{base=string}}) -> erl_arg_name(Name); -func_arg(#param{name=Name,type=#type{name="wxArrayString"}}) -> +func_arg(#param{name=Name,type=#type{name="wxArrayString"}}) -> erl_arg_name(Name); func_arg(#param{name=Name0,type=#type{base={class,_CN}, single=true}}) -> Name = erl_arg_name(Name0), @@ -570,7 +574,7 @@ func_arg(#param{name=Name,type=#type{base={comp,"wxDateTime",_Tup}, single=true} func_arg(#param{name=Name,type=#type{name="wxArtClient", single=true}}) -> erl_arg_name(Name); func_arg(#param{name=Name,type=#type{base={comp,_,Tup}, single=true}}) -> - N = erl_arg_name(Name), + N = erl_arg_name(Name), Doc = fun({_,V}) -> erl_arg_name(N)++V end, "{" ++ args(Doc, ",", Tup) ++ "}"; func_arg(#param{name=Name}) -> @@ -587,7 +591,7 @@ guard_test(#param{name=N, type=#type{name="wxArtClient"}}) -> "is_list(" ++ erl_arg_name(N) ++")"; guard_test(#param{name=N, type=#type{name="wxArrayString"}}) -> "is_list(" ++ erl_arg_name(N) ++")"; -guard_test(#param{name=Name,type=#type{single=Single}}) +guard_test(#param{name=Name,type=#type{single=Single}}) when Single =/= true-> "is_list(" ++ erl_arg_name(Name) ++ ")"; guard_test(#param{name=N,type=#type{base=int}}) -> @@ -637,42 +641,42 @@ gen_doc(_Class,[#method{name=N,alias=A,params=Ps,type=T,where=erl_no_opt,method_ gen_function_clause(erl_func_name(N,A),MT,Ps,empty_list,[no_guards,name_only]); gen_doc(Class,[#method{name=N,params=Ps,type=T}])-> {_, Optional} = split_optional(Ps), - NonDef = [Arg || Arg = #param{def=Def,in=In, where=Where} <- Ps, + NonDef = [Arg || Arg = #param{def=Def,in=In, where=Where} <- Ps, Def =:= none, In =/= false, Where =/= c], OptsType = case Optional of [] -> ""; _ when NonDef =:= [] -> "[Option]"; - _ -> ", [Option]" + _ -> ", [Option]" end, w("%% @spec (~s~s) -> ~s~n", [doc_arg_types(Ps),OptsType,doc_return_types(T,Ps)]), doc_optional(Optional, normal), - DocEnum = doc_enum(T,Ps, normal), + DocEnum = doc_enum(T,Ps, normal), case Class of "utils" -> w("%% @doc See <a href=\"http://www.wxwidgets.org/manuals/stable/wx_miscellany.html#~s\">" - "external documentation</a>.~n", + "external documentation</a>.~n", [lowercase_all(N)]); _ -> w("%% @doc See <a href=\"http://www.wxwidgets.org/manuals/stable/wx_~s.html#~s~s\">" - "external documentation</a>.~n", + "external documentation</a>.~n", [lowercase_all(Class),lowercase_all(Class),lowercase_all(N)]) end, doc_enum_desc(DocEnum); gen_doc(Class, Cs = [#method{name=N, alias=A,method_type=MT}|_]) -> - GetRet = fun(#method{params=Ps,type=T}) -> + GetRet = fun(#method{params=Ps,type=T}) -> doc_return_types(T,Ps) end, - GetArgs = fun(#method{params=Ps, where=Where}) -> + GetArgs = fun(#method{params=Ps, where=Where}) -> Opt = case Where of erl_no_opt -> []; - _ -> + _ -> case split_optional(Ps) of {_, []} -> []; _ -> ["[Option]"] end end, - [doc_arg_type(P) || + [doc_arg_type(P) || P=#param{in=In,def=none,where=W} <- Ps, In =/= false, W =/= c] ++ Opt end, @@ -682,16 +686,16 @@ gen_doc(Class, Cs = [#method{name=N, alias=A,method_type=MT}|_]) -> case Class of "utils" -> w("%% @doc See <a href=\"http://www.wxwidgets.org/manuals/stable/wx_miscellany.html#~s\">" - "external documentation</a>.~n", + "external documentation</a>.~n", [lowercase_all(N)]); _ -> w("%% @doc See <a href=\"http://www.wxwidgets.org/manuals/stable/wx_~s.html#~s~s\">" - "external documentation</a>.~n", + "external documentation</a>.~n", [lowercase_all(Class),lowercase_all(Class),lowercase_all(N)]) end, Name = case MT of constructor -> "new"; _ -> erl_func_name(N,A) end, w("%% <br /> Alternatives:~n",[]), - [gen_doc2(Name, Clause) || Clause <- Cs], + [gen_doc2(Name, Clause) || Clause <- Cs], ok. gen_doc2(Name,#method{params=Ps,where=erl_no_opt,method_type=MT}) -> @@ -704,11 +708,11 @@ gen_doc2(Name,#method{params=Ps,type=T}) -> OptsType = case Optional of [] -> ""; _ when NonDef =:= [] -> "[Option]"; - _ -> ", [Option]" + _ -> ", [Option]" end, w("%% <p><c>~n",[]), w("%% ~s(~s~s) -> ~s </c>~n", - [Name,doc_arg_types(Ps),OptsType,doc_return_types(T,Ps)]), + [Name,doc_arg_types(Ps),OptsType,doc_return_types(T,Ps)]), doc_optional(Optional, xhtml), DocEnum = doc_enum(T,Ps, xhtml), doc_enum_desc(DocEnum), @@ -717,7 +721,7 @@ gen_doc2(Name,#method{params=Ps,type=T}) -> doc_arg(ArgList) -> case all_eq(ArgList) of true -> hd(ArgList); - false -> + false -> Get = fun(Str) -> [_Name|Types] = string:tokens(Str, ":"), case Types of @@ -734,12 +738,12 @@ doc_arg(ArgList) -> doc_ret(ArgList) -> case all_eq(ArgList) of true -> hd(ArgList); - false -> + false -> args(fun(A) -> A end, "|", ArgList) end. unique([], U) -> reverse(U); -unique([H|R], U) -> +unique([H|R], U) -> case lists:member(H,U) of false -> unique(R,[H|U]); true -> unique(R,U) @@ -756,7 +760,7 @@ zip(List) -> zip([[F|L1]|List], Rest, AccL, Acc) -> zip(List, [L1|Rest], [F|AccL], Acc); -zip(Empty, Rest, AccL, Acc) -> +zip(Empty, Rest, AccL, Acc) -> true = empty(Empty), case empty(Rest) andalso empty(AccL) of true -> reverse(Acc); @@ -779,7 +783,7 @@ doc_arg_type(_) -> skip. doc_arg_type2(T=#type{single=Single}) when Single =:= array; Single =:= list -> "[" ++ doc_arg_type3(T) ++ "]"; -doc_arg_type2(T) -> +doc_arg_type2(T) -> doc_arg_type3(T). doc_arg_type3(#type{base=string}) -> "string()"; @@ -799,8 +803,8 @@ doc_arg_type3(#type{base={binary,_}}) -> "binary()"; doc_arg_type3(#type{base=eventType}) -> "atom()"; doc_arg_type3(#type{base={ref,N}}) -> N++"()"; doc_arg_type3(#type{base={term,_N}}) -> "term()"; -doc_arg_type3(T=#type{base={class,N}}) -> - check_class(T), +doc_arg_type3(T=#type{base={class,N}}) -> + check_class(T), case get(current_class) of N -> N ++ "()"; _ -> N++":" ++ N++"()" @@ -809,7 +813,7 @@ doc_arg_type3({merged,_,T1=#type{base={class,N1}},_,_,T2=#type{base={class,N2}}, check_class(T1), check_class(T2), Curr = get(current_class), - if + if N1 =:= Curr, N2 =:= Curr -> N1++"() | "++ N2++"()"; N1 =:= Curr -> N1++"() | "++ N2++":" ++ N2++"()"; N2 =:= Curr -> N1++":" ++ N1++"() | "++ N2++"()"; @@ -824,7 +828,7 @@ doc_arg_type3(#type{base={comp,_,{record,Name}}}) -> "wx:" ++ atom_to_list(Name) ++ "()"; doc_arg_type3(#type{base={comp,_,Tup}}) -> Doc = fun({int,V}) -> V ++ "::integer()"; - ({double,V}) -> V ++ "::float()" + ({double,V}) -> V ++ "::float()" end, "{" ++ args(Doc, ",", Tup) ++ "}"; doc_arg_type3(T) -> ?error({unknown_type,T}). @@ -834,7 +838,7 @@ doc_return_types(T, Ps) -> doc_return_types2(void, []) -> "ok"; doc_return_types2(void, [#param{type=T}]) -> doc_arg_type2(T); doc_return_types2(T, []) -> doc_arg_type2(T); -doc_return_types2(void, Ps) -> +doc_return_types2(void, Ps) -> "{" ++ args(fun doc_arg_type/1,",",Ps) ++ "}"; doc_return_types2(T, Ps) -> "{" ++ doc_arg_type2(T) ++ "," ++ args(fun doc_arg_type/1,",",Ps) ++ "}". @@ -887,7 +891,7 @@ check_name(Name) -> Name. marshal_opts([], _,_) -> ""; %% No opts skip this! marshal_opts(Opts, Align, Args) -> - w(" MOpts = fun", []), + w(" MOpts = fun", []), marshal_opts1(Opts,1), w(";~n (BadOpt, _) -> erlang:error({badoption, BadOpt}) end,~n", []), w(" BinOpt = list_to_binary(lists:foldl(MOpts, [<<0:32>>], Options)),~n", []), @@ -896,7 +900,7 @@ marshal_opts(Opts, Align, Args) -> [] -> Str; % All Args are optional _ -> ", " ++ Str end. - + marshal_opts1([P],N) -> marshal_opt(P,N); marshal_opts1([P|R],N) -> @@ -909,15 +913,15 @@ marshal_opt(P0=#param{name=Name,type=Type},N) -> {Arg,Align} = marshal_arg(Type,erl_arg_name(Name),1), AStr = if Align =:= 0 -> ""; Align =:= 1 -> ",0:32" - end, - w("({~s, ~s}, Acc) -> ", [erl_option_name(Name), func_arg(P)]), + end, + w("({~s, ~s}, Acc) -> ", [erl_option_name(Name), func_arg(P)]), arg_type_test(P,"",[]), case Arg of - skip -> + skip -> w("[<<~p:32/?UI~s>>|Acc]", [N, AStr]); - _ -> + _ -> w("[<<~p:32/?UI,~s~s>>|Acc]", [N, Arg,AStr]) - end. + end. marshal_args(Ps) -> marshal_args(Ps, [], 0). @@ -957,23 +961,23 @@ marshal_arg(#type{single=true,base={enum,_Enum}}, Name, Align) -> marshal_arg(#type{single=true,base=bool}, Name, Align) -> align(32, Align, "(wxe_util:from_bool(" ++ Name ++ ")):32/?UI"); -marshal_arg(#type{name="wxChar", single=Single}, Name, Align0) +marshal_arg(#type{name="wxChar", single=Single}, Name, Align0) when Single =/= true -> - {Str,Align} = + {Str,Align} = align(32,Align0, "(byte_size("++Name++"_UC)):32/?UI,(" ++ Name ++ "_UC)/binary"), MsgSize = "(" ++ integer_to_list(Align*4)++"+byte_size("++Name++"_UC))", {Str++", 0:(((8- (" ++ MsgSize ++" band 16#7)) band 16#7))/unit:8",0}; marshal_arg(#type{base=string}, Name, Align0) -> - {Str,Align} = + {Str,Align} = align(32,Align0, "(byte_size("++Name++"_UC)):32/?UI,(" ++ Name ++ "_UC)/binary"), MsgSize = "(" ++ integer_to_list(Align*4)++"+byte_size("++Name++"_UC))", {Str++", 0:(((8- (" ++ MsgSize ++" band 16#7)) band 16#7))/unit:8",0}; marshal_arg(#type{name="wxArrayString"}, Name, Align0) -> - InnerBin = "<<(byte_size(UC_Str)):32/?UI, UC_Str/binary>>", + InnerBin = "<<(byte_size(UC_Str)):32/?UI, UC_Str/binary>>", Outer = "(<< " ++ InnerBin ++ "|| UC_Str <- "++ Name ++"_UCA>>)/binary", Str0 = "(length("++Name++"_UCA)):32/?UI, " ++ Outer, {Str,Align} = align(32,Align0,Str0), - MsgSize = "("++integer_to_list(Align*4) ++ + MsgSize = "("++integer_to_list(Align*4) ++ " + lists:sum([byte_size(S)+4||S<-" ++ Name ++"_UCA]))", AStr = ", 0:(((8- (" ++ MsgSize ++" band 16#7)) band 16#7))/unit:8", {Str ++ AStr, 0}; @@ -997,15 +1001,15 @@ marshal_arg(#type{base={term,_}}, _Name, Align0) -> {skip,Align0}; marshal_arg(#type{base=binary}, _Name, Align0) -> {skip,Align0}; -marshal_arg(#type{base=Base, single=Single}, Name, Align0) +marshal_arg(#type{base=Base, single=Single}, Name, Align0) when Single =/= true -> - case Base of - int -> + case Base of + int -> Str0 = "(length("++Name++")):32/?UI,\n" " (<< <<C:32/?I>> || C <- "++Name++">>)/binary", {Str,Align} = align(32,Align0, Str0), {Str ++ ", 0:((("++integer_to_list(Align)++"+length("++Name++ ")) rem 2)*32)", 0}; - {ObjRef,_} when ObjRef =:= class; ObjRef =:= ref -> + {ObjRef,_} when ObjRef =:= class; ObjRef =:= ref -> Str0 = "(length("++Name++")):32/?UI,", Str1 = "\n (<< <<(C#wx_ref.ref):32/?UI>> || C <- "++Name++">>)/binary", {Str2,Align} = align(32, Align0, Str1), @@ -1033,7 +1037,7 @@ align(64, 0, Str) -> {Str, 0}; align(64, 1, Str) -> {"0:32," ++ Str,0}; align(Sz, W, Str) -> align(Sz, W rem 2, Str). -enum_name(Name) -> +enum_name(Name) -> case string:tokens(Name, ":") of [Name] -> Name; [C,N] -> C ++ "_" ++ N @@ -1053,10 +1057,10 @@ gen_enums_ints() -> " }).~n", []), w("~n%% Hardcoded Defines~n", []), Enums = [E || {{enum,_},E = #enum{as_atom=false}} <- get()], - w("-define(wxDefaultSize, {-1,-1}).~n", []), - w("-define(wxDefaultPosition, {-1,-1}).~n", []), + w("-define(wxDefaultSize, {-1,-1}).~n", []), + w("-define(wxDefaultPosition, {-1,-1}).~n", []), w("~n%% Global Variables~n", []), - [w("-define(~s, wxe_util:get_const(~s)).~n", [Gvar, Gvar]) || + [w("-define(~s, wxe_util:get_const(~s)).~n", [Gvar, Gvar]) || {Gvar,_,_Id} <- get(gvars)], w("~n%% Enum and defines~n", []), foldl(fun(Enum= #enum{vals=Vals}, Done) when Vals =/= [] -> @@ -1076,7 +1080,7 @@ build_enum_ints(#enum{from=From, vals=Vals},Done) -> {_File, Class, Name} -> w("% From class ~s::~s~n",[Class, Name]) end, - + Format = fun(#const{name="wxEVT_" ++ _}) -> ignore; %% Ignore event macros they are not valid in our event model (#const{name=Name,val=Value,is_const=true}) when is_integer(Value) -> @@ -1100,12 +1104,12 @@ build_enum_ints(#enum{from=From, vals=Vals},Done) -> Consts = get(consts), Write = fun({Name,_What}, Skip) -> case gb_sets:is_member(Name,Skip) of - true -> + true -> Skip; false -> case gb_trees:lookup(Name, Consts) of {value, Const} -> - Format(Const), + Format(Const), gb_sets:add(Name,Skip); none -> Skip end @@ -1119,8 +1123,8 @@ gen_event_recs() -> w("", []), w("%% This file is generated DO NOT EDIT~n~n", []), w("%% All event messages are encapsulated in a wx record~n" - "%% they contain the widget id and a specialized event record.~n" - "%% Each event record may be sent for one or more event types.~n" + "%% they contain the widget id and a specialized event record.~n" + "%% Each event record may be sent for one or more event types.~n" "%% The mapping to wxWidgets is one record per class.~n~n",[]), w("%% @type wx() = #wx{id=integer(), obj=wx:wxObject(), userData=term(), event=Rec}. Rec is a event record.~n",[]), w("-record(wx, {id, %% Integer Identity of object.~n" @@ -1130,7 +1134,7 @@ gen_event_recs() -> w("%% Here comes the definitions of all event records.~n" "%% they contain the event type and possible some extra information.~n~n",[]), Types = [build_event_rec(C) || {_,C=#class{event=Evs}} <- get(), Evs =/= false], - w("%% @type wxEventType() = ~s.~n", + w("%% @type wxEventType() = ~s.~n", [args(fun(Ev) -> Ev end, " | ", lists:sort(lists:append(Types)))]), %% close(), closed in gen_enums_ints ok. @@ -1145,22 +1149,22 @@ find_inherited_attr(Param = {PName,_}, Name) -> end. filter_attrs(#class{name=Name, parent=Parent,attributes=Attrs}) -> - Attr1 = lists:foldl(fun(#param{acc=skip},Acc) -> Acc; + Attr1 = lists:foldl(fun(#param{acc=skip},Acc) -> Acc; (P=#param{prot=public},Acc) -> [P|Acc]; - (#param{acc=undefined},Acc) -> Acc; + (#param{acc=undefined},Acc) -> Acc; ({inherited, PName},Acc) -> case find_inherited_attr(PName, Parent) of - undefined -> + undefined -> io:format("~p:~p: Missing Event Attr ~p in ~p~n", [?MODULE,?LINE, PName, Name]), Acc; - P -> + P -> [P|Acc] end; (P, Acc) -> [P|Acc] end, [], Attrs), lists:reverse(Attr1). - + build_event_rec(Class=#class{name=Name, event=Evs}) -> EvTypes = [event_type_name(Ev) || Ev <- Evs], Str = args(fun(Ev) -> "<em>"++Ev++"</em>" end, ", ", EvTypes), @@ -1168,26 +1172,26 @@ build_event_rec(Class=#class{name=Name, event=Evs}) -> Rec = event_rec_name(Name), GetName = fun(#param{name=N}) ->event_attr_name(N) end, GetType = fun(#param{name=N,type=T}) -> - event_attr_name(N) ++ "=" ++ doc_arg_type2(T) + event_attr_name(N) ++ "=" ++ doc_arg_type2(T) end, case Attr =:= [] of - true -> + true -> w("%% @type ~s() = #~s{type=wxEventType()}.~n", [Rec,Rec]), w("%% <dl><dt>EventType:</dt> <dd>~s</dd></dl>~n",[Str]), -%% case is_command_event(Name) of +%% case is_command_event(Name) of %% true -> w("%% This event skips other event handlers.~n",[]); %% false -> w("%% This event will be handled by other handlers~n",[]) %% end, w("%% Callback event: {@link ~s}~n", [Name]), w("-record(~s, {type}).~n~n", [Rec]); false -> - w("%% @type ~s() = #~s{type=wxEventType(),~s}.~n", + w("%% @type ~s() = #~s{type=wxEventType(),~s}.~n", [Rec,Rec,args(GetType,",",Attr)]), w("%% <dl><dt>EventType:</dt> <dd>~s</dd></dl>~n",[Str]), -%% case is_command_event(Name) of +%% case is_command_event(Name) of %% true -> w("%% This event skips other event handlers.~n",[]); %% false -> w("%% This event will be handled by other handlers~n",[]) -%% end, +%% end, w("%% Callback event: {@link ~s}~n", [Name]), w("-record(~s,{type, ~s}).~n~n", [Rec,args(GetName,",",Attr)]) end, @@ -1198,7 +1202,7 @@ is_command_event(Name) -> true -> true; false -> false end. - + event_rec_name(Name0 = "wx" ++ _) -> "tnevE" ++ Name1 = reverse(Name0), reverse(Name1). @@ -1215,7 +1219,7 @@ event_attr_name(Attr) -> lowercase(Attr). -gen_funcnames() -> +gen_funcnames() -> open_write("../src/gen/wxe_debug.hrl"), erl_copyright(), w("%% This file is generated DO NOT EDIT~n~n", []), @@ -1257,7 +1261,7 @@ unique_names(Ms0, Class) -> Ms = split_list(fun(#method{name=N}, M) -> {N =:= M, N} end, undefined, Ms2), unique_names2(Ms,Class). %% by Names -unique_names2([[#method{id=Id, name=Method,alias=Alias, max_arity=A}]|Ms], Class) -> +unique_names2([[#method{id=Id, name=Method,alias=Alias, max_arity=A}]|Ms], Class) -> [{Class,uname(alias(Method,Alias),Class),A,Id} | unique_names2(Ms,Class)]; unique_names2([Ms0|RMs], Class) -> Split = fun(#method{max_arity=A}, P) -> {A =:= P, A} end, @@ -1278,11 +1282,11 @@ unique_names4([], _, _Class) -> []. alias(Method, undefined) -> Method; alias(_, Alias) -> Alias. - + uname(Class,Class) -> "new"; uname([$~ | _], _ ) -> "destruct"; uname(Name, _) -> Name. - + split_list(F, Keep, List) -> split_list(F, Keep, List, []). @@ -1297,5 +1301,5 @@ split_list(F, Keep, [M|Ms], Acc) -> end; split_list(_, _, [], []) -> []; split_list(_, _, [], Acc) -> [lists:reverse(Acc)]. - + diff --git a/lib/wx/api_gen/wxapi.conf b/lib/wx/api_gen/wxapi.conf index aec8a4944a..8ee4451057 100644 --- a/lib/wx/api_gen/wxapi.conf +++ b/lib/wx/api_gen/wxapi.conf @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -756,7 +756,9 @@ 'SetFirstItem']}. {class, wxListCtrl, wxControl, [], - ['wxListCtrl','~wxListCtrl','Arrange','AssignImageList','ClearAll','Create', + [{'wxListCtrl', [{where, taylormade}]}, + '~wxListCtrl','Arrange','AssignImageList','ClearAll', + {'Create',[{where, taylormade}]}, 'DeleteAllItems','DeleteColumn','DeleteItem', {'EditLabel',[{"textControlClass",nowhere}]}, 'EnsureVisible', @@ -788,6 +790,13 @@ 'SetFont','SetId','SetImage','SetMask','SetState', 'SetStateMask','SetText','SetTextColour','SetWidth']}. +{class, wxListItemAttr, root, [], + ['wxListItemAttr','~wxListItemAttr', + 'GetBackgroundColour', 'GetFont', + 'GetTextColour', 'HasBackgroundColour', 'HasFont', + 'HasTextColour', 'SetBackgroundColour', 'SetFont', 'SetTextColour' + ]}. + {class, wxImageList, object, [{skip, [{'Create',1}]}], %% No create/0 on windows ['wxImageList','~wxImageList','Add','Create','Draw','GetBitmap','GetIcon','GetImageCount', 'GetSize','Remove','RemoveAll','Replace']}. diff --git a/lib/wx/c_src/egl_impl.cpp b/lib/wx/c_src/egl_impl.cpp index e2dbbb73c4..6d873abc44 100644 --- a/lib/wx/c_src/egl_impl.cpp +++ b/lib/wx/c_src/egl_impl.cpp @@ -1,20 +1,20 @@ /* * %CopyrightBegin% - * - * Copyright Ericsson AB 2010. All Rights Reserved. - * + * + * Copyright Ericsson AB 2011. All Rights Reserved. + * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved online at http://www.erlang.org/. - * + * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. - * - * %CopyrightEnd% + * + * %CopyrightEnd% */ #include <stdio.h> @@ -35,8 +35,8 @@ void init_tess(); void exit_tess(); int load_gl_functions(); -/* **************************************************************************** - * OPENGL INITIALIZATION +/* **************************************************************************** + * OPENGL INITIALIZATION *****************************************************************************/ int egl_initiated = 0; @@ -51,7 +51,7 @@ void * dlsym(HMODULE Lib, const char *func) { void * funcp; if((funcp = (void *) GetProcAddress(Lib, func))) return funcp; - else + else return (void *) wglGetProcAddress(func); } @@ -73,14 +73,14 @@ typedef char DL_CHAR; # define OPENGL_LIB "libGL.so" # define OPENGLU_LIB "libGLU.so" # endif -#endif +#endif extern "C" { -DRIVER_INIT(EGL_DRIVER) { +DRIVER_INIT(EGL_DRIVER) { return NULL; } } -int egl_init_opengl(void *erlCallbacks) +int egl_init_opengl(void *erlCallbacks) { #ifdef _WIN32 driver_init((TWinDynDriverCallbacks *) erlCallbacks); @@ -95,7 +95,7 @@ int egl_init_opengl(void *erlCallbacks) } int load_gl_functions() { - DL_CHAR * DLName = OPENGL_LIB; + DL_CHAR * DLName = (DL_CHAR *) OPENGL_LIB; DL_LIB_P LIBhandle = dlopen(DLName, RTLD_LAZY); //fprintf(stderr, "Loading GL: %s\r\n", (const char*)DLName); void * func = NULL; @@ -127,13 +127,13 @@ int load_gl_functions() { fprintf(stderr, "Could NOT load OpenGL library: %s\r\n", DLName); }; - DLName = OPENGLU_LIB; + DLName = (DL_CHAR *) OPENGLU_LIB; LIBhandle = dlopen(DLName, RTLD_LAZY); // fprintf(stderr, "Loading GLU: %s\r\n", (const char*)DLName); func = NULL; if(LIBhandle) { - for(i=0; glu_fns[i].name != NULL; i++) { + for(i=0; glu_fns[i].name != NULL; i++) { if((func = dlsym(LIBhandle, glu_fns[i].name))) { * (void **) (glu_fns[i].func) = func; } else { @@ -201,7 +201,7 @@ egl_ogla_error(GLenum errorCode) void CALLBACK egl_ogla_combine(GLdouble coords[3], void* vertex_data[4], - GLfloat w[4], + GLfloat w[4], void **dataOut) { GLdouble* vertex = tess_alloc_vertex; @@ -226,7 +226,7 @@ egl_ogla_combine(GLdouble coords[3], *dataOut = vertex; } -void init_tess() +void init_tess() { tess = gluNewTess(); @@ -237,7 +237,7 @@ void init_tess() } -void exit_tess() +void exit_tess() { gluDeleteTess(tess); } @@ -251,22 +251,22 @@ int erl_tess_impl(char* buff, ErlDrvPort port, ErlDrvTermData caller) int num_vertices; GLdouble *n; int n_pos, AP, res; - + num_vertices = * (int *) buff; buff += 8; /* Align */ n = (double *) buff; buff += 8*3; - bin = driver_alloc_binary(num_vertices*6*sizeof(GLdouble)); + bin = driver_alloc_binary(num_vertices*6*sizeof(GLdouble)); new_vertices = tess_coords = (double *) bin->orig_bytes; memcpy(tess_coords,buff,num_vertices*3*sizeof(GLdouble)); tess_alloc_vertex = tess_coords + num_vertices*3; #if 0 fprintf(stderr, "n=%d\r\n", num_vertices); -#endif +#endif vertices = (int *) driver_alloc(sizeof(int) * 16*num_vertices); - + tess_vertices = vertices; - + gluTessNormal(tess, n[0], n[1], n[2]); gluTessBeginPolygon(tess, 0); gluTessBeginContour(tess); @@ -275,9 +275,9 @@ int erl_tess_impl(char* buff, ErlDrvPort port, ErlDrvTermData caller) } gluTessEndContour(tess); gluTessEndPolygon(tess); - - n_pos = (tess_vertices - vertices); - + + n_pos = (tess_vertices - vertices); + AP = 0; ErlDrvTermData *rt; rt = (ErlDrvTermData *) driver_alloc(sizeof(ErlDrvTermData) * (13+n_pos*2)); rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "_egl_result_"); @@ -287,12 +287,12 @@ int erl_tess_impl(char* buff, ErlDrvPort port, ErlDrvTermData caller) }; rt[AP++] = ERL_DRV_NIL; rt[AP++] = ERL_DRV_LIST; rt[AP++] = n_pos+1; - rt[AP++] = ERL_DRV_BINARY; rt[AP++] = (ErlDrvTermData) bin; + rt[AP++] = ERL_DRV_BINARY; rt[AP++] = (ErlDrvTermData) bin; rt[AP++] = (tess_alloc_vertex-new_vertices)*sizeof(GLdouble); rt[AP++] = 0; - + rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; // Return tuple {list, Bin} rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; // Result tuple - + res = driver_send_term(port,caller,rt,AP); /* fprintf(stderr, "List %d: %d %d %d \r\n", */ /* res, */ diff --git a/lib/wx/c_src/gen/wxe_derived_dest.h b/lib/wx/c_src/gen/wxe_derived_dest.h index ad46a98c90..4e4aea098d 100644 --- a/lib/wx/c_src/gen/wxe_derived_dest.h +++ b/lib/wx/c_src/gen/wxe_derived_dest.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2010. All Rights Reserved. + * Copyright Ericsson AB 2008-2011. All Rights Reserved. * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in @@ -362,10 +362,22 @@ class EwxListBox : public wxListBox { EwxListBox() : wxListBox() {}; }; + class EwxListCtrl : public wxListCtrl { - public: ~EwxListCtrl() {((WxeApp *)wxTheApp)->clearPtr(this);}; + public: ~EwxListCtrl(); EwxListCtrl(wxWindow * parent,wxWindowID winid,const wxPoint& pos,const wxSize& size,long style,const wxValidator& validator) : wxListCtrl(parent,winid,pos,size,style,validator) {}; EwxListCtrl() : wxListCtrl() {}; + + int onGetItemText; + int onGetItemAttr; + int onGetItemColumnImage; + ErlDrvPort port; + + private: + virtual wxString OnGetItemText(long item, long col) const; + virtual wxListItemAttr* OnGetItemAttr(long item) const; + virtual int OnGetItemImage(long item) const; + virtual int OnGetItemColumnImage(long item, long column) const; }; class EwxListItem : public wxListItem { @@ -715,28 +727,3 @@ class EwxHtmlWindow : public wxHtmlWindow { EwxHtmlWindow() : wxHtmlWindow() {}; }; -void WxeApp::delete_object(void *ptr, wxeRefData *refd) { - switch(refd->type) { - case 24: delete (wxGridCellBoolRenderer *) ptr; break; - case 25: delete (wxGridCellBoolEditor *) ptr; break; - case 26: delete (wxGridCellFloatRenderer *) ptr; break; - case 27: delete (wxGridCellFloatEditor *) ptr; break; - case 28: delete (wxGridCellStringRenderer *) ptr; break; - case 29: delete (wxGridCellTextEditor *) ptr; break; - case 30: delete (wxGridCellChoiceEditor *) ptr; break; - case 31: delete (wxGridCellNumberRenderer *) ptr; break; - case 32: delete (wxGridCellNumberEditor *) ptr; break; - case 61: delete (wxIconBundle *) ptr; break; - case 69: delete (wxAcceleratorEntry *) ptr; break; - case 70: /* delete (wxCaret *) ptr;These objects must be deleted by owner object */ break; - case 72: delete (wxSizerFlags *) ptr; break; - case 88: /* delete (wxCalendarDateAttr *) ptr;These objects must be deleted by owner object */ break; - case 102: delete (wxTextAttr *) ptr; break; - case 154: delete (wxAuiPaneInfo *) ptr; break; - case 211: /* delete (wxFileDataObject *) ptr;These objects must be deleted by owner object */ break; - case 212: /* delete (wxTextDataObject *) ptr;These objects must be deleted by owner object */ break; - case 213: /* delete (wxBitmapDataObject *) ptr;These objects must be deleted by owner object */ break; - case 223: delete (wxLogNull *) ptr; break; - default: delete (wxObject *) ptr; -}} - diff --git a/lib/wx/c_src/gen/wxe_events.cpp b/lib/wx/c_src/gen/wxe_events.cpp index 692eef858c..b9769318af 100644 --- a/lib/wx/c_src/gen/wxe_events.cpp +++ b/lib/wx/c_src/gen/wxe_events.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2010. All Rights Reserved. + * Copyright Ericsson AB 2008-2011. All Rights Reserved. * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in @@ -37,15 +37,15 @@ int wxeEventTypeFromAtom(char *etype_atom) { wxeETmap::iterator it; for(it = etmap.begin(); it != etmap.end(); ++it) { wxeEtype * value = it->second; - if(strcmp(value->eName, etype_atom) == 0) { - if(it->first > wxEVT_USER_FIRST) { + if(strcmp(value->eName, etype_atom) == 0) { + if(it->first > wxEVT_USER_FIRST) { return it->first - wxEVT_USER_FIRST; } else { return it->first; } } - } - return -1; + } + return -1; } void initEventTable() @@ -53,254 +53,254 @@ void initEventTable() struct { int ev_type; int class_id; const char * ev_name;} event_types[] = { {wxEVT_NULL, 0, "null"}, - {wxEVT_COMMAND_BUTTON_CLICKED, 163, "command_button_clicked"}, - {wxEVT_COMMAND_CHECKBOX_CLICKED, 163, "command_checkbox_clicked"}, - {wxEVT_COMMAND_CHOICE_SELECTED, 163, "command_choice_selected"}, - {wxEVT_COMMAND_LISTBOX_SELECTED, 163, "command_listbox_selected"}, - {wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, 163, "command_listbox_doubleclicked"}, - {wxEVT_COMMAND_TEXT_UPDATED, 163, "command_text_updated"}, - {wxEVT_COMMAND_TEXT_ENTER, 163, "command_text_enter"}, - {wxEVT_COMMAND_MENU_SELECTED, 163, "command_menu_selected"}, - {wxEVT_COMMAND_SLIDER_UPDATED, 163, "command_slider_updated"}, - {wxEVT_COMMAND_RADIOBOX_SELECTED, 163, "command_radiobox_selected"}, - {wxEVT_COMMAND_RADIOBUTTON_SELECTED, 163, "command_radiobutton_selected"}, - {wxEVT_COMMAND_SCROLLBAR_UPDATED, 163, "command_scrollbar_updated"}, - {wxEVT_COMMAND_VLBOX_SELECTED, 163, "command_vlbox_selected"}, - {wxEVT_COMMAND_COMBOBOX_SELECTED, 163, "command_combobox_selected"}, - {wxEVT_COMMAND_TOOL_RCLICKED, 163, "command_tool_rclicked"}, - {wxEVT_COMMAND_TOOL_ENTER, 163, "command_tool_enter"}, - {wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, 163, "command_checklistbox_toggled"}, - {wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, 163, "command_togglebutton_clicked"}, - {wxEVT_COMMAND_LEFT_CLICK, 163, "command_left_click"}, - {wxEVT_COMMAND_LEFT_DCLICK, 163, "command_left_dclick"}, - {wxEVT_COMMAND_RIGHT_CLICK, 163, "command_right_click"}, - {wxEVT_COMMAND_SET_FOCUS, 163, "command_set_focus"}, - {wxEVT_COMMAND_KILL_FOCUS, 163, "command_kill_focus"}, - {wxEVT_COMMAND_ENTER, 163, "command_enter"}, - {wxEVT_SCROLL_TOP, 164, "scroll_top"}, - {wxEVT_SCROLL_BOTTOM, 164, "scroll_bottom"}, - {wxEVT_SCROLL_LINEUP, 164, "scroll_lineup"}, - {wxEVT_SCROLL_LINEDOWN, 164, "scroll_linedown"}, - {wxEVT_SCROLL_PAGEUP, 164, "scroll_pageup"}, - {wxEVT_SCROLL_PAGEDOWN, 164, "scroll_pagedown"}, - {wxEVT_SCROLL_THUMBTRACK, 164, "scroll_thumbtrack"}, - {wxEVT_SCROLL_THUMBRELEASE, 164, "scroll_thumbrelease"}, - {wxEVT_SCROLL_CHANGED, 164, "scroll_changed"}, - {wxEVT_SCROLLWIN_TOP, 165, "scrollwin_top"}, - {wxEVT_SCROLLWIN_BOTTOM, 165, "scrollwin_bottom"}, - {wxEVT_SCROLLWIN_LINEUP, 165, "scrollwin_lineup"}, - {wxEVT_SCROLLWIN_LINEDOWN, 165, "scrollwin_linedown"}, - {wxEVT_SCROLLWIN_PAGEUP, 165, "scrollwin_pageup"}, - {wxEVT_SCROLLWIN_PAGEDOWN, 165, "scrollwin_pagedown"}, - {wxEVT_SCROLLWIN_THUMBTRACK, 165, "scrollwin_thumbtrack"}, - {wxEVT_SCROLLWIN_THUMBRELEASE, 165, "scrollwin_thumbrelease"}, - {wxEVT_LEFT_DOWN, 166, "left_down"}, - {wxEVT_LEFT_UP, 166, "left_up"}, - {wxEVT_MIDDLE_DOWN, 166, "middle_down"}, - {wxEVT_MIDDLE_UP, 166, "middle_up"}, - {wxEVT_RIGHT_DOWN, 166, "right_down"}, - {wxEVT_RIGHT_UP, 166, "right_up"}, - {wxEVT_MOTION, 166, "motion"}, - {wxEVT_ENTER_WINDOW, 166, "enter_window"}, - {wxEVT_LEAVE_WINDOW, 166, "leave_window"}, - {wxEVT_LEFT_DCLICK, 166, "left_dclick"}, - {wxEVT_MIDDLE_DCLICK, 166, "middle_dclick"}, - {wxEVT_RIGHT_DCLICK, 166, "right_dclick"}, - {wxEVT_MOUSEWHEEL, 166, "mousewheel"}, - {wxEVT_NC_LEFT_DOWN, 166, "nc_left_down"}, - {wxEVT_NC_LEFT_UP, 166, "nc_left_up"}, - {wxEVT_NC_MIDDLE_DOWN, 166, "nc_middle_down"}, - {wxEVT_NC_MIDDLE_UP, 166, "nc_middle_up"}, - {wxEVT_NC_RIGHT_DOWN, 166, "nc_right_down"}, - {wxEVT_NC_RIGHT_UP, 166, "nc_right_up"}, - {wxEVT_NC_MOTION, 166, "nc_motion"}, - {wxEVT_NC_ENTER_WINDOW, 166, "nc_enter_window"}, - {wxEVT_NC_LEAVE_WINDOW, 166, "nc_leave_window"}, - {wxEVT_NC_LEFT_DCLICK, 166, "nc_left_dclick"}, - {wxEVT_NC_MIDDLE_DCLICK, 166, "nc_middle_dclick"}, - {wxEVT_NC_RIGHT_DCLICK, 166, "nc_right_dclick"}, - {wxEVT_SET_CURSOR, 167, "set_cursor"}, - {wxEVT_CHAR, 168, "char"}, - {wxEVT_CHAR_HOOK, 168, "char_hook"}, - {wxEVT_KEY_DOWN, 168, "key_down"}, - {wxEVT_KEY_UP, 168, "key_up"}, - {wxEVT_SIZE, 169, "size"}, - {wxEVT_MOVE, 170, "move"}, - {wxEVT_PAINT, 171, "paint"}, - {wxEVT_PAINT_ICON, 171, "paint_icon"}, - {wxEVT_NC_PAINT, 172, "nc_paint"}, - {wxEVT_ERASE_BACKGROUND, 173, "erase_background"}, - {wxEVT_SET_FOCUS, 174, "set_focus"}, - {wxEVT_KILL_FOCUS, 174, "kill_focus"}, - {wxEVT_CHILD_FOCUS, 175, "child_focus"}, - {wxEVT_MENU_OPEN, 176, "menu_open"}, - {wxEVT_MENU_CLOSE, 176, "menu_close"}, - {wxEVT_MENU_HIGHLIGHT, 176, "menu_highlight"}, - {wxEVT_CLOSE_WINDOW, 177, "close_window"}, - {wxEVT_END_SESSION, 177, "end_session"}, - {wxEVT_QUERY_END_SESSION, 177, "query_end_session"}, - {wxEVT_SHOW, 178, "show"}, - {wxEVT_ICONIZE, 179, "iconize"}, - {wxEVT_MAXIMIZE, 180, "maximize"}, - {wxEVT_JOY_BUTTON_DOWN, 181, "joy_button_down"}, - {wxEVT_JOY_BUTTON_UP, 181, "joy_button_up"}, - {wxEVT_JOY_MOVE, 181, "joy_move"}, - {wxEVT_JOY_ZMOVE, 181, "joy_zmove"}, - {wxEVT_UPDATE_UI, 182, "update_ui"}, - {wxEVT_SYS_COLOUR_CHANGED, 183, "sys_colour_changed"}, - {wxEVT_MOUSE_CAPTURE_CHANGED, 184, "mouse_capture_changed"}, - {wxEVT_DISPLAY_CHANGED, 185, "display_changed"}, - {wxEVT_PALETTE_CHANGED, 186, "palette_changed"}, - {wxEVT_QUERY_NEW_PALETTE, 187, "query_new_palette"}, - {wxEVT_NAVIGATION_KEY, 188, "navigation_key"}, - {wxEVT_CREATE, 189, "create"}, - {wxEVT_DESTROY, 190, "destroy"}, - {wxEVT_HELP, 191, "help"}, - {wxEVT_DETAILED_HELP, 191, "detailed_help"}, - {wxEVT_CONTEXT_MENU, 192, "context_menu"}, - {wxEVT_IDLE, 193, "idle"}, - {wxEVT_GRID_CELL_LEFT_CLICK, 194, "grid_cell_left_click"}, - {wxEVT_GRID_CELL_RIGHT_CLICK, 194, "grid_cell_right_click"}, - {wxEVT_GRID_CELL_LEFT_DCLICK, 194, "grid_cell_left_dclick"}, - {wxEVT_GRID_CELL_RIGHT_DCLICK, 194, "grid_cell_right_dclick"}, - {wxEVT_GRID_LABEL_LEFT_CLICK, 194, "grid_label_left_click"}, - {wxEVT_GRID_LABEL_RIGHT_CLICK, 194, "grid_label_right_click"}, - {wxEVT_GRID_LABEL_LEFT_DCLICK, 194, "grid_label_left_dclick"}, - {wxEVT_GRID_LABEL_RIGHT_DCLICK, 194, "grid_label_right_dclick"}, - {wxEVT_GRID_ROW_SIZE, 194, "grid_row_size"}, - {wxEVT_GRID_COL_SIZE, 194, "grid_col_size"}, - {wxEVT_GRID_RANGE_SELECT, 194, "grid_range_select"}, - {wxEVT_GRID_CELL_CHANGE, 194, "grid_cell_change"}, - {wxEVT_GRID_SELECT_CELL, 194, "grid_select_cell"}, - {wxEVT_GRID_EDITOR_SHOWN, 194, "grid_editor_shown"}, - {wxEVT_GRID_EDITOR_HIDDEN, 194, "grid_editor_hidden"}, - {wxEVT_GRID_EDITOR_CREATED, 194, "grid_editor_created"}, - {wxEVT_GRID_CELL_BEGIN_DRAG, 194, "grid_cell_begin_drag"}, - {wxEVT_SASH_DRAGGED, 196, "sash_dragged"}, - {wxEVT_COMMAND_LIST_BEGIN_DRAG, 197, "command_list_begin_drag"}, - {wxEVT_COMMAND_LIST_BEGIN_RDRAG, 197, "command_list_begin_rdrag"}, - {wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, 197, "command_list_begin_label_edit"}, - {wxEVT_COMMAND_LIST_END_LABEL_EDIT, 197, "command_list_end_label_edit"}, - {wxEVT_COMMAND_LIST_DELETE_ITEM, 197, "command_list_delete_item"}, - {wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, 197, "command_list_delete_all_items"}, - {wxEVT_COMMAND_LIST_KEY_DOWN, 197, "command_list_key_down"}, - {wxEVT_COMMAND_LIST_INSERT_ITEM, 197, "command_list_insert_item"}, - {wxEVT_COMMAND_LIST_COL_CLICK, 197, "command_list_col_click"}, - {wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, 197, "command_list_col_right_click"}, - {wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, 197, "command_list_col_begin_drag"}, - {wxEVT_COMMAND_LIST_COL_DRAGGING, 197, "command_list_col_dragging"}, - {wxEVT_COMMAND_LIST_COL_END_DRAG, 197, "command_list_col_end_drag"}, - {wxEVT_COMMAND_LIST_ITEM_SELECTED, 197, "command_list_item_selected"}, - {wxEVT_COMMAND_LIST_ITEM_DESELECTED, 197, "command_list_item_deselected"}, - {wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, 197, "command_list_item_right_click"}, - {wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, 197, "command_list_item_middle_click"}, - {wxEVT_COMMAND_LIST_ITEM_ACTIVATED, 197, "command_list_item_activated"}, - {wxEVT_COMMAND_LIST_ITEM_FOCUSED, 197, "command_list_item_focused"}, - {wxEVT_COMMAND_LIST_CACHE_HINT, 197, "command_list_cache_hint"}, - {wxEVT_DATE_CHANGED, 198, "date_changed"}, - {wxEVT_CALENDAR_SEL_CHANGED, 199, "calendar_sel_changed"}, - {wxEVT_CALENDAR_DAY_CHANGED, 199, "calendar_day_changed"}, - {wxEVT_CALENDAR_MONTH_CHANGED, 199, "calendar_month_changed"}, - {wxEVT_CALENDAR_YEAR_CHANGED, 199, "calendar_year_changed"}, - {wxEVT_CALENDAR_DOUBLECLICKED, 199, "calendar_doubleclicked"}, - {wxEVT_CALENDAR_WEEKDAY_CLICKED, 199, "calendar_weekday_clicked"}, - {wxEVT_COMMAND_FILEPICKER_CHANGED, 200, "command_filepicker_changed"}, - {wxEVT_COMMAND_DIRPICKER_CHANGED, 200, "command_dirpicker_changed"}, - {wxEVT_COMMAND_COLOURPICKER_CHANGED, 201, "command_colourpicker_changed"}, - {wxEVT_COMMAND_FONTPICKER_CHANGED, 202, "command_fontpicker_changed"}, - {wxEVT_STC_CHANGE, 203, "stc_change"}, - {wxEVT_STC_STYLENEEDED, 203, "stc_styleneeded"}, - {wxEVT_STC_CHARADDED, 203, "stc_charadded"}, - {wxEVT_STC_SAVEPOINTREACHED, 203, "stc_savepointreached"}, - {wxEVT_STC_SAVEPOINTLEFT, 203, "stc_savepointleft"}, - {wxEVT_STC_ROMODIFYATTEMPT, 203, "stc_romodifyattempt"}, - {wxEVT_STC_KEY, 203, "stc_key"}, - {wxEVT_STC_DOUBLECLICK, 203, "stc_doubleclick"}, - {wxEVT_STC_UPDATEUI, 203, "stc_updateui"}, - {wxEVT_STC_MODIFIED, 203, "stc_modified"}, - {wxEVT_STC_MACRORECORD, 203, "stc_macrorecord"}, - {wxEVT_STC_MARGINCLICK, 203, "stc_marginclick"}, - {wxEVT_STC_NEEDSHOWN, 203, "stc_needshown"}, - {wxEVT_STC_PAINTED, 203, "stc_painted"}, - {wxEVT_STC_USERLISTSELECTION, 203, "stc_userlistselection"}, - {wxEVT_STC_URIDROPPED, 203, "stc_uridropped"}, - {wxEVT_STC_DWELLSTART, 203, "stc_dwellstart"}, - {wxEVT_STC_DWELLEND, 203, "stc_dwellend"}, - {wxEVT_STC_START_DRAG, 203, "stc_start_drag"}, - {wxEVT_STC_DRAG_OVER, 203, "stc_drag_over"}, - {wxEVT_STC_DO_DROP, 203, "stc_do_drop"}, - {wxEVT_STC_ZOOM, 203, "stc_zoom"}, - {wxEVT_STC_HOTSPOT_CLICK, 203, "stc_hotspot_click"}, - {wxEVT_STC_HOTSPOT_DCLICK, 203, "stc_hotspot_dclick"}, - {wxEVT_STC_CALLTIP_CLICK, 203, "stc_calltip_click"}, - {wxEVT_STC_AUTOCOMP_SELECTION, 203, "stc_autocomp_selection"}, - {wxEVT_COMMAND_TREE_BEGIN_DRAG, 208, "command_tree_begin_drag"}, - {wxEVT_COMMAND_TREE_BEGIN_RDRAG, 208, "command_tree_begin_rdrag"}, - {wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, 208, "command_tree_begin_label_edit"}, - {wxEVT_COMMAND_TREE_END_LABEL_EDIT, 208, "command_tree_end_label_edit"}, - {wxEVT_COMMAND_TREE_DELETE_ITEM, 208, "command_tree_delete_item"}, - {wxEVT_COMMAND_TREE_GET_INFO, 208, "command_tree_get_info"}, - {wxEVT_COMMAND_TREE_SET_INFO, 208, "command_tree_set_info"}, - {wxEVT_COMMAND_TREE_ITEM_EXPANDED, 208, "command_tree_item_expanded"}, - {wxEVT_COMMAND_TREE_ITEM_EXPANDING, 208, "command_tree_item_expanding"}, - {wxEVT_COMMAND_TREE_ITEM_COLLAPSED, 208, "command_tree_item_collapsed"}, - {wxEVT_COMMAND_TREE_ITEM_COLLAPSING, 208, "command_tree_item_collapsing"}, - {wxEVT_COMMAND_TREE_SEL_CHANGED, 208, "command_tree_sel_changed"}, - {wxEVT_COMMAND_TREE_SEL_CHANGING, 208, "command_tree_sel_changing"}, - {wxEVT_COMMAND_TREE_KEY_DOWN, 208, "command_tree_key_down"}, - {wxEVT_COMMAND_TREE_ITEM_ACTIVATED, 208, "command_tree_item_activated"}, - {wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK, 208, "command_tree_item_right_click"}, - {wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK, 208, "command_tree_item_middle_click"}, - {wxEVT_COMMAND_TREE_END_DRAG, 208, "command_tree_end_drag"}, - {wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK, 208, "command_tree_state_image_click"}, - {wxEVT_COMMAND_TREE_ITEM_GETTOOLTIP, 208, "command_tree_item_gettooltip"}, - {wxEVT_COMMAND_TREE_ITEM_MENU, 208, "command_tree_item_menu"}, - {wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, 209, "command_notebook_page_changed"}, - {wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, 209, "command_notebook_page_changing"}, - {wxEVT_COMMAND_SPINCTRL_UPDATED, 215, "command_spinctrl_updated"}, - {wxEVT_SCROLL_LINEUP + wxEVT_USER_FIRST, 164, "spin_up"}, - {wxEVT_SCROLL_LINEDOWN + wxEVT_USER_FIRST, 164, "spin_down"}, - {wxEVT_SCROLL_THUMBTRACK + wxEVT_USER_FIRST, 164, "spin"}, - {wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, 217, "command_splitter_sash_pos_changed"}, - {wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, 217, "command_splitter_sash_pos_changing"}, - {wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, 217, "command_splitter_doubleclicked"}, - {wxEVT_COMMAND_SPLITTER_UNSPLIT, 217, "command_splitter_unsplit"}, - {wxEVT_COMMAND_HTML_LINK_CLICKED, 219, "command_html_link_clicked"}, - {wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE, 221, "command_auinotebook_page_close"}, - {wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED, 221, "command_auinotebook_page_changed"}, - {wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, 221, "command_auinotebook_page_changing"}, - {wxEVT_COMMAND_AUINOTEBOOK_BUTTON, 221, "command_auinotebook_button"}, - {wxEVT_COMMAND_AUINOTEBOOK_BEGIN_DRAG, 221, "command_auinotebook_begin_drag"}, - {wxEVT_COMMAND_AUINOTEBOOK_END_DRAG, 221, "command_auinotebook_end_drag"}, - {wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION, 221, "command_auinotebook_drag_motion"}, - {wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, 221, "command_auinotebook_allow_dnd"}, + {wxEVT_COMMAND_BUTTON_CLICKED, 164, "command_button_clicked"}, + {wxEVT_COMMAND_CHECKBOX_CLICKED, 164, "command_checkbox_clicked"}, + {wxEVT_COMMAND_CHOICE_SELECTED, 164, "command_choice_selected"}, + {wxEVT_COMMAND_LISTBOX_SELECTED, 164, "command_listbox_selected"}, + {wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, 164, "command_listbox_doubleclicked"}, + {wxEVT_COMMAND_TEXT_UPDATED, 164, "command_text_updated"}, + {wxEVT_COMMAND_TEXT_ENTER, 164, "command_text_enter"}, + {wxEVT_COMMAND_MENU_SELECTED, 164, "command_menu_selected"}, + {wxEVT_COMMAND_SLIDER_UPDATED, 164, "command_slider_updated"}, + {wxEVT_COMMAND_RADIOBOX_SELECTED, 164, "command_radiobox_selected"}, + {wxEVT_COMMAND_RADIOBUTTON_SELECTED, 164, "command_radiobutton_selected"}, + {wxEVT_COMMAND_SCROLLBAR_UPDATED, 164, "command_scrollbar_updated"}, + {wxEVT_COMMAND_VLBOX_SELECTED, 164, "command_vlbox_selected"}, + {wxEVT_COMMAND_COMBOBOX_SELECTED, 164, "command_combobox_selected"}, + {wxEVT_COMMAND_TOOL_RCLICKED, 164, "command_tool_rclicked"}, + {wxEVT_COMMAND_TOOL_ENTER, 164, "command_tool_enter"}, + {wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, 164, "command_checklistbox_toggled"}, + {wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, 164, "command_togglebutton_clicked"}, + {wxEVT_COMMAND_LEFT_CLICK, 164, "command_left_click"}, + {wxEVT_COMMAND_LEFT_DCLICK, 164, "command_left_dclick"}, + {wxEVT_COMMAND_RIGHT_CLICK, 164, "command_right_click"}, + {wxEVT_COMMAND_SET_FOCUS, 164, "command_set_focus"}, + {wxEVT_COMMAND_KILL_FOCUS, 164, "command_kill_focus"}, + {wxEVT_COMMAND_ENTER, 164, "command_enter"}, + {wxEVT_SCROLL_TOP, 165, "scroll_top"}, + {wxEVT_SCROLL_BOTTOM, 165, "scroll_bottom"}, + {wxEVT_SCROLL_LINEUP, 165, "scroll_lineup"}, + {wxEVT_SCROLL_LINEDOWN, 165, "scroll_linedown"}, + {wxEVT_SCROLL_PAGEUP, 165, "scroll_pageup"}, + {wxEVT_SCROLL_PAGEDOWN, 165, "scroll_pagedown"}, + {wxEVT_SCROLL_THUMBTRACK, 165, "scroll_thumbtrack"}, + {wxEVT_SCROLL_THUMBRELEASE, 165, "scroll_thumbrelease"}, + {wxEVT_SCROLL_CHANGED, 165, "scroll_changed"}, + {wxEVT_SCROLLWIN_TOP, 166, "scrollwin_top"}, + {wxEVT_SCROLLWIN_BOTTOM, 166, "scrollwin_bottom"}, + {wxEVT_SCROLLWIN_LINEUP, 166, "scrollwin_lineup"}, + {wxEVT_SCROLLWIN_LINEDOWN, 166, "scrollwin_linedown"}, + {wxEVT_SCROLLWIN_PAGEUP, 166, "scrollwin_pageup"}, + {wxEVT_SCROLLWIN_PAGEDOWN, 166, "scrollwin_pagedown"}, + {wxEVT_SCROLLWIN_THUMBTRACK, 166, "scrollwin_thumbtrack"}, + {wxEVT_SCROLLWIN_THUMBRELEASE, 166, "scrollwin_thumbrelease"}, + {wxEVT_LEFT_DOWN, 167, "left_down"}, + {wxEVT_LEFT_UP, 167, "left_up"}, + {wxEVT_MIDDLE_DOWN, 167, "middle_down"}, + {wxEVT_MIDDLE_UP, 167, "middle_up"}, + {wxEVT_RIGHT_DOWN, 167, "right_down"}, + {wxEVT_RIGHT_UP, 167, "right_up"}, + {wxEVT_MOTION, 167, "motion"}, + {wxEVT_ENTER_WINDOW, 167, "enter_window"}, + {wxEVT_LEAVE_WINDOW, 167, "leave_window"}, + {wxEVT_LEFT_DCLICK, 167, "left_dclick"}, + {wxEVT_MIDDLE_DCLICK, 167, "middle_dclick"}, + {wxEVT_RIGHT_DCLICK, 167, "right_dclick"}, + {wxEVT_MOUSEWHEEL, 167, "mousewheel"}, + {wxEVT_NC_LEFT_DOWN, 167, "nc_left_down"}, + {wxEVT_NC_LEFT_UP, 167, "nc_left_up"}, + {wxEVT_NC_MIDDLE_DOWN, 167, "nc_middle_down"}, + {wxEVT_NC_MIDDLE_UP, 167, "nc_middle_up"}, + {wxEVT_NC_RIGHT_DOWN, 167, "nc_right_down"}, + {wxEVT_NC_RIGHT_UP, 167, "nc_right_up"}, + {wxEVT_NC_MOTION, 167, "nc_motion"}, + {wxEVT_NC_ENTER_WINDOW, 167, "nc_enter_window"}, + {wxEVT_NC_LEAVE_WINDOW, 167, "nc_leave_window"}, + {wxEVT_NC_LEFT_DCLICK, 167, "nc_left_dclick"}, + {wxEVT_NC_MIDDLE_DCLICK, 167, "nc_middle_dclick"}, + {wxEVT_NC_RIGHT_DCLICK, 167, "nc_right_dclick"}, + {wxEVT_SET_CURSOR, 168, "set_cursor"}, + {wxEVT_CHAR, 169, "char"}, + {wxEVT_CHAR_HOOK, 169, "char_hook"}, + {wxEVT_KEY_DOWN, 169, "key_down"}, + {wxEVT_KEY_UP, 169, "key_up"}, + {wxEVT_SIZE, 170, "size"}, + {wxEVT_MOVE, 171, "move"}, + {wxEVT_PAINT, 172, "paint"}, + {wxEVT_PAINT_ICON, 172, "paint_icon"}, + {wxEVT_NC_PAINT, 173, "nc_paint"}, + {wxEVT_ERASE_BACKGROUND, 174, "erase_background"}, + {wxEVT_SET_FOCUS, 175, "set_focus"}, + {wxEVT_KILL_FOCUS, 175, "kill_focus"}, + {wxEVT_CHILD_FOCUS, 176, "child_focus"}, + {wxEVT_MENU_OPEN, 177, "menu_open"}, + {wxEVT_MENU_CLOSE, 177, "menu_close"}, + {wxEVT_MENU_HIGHLIGHT, 177, "menu_highlight"}, + {wxEVT_CLOSE_WINDOW, 178, "close_window"}, + {wxEVT_END_SESSION, 178, "end_session"}, + {wxEVT_QUERY_END_SESSION, 178, "query_end_session"}, + {wxEVT_SHOW, 179, "show"}, + {wxEVT_ICONIZE, 180, "iconize"}, + {wxEVT_MAXIMIZE, 181, "maximize"}, + {wxEVT_JOY_BUTTON_DOWN, 182, "joy_button_down"}, + {wxEVT_JOY_BUTTON_UP, 182, "joy_button_up"}, + {wxEVT_JOY_MOVE, 182, "joy_move"}, + {wxEVT_JOY_ZMOVE, 182, "joy_zmove"}, + {wxEVT_UPDATE_UI, 183, "update_ui"}, + {wxEVT_SYS_COLOUR_CHANGED, 184, "sys_colour_changed"}, + {wxEVT_MOUSE_CAPTURE_CHANGED, 185, "mouse_capture_changed"}, + {wxEVT_DISPLAY_CHANGED, 186, "display_changed"}, + {wxEVT_PALETTE_CHANGED, 187, "palette_changed"}, + {wxEVT_QUERY_NEW_PALETTE, 188, "query_new_palette"}, + {wxEVT_NAVIGATION_KEY, 189, "navigation_key"}, + {wxEVT_CREATE, 190, "create"}, + {wxEVT_DESTROY, 191, "destroy"}, + {wxEVT_HELP, 192, "help"}, + {wxEVT_DETAILED_HELP, 192, "detailed_help"}, + {wxEVT_CONTEXT_MENU, 193, "context_menu"}, + {wxEVT_IDLE, 194, "idle"}, + {wxEVT_GRID_CELL_LEFT_CLICK, 195, "grid_cell_left_click"}, + {wxEVT_GRID_CELL_RIGHT_CLICK, 195, "grid_cell_right_click"}, + {wxEVT_GRID_CELL_LEFT_DCLICK, 195, "grid_cell_left_dclick"}, + {wxEVT_GRID_CELL_RIGHT_DCLICK, 195, "grid_cell_right_dclick"}, + {wxEVT_GRID_LABEL_LEFT_CLICK, 195, "grid_label_left_click"}, + {wxEVT_GRID_LABEL_RIGHT_CLICK, 195, "grid_label_right_click"}, + {wxEVT_GRID_LABEL_LEFT_DCLICK, 195, "grid_label_left_dclick"}, + {wxEVT_GRID_LABEL_RIGHT_DCLICK, 195, "grid_label_right_dclick"}, + {wxEVT_GRID_ROW_SIZE, 195, "grid_row_size"}, + {wxEVT_GRID_COL_SIZE, 195, "grid_col_size"}, + {wxEVT_GRID_RANGE_SELECT, 195, "grid_range_select"}, + {wxEVT_GRID_CELL_CHANGE, 195, "grid_cell_change"}, + {wxEVT_GRID_SELECT_CELL, 195, "grid_select_cell"}, + {wxEVT_GRID_EDITOR_SHOWN, 195, "grid_editor_shown"}, + {wxEVT_GRID_EDITOR_HIDDEN, 195, "grid_editor_hidden"}, + {wxEVT_GRID_EDITOR_CREATED, 195, "grid_editor_created"}, + {wxEVT_GRID_CELL_BEGIN_DRAG, 195, "grid_cell_begin_drag"}, + {wxEVT_SASH_DRAGGED, 197, "sash_dragged"}, + {wxEVT_COMMAND_LIST_BEGIN_DRAG, 198, "command_list_begin_drag"}, + {wxEVT_COMMAND_LIST_BEGIN_RDRAG, 198, "command_list_begin_rdrag"}, + {wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, 198, "command_list_begin_label_edit"}, + {wxEVT_COMMAND_LIST_END_LABEL_EDIT, 198, "command_list_end_label_edit"}, + {wxEVT_COMMAND_LIST_DELETE_ITEM, 198, "command_list_delete_item"}, + {wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, 198, "command_list_delete_all_items"}, + {wxEVT_COMMAND_LIST_KEY_DOWN, 198, "command_list_key_down"}, + {wxEVT_COMMAND_LIST_INSERT_ITEM, 198, "command_list_insert_item"}, + {wxEVT_COMMAND_LIST_COL_CLICK, 198, "command_list_col_click"}, + {wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, 198, "command_list_col_right_click"}, + {wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, 198, "command_list_col_begin_drag"}, + {wxEVT_COMMAND_LIST_COL_DRAGGING, 198, "command_list_col_dragging"}, + {wxEVT_COMMAND_LIST_COL_END_DRAG, 198, "command_list_col_end_drag"}, + {wxEVT_COMMAND_LIST_ITEM_SELECTED, 198, "command_list_item_selected"}, + {wxEVT_COMMAND_LIST_ITEM_DESELECTED, 198, "command_list_item_deselected"}, + {wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, 198, "command_list_item_right_click"}, + {wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, 198, "command_list_item_middle_click"}, + {wxEVT_COMMAND_LIST_ITEM_ACTIVATED, 198, "command_list_item_activated"}, + {wxEVT_COMMAND_LIST_ITEM_FOCUSED, 198, "command_list_item_focused"}, + {wxEVT_COMMAND_LIST_CACHE_HINT, 198, "command_list_cache_hint"}, + {wxEVT_DATE_CHANGED, 199, "date_changed"}, + {wxEVT_CALENDAR_SEL_CHANGED, 200, "calendar_sel_changed"}, + {wxEVT_CALENDAR_DAY_CHANGED, 200, "calendar_day_changed"}, + {wxEVT_CALENDAR_MONTH_CHANGED, 200, "calendar_month_changed"}, + {wxEVT_CALENDAR_YEAR_CHANGED, 200, "calendar_year_changed"}, + {wxEVT_CALENDAR_DOUBLECLICKED, 200, "calendar_doubleclicked"}, + {wxEVT_CALENDAR_WEEKDAY_CLICKED, 200, "calendar_weekday_clicked"}, + {wxEVT_COMMAND_FILEPICKER_CHANGED, 201, "command_filepicker_changed"}, + {wxEVT_COMMAND_DIRPICKER_CHANGED, 201, "command_dirpicker_changed"}, + {wxEVT_COMMAND_COLOURPICKER_CHANGED, 202, "command_colourpicker_changed"}, + {wxEVT_COMMAND_FONTPICKER_CHANGED, 203, "command_fontpicker_changed"}, + {wxEVT_STC_CHANGE, 204, "stc_change"}, + {wxEVT_STC_STYLENEEDED, 204, "stc_styleneeded"}, + {wxEVT_STC_CHARADDED, 204, "stc_charadded"}, + {wxEVT_STC_SAVEPOINTREACHED, 204, "stc_savepointreached"}, + {wxEVT_STC_SAVEPOINTLEFT, 204, "stc_savepointleft"}, + {wxEVT_STC_ROMODIFYATTEMPT, 204, "stc_romodifyattempt"}, + {wxEVT_STC_KEY, 204, "stc_key"}, + {wxEVT_STC_DOUBLECLICK, 204, "stc_doubleclick"}, + {wxEVT_STC_UPDATEUI, 204, "stc_updateui"}, + {wxEVT_STC_MODIFIED, 204, "stc_modified"}, + {wxEVT_STC_MACRORECORD, 204, "stc_macrorecord"}, + {wxEVT_STC_MARGINCLICK, 204, "stc_marginclick"}, + {wxEVT_STC_NEEDSHOWN, 204, "stc_needshown"}, + {wxEVT_STC_PAINTED, 204, "stc_painted"}, + {wxEVT_STC_USERLISTSELECTION, 204, "stc_userlistselection"}, + {wxEVT_STC_URIDROPPED, 204, "stc_uridropped"}, + {wxEVT_STC_DWELLSTART, 204, "stc_dwellstart"}, + {wxEVT_STC_DWELLEND, 204, "stc_dwellend"}, + {wxEVT_STC_START_DRAG, 204, "stc_start_drag"}, + {wxEVT_STC_DRAG_OVER, 204, "stc_drag_over"}, + {wxEVT_STC_DO_DROP, 204, "stc_do_drop"}, + {wxEVT_STC_ZOOM, 204, "stc_zoom"}, + {wxEVT_STC_HOTSPOT_CLICK, 204, "stc_hotspot_click"}, + {wxEVT_STC_HOTSPOT_DCLICK, 204, "stc_hotspot_dclick"}, + {wxEVT_STC_CALLTIP_CLICK, 204, "stc_calltip_click"}, + {wxEVT_STC_AUTOCOMP_SELECTION, 204, "stc_autocomp_selection"}, + {wxEVT_COMMAND_TREE_BEGIN_DRAG, 209, "command_tree_begin_drag"}, + {wxEVT_COMMAND_TREE_BEGIN_RDRAG, 209, "command_tree_begin_rdrag"}, + {wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, 209, "command_tree_begin_label_edit"}, + {wxEVT_COMMAND_TREE_END_LABEL_EDIT, 209, "command_tree_end_label_edit"}, + {wxEVT_COMMAND_TREE_DELETE_ITEM, 209, "command_tree_delete_item"}, + {wxEVT_COMMAND_TREE_GET_INFO, 209, "command_tree_get_info"}, + {wxEVT_COMMAND_TREE_SET_INFO, 209, "command_tree_set_info"}, + {wxEVT_COMMAND_TREE_ITEM_EXPANDED, 209, "command_tree_item_expanded"}, + {wxEVT_COMMAND_TREE_ITEM_EXPANDING, 209, "command_tree_item_expanding"}, + {wxEVT_COMMAND_TREE_ITEM_COLLAPSED, 209, "command_tree_item_collapsed"}, + {wxEVT_COMMAND_TREE_ITEM_COLLAPSING, 209, "command_tree_item_collapsing"}, + {wxEVT_COMMAND_TREE_SEL_CHANGED, 209, "command_tree_sel_changed"}, + {wxEVT_COMMAND_TREE_SEL_CHANGING, 209, "command_tree_sel_changing"}, + {wxEVT_COMMAND_TREE_KEY_DOWN, 209, "command_tree_key_down"}, + {wxEVT_COMMAND_TREE_ITEM_ACTIVATED, 209, "command_tree_item_activated"}, + {wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK, 209, "command_tree_item_right_click"}, + {wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK, 209, "command_tree_item_middle_click"}, + {wxEVT_COMMAND_TREE_END_DRAG, 209, "command_tree_end_drag"}, + {wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK, 209, "command_tree_state_image_click"}, + {wxEVT_COMMAND_TREE_ITEM_GETTOOLTIP, 209, "command_tree_item_gettooltip"}, + {wxEVT_COMMAND_TREE_ITEM_MENU, 209, "command_tree_item_menu"}, + {wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, 210, "command_notebook_page_changed"}, + {wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, 210, "command_notebook_page_changing"}, + {wxEVT_COMMAND_SPINCTRL_UPDATED, 216, "command_spinctrl_updated"}, + {wxEVT_SCROLL_LINEUP + wxEVT_USER_FIRST, 165, "spin_up"}, + {wxEVT_SCROLL_LINEDOWN + wxEVT_USER_FIRST, 165, "spin_down"}, + {wxEVT_SCROLL_THUMBTRACK + wxEVT_USER_FIRST, 165, "spin"}, + {wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, 218, "command_splitter_sash_pos_changed"}, + {wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, 218, "command_splitter_sash_pos_changing"}, + {wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, 218, "command_splitter_doubleclicked"}, + {wxEVT_COMMAND_SPLITTER_UNSPLIT, 218, "command_splitter_unsplit"}, + {wxEVT_COMMAND_HTML_LINK_CLICKED, 220, "command_html_link_clicked"}, + {wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE, 222, "command_auinotebook_page_close"}, + {wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED, 222, "command_auinotebook_page_changed"}, + {wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, 222, "command_auinotebook_page_changing"}, + {wxEVT_COMMAND_AUINOTEBOOK_BUTTON, 222, "command_auinotebook_button"}, + {wxEVT_COMMAND_AUINOTEBOOK_BEGIN_DRAG, 222, "command_auinotebook_begin_drag"}, + {wxEVT_COMMAND_AUINOTEBOOK_END_DRAG, 222, "command_auinotebook_end_drag"}, + {wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION, 222, "command_auinotebook_drag_motion"}, + {wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, 222, "command_auinotebook_allow_dnd"}, #if wxCHECK_VERSION(2,8,5) - {wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, 221, "command_auinotebook_tab_middle_down"}, + {wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, 222, "command_auinotebook_tab_middle_down"}, #endif #if wxCHECK_VERSION(2,8,5) - {wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP, 221, "command_auinotebook_tab_middle_up"}, + {wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP, 222, "command_auinotebook_tab_middle_up"}, #endif #if wxCHECK_VERSION(2,8,5) - {wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, 221, "command_auinotebook_tab_right_down"}, + {wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, 222, "command_auinotebook_tab_right_down"}, #endif #if wxCHECK_VERSION(2,8,5) - {wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, 221, "command_auinotebook_tab_right_up"}, + {wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, 222, "command_auinotebook_tab_right_up"}, #endif #if wxCHECK_VERSION(2,8,5) - {wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSED, 221, "command_auinotebook_page_closed"}, + {wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSED, 222, "command_auinotebook_page_closed"}, #endif #if wxCHECK_VERSION(2,8,5) - {wxEVT_COMMAND_AUINOTEBOOK_DRAG_DONE, 221, "command_auinotebook_drag_done"}, + {wxEVT_COMMAND_AUINOTEBOOK_DRAG_DONE, 222, "command_auinotebook_drag_done"}, #endif #if wxCHECK_VERSION(2,8,5) - {wxEVT_COMMAND_AUINOTEBOOK_BG_DCLICK, 221, "command_auinotebook_bg_dclick"}, + {wxEVT_COMMAND_AUINOTEBOOK_BG_DCLICK, 222, "command_auinotebook_bg_dclick"}, #endif - {wxEVT_AUI_PANE_BUTTON, 222, "aui_pane_button"}, - {wxEVT_AUI_PANE_CLOSE, 222, "aui_pane_close"}, - {wxEVT_AUI_PANE_MAXIMIZE, 222, "aui_pane_maximize"}, - {wxEVT_AUI_PANE_RESTORE, 222, "aui_pane_restore"}, - {wxEVT_AUI_RENDER, 222, "aui_render"}, - {wxEVT_AUI_FIND_MANAGER, 222, "aui_find_manager"}, + {wxEVT_AUI_PANE_BUTTON, 223, "aui_pane_button"}, + {wxEVT_AUI_PANE_CLOSE, 223, "aui_pane_close"}, + {wxEVT_AUI_PANE_MAXIMIZE, 223, "aui_pane_maximize"}, + {wxEVT_AUI_PANE_RESTORE, 223, "aui_pane_restore"}, + {wxEVT_AUI_RENDER, 223, "aui_render"}, + {wxEVT_AUI_FIND_MANAGER, 223, "aui_find_manager"}, {-1, 0, } }; for(int i=0; event_types[i].ev_type != -1; i++) { @@ -353,7 +353,7 @@ bool sendevent(wxEvent *event, ErlDrvPort port) rt.addRef(getRef((void *)(cb->obj), memenv), cb->class_name); rt.addExt2Term(cb->user_data); switch(Etype->cID) { -case 163: {// wxCommandEvent +case 164: {// wxCommandEvent wxCommandEvent * ev = (wxCommandEvent *) event; evClass = (char*)"wxCommandEvent"; rt.addAtom((char*)"wxCommand"); @@ -364,7 +364,7 @@ case 163: {// wxCommandEvent rt.addTupleCount(5); break; } -case 164: {// wxScrollEvent or wxSpinEvent +case 165: {// wxScrollEvent or wxSpinEvent if(event->IsKindOf(CLASSINFO(wxScrollEvent))) { wxScrollEvent * ev = (wxScrollEvent *) event; evClass = (char*)"wxScrollEvent"; @@ -384,14 +384,14 @@ case 164: {// wxScrollEvent or wxSpinEvent } break; } -case 165: {// wxScrollWinEvent +case 166: {// wxScrollWinEvent evClass = (char*)"wxScrollWinEvent"; rt.addAtom((char*)"wxScrollWin"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 166: {// wxMouseEvent +case 167: {// wxMouseEvent wxMouseEvent * ev = (wxMouseEvent *) event; evClass = (char*)"wxMouseEvent"; rt.addAtom((char*)"wxMouse"); @@ -411,14 +411,14 @@ case 166: {// wxMouseEvent rt.addTupleCount(14); break; } -case 167: {// wxSetCursorEvent +case 168: {// wxSetCursorEvent evClass = (char*)"wxSetCursorEvent"; rt.addAtom((char*)"wxSetCursor"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 168: {// wxKeyEvent +case 169: {// wxKeyEvent wxKeyEvent * ev = (wxKeyEvent *) event; evClass = (char*)"wxKeyEvent"; rt.addAtom((char*)"wxKey"); @@ -437,7 +437,7 @@ case 168: {// wxKeyEvent rt.addTupleCount(13); break; } -case 169: {// wxSizeEvent +case 170: {// wxSizeEvent wxSizeEvent * ev = (wxSizeEvent *) event; evClass = (char*)"wxSizeEvent"; rt.addAtom((char*)"wxSize"); @@ -447,28 +447,28 @@ case 169: {// wxSizeEvent rt.addTupleCount(4); break; } -case 170: {// wxMoveEvent +case 171: {// wxMoveEvent evClass = (char*)"wxMoveEvent"; rt.addAtom((char*)"wxMove"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 171: {// wxPaintEvent +case 172: {// wxPaintEvent evClass = (char*)"wxPaintEvent"; rt.addAtom((char*)"wxPaint"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 172: {// wxNcPaintEvent +case 173: {// wxNcPaintEvent evClass = (char*)"wxNcPaintEvent"; rt.addAtom((char*)"wxNcPaint"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 173: {// wxEraseEvent +case 174: {// wxEraseEvent wxEraseEvent * ev = (wxEraseEvent *) event; wxDC * GetDC = ev->GetDC(); evClass = (char*)"wxEraseEvent"; @@ -478,105 +478,105 @@ case 173: {// wxEraseEvent rt.addTupleCount(3); break; } -case 174: {// wxFocusEvent +case 175: {// wxFocusEvent evClass = (char*)"wxFocusEvent"; rt.addAtom((char*)"wxFocus"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 175: {// wxChildFocusEvent +case 176: {// wxChildFocusEvent evClass = (char*)"wxChildFocusEvent"; rt.addAtom((char*)"wxChildFocus"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 176: {// wxMenuEvent +case 177: {// wxMenuEvent evClass = (char*)"wxMenuEvent"; rt.addAtom((char*)"wxMenu"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 177: {// wxCloseEvent +case 178: {// wxCloseEvent evClass = (char*)"wxCloseEvent"; rt.addAtom((char*)"wxClose"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 178: {// wxShowEvent +case 179: {// wxShowEvent evClass = (char*)"wxShowEvent"; rt.addAtom((char*)"wxShow"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 179: {// wxIconizeEvent +case 180: {// wxIconizeEvent evClass = (char*)"wxIconizeEvent"; rt.addAtom((char*)"wxIconize"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 180: {// wxMaximizeEvent +case 181: {// wxMaximizeEvent evClass = (char*)"wxMaximizeEvent"; rt.addAtom((char*)"wxMaximize"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 181: {// wxJoystickEvent +case 182: {// wxJoystickEvent evClass = (char*)"wxJoystickEvent"; rt.addAtom((char*)"wxJoystick"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 182: {// wxUpdateUIEvent +case 183: {// wxUpdateUIEvent evClass = (char*)"wxUpdateUIEvent"; rt.addAtom((char*)"wxUpdateUI"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 183: {// wxSysColourChangedEvent +case 184: {// wxSysColourChangedEvent evClass = (char*)"wxSysColourChangedEvent"; rt.addAtom((char*)"wxSysColourChanged"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 184: {// wxMouseCaptureChangedEvent +case 185: {// wxMouseCaptureChangedEvent evClass = (char*)"wxMouseCaptureChangedEvent"; rt.addAtom((char*)"wxMouseCaptureChanged"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 185: {// wxDisplayChangedEvent +case 186: {// wxDisplayChangedEvent evClass = (char*)"wxDisplayChangedEvent"; rt.addAtom((char*)"wxDisplayChanged"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 186: {// wxPaletteChangedEvent +case 187: {// wxPaletteChangedEvent evClass = (char*)"wxPaletteChangedEvent"; rt.addAtom((char*)"wxPaletteChanged"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 187: {// wxQueryNewPaletteEvent +case 188: {// wxQueryNewPaletteEvent evClass = (char*)"wxQueryNewPaletteEvent"; rt.addAtom((char*)"wxQueryNewPalette"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 188: {// wxNavigationKeyEvent +case 189: {// wxNavigationKeyEvent wxNavigationKeyEvent * ev = (wxNavigationKeyEvent *) event; evClass = (char*)"wxNavigationKeyEvent"; rt.addAtom((char*)"wxNavigationKey"); @@ -586,42 +586,42 @@ case 188: {// wxNavigationKeyEvent rt.addTupleCount(4); break; } -case 189: {// wxWindowCreateEvent +case 190: {// wxWindowCreateEvent evClass = (char*)"wxWindowCreateEvent"; rt.addAtom((char*)"wxWindowCreate"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 190: {// wxWindowDestroyEvent +case 191: {// wxWindowDestroyEvent evClass = (char*)"wxWindowDestroyEvent"; rt.addAtom((char*)"wxWindowDestroy"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 191: {// wxHelpEvent +case 192: {// wxHelpEvent evClass = (char*)"wxHelpEvent"; rt.addAtom((char*)"wxHelp"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 192: {// wxContextMenuEvent +case 193: {// wxContextMenuEvent evClass = (char*)"wxContextMenuEvent"; rt.addAtom((char*)"wxContextMenu"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 193: {// wxIdleEvent +case 194: {// wxIdleEvent evClass = (char*)"wxIdleEvent"; rt.addAtom((char*)"wxIdle"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 194: {// wxGridEvent +case 195: {// wxGridEvent wxGridEvent * ev = (wxGridEvent *) event; evClass = (char*)"wxGridEvent"; rt.addAtom((char*)"wxGrid"); @@ -638,7 +638,7 @@ case 194: {// wxGridEvent rt.addTupleCount(11); break; } -case 196: {// wxSashEvent +case 197: {// wxSashEvent wxSashEvent * ev = (wxSashEvent *) event; evClass = (char*)"wxSashEvent"; rt.addAtom((char*)"wxSash"); @@ -649,7 +649,7 @@ case 196: {// wxSashEvent rt.addTupleCount(5); break; } -case 197: {// wxListEvent +case 198: {// wxListEvent wxListEvent * ev = (wxListEvent *) event; evClass = (char*)"wxListEvent"; rt.addAtom((char*)"wxList"); @@ -662,7 +662,7 @@ case 197: {// wxListEvent rt.addTupleCount(7); break; } -case 198: {// wxDateEvent +case 199: {// wxDateEvent wxDateEvent * ev = (wxDateEvent *) event; evClass = (char*)"wxDateEvent"; rt.addAtom((char*)"wxDate"); @@ -671,14 +671,14 @@ case 198: {// wxDateEvent rt.addTupleCount(3); break; } -case 199: {// wxCalendarEvent +case 200: {// wxCalendarEvent evClass = (char*)"wxCalendarEvent"; rt.addAtom((char*)"wxCalendar"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 200: {// wxFileDirPickerEvent +case 201: {// wxFileDirPickerEvent wxFileDirPickerEvent * ev = (wxFileDirPickerEvent *) event; evClass = (char*)"wxFileDirPickerEvent"; rt.addAtom((char*)"wxFileDirPicker"); @@ -687,7 +687,7 @@ case 200: {// wxFileDirPickerEvent rt.addTupleCount(3); break; } -case 201: {// wxColourPickerEvent +case 202: {// wxColourPickerEvent wxColourPickerEvent * ev = (wxColourPickerEvent *) event; evClass = (char*)"wxColourPickerEvent"; rt.addAtom((char*)"wxColourPicker"); @@ -696,7 +696,7 @@ case 201: {// wxColourPickerEvent rt.addTupleCount(3); break; } -case 202: {// wxFontPickerEvent +case 203: {// wxFontPickerEvent wxFontPickerEvent * ev = (wxFontPickerEvent *) event; wxFont * GetFont = new wxFont(ev->GetFont()); app->newPtr((void *) GetFont,3, memenv); @@ -707,7 +707,7 @@ case 202: {// wxFontPickerEvent rt.addTupleCount(3); break; } -case 203: {// wxStyledTextEvent +case 204: {// wxStyledTextEvent wxStyledTextEvent * ev = (wxStyledTextEvent *) event; evClass = (char*)"wxStyledTextEvent"; rt.addAtom((char*)"wxStyledText"); @@ -735,7 +735,7 @@ case 203: {// wxStyledTextEvent rt.addTupleCount(22); break; } -case 208: {// wxTreeEvent +case 209: {// wxTreeEvent wxTreeEvent * ev = (wxTreeEvent *) event; evClass = (char*)"wxTreeEvent"; rt.addAtom((char*)"wxTree"); @@ -746,14 +746,14 @@ case 208: {// wxTreeEvent rt.addTupleCount(5); break; } -case 209: {// wxNotebookEvent +case 210: {// wxNotebookEvent evClass = (char*)"wxNotebookEvent"; rt.addAtom((char*)"wxNotebook"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 215: {// wxSpinEvent +case 216: {// wxSpinEvent wxSpinEvent * ev = (wxSpinEvent *) event; evClass = (char*)"wxSpinEvent"; rt.addAtom((char*)"wxSpin"); @@ -762,14 +762,14 @@ case 215: {// wxSpinEvent rt.addTupleCount(3); break; } -case 217: {// wxSplitterEvent +case 218: {// wxSplitterEvent evClass = (char*)"wxSplitterEvent"; rt.addAtom((char*)"wxSplitter"); rt.addAtom(Etype->eName); rt.addTupleCount(2); break; } -case 219: {// wxHtmlLinkEvent +case 220: {// wxHtmlLinkEvent wxHtmlLinkEvent * ev = (wxHtmlLinkEvent *) event; evClass = (char*)"wxHtmlLinkEvent"; rt.addAtom((char*)"wxHtmlLink"); @@ -778,7 +778,7 @@ case 219: {// wxHtmlLinkEvent rt.addTupleCount(3); break; } -case 221: {// wxAuiNotebookEvent +case 222: {// wxAuiNotebookEvent wxAuiNotebookEvent * ev = (wxAuiNotebookEvent *) event; wxAuiNotebook * GetDragSource = ev->GetDragSource(); evClass = (char*)"wxAuiNotebookEvent"; @@ -790,7 +790,7 @@ case 221: {// wxAuiNotebookEvent rt.addTupleCount(5); break; } -case 222: {// wxAuiManagerEvent +case 223: {// wxAuiManagerEvent wxAuiManagerEvent * ev = (wxAuiManagerEvent *) event; wxAuiManager * GetManager = ev->GetManager(); wxAuiPaneInfo * GetPane = ev->GetPane(); diff --git a/lib/wx/c_src/gen/wxe_funcs.cpp b/lib/wx/c_src/gen/wxe_funcs.cpp index 479d7679a4..afef2990b4 100644 --- a/lib/wx/c_src/gen/wxe_funcs.cpp +++ b/lib/wx/c_src/gen/wxe_funcs.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2010. All Rights Reserved. + * Copyright Ericsson AB 2008-2011. All Rights Reserved. * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in @@ -4486,7 +4486,7 @@ case wxGridCellBoolEditor_IsTrueValue: { // wxGridCellBoolEditor::IsTrueValue break; } case wxGridCellBoolEditor_UseStringValues: { // wxGridCellBoolEditor::UseStringValues - wxString valueTrue= _T("1"); + wxString valueTrue= wxT("1"); wxString valueFalse= wxEmptyString; while( * (int*) bp) { switch (* (int*) bp) { case 1: {bp += 4; @@ -15143,12 +15143,14 @@ case wxListBox_SetFirstItem_1_1: { // wxListBox::SetFirstItem This->SetFirstItem(s); break; } + case wxListCtrl_new_0: { // wxListCtrl::wxListCtrl wxListCtrl * Result = new EwxListCtrl(); newPtr((void *) Result, 0, memenv); rt.addRef(getRef((void *)Result,memenv), "wxListCtrl"); break; } + case wxListCtrl_new_2: { // wxListCtrl::wxListCtrl wxWindowID winid=wxID_ANY; wxPoint pos= wxDefaultPosition; @@ -15156,6 +15158,8 @@ case wxListCtrl_new_2: { // wxListCtrl::wxListCtrl long style=wxLC_ICON; const wxValidator * validator= &wxDefaultValidator; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; + int onGetItemText = 0, onGetItemAttr = 0, onGetItemColumnImage = 0; + bp += 4; /* Align */ while( * (int*) bp) { switch (* (int*) bp) { case 1: {bp += 4; @@ -15179,8 +15183,21 @@ case wxListCtrl_new_2: { // wxListCtrl::wxListCtrl case 5: {bp += 4; validator = (wxValidator *) getPtr(bp,memenv); bp += 4; } break; + case 6: {bp += 4; + onGetItemText = *(int *) bp; bp += 4; + } break; + case 7: {bp += 4; + onGetItemAttr = *(int *) bp; bp += 4; + } break; + case 8: {bp += 4; + onGetItemColumnImage = *(int *) bp; bp += 4; + } break; }}; - wxListCtrl * Result = new EwxListCtrl(parent,winid,pos,size,style,*validator); + EwxListCtrl * Result = new EwxListCtrl(parent,winid,pos,size,style,*validator); + Result->onGetItemText = onGetItemText; + Result->onGetItemAttr = onGetItemAttr; + Result->onGetItemColumnImage = onGetItemColumnImage; + Result->port = Ecmd.port; newPtr((void *) Result, 0, memenv); rt.addRef(getRef((void *)Result,memenv), "wxListCtrl"); break; @@ -15213,14 +15230,18 @@ case wxListCtrl_ClearAll: { // wxListCtrl::ClearAll This->ClearAll(); break; } + case wxListCtrl_Create: { // wxListCtrl::Create wxWindowID winid=wxID_ANY; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; long style=wxLC_ICON; const wxValidator * validator= &wxDefaultValidator; - wxListCtrl *This = (wxListCtrl *) getPtr(bp,memenv); bp += 4; + EwxListCtrl *This = (EwxListCtrl *) getPtr(bp,memenv); bp += 4; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; + int onGetItemText = 0, onGetItemAttr = 0, onGetItemColumnImage = 0; + + bp += 4; /* Align */ while( * (int*) bp) { switch (* (int*) bp) { case 1: {bp += 4; winid = (wxWindowID)*(int *) bp; bp += 4; @@ -15243,9 +15264,23 @@ case wxListCtrl_Create: { // wxListCtrl::Create case 5: {bp += 4; validator = (wxValidator *) getPtr(bp,memenv); bp += 4; } break; + case 6: {bp += 4; + onGetItemText = *(int *) bp; bp += 4; + } break; + case 7: {bp += 4; + onGetItemAttr = *(int *) bp; bp += 4; + } break; + case 8: {bp += 4; + onGetItemColumnImage = *(int *) bp; bp += 4; + } break; }}; if(!This) throw wxe_badarg(0); bool Result = This->Create(parent,winid,pos,size,style,*validator); + This->onGetItemText = onGetItemText; + This->onGetItemAttr = onGetItemAttr; + This->onGetItemColumnImage = onGetItemColumnImage; + This->port = Ecmd.port; + rt.addBool(Result); break; } @@ -16095,6 +16130,106 @@ case wxListItem_SetWidth: { // wxListItem::SetWidth This->SetWidth((int) *width); break; } +case wxListItemAttr_new_0: { // wxListItemAttr::wxListItemAttr + wxListItemAttr * Result = new wxListItemAttr(); + newPtr((void *) Result, 101, memenv); + rt.addRef(getRef((void *)Result,memenv), "wxListItemAttr"); + break; +} +case wxListItemAttr_new_3: { // wxListItemAttr::wxListItemAttr + int * colTextR = (int *) bp; bp += 4; + int * colTextG = (int *) bp; bp += 4; + int * colTextB = (int *) bp; bp += 4; + int * colTextA = (int *) bp; bp += 4; + wxColour colText = wxColour(*colTextR,*colTextG,*colTextB,*colTextA); + int * colBackR = (int *) bp; bp += 4; + int * colBackG = (int *) bp; bp += 4; + int * colBackB = (int *) bp; bp += 4; + int * colBackA = (int *) bp; bp += 4; + wxColour colBack = wxColour(*colBackR,*colBackG,*colBackB,*colBackA); + wxFont *font = (wxFont *) getPtr(bp,memenv); bp += 4; + wxListItemAttr * Result = new wxListItemAttr(colText,colBack,*font); + newPtr((void *) Result, 101, memenv); + rt.addRef(getRef((void *)Result,memenv), "wxListItemAttr"); + break; +} +case wxListItemAttr_GetBackgroundColour: { // wxListItemAttr::GetBackgroundColour + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + const wxColour * Result = &This->GetBackgroundColour(); + rt.add((*Result)); + break; +} +case wxListItemAttr_GetFont: { // wxListItemAttr::GetFont + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + const wxFont * Result = &This->GetFont(); + rt.addRef(getRef((void *)Result,memenv), "wxFont"); + break; +} +case wxListItemAttr_GetTextColour: { // wxListItemAttr::GetTextColour + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + const wxColour * Result = &This->GetTextColour(); + rt.add((*Result)); + break; +} +case wxListItemAttr_HasBackgroundColour: { // wxListItemAttr::HasBackgroundColour + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + bool Result = This->HasBackgroundColour(); + rt.addBool(Result); + break; +} +case wxListItemAttr_HasFont: { // wxListItemAttr::HasFont + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + bool Result = This->HasFont(); + rt.addBool(Result); + break; +} +case wxListItemAttr_HasTextColour: { // wxListItemAttr::HasTextColour + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + bool Result = This->HasTextColour(); + rt.addBool(Result); + break; +} +case wxListItemAttr_SetBackgroundColour: { // wxListItemAttr::SetBackgroundColour + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + int * colBackR = (int *) bp; bp += 4; + int * colBackG = (int *) bp; bp += 4; + int * colBackB = (int *) bp; bp += 4; + int * colBackA = (int *) bp; bp += 4; + wxColour colBack = wxColour(*colBackR,*colBackG,*colBackB,*colBackA); + if(!This) throw wxe_badarg(0); + This->SetBackgroundColour(colBack); + break; +} +case wxListItemAttr_SetFont: { // wxListItemAttr::SetFont + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + wxFont *font = (wxFont *) getPtr(bp,memenv); bp += 4; + if(!This) throw wxe_badarg(0); + This->SetFont(*font); + break; +} +case wxListItemAttr_SetTextColour: { // wxListItemAttr::SetTextColour + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + int * colTextR = (int *) bp; bp += 4; + int * colTextG = (int *) bp; bp += 4; + int * colTextB = (int *) bp; bp += 4; + int * colTextA = (int *) bp; bp += 4; + wxColour colText = wxColour(*colTextR,*colTextG,*colTextB,*colTextA); + if(!This) throw wxe_badarg(0); + This->SetTextColour(colText); + break; +} +case wxListItemAttr_destroy: { // wxListItemAttr::destroy + wxListItemAttr *This = (wxListItemAttr *) getPtr(bp,memenv); bp += 4; + if(This) { ((WxeApp *) wxTheApp)->clearPtr((void *) This); + delete This;} + break; +} case wxImageList_new_0: { // wxImageList::wxImageList wxImageList * Result = new EwxImageList(); newPtr((void *) Result, 1, memenv); @@ -16263,7 +16398,7 @@ case wxImageList_Replace_3: { // wxImageList::Replace } case wxTextAttr_new_0: { // wxTextAttr::wxTextAttr wxTextAttr * Result = new wxTextAttr(); - newPtr((void *) Result, 102, memenv); + newPtr((void *) Result, 103, memenv); rt.addRef(getRef((void *)Result,memenv), "wxTextAttr"); break; } @@ -16293,7 +16428,7 @@ alignment = *(wxTextAttrAlignment *) bp; bp += 4;; } break; }}; wxTextAttr * Result = new wxTextAttr(colText,colBack,*font,(wxTextAttrAlignment) alignment); - newPtr((void *) Result, 102, memenv); + newPtr((void *) Result, 103, memenv); rt.addRef(getRef((void *)Result,memenv), "wxTextAttr"); break; } @@ -22711,7 +22846,7 @@ case wxPreviewFrame_new: { // wxPreviewFrame::wxPreviewFrame wxString title= wxT("Print Preview"); wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=wxDEFAULT_FRAME_STYLE; + long style=wxDEFAULT_FRAME_STYLE|wxFRAME_FLOAT_ON_PARENT; wxPrintPreview *preview = (wxPrintPreview *) getPtr(bp,memenv); bp += 4; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; while( * (int*) bp) { switch (* (int*) bp) { @@ -23742,14 +23877,14 @@ case wxAuiManager_Update: { // wxAuiManager::Update #if wxUSE_AUI case wxAuiPaneInfo_new_0: { // wxAuiPaneInfo::wxAuiPaneInfo wxAuiPaneInfo * Result = new wxAuiPaneInfo(); - newPtr((void *) Result, 154, memenv); + newPtr((void *) Result, 155, memenv); rt.addRef(getRef((void *)Result,memenv), "wxAuiPaneInfo"); break; } case wxAuiPaneInfo_new_1: { // wxAuiPaneInfo::wxAuiPaneInfo wxAuiPaneInfo *c = (wxAuiPaneInfo *) getPtr(bp,memenv); bp += 4; wxAuiPaneInfo * Result = new wxAuiPaneInfo(*c); - newPtr((void *) Result, 154, memenv); + newPtr((void *) Result, 155, memenv); rt.addRef(getRef((void *)Result,memenv), "wxAuiPaneInfo"); break; } @@ -30292,7 +30427,7 @@ case wxNotebookEvent_SetSelection: { // wxNotebookEvent::SetSelection } case wxFileDataObject_new: { // wxFileDataObject::wxFileDataObject wxFileDataObject * Result = new wxFileDataObject(); - newPtr((void *) Result, 211, memenv); + newPtr((void *) Result, 212, memenv); rt.addRef(getRef((void *)Result,memenv), "wxFileDataObject"); break; } @@ -30328,7 +30463,7 @@ case wxTextDataObject_new: { // wxTextDataObject::wxTextDataObject } break; }}; wxTextDataObject * Result = new wxTextDataObject(text); - newPtr((void *) Result, 212, memenv); + newPtr((void *) Result, 213, memenv); rt.addRef(getRef((void *)Result,memenv), "wxTextDataObject"); break; } @@ -30364,7 +30499,7 @@ case wxTextDataObject_destroy: { // wxTextDataObject::destroy case wxBitmapDataObject_new_1_1: { // wxBitmapDataObject::wxBitmapDataObject wxBitmap *bitmap = (wxBitmap *) getPtr(bp,memenv); bp += 4; wxBitmapDataObject * Result = new wxBitmapDataObject(*bitmap); - newPtr((void *) Result, 213, memenv); + newPtr((void *) Result, 214, memenv); rt.addRef(getRef((void *)Result,memenv), "wxBitmapDataObject"); break; } @@ -30376,7 +30511,7 @@ bitmap = (wxBitmap *) getPtr(bp,memenv); bp += 4; } break; }}; wxBitmapDataObject * Result = new wxBitmapDataObject(*bitmap); - newPtr((void *) Result, 213, memenv); + newPtr((void *) Result, 214, memenv); rt.addRef(getRef((void *)Result,memenv), "wxBitmapDataObject"); break; } @@ -31159,7 +31294,7 @@ case wxAuiManagerEvent_CanVeto: { // wxAuiManagerEvent::CanVeto } case wxLogNull_new: { // wxLogNull::wxLogNull wxLogNull * Result = new wxLogNull(); - newPtr((void *) Result, 223, memenv); + newPtr((void *) Result, 224, memenv); rt.addRef(getRef((void *)Result,memenv), "wxLogNull"); break; } @@ -31188,3 +31323,31 @@ case wxLogNull_destroy: { // wxLogNull::destroy error.addTupleCount(3); error.send(); }} /* The End */ + + +void WxeApp::delete_object(void *ptr, wxeRefData *refd) { + switch(refd->type) { + case 24: delete (wxGridCellBoolRenderer *) ptr; break; + case 25: delete (wxGridCellBoolEditor *) ptr; break; + case 26: delete (wxGridCellFloatRenderer *) ptr; break; + case 27: delete (wxGridCellFloatEditor *) ptr; break; + case 28: delete (wxGridCellStringRenderer *) ptr; break; + case 29: delete (wxGridCellTextEditor *) ptr; break; + case 30: delete (wxGridCellChoiceEditor *) ptr; break; + case 31: delete (wxGridCellNumberRenderer *) ptr; break; + case 32: delete (wxGridCellNumberEditor *) ptr; break; + case 61: delete (wxIconBundle *) ptr; break; + case 69: delete (wxAcceleratorEntry *) ptr; break; + case 70: /* delete (wxCaret *) ptr;These objects must be deleted by owner object */ break; + case 72: delete (wxSizerFlags *) ptr; break; + case 88: /* delete (wxCalendarDateAttr *) ptr;These objects must be deleted by owner object */ break; + case 101: delete (wxListItemAttr *) ptr; break; + case 103: delete (wxTextAttr *) ptr; break; + case 155: delete (wxAuiPaneInfo *) ptr; break; + case 212: /* delete (wxFileDataObject *) ptr;These objects must be deleted by owner object */ break; + case 213: /* delete (wxTextDataObject *) ptr;These objects must be deleted by owner object */ break; + case 214: /* delete (wxBitmapDataObject *) ptr;These objects must be deleted by owner object */ break; + case 224: delete (wxLogNull *) ptr; break; + default: delete (wxObject *) ptr; +}} + diff --git a/lib/wx/c_src/gen/wxe_init.cpp b/lib/wx/c_src/gen/wxe_init.cpp index bab3261be4..a75298392b 100644 --- a/lib/wx/c_src/gen/wxe_init.cpp +++ b/lib/wx/c_src/gen/wxe_init.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2010. All Rights Reserved. + * Copyright Ericsson AB 2008-2011. All Rights Reserved. * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in diff --git a/lib/wx/c_src/gen/wxe_macros.h b/lib/wx/c_src/gen/wxe_macros.h index 4fb76f960b..be0481564f 100644 --- a/lib/wx/c_src/gen/wxe_macros.h +++ b/lib/wx/c_src/gen/wxe_macros.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2010. All Rights Reserved. + * Copyright Ericsson AB 2008-2011. All Rights Reserved. * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in @@ -1648,1683 +1648,1695 @@ #define wxListItem_SetText 1754 #define wxListItem_SetTextColour 1755 #define wxListItem_SetWidth 1756 -#define wxImageList_new_0 1757 -#define wxImageList_new_3 1758 -#define wxImageList_Add_1 1759 -#define wxImageList_Add_2_0 1760 -#define wxImageList_Add_2_1 1761 -#define wxImageList_Create 1762 -#define wxImageList_Draw 1764 -#define wxImageList_GetBitmap 1765 -#define wxImageList_GetIcon 1766 -#define wxImageList_GetImageCount 1767 -#define wxImageList_GetSize 1768 -#define wxImageList_Remove 1769 -#define wxImageList_RemoveAll 1770 -#define wxImageList_Replace_2 1771 -#define wxImageList_Replace_3 1772 -#define wxImageList_destroy 1773 -#define wxTextAttr_new_0 1774 -#define wxTextAttr_new_2 1775 -#define wxTextAttr_GetAlignment 1776 -#define wxTextAttr_GetBackgroundColour 1777 -#define wxTextAttr_GetFont 1778 -#define wxTextAttr_GetLeftIndent 1779 -#define wxTextAttr_GetLeftSubIndent 1780 -#define wxTextAttr_GetRightIndent 1781 -#define wxTextAttr_GetTabs 1782 -#define wxTextAttr_GetTextColour 1783 -#define wxTextAttr_HasBackgroundColour 1784 -#define wxTextAttr_HasFont 1785 -#define wxTextAttr_HasTextColour 1786 -#define wxTextAttr_GetFlags 1787 -#define wxTextAttr_IsDefault 1788 -#define wxTextAttr_SetAlignment 1789 -#define wxTextAttr_SetBackgroundColour 1790 -#define wxTextAttr_SetFlags 1791 -#define wxTextAttr_SetFont 1792 -#define wxTextAttr_SetLeftIndent 1793 -#define wxTextAttr_SetRightIndent 1794 -#define wxTextAttr_SetTabs 1795 -#define wxTextAttr_SetTextColour 1796 -#define wxTextAttr_destroy 1797 -#define wxTextCtrl_new_3 1799 -#define wxTextCtrl_new_0 1800 -#define wxTextCtrl_destruct 1802 -#define wxTextCtrl_AppendText 1803 -#define wxTextCtrl_CanCopy 1804 -#define wxTextCtrl_CanCut 1805 -#define wxTextCtrl_CanPaste 1806 -#define wxTextCtrl_CanRedo 1807 -#define wxTextCtrl_CanUndo 1808 -#define wxTextCtrl_Clear 1809 -#define wxTextCtrl_Copy 1810 -#define wxTextCtrl_Create 1811 -#define wxTextCtrl_Cut 1812 -#define wxTextCtrl_DiscardEdits 1813 -#define wxTextCtrl_EmulateKeyPress 1814 -#define wxTextCtrl_GetDefaultStyle 1815 -#define wxTextCtrl_GetInsertionPoint 1816 -#define wxTextCtrl_GetLastPosition 1817 -#define wxTextCtrl_GetLineLength 1818 -#define wxTextCtrl_GetLineText 1819 -#define wxTextCtrl_GetNumberOfLines 1820 -#define wxTextCtrl_GetRange 1821 -#define wxTextCtrl_GetSelection 1822 -#define wxTextCtrl_GetStringSelection 1823 -#define wxTextCtrl_GetStyle 1824 -#define wxTextCtrl_GetValue 1825 -#define wxTextCtrl_IsEditable 1826 -#define wxTextCtrl_IsModified 1827 -#define wxTextCtrl_IsMultiLine 1828 -#define wxTextCtrl_IsSingleLine 1829 -#define wxTextCtrl_LoadFile 1830 -#define wxTextCtrl_MarkDirty 1831 -#define wxTextCtrl_Paste 1832 -#define wxTextCtrl_PositionToXY 1833 -#define wxTextCtrl_Redo 1834 -#define wxTextCtrl_Remove 1835 -#define wxTextCtrl_Replace 1836 -#define wxTextCtrl_SaveFile 1837 -#define wxTextCtrl_SetDefaultStyle 1838 -#define wxTextCtrl_SetEditable 1839 -#define wxTextCtrl_SetInsertionPoint 1840 -#define wxTextCtrl_SetInsertionPointEnd 1841 -#define wxTextCtrl_SetMaxLength 1843 -#define wxTextCtrl_SetSelection 1844 -#define wxTextCtrl_SetStyle 1845 -#define wxTextCtrl_SetValue 1846 -#define wxTextCtrl_ShowPosition 1847 -#define wxTextCtrl_Undo 1848 -#define wxTextCtrl_WriteText 1849 -#define wxTextCtrl_XYToPosition 1850 -#define wxNotebook_new_0 1853 -#define wxNotebook_new_3 1854 -#define wxNotebook_destruct 1855 -#define wxNotebook_AddPage 1856 -#define wxNotebook_AdvanceSelection 1857 -#define wxNotebook_AssignImageList 1858 -#define wxNotebook_Create 1859 -#define wxNotebook_DeleteAllPages 1860 -#define wxNotebook_DeletePage 1861 -#define wxNotebook_RemovePage 1862 -#define wxNotebook_GetCurrentPage 1863 -#define wxNotebook_GetImageList 1864 -#define wxNotebook_GetPage 1866 -#define wxNotebook_GetPageCount 1867 -#define wxNotebook_GetPageImage 1868 -#define wxNotebook_GetPageText 1869 -#define wxNotebook_GetRowCount 1870 -#define wxNotebook_GetSelection 1871 -#define wxNotebook_GetThemeBackgroundColour 1872 -#define wxNotebook_HitTest 1874 -#define wxNotebook_InsertPage 1876 -#define wxNotebook_SetImageList 1877 -#define wxNotebook_SetPadding 1878 -#define wxNotebook_SetPageSize 1879 -#define wxNotebook_SetPageImage 1880 -#define wxNotebook_SetPageText 1881 -#define wxNotebook_SetSelection 1882 -#define wxNotebook_ChangeSelection 1883 -#define wxChoicebook_new_0 1884 -#define wxChoicebook_new_3 1885 -#define wxChoicebook_AddPage 1886 -#define wxChoicebook_AdvanceSelection 1887 -#define wxChoicebook_AssignImageList 1888 -#define wxChoicebook_Create 1889 -#define wxChoicebook_DeleteAllPages 1890 -#define wxChoicebook_DeletePage 1891 -#define wxChoicebook_RemovePage 1892 -#define wxChoicebook_GetCurrentPage 1893 -#define wxChoicebook_GetImageList 1894 -#define wxChoicebook_GetPage 1896 -#define wxChoicebook_GetPageCount 1897 -#define wxChoicebook_GetPageImage 1898 -#define wxChoicebook_GetPageText 1899 -#define wxChoicebook_GetSelection 1900 -#define wxChoicebook_HitTest 1901 -#define wxChoicebook_InsertPage 1902 -#define wxChoicebook_SetImageList 1903 -#define wxChoicebook_SetPageSize 1904 -#define wxChoicebook_SetPageImage 1905 -#define wxChoicebook_SetPageText 1906 -#define wxChoicebook_SetSelection 1907 -#define wxChoicebook_ChangeSelection 1908 -#define wxChoicebook_destroy 1909 -#define wxToolbook_new_0 1910 -#define wxToolbook_new_3 1911 -#define wxToolbook_AddPage 1912 -#define wxToolbook_AdvanceSelection 1913 -#define wxToolbook_AssignImageList 1914 -#define wxToolbook_Create 1915 -#define wxToolbook_DeleteAllPages 1916 -#define wxToolbook_DeletePage 1917 -#define wxToolbook_RemovePage 1918 -#define wxToolbook_GetCurrentPage 1919 -#define wxToolbook_GetImageList 1920 -#define wxToolbook_GetPage 1922 -#define wxToolbook_GetPageCount 1923 -#define wxToolbook_GetPageImage 1924 -#define wxToolbook_GetPageText 1925 -#define wxToolbook_GetSelection 1926 -#define wxToolbook_HitTest 1928 -#define wxToolbook_InsertPage 1929 -#define wxToolbook_SetImageList 1930 -#define wxToolbook_SetPageSize 1931 -#define wxToolbook_SetPageImage 1932 -#define wxToolbook_SetPageText 1933 -#define wxToolbook_SetSelection 1934 -#define wxToolbook_ChangeSelection 1935 -#define wxToolbook_destroy 1936 -#define wxListbook_new_0 1937 -#define wxListbook_new_3 1938 -#define wxListbook_AddPage 1939 -#define wxListbook_AdvanceSelection 1940 -#define wxListbook_AssignImageList 1941 -#define wxListbook_Create 1942 -#define wxListbook_DeleteAllPages 1943 -#define wxListbook_DeletePage 1944 -#define wxListbook_RemovePage 1945 -#define wxListbook_GetCurrentPage 1946 -#define wxListbook_GetImageList 1947 -#define wxListbook_GetPage 1949 -#define wxListbook_GetPageCount 1950 -#define wxListbook_GetPageImage 1951 -#define wxListbook_GetPageText 1952 -#define wxListbook_GetSelection 1953 -#define wxListbook_HitTest 1955 -#define wxListbook_InsertPage 1956 -#define wxListbook_SetImageList 1957 -#define wxListbook_SetPageSize 1958 -#define wxListbook_SetPageImage 1959 -#define wxListbook_SetPageText 1960 -#define wxListbook_SetSelection 1961 -#define wxListbook_ChangeSelection 1962 -#define wxListbook_destroy 1963 -#define wxTreebook_new_0 1964 -#define wxTreebook_new_3 1965 -#define wxTreebook_AddPage 1966 -#define wxTreebook_AdvanceSelection 1967 -#define wxTreebook_AssignImageList 1968 -#define wxTreebook_Create 1969 -#define wxTreebook_DeleteAllPages 1970 -#define wxTreebook_DeletePage 1971 -#define wxTreebook_RemovePage 1972 -#define wxTreebook_GetCurrentPage 1973 -#define wxTreebook_GetImageList 1974 -#define wxTreebook_GetPage 1976 -#define wxTreebook_GetPageCount 1977 -#define wxTreebook_GetPageImage 1978 -#define wxTreebook_GetPageText 1979 -#define wxTreebook_GetSelection 1980 -#define wxTreebook_ExpandNode 1981 -#define wxTreebook_IsNodeExpanded 1982 -#define wxTreebook_HitTest 1984 -#define wxTreebook_InsertPage 1985 -#define wxTreebook_InsertSubPage 1986 -#define wxTreebook_SetImageList 1987 -#define wxTreebook_SetPageSize 1988 -#define wxTreebook_SetPageImage 1989 -#define wxTreebook_SetPageText 1990 -#define wxTreebook_SetSelection 1991 -#define wxTreebook_ChangeSelection 1992 -#define wxTreebook_destroy 1993 -#define wxTreeCtrl_new_2 1996 -#define wxTreeCtrl_new_0 1997 -#define wxTreeCtrl_destruct 1999 -#define wxTreeCtrl_AddRoot 2000 -#define wxTreeCtrl_AppendItem 2001 -#define wxTreeCtrl_AssignImageList 2002 -#define wxTreeCtrl_AssignStateImageList 2003 -#define wxTreeCtrl_Collapse 2004 -#define wxTreeCtrl_CollapseAndReset 2005 -#define wxTreeCtrl_Create 2006 -#define wxTreeCtrl_Delete 2007 -#define wxTreeCtrl_DeleteAllItems 2008 -#define wxTreeCtrl_DeleteChildren 2009 -#define wxTreeCtrl_EditLabel 2010 -#define wxTreeCtrl_EnsureVisible 2011 -#define wxTreeCtrl_Expand 2012 -#define wxTreeCtrl_GetBoundingRect 2013 -#define wxTreeCtrl_GetChildrenCount 2015 -#define wxTreeCtrl_GetCount 2016 -#define wxTreeCtrl_GetEditControl 2017 -#define wxTreeCtrl_GetFirstChild 2018 -#define wxTreeCtrl_GetNextChild 2019 -#define wxTreeCtrl_GetFirstVisibleItem 2020 -#define wxTreeCtrl_GetImageList 2021 -#define wxTreeCtrl_GetIndent 2022 -#define wxTreeCtrl_GetItemBackgroundColour 2023 -#define wxTreeCtrl_GetItemData 2024 -#define wxTreeCtrl_GetItemFont 2025 -#define wxTreeCtrl_GetItemImage_1 2026 -#define wxTreeCtrl_GetItemImage_2 2027 -#define wxTreeCtrl_GetItemText 2028 -#define wxTreeCtrl_GetItemTextColour 2029 -#define wxTreeCtrl_GetLastChild 2030 -#define wxTreeCtrl_GetNextSibling 2031 -#define wxTreeCtrl_GetNextVisible 2032 -#define wxTreeCtrl_GetItemParent 2033 -#define wxTreeCtrl_GetPrevSibling 2034 -#define wxTreeCtrl_GetPrevVisible 2035 -#define wxTreeCtrl_GetRootItem 2036 -#define wxTreeCtrl_GetSelection 2037 -#define wxTreeCtrl_GetSelections 2038 -#define wxTreeCtrl_GetStateImageList 2039 -#define wxTreeCtrl_HitTest 2040 -#define wxTreeCtrl_InsertItem 2042 -#define wxTreeCtrl_IsBold 2043 -#define wxTreeCtrl_IsExpanded 2044 -#define wxTreeCtrl_IsSelected 2045 -#define wxTreeCtrl_IsVisible 2046 -#define wxTreeCtrl_ItemHasChildren 2047 -#define wxTreeCtrl_PrependItem 2048 -#define wxTreeCtrl_ScrollTo 2049 -#define wxTreeCtrl_SelectItem_1 2050 -#define wxTreeCtrl_SelectItem_2 2051 -#define wxTreeCtrl_SetIndent 2052 -#define wxTreeCtrl_SetImageList 2053 -#define wxTreeCtrl_SetItemBackgroundColour 2054 -#define wxTreeCtrl_SetItemBold 2055 -#define wxTreeCtrl_SetItemData 2056 -#define wxTreeCtrl_SetItemDropHighlight 2057 -#define wxTreeCtrl_SetItemFont 2058 -#define wxTreeCtrl_SetItemHasChildren 2059 -#define wxTreeCtrl_SetItemImage_2 2060 -#define wxTreeCtrl_SetItemImage_3 2061 -#define wxTreeCtrl_SetItemText 2062 -#define wxTreeCtrl_SetItemTextColour 2063 -#define wxTreeCtrl_SetStateImageList 2064 -#define wxTreeCtrl_SetWindowStyle 2065 -#define wxTreeCtrl_SortChildren 2066 -#define wxTreeCtrl_Toggle 2067 -#define wxTreeCtrl_ToggleItemSelection 2068 -#define wxTreeCtrl_Unselect 2069 -#define wxTreeCtrl_UnselectAll 2070 -#define wxTreeCtrl_UnselectItem 2071 -#define wxScrollBar_new_0 2072 -#define wxScrollBar_new_3 2073 -#define wxScrollBar_destruct 2074 -#define wxScrollBar_Create 2075 -#define wxScrollBar_GetRange 2076 -#define wxScrollBar_GetPageSize 2077 -#define wxScrollBar_GetThumbPosition 2078 -#define wxScrollBar_GetThumbSize 2079 -#define wxScrollBar_SetThumbPosition 2080 -#define wxScrollBar_SetScrollbar 2081 -#define wxSpinButton_new_2 2083 -#define wxSpinButton_new_0 2084 -#define wxSpinButton_Create 2085 -#define wxSpinButton_GetMax 2086 -#define wxSpinButton_GetMin 2087 -#define wxSpinButton_GetValue 2088 -#define wxSpinButton_SetRange 2089 -#define wxSpinButton_SetValue 2090 -#define wxSpinButton_destroy 2091 -#define wxSpinCtrl_new_0 2092 -#define wxSpinCtrl_new_2 2093 -#define wxSpinCtrl_Create 2095 -#define wxSpinCtrl_SetValue_1_1 2098 -#define wxSpinCtrl_SetValue_1_0 2099 -#define wxSpinCtrl_GetValue 2101 -#define wxSpinCtrl_SetRange 2103 -#define wxSpinCtrl_SetSelection 2104 -#define wxSpinCtrl_GetMin 2106 -#define wxSpinCtrl_GetMax 2108 -#define wxSpinCtrl_destroy 2109 -#define wxStaticText_new_0 2110 -#define wxStaticText_new_4 2111 -#define wxStaticText_Create 2112 -#define wxStaticText_GetLabel 2113 -#define wxStaticText_SetLabel 2114 -#define wxStaticText_Wrap 2115 -#define wxStaticText_destroy 2116 -#define wxStaticBitmap_new_0 2117 -#define wxStaticBitmap_new_4 2118 -#define wxStaticBitmap_Create 2119 -#define wxStaticBitmap_GetBitmap 2120 -#define wxStaticBitmap_SetBitmap 2121 -#define wxStaticBitmap_destroy 2122 -#define wxRadioBox_new 2123 -#define wxRadioBox_destruct 2125 -#define wxRadioBox_Create 2126 -#define wxRadioBox_Enable_2 2127 -#define wxRadioBox_Enable_1 2128 -#define wxRadioBox_GetSelection 2129 -#define wxRadioBox_GetString 2130 -#define wxRadioBox_SetSelection 2131 -#define wxRadioBox_Show_2 2132 -#define wxRadioBox_Show_1 2133 -#define wxRadioBox_GetColumnCount 2134 -#define wxRadioBox_GetItemHelpText 2135 -#define wxRadioBox_GetItemToolTip 2136 -#define wxRadioBox_GetItemFromPoint 2138 -#define wxRadioBox_GetRowCount 2139 -#define wxRadioBox_IsItemEnabled 2140 -#define wxRadioBox_IsItemShown 2141 -#define wxRadioBox_SetItemHelpText 2142 -#define wxRadioBox_SetItemToolTip 2143 -#define wxRadioButton_new_0 2144 -#define wxRadioButton_new_4 2145 -#define wxRadioButton_Create 2146 -#define wxRadioButton_GetValue 2147 -#define wxRadioButton_SetValue 2148 -#define wxRadioButton_destroy 2149 -#define wxSlider_new_6 2151 -#define wxSlider_new_0 2152 -#define wxSlider_Create 2153 -#define wxSlider_GetLineSize 2154 -#define wxSlider_GetMax 2155 -#define wxSlider_GetMin 2156 -#define wxSlider_GetPageSize 2157 -#define wxSlider_GetThumbLength 2158 -#define wxSlider_GetValue 2159 -#define wxSlider_SetLineSize 2160 -#define wxSlider_SetPageSize 2161 -#define wxSlider_SetRange 2162 -#define wxSlider_SetThumbLength 2163 -#define wxSlider_SetValue 2164 -#define wxSlider_destroy 2165 -#define wxDialog_new_4 2167 -#define wxDialog_new_0 2168 -#define wxDialog_destruct 2170 -#define wxDialog_Create 2171 -#define wxDialog_CreateButtonSizer 2172 -#define wxDialog_CreateStdDialogButtonSizer 2173 -#define wxDialog_EndModal 2174 -#define wxDialog_GetAffirmativeId 2175 -#define wxDialog_GetReturnCode 2176 -#define wxDialog_IsModal 2177 -#define wxDialog_SetAffirmativeId 2178 -#define wxDialog_SetReturnCode 2179 -#define wxDialog_Show 2180 -#define wxDialog_ShowModal 2181 -#define wxColourDialog_new_0 2182 -#define wxColourDialog_new_2 2183 -#define wxColourDialog_destruct 2184 -#define wxColourDialog_Create 2185 -#define wxColourDialog_GetColourData 2186 -#define wxColourData_new_0 2187 -#define wxColourData_new_1 2188 -#define wxColourData_destruct 2189 -#define wxColourData_GetChooseFull 2190 -#define wxColourData_GetColour 2191 -#define wxColourData_GetCustomColour 2193 -#define wxColourData_SetChooseFull 2194 -#define wxColourData_SetColour 2195 -#define wxColourData_SetCustomColour 2196 -#define wxPalette_new_0 2197 -#define wxPalette_new_4 2198 -#define wxPalette_destruct 2200 -#define wxPalette_Create 2201 -#define wxPalette_GetColoursCount 2202 -#define wxPalette_GetPixel 2203 -#define wxPalette_GetRGB 2204 -#define wxPalette_IsOk 2205 -#define wxDirDialog_new 2209 -#define wxDirDialog_destruct 2210 -#define wxDirDialog_GetPath 2211 -#define wxDirDialog_GetMessage 2212 -#define wxDirDialog_SetMessage 2213 -#define wxDirDialog_SetPath 2214 -#define wxFileDialog_new 2218 -#define wxFileDialog_destruct 2219 -#define wxFileDialog_GetDirectory 2220 -#define wxFileDialog_GetFilename 2221 -#define wxFileDialog_GetFilenames 2222 -#define wxFileDialog_GetFilterIndex 2223 -#define wxFileDialog_GetMessage 2224 -#define wxFileDialog_GetPath 2225 -#define wxFileDialog_GetPaths 2226 -#define wxFileDialog_GetWildcard 2227 -#define wxFileDialog_SetDirectory 2228 -#define wxFileDialog_SetFilename 2229 -#define wxFileDialog_SetFilterIndex 2230 -#define wxFileDialog_SetMessage 2231 -#define wxFileDialog_SetPath 2232 -#define wxFileDialog_SetWildcard 2233 -#define wxPickerBase_SetInternalMargin 2234 -#define wxPickerBase_GetInternalMargin 2235 -#define wxPickerBase_SetTextCtrlProportion 2236 -#define wxPickerBase_SetPickerCtrlProportion 2237 -#define wxPickerBase_GetTextCtrlProportion 2238 -#define wxPickerBase_GetPickerCtrlProportion 2239 -#define wxPickerBase_HasTextCtrl 2240 -#define wxPickerBase_GetTextCtrl 2241 -#define wxPickerBase_IsTextCtrlGrowable 2242 -#define wxPickerBase_SetPickerCtrlGrowable 2243 -#define wxPickerBase_SetTextCtrlGrowable 2244 -#define wxPickerBase_IsPickerCtrlGrowable 2245 -#define wxFilePickerCtrl_new_0 2246 -#define wxFilePickerCtrl_new_3 2247 -#define wxFilePickerCtrl_Create 2248 -#define wxFilePickerCtrl_GetPath 2249 -#define wxFilePickerCtrl_SetPath 2250 -#define wxFilePickerCtrl_destroy 2251 -#define wxDirPickerCtrl_new_0 2252 -#define wxDirPickerCtrl_new_3 2253 -#define wxDirPickerCtrl_Create 2254 -#define wxDirPickerCtrl_GetPath 2255 -#define wxDirPickerCtrl_SetPath 2256 -#define wxDirPickerCtrl_destroy 2257 -#define wxColourPickerCtrl_new_0 2258 -#define wxColourPickerCtrl_new_3 2259 -#define wxColourPickerCtrl_Create 2260 -#define wxColourPickerCtrl_GetColour 2261 -#define wxColourPickerCtrl_SetColour_1_1 2262 -#define wxColourPickerCtrl_SetColour_1_0 2263 -#define wxColourPickerCtrl_destroy 2264 -#define wxDatePickerCtrl_new_0 2265 -#define wxDatePickerCtrl_new_3 2266 -#define wxDatePickerCtrl_GetRange 2267 -#define wxDatePickerCtrl_GetValue 2268 -#define wxDatePickerCtrl_SetRange 2269 -#define wxDatePickerCtrl_SetValue 2270 -#define wxDatePickerCtrl_destroy 2271 -#define wxFontPickerCtrl_new_0 2272 -#define wxFontPickerCtrl_new_3 2273 -#define wxFontPickerCtrl_Create 2274 -#define wxFontPickerCtrl_GetSelectedFont 2275 -#define wxFontPickerCtrl_SetSelectedFont 2276 -#define wxFontPickerCtrl_GetMaxPointSize 2277 -#define wxFontPickerCtrl_SetMaxPointSize 2278 -#define wxFontPickerCtrl_destroy 2279 -#define wxFindReplaceDialog_new_0 2282 -#define wxFindReplaceDialog_new_4 2283 -#define wxFindReplaceDialog_destruct 2284 -#define wxFindReplaceDialog_Create 2285 -#define wxFindReplaceDialog_GetData 2286 -#define wxFindReplaceData_new_0 2287 -#define wxFindReplaceData_new_1 2288 -#define wxFindReplaceData_GetFindString 2289 -#define wxFindReplaceData_GetReplaceString 2290 -#define wxFindReplaceData_GetFlags 2291 -#define wxFindReplaceData_SetFlags 2292 -#define wxFindReplaceData_SetFindString 2293 -#define wxFindReplaceData_SetReplaceString 2294 -#define wxFindReplaceData_destroy 2295 -#define wxMultiChoiceDialog_new_0 2296 -#define wxMultiChoiceDialog_new_5 2298 -#define wxMultiChoiceDialog_GetSelections 2299 -#define wxMultiChoiceDialog_SetSelections 2300 -#define wxMultiChoiceDialog_destroy 2301 -#define wxSingleChoiceDialog_new_0 2302 -#define wxSingleChoiceDialog_new_5 2304 -#define wxSingleChoiceDialog_GetSelection 2305 -#define wxSingleChoiceDialog_GetStringSelection 2306 -#define wxSingleChoiceDialog_SetSelection 2307 -#define wxSingleChoiceDialog_destroy 2308 -#define wxTextEntryDialog_new 2309 -#define wxTextEntryDialog_GetValue 2310 -#define wxTextEntryDialog_SetValue 2311 -#define wxTextEntryDialog_destroy 2312 -#define wxPasswordEntryDialog_new 2313 -#define wxPasswordEntryDialog_destroy 2314 -#define wxFontData_new_0 2315 -#define wxFontData_new_1 2316 -#define wxFontData_destruct 2317 -#define wxFontData_EnableEffects 2318 -#define wxFontData_GetAllowSymbols 2319 -#define wxFontData_GetColour 2320 -#define wxFontData_GetChosenFont 2321 -#define wxFontData_GetEnableEffects 2322 -#define wxFontData_GetInitialFont 2323 -#define wxFontData_GetShowHelp 2324 -#define wxFontData_SetAllowSymbols 2325 -#define wxFontData_SetChosenFont 2326 -#define wxFontData_SetColour 2327 -#define wxFontData_SetInitialFont 2328 -#define wxFontData_SetRange 2329 -#define wxFontData_SetShowHelp 2330 -#define wxFontDialog_new_0 2334 -#define wxFontDialog_new_2 2336 -#define wxFontDialog_Create 2338 -#define wxFontDialog_GetFontData 2339 -#define wxFontDialog_destroy 2341 -#define wxProgressDialog_new 2342 -#define wxProgressDialog_destruct 2343 -#define wxProgressDialog_Resume 2344 -#define wxProgressDialog_Update_2 2345 -#define wxProgressDialog_Update_0 2346 -#define wxMessageDialog_new 2347 -#define wxMessageDialog_destruct 2348 -#define wxPageSetupDialog_new 2349 -#define wxPageSetupDialog_destruct 2350 -#define wxPageSetupDialog_GetPageSetupData 2351 -#define wxPageSetupDialog_ShowModal 2352 -#define wxPageSetupDialogData_new_0 2353 -#define wxPageSetupDialogData_new_1_0 2354 -#define wxPageSetupDialogData_new_1_1 2355 -#define wxPageSetupDialogData_destruct 2356 -#define wxPageSetupDialogData_EnableHelp 2357 -#define wxPageSetupDialogData_EnableMargins 2358 -#define wxPageSetupDialogData_EnableOrientation 2359 -#define wxPageSetupDialogData_EnablePaper 2360 -#define wxPageSetupDialogData_EnablePrinter 2361 -#define wxPageSetupDialogData_GetDefaultMinMargins 2362 -#define wxPageSetupDialogData_GetEnableMargins 2363 -#define wxPageSetupDialogData_GetEnableOrientation 2364 -#define wxPageSetupDialogData_GetEnablePaper 2365 -#define wxPageSetupDialogData_GetEnablePrinter 2366 -#define wxPageSetupDialogData_GetEnableHelp 2367 -#define wxPageSetupDialogData_GetDefaultInfo 2368 -#define wxPageSetupDialogData_GetMarginTopLeft 2369 -#define wxPageSetupDialogData_GetMarginBottomRight 2370 -#define wxPageSetupDialogData_GetMinMarginTopLeft 2371 -#define wxPageSetupDialogData_GetMinMarginBottomRight 2372 -#define wxPageSetupDialogData_GetPaperId 2373 -#define wxPageSetupDialogData_GetPaperSize 2374 -#define wxPageSetupDialogData_GetPrintData 2376 -#define wxPageSetupDialogData_IsOk 2377 -#define wxPageSetupDialogData_SetDefaultInfo 2378 -#define wxPageSetupDialogData_SetDefaultMinMargins 2379 -#define wxPageSetupDialogData_SetMarginTopLeft 2380 -#define wxPageSetupDialogData_SetMarginBottomRight 2381 -#define wxPageSetupDialogData_SetMinMarginTopLeft 2382 -#define wxPageSetupDialogData_SetMinMarginBottomRight 2383 -#define wxPageSetupDialogData_SetPaperId 2384 -#define wxPageSetupDialogData_SetPaperSize_1_1 2385 -#define wxPageSetupDialogData_SetPaperSize_1_0 2386 -#define wxPageSetupDialogData_SetPrintData 2387 -#define wxPrintDialog_new_2_0 2388 -#define wxPrintDialog_new_2_1 2389 -#define wxPrintDialog_destruct 2390 -#define wxPrintDialog_GetPrintDialogData 2391 -#define wxPrintDialog_GetPrintDC 2392 -#define wxPrintDialogData_new_0 2393 -#define wxPrintDialogData_new_1_1 2394 -#define wxPrintDialogData_new_1_0 2395 -#define wxPrintDialogData_destruct 2396 -#define wxPrintDialogData_EnableHelp 2397 -#define wxPrintDialogData_EnablePageNumbers 2398 -#define wxPrintDialogData_EnablePrintToFile 2399 -#define wxPrintDialogData_EnableSelection 2400 -#define wxPrintDialogData_GetAllPages 2401 -#define wxPrintDialogData_GetCollate 2402 -#define wxPrintDialogData_GetFromPage 2403 -#define wxPrintDialogData_GetMaxPage 2404 -#define wxPrintDialogData_GetMinPage 2405 -#define wxPrintDialogData_GetNoCopies 2406 -#define wxPrintDialogData_GetPrintData 2407 -#define wxPrintDialogData_GetPrintToFile 2408 -#define wxPrintDialogData_GetSelection 2409 -#define wxPrintDialogData_GetToPage 2410 -#define wxPrintDialogData_IsOk 2411 -#define wxPrintDialogData_SetCollate 2412 -#define wxPrintDialogData_SetFromPage 2413 -#define wxPrintDialogData_SetMaxPage 2414 -#define wxPrintDialogData_SetMinPage 2415 -#define wxPrintDialogData_SetNoCopies 2416 -#define wxPrintDialogData_SetPrintData 2417 -#define wxPrintDialogData_SetPrintToFile 2418 -#define wxPrintDialogData_SetSelection 2419 -#define wxPrintDialogData_SetToPage 2420 -#define wxPrintData_new_0 2421 -#define wxPrintData_new_1 2422 -#define wxPrintData_destruct 2423 -#define wxPrintData_GetCollate 2424 -#define wxPrintData_GetBin 2425 -#define wxPrintData_GetColour 2426 -#define wxPrintData_GetDuplex 2427 -#define wxPrintData_GetNoCopies 2428 -#define wxPrintData_GetOrientation 2429 -#define wxPrintData_GetPaperId 2430 -#define wxPrintData_GetPrinterName 2431 -#define wxPrintData_GetQuality 2432 -#define wxPrintData_IsOk 2433 -#define wxPrintData_SetBin 2434 -#define wxPrintData_SetCollate 2435 -#define wxPrintData_SetColour 2436 -#define wxPrintData_SetDuplex 2437 -#define wxPrintData_SetNoCopies 2438 -#define wxPrintData_SetOrientation 2439 -#define wxPrintData_SetPaperId 2440 -#define wxPrintData_SetPrinterName 2441 -#define wxPrintData_SetQuality 2442 -#define wxPrintPreview_new_2 2445 -#define wxPrintPreview_new_3 2446 -#define wxPrintPreview_destruct 2448 -#define wxPrintPreview_GetCanvas 2449 -#define wxPrintPreview_GetCurrentPage 2450 -#define wxPrintPreview_GetFrame 2451 -#define wxPrintPreview_GetMaxPage 2452 -#define wxPrintPreview_GetMinPage 2453 -#define wxPrintPreview_GetPrintout 2454 -#define wxPrintPreview_GetPrintoutForPrinting 2455 -#define wxPrintPreview_IsOk 2456 -#define wxPrintPreview_PaintPage 2457 -#define wxPrintPreview_Print 2458 -#define wxPrintPreview_RenderPage 2459 -#define wxPrintPreview_SetCanvas 2460 -#define wxPrintPreview_SetCurrentPage 2461 -#define wxPrintPreview_SetFrame 2462 -#define wxPrintPreview_SetPrintout 2463 -#define wxPrintPreview_SetZoom 2464 -#define wxPreviewFrame_new 2465 -#define wxPreviewFrame_destruct 2466 -#define wxPreviewFrame_CreateControlBar 2467 -#define wxPreviewFrame_CreateCanvas 2468 -#define wxPreviewFrame_Initialize 2469 -#define wxPreviewFrame_OnCloseWindow 2470 -#define wxPreviewControlBar_new 2471 -#define wxPreviewControlBar_destruct 2472 -#define wxPreviewControlBar_CreateButtons 2473 -#define wxPreviewControlBar_GetPrintPreview 2474 -#define wxPreviewControlBar_GetZoomControl 2475 -#define wxPreviewControlBar_SetZoomControl 2476 -#define wxPrinter_new 2478 -#define wxPrinter_CreateAbortWindow 2479 -#define wxPrinter_GetAbort 2480 -#define wxPrinter_GetLastError 2481 -#define wxPrinter_GetPrintDialogData 2482 -#define wxPrinter_Print 2483 -#define wxPrinter_PrintDialog 2484 -#define wxPrinter_ReportError 2485 -#define wxPrinter_Setup 2486 -#define wxPrinter_destroy 2487 -#define wxXmlResource_new_1 2488 -#define wxXmlResource_new_2 2489 -#define wxXmlResource_destruct 2490 -#define wxXmlResource_AttachUnknownControl 2491 -#define wxXmlResource_ClearHandlers 2492 -#define wxXmlResource_CompareVersion 2493 -#define wxXmlResource_Get 2494 -#define wxXmlResource_GetFlags 2495 -#define wxXmlResource_GetVersion 2496 -#define wxXmlResource_GetXRCID 2497 -#define wxXmlResource_InitAllHandlers 2498 -#define wxXmlResource_Load 2499 -#define wxXmlResource_LoadBitmap 2500 -#define wxXmlResource_LoadDialog_2 2501 -#define wxXmlResource_LoadDialog_3 2502 -#define wxXmlResource_LoadFrame_2 2503 -#define wxXmlResource_LoadFrame_3 2504 -#define wxXmlResource_LoadIcon 2505 -#define wxXmlResource_LoadMenu 2506 -#define wxXmlResource_LoadMenuBar_2 2507 -#define wxXmlResource_LoadMenuBar_1 2508 -#define wxXmlResource_LoadPanel_2 2509 -#define wxXmlResource_LoadPanel_3 2510 -#define wxXmlResource_LoadToolBar 2511 -#define wxXmlResource_Set 2512 -#define wxXmlResource_SetFlags 2513 -#define wxXmlResource_Unload 2514 -#define wxXmlResource_xrcctrl 2515 -#define wxHtmlEasyPrinting_new 2516 -#define wxHtmlEasyPrinting_destruct 2517 -#define wxHtmlEasyPrinting_GetPrintData 2518 -#define wxHtmlEasyPrinting_GetPageSetupData 2519 -#define wxHtmlEasyPrinting_PreviewFile 2520 -#define wxHtmlEasyPrinting_PreviewText 2521 -#define wxHtmlEasyPrinting_PrintFile 2522 -#define wxHtmlEasyPrinting_PrintText 2523 -#define wxHtmlEasyPrinting_PageSetup 2524 -#define wxHtmlEasyPrinting_SetFonts 2525 -#define wxHtmlEasyPrinting_SetHeader 2526 -#define wxHtmlEasyPrinting_SetFooter 2527 -#define wxGLCanvas_new_2 2529 -#define wxGLCanvas_new_3_1 2530 -#define wxGLCanvas_new_3_0 2531 -#define wxGLCanvas_GetContext 2532 -#define wxGLCanvas_SetCurrent 2534 -#define wxGLCanvas_SwapBuffers 2535 -#define wxGLCanvas_destroy 2536 -#define wxAuiManager_new 2537 -#define wxAuiManager_destruct 2538 -#define wxAuiManager_AddPane_2_1 2539 -#define wxAuiManager_AddPane_3 2540 -#define wxAuiManager_AddPane_2_0 2541 -#define wxAuiManager_DetachPane 2542 -#define wxAuiManager_GetAllPanes 2543 -#define wxAuiManager_GetArtProvider 2544 -#define wxAuiManager_GetDockSizeConstraint 2545 -#define wxAuiManager_GetFlags 2546 -#define wxAuiManager_GetManagedWindow 2547 -#define wxAuiManager_GetManager 2548 -#define wxAuiManager_GetPane_1_1 2549 -#define wxAuiManager_GetPane_1_0 2550 -#define wxAuiManager_HideHint 2551 -#define wxAuiManager_InsertPane 2552 -#define wxAuiManager_LoadPaneInfo 2553 -#define wxAuiManager_LoadPerspective 2554 -#define wxAuiManager_SavePaneInfo 2555 -#define wxAuiManager_SavePerspective 2556 -#define wxAuiManager_SetArtProvider 2557 -#define wxAuiManager_SetDockSizeConstraint 2558 -#define wxAuiManager_SetFlags 2559 -#define wxAuiManager_SetManagedWindow 2560 -#define wxAuiManager_ShowHint 2561 -#define wxAuiManager_UnInit 2562 -#define wxAuiManager_Update 2563 -#define wxAuiPaneInfo_new_0 2564 -#define wxAuiPaneInfo_new_1 2565 -#define wxAuiPaneInfo_destruct 2566 -#define wxAuiPaneInfo_BestSize_1 2567 -#define wxAuiPaneInfo_BestSize_2 2568 -#define wxAuiPaneInfo_Bottom 2569 -#define wxAuiPaneInfo_BottomDockable 2570 -#define wxAuiPaneInfo_Caption 2571 -#define wxAuiPaneInfo_CaptionVisible 2572 -#define wxAuiPaneInfo_Centre 2573 -#define wxAuiPaneInfo_CentrePane 2574 -#define wxAuiPaneInfo_CloseButton 2575 -#define wxAuiPaneInfo_DefaultPane 2576 -#define wxAuiPaneInfo_DestroyOnClose 2577 -#define wxAuiPaneInfo_Direction 2578 -#define wxAuiPaneInfo_Dock 2579 -#define wxAuiPaneInfo_Dockable 2580 -#define wxAuiPaneInfo_Fixed 2581 -#define wxAuiPaneInfo_Float 2582 -#define wxAuiPaneInfo_Floatable 2583 -#define wxAuiPaneInfo_FloatingPosition_1 2584 -#define wxAuiPaneInfo_FloatingPosition_2 2585 -#define wxAuiPaneInfo_FloatingSize_1 2586 -#define wxAuiPaneInfo_FloatingSize_2 2587 -#define wxAuiPaneInfo_Gripper 2588 -#define wxAuiPaneInfo_GripperTop 2589 -#define wxAuiPaneInfo_HasBorder 2590 -#define wxAuiPaneInfo_HasCaption 2591 -#define wxAuiPaneInfo_HasCloseButton 2592 -#define wxAuiPaneInfo_HasFlag 2593 -#define wxAuiPaneInfo_HasGripper 2594 -#define wxAuiPaneInfo_HasGripperTop 2595 -#define wxAuiPaneInfo_HasMaximizeButton 2596 -#define wxAuiPaneInfo_HasMinimizeButton 2597 -#define wxAuiPaneInfo_HasPinButton 2598 -#define wxAuiPaneInfo_Hide 2599 -#define wxAuiPaneInfo_IsBottomDockable 2600 -#define wxAuiPaneInfo_IsDocked 2601 -#define wxAuiPaneInfo_IsFixed 2602 -#define wxAuiPaneInfo_IsFloatable 2603 -#define wxAuiPaneInfo_IsFloating 2604 -#define wxAuiPaneInfo_IsLeftDockable 2605 -#define wxAuiPaneInfo_IsMovable 2606 -#define wxAuiPaneInfo_IsOk 2607 -#define wxAuiPaneInfo_IsResizable 2608 -#define wxAuiPaneInfo_IsRightDockable 2609 -#define wxAuiPaneInfo_IsShown 2610 -#define wxAuiPaneInfo_IsToolbar 2611 -#define wxAuiPaneInfo_IsTopDockable 2612 -#define wxAuiPaneInfo_Layer 2613 -#define wxAuiPaneInfo_Left 2614 -#define wxAuiPaneInfo_LeftDockable 2615 -#define wxAuiPaneInfo_MaxSize_1 2616 -#define wxAuiPaneInfo_MaxSize_2 2617 -#define wxAuiPaneInfo_MaximizeButton 2618 -#define wxAuiPaneInfo_MinSize_1 2619 -#define wxAuiPaneInfo_MinSize_2 2620 -#define wxAuiPaneInfo_MinimizeButton 2621 -#define wxAuiPaneInfo_Movable 2622 -#define wxAuiPaneInfo_Name 2623 -#define wxAuiPaneInfo_PaneBorder 2624 -#define wxAuiPaneInfo_PinButton 2625 -#define wxAuiPaneInfo_Position 2626 -#define wxAuiPaneInfo_Resizable 2627 -#define wxAuiPaneInfo_Right 2628 -#define wxAuiPaneInfo_RightDockable 2629 -#define wxAuiPaneInfo_Row 2630 -#define wxAuiPaneInfo_SafeSet 2631 -#define wxAuiPaneInfo_SetFlag 2632 -#define wxAuiPaneInfo_Show 2633 -#define wxAuiPaneInfo_ToolbarPane 2634 -#define wxAuiPaneInfo_Top 2635 -#define wxAuiPaneInfo_TopDockable 2636 -#define wxAuiPaneInfo_Window 2637 -#define wxAuiNotebook_new_0 2638 -#define wxAuiNotebook_new_2 2639 -#define wxAuiNotebook_AddPage 2640 -#define wxAuiNotebook_Create 2641 -#define wxAuiNotebook_DeletePage 2642 -#define wxAuiNotebook_GetArtProvider 2643 -#define wxAuiNotebook_GetPage 2644 -#define wxAuiNotebook_GetPageBitmap 2645 -#define wxAuiNotebook_GetPageCount 2646 -#define wxAuiNotebook_GetPageIndex 2647 -#define wxAuiNotebook_GetPageText 2648 -#define wxAuiNotebook_GetSelection 2649 -#define wxAuiNotebook_InsertPage 2650 -#define wxAuiNotebook_RemovePage 2651 -#define wxAuiNotebook_SetArtProvider 2652 -#define wxAuiNotebook_SetFont 2653 -#define wxAuiNotebook_SetPageBitmap 2654 -#define wxAuiNotebook_SetPageText 2655 -#define wxAuiNotebook_SetSelection 2656 -#define wxAuiNotebook_SetTabCtrlHeight 2657 -#define wxAuiNotebook_SetUniformBitmapSize 2658 -#define wxAuiNotebook_destroy 2659 -#define wxMDIParentFrame_new_0 2660 -#define wxMDIParentFrame_new_4 2661 -#define wxMDIParentFrame_destruct 2662 -#define wxMDIParentFrame_ActivateNext 2663 -#define wxMDIParentFrame_ActivatePrevious 2664 -#define wxMDIParentFrame_ArrangeIcons 2665 -#define wxMDIParentFrame_Cascade 2666 -#define wxMDIParentFrame_Create 2667 -#define wxMDIParentFrame_GetActiveChild 2668 -#define wxMDIParentFrame_GetClientWindow 2669 -#define wxMDIParentFrame_Tile 2670 -#define wxMDIChildFrame_new_0 2671 -#define wxMDIChildFrame_new_4 2672 -#define wxMDIChildFrame_destruct 2673 -#define wxMDIChildFrame_Activate 2674 -#define wxMDIChildFrame_Create 2675 -#define wxMDIChildFrame_Maximize 2676 -#define wxMDIChildFrame_Restore 2677 -#define wxMDIClientWindow_new_0 2678 -#define wxMDIClientWindow_new_2 2679 -#define wxMDIClientWindow_destruct 2680 -#define wxMDIClientWindow_CreateClient 2681 -#define wxLayoutAlgorithm_new 2682 -#define wxLayoutAlgorithm_LayoutFrame 2683 -#define wxLayoutAlgorithm_LayoutMDIFrame 2684 -#define wxLayoutAlgorithm_LayoutWindow 2685 -#define wxLayoutAlgorithm_destroy 2686 -#define wxEvent_GetId 2687 -#define wxEvent_GetSkipped 2688 -#define wxEvent_GetTimestamp 2689 -#define wxEvent_IsCommandEvent 2690 -#define wxEvent_ResumePropagation 2691 -#define wxEvent_ShouldPropagate 2692 -#define wxEvent_Skip 2693 -#define wxEvent_StopPropagation 2694 -#define wxCommandEvent_getClientData 2695 -#define wxCommandEvent_GetExtraLong 2696 -#define wxCommandEvent_GetInt 2697 -#define wxCommandEvent_GetSelection 2698 -#define wxCommandEvent_GetString 2699 -#define wxCommandEvent_IsChecked 2700 -#define wxCommandEvent_IsSelection 2701 -#define wxCommandEvent_SetInt 2702 -#define wxCommandEvent_SetString 2703 -#define wxScrollEvent_GetOrientation 2704 -#define wxScrollEvent_GetPosition 2705 -#define wxScrollWinEvent_GetOrientation 2706 -#define wxScrollWinEvent_GetPosition 2707 -#define wxMouseEvent_AltDown 2708 -#define wxMouseEvent_Button 2709 -#define wxMouseEvent_ButtonDClick 2710 -#define wxMouseEvent_ButtonDown 2711 -#define wxMouseEvent_ButtonUp 2712 -#define wxMouseEvent_CmdDown 2713 -#define wxMouseEvent_ControlDown 2714 -#define wxMouseEvent_Dragging 2715 -#define wxMouseEvent_Entering 2716 -#define wxMouseEvent_GetButton 2717 -#define wxMouseEvent_GetPosition 2720 -#define wxMouseEvent_GetLogicalPosition 2721 -#define wxMouseEvent_GetLinesPerAction 2722 -#define wxMouseEvent_GetWheelRotation 2723 -#define wxMouseEvent_GetWheelDelta 2724 -#define wxMouseEvent_GetX 2725 -#define wxMouseEvent_GetY 2726 -#define wxMouseEvent_IsButton 2727 -#define wxMouseEvent_IsPageScroll 2728 -#define wxMouseEvent_Leaving 2729 -#define wxMouseEvent_LeftDClick 2730 -#define wxMouseEvent_LeftDown 2731 -#define wxMouseEvent_LeftIsDown 2732 -#define wxMouseEvent_LeftUp 2733 -#define wxMouseEvent_MetaDown 2734 -#define wxMouseEvent_MiddleDClick 2735 -#define wxMouseEvent_MiddleDown 2736 -#define wxMouseEvent_MiddleIsDown 2737 -#define wxMouseEvent_MiddleUp 2738 -#define wxMouseEvent_Moving 2739 -#define wxMouseEvent_RightDClick 2740 -#define wxMouseEvent_RightDown 2741 -#define wxMouseEvent_RightIsDown 2742 -#define wxMouseEvent_RightUp 2743 -#define wxMouseEvent_ShiftDown 2744 -#define wxSetCursorEvent_GetCursor 2745 -#define wxSetCursorEvent_GetX 2746 -#define wxSetCursorEvent_GetY 2747 -#define wxSetCursorEvent_HasCursor 2748 -#define wxSetCursorEvent_SetCursor 2749 -#define wxKeyEvent_AltDown 2750 -#define wxKeyEvent_CmdDown 2751 -#define wxKeyEvent_ControlDown 2752 -#define wxKeyEvent_GetKeyCode 2753 -#define wxKeyEvent_GetModifiers 2754 -#define wxKeyEvent_GetPosition 2757 -#define wxKeyEvent_GetRawKeyCode 2758 -#define wxKeyEvent_GetRawKeyFlags 2759 -#define wxKeyEvent_GetUnicodeKey 2760 -#define wxKeyEvent_GetX 2761 -#define wxKeyEvent_GetY 2762 -#define wxKeyEvent_HasModifiers 2763 -#define wxKeyEvent_MetaDown 2764 -#define wxKeyEvent_ShiftDown 2765 -#define wxSizeEvent_GetSize 2766 -#define wxMoveEvent_GetPosition 2767 -#define wxEraseEvent_GetDC 2768 -#define wxFocusEvent_GetWindow 2769 -#define wxChildFocusEvent_GetWindow 2770 -#define wxMenuEvent_GetMenu 2771 -#define wxMenuEvent_GetMenuId 2772 -#define wxMenuEvent_IsPopup 2773 -#define wxCloseEvent_CanVeto 2774 -#define wxCloseEvent_GetLoggingOff 2775 -#define wxCloseEvent_SetCanVeto 2776 -#define wxCloseEvent_SetLoggingOff 2777 -#define wxCloseEvent_Veto 2778 -#define wxShowEvent_SetShow 2779 -#define wxShowEvent_GetShow 2780 -#define wxIconizeEvent_Iconized 2781 -#define wxJoystickEvent_ButtonDown 2782 -#define wxJoystickEvent_ButtonIsDown 2783 -#define wxJoystickEvent_ButtonUp 2784 -#define wxJoystickEvent_GetButtonChange 2785 -#define wxJoystickEvent_GetButtonState 2786 -#define wxJoystickEvent_GetJoystick 2787 -#define wxJoystickEvent_GetPosition 2788 -#define wxJoystickEvent_GetZPosition 2789 -#define wxJoystickEvent_IsButton 2790 -#define wxJoystickEvent_IsMove 2791 -#define wxJoystickEvent_IsZMove 2792 -#define wxUpdateUIEvent_CanUpdate 2793 -#define wxUpdateUIEvent_Check 2794 -#define wxUpdateUIEvent_Enable 2795 -#define wxUpdateUIEvent_Show 2796 -#define wxUpdateUIEvent_GetChecked 2797 -#define wxUpdateUIEvent_GetEnabled 2798 -#define wxUpdateUIEvent_GetShown 2799 -#define wxUpdateUIEvent_GetSetChecked 2800 -#define wxUpdateUIEvent_GetSetEnabled 2801 -#define wxUpdateUIEvent_GetSetShown 2802 -#define wxUpdateUIEvent_GetSetText 2803 -#define wxUpdateUIEvent_GetText 2804 -#define wxUpdateUIEvent_GetMode 2805 -#define wxUpdateUIEvent_GetUpdateInterval 2806 -#define wxUpdateUIEvent_ResetUpdateTime 2807 -#define wxUpdateUIEvent_SetMode 2808 -#define wxUpdateUIEvent_SetText 2809 -#define wxUpdateUIEvent_SetUpdateInterval 2810 -#define wxMouseCaptureChangedEvent_GetCapturedWindow 2811 -#define wxPaletteChangedEvent_SetChangedWindow 2812 -#define wxPaletteChangedEvent_GetChangedWindow 2813 -#define wxQueryNewPaletteEvent_SetPaletteRealized 2814 -#define wxQueryNewPaletteEvent_GetPaletteRealized 2815 -#define wxNavigationKeyEvent_GetDirection 2816 -#define wxNavigationKeyEvent_SetDirection 2817 -#define wxNavigationKeyEvent_IsWindowChange 2818 -#define wxNavigationKeyEvent_SetWindowChange 2819 -#define wxNavigationKeyEvent_IsFromTab 2820 -#define wxNavigationKeyEvent_SetFromTab 2821 -#define wxNavigationKeyEvent_GetCurrentFocus 2822 -#define wxNavigationKeyEvent_SetCurrentFocus 2823 -#define wxHelpEvent_GetOrigin 2824 -#define wxHelpEvent_GetPosition 2825 -#define wxHelpEvent_SetOrigin 2826 -#define wxHelpEvent_SetPosition 2827 -#define wxContextMenuEvent_GetPosition 2828 -#define wxContextMenuEvent_SetPosition 2829 -#define wxIdleEvent_CanSend 2830 -#define wxIdleEvent_GetMode 2831 -#define wxIdleEvent_RequestMore 2832 -#define wxIdleEvent_MoreRequested 2833 -#define wxIdleEvent_SetMode 2834 -#define wxGridEvent_AltDown 2835 -#define wxGridEvent_ControlDown 2836 -#define wxGridEvent_GetCol 2837 -#define wxGridEvent_GetPosition 2838 -#define wxGridEvent_GetRow 2839 -#define wxGridEvent_MetaDown 2840 -#define wxGridEvent_Selecting 2841 -#define wxGridEvent_ShiftDown 2842 -#define wxNotifyEvent_Allow 2843 -#define wxNotifyEvent_IsAllowed 2844 -#define wxNotifyEvent_Veto 2845 -#define wxSashEvent_GetEdge 2846 -#define wxSashEvent_GetDragRect 2847 -#define wxSashEvent_GetDragStatus 2848 -#define wxListEvent_GetCacheFrom 2849 -#define wxListEvent_GetCacheTo 2850 -#define wxListEvent_GetKeyCode 2851 -#define wxListEvent_GetIndex 2852 -#define wxListEvent_GetColumn 2853 -#define wxListEvent_GetPoint 2854 -#define wxListEvent_GetLabel 2855 -#define wxListEvent_GetText 2856 -#define wxListEvent_GetImage 2857 -#define wxListEvent_GetData 2858 -#define wxListEvent_GetMask 2859 -#define wxListEvent_GetItem 2860 -#define wxListEvent_IsEditCancelled 2861 -#define wxDateEvent_GetDate 2862 -#define wxCalendarEvent_GetWeekDay 2863 -#define wxFileDirPickerEvent_GetPath 2864 -#define wxColourPickerEvent_GetColour 2865 -#define wxFontPickerEvent_GetFont 2866 -#define wxStyledTextEvent_GetPosition 2867 -#define wxStyledTextEvent_GetKey 2868 -#define wxStyledTextEvent_GetModifiers 2869 -#define wxStyledTextEvent_GetModificationType 2870 -#define wxStyledTextEvent_GetText 2871 -#define wxStyledTextEvent_GetLength 2872 -#define wxStyledTextEvent_GetLinesAdded 2873 -#define wxStyledTextEvent_GetLine 2874 -#define wxStyledTextEvent_GetFoldLevelNow 2875 -#define wxStyledTextEvent_GetFoldLevelPrev 2876 -#define wxStyledTextEvent_GetMargin 2877 -#define wxStyledTextEvent_GetMessage 2878 -#define wxStyledTextEvent_GetWParam 2879 -#define wxStyledTextEvent_GetLParam 2880 -#define wxStyledTextEvent_GetListType 2881 -#define wxStyledTextEvent_GetX 2882 -#define wxStyledTextEvent_GetY 2883 -#define wxStyledTextEvent_GetDragText 2884 -#define wxStyledTextEvent_GetDragAllowMove 2885 -#define wxStyledTextEvent_GetDragResult 2886 -#define wxStyledTextEvent_GetShift 2887 -#define wxStyledTextEvent_GetControl 2888 -#define wxStyledTextEvent_GetAlt 2889 -#define utils_wxGetKeyState 2890 -#define utils_wxGetMousePosition 2891 -#define utils_wxGetMouseState 2892 -#define utils_wxSetDetectableAutoRepeat 2893 -#define utils_wxBell 2894 -#define utils_wxFindMenuItemId 2895 -#define utils_wxGenericFindWindowAtPoint 2896 -#define utils_wxFindWindowAtPoint 2897 -#define utils_wxBeginBusyCursor 2898 -#define utils_wxEndBusyCursor 2899 -#define utils_wxIsBusy 2900 -#define utils_wxShutdown 2901 -#define utils_wxShell 2902 -#define utils_wxLaunchDefaultBrowser 2903 -#define utils_wxGetEmailAddress 2904 -#define utils_wxGetUserId 2905 -#define utils_wxGetHomeDir 2906 -#define utils_wxNewId 2907 -#define utils_wxRegisterId 2908 -#define utils_wxGetCurrentId 2909 -#define utils_wxGetOsDescription 2910 -#define utils_wxIsPlatformLittleEndian 2911 -#define utils_wxIsPlatform64Bit 2912 -#define wxPrintout_new 2913 -#define wxPrintout_destruct 2914 -#define wxPrintout_GetDC 2915 -#define wxPrintout_GetPageSizeMM 2916 -#define wxPrintout_GetPageSizePixels 2917 -#define wxPrintout_GetPaperRectPixels 2918 -#define wxPrintout_GetPPIPrinter 2919 -#define wxPrintout_GetPPIScreen 2920 -#define wxPrintout_GetTitle 2921 -#define wxPrintout_IsPreview 2922 -#define wxPrintout_FitThisSizeToPaper 2923 -#define wxPrintout_FitThisSizeToPage 2924 -#define wxPrintout_FitThisSizeToPageMargins 2925 -#define wxPrintout_MapScreenSizeToPaper 2926 -#define wxPrintout_MapScreenSizeToPage 2927 -#define wxPrintout_MapScreenSizeToPageMargins 2928 -#define wxPrintout_MapScreenSizeToDevice 2929 -#define wxPrintout_GetLogicalPaperRect 2930 -#define wxPrintout_GetLogicalPageRect 2931 -#define wxPrintout_GetLogicalPageMarginsRect 2932 -#define wxPrintout_SetLogicalOrigin 2933 -#define wxPrintout_OffsetLogicalOrigin 2934 -#define wxStyledTextCtrl_new_2 2935 -#define wxStyledTextCtrl_new_0 2936 -#define wxStyledTextCtrl_destruct 2937 -#define wxStyledTextCtrl_Create 2938 -#define wxStyledTextCtrl_AddText 2939 -#define wxStyledTextCtrl_AddStyledText 2940 -#define wxStyledTextCtrl_InsertText 2941 -#define wxStyledTextCtrl_ClearAll 2942 -#define wxStyledTextCtrl_ClearDocumentStyle 2943 -#define wxStyledTextCtrl_GetLength 2944 -#define wxStyledTextCtrl_GetCharAt 2945 -#define wxStyledTextCtrl_GetCurrentPos 2946 -#define wxStyledTextCtrl_GetAnchor 2947 -#define wxStyledTextCtrl_GetStyleAt 2948 -#define wxStyledTextCtrl_Redo 2949 -#define wxStyledTextCtrl_SetUndoCollection 2950 -#define wxStyledTextCtrl_SelectAll 2951 -#define wxStyledTextCtrl_SetSavePoint 2952 -#define wxStyledTextCtrl_GetStyledText 2953 -#define wxStyledTextCtrl_CanRedo 2954 -#define wxStyledTextCtrl_MarkerLineFromHandle 2955 -#define wxStyledTextCtrl_MarkerDeleteHandle 2956 -#define wxStyledTextCtrl_GetUndoCollection 2957 -#define wxStyledTextCtrl_GetViewWhiteSpace 2958 -#define wxStyledTextCtrl_SetViewWhiteSpace 2959 -#define wxStyledTextCtrl_PositionFromPoint 2960 -#define wxStyledTextCtrl_PositionFromPointClose 2961 -#define wxStyledTextCtrl_GotoLine 2962 -#define wxStyledTextCtrl_GotoPos 2963 -#define wxStyledTextCtrl_SetAnchor 2964 -#define wxStyledTextCtrl_GetCurLine 2965 -#define wxStyledTextCtrl_GetEndStyled 2966 -#define wxStyledTextCtrl_ConvertEOLs 2967 -#define wxStyledTextCtrl_GetEOLMode 2968 -#define wxStyledTextCtrl_SetEOLMode 2969 -#define wxStyledTextCtrl_StartStyling 2970 -#define wxStyledTextCtrl_SetStyling 2971 -#define wxStyledTextCtrl_GetBufferedDraw 2972 -#define wxStyledTextCtrl_SetBufferedDraw 2973 -#define wxStyledTextCtrl_SetTabWidth 2974 -#define wxStyledTextCtrl_GetTabWidth 2975 -#define wxStyledTextCtrl_SetCodePage 2976 -#define wxStyledTextCtrl_MarkerDefine 2977 -#define wxStyledTextCtrl_MarkerSetForeground 2978 -#define wxStyledTextCtrl_MarkerSetBackground 2979 -#define wxStyledTextCtrl_MarkerAdd 2980 -#define wxStyledTextCtrl_MarkerDelete 2981 -#define wxStyledTextCtrl_MarkerDeleteAll 2982 -#define wxStyledTextCtrl_MarkerGet 2983 -#define wxStyledTextCtrl_MarkerNext 2984 -#define wxStyledTextCtrl_MarkerPrevious 2985 -#define wxStyledTextCtrl_MarkerDefineBitmap 2986 -#define wxStyledTextCtrl_MarkerAddSet 2987 -#define wxStyledTextCtrl_MarkerSetAlpha 2988 -#define wxStyledTextCtrl_SetMarginType 2989 -#define wxStyledTextCtrl_GetMarginType 2990 -#define wxStyledTextCtrl_SetMarginWidth 2991 -#define wxStyledTextCtrl_GetMarginWidth 2992 -#define wxStyledTextCtrl_SetMarginMask 2993 -#define wxStyledTextCtrl_GetMarginMask 2994 -#define wxStyledTextCtrl_SetMarginSensitive 2995 -#define wxStyledTextCtrl_GetMarginSensitive 2996 -#define wxStyledTextCtrl_StyleClearAll 2997 -#define wxStyledTextCtrl_StyleSetForeground 2998 -#define wxStyledTextCtrl_StyleSetBackground 2999 -#define wxStyledTextCtrl_StyleSetBold 3000 -#define wxStyledTextCtrl_StyleSetItalic 3001 -#define wxStyledTextCtrl_StyleSetSize 3002 -#define wxStyledTextCtrl_StyleSetFaceName 3003 -#define wxStyledTextCtrl_StyleSetEOLFilled 3004 -#define wxStyledTextCtrl_StyleResetDefault 3005 -#define wxStyledTextCtrl_StyleSetUnderline 3006 -#define wxStyledTextCtrl_StyleSetCase 3007 -#define wxStyledTextCtrl_StyleSetHotSpot 3008 -#define wxStyledTextCtrl_SetSelForeground 3009 -#define wxStyledTextCtrl_SetSelBackground 3010 -#define wxStyledTextCtrl_GetSelAlpha 3011 -#define wxStyledTextCtrl_SetSelAlpha 3012 -#define wxStyledTextCtrl_SetCaretForeground 3013 -#define wxStyledTextCtrl_CmdKeyAssign 3014 -#define wxStyledTextCtrl_CmdKeyClear 3015 -#define wxStyledTextCtrl_CmdKeyClearAll 3016 -#define wxStyledTextCtrl_SetStyleBytes 3017 -#define wxStyledTextCtrl_StyleSetVisible 3018 -#define wxStyledTextCtrl_GetCaretPeriod 3019 -#define wxStyledTextCtrl_SetCaretPeriod 3020 -#define wxStyledTextCtrl_SetWordChars 3021 -#define wxStyledTextCtrl_BeginUndoAction 3022 -#define wxStyledTextCtrl_EndUndoAction 3023 -#define wxStyledTextCtrl_IndicatorSetStyle 3024 -#define wxStyledTextCtrl_IndicatorGetStyle 3025 -#define wxStyledTextCtrl_IndicatorSetForeground 3026 -#define wxStyledTextCtrl_IndicatorGetForeground 3027 -#define wxStyledTextCtrl_SetWhitespaceForeground 3028 -#define wxStyledTextCtrl_SetWhitespaceBackground 3029 -#define wxStyledTextCtrl_GetStyleBits 3030 -#define wxStyledTextCtrl_SetLineState 3031 -#define wxStyledTextCtrl_GetLineState 3032 -#define wxStyledTextCtrl_GetMaxLineState 3033 -#define wxStyledTextCtrl_GetCaretLineVisible 3034 -#define wxStyledTextCtrl_SetCaretLineVisible 3035 -#define wxStyledTextCtrl_GetCaretLineBackground 3036 -#define wxStyledTextCtrl_SetCaretLineBackground 3037 -#define wxStyledTextCtrl_AutoCompShow 3038 -#define wxStyledTextCtrl_AutoCompCancel 3039 -#define wxStyledTextCtrl_AutoCompActive 3040 -#define wxStyledTextCtrl_AutoCompPosStart 3041 -#define wxStyledTextCtrl_AutoCompComplete 3042 -#define wxStyledTextCtrl_AutoCompStops 3043 -#define wxStyledTextCtrl_AutoCompSetSeparator 3044 -#define wxStyledTextCtrl_AutoCompGetSeparator 3045 -#define wxStyledTextCtrl_AutoCompSelect 3046 -#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3047 -#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3048 -#define wxStyledTextCtrl_AutoCompSetFillUps 3049 -#define wxStyledTextCtrl_AutoCompSetChooseSingle 3050 -#define wxStyledTextCtrl_AutoCompGetChooseSingle 3051 -#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3052 -#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3053 -#define wxStyledTextCtrl_UserListShow 3054 -#define wxStyledTextCtrl_AutoCompSetAutoHide 3055 -#define wxStyledTextCtrl_AutoCompGetAutoHide 3056 -#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3057 -#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3058 -#define wxStyledTextCtrl_RegisterImage 3059 -#define wxStyledTextCtrl_ClearRegisteredImages 3060 -#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3061 -#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3062 -#define wxStyledTextCtrl_AutoCompSetMaxWidth 3063 -#define wxStyledTextCtrl_AutoCompGetMaxWidth 3064 -#define wxStyledTextCtrl_AutoCompSetMaxHeight 3065 -#define wxStyledTextCtrl_AutoCompGetMaxHeight 3066 -#define wxStyledTextCtrl_SetIndent 3067 -#define wxStyledTextCtrl_GetIndent 3068 -#define wxStyledTextCtrl_SetUseTabs 3069 -#define wxStyledTextCtrl_GetUseTabs 3070 -#define wxStyledTextCtrl_SetLineIndentation 3071 -#define wxStyledTextCtrl_GetLineIndentation 3072 -#define wxStyledTextCtrl_GetLineIndentPosition 3073 -#define wxStyledTextCtrl_GetColumn 3074 -#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3075 -#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3076 -#define wxStyledTextCtrl_SetIndentationGuides 3077 -#define wxStyledTextCtrl_GetIndentationGuides 3078 -#define wxStyledTextCtrl_SetHighlightGuide 3079 -#define wxStyledTextCtrl_GetHighlightGuide 3080 -#define wxStyledTextCtrl_GetLineEndPosition 3081 -#define wxStyledTextCtrl_GetCodePage 3082 -#define wxStyledTextCtrl_GetCaretForeground 3083 -#define wxStyledTextCtrl_GetReadOnly 3084 -#define wxStyledTextCtrl_SetCurrentPos 3085 -#define wxStyledTextCtrl_SetSelectionStart 3086 -#define wxStyledTextCtrl_GetSelectionStart 3087 -#define wxStyledTextCtrl_SetSelectionEnd 3088 -#define wxStyledTextCtrl_GetSelectionEnd 3089 -#define wxStyledTextCtrl_SetPrintMagnification 3090 -#define wxStyledTextCtrl_GetPrintMagnification 3091 -#define wxStyledTextCtrl_SetPrintColourMode 3092 -#define wxStyledTextCtrl_GetPrintColourMode 3093 -#define wxStyledTextCtrl_FindText 3094 -#define wxStyledTextCtrl_FormatRange 3095 -#define wxStyledTextCtrl_GetFirstVisibleLine 3096 -#define wxStyledTextCtrl_GetLine 3097 -#define wxStyledTextCtrl_GetLineCount 3098 -#define wxStyledTextCtrl_SetMarginLeft 3099 -#define wxStyledTextCtrl_GetMarginLeft 3100 -#define wxStyledTextCtrl_SetMarginRight 3101 -#define wxStyledTextCtrl_GetMarginRight 3102 -#define wxStyledTextCtrl_GetModify 3103 -#define wxStyledTextCtrl_SetSelection 3104 -#define wxStyledTextCtrl_GetSelectedText 3105 -#define wxStyledTextCtrl_GetTextRange 3106 -#define wxStyledTextCtrl_HideSelection 3107 -#define wxStyledTextCtrl_LineFromPosition 3108 -#define wxStyledTextCtrl_PositionFromLine 3109 -#define wxStyledTextCtrl_LineScroll 3110 -#define wxStyledTextCtrl_EnsureCaretVisible 3111 -#define wxStyledTextCtrl_ReplaceSelection 3112 -#define wxStyledTextCtrl_SetReadOnly 3113 -#define wxStyledTextCtrl_CanPaste 3114 -#define wxStyledTextCtrl_CanUndo 3115 -#define wxStyledTextCtrl_EmptyUndoBuffer 3116 -#define wxStyledTextCtrl_Undo 3117 -#define wxStyledTextCtrl_Cut 3118 -#define wxStyledTextCtrl_Copy 3119 -#define wxStyledTextCtrl_Paste 3120 -#define wxStyledTextCtrl_Clear 3121 -#define wxStyledTextCtrl_SetText 3122 -#define wxStyledTextCtrl_GetText 3123 -#define wxStyledTextCtrl_GetTextLength 3124 -#define wxStyledTextCtrl_GetOvertype 3125 -#define wxStyledTextCtrl_SetCaretWidth 3126 -#define wxStyledTextCtrl_GetCaretWidth 3127 -#define wxStyledTextCtrl_SetTargetStart 3128 -#define wxStyledTextCtrl_GetTargetStart 3129 -#define wxStyledTextCtrl_SetTargetEnd 3130 -#define wxStyledTextCtrl_GetTargetEnd 3131 -#define wxStyledTextCtrl_ReplaceTarget 3132 -#define wxStyledTextCtrl_SearchInTarget 3133 -#define wxStyledTextCtrl_SetSearchFlags 3134 -#define wxStyledTextCtrl_GetSearchFlags 3135 -#define wxStyledTextCtrl_CallTipShow 3136 -#define wxStyledTextCtrl_CallTipCancel 3137 -#define wxStyledTextCtrl_CallTipActive 3138 -#define wxStyledTextCtrl_CallTipPosAtStart 3139 -#define wxStyledTextCtrl_CallTipSetHighlight 3140 -#define wxStyledTextCtrl_CallTipSetBackground 3141 -#define wxStyledTextCtrl_CallTipSetForeground 3142 -#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3143 -#define wxStyledTextCtrl_CallTipUseStyle 3144 -#define wxStyledTextCtrl_VisibleFromDocLine 3145 -#define wxStyledTextCtrl_DocLineFromVisible 3146 -#define wxStyledTextCtrl_WrapCount 3147 -#define wxStyledTextCtrl_SetFoldLevel 3148 -#define wxStyledTextCtrl_GetFoldLevel 3149 -#define wxStyledTextCtrl_GetLastChild 3150 -#define wxStyledTextCtrl_GetFoldParent 3151 -#define wxStyledTextCtrl_ShowLines 3152 -#define wxStyledTextCtrl_HideLines 3153 -#define wxStyledTextCtrl_GetLineVisible 3154 -#define wxStyledTextCtrl_SetFoldExpanded 3155 -#define wxStyledTextCtrl_GetFoldExpanded 3156 -#define wxStyledTextCtrl_ToggleFold 3157 -#define wxStyledTextCtrl_EnsureVisible 3158 -#define wxStyledTextCtrl_SetFoldFlags 3159 -#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3160 -#define wxStyledTextCtrl_SetTabIndents 3161 -#define wxStyledTextCtrl_GetTabIndents 3162 -#define wxStyledTextCtrl_SetBackSpaceUnIndents 3163 -#define wxStyledTextCtrl_GetBackSpaceUnIndents 3164 -#define wxStyledTextCtrl_SetMouseDwellTime 3165 -#define wxStyledTextCtrl_GetMouseDwellTime 3166 -#define wxStyledTextCtrl_WordStartPosition 3167 -#define wxStyledTextCtrl_WordEndPosition 3168 -#define wxStyledTextCtrl_SetWrapMode 3169 -#define wxStyledTextCtrl_GetWrapMode 3170 -#define wxStyledTextCtrl_SetWrapVisualFlags 3171 -#define wxStyledTextCtrl_GetWrapVisualFlags 3172 -#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3173 -#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3174 -#define wxStyledTextCtrl_SetWrapStartIndent 3175 -#define wxStyledTextCtrl_GetWrapStartIndent 3176 -#define wxStyledTextCtrl_SetLayoutCache 3177 -#define wxStyledTextCtrl_GetLayoutCache 3178 -#define wxStyledTextCtrl_SetScrollWidth 3179 -#define wxStyledTextCtrl_GetScrollWidth 3180 -#define wxStyledTextCtrl_TextWidth 3181 -#define wxStyledTextCtrl_GetEndAtLastLine 3182 -#define wxStyledTextCtrl_TextHeight 3183 -#define wxStyledTextCtrl_SetUseVerticalScrollBar 3184 -#define wxStyledTextCtrl_GetUseVerticalScrollBar 3185 -#define wxStyledTextCtrl_AppendText 3186 -#define wxStyledTextCtrl_GetTwoPhaseDraw 3187 -#define wxStyledTextCtrl_SetTwoPhaseDraw 3188 -#define wxStyledTextCtrl_TargetFromSelection 3189 -#define wxStyledTextCtrl_LinesJoin 3190 -#define wxStyledTextCtrl_LinesSplit 3191 -#define wxStyledTextCtrl_SetFoldMarginColour 3192 -#define wxStyledTextCtrl_SetFoldMarginHiColour 3193 -#define wxStyledTextCtrl_LineDown 3194 -#define wxStyledTextCtrl_LineDownExtend 3195 -#define wxStyledTextCtrl_LineUp 3196 -#define wxStyledTextCtrl_LineUpExtend 3197 -#define wxStyledTextCtrl_CharLeft 3198 -#define wxStyledTextCtrl_CharLeftExtend 3199 -#define wxStyledTextCtrl_CharRight 3200 -#define wxStyledTextCtrl_CharRightExtend 3201 -#define wxStyledTextCtrl_WordLeft 3202 -#define wxStyledTextCtrl_WordLeftExtend 3203 -#define wxStyledTextCtrl_WordRight 3204 -#define wxStyledTextCtrl_WordRightExtend 3205 -#define wxStyledTextCtrl_Home 3206 -#define wxStyledTextCtrl_HomeExtend 3207 -#define wxStyledTextCtrl_LineEnd 3208 -#define wxStyledTextCtrl_LineEndExtend 3209 -#define wxStyledTextCtrl_DocumentStart 3210 -#define wxStyledTextCtrl_DocumentStartExtend 3211 -#define wxStyledTextCtrl_DocumentEnd 3212 -#define wxStyledTextCtrl_DocumentEndExtend 3213 -#define wxStyledTextCtrl_PageUp 3214 -#define wxStyledTextCtrl_PageUpExtend 3215 -#define wxStyledTextCtrl_PageDown 3216 -#define wxStyledTextCtrl_PageDownExtend 3217 -#define wxStyledTextCtrl_EditToggleOvertype 3218 -#define wxStyledTextCtrl_Cancel 3219 -#define wxStyledTextCtrl_DeleteBack 3220 -#define wxStyledTextCtrl_Tab 3221 -#define wxStyledTextCtrl_BackTab 3222 -#define wxStyledTextCtrl_NewLine 3223 -#define wxStyledTextCtrl_FormFeed 3224 -#define wxStyledTextCtrl_VCHome 3225 -#define wxStyledTextCtrl_VCHomeExtend 3226 -#define wxStyledTextCtrl_ZoomIn 3227 -#define wxStyledTextCtrl_ZoomOut 3228 -#define wxStyledTextCtrl_DelWordLeft 3229 -#define wxStyledTextCtrl_DelWordRight 3230 -#define wxStyledTextCtrl_LineCut 3231 -#define wxStyledTextCtrl_LineDelete 3232 -#define wxStyledTextCtrl_LineTranspose 3233 -#define wxStyledTextCtrl_LineDuplicate 3234 -#define wxStyledTextCtrl_LowerCase 3235 -#define wxStyledTextCtrl_UpperCase 3236 -#define wxStyledTextCtrl_LineScrollDown 3237 -#define wxStyledTextCtrl_LineScrollUp 3238 -#define wxStyledTextCtrl_DeleteBackNotLine 3239 -#define wxStyledTextCtrl_HomeDisplay 3240 -#define wxStyledTextCtrl_HomeDisplayExtend 3241 -#define wxStyledTextCtrl_LineEndDisplay 3242 -#define wxStyledTextCtrl_LineEndDisplayExtend 3243 -#define wxStyledTextCtrl_HomeWrapExtend 3244 -#define wxStyledTextCtrl_LineEndWrap 3245 -#define wxStyledTextCtrl_LineEndWrapExtend 3246 -#define wxStyledTextCtrl_VCHomeWrap 3247 -#define wxStyledTextCtrl_VCHomeWrapExtend 3248 -#define wxStyledTextCtrl_LineCopy 3249 -#define wxStyledTextCtrl_MoveCaretInsideView 3250 -#define wxStyledTextCtrl_LineLength 3251 -#define wxStyledTextCtrl_BraceHighlight 3252 -#define wxStyledTextCtrl_BraceBadLight 3253 -#define wxStyledTextCtrl_BraceMatch 3254 -#define wxStyledTextCtrl_GetViewEOL 3255 -#define wxStyledTextCtrl_SetViewEOL 3256 -#define wxStyledTextCtrl_SetModEventMask 3257 -#define wxStyledTextCtrl_GetEdgeColumn 3258 -#define wxStyledTextCtrl_SetEdgeColumn 3259 -#define wxStyledTextCtrl_GetEdgeMode 3260 -#define wxStyledTextCtrl_GetEdgeColour 3261 -#define wxStyledTextCtrl_SetEdgeColour 3262 -#define wxStyledTextCtrl_SearchAnchor 3263 -#define wxStyledTextCtrl_SearchNext 3264 -#define wxStyledTextCtrl_SearchPrev 3265 -#define wxStyledTextCtrl_LinesOnScreen 3266 -#define wxStyledTextCtrl_UsePopUp 3267 -#define wxStyledTextCtrl_SelectionIsRectangle 3268 -#define wxStyledTextCtrl_SetZoom 3269 -#define wxStyledTextCtrl_GetZoom 3270 -#define wxStyledTextCtrl_GetModEventMask 3271 -#define wxStyledTextCtrl_SetSTCFocus 3272 -#define wxStyledTextCtrl_GetSTCFocus 3273 -#define wxStyledTextCtrl_SetStatus 3274 -#define wxStyledTextCtrl_GetStatus 3275 -#define wxStyledTextCtrl_SetMouseDownCaptures 3276 -#define wxStyledTextCtrl_GetMouseDownCaptures 3277 -#define wxStyledTextCtrl_SetSTCCursor 3278 -#define wxStyledTextCtrl_GetSTCCursor 3279 -#define wxStyledTextCtrl_SetControlCharSymbol 3280 -#define wxStyledTextCtrl_GetControlCharSymbol 3281 -#define wxStyledTextCtrl_WordPartLeft 3282 -#define wxStyledTextCtrl_WordPartLeftExtend 3283 -#define wxStyledTextCtrl_WordPartRight 3284 -#define wxStyledTextCtrl_WordPartRightExtend 3285 -#define wxStyledTextCtrl_SetVisiblePolicy 3286 -#define wxStyledTextCtrl_DelLineLeft 3287 -#define wxStyledTextCtrl_DelLineRight 3288 -#define wxStyledTextCtrl_GetXOffset 3289 -#define wxStyledTextCtrl_ChooseCaretX 3290 -#define wxStyledTextCtrl_SetXCaretPolicy 3291 -#define wxStyledTextCtrl_SetYCaretPolicy 3292 -#define wxStyledTextCtrl_GetPrintWrapMode 3293 -#define wxStyledTextCtrl_SetHotspotActiveForeground 3294 -#define wxStyledTextCtrl_SetHotspotActiveBackground 3295 -#define wxStyledTextCtrl_SetHotspotActiveUnderline 3296 -#define wxStyledTextCtrl_SetHotspotSingleLine 3297 -#define wxStyledTextCtrl_ParaDownExtend 3298 -#define wxStyledTextCtrl_ParaUp 3299 -#define wxStyledTextCtrl_ParaUpExtend 3300 -#define wxStyledTextCtrl_PositionBefore 3301 -#define wxStyledTextCtrl_PositionAfter 3302 -#define wxStyledTextCtrl_CopyRange 3303 -#define wxStyledTextCtrl_CopyText 3304 -#define wxStyledTextCtrl_SetSelectionMode 3305 -#define wxStyledTextCtrl_GetSelectionMode 3306 -#define wxStyledTextCtrl_LineDownRectExtend 3307 -#define wxStyledTextCtrl_LineUpRectExtend 3308 -#define wxStyledTextCtrl_CharLeftRectExtend 3309 -#define wxStyledTextCtrl_CharRightRectExtend 3310 -#define wxStyledTextCtrl_HomeRectExtend 3311 -#define wxStyledTextCtrl_VCHomeRectExtend 3312 -#define wxStyledTextCtrl_LineEndRectExtend 3313 -#define wxStyledTextCtrl_PageUpRectExtend 3314 -#define wxStyledTextCtrl_PageDownRectExtend 3315 -#define wxStyledTextCtrl_StutteredPageUp 3316 -#define wxStyledTextCtrl_StutteredPageUpExtend 3317 -#define wxStyledTextCtrl_StutteredPageDown 3318 -#define wxStyledTextCtrl_StutteredPageDownExtend 3319 -#define wxStyledTextCtrl_WordLeftEnd 3320 -#define wxStyledTextCtrl_WordLeftEndExtend 3321 -#define wxStyledTextCtrl_WordRightEnd 3322 -#define wxStyledTextCtrl_WordRightEndExtend 3323 -#define wxStyledTextCtrl_SetWhitespaceChars 3324 -#define wxStyledTextCtrl_SetCharsDefault 3325 -#define wxStyledTextCtrl_AutoCompGetCurrent 3326 -#define wxStyledTextCtrl_Allocate 3327 -#define wxStyledTextCtrl_FindColumn 3328 -#define wxStyledTextCtrl_GetCaretSticky 3329 -#define wxStyledTextCtrl_SetCaretSticky 3330 -#define wxStyledTextCtrl_ToggleCaretSticky 3331 -#define wxStyledTextCtrl_SetPasteConvertEndings 3332 -#define wxStyledTextCtrl_GetPasteConvertEndings 3333 -#define wxStyledTextCtrl_SelectionDuplicate 3334 -#define wxStyledTextCtrl_SetCaretLineBackAlpha 3335 -#define wxStyledTextCtrl_GetCaretLineBackAlpha 3336 -#define wxStyledTextCtrl_StartRecord 3337 -#define wxStyledTextCtrl_StopRecord 3338 -#define wxStyledTextCtrl_SetLexer 3339 -#define wxStyledTextCtrl_GetLexer 3340 -#define wxStyledTextCtrl_Colourise 3341 -#define wxStyledTextCtrl_SetProperty 3342 -#define wxStyledTextCtrl_SetKeyWords 3343 -#define wxStyledTextCtrl_SetLexerLanguage 3344 -#define wxStyledTextCtrl_GetProperty 3345 -#define wxStyledTextCtrl_GetStyleBitsNeeded 3346 -#define wxStyledTextCtrl_GetCurrentLine 3347 -#define wxStyledTextCtrl_StyleSetSpec 3348 -#define wxStyledTextCtrl_StyleSetFont 3349 -#define wxStyledTextCtrl_StyleSetFontAttr 3350 -#define wxStyledTextCtrl_StyleSetCharacterSet 3351 -#define wxStyledTextCtrl_StyleSetFontEncoding 3352 -#define wxStyledTextCtrl_CmdKeyExecute 3353 -#define wxStyledTextCtrl_SetMargins 3354 -#define wxStyledTextCtrl_GetSelection 3355 -#define wxStyledTextCtrl_PointFromPosition 3356 -#define wxStyledTextCtrl_ScrollToLine 3357 -#define wxStyledTextCtrl_ScrollToColumn 3358 -#define wxStyledTextCtrl_SendMsg 3359 -#define wxStyledTextCtrl_SetVScrollBar 3360 -#define wxStyledTextCtrl_SetHScrollBar 3361 -#define wxStyledTextCtrl_GetLastKeydownProcessed 3362 -#define wxStyledTextCtrl_SetLastKeydownProcessed 3363 -#define wxStyledTextCtrl_SaveFile 3364 -#define wxStyledTextCtrl_LoadFile 3365 -#define wxStyledTextCtrl_DoDragOver 3366 -#define wxStyledTextCtrl_DoDropText 3367 -#define wxStyledTextCtrl_GetUseAntiAliasing 3368 -#define wxStyledTextCtrl_AddTextRaw 3369 -#define wxStyledTextCtrl_InsertTextRaw 3370 -#define wxStyledTextCtrl_GetCurLineRaw 3371 -#define wxStyledTextCtrl_GetLineRaw 3372 -#define wxStyledTextCtrl_GetSelectedTextRaw 3373 -#define wxStyledTextCtrl_GetTextRangeRaw 3374 -#define wxStyledTextCtrl_SetTextRaw 3375 -#define wxStyledTextCtrl_GetTextRaw 3376 -#define wxStyledTextCtrl_AppendTextRaw 3377 -#define wxArtProvider_GetBitmap 3378 -#define wxArtProvider_GetIcon 3379 -#define wxTreeEvent_GetKeyCode 3380 -#define wxTreeEvent_GetItem 3381 -#define wxTreeEvent_GetKeyEvent 3382 -#define wxTreeEvent_GetLabel 3383 -#define wxTreeEvent_GetOldItem 3384 -#define wxTreeEvent_GetPoint 3385 -#define wxTreeEvent_IsEditCancelled 3386 -#define wxTreeEvent_SetToolTip 3387 -#define wxNotebookEvent_GetOldSelection 3388 -#define wxNotebookEvent_GetSelection 3389 -#define wxNotebookEvent_SetOldSelection 3390 -#define wxNotebookEvent_SetSelection 3391 -#define wxFileDataObject_new 3392 -#define wxFileDataObject_AddFile 3393 -#define wxFileDataObject_GetFilenames 3394 -#define wxFileDataObject_destroy 3395 -#define wxTextDataObject_new 3396 -#define wxTextDataObject_GetTextLength 3397 -#define wxTextDataObject_GetText 3398 -#define wxTextDataObject_SetText 3399 -#define wxTextDataObject_destroy 3400 -#define wxBitmapDataObject_new_1_1 3401 -#define wxBitmapDataObject_new_1_0 3402 -#define wxBitmapDataObject_GetBitmap 3403 -#define wxBitmapDataObject_SetBitmap 3404 -#define wxBitmapDataObject_destroy 3405 -#define wxClipboard_new 3407 -#define wxClipboard_destruct 3408 -#define wxClipboard_AddData 3409 -#define wxClipboard_Clear 3410 -#define wxClipboard_Close 3411 -#define wxClipboard_Flush 3412 -#define wxClipboard_GetData 3413 -#define wxClipboard_IsOpened 3414 -#define wxClipboard_Open 3415 -#define wxClipboard_SetData 3416 -#define wxClipboard_UsePrimarySelection 3418 -#define wxClipboard_IsSupported 3419 -#define wxClipboard_Get 3420 -#define wxSpinEvent_GetPosition 3421 -#define wxSpinEvent_SetPosition 3422 -#define wxSplitterWindow_new_0 3423 -#define wxSplitterWindow_new_2 3424 -#define wxSplitterWindow_destruct 3425 -#define wxSplitterWindow_Create 3426 -#define wxSplitterWindow_GetMinimumPaneSize 3427 -#define wxSplitterWindow_GetSashGravity 3428 -#define wxSplitterWindow_GetSashPosition 3429 -#define wxSplitterWindow_GetSplitMode 3430 -#define wxSplitterWindow_GetWindow1 3431 -#define wxSplitterWindow_GetWindow2 3432 -#define wxSplitterWindow_Initialize 3433 -#define wxSplitterWindow_IsSplit 3434 -#define wxSplitterWindow_ReplaceWindow 3435 -#define wxSplitterWindow_SetSashGravity 3436 -#define wxSplitterWindow_SetSashPosition 3437 -#define wxSplitterWindow_SetSashSize 3438 -#define wxSplitterWindow_SetMinimumPaneSize 3439 -#define wxSplitterWindow_SetSplitMode 3440 -#define wxSplitterWindow_SplitHorizontally 3441 -#define wxSplitterWindow_SplitVertically 3442 -#define wxSplitterWindow_Unsplit 3443 -#define wxSplitterWindow_UpdateSize 3444 -#define wxSplitterEvent_GetSashPosition 3445 -#define wxSplitterEvent_GetX 3446 -#define wxSplitterEvent_GetY 3447 -#define wxSplitterEvent_GetWindowBeingRemoved 3448 -#define wxSplitterEvent_SetSashPosition 3449 -#define wxHtmlWindow_new_0 3450 -#define wxHtmlWindow_new_2 3451 -#define wxHtmlWindow_AppendToPage 3452 -#define wxHtmlWindow_GetOpenedAnchor 3453 -#define wxHtmlWindow_GetOpenedPage 3454 -#define wxHtmlWindow_GetOpenedPageTitle 3455 -#define wxHtmlWindow_GetRelatedFrame 3456 -#define wxHtmlWindow_HistoryBack 3457 -#define wxHtmlWindow_HistoryCanBack 3458 -#define wxHtmlWindow_HistoryCanForward 3459 -#define wxHtmlWindow_HistoryClear 3460 -#define wxHtmlWindow_HistoryForward 3461 -#define wxHtmlWindow_LoadFile 3462 -#define wxHtmlWindow_LoadPage 3463 -#define wxHtmlWindow_SelectAll 3464 -#define wxHtmlWindow_SelectionToText 3465 -#define wxHtmlWindow_SelectLine 3466 -#define wxHtmlWindow_SelectWord 3467 -#define wxHtmlWindow_SetBorders 3468 -#define wxHtmlWindow_SetFonts 3469 -#define wxHtmlWindow_SetPage 3470 -#define wxHtmlWindow_SetRelatedFrame 3471 -#define wxHtmlWindow_SetRelatedStatusBar 3472 -#define wxHtmlWindow_ToText 3473 -#define wxHtmlWindow_destroy 3474 -#define wxHtmlLinkEvent_GetLinkInfo 3475 -#define wxSystemSettings_GetColour 3476 -#define wxSystemSettings_GetFont 3477 -#define wxSystemSettings_GetMetric 3478 -#define wxSystemSettings_GetScreenType 3479 -#define wxAuiNotebookEvent_SetSelection 3480 -#define wxAuiNotebookEvent_GetSelection 3481 -#define wxAuiNotebookEvent_SetOldSelection 3482 -#define wxAuiNotebookEvent_GetOldSelection 3483 -#define wxAuiNotebookEvent_SetDragSource 3484 -#define wxAuiNotebookEvent_GetDragSource 3485 -#define wxAuiManagerEvent_SetManager 3486 -#define wxAuiManagerEvent_GetManager 3487 -#define wxAuiManagerEvent_SetPane 3488 -#define wxAuiManagerEvent_GetPane 3489 -#define wxAuiManagerEvent_SetButton 3490 -#define wxAuiManagerEvent_GetButton 3491 -#define wxAuiManagerEvent_SetDC 3492 -#define wxAuiManagerEvent_GetDC 3493 -#define wxAuiManagerEvent_Veto 3494 -#define wxAuiManagerEvent_GetVeto 3495 -#define wxAuiManagerEvent_SetCanVeto 3496 -#define wxAuiManagerEvent_CanVeto 3497 -#define wxLogNull_new 3498 -#define wxLogNull_destroy 3499 +#define wxListItemAttr_new_0 1757 +#define wxListItemAttr_new_3 1758 +#define wxListItemAttr_GetBackgroundColour 1759 +#define wxListItemAttr_GetFont 1760 +#define wxListItemAttr_GetTextColour 1761 +#define wxListItemAttr_HasBackgroundColour 1762 +#define wxListItemAttr_HasFont 1763 +#define wxListItemAttr_HasTextColour 1764 +#define wxListItemAttr_SetBackgroundColour 1765 +#define wxListItemAttr_SetFont 1766 +#define wxListItemAttr_SetTextColour 1767 +#define wxListItemAttr_destroy 1768 +#define wxImageList_new_0 1769 +#define wxImageList_new_3 1770 +#define wxImageList_Add_1 1771 +#define wxImageList_Add_2_0 1772 +#define wxImageList_Add_2_1 1773 +#define wxImageList_Create 1774 +#define wxImageList_Draw 1776 +#define wxImageList_GetBitmap 1777 +#define wxImageList_GetIcon 1778 +#define wxImageList_GetImageCount 1779 +#define wxImageList_GetSize 1780 +#define wxImageList_Remove 1781 +#define wxImageList_RemoveAll 1782 +#define wxImageList_Replace_2 1783 +#define wxImageList_Replace_3 1784 +#define wxImageList_destroy 1785 +#define wxTextAttr_new_0 1786 +#define wxTextAttr_new_2 1787 +#define wxTextAttr_GetAlignment 1788 +#define wxTextAttr_GetBackgroundColour 1789 +#define wxTextAttr_GetFont 1790 +#define wxTextAttr_GetLeftIndent 1791 +#define wxTextAttr_GetLeftSubIndent 1792 +#define wxTextAttr_GetRightIndent 1793 +#define wxTextAttr_GetTabs 1794 +#define wxTextAttr_GetTextColour 1795 +#define wxTextAttr_HasBackgroundColour 1796 +#define wxTextAttr_HasFont 1797 +#define wxTextAttr_HasTextColour 1798 +#define wxTextAttr_GetFlags 1799 +#define wxTextAttr_IsDefault 1800 +#define wxTextAttr_SetAlignment 1801 +#define wxTextAttr_SetBackgroundColour 1802 +#define wxTextAttr_SetFlags 1803 +#define wxTextAttr_SetFont 1804 +#define wxTextAttr_SetLeftIndent 1805 +#define wxTextAttr_SetRightIndent 1806 +#define wxTextAttr_SetTabs 1807 +#define wxTextAttr_SetTextColour 1808 +#define wxTextAttr_destroy 1809 +#define wxTextCtrl_new_3 1811 +#define wxTextCtrl_new_0 1812 +#define wxTextCtrl_destruct 1814 +#define wxTextCtrl_AppendText 1815 +#define wxTextCtrl_CanCopy 1816 +#define wxTextCtrl_CanCut 1817 +#define wxTextCtrl_CanPaste 1818 +#define wxTextCtrl_CanRedo 1819 +#define wxTextCtrl_CanUndo 1820 +#define wxTextCtrl_Clear 1821 +#define wxTextCtrl_Copy 1822 +#define wxTextCtrl_Create 1823 +#define wxTextCtrl_Cut 1824 +#define wxTextCtrl_DiscardEdits 1825 +#define wxTextCtrl_EmulateKeyPress 1826 +#define wxTextCtrl_GetDefaultStyle 1827 +#define wxTextCtrl_GetInsertionPoint 1828 +#define wxTextCtrl_GetLastPosition 1829 +#define wxTextCtrl_GetLineLength 1830 +#define wxTextCtrl_GetLineText 1831 +#define wxTextCtrl_GetNumberOfLines 1832 +#define wxTextCtrl_GetRange 1833 +#define wxTextCtrl_GetSelection 1834 +#define wxTextCtrl_GetStringSelection 1835 +#define wxTextCtrl_GetStyle 1836 +#define wxTextCtrl_GetValue 1837 +#define wxTextCtrl_IsEditable 1838 +#define wxTextCtrl_IsModified 1839 +#define wxTextCtrl_IsMultiLine 1840 +#define wxTextCtrl_IsSingleLine 1841 +#define wxTextCtrl_LoadFile 1842 +#define wxTextCtrl_MarkDirty 1843 +#define wxTextCtrl_Paste 1844 +#define wxTextCtrl_PositionToXY 1845 +#define wxTextCtrl_Redo 1846 +#define wxTextCtrl_Remove 1847 +#define wxTextCtrl_Replace 1848 +#define wxTextCtrl_SaveFile 1849 +#define wxTextCtrl_SetDefaultStyle 1850 +#define wxTextCtrl_SetEditable 1851 +#define wxTextCtrl_SetInsertionPoint 1852 +#define wxTextCtrl_SetInsertionPointEnd 1853 +#define wxTextCtrl_SetMaxLength 1855 +#define wxTextCtrl_SetSelection 1856 +#define wxTextCtrl_SetStyle 1857 +#define wxTextCtrl_SetValue 1858 +#define wxTextCtrl_ShowPosition 1859 +#define wxTextCtrl_Undo 1860 +#define wxTextCtrl_WriteText 1861 +#define wxTextCtrl_XYToPosition 1862 +#define wxNotebook_new_0 1865 +#define wxNotebook_new_3 1866 +#define wxNotebook_destruct 1867 +#define wxNotebook_AddPage 1868 +#define wxNotebook_AdvanceSelection 1869 +#define wxNotebook_AssignImageList 1870 +#define wxNotebook_Create 1871 +#define wxNotebook_DeleteAllPages 1872 +#define wxNotebook_DeletePage 1873 +#define wxNotebook_RemovePage 1874 +#define wxNotebook_GetCurrentPage 1875 +#define wxNotebook_GetImageList 1876 +#define wxNotebook_GetPage 1878 +#define wxNotebook_GetPageCount 1879 +#define wxNotebook_GetPageImage 1880 +#define wxNotebook_GetPageText 1881 +#define wxNotebook_GetRowCount 1882 +#define wxNotebook_GetSelection 1883 +#define wxNotebook_GetThemeBackgroundColour 1884 +#define wxNotebook_HitTest 1886 +#define wxNotebook_InsertPage 1888 +#define wxNotebook_SetImageList 1889 +#define wxNotebook_SetPadding 1890 +#define wxNotebook_SetPageSize 1891 +#define wxNotebook_SetPageImage 1892 +#define wxNotebook_SetPageText 1893 +#define wxNotebook_SetSelection 1894 +#define wxNotebook_ChangeSelection 1895 +#define wxChoicebook_new_0 1896 +#define wxChoicebook_new_3 1897 +#define wxChoicebook_AddPage 1898 +#define wxChoicebook_AdvanceSelection 1899 +#define wxChoicebook_AssignImageList 1900 +#define wxChoicebook_Create 1901 +#define wxChoicebook_DeleteAllPages 1902 +#define wxChoicebook_DeletePage 1903 +#define wxChoicebook_RemovePage 1904 +#define wxChoicebook_GetCurrentPage 1905 +#define wxChoicebook_GetImageList 1906 +#define wxChoicebook_GetPage 1908 +#define wxChoicebook_GetPageCount 1909 +#define wxChoicebook_GetPageImage 1910 +#define wxChoicebook_GetPageText 1911 +#define wxChoicebook_GetSelection 1912 +#define wxChoicebook_HitTest 1913 +#define wxChoicebook_InsertPage 1914 +#define wxChoicebook_SetImageList 1915 +#define wxChoicebook_SetPageSize 1916 +#define wxChoicebook_SetPageImage 1917 +#define wxChoicebook_SetPageText 1918 +#define wxChoicebook_SetSelection 1919 +#define wxChoicebook_ChangeSelection 1920 +#define wxChoicebook_destroy 1921 +#define wxToolbook_new_0 1922 +#define wxToolbook_new_3 1923 +#define wxToolbook_AddPage 1924 +#define wxToolbook_AdvanceSelection 1925 +#define wxToolbook_AssignImageList 1926 +#define wxToolbook_Create 1927 +#define wxToolbook_DeleteAllPages 1928 +#define wxToolbook_DeletePage 1929 +#define wxToolbook_RemovePage 1930 +#define wxToolbook_GetCurrentPage 1931 +#define wxToolbook_GetImageList 1932 +#define wxToolbook_GetPage 1934 +#define wxToolbook_GetPageCount 1935 +#define wxToolbook_GetPageImage 1936 +#define wxToolbook_GetPageText 1937 +#define wxToolbook_GetSelection 1938 +#define wxToolbook_HitTest 1940 +#define wxToolbook_InsertPage 1941 +#define wxToolbook_SetImageList 1942 +#define wxToolbook_SetPageSize 1943 +#define wxToolbook_SetPageImage 1944 +#define wxToolbook_SetPageText 1945 +#define wxToolbook_SetSelection 1946 +#define wxToolbook_ChangeSelection 1947 +#define wxToolbook_destroy 1948 +#define wxListbook_new_0 1949 +#define wxListbook_new_3 1950 +#define wxListbook_AddPage 1951 +#define wxListbook_AdvanceSelection 1952 +#define wxListbook_AssignImageList 1953 +#define wxListbook_Create 1954 +#define wxListbook_DeleteAllPages 1955 +#define wxListbook_DeletePage 1956 +#define wxListbook_RemovePage 1957 +#define wxListbook_GetCurrentPage 1958 +#define wxListbook_GetImageList 1959 +#define wxListbook_GetPage 1961 +#define wxListbook_GetPageCount 1962 +#define wxListbook_GetPageImage 1963 +#define wxListbook_GetPageText 1964 +#define wxListbook_GetSelection 1965 +#define wxListbook_HitTest 1967 +#define wxListbook_InsertPage 1968 +#define wxListbook_SetImageList 1969 +#define wxListbook_SetPageSize 1970 +#define wxListbook_SetPageImage 1971 +#define wxListbook_SetPageText 1972 +#define wxListbook_SetSelection 1973 +#define wxListbook_ChangeSelection 1974 +#define wxListbook_destroy 1975 +#define wxTreebook_new_0 1976 +#define wxTreebook_new_3 1977 +#define wxTreebook_AddPage 1978 +#define wxTreebook_AdvanceSelection 1979 +#define wxTreebook_AssignImageList 1980 +#define wxTreebook_Create 1981 +#define wxTreebook_DeleteAllPages 1982 +#define wxTreebook_DeletePage 1983 +#define wxTreebook_RemovePage 1984 +#define wxTreebook_GetCurrentPage 1985 +#define wxTreebook_GetImageList 1986 +#define wxTreebook_GetPage 1988 +#define wxTreebook_GetPageCount 1989 +#define wxTreebook_GetPageImage 1990 +#define wxTreebook_GetPageText 1991 +#define wxTreebook_GetSelection 1992 +#define wxTreebook_ExpandNode 1993 +#define wxTreebook_IsNodeExpanded 1994 +#define wxTreebook_HitTest 1996 +#define wxTreebook_InsertPage 1997 +#define wxTreebook_InsertSubPage 1998 +#define wxTreebook_SetImageList 1999 +#define wxTreebook_SetPageSize 2000 +#define wxTreebook_SetPageImage 2001 +#define wxTreebook_SetPageText 2002 +#define wxTreebook_SetSelection 2003 +#define wxTreebook_ChangeSelection 2004 +#define wxTreebook_destroy 2005 +#define wxTreeCtrl_new_2 2008 +#define wxTreeCtrl_new_0 2009 +#define wxTreeCtrl_destruct 2011 +#define wxTreeCtrl_AddRoot 2012 +#define wxTreeCtrl_AppendItem 2013 +#define wxTreeCtrl_AssignImageList 2014 +#define wxTreeCtrl_AssignStateImageList 2015 +#define wxTreeCtrl_Collapse 2016 +#define wxTreeCtrl_CollapseAndReset 2017 +#define wxTreeCtrl_Create 2018 +#define wxTreeCtrl_Delete 2019 +#define wxTreeCtrl_DeleteAllItems 2020 +#define wxTreeCtrl_DeleteChildren 2021 +#define wxTreeCtrl_EditLabel 2022 +#define wxTreeCtrl_EnsureVisible 2023 +#define wxTreeCtrl_Expand 2024 +#define wxTreeCtrl_GetBoundingRect 2025 +#define wxTreeCtrl_GetChildrenCount 2027 +#define wxTreeCtrl_GetCount 2028 +#define wxTreeCtrl_GetEditControl 2029 +#define wxTreeCtrl_GetFirstChild 2030 +#define wxTreeCtrl_GetNextChild 2031 +#define wxTreeCtrl_GetFirstVisibleItem 2032 +#define wxTreeCtrl_GetImageList 2033 +#define wxTreeCtrl_GetIndent 2034 +#define wxTreeCtrl_GetItemBackgroundColour 2035 +#define wxTreeCtrl_GetItemData 2036 +#define wxTreeCtrl_GetItemFont 2037 +#define wxTreeCtrl_GetItemImage_1 2038 +#define wxTreeCtrl_GetItemImage_2 2039 +#define wxTreeCtrl_GetItemText 2040 +#define wxTreeCtrl_GetItemTextColour 2041 +#define wxTreeCtrl_GetLastChild 2042 +#define wxTreeCtrl_GetNextSibling 2043 +#define wxTreeCtrl_GetNextVisible 2044 +#define wxTreeCtrl_GetItemParent 2045 +#define wxTreeCtrl_GetPrevSibling 2046 +#define wxTreeCtrl_GetPrevVisible 2047 +#define wxTreeCtrl_GetRootItem 2048 +#define wxTreeCtrl_GetSelection 2049 +#define wxTreeCtrl_GetSelections 2050 +#define wxTreeCtrl_GetStateImageList 2051 +#define wxTreeCtrl_HitTest 2052 +#define wxTreeCtrl_InsertItem 2054 +#define wxTreeCtrl_IsBold 2055 +#define wxTreeCtrl_IsExpanded 2056 +#define wxTreeCtrl_IsSelected 2057 +#define wxTreeCtrl_IsVisible 2058 +#define wxTreeCtrl_ItemHasChildren 2059 +#define wxTreeCtrl_PrependItem 2060 +#define wxTreeCtrl_ScrollTo 2061 +#define wxTreeCtrl_SelectItem_1 2062 +#define wxTreeCtrl_SelectItem_2 2063 +#define wxTreeCtrl_SetIndent 2064 +#define wxTreeCtrl_SetImageList 2065 +#define wxTreeCtrl_SetItemBackgroundColour 2066 +#define wxTreeCtrl_SetItemBold 2067 +#define wxTreeCtrl_SetItemData 2068 +#define wxTreeCtrl_SetItemDropHighlight 2069 +#define wxTreeCtrl_SetItemFont 2070 +#define wxTreeCtrl_SetItemHasChildren 2071 +#define wxTreeCtrl_SetItemImage_2 2072 +#define wxTreeCtrl_SetItemImage_3 2073 +#define wxTreeCtrl_SetItemText 2074 +#define wxTreeCtrl_SetItemTextColour 2075 +#define wxTreeCtrl_SetStateImageList 2076 +#define wxTreeCtrl_SetWindowStyle 2077 +#define wxTreeCtrl_SortChildren 2078 +#define wxTreeCtrl_Toggle 2079 +#define wxTreeCtrl_ToggleItemSelection 2080 +#define wxTreeCtrl_Unselect 2081 +#define wxTreeCtrl_UnselectAll 2082 +#define wxTreeCtrl_UnselectItem 2083 +#define wxScrollBar_new_0 2084 +#define wxScrollBar_new_3 2085 +#define wxScrollBar_destruct 2086 +#define wxScrollBar_Create 2087 +#define wxScrollBar_GetRange 2088 +#define wxScrollBar_GetPageSize 2089 +#define wxScrollBar_GetThumbPosition 2090 +#define wxScrollBar_GetThumbSize 2091 +#define wxScrollBar_SetThumbPosition 2092 +#define wxScrollBar_SetScrollbar 2093 +#define wxSpinButton_new_2 2095 +#define wxSpinButton_new_0 2096 +#define wxSpinButton_Create 2097 +#define wxSpinButton_GetMax 2098 +#define wxSpinButton_GetMin 2099 +#define wxSpinButton_GetValue 2100 +#define wxSpinButton_SetRange 2101 +#define wxSpinButton_SetValue 2102 +#define wxSpinButton_destroy 2103 +#define wxSpinCtrl_new_0 2104 +#define wxSpinCtrl_new_2 2105 +#define wxSpinCtrl_Create 2107 +#define wxSpinCtrl_SetValue_1_1 2110 +#define wxSpinCtrl_SetValue_1_0 2111 +#define wxSpinCtrl_GetValue 2113 +#define wxSpinCtrl_SetRange 2115 +#define wxSpinCtrl_SetSelection 2116 +#define wxSpinCtrl_GetMin 2118 +#define wxSpinCtrl_GetMax 2120 +#define wxSpinCtrl_destroy 2121 +#define wxStaticText_new_0 2122 +#define wxStaticText_new_4 2123 +#define wxStaticText_Create 2124 +#define wxStaticText_GetLabel 2125 +#define wxStaticText_SetLabel 2126 +#define wxStaticText_Wrap 2127 +#define wxStaticText_destroy 2128 +#define wxStaticBitmap_new_0 2129 +#define wxStaticBitmap_new_4 2130 +#define wxStaticBitmap_Create 2131 +#define wxStaticBitmap_GetBitmap 2132 +#define wxStaticBitmap_SetBitmap 2133 +#define wxStaticBitmap_destroy 2134 +#define wxRadioBox_new 2135 +#define wxRadioBox_destruct 2137 +#define wxRadioBox_Create 2138 +#define wxRadioBox_Enable_2 2139 +#define wxRadioBox_Enable_1 2140 +#define wxRadioBox_GetSelection 2141 +#define wxRadioBox_GetString 2142 +#define wxRadioBox_SetSelection 2143 +#define wxRadioBox_Show_2 2144 +#define wxRadioBox_Show_1 2145 +#define wxRadioBox_GetColumnCount 2146 +#define wxRadioBox_GetItemHelpText 2147 +#define wxRadioBox_GetItemToolTip 2148 +#define wxRadioBox_GetItemFromPoint 2150 +#define wxRadioBox_GetRowCount 2151 +#define wxRadioBox_IsItemEnabled 2152 +#define wxRadioBox_IsItemShown 2153 +#define wxRadioBox_SetItemHelpText 2154 +#define wxRadioBox_SetItemToolTip 2155 +#define wxRadioButton_new_0 2156 +#define wxRadioButton_new_4 2157 +#define wxRadioButton_Create 2158 +#define wxRadioButton_GetValue 2159 +#define wxRadioButton_SetValue 2160 +#define wxRadioButton_destroy 2161 +#define wxSlider_new_6 2163 +#define wxSlider_new_0 2164 +#define wxSlider_Create 2165 +#define wxSlider_GetLineSize 2166 +#define wxSlider_GetMax 2167 +#define wxSlider_GetMin 2168 +#define wxSlider_GetPageSize 2169 +#define wxSlider_GetThumbLength 2170 +#define wxSlider_GetValue 2171 +#define wxSlider_SetLineSize 2172 +#define wxSlider_SetPageSize 2173 +#define wxSlider_SetRange 2174 +#define wxSlider_SetThumbLength 2175 +#define wxSlider_SetValue 2176 +#define wxSlider_destroy 2177 +#define wxDialog_new_4 2179 +#define wxDialog_new_0 2180 +#define wxDialog_destruct 2182 +#define wxDialog_Create 2183 +#define wxDialog_CreateButtonSizer 2184 +#define wxDialog_CreateStdDialogButtonSizer 2185 +#define wxDialog_EndModal 2186 +#define wxDialog_GetAffirmativeId 2187 +#define wxDialog_GetReturnCode 2188 +#define wxDialog_IsModal 2189 +#define wxDialog_SetAffirmativeId 2190 +#define wxDialog_SetReturnCode 2191 +#define wxDialog_Show 2192 +#define wxDialog_ShowModal 2193 +#define wxColourDialog_new_0 2194 +#define wxColourDialog_new_2 2195 +#define wxColourDialog_destruct 2196 +#define wxColourDialog_Create 2197 +#define wxColourDialog_GetColourData 2198 +#define wxColourData_new_0 2199 +#define wxColourData_new_1 2200 +#define wxColourData_destruct 2201 +#define wxColourData_GetChooseFull 2202 +#define wxColourData_GetColour 2203 +#define wxColourData_GetCustomColour 2205 +#define wxColourData_SetChooseFull 2206 +#define wxColourData_SetColour 2207 +#define wxColourData_SetCustomColour 2208 +#define wxPalette_new_0 2209 +#define wxPalette_new_4 2210 +#define wxPalette_destruct 2212 +#define wxPalette_Create 2213 +#define wxPalette_GetColoursCount 2214 +#define wxPalette_GetPixel 2215 +#define wxPalette_GetRGB 2216 +#define wxPalette_IsOk 2217 +#define wxDirDialog_new 2221 +#define wxDirDialog_destruct 2222 +#define wxDirDialog_GetPath 2223 +#define wxDirDialog_GetMessage 2224 +#define wxDirDialog_SetMessage 2225 +#define wxDirDialog_SetPath 2226 +#define wxFileDialog_new 2230 +#define wxFileDialog_destruct 2231 +#define wxFileDialog_GetDirectory 2232 +#define wxFileDialog_GetFilename 2233 +#define wxFileDialog_GetFilenames 2234 +#define wxFileDialog_GetFilterIndex 2235 +#define wxFileDialog_GetMessage 2236 +#define wxFileDialog_GetPath 2237 +#define wxFileDialog_GetPaths 2238 +#define wxFileDialog_GetWildcard 2239 +#define wxFileDialog_SetDirectory 2240 +#define wxFileDialog_SetFilename 2241 +#define wxFileDialog_SetFilterIndex 2242 +#define wxFileDialog_SetMessage 2243 +#define wxFileDialog_SetPath 2244 +#define wxFileDialog_SetWildcard 2245 +#define wxPickerBase_SetInternalMargin 2246 +#define wxPickerBase_GetInternalMargin 2247 +#define wxPickerBase_SetTextCtrlProportion 2248 +#define wxPickerBase_SetPickerCtrlProportion 2249 +#define wxPickerBase_GetTextCtrlProportion 2250 +#define wxPickerBase_GetPickerCtrlProportion 2251 +#define wxPickerBase_HasTextCtrl 2252 +#define wxPickerBase_GetTextCtrl 2253 +#define wxPickerBase_IsTextCtrlGrowable 2254 +#define wxPickerBase_SetPickerCtrlGrowable 2255 +#define wxPickerBase_SetTextCtrlGrowable 2256 +#define wxPickerBase_IsPickerCtrlGrowable 2257 +#define wxFilePickerCtrl_new_0 2258 +#define wxFilePickerCtrl_new_3 2259 +#define wxFilePickerCtrl_Create 2260 +#define wxFilePickerCtrl_GetPath 2261 +#define wxFilePickerCtrl_SetPath 2262 +#define wxFilePickerCtrl_destroy 2263 +#define wxDirPickerCtrl_new_0 2264 +#define wxDirPickerCtrl_new_3 2265 +#define wxDirPickerCtrl_Create 2266 +#define wxDirPickerCtrl_GetPath 2267 +#define wxDirPickerCtrl_SetPath 2268 +#define wxDirPickerCtrl_destroy 2269 +#define wxColourPickerCtrl_new_0 2270 +#define wxColourPickerCtrl_new_3 2271 +#define wxColourPickerCtrl_Create 2272 +#define wxColourPickerCtrl_GetColour 2273 +#define wxColourPickerCtrl_SetColour_1_1 2274 +#define wxColourPickerCtrl_SetColour_1_0 2275 +#define wxColourPickerCtrl_destroy 2276 +#define wxDatePickerCtrl_new_0 2277 +#define wxDatePickerCtrl_new_3 2278 +#define wxDatePickerCtrl_GetRange 2279 +#define wxDatePickerCtrl_GetValue 2280 +#define wxDatePickerCtrl_SetRange 2281 +#define wxDatePickerCtrl_SetValue 2282 +#define wxDatePickerCtrl_destroy 2283 +#define wxFontPickerCtrl_new_0 2284 +#define wxFontPickerCtrl_new_3 2285 +#define wxFontPickerCtrl_Create 2286 +#define wxFontPickerCtrl_GetSelectedFont 2287 +#define wxFontPickerCtrl_SetSelectedFont 2288 +#define wxFontPickerCtrl_GetMaxPointSize 2289 +#define wxFontPickerCtrl_SetMaxPointSize 2290 +#define wxFontPickerCtrl_destroy 2291 +#define wxFindReplaceDialog_new_0 2294 +#define wxFindReplaceDialog_new_4 2295 +#define wxFindReplaceDialog_destruct 2296 +#define wxFindReplaceDialog_Create 2297 +#define wxFindReplaceDialog_GetData 2298 +#define wxFindReplaceData_new_0 2299 +#define wxFindReplaceData_new_1 2300 +#define wxFindReplaceData_GetFindString 2301 +#define wxFindReplaceData_GetReplaceString 2302 +#define wxFindReplaceData_GetFlags 2303 +#define wxFindReplaceData_SetFlags 2304 +#define wxFindReplaceData_SetFindString 2305 +#define wxFindReplaceData_SetReplaceString 2306 +#define wxFindReplaceData_destroy 2307 +#define wxMultiChoiceDialog_new_0 2308 +#define wxMultiChoiceDialog_new_5 2310 +#define wxMultiChoiceDialog_GetSelections 2311 +#define wxMultiChoiceDialog_SetSelections 2312 +#define wxMultiChoiceDialog_destroy 2313 +#define wxSingleChoiceDialog_new_0 2314 +#define wxSingleChoiceDialog_new_5 2316 +#define wxSingleChoiceDialog_GetSelection 2317 +#define wxSingleChoiceDialog_GetStringSelection 2318 +#define wxSingleChoiceDialog_SetSelection 2319 +#define wxSingleChoiceDialog_destroy 2320 +#define wxTextEntryDialog_new 2321 +#define wxTextEntryDialog_GetValue 2322 +#define wxTextEntryDialog_SetValue 2323 +#define wxTextEntryDialog_destroy 2324 +#define wxPasswordEntryDialog_new 2325 +#define wxPasswordEntryDialog_destroy 2326 +#define wxFontData_new_0 2327 +#define wxFontData_new_1 2328 +#define wxFontData_destruct 2329 +#define wxFontData_EnableEffects 2330 +#define wxFontData_GetAllowSymbols 2331 +#define wxFontData_GetColour 2332 +#define wxFontData_GetChosenFont 2333 +#define wxFontData_GetEnableEffects 2334 +#define wxFontData_GetInitialFont 2335 +#define wxFontData_GetShowHelp 2336 +#define wxFontData_SetAllowSymbols 2337 +#define wxFontData_SetChosenFont 2338 +#define wxFontData_SetColour 2339 +#define wxFontData_SetInitialFont 2340 +#define wxFontData_SetRange 2341 +#define wxFontData_SetShowHelp 2342 +#define wxFontDialog_new_0 2346 +#define wxFontDialog_new_2 2348 +#define wxFontDialog_Create 2350 +#define wxFontDialog_GetFontData 2351 +#define wxFontDialog_destroy 2353 +#define wxProgressDialog_new 2354 +#define wxProgressDialog_destruct 2355 +#define wxProgressDialog_Resume 2356 +#define wxProgressDialog_Update_2 2357 +#define wxProgressDialog_Update_0 2358 +#define wxMessageDialog_new 2359 +#define wxMessageDialog_destruct 2360 +#define wxPageSetupDialog_new 2361 +#define wxPageSetupDialog_destruct 2362 +#define wxPageSetupDialog_GetPageSetupData 2363 +#define wxPageSetupDialog_ShowModal 2364 +#define wxPageSetupDialogData_new_0 2365 +#define wxPageSetupDialogData_new_1_0 2366 +#define wxPageSetupDialogData_new_1_1 2367 +#define wxPageSetupDialogData_destruct 2368 +#define wxPageSetupDialogData_EnableHelp 2369 +#define wxPageSetupDialogData_EnableMargins 2370 +#define wxPageSetupDialogData_EnableOrientation 2371 +#define wxPageSetupDialogData_EnablePaper 2372 +#define wxPageSetupDialogData_EnablePrinter 2373 +#define wxPageSetupDialogData_GetDefaultMinMargins 2374 +#define wxPageSetupDialogData_GetEnableMargins 2375 +#define wxPageSetupDialogData_GetEnableOrientation 2376 +#define wxPageSetupDialogData_GetEnablePaper 2377 +#define wxPageSetupDialogData_GetEnablePrinter 2378 +#define wxPageSetupDialogData_GetEnableHelp 2379 +#define wxPageSetupDialogData_GetDefaultInfo 2380 +#define wxPageSetupDialogData_GetMarginTopLeft 2381 +#define wxPageSetupDialogData_GetMarginBottomRight 2382 +#define wxPageSetupDialogData_GetMinMarginTopLeft 2383 +#define wxPageSetupDialogData_GetMinMarginBottomRight 2384 +#define wxPageSetupDialogData_GetPaperId 2385 +#define wxPageSetupDialogData_GetPaperSize 2386 +#define wxPageSetupDialogData_GetPrintData 2388 +#define wxPageSetupDialogData_IsOk 2389 +#define wxPageSetupDialogData_SetDefaultInfo 2390 +#define wxPageSetupDialogData_SetDefaultMinMargins 2391 +#define wxPageSetupDialogData_SetMarginTopLeft 2392 +#define wxPageSetupDialogData_SetMarginBottomRight 2393 +#define wxPageSetupDialogData_SetMinMarginTopLeft 2394 +#define wxPageSetupDialogData_SetMinMarginBottomRight 2395 +#define wxPageSetupDialogData_SetPaperId 2396 +#define wxPageSetupDialogData_SetPaperSize_1_1 2397 +#define wxPageSetupDialogData_SetPaperSize_1_0 2398 +#define wxPageSetupDialogData_SetPrintData 2399 +#define wxPrintDialog_new_2_0 2400 +#define wxPrintDialog_new_2_1 2401 +#define wxPrintDialog_destruct 2402 +#define wxPrintDialog_GetPrintDialogData 2403 +#define wxPrintDialog_GetPrintDC 2404 +#define wxPrintDialogData_new_0 2405 +#define wxPrintDialogData_new_1_1 2406 +#define wxPrintDialogData_new_1_0 2407 +#define wxPrintDialogData_destruct 2408 +#define wxPrintDialogData_EnableHelp 2409 +#define wxPrintDialogData_EnablePageNumbers 2410 +#define wxPrintDialogData_EnablePrintToFile 2411 +#define wxPrintDialogData_EnableSelection 2412 +#define wxPrintDialogData_GetAllPages 2413 +#define wxPrintDialogData_GetCollate 2414 +#define wxPrintDialogData_GetFromPage 2415 +#define wxPrintDialogData_GetMaxPage 2416 +#define wxPrintDialogData_GetMinPage 2417 +#define wxPrintDialogData_GetNoCopies 2418 +#define wxPrintDialogData_GetPrintData 2419 +#define wxPrintDialogData_GetPrintToFile 2420 +#define wxPrintDialogData_GetSelection 2421 +#define wxPrintDialogData_GetToPage 2422 +#define wxPrintDialogData_IsOk 2423 +#define wxPrintDialogData_SetCollate 2424 +#define wxPrintDialogData_SetFromPage 2425 +#define wxPrintDialogData_SetMaxPage 2426 +#define wxPrintDialogData_SetMinPage 2427 +#define wxPrintDialogData_SetNoCopies 2428 +#define wxPrintDialogData_SetPrintData 2429 +#define wxPrintDialogData_SetPrintToFile 2430 +#define wxPrintDialogData_SetSelection 2431 +#define wxPrintDialogData_SetToPage 2432 +#define wxPrintData_new_0 2433 +#define wxPrintData_new_1 2434 +#define wxPrintData_destruct 2435 +#define wxPrintData_GetCollate 2436 +#define wxPrintData_GetBin 2437 +#define wxPrintData_GetColour 2438 +#define wxPrintData_GetDuplex 2439 +#define wxPrintData_GetNoCopies 2440 +#define wxPrintData_GetOrientation 2441 +#define wxPrintData_GetPaperId 2442 +#define wxPrintData_GetPrinterName 2443 +#define wxPrintData_GetQuality 2444 +#define wxPrintData_IsOk 2445 +#define wxPrintData_SetBin 2446 +#define wxPrintData_SetCollate 2447 +#define wxPrintData_SetColour 2448 +#define wxPrintData_SetDuplex 2449 +#define wxPrintData_SetNoCopies 2450 +#define wxPrintData_SetOrientation 2451 +#define wxPrintData_SetPaperId 2452 +#define wxPrintData_SetPrinterName 2453 +#define wxPrintData_SetQuality 2454 +#define wxPrintPreview_new_2 2457 +#define wxPrintPreview_new_3 2458 +#define wxPrintPreview_destruct 2460 +#define wxPrintPreview_GetCanvas 2461 +#define wxPrintPreview_GetCurrentPage 2462 +#define wxPrintPreview_GetFrame 2463 +#define wxPrintPreview_GetMaxPage 2464 +#define wxPrintPreview_GetMinPage 2465 +#define wxPrintPreview_GetPrintout 2466 +#define wxPrintPreview_GetPrintoutForPrinting 2467 +#define wxPrintPreview_IsOk 2468 +#define wxPrintPreview_PaintPage 2469 +#define wxPrintPreview_Print 2470 +#define wxPrintPreview_RenderPage 2471 +#define wxPrintPreview_SetCanvas 2472 +#define wxPrintPreview_SetCurrentPage 2473 +#define wxPrintPreview_SetFrame 2474 +#define wxPrintPreview_SetPrintout 2475 +#define wxPrintPreview_SetZoom 2476 +#define wxPreviewFrame_new 2477 +#define wxPreviewFrame_destruct 2478 +#define wxPreviewFrame_CreateControlBar 2479 +#define wxPreviewFrame_CreateCanvas 2480 +#define wxPreviewFrame_Initialize 2481 +#define wxPreviewFrame_OnCloseWindow 2482 +#define wxPreviewControlBar_new 2483 +#define wxPreviewControlBar_destruct 2484 +#define wxPreviewControlBar_CreateButtons 2485 +#define wxPreviewControlBar_GetPrintPreview 2486 +#define wxPreviewControlBar_GetZoomControl 2487 +#define wxPreviewControlBar_SetZoomControl 2488 +#define wxPrinter_new 2490 +#define wxPrinter_CreateAbortWindow 2491 +#define wxPrinter_GetAbort 2492 +#define wxPrinter_GetLastError 2493 +#define wxPrinter_GetPrintDialogData 2494 +#define wxPrinter_Print 2495 +#define wxPrinter_PrintDialog 2496 +#define wxPrinter_ReportError 2497 +#define wxPrinter_Setup 2498 +#define wxPrinter_destroy 2499 +#define wxXmlResource_new_1 2500 +#define wxXmlResource_new_2 2501 +#define wxXmlResource_destruct 2502 +#define wxXmlResource_AttachUnknownControl 2503 +#define wxXmlResource_ClearHandlers 2504 +#define wxXmlResource_CompareVersion 2505 +#define wxXmlResource_Get 2506 +#define wxXmlResource_GetFlags 2507 +#define wxXmlResource_GetVersion 2508 +#define wxXmlResource_GetXRCID 2509 +#define wxXmlResource_InitAllHandlers 2510 +#define wxXmlResource_Load 2511 +#define wxXmlResource_LoadBitmap 2512 +#define wxXmlResource_LoadDialog_2 2513 +#define wxXmlResource_LoadDialog_3 2514 +#define wxXmlResource_LoadFrame_2 2515 +#define wxXmlResource_LoadFrame_3 2516 +#define wxXmlResource_LoadIcon 2517 +#define wxXmlResource_LoadMenu 2518 +#define wxXmlResource_LoadMenuBar_2 2519 +#define wxXmlResource_LoadMenuBar_1 2520 +#define wxXmlResource_LoadPanel_2 2521 +#define wxXmlResource_LoadPanel_3 2522 +#define wxXmlResource_LoadToolBar 2523 +#define wxXmlResource_Set 2524 +#define wxXmlResource_SetFlags 2525 +#define wxXmlResource_Unload 2526 +#define wxXmlResource_xrcctrl 2527 +#define wxHtmlEasyPrinting_new 2528 +#define wxHtmlEasyPrinting_destruct 2529 +#define wxHtmlEasyPrinting_GetPrintData 2530 +#define wxHtmlEasyPrinting_GetPageSetupData 2531 +#define wxHtmlEasyPrinting_PreviewFile 2532 +#define wxHtmlEasyPrinting_PreviewText 2533 +#define wxHtmlEasyPrinting_PrintFile 2534 +#define wxHtmlEasyPrinting_PrintText 2535 +#define wxHtmlEasyPrinting_PageSetup 2536 +#define wxHtmlEasyPrinting_SetFonts 2537 +#define wxHtmlEasyPrinting_SetHeader 2538 +#define wxHtmlEasyPrinting_SetFooter 2539 +#define wxGLCanvas_new_2 2541 +#define wxGLCanvas_new_3_1 2542 +#define wxGLCanvas_new_3_0 2543 +#define wxGLCanvas_GetContext 2544 +#define wxGLCanvas_SetCurrent 2546 +#define wxGLCanvas_SwapBuffers 2547 +#define wxGLCanvas_destroy 2548 +#define wxAuiManager_new 2549 +#define wxAuiManager_destruct 2550 +#define wxAuiManager_AddPane_2_1 2551 +#define wxAuiManager_AddPane_3 2552 +#define wxAuiManager_AddPane_2_0 2553 +#define wxAuiManager_DetachPane 2554 +#define wxAuiManager_GetAllPanes 2555 +#define wxAuiManager_GetArtProvider 2556 +#define wxAuiManager_GetDockSizeConstraint 2557 +#define wxAuiManager_GetFlags 2558 +#define wxAuiManager_GetManagedWindow 2559 +#define wxAuiManager_GetManager 2560 +#define wxAuiManager_GetPane_1_1 2561 +#define wxAuiManager_GetPane_1_0 2562 +#define wxAuiManager_HideHint 2563 +#define wxAuiManager_InsertPane 2564 +#define wxAuiManager_LoadPaneInfo 2565 +#define wxAuiManager_LoadPerspective 2566 +#define wxAuiManager_SavePaneInfo 2567 +#define wxAuiManager_SavePerspective 2568 +#define wxAuiManager_SetArtProvider 2569 +#define wxAuiManager_SetDockSizeConstraint 2570 +#define wxAuiManager_SetFlags 2571 +#define wxAuiManager_SetManagedWindow 2572 +#define wxAuiManager_ShowHint 2573 +#define wxAuiManager_UnInit 2574 +#define wxAuiManager_Update 2575 +#define wxAuiPaneInfo_new_0 2576 +#define wxAuiPaneInfo_new_1 2577 +#define wxAuiPaneInfo_destruct 2578 +#define wxAuiPaneInfo_BestSize_1 2579 +#define wxAuiPaneInfo_BestSize_2 2580 +#define wxAuiPaneInfo_Bottom 2581 +#define wxAuiPaneInfo_BottomDockable 2582 +#define wxAuiPaneInfo_Caption 2583 +#define wxAuiPaneInfo_CaptionVisible 2584 +#define wxAuiPaneInfo_Centre 2585 +#define wxAuiPaneInfo_CentrePane 2586 +#define wxAuiPaneInfo_CloseButton 2587 +#define wxAuiPaneInfo_DefaultPane 2588 +#define wxAuiPaneInfo_DestroyOnClose 2589 +#define wxAuiPaneInfo_Direction 2590 +#define wxAuiPaneInfo_Dock 2591 +#define wxAuiPaneInfo_Dockable 2592 +#define wxAuiPaneInfo_Fixed 2593 +#define wxAuiPaneInfo_Float 2594 +#define wxAuiPaneInfo_Floatable 2595 +#define wxAuiPaneInfo_FloatingPosition_1 2596 +#define wxAuiPaneInfo_FloatingPosition_2 2597 +#define wxAuiPaneInfo_FloatingSize_1 2598 +#define wxAuiPaneInfo_FloatingSize_2 2599 +#define wxAuiPaneInfo_Gripper 2600 +#define wxAuiPaneInfo_GripperTop 2601 +#define wxAuiPaneInfo_HasBorder 2602 +#define wxAuiPaneInfo_HasCaption 2603 +#define wxAuiPaneInfo_HasCloseButton 2604 +#define wxAuiPaneInfo_HasFlag 2605 +#define wxAuiPaneInfo_HasGripper 2606 +#define wxAuiPaneInfo_HasGripperTop 2607 +#define wxAuiPaneInfo_HasMaximizeButton 2608 +#define wxAuiPaneInfo_HasMinimizeButton 2609 +#define wxAuiPaneInfo_HasPinButton 2610 +#define wxAuiPaneInfo_Hide 2611 +#define wxAuiPaneInfo_IsBottomDockable 2612 +#define wxAuiPaneInfo_IsDocked 2613 +#define wxAuiPaneInfo_IsFixed 2614 +#define wxAuiPaneInfo_IsFloatable 2615 +#define wxAuiPaneInfo_IsFloating 2616 +#define wxAuiPaneInfo_IsLeftDockable 2617 +#define wxAuiPaneInfo_IsMovable 2618 +#define wxAuiPaneInfo_IsOk 2619 +#define wxAuiPaneInfo_IsResizable 2620 +#define wxAuiPaneInfo_IsRightDockable 2621 +#define wxAuiPaneInfo_IsShown 2622 +#define wxAuiPaneInfo_IsToolbar 2623 +#define wxAuiPaneInfo_IsTopDockable 2624 +#define wxAuiPaneInfo_Layer 2625 +#define wxAuiPaneInfo_Left 2626 +#define wxAuiPaneInfo_LeftDockable 2627 +#define wxAuiPaneInfo_MaxSize_1 2628 +#define wxAuiPaneInfo_MaxSize_2 2629 +#define wxAuiPaneInfo_MaximizeButton 2630 +#define wxAuiPaneInfo_MinSize_1 2631 +#define wxAuiPaneInfo_MinSize_2 2632 +#define wxAuiPaneInfo_MinimizeButton 2633 +#define wxAuiPaneInfo_Movable 2634 +#define wxAuiPaneInfo_Name 2635 +#define wxAuiPaneInfo_PaneBorder 2636 +#define wxAuiPaneInfo_PinButton 2637 +#define wxAuiPaneInfo_Position 2638 +#define wxAuiPaneInfo_Resizable 2639 +#define wxAuiPaneInfo_Right 2640 +#define wxAuiPaneInfo_RightDockable 2641 +#define wxAuiPaneInfo_Row 2642 +#define wxAuiPaneInfo_SafeSet 2643 +#define wxAuiPaneInfo_SetFlag 2644 +#define wxAuiPaneInfo_Show 2645 +#define wxAuiPaneInfo_ToolbarPane 2646 +#define wxAuiPaneInfo_Top 2647 +#define wxAuiPaneInfo_TopDockable 2648 +#define wxAuiPaneInfo_Window 2649 +#define wxAuiNotebook_new_0 2650 +#define wxAuiNotebook_new_2 2651 +#define wxAuiNotebook_AddPage 2652 +#define wxAuiNotebook_Create 2653 +#define wxAuiNotebook_DeletePage 2654 +#define wxAuiNotebook_GetArtProvider 2655 +#define wxAuiNotebook_GetPage 2656 +#define wxAuiNotebook_GetPageBitmap 2657 +#define wxAuiNotebook_GetPageCount 2658 +#define wxAuiNotebook_GetPageIndex 2659 +#define wxAuiNotebook_GetPageText 2660 +#define wxAuiNotebook_GetSelection 2661 +#define wxAuiNotebook_InsertPage 2662 +#define wxAuiNotebook_RemovePage 2663 +#define wxAuiNotebook_SetArtProvider 2664 +#define wxAuiNotebook_SetFont 2665 +#define wxAuiNotebook_SetPageBitmap 2666 +#define wxAuiNotebook_SetPageText 2667 +#define wxAuiNotebook_SetSelection 2668 +#define wxAuiNotebook_SetTabCtrlHeight 2669 +#define wxAuiNotebook_SetUniformBitmapSize 2670 +#define wxAuiNotebook_destroy 2671 +#define wxMDIParentFrame_new_0 2672 +#define wxMDIParentFrame_new_4 2673 +#define wxMDIParentFrame_destruct 2674 +#define wxMDIParentFrame_ActivateNext 2675 +#define wxMDIParentFrame_ActivatePrevious 2676 +#define wxMDIParentFrame_ArrangeIcons 2677 +#define wxMDIParentFrame_Cascade 2678 +#define wxMDIParentFrame_Create 2679 +#define wxMDIParentFrame_GetActiveChild 2680 +#define wxMDIParentFrame_GetClientWindow 2681 +#define wxMDIParentFrame_Tile 2682 +#define wxMDIChildFrame_new_0 2683 +#define wxMDIChildFrame_new_4 2684 +#define wxMDIChildFrame_destruct 2685 +#define wxMDIChildFrame_Activate 2686 +#define wxMDIChildFrame_Create 2687 +#define wxMDIChildFrame_Maximize 2688 +#define wxMDIChildFrame_Restore 2689 +#define wxMDIClientWindow_new_0 2690 +#define wxMDIClientWindow_new_2 2691 +#define wxMDIClientWindow_destruct 2692 +#define wxMDIClientWindow_CreateClient 2693 +#define wxLayoutAlgorithm_new 2694 +#define wxLayoutAlgorithm_LayoutFrame 2695 +#define wxLayoutAlgorithm_LayoutMDIFrame 2696 +#define wxLayoutAlgorithm_LayoutWindow 2697 +#define wxLayoutAlgorithm_destroy 2698 +#define wxEvent_GetId 2699 +#define wxEvent_GetSkipped 2700 +#define wxEvent_GetTimestamp 2701 +#define wxEvent_IsCommandEvent 2702 +#define wxEvent_ResumePropagation 2703 +#define wxEvent_ShouldPropagate 2704 +#define wxEvent_Skip 2705 +#define wxEvent_StopPropagation 2706 +#define wxCommandEvent_getClientData 2707 +#define wxCommandEvent_GetExtraLong 2708 +#define wxCommandEvent_GetInt 2709 +#define wxCommandEvent_GetSelection 2710 +#define wxCommandEvent_GetString 2711 +#define wxCommandEvent_IsChecked 2712 +#define wxCommandEvent_IsSelection 2713 +#define wxCommandEvent_SetInt 2714 +#define wxCommandEvent_SetString 2715 +#define wxScrollEvent_GetOrientation 2716 +#define wxScrollEvent_GetPosition 2717 +#define wxScrollWinEvent_GetOrientation 2718 +#define wxScrollWinEvent_GetPosition 2719 +#define wxMouseEvent_AltDown 2720 +#define wxMouseEvent_Button 2721 +#define wxMouseEvent_ButtonDClick 2722 +#define wxMouseEvent_ButtonDown 2723 +#define wxMouseEvent_ButtonUp 2724 +#define wxMouseEvent_CmdDown 2725 +#define wxMouseEvent_ControlDown 2726 +#define wxMouseEvent_Dragging 2727 +#define wxMouseEvent_Entering 2728 +#define wxMouseEvent_GetButton 2729 +#define wxMouseEvent_GetPosition 2732 +#define wxMouseEvent_GetLogicalPosition 2733 +#define wxMouseEvent_GetLinesPerAction 2734 +#define wxMouseEvent_GetWheelRotation 2735 +#define wxMouseEvent_GetWheelDelta 2736 +#define wxMouseEvent_GetX 2737 +#define wxMouseEvent_GetY 2738 +#define wxMouseEvent_IsButton 2739 +#define wxMouseEvent_IsPageScroll 2740 +#define wxMouseEvent_Leaving 2741 +#define wxMouseEvent_LeftDClick 2742 +#define wxMouseEvent_LeftDown 2743 +#define wxMouseEvent_LeftIsDown 2744 +#define wxMouseEvent_LeftUp 2745 +#define wxMouseEvent_MetaDown 2746 +#define wxMouseEvent_MiddleDClick 2747 +#define wxMouseEvent_MiddleDown 2748 +#define wxMouseEvent_MiddleIsDown 2749 +#define wxMouseEvent_MiddleUp 2750 +#define wxMouseEvent_Moving 2751 +#define wxMouseEvent_RightDClick 2752 +#define wxMouseEvent_RightDown 2753 +#define wxMouseEvent_RightIsDown 2754 +#define wxMouseEvent_RightUp 2755 +#define wxMouseEvent_ShiftDown 2756 +#define wxSetCursorEvent_GetCursor 2757 +#define wxSetCursorEvent_GetX 2758 +#define wxSetCursorEvent_GetY 2759 +#define wxSetCursorEvent_HasCursor 2760 +#define wxSetCursorEvent_SetCursor 2761 +#define wxKeyEvent_AltDown 2762 +#define wxKeyEvent_CmdDown 2763 +#define wxKeyEvent_ControlDown 2764 +#define wxKeyEvent_GetKeyCode 2765 +#define wxKeyEvent_GetModifiers 2766 +#define wxKeyEvent_GetPosition 2769 +#define wxKeyEvent_GetRawKeyCode 2770 +#define wxKeyEvent_GetRawKeyFlags 2771 +#define wxKeyEvent_GetUnicodeKey 2772 +#define wxKeyEvent_GetX 2773 +#define wxKeyEvent_GetY 2774 +#define wxKeyEvent_HasModifiers 2775 +#define wxKeyEvent_MetaDown 2776 +#define wxKeyEvent_ShiftDown 2777 +#define wxSizeEvent_GetSize 2778 +#define wxMoveEvent_GetPosition 2779 +#define wxEraseEvent_GetDC 2780 +#define wxFocusEvent_GetWindow 2781 +#define wxChildFocusEvent_GetWindow 2782 +#define wxMenuEvent_GetMenu 2783 +#define wxMenuEvent_GetMenuId 2784 +#define wxMenuEvent_IsPopup 2785 +#define wxCloseEvent_CanVeto 2786 +#define wxCloseEvent_GetLoggingOff 2787 +#define wxCloseEvent_SetCanVeto 2788 +#define wxCloseEvent_SetLoggingOff 2789 +#define wxCloseEvent_Veto 2790 +#define wxShowEvent_SetShow 2791 +#define wxShowEvent_GetShow 2792 +#define wxIconizeEvent_Iconized 2793 +#define wxJoystickEvent_ButtonDown 2794 +#define wxJoystickEvent_ButtonIsDown 2795 +#define wxJoystickEvent_ButtonUp 2796 +#define wxJoystickEvent_GetButtonChange 2797 +#define wxJoystickEvent_GetButtonState 2798 +#define wxJoystickEvent_GetJoystick 2799 +#define wxJoystickEvent_GetPosition 2800 +#define wxJoystickEvent_GetZPosition 2801 +#define wxJoystickEvent_IsButton 2802 +#define wxJoystickEvent_IsMove 2803 +#define wxJoystickEvent_IsZMove 2804 +#define wxUpdateUIEvent_CanUpdate 2805 +#define wxUpdateUIEvent_Check 2806 +#define wxUpdateUIEvent_Enable 2807 +#define wxUpdateUIEvent_Show 2808 +#define wxUpdateUIEvent_GetChecked 2809 +#define wxUpdateUIEvent_GetEnabled 2810 +#define wxUpdateUIEvent_GetShown 2811 +#define wxUpdateUIEvent_GetSetChecked 2812 +#define wxUpdateUIEvent_GetSetEnabled 2813 +#define wxUpdateUIEvent_GetSetShown 2814 +#define wxUpdateUIEvent_GetSetText 2815 +#define wxUpdateUIEvent_GetText 2816 +#define wxUpdateUIEvent_GetMode 2817 +#define wxUpdateUIEvent_GetUpdateInterval 2818 +#define wxUpdateUIEvent_ResetUpdateTime 2819 +#define wxUpdateUIEvent_SetMode 2820 +#define wxUpdateUIEvent_SetText 2821 +#define wxUpdateUIEvent_SetUpdateInterval 2822 +#define wxMouseCaptureChangedEvent_GetCapturedWindow 2823 +#define wxPaletteChangedEvent_SetChangedWindow 2824 +#define wxPaletteChangedEvent_GetChangedWindow 2825 +#define wxQueryNewPaletteEvent_SetPaletteRealized 2826 +#define wxQueryNewPaletteEvent_GetPaletteRealized 2827 +#define wxNavigationKeyEvent_GetDirection 2828 +#define wxNavigationKeyEvent_SetDirection 2829 +#define wxNavigationKeyEvent_IsWindowChange 2830 +#define wxNavigationKeyEvent_SetWindowChange 2831 +#define wxNavigationKeyEvent_IsFromTab 2832 +#define wxNavigationKeyEvent_SetFromTab 2833 +#define wxNavigationKeyEvent_GetCurrentFocus 2834 +#define wxNavigationKeyEvent_SetCurrentFocus 2835 +#define wxHelpEvent_GetOrigin 2836 +#define wxHelpEvent_GetPosition 2837 +#define wxHelpEvent_SetOrigin 2838 +#define wxHelpEvent_SetPosition 2839 +#define wxContextMenuEvent_GetPosition 2840 +#define wxContextMenuEvent_SetPosition 2841 +#define wxIdleEvent_CanSend 2842 +#define wxIdleEvent_GetMode 2843 +#define wxIdleEvent_RequestMore 2844 +#define wxIdleEvent_MoreRequested 2845 +#define wxIdleEvent_SetMode 2846 +#define wxGridEvent_AltDown 2847 +#define wxGridEvent_ControlDown 2848 +#define wxGridEvent_GetCol 2849 +#define wxGridEvent_GetPosition 2850 +#define wxGridEvent_GetRow 2851 +#define wxGridEvent_MetaDown 2852 +#define wxGridEvent_Selecting 2853 +#define wxGridEvent_ShiftDown 2854 +#define wxNotifyEvent_Allow 2855 +#define wxNotifyEvent_IsAllowed 2856 +#define wxNotifyEvent_Veto 2857 +#define wxSashEvent_GetEdge 2858 +#define wxSashEvent_GetDragRect 2859 +#define wxSashEvent_GetDragStatus 2860 +#define wxListEvent_GetCacheFrom 2861 +#define wxListEvent_GetCacheTo 2862 +#define wxListEvent_GetKeyCode 2863 +#define wxListEvent_GetIndex 2864 +#define wxListEvent_GetColumn 2865 +#define wxListEvent_GetPoint 2866 +#define wxListEvent_GetLabel 2867 +#define wxListEvent_GetText 2868 +#define wxListEvent_GetImage 2869 +#define wxListEvent_GetData 2870 +#define wxListEvent_GetMask 2871 +#define wxListEvent_GetItem 2872 +#define wxListEvent_IsEditCancelled 2873 +#define wxDateEvent_GetDate 2874 +#define wxCalendarEvent_GetWeekDay 2875 +#define wxFileDirPickerEvent_GetPath 2876 +#define wxColourPickerEvent_GetColour 2877 +#define wxFontPickerEvent_GetFont 2878 +#define wxStyledTextEvent_GetPosition 2879 +#define wxStyledTextEvent_GetKey 2880 +#define wxStyledTextEvent_GetModifiers 2881 +#define wxStyledTextEvent_GetModificationType 2882 +#define wxStyledTextEvent_GetText 2883 +#define wxStyledTextEvent_GetLength 2884 +#define wxStyledTextEvent_GetLinesAdded 2885 +#define wxStyledTextEvent_GetLine 2886 +#define wxStyledTextEvent_GetFoldLevelNow 2887 +#define wxStyledTextEvent_GetFoldLevelPrev 2888 +#define wxStyledTextEvent_GetMargin 2889 +#define wxStyledTextEvent_GetMessage 2890 +#define wxStyledTextEvent_GetWParam 2891 +#define wxStyledTextEvent_GetLParam 2892 +#define wxStyledTextEvent_GetListType 2893 +#define wxStyledTextEvent_GetX 2894 +#define wxStyledTextEvent_GetY 2895 +#define wxStyledTextEvent_GetDragText 2896 +#define wxStyledTextEvent_GetDragAllowMove 2897 +#define wxStyledTextEvent_GetDragResult 2898 +#define wxStyledTextEvent_GetShift 2899 +#define wxStyledTextEvent_GetControl 2900 +#define wxStyledTextEvent_GetAlt 2901 +#define utils_wxGetKeyState 2902 +#define utils_wxGetMousePosition 2903 +#define utils_wxGetMouseState 2904 +#define utils_wxSetDetectableAutoRepeat 2905 +#define utils_wxBell 2906 +#define utils_wxFindMenuItemId 2907 +#define utils_wxGenericFindWindowAtPoint 2908 +#define utils_wxFindWindowAtPoint 2909 +#define utils_wxBeginBusyCursor 2910 +#define utils_wxEndBusyCursor 2911 +#define utils_wxIsBusy 2912 +#define utils_wxShutdown 2913 +#define utils_wxShell 2914 +#define utils_wxLaunchDefaultBrowser 2915 +#define utils_wxGetEmailAddress 2916 +#define utils_wxGetUserId 2917 +#define utils_wxGetHomeDir 2918 +#define utils_wxNewId 2919 +#define utils_wxRegisterId 2920 +#define utils_wxGetCurrentId 2921 +#define utils_wxGetOsDescription 2922 +#define utils_wxIsPlatformLittleEndian 2923 +#define utils_wxIsPlatform64Bit 2924 +#define wxPrintout_new 2925 +#define wxPrintout_destruct 2926 +#define wxPrintout_GetDC 2927 +#define wxPrintout_GetPageSizeMM 2928 +#define wxPrintout_GetPageSizePixels 2929 +#define wxPrintout_GetPaperRectPixels 2930 +#define wxPrintout_GetPPIPrinter 2931 +#define wxPrintout_GetPPIScreen 2932 +#define wxPrintout_GetTitle 2933 +#define wxPrintout_IsPreview 2934 +#define wxPrintout_FitThisSizeToPaper 2935 +#define wxPrintout_FitThisSizeToPage 2936 +#define wxPrintout_FitThisSizeToPageMargins 2937 +#define wxPrintout_MapScreenSizeToPaper 2938 +#define wxPrintout_MapScreenSizeToPage 2939 +#define wxPrintout_MapScreenSizeToPageMargins 2940 +#define wxPrintout_MapScreenSizeToDevice 2941 +#define wxPrintout_GetLogicalPaperRect 2942 +#define wxPrintout_GetLogicalPageRect 2943 +#define wxPrintout_GetLogicalPageMarginsRect 2944 +#define wxPrintout_SetLogicalOrigin 2945 +#define wxPrintout_OffsetLogicalOrigin 2946 +#define wxStyledTextCtrl_new_2 2947 +#define wxStyledTextCtrl_new_0 2948 +#define wxStyledTextCtrl_destruct 2949 +#define wxStyledTextCtrl_Create 2950 +#define wxStyledTextCtrl_AddText 2951 +#define wxStyledTextCtrl_AddStyledText 2952 +#define wxStyledTextCtrl_InsertText 2953 +#define wxStyledTextCtrl_ClearAll 2954 +#define wxStyledTextCtrl_ClearDocumentStyle 2955 +#define wxStyledTextCtrl_GetLength 2956 +#define wxStyledTextCtrl_GetCharAt 2957 +#define wxStyledTextCtrl_GetCurrentPos 2958 +#define wxStyledTextCtrl_GetAnchor 2959 +#define wxStyledTextCtrl_GetStyleAt 2960 +#define wxStyledTextCtrl_Redo 2961 +#define wxStyledTextCtrl_SetUndoCollection 2962 +#define wxStyledTextCtrl_SelectAll 2963 +#define wxStyledTextCtrl_SetSavePoint 2964 +#define wxStyledTextCtrl_GetStyledText 2965 +#define wxStyledTextCtrl_CanRedo 2966 +#define wxStyledTextCtrl_MarkerLineFromHandle 2967 +#define wxStyledTextCtrl_MarkerDeleteHandle 2968 +#define wxStyledTextCtrl_GetUndoCollection 2969 +#define wxStyledTextCtrl_GetViewWhiteSpace 2970 +#define wxStyledTextCtrl_SetViewWhiteSpace 2971 +#define wxStyledTextCtrl_PositionFromPoint 2972 +#define wxStyledTextCtrl_PositionFromPointClose 2973 +#define wxStyledTextCtrl_GotoLine 2974 +#define wxStyledTextCtrl_GotoPos 2975 +#define wxStyledTextCtrl_SetAnchor 2976 +#define wxStyledTextCtrl_GetCurLine 2977 +#define wxStyledTextCtrl_GetEndStyled 2978 +#define wxStyledTextCtrl_ConvertEOLs 2979 +#define wxStyledTextCtrl_GetEOLMode 2980 +#define wxStyledTextCtrl_SetEOLMode 2981 +#define wxStyledTextCtrl_StartStyling 2982 +#define wxStyledTextCtrl_SetStyling 2983 +#define wxStyledTextCtrl_GetBufferedDraw 2984 +#define wxStyledTextCtrl_SetBufferedDraw 2985 +#define wxStyledTextCtrl_SetTabWidth 2986 +#define wxStyledTextCtrl_GetTabWidth 2987 +#define wxStyledTextCtrl_SetCodePage 2988 +#define wxStyledTextCtrl_MarkerDefine 2989 +#define wxStyledTextCtrl_MarkerSetForeground 2990 +#define wxStyledTextCtrl_MarkerSetBackground 2991 +#define wxStyledTextCtrl_MarkerAdd 2992 +#define wxStyledTextCtrl_MarkerDelete 2993 +#define wxStyledTextCtrl_MarkerDeleteAll 2994 +#define wxStyledTextCtrl_MarkerGet 2995 +#define wxStyledTextCtrl_MarkerNext 2996 +#define wxStyledTextCtrl_MarkerPrevious 2997 +#define wxStyledTextCtrl_MarkerDefineBitmap 2998 +#define wxStyledTextCtrl_MarkerAddSet 2999 +#define wxStyledTextCtrl_MarkerSetAlpha 3000 +#define wxStyledTextCtrl_SetMarginType 3001 +#define wxStyledTextCtrl_GetMarginType 3002 +#define wxStyledTextCtrl_SetMarginWidth 3003 +#define wxStyledTextCtrl_GetMarginWidth 3004 +#define wxStyledTextCtrl_SetMarginMask 3005 +#define wxStyledTextCtrl_GetMarginMask 3006 +#define wxStyledTextCtrl_SetMarginSensitive 3007 +#define wxStyledTextCtrl_GetMarginSensitive 3008 +#define wxStyledTextCtrl_StyleClearAll 3009 +#define wxStyledTextCtrl_StyleSetForeground 3010 +#define wxStyledTextCtrl_StyleSetBackground 3011 +#define wxStyledTextCtrl_StyleSetBold 3012 +#define wxStyledTextCtrl_StyleSetItalic 3013 +#define wxStyledTextCtrl_StyleSetSize 3014 +#define wxStyledTextCtrl_StyleSetFaceName 3015 +#define wxStyledTextCtrl_StyleSetEOLFilled 3016 +#define wxStyledTextCtrl_StyleResetDefault 3017 +#define wxStyledTextCtrl_StyleSetUnderline 3018 +#define wxStyledTextCtrl_StyleSetCase 3019 +#define wxStyledTextCtrl_StyleSetHotSpot 3020 +#define wxStyledTextCtrl_SetSelForeground 3021 +#define wxStyledTextCtrl_SetSelBackground 3022 +#define wxStyledTextCtrl_GetSelAlpha 3023 +#define wxStyledTextCtrl_SetSelAlpha 3024 +#define wxStyledTextCtrl_SetCaretForeground 3025 +#define wxStyledTextCtrl_CmdKeyAssign 3026 +#define wxStyledTextCtrl_CmdKeyClear 3027 +#define wxStyledTextCtrl_CmdKeyClearAll 3028 +#define wxStyledTextCtrl_SetStyleBytes 3029 +#define wxStyledTextCtrl_StyleSetVisible 3030 +#define wxStyledTextCtrl_GetCaretPeriod 3031 +#define wxStyledTextCtrl_SetCaretPeriod 3032 +#define wxStyledTextCtrl_SetWordChars 3033 +#define wxStyledTextCtrl_BeginUndoAction 3034 +#define wxStyledTextCtrl_EndUndoAction 3035 +#define wxStyledTextCtrl_IndicatorSetStyle 3036 +#define wxStyledTextCtrl_IndicatorGetStyle 3037 +#define wxStyledTextCtrl_IndicatorSetForeground 3038 +#define wxStyledTextCtrl_IndicatorGetForeground 3039 +#define wxStyledTextCtrl_SetWhitespaceForeground 3040 +#define wxStyledTextCtrl_SetWhitespaceBackground 3041 +#define wxStyledTextCtrl_GetStyleBits 3042 +#define wxStyledTextCtrl_SetLineState 3043 +#define wxStyledTextCtrl_GetLineState 3044 +#define wxStyledTextCtrl_GetMaxLineState 3045 +#define wxStyledTextCtrl_GetCaretLineVisible 3046 +#define wxStyledTextCtrl_SetCaretLineVisible 3047 +#define wxStyledTextCtrl_GetCaretLineBackground 3048 +#define wxStyledTextCtrl_SetCaretLineBackground 3049 +#define wxStyledTextCtrl_AutoCompShow 3050 +#define wxStyledTextCtrl_AutoCompCancel 3051 +#define wxStyledTextCtrl_AutoCompActive 3052 +#define wxStyledTextCtrl_AutoCompPosStart 3053 +#define wxStyledTextCtrl_AutoCompComplete 3054 +#define wxStyledTextCtrl_AutoCompStops 3055 +#define wxStyledTextCtrl_AutoCompSetSeparator 3056 +#define wxStyledTextCtrl_AutoCompGetSeparator 3057 +#define wxStyledTextCtrl_AutoCompSelect 3058 +#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3059 +#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3060 +#define wxStyledTextCtrl_AutoCompSetFillUps 3061 +#define wxStyledTextCtrl_AutoCompSetChooseSingle 3062 +#define wxStyledTextCtrl_AutoCompGetChooseSingle 3063 +#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3064 +#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3065 +#define wxStyledTextCtrl_UserListShow 3066 +#define wxStyledTextCtrl_AutoCompSetAutoHide 3067 +#define wxStyledTextCtrl_AutoCompGetAutoHide 3068 +#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3069 +#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3070 +#define wxStyledTextCtrl_RegisterImage 3071 +#define wxStyledTextCtrl_ClearRegisteredImages 3072 +#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3073 +#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3074 +#define wxStyledTextCtrl_AutoCompSetMaxWidth 3075 +#define wxStyledTextCtrl_AutoCompGetMaxWidth 3076 +#define wxStyledTextCtrl_AutoCompSetMaxHeight 3077 +#define wxStyledTextCtrl_AutoCompGetMaxHeight 3078 +#define wxStyledTextCtrl_SetIndent 3079 +#define wxStyledTextCtrl_GetIndent 3080 +#define wxStyledTextCtrl_SetUseTabs 3081 +#define wxStyledTextCtrl_GetUseTabs 3082 +#define wxStyledTextCtrl_SetLineIndentation 3083 +#define wxStyledTextCtrl_GetLineIndentation 3084 +#define wxStyledTextCtrl_GetLineIndentPosition 3085 +#define wxStyledTextCtrl_GetColumn 3086 +#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3087 +#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3088 +#define wxStyledTextCtrl_SetIndentationGuides 3089 +#define wxStyledTextCtrl_GetIndentationGuides 3090 +#define wxStyledTextCtrl_SetHighlightGuide 3091 +#define wxStyledTextCtrl_GetHighlightGuide 3092 +#define wxStyledTextCtrl_GetLineEndPosition 3093 +#define wxStyledTextCtrl_GetCodePage 3094 +#define wxStyledTextCtrl_GetCaretForeground 3095 +#define wxStyledTextCtrl_GetReadOnly 3096 +#define wxStyledTextCtrl_SetCurrentPos 3097 +#define wxStyledTextCtrl_SetSelectionStart 3098 +#define wxStyledTextCtrl_GetSelectionStart 3099 +#define wxStyledTextCtrl_SetSelectionEnd 3100 +#define wxStyledTextCtrl_GetSelectionEnd 3101 +#define wxStyledTextCtrl_SetPrintMagnification 3102 +#define wxStyledTextCtrl_GetPrintMagnification 3103 +#define wxStyledTextCtrl_SetPrintColourMode 3104 +#define wxStyledTextCtrl_GetPrintColourMode 3105 +#define wxStyledTextCtrl_FindText 3106 +#define wxStyledTextCtrl_FormatRange 3107 +#define wxStyledTextCtrl_GetFirstVisibleLine 3108 +#define wxStyledTextCtrl_GetLine 3109 +#define wxStyledTextCtrl_GetLineCount 3110 +#define wxStyledTextCtrl_SetMarginLeft 3111 +#define wxStyledTextCtrl_GetMarginLeft 3112 +#define wxStyledTextCtrl_SetMarginRight 3113 +#define wxStyledTextCtrl_GetMarginRight 3114 +#define wxStyledTextCtrl_GetModify 3115 +#define wxStyledTextCtrl_SetSelection 3116 +#define wxStyledTextCtrl_GetSelectedText 3117 +#define wxStyledTextCtrl_GetTextRange 3118 +#define wxStyledTextCtrl_HideSelection 3119 +#define wxStyledTextCtrl_LineFromPosition 3120 +#define wxStyledTextCtrl_PositionFromLine 3121 +#define wxStyledTextCtrl_LineScroll 3122 +#define wxStyledTextCtrl_EnsureCaretVisible 3123 +#define wxStyledTextCtrl_ReplaceSelection 3124 +#define wxStyledTextCtrl_SetReadOnly 3125 +#define wxStyledTextCtrl_CanPaste 3126 +#define wxStyledTextCtrl_CanUndo 3127 +#define wxStyledTextCtrl_EmptyUndoBuffer 3128 +#define wxStyledTextCtrl_Undo 3129 +#define wxStyledTextCtrl_Cut 3130 +#define wxStyledTextCtrl_Copy 3131 +#define wxStyledTextCtrl_Paste 3132 +#define wxStyledTextCtrl_Clear 3133 +#define wxStyledTextCtrl_SetText 3134 +#define wxStyledTextCtrl_GetText 3135 +#define wxStyledTextCtrl_GetTextLength 3136 +#define wxStyledTextCtrl_GetOvertype 3137 +#define wxStyledTextCtrl_SetCaretWidth 3138 +#define wxStyledTextCtrl_GetCaretWidth 3139 +#define wxStyledTextCtrl_SetTargetStart 3140 +#define wxStyledTextCtrl_GetTargetStart 3141 +#define wxStyledTextCtrl_SetTargetEnd 3142 +#define wxStyledTextCtrl_GetTargetEnd 3143 +#define wxStyledTextCtrl_ReplaceTarget 3144 +#define wxStyledTextCtrl_SearchInTarget 3145 +#define wxStyledTextCtrl_SetSearchFlags 3146 +#define wxStyledTextCtrl_GetSearchFlags 3147 +#define wxStyledTextCtrl_CallTipShow 3148 +#define wxStyledTextCtrl_CallTipCancel 3149 +#define wxStyledTextCtrl_CallTipActive 3150 +#define wxStyledTextCtrl_CallTipPosAtStart 3151 +#define wxStyledTextCtrl_CallTipSetHighlight 3152 +#define wxStyledTextCtrl_CallTipSetBackground 3153 +#define wxStyledTextCtrl_CallTipSetForeground 3154 +#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3155 +#define wxStyledTextCtrl_CallTipUseStyle 3156 +#define wxStyledTextCtrl_VisibleFromDocLine 3157 +#define wxStyledTextCtrl_DocLineFromVisible 3158 +#define wxStyledTextCtrl_WrapCount 3159 +#define wxStyledTextCtrl_SetFoldLevel 3160 +#define wxStyledTextCtrl_GetFoldLevel 3161 +#define wxStyledTextCtrl_GetLastChild 3162 +#define wxStyledTextCtrl_GetFoldParent 3163 +#define wxStyledTextCtrl_ShowLines 3164 +#define wxStyledTextCtrl_HideLines 3165 +#define wxStyledTextCtrl_GetLineVisible 3166 +#define wxStyledTextCtrl_SetFoldExpanded 3167 +#define wxStyledTextCtrl_GetFoldExpanded 3168 +#define wxStyledTextCtrl_ToggleFold 3169 +#define wxStyledTextCtrl_EnsureVisible 3170 +#define wxStyledTextCtrl_SetFoldFlags 3171 +#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3172 +#define wxStyledTextCtrl_SetTabIndents 3173 +#define wxStyledTextCtrl_GetTabIndents 3174 +#define wxStyledTextCtrl_SetBackSpaceUnIndents 3175 +#define wxStyledTextCtrl_GetBackSpaceUnIndents 3176 +#define wxStyledTextCtrl_SetMouseDwellTime 3177 +#define wxStyledTextCtrl_GetMouseDwellTime 3178 +#define wxStyledTextCtrl_WordStartPosition 3179 +#define wxStyledTextCtrl_WordEndPosition 3180 +#define wxStyledTextCtrl_SetWrapMode 3181 +#define wxStyledTextCtrl_GetWrapMode 3182 +#define wxStyledTextCtrl_SetWrapVisualFlags 3183 +#define wxStyledTextCtrl_GetWrapVisualFlags 3184 +#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3185 +#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3186 +#define wxStyledTextCtrl_SetWrapStartIndent 3187 +#define wxStyledTextCtrl_GetWrapStartIndent 3188 +#define wxStyledTextCtrl_SetLayoutCache 3189 +#define wxStyledTextCtrl_GetLayoutCache 3190 +#define wxStyledTextCtrl_SetScrollWidth 3191 +#define wxStyledTextCtrl_GetScrollWidth 3192 +#define wxStyledTextCtrl_TextWidth 3193 +#define wxStyledTextCtrl_GetEndAtLastLine 3194 +#define wxStyledTextCtrl_TextHeight 3195 +#define wxStyledTextCtrl_SetUseVerticalScrollBar 3196 +#define wxStyledTextCtrl_GetUseVerticalScrollBar 3197 +#define wxStyledTextCtrl_AppendText 3198 +#define wxStyledTextCtrl_GetTwoPhaseDraw 3199 +#define wxStyledTextCtrl_SetTwoPhaseDraw 3200 +#define wxStyledTextCtrl_TargetFromSelection 3201 +#define wxStyledTextCtrl_LinesJoin 3202 +#define wxStyledTextCtrl_LinesSplit 3203 +#define wxStyledTextCtrl_SetFoldMarginColour 3204 +#define wxStyledTextCtrl_SetFoldMarginHiColour 3205 +#define wxStyledTextCtrl_LineDown 3206 +#define wxStyledTextCtrl_LineDownExtend 3207 +#define wxStyledTextCtrl_LineUp 3208 +#define wxStyledTextCtrl_LineUpExtend 3209 +#define wxStyledTextCtrl_CharLeft 3210 +#define wxStyledTextCtrl_CharLeftExtend 3211 +#define wxStyledTextCtrl_CharRight 3212 +#define wxStyledTextCtrl_CharRightExtend 3213 +#define wxStyledTextCtrl_WordLeft 3214 +#define wxStyledTextCtrl_WordLeftExtend 3215 +#define wxStyledTextCtrl_WordRight 3216 +#define wxStyledTextCtrl_WordRightExtend 3217 +#define wxStyledTextCtrl_Home 3218 +#define wxStyledTextCtrl_HomeExtend 3219 +#define wxStyledTextCtrl_LineEnd 3220 +#define wxStyledTextCtrl_LineEndExtend 3221 +#define wxStyledTextCtrl_DocumentStart 3222 +#define wxStyledTextCtrl_DocumentStartExtend 3223 +#define wxStyledTextCtrl_DocumentEnd 3224 +#define wxStyledTextCtrl_DocumentEndExtend 3225 +#define wxStyledTextCtrl_PageUp 3226 +#define wxStyledTextCtrl_PageUpExtend 3227 +#define wxStyledTextCtrl_PageDown 3228 +#define wxStyledTextCtrl_PageDownExtend 3229 +#define wxStyledTextCtrl_EditToggleOvertype 3230 +#define wxStyledTextCtrl_Cancel 3231 +#define wxStyledTextCtrl_DeleteBack 3232 +#define wxStyledTextCtrl_Tab 3233 +#define wxStyledTextCtrl_BackTab 3234 +#define wxStyledTextCtrl_NewLine 3235 +#define wxStyledTextCtrl_FormFeed 3236 +#define wxStyledTextCtrl_VCHome 3237 +#define wxStyledTextCtrl_VCHomeExtend 3238 +#define wxStyledTextCtrl_ZoomIn 3239 +#define wxStyledTextCtrl_ZoomOut 3240 +#define wxStyledTextCtrl_DelWordLeft 3241 +#define wxStyledTextCtrl_DelWordRight 3242 +#define wxStyledTextCtrl_LineCut 3243 +#define wxStyledTextCtrl_LineDelete 3244 +#define wxStyledTextCtrl_LineTranspose 3245 +#define wxStyledTextCtrl_LineDuplicate 3246 +#define wxStyledTextCtrl_LowerCase 3247 +#define wxStyledTextCtrl_UpperCase 3248 +#define wxStyledTextCtrl_LineScrollDown 3249 +#define wxStyledTextCtrl_LineScrollUp 3250 +#define wxStyledTextCtrl_DeleteBackNotLine 3251 +#define wxStyledTextCtrl_HomeDisplay 3252 +#define wxStyledTextCtrl_HomeDisplayExtend 3253 +#define wxStyledTextCtrl_LineEndDisplay 3254 +#define wxStyledTextCtrl_LineEndDisplayExtend 3255 +#define wxStyledTextCtrl_HomeWrapExtend 3256 +#define wxStyledTextCtrl_LineEndWrap 3257 +#define wxStyledTextCtrl_LineEndWrapExtend 3258 +#define wxStyledTextCtrl_VCHomeWrap 3259 +#define wxStyledTextCtrl_VCHomeWrapExtend 3260 +#define wxStyledTextCtrl_LineCopy 3261 +#define wxStyledTextCtrl_MoveCaretInsideView 3262 +#define wxStyledTextCtrl_LineLength 3263 +#define wxStyledTextCtrl_BraceHighlight 3264 +#define wxStyledTextCtrl_BraceBadLight 3265 +#define wxStyledTextCtrl_BraceMatch 3266 +#define wxStyledTextCtrl_GetViewEOL 3267 +#define wxStyledTextCtrl_SetViewEOL 3268 +#define wxStyledTextCtrl_SetModEventMask 3269 +#define wxStyledTextCtrl_GetEdgeColumn 3270 +#define wxStyledTextCtrl_SetEdgeColumn 3271 +#define wxStyledTextCtrl_GetEdgeMode 3272 +#define wxStyledTextCtrl_GetEdgeColour 3273 +#define wxStyledTextCtrl_SetEdgeColour 3274 +#define wxStyledTextCtrl_SearchAnchor 3275 +#define wxStyledTextCtrl_SearchNext 3276 +#define wxStyledTextCtrl_SearchPrev 3277 +#define wxStyledTextCtrl_LinesOnScreen 3278 +#define wxStyledTextCtrl_UsePopUp 3279 +#define wxStyledTextCtrl_SelectionIsRectangle 3280 +#define wxStyledTextCtrl_SetZoom 3281 +#define wxStyledTextCtrl_GetZoom 3282 +#define wxStyledTextCtrl_GetModEventMask 3283 +#define wxStyledTextCtrl_SetSTCFocus 3284 +#define wxStyledTextCtrl_GetSTCFocus 3285 +#define wxStyledTextCtrl_SetStatus 3286 +#define wxStyledTextCtrl_GetStatus 3287 +#define wxStyledTextCtrl_SetMouseDownCaptures 3288 +#define wxStyledTextCtrl_GetMouseDownCaptures 3289 +#define wxStyledTextCtrl_SetSTCCursor 3290 +#define wxStyledTextCtrl_GetSTCCursor 3291 +#define wxStyledTextCtrl_SetControlCharSymbol 3292 +#define wxStyledTextCtrl_GetControlCharSymbol 3293 +#define wxStyledTextCtrl_WordPartLeft 3294 +#define wxStyledTextCtrl_WordPartLeftExtend 3295 +#define wxStyledTextCtrl_WordPartRight 3296 +#define wxStyledTextCtrl_WordPartRightExtend 3297 +#define wxStyledTextCtrl_SetVisiblePolicy 3298 +#define wxStyledTextCtrl_DelLineLeft 3299 +#define wxStyledTextCtrl_DelLineRight 3300 +#define wxStyledTextCtrl_GetXOffset 3301 +#define wxStyledTextCtrl_ChooseCaretX 3302 +#define wxStyledTextCtrl_SetXCaretPolicy 3303 +#define wxStyledTextCtrl_SetYCaretPolicy 3304 +#define wxStyledTextCtrl_GetPrintWrapMode 3305 +#define wxStyledTextCtrl_SetHotspotActiveForeground 3306 +#define wxStyledTextCtrl_SetHotspotActiveBackground 3307 +#define wxStyledTextCtrl_SetHotspotActiveUnderline 3308 +#define wxStyledTextCtrl_SetHotspotSingleLine 3309 +#define wxStyledTextCtrl_ParaDownExtend 3310 +#define wxStyledTextCtrl_ParaUp 3311 +#define wxStyledTextCtrl_ParaUpExtend 3312 +#define wxStyledTextCtrl_PositionBefore 3313 +#define wxStyledTextCtrl_PositionAfter 3314 +#define wxStyledTextCtrl_CopyRange 3315 +#define wxStyledTextCtrl_CopyText 3316 +#define wxStyledTextCtrl_SetSelectionMode 3317 +#define wxStyledTextCtrl_GetSelectionMode 3318 +#define wxStyledTextCtrl_LineDownRectExtend 3319 +#define wxStyledTextCtrl_LineUpRectExtend 3320 +#define wxStyledTextCtrl_CharLeftRectExtend 3321 +#define wxStyledTextCtrl_CharRightRectExtend 3322 +#define wxStyledTextCtrl_HomeRectExtend 3323 +#define wxStyledTextCtrl_VCHomeRectExtend 3324 +#define wxStyledTextCtrl_LineEndRectExtend 3325 +#define wxStyledTextCtrl_PageUpRectExtend 3326 +#define wxStyledTextCtrl_PageDownRectExtend 3327 +#define wxStyledTextCtrl_StutteredPageUp 3328 +#define wxStyledTextCtrl_StutteredPageUpExtend 3329 +#define wxStyledTextCtrl_StutteredPageDown 3330 +#define wxStyledTextCtrl_StutteredPageDownExtend 3331 +#define wxStyledTextCtrl_WordLeftEnd 3332 +#define wxStyledTextCtrl_WordLeftEndExtend 3333 +#define wxStyledTextCtrl_WordRightEnd 3334 +#define wxStyledTextCtrl_WordRightEndExtend 3335 +#define wxStyledTextCtrl_SetWhitespaceChars 3336 +#define wxStyledTextCtrl_SetCharsDefault 3337 +#define wxStyledTextCtrl_AutoCompGetCurrent 3338 +#define wxStyledTextCtrl_Allocate 3339 +#define wxStyledTextCtrl_FindColumn 3340 +#define wxStyledTextCtrl_GetCaretSticky 3341 +#define wxStyledTextCtrl_SetCaretSticky 3342 +#define wxStyledTextCtrl_ToggleCaretSticky 3343 +#define wxStyledTextCtrl_SetPasteConvertEndings 3344 +#define wxStyledTextCtrl_GetPasteConvertEndings 3345 +#define wxStyledTextCtrl_SelectionDuplicate 3346 +#define wxStyledTextCtrl_SetCaretLineBackAlpha 3347 +#define wxStyledTextCtrl_GetCaretLineBackAlpha 3348 +#define wxStyledTextCtrl_StartRecord 3349 +#define wxStyledTextCtrl_StopRecord 3350 +#define wxStyledTextCtrl_SetLexer 3351 +#define wxStyledTextCtrl_GetLexer 3352 +#define wxStyledTextCtrl_Colourise 3353 +#define wxStyledTextCtrl_SetProperty 3354 +#define wxStyledTextCtrl_SetKeyWords 3355 +#define wxStyledTextCtrl_SetLexerLanguage 3356 +#define wxStyledTextCtrl_GetProperty 3357 +#define wxStyledTextCtrl_GetStyleBitsNeeded 3358 +#define wxStyledTextCtrl_GetCurrentLine 3359 +#define wxStyledTextCtrl_StyleSetSpec 3360 +#define wxStyledTextCtrl_StyleSetFont 3361 +#define wxStyledTextCtrl_StyleSetFontAttr 3362 +#define wxStyledTextCtrl_StyleSetCharacterSet 3363 +#define wxStyledTextCtrl_StyleSetFontEncoding 3364 +#define wxStyledTextCtrl_CmdKeyExecute 3365 +#define wxStyledTextCtrl_SetMargins 3366 +#define wxStyledTextCtrl_GetSelection 3367 +#define wxStyledTextCtrl_PointFromPosition 3368 +#define wxStyledTextCtrl_ScrollToLine 3369 +#define wxStyledTextCtrl_ScrollToColumn 3370 +#define wxStyledTextCtrl_SendMsg 3371 +#define wxStyledTextCtrl_SetVScrollBar 3372 +#define wxStyledTextCtrl_SetHScrollBar 3373 +#define wxStyledTextCtrl_GetLastKeydownProcessed 3374 +#define wxStyledTextCtrl_SetLastKeydownProcessed 3375 +#define wxStyledTextCtrl_SaveFile 3376 +#define wxStyledTextCtrl_LoadFile 3377 +#define wxStyledTextCtrl_DoDragOver 3378 +#define wxStyledTextCtrl_DoDropText 3379 +#define wxStyledTextCtrl_GetUseAntiAliasing 3380 +#define wxStyledTextCtrl_AddTextRaw 3381 +#define wxStyledTextCtrl_InsertTextRaw 3382 +#define wxStyledTextCtrl_GetCurLineRaw 3383 +#define wxStyledTextCtrl_GetLineRaw 3384 +#define wxStyledTextCtrl_GetSelectedTextRaw 3385 +#define wxStyledTextCtrl_GetTextRangeRaw 3386 +#define wxStyledTextCtrl_SetTextRaw 3387 +#define wxStyledTextCtrl_GetTextRaw 3388 +#define wxStyledTextCtrl_AppendTextRaw 3389 +#define wxArtProvider_GetBitmap 3390 +#define wxArtProvider_GetIcon 3391 +#define wxTreeEvent_GetKeyCode 3392 +#define wxTreeEvent_GetItem 3393 +#define wxTreeEvent_GetKeyEvent 3394 +#define wxTreeEvent_GetLabel 3395 +#define wxTreeEvent_GetOldItem 3396 +#define wxTreeEvent_GetPoint 3397 +#define wxTreeEvent_IsEditCancelled 3398 +#define wxTreeEvent_SetToolTip 3399 +#define wxNotebookEvent_GetOldSelection 3400 +#define wxNotebookEvent_GetSelection 3401 +#define wxNotebookEvent_SetOldSelection 3402 +#define wxNotebookEvent_SetSelection 3403 +#define wxFileDataObject_new 3404 +#define wxFileDataObject_AddFile 3405 +#define wxFileDataObject_GetFilenames 3406 +#define wxFileDataObject_destroy 3407 +#define wxTextDataObject_new 3408 +#define wxTextDataObject_GetTextLength 3409 +#define wxTextDataObject_GetText 3410 +#define wxTextDataObject_SetText 3411 +#define wxTextDataObject_destroy 3412 +#define wxBitmapDataObject_new_1_1 3413 +#define wxBitmapDataObject_new_1_0 3414 +#define wxBitmapDataObject_GetBitmap 3415 +#define wxBitmapDataObject_SetBitmap 3416 +#define wxBitmapDataObject_destroy 3417 +#define wxClipboard_new 3419 +#define wxClipboard_destruct 3420 +#define wxClipboard_AddData 3421 +#define wxClipboard_Clear 3422 +#define wxClipboard_Close 3423 +#define wxClipboard_Flush 3424 +#define wxClipboard_GetData 3425 +#define wxClipboard_IsOpened 3426 +#define wxClipboard_Open 3427 +#define wxClipboard_SetData 3428 +#define wxClipboard_UsePrimarySelection 3430 +#define wxClipboard_IsSupported 3431 +#define wxClipboard_Get 3432 +#define wxSpinEvent_GetPosition 3433 +#define wxSpinEvent_SetPosition 3434 +#define wxSplitterWindow_new_0 3435 +#define wxSplitterWindow_new_2 3436 +#define wxSplitterWindow_destruct 3437 +#define wxSplitterWindow_Create 3438 +#define wxSplitterWindow_GetMinimumPaneSize 3439 +#define wxSplitterWindow_GetSashGravity 3440 +#define wxSplitterWindow_GetSashPosition 3441 +#define wxSplitterWindow_GetSplitMode 3442 +#define wxSplitterWindow_GetWindow1 3443 +#define wxSplitterWindow_GetWindow2 3444 +#define wxSplitterWindow_Initialize 3445 +#define wxSplitterWindow_IsSplit 3446 +#define wxSplitterWindow_ReplaceWindow 3447 +#define wxSplitterWindow_SetSashGravity 3448 +#define wxSplitterWindow_SetSashPosition 3449 +#define wxSplitterWindow_SetSashSize 3450 +#define wxSplitterWindow_SetMinimumPaneSize 3451 +#define wxSplitterWindow_SetSplitMode 3452 +#define wxSplitterWindow_SplitHorizontally 3453 +#define wxSplitterWindow_SplitVertically 3454 +#define wxSplitterWindow_Unsplit 3455 +#define wxSplitterWindow_UpdateSize 3456 +#define wxSplitterEvent_GetSashPosition 3457 +#define wxSplitterEvent_GetX 3458 +#define wxSplitterEvent_GetY 3459 +#define wxSplitterEvent_GetWindowBeingRemoved 3460 +#define wxSplitterEvent_SetSashPosition 3461 +#define wxHtmlWindow_new_0 3462 +#define wxHtmlWindow_new_2 3463 +#define wxHtmlWindow_AppendToPage 3464 +#define wxHtmlWindow_GetOpenedAnchor 3465 +#define wxHtmlWindow_GetOpenedPage 3466 +#define wxHtmlWindow_GetOpenedPageTitle 3467 +#define wxHtmlWindow_GetRelatedFrame 3468 +#define wxHtmlWindow_HistoryBack 3469 +#define wxHtmlWindow_HistoryCanBack 3470 +#define wxHtmlWindow_HistoryCanForward 3471 +#define wxHtmlWindow_HistoryClear 3472 +#define wxHtmlWindow_HistoryForward 3473 +#define wxHtmlWindow_LoadFile 3474 +#define wxHtmlWindow_LoadPage 3475 +#define wxHtmlWindow_SelectAll 3476 +#define wxHtmlWindow_SelectionToText 3477 +#define wxHtmlWindow_SelectLine 3478 +#define wxHtmlWindow_SelectWord 3479 +#define wxHtmlWindow_SetBorders 3480 +#define wxHtmlWindow_SetFonts 3481 +#define wxHtmlWindow_SetPage 3482 +#define wxHtmlWindow_SetRelatedFrame 3483 +#define wxHtmlWindow_SetRelatedStatusBar 3484 +#define wxHtmlWindow_ToText 3485 +#define wxHtmlWindow_destroy 3486 +#define wxHtmlLinkEvent_GetLinkInfo 3487 +#define wxSystemSettings_GetColour 3488 +#define wxSystemSettings_GetFont 3489 +#define wxSystemSettings_GetMetric 3490 +#define wxSystemSettings_GetScreenType 3491 +#define wxAuiNotebookEvent_SetSelection 3492 +#define wxAuiNotebookEvent_GetSelection 3493 +#define wxAuiNotebookEvent_SetOldSelection 3494 +#define wxAuiNotebookEvent_GetOldSelection 3495 +#define wxAuiNotebookEvent_SetDragSource 3496 +#define wxAuiNotebookEvent_GetDragSource 3497 +#define wxAuiManagerEvent_SetManager 3498 +#define wxAuiManagerEvent_GetManager 3499 +#define wxAuiManagerEvent_SetPane 3500 +#define wxAuiManagerEvent_GetPane 3501 +#define wxAuiManagerEvent_SetButton 3502 +#define wxAuiManagerEvent_GetButton 3503 +#define wxAuiManagerEvent_SetDC 3504 +#define wxAuiManagerEvent_GetDC 3505 +#define wxAuiManagerEvent_Veto 3506 +#define wxAuiManagerEvent_GetVeto 3507 +#define wxAuiManagerEvent_SetCanVeto 3508 +#define wxAuiManagerEvent_CanVeto 3509 +#define wxLogNull_new 3510 +#define wxLogNull_destroy 3511 diff --git a/lib/wx/c_src/wxePrintout.cpp b/lib/wx/c_src/wxePrintout.cpp index ea1c76edcc..90959df379 100644 --- a/lib/wx/c_src/wxePrintout.cpp +++ b/lib/wx/c_src/wxePrintout.cpp @@ -1,41 +1,62 @@ /* * %CopyrightBegin% - * - * Copyright Ericsson AB 2008-2009. All Rights Reserved. - * + * + * Copyright Ericsson AB 2008-2011. All Rights Reserved. + * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved online at http://www.erlang.org/. - * + * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. - * - * %CopyrightEnd% + * + * %CopyrightEnd% */ #include <wx/wx.h> #include "wxe_impl.h" #include "wxe_return.h" +#include "gen/wxe_macros.h" +#include "gen/wxe_derived_dest.h" /* *****************************************************************/ /* Special Class impls */ +#define INVOKE_CALLBACK_INIT(port, callback, class_str) \ + { \ + wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); \ + wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); \ + rt.addInt(callback); \ + rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), class_str); + +#define INVOKE_CALLBACK_END(port, args) \ + rt.endList(1 + (args)); \ + rt.addAtom("_wx_invoke_cb_"); \ + rt.addTupleCount(3); \ + rt.send(); \ + handle_event_callback(port, memenv->owner); \ + } + +#define INVOKE_CALLBACK(port, callback, class_str) \ + INVOKE_CALLBACK_INIT(port, callback, class_str); \ + INVOKE_CALLBACK_END(port, 0) +/* *****************************************************************/ /* Printing special */ wxEPrintout::~wxEPrintout() { - clear_cb(onPrintPage); - clear_cb(onPreparePrinting); - clear_cb(onBeginPrinting); - clear_cb(onEndPrinting); - clear_cb(onBeginDocument); - clear_cb(onEndDocument); - clear_cb(hasPage); - clear_cb(getPageInfo); + clear_cb(port, onPrintPage); + clear_cb(port, onPreparePrinting); + clear_cb(port, onBeginPrinting); + clear_cb(port, onEndPrinting); + clear_cb(port, onBeginDocument); + clear_cb(port, onEndDocument); + clear_cb(port, hasPage); + clear_cb(port, getPageInfo); ((WxeApp *)wxTheApp)->clearPtr(this); } @@ -43,73 +64,44 @@ wxEPrintout::~wxEPrintout() { bool wxEPrintout::OnBeginDocument(int startPage, int endPage) { if(onBeginDocument) { - wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); - char * bp = ((WxeApp *) wxTheApp)->cb_buff; - - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - rt.addInt(onBeginDocument); - rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), "wxPrintout"); + INVOKE_CALLBACK_INIT(port, onBeginDocument, "wxPrintout"); rt.addInt(startPage); rt.addInt(endPage); - rt.endList(3); - rt.addAtom("_wx_invoke_cb_"); - rt.addTupleCount(3); - rt.send(); - handle_callback_batch(port); - return *(int*) bp; - } else { - return wxPrintout::OnBeginDocument(startPage,endPage); - } + INVOKE_CALLBACK_END(port, 2); + if(((WxeApp *) wxTheApp)->cb_buff) { + int res = * (int*) ((WxeApp *) wxTheApp)->cb_buff; + driver_free(((WxeApp *) wxTheApp)->cb_buff); + ((WxeApp *) wxTheApp)->cb_buff = NULL; + return res; + } + } + return wxPrintout::OnBeginDocument(startPage,endPage); } -void wxEPrintout::OnEndDocument() +void wxEPrintout::OnEndDocument() { if(onEndDocument) { - wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - rt.addInt(onEndDocument); - rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), "wxPrintout"); - rt.endList(1); - rt.addAtom("_wx_invoke_cb_"); - rt.addTupleCount(3); - rt.send(); - handle_callback_batch(port); + INVOKE_CALLBACK(port, onEndDocument, "wxPrintout"); } else { wxPrintout::OnEndDocument(); - } + } } -void wxEPrintout::OnBeginPrinting() +void wxEPrintout::OnBeginPrinting() { if(onBeginPrinting) { - wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - rt.addInt(onBeginPrinting); - rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), "wxPrintout"); - rt.endList(1); - rt.addAtom("_wx_invoke_cb_"); - rt.addTupleCount(3); - rt.send(); - handle_callback_batch(port); + INVOKE_CALLBACK(port, onBeginPrinting, "wxPrintout"); } else { wxPrintout::OnBeginPrinting(); - } + } } -void wxEPrintout::OnEndPrinting() +void wxEPrintout::OnEndPrinting() { if(onEndPrinting) { - wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - rt.addInt(onEndPrinting); - rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), "wxPrintout"); - rt.endList(1); - rt.addAtom("_wx_invoke_cb_"); - rt.addTupleCount(3); - rt.send(); - handle_callback_batch(port); + INVOKE_CALLBACK(port, onEndPrinting, "wxPrintout"); } else { wxPrintout::OnEndPrinting(); } @@ -119,92 +111,133 @@ void wxEPrintout::OnPreparePrinting() { if(onPreparePrinting) { - wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - rt.addInt(onPreparePrinting); - rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), "wxPrintout"); - rt.endList(1); - rt.addAtom("_wx_invoke_cb_"); - rt.addTupleCount(3); - rt.send(); - handle_callback_batch(port); + INVOKE_CALLBACK(port, onPreparePrinting, "wxPrintout"); } else { wxPrintout::OnPreparePrinting(); - } + } } -bool wxEPrintout::HasPage(int page) +bool wxEPrintout::HasPage(int page) { if(hasPage) { - wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - rt.addInt(hasPage); - rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), "wxPrintout"); + INVOKE_CALLBACK_INIT(port, hasPage, "wxPrintout"); rt.addInt(page); - rt.endList(2); - rt.addAtom("_wx_invoke_cb_"); - rt.addTupleCount(3); - rt.send(); - char * bp = ((WxeApp *) wxTheApp)->cb_buff; - handle_callback_batch(port); - return *(int*) bp; - } else { - return wxPrintout::HasPage(page); - } + INVOKE_CALLBACK_END(port, 1); + if(((WxeApp *) wxTheApp)->cb_buff) { + int res = * (int*) ((WxeApp *) wxTheApp)->cb_buff; + driver_free(((WxeApp *) wxTheApp)->cb_buff); + ((WxeApp *) wxTheApp)->cb_buff = NULL; + return res; + } + } + return wxPrintout::HasPage(page); } bool wxEPrintout::OnPrintPage(int page) { - wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - rt.addInt(onPrintPage); - rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), "wxPrintout"); + INVOKE_CALLBACK_INIT(port, onPrintPage, "wxPrintout"); rt.addInt(page); - rt.endList(2); - rt.addAtom("_wx_invoke_cb_"); - rt.addTupleCount(3); - rt.send(); - handle_callback_batch(port); - //fprintf(stderr,"%d ", __LINE__);handle_callback_batch(port); fprintf(stderr,"%d\r\n", __LINE__); - char * bp = ((WxeApp *) wxTheApp)->cb_buff; - return *(int*) bp; + INVOKE_CALLBACK_END(port, 1); + if(((WxeApp *) wxTheApp)->cb_buff) { + int res = * (int*) ((WxeApp *) wxTheApp)->cb_buff; + driver_free(((WxeApp *) wxTheApp)->cb_buff); + ((WxeApp *) wxTheApp)->cb_buff = NULL; + return res; + } + return FALSE; } - + void wxEPrintout::GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo) { if(getPageInfo) { - wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - rt.addInt(getPageInfo); - rt.addRef(((WxeApp *) wxTheApp)->getRef((void *)this, memenv), "wxPrintout"); - rt.endList(1); - rt.addAtom("_wx_invoke_cb_"); - rt.addTupleCount(3); - rt.send(); - handle_callback_batch(port); - //fprintf(stderr,"%d ", __LINE__);handle_callback_batch(port); fprintf(stderr,"%d\r\n", __LINE__); + INVOKE_CALLBACK(port, getPageInfo, "wxPrintout"); + if(((WxeApp *) wxTheApp)->cb_buff) { + char * bp = ((WxeApp *) wxTheApp)->cb_buff; + *minPage = *(int *) bp; bp += 4; + *maxPage = *(int *) bp; bp += 4; + *pageFrom = *(int *) bp; bp += 4; + *pageTo = *(int *) bp; bp += 4; + driver_free(((WxeApp *) wxTheApp)->cb_buff); + ((WxeApp *) wxTheApp)->cb_buff = NULL; + } + } + wxPrintout::GetPageInfo(minPage, maxPage, pageFrom, pageTo); +} + +/* *****************************************************************/ +// ListCtrl with callbacks for VIRTUAL_TABLES + +wxString EwxListCtrl::OnGetItemText(long item, long col) const { + if(onGetItemText) { + INVOKE_CALLBACK_INIT(port, onGetItemText, "wxListCtrl"); + rt.addInt(item); + rt.addInt(col); + INVOKE_CALLBACK_END(port, 2); + if(((WxeApp *) wxTheApp)->cb_buff) { + char * bp = ((WxeApp *) wxTheApp)->cb_buff; + wxString str = wxString(bp, wxConvUTF8); + driver_free(((WxeApp *) wxTheApp)->cb_buff); + ((WxeApp *) wxTheApp)->cb_buff = NULL; + return str; + } + } + return wxT("OnGetItemText not correctly defined"); +} +wxListItemAttr* EwxListCtrl::OnGetItemAttr(long item) const { + if(onGetItemAttr) { + INVOKE_CALLBACK_INIT(port, onGetItemAttr, "wxListCtrl"); + rt.addInt(item); + INVOKE_CALLBACK_END(port, 1); char * bp = ((WxeApp *) wxTheApp)->cb_buff; - *minPage = *(int *) bp; bp += 4; - *maxPage = *(int *) bp; bp += 4; - *pageFrom = *(int *) bp; bp += 4; - *pageTo = *(int *) bp; bp += 4; - } else { - wxPrintout::GetPageInfo(minPage, maxPage, pageFrom, pageTo); + wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); + if(bp) { + wxListItemAttr * result = (wxListItemAttr *)((WxeApp *) wxTheApp)->getPtr(bp, memenv); + driver_free(((WxeApp *) wxTheApp)->cb_buff); + ((WxeApp *) wxTheApp)->cb_buff = NULL; + return result; + } } + return NULL; +} + +int EwxListCtrl::OnGetItemImage(long item) const { + return OnGetItemColumnImage(item, 0); } -void wxEPrintout::clear_cb(int callback) +int EwxListCtrl::OnGetItemColumnImage(long item, long col) const { + if(onGetItemColumnImage) { + INVOKE_CALLBACK_INIT(port, onGetItemColumnImage, "wxListCtrl"); + rt.addInt(item); + rt.addInt(col); + INVOKE_CALLBACK_END(port, 2); + if(((WxeApp *) wxTheApp)->cb_buff) { + int res = * (int*) ((WxeApp *) wxTheApp)->cb_buff; + driver_free(((WxeApp *) wxTheApp)->cb_buff); + ((WxeApp *) wxTheApp)->cb_buff = NULL; + return res; + } + } + return -1; +} + +EwxListCtrl::~EwxListCtrl() { + clear_cb(port, onGetItemText); + clear_cb(port, onGetItemAttr); + clear_cb(port, onGetItemColumnImage); + ((WxeApp *)wxTheApp)->clearPtr(this); +} +// tools + +void clear_cb(ErlDrvPort port, int callback) { if(callback > 0) { wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); - // NOTE: Remove this later when changing from funs to gen_server rt.addAtom("wx_delete_cb"); rt.addInt(callback); rt.addTupleCount(2); rt.send(); } } - diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp index 365fb691a1..e430fbc7a2 100644 --- a/lib/wx/c_src/wxe_impl.cpp +++ b/lib/wx/c_src/wxe_impl.cpp @@ -14,7 +14,7 @@ * the License for the specific language governing rights and limitations * under the License. * - * %CopyrightEnd% + * %CopyrightEnd% */ #include <stdio.h> @@ -49,7 +49,7 @@ DEFINE_EVENT_TYPE(wxeEVT_META_COMMAND) #define WXE_NORMAL 0 #define WXE_CALLBACK 1 -#define WXE_STORED 2 +#define WXE_STORED 2 ErlDrvTid wxe_thread; @@ -67,7 +67,7 @@ wxList * wxe_batch_cb_saved = NULL; ErlDrvTermData wxe_batch_caller = 0; ErlDrvTermData init_caller = 0; -// extern opengl +// extern opengl void gl_dispatch(int op, char *bp, ErlDrvTermData caller, WXEBinRef *bins[]); @@ -99,7 +99,7 @@ void *wxe_main_loop(void * ); * START AND STOP of driver thread * ************************************************************/ -int load_native_gui() +int load_native_gui() { return 1; } @@ -112,7 +112,7 @@ int start_native_gui(wxe_data *sd) wxe_batch_locker_m = erl_drv_mutex_create((char *)"wxe_batch_locker_m"); wxe_batch_locker_c = erl_drv_cond_create((char *)"wxe_batch_locker_c"); - init_caller = driver_connected(sd->port); + init_caller = driver_connected(sd->port); #ifdef __DARWIN__ res = erl_drv_steal_main_thread((char *)"wxwidgets", @@ -152,9 +152,9 @@ void stop_native_gui(wxe_data *sd) erl_drv_cond_destroy(wxe_batch_locker_c); } -void unload_native_gui() +void unload_native_gui() { - + } /* ************************************************************ @@ -162,13 +162,13 @@ void unload_native_gui() * Called by emulator thread * ************************************************************/ -void push_command(int op,char * buf,int len, wxe_data *sd) -{ +void push_command(int op,char * buf,int len, wxe_data *sd) +{ // fprintf(stderr, "Op %d %d\r\n", op, (int) driver_caller(sd->port)),fflush(stderr); wxeCommand *Cmd = new wxeCommand(op, buf, len, sd); erl_drv_mutex_lock(wxe_batch_locker_m); wxe_batch->Append(Cmd); - + if(wxe_batch_caller > 0) { // wx-thread is waiting on batch end in cond_wait erl_drv_cond_signal(wxe_batch_locker_c); @@ -179,11 +179,11 @@ void push_command(int op,char * buf,int len, wxe_data *sd) } erl_drv_cond_signal(wxe_batch_locker_c); wxWakeUpIdle(); - } + } erl_drv_mutex_unlock(wxe_batch_locker_m); } -void meta_command(int what, wxe_data *sd) { +void meta_command(int what, wxe_data *sd) { if(what == PING_PORT) { erl_drv_mutex_lock(wxe_batch_locker_m); if(wxe_batch_caller > 0) { @@ -203,17 +203,17 @@ void meta_command(int what, wxe_data *sd) { } /* ************************************************************ - * wxWidgets Thread + * wxWidgets Thread * ************************************************************/ void *wxe_main_loop(void *vpdl) { - int result; + int result; int argc = 1; char * temp = (char *) "Erlang"; char * argv[] = {temp,NULL}; ErlDrvPDL pdl = (ErlDrvPDL) vpdl; - + driver_pdl_inc_refc(pdl); // ErlDrvSysInfo einfo; @@ -223,7 +223,7 @@ void *wxe_main_loop(void *vpdl) #ifndef _WIN32 erts_thread_disable_fpe(); #endif - + result = wxEntry(argc, argv); // fprintf(stderr, "WXWidgets quits main loop %d \r\n", result); if(result >= 0 && wxe_status == WXE_INITIATED) { @@ -240,17 +240,17 @@ void *wxe_main_loop(void *vpdl) erl_drv_cond_signal(wxe_status_c); erl_drv_mutex_unlock(wxe_status_m); driver_pdl_dec_refc(pdl); - return NULL; + return NULL; } } wxFrame * dummy_window; void create_dummy_window() { - dummy_window = new wxFrame(NULL,-1, wxT("wx driver"), - wxDefaultPosition, wxSize(5,5), + dummy_window = new wxFrame(NULL,-1, wxT("wx driver"), + wxDefaultPosition, wxSize(5,5), wxFRAME_NO_TASKBAR); - dummy_window->Connect(wxID_ANY, wxEVT_CLOSE_WINDOW, + dummy_window->Connect(wxID_ANY, wxEVT_CLOSE_WINDOW, (wxObjectEventFunction) (wxEventFunction) &WxeApp::dummy_close); } @@ -262,7 +262,7 @@ void WxeApp::dummy_close(wxEvent& Ev) { create_dummy_window(); } -// Init wx-widgets thread +// Init wx-widgets thread bool WxeApp::OnInit() { wxe_ps_init(); @@ -270,16 +270,17 @@ bool WxeApp::OnInit() global_me = new wxeMemEnv(); wxe_batch = new wxList; wxe_batch_cb_saved = new wxList; + cb_buff = NULL; wxIdleEvent::SetMode(wxIDLE_PROCESS_SPECIFIED); - this->Connect(wxID_ANY, wxEVT_IDLE, + this->Connect(wxID_ANY, wxEVT_IDLE, (wxObjectEventFunction) (wxEventFunction) &WxeApp::idle); - this->Connect(CREATE_PORT, wxeEVT_META_COMMAND, + this->Connect(CREATE_PORT, wxeEVT_META_COMMAND, (wxObjectEventFunction) (wxEventFunction) &WxeApp::newMemEnv); - this->Connect(DELETE_PORT, wxeEVT_META_COMMAND, + this->Connect(DELETE_PORT, wxeEVT_META_COMMAND, (wxObjectEventFunction) (wxEventFunction) &WxeApp::destroyMemEnv); - this->Connect(WXE_SHUTDOWN, wxeEVT_META_COMMAND, + this->Connect(WXE_SHUTDOWN, wxeEVT_META_COMMAND, (wxObjectEventFunction) (wxEventFunction) &WxeApp::shutdown); // fprintf(stderr, "Size void* %d: long %d long long %d int64 %d \r\n", @@ -287,9 +288,9 @@ bool WxeApp::OnInit() initEventTable(); wxInitAllImageHandlers(); - /* Create a dummy window so wxWidgets don't automagicly quits the main loop + /* Create a dummy window so wxWidgets don't automagicly quits the main loop after the last window */ - create_dummy_window(); + create_dummy_window(); init_nonconsts(global_me, init_caller); erl_drv_mutex_lock(wxe_status_m); @@ -308,19 +309,19 @@ void send_msg(const char * type, wxString * msg) { wxeReturn rt = wxeReturn(WXE_DRV_PORT, init_caller); rt.addAtom((char *) "wxe_driver"); rt.addAtom((char *) type); - rt.add(msg); + rt.add(msg); rt.addTupleCount(3); rt.send(); } /* ************************************************************ - * Erlang Command execution * + * Erlang Command execution * * ************************************************************/ -/* Callback from printer and event callbacks */ +/* Callback from printer and event callbacks */ void pre_callback() { - // no-op + // no-op } void handle_event_callback(ErlDrvPort port, ErlDrvTermData process) @@ -330,29 +331,19 @@ void handle_event_callback(ErlDrvPort port, ErlDrvTermData process) driver_monitor_process(port, process, &monitor); // Should we be able to handle commands when recursing? probably erl_drv_mutex_lock(wxe_batch_locker_m); - //fprintf(stderr, "\r\nCB Start ");fflush(stderr); + // fprintf(stderr, "\r\nCB EV Start ");fflush(stderr); app->dispatch_cb(wxe_batch, wxe_batch_cb_saved, process); - //fprintf(stderr, ".. done \r\n");fflush(stderr); + // fprintf(stderr, ".. done \r\n");fflush(stderr); wxe_batch_caller = 0; erl_drv_mutex_unlock(wxe_batch_locker_m); driver_demonitor_process(port, &monitor); } -void handle_callback_batch(ErlDrvPort port) -{ - WxeApp * app = (WxeApp *) wxTheApp; - // Should we be able to handle commands when recursing? probably - erl_drv_mutex_lock(wxe_batch_locker_m); - app->dispatch(wxe_batch, 0, WXE_CALLBACK); - wxe_batch_caller = 0; - erl_drv_mutex_unlock(wxe_batch_locker_m); -} - // Called by wx thread void WxeApp::idle(wxIdleEvent& event) { dispatch_cmds(); } - + void WxeApp::dispatch_cmds() { erl_drv_mutex_lock(wxe_batch_locker_m); int level = dispatch(wxe_batch_cb_saved, 0, WXE_STORED); @@ -361,14 +352,14 @@ void WxeApp::dispatch_cmds() { erl_drv_mutex_unlock(wxe_batch_locker_m); } -// Should have erl_drv_mutex_lock(wxe_batch_locker_m); -// when entering this function and it should be released +// Should have erl_drv_mutex_lock(wxe_batch_locker_m); +// when entering this function and it should be released // afterwards -int WxeApp::dispatch(wxList * batch, int blevel, int list_type) +int WxeApp::dispatch(wxList * batch, int blevel, int list_type) { int ping = 0; // erl_drv_mutex_lock(wxe_batch_locker_m); must be locked already - while(true) + while(true) { if (batch->size() > 0) { for( wxList::compatibility_iterator node = batch->GetFirst(); @@ -385,19 +376,22 @@ int WxeApp::dispatch(wxList * batch, int blevel, int list_type) {blevel++; } break; case WXE_DEBUG_PING: - // When in debugger we don't want to hang waiting for a BATCH_END + // When in debugger we don't want to hang waiting for a BATCH_END // that never comes, because a breakpoint have hit. ping++; - if(ping > 2) + if(ping > 2) blevel = 0; break; case WXE_CB_RETURN: // erl_drv_mutex_unlock(wxe_batch_locker_m); should be called after // whatever cleaning is necessary - memcpy(cb_buff, event->buffer, event->len); + if(event->len > 0) { + cb_buff = (char *) driver_alloc(event->len); + memcpy(cb_buff, event->buffer, event->len); + } return blevel; default: - erl_drv_mutex_unlock(wxe_batch_locker_m); + erl_drv_mutex_unlock(wxe_batch_locker_m); if(event->op < OPENGL_START) { // fprintf(stderr, " c %d (%d) \r\n", event->op, blevel); wxe_dispatch(*event); @@ -436,10 +430,10 @@ void WxeApp::dispatch_cb(wxList * batch, wxList * temp, ErlDrvTermData process) wxeCommand *event = (wxeCommand *)node->GetData(); wxeMemEnv *memenv = getMemEnv(event->port); batch->Erase(node); - if(event->caller == process || // Callbacks from CB process only + if(event->caller == process || // Callbacks from CB process only event->op == WXE_CB_START || // Recursive event callback allow // Allow connect_cb during CB i.e. msg from wxe_server. - (memenv && event->caller == memenv->owner)) + (memenv && event->caller == memenv->owner)) { switch(event->op) { case WXE_BATCH_END: @@ -447,7 +441,10 @@ void WxeApp::dispatch_cb(wxList * batch, wxList * temp, ErlDrvTermData process) case WXE_DEBUG_PING: break; case WXE_CB_RETURN: - memcpy(cb_buff, event->buffer, event->len); + if(event->len > 0) { + cb_buff = (char *) driver_alloc(event->len); + memcpy(cb_buff, event->buffer, event->len); + } callback_returned = 1; return; case WXE_CB_START: @@ -464,12 +461,12 @@ void WxeApp::dispatch_cb(wxList * batch, wxList * temp, ErlDrvTermData process) } erl_drv_mutex_lock(wxe_batch_locker_m); break; - if(callback_returned) + if(callback_returned) return; } delete event; } else { - // fprintf(stderr, " sav %d \r\n", event->op); + // fprintf(stderr, " save %d \r\n", event->op); temp->Append(event); } } @@ -494,13 +491,13 @@ void WxeApp::newMemEnv(wxeMetaCommand& Ecmd) { driver_pdl_inc_refc(Ecmd.pdl); for(int i = 0; i < global_me->next; i++) { - memenv->ref2ptr[i] = global_me->ref2ptr[i]; + memenv->ref2ptr[i] = global_me->ref2ptr[i]; } memenv->next = global_me->next; refmap[(ErlDrvTermData) Ecmd.port] = memenv; memenv->owner = Ecmd.caller; - ErlDrvTermData rt[] = {ERL_DRV_ATOM, driver_mk_atom((char *)"wx_port_initiated")}; + ErlDrvTermData rt[] = {ERL_DRV_ATOM, driver_mk_atom((char *)"wx_port_initiated")}; driver_send_term(WXE_DRV_PORT,Ecmd.caller,rt,2); } @@ -519,13 +516,13 @@ void WxeApp::destroyMemEnv(wxeMetaCommand& Ecmd) { // pre-pass delete all dialogs first since they might crash erlang otherwise for(int i=1; i < memenv->next; i++) { wxObject * ptr = (wxObject *) memenv->ref2ptr[i]; - if(ptr) { + if(ptr) { ptrMap::iterator it = ptr2ref.find(ptr); if(it != ptr2ref.end()) { wxeRefData *refd = it->second; if(refd->alloc_in_erl) { if(refd->type == 2) { - wxDialog *win = (wxDialog *) ptr; + wxDialog *win = (wxDialog *) ptr; if(win->IsModal()) { win->EndModal(-1); } @@ -535,25 +532,25 @@ void WxeApp::destroyMemEnv(wxeMetaCommand& Ecmd) { if(parentRef == ptr2ref.end()) { // The parent is already dead delete the parent ref win->SetParent(NULL); - } + } } delete win; - } + } } } } } - // First pass, delete all top parents/windows of all linked objects + // First pass, delete all top parents/windows of all linked objects // fprintf(stderr, "close port %x\r\n", Ecmd.port);fflush(stderr); for(int i=1; i < memenv->next; i++) { void * ptr = memenv->ref2ptr[i]; - if(ptr) { + if(ptr) { ptrMap::iterator it = ptr2ref.find(ptr); if(it != ptr2ref.end()) { wxeRefData *refd = it->second; if(refd->alloc_in_erl && refd->type == 0) { - parent = (wxWindow *) ptr; + parent = (wxWindow *) ptr; // fprintf(stderr, "window %x %d\r\n", (int) parent, refd->ref); while(parent->GetParent()) { parent = parent->GetParent(); @@ -573,7 +570,7 @@ void WxeApp::destroyMemEnv(wxeMetaCommand& Ecmd) { // everything linked from windows should now be deleted for(int i=1; i < memenv->next; i++) { void * ptr = memenv->ref2ptr[i]; - if(ptr) { + if(ptr) { ptrMap::iterator it = ptr2ref.find(ptr); if(it != ptr2ref.end()) { wxeRefData *refd = it->second; @@ -585,33 +582,33 @@ void WxeApp::destroyMemEnv(wxeMetaCommand& Ecmd) { wxString msg; if((refd->type == 0)) { // Maybe also class 1 wxClassInfo *cinfo = ((wxObject *)ptr)->GetClassInfo(); - msg.Printf(wxT("Memory leak: {wx_ref, %d, %s}"), + msg.Printf(wxT("Memory leak: {wx_ref, %d, %s}"), refd->ref, cinfo->GetClassName()); send_msg("error", &msg); } else { delete_object(ptr, refd); } - if(type == 0 || type > 3) { - // Delete refs for leaks and non overridden allocs + if(type == 0 || type > 2) { + // Delete refs for leaks and non overridden allocs delete refd; ptr2ref.erase(it); } // overridden allocs deletes meta-data in clearPtr } else { // Not alloced in erl just delete references if(refd->ref >= global_me->next) { // if it is not part of global ptrs - delete refd; + delete refd; ptr2ref.erase(it); } } } } - } - // Assert ? -// for(ptrMap::iterator it = ptr2ref.begin(); it != ptr2ref.end(); it++) { -// wxeRefData *refd = it->second; -// if(refd->ref >= global_me->next) -// fprintf(stderr, "L %d %d\r\n", refd->ref, refd->alloc_in_erl); -// } -// fflush(stderr); + } +// // Assert ? +// for(ptrMap::iterator it = ptr2ref.begin(); it != ptr2ref.end(); it++) { +// wxeRefData *refd = it->second; +// if(refd->ref >= global_me->next) +// fprintf(stderr, "L %d %d %d\r\n", refd->ref, refd->type, refd->alloc_in_erl); +// } +// fflush(stderr); delete memenv; driver_pdl_dec_refc(Ecmd.pdl); refmap.erase((ErlDrvTermData) Ecmd.port); @@ -624,7 +621,7 @@ wxeMemEnv * WxeApp::getMemEnv(ErlDrvPort port) { int WxeApp::newPtr(void * ptr, int type, wxeMemEnv *memenv) { int ref; intList free = memenv->free; - + if(free.IsEmpty()) { ref = memenv->next++; } else { @@ -632,8 +629,8 @@ int WxeApp::newPtr(void * ptr, int type, wxeMemEnv *memenv) { }; if(ref >= memenv->max) { memenv->max *= 2; - memenv->ref2ptr = - (void **) driver_realloc(memenv->ref2ptr,memenv->max * sizeof(void*)); + memenv->ref2ptr = + (void **) driver_realloc(memenv->ref2ptr,memenv->max * sizeof(void*)); } memenv->ref2ptr[ref] = ptr; @@ -653,12 +650,12 @@ int WxeApp::getRef(void * ptr, wxeMemEnv *memenv) { ptrMap::iterator it = ptr2ref.find(ptr); if(it != ptr2ref.end()) { wxeRefData *refd = it->second; - if(refd->memenv == memenv) { + if(refd->memenv == memenv || refd->memenv == global_me) { // Found it return return refd->ref; } // else // Old reference to deleted object, release old and recreate in current memenv. - clearPtr(ptr); + ptr2ref.erase(it); } int ref; intList free = memenv->free; @@ -687,7 +684,7 @@ void WxeApp::clearPtr(void * ptr) { if(it != ptr2ref.end()) { wxeRefData *refd = it->second; intList free = refd->memenv->free; - int ref = refd->ref; + int ref = refd->ref; refd->memenv->ref2ptr[ref] = NULL; free.Append(ref); @@ -696,7 +693,7 @@ void WxeApp::clearPtr(void * ptr) { msg.Printf(wxT("Deleting {wx_ref, %d, unknown} at %p "), ref, ptr); send_msg("debug", &msg); } - + if(((int) refd->pid) != -1) { // Send terminate pid to owner wxeReturn rt = wxeReturn(WXE_DRV_PORT,refd->memenv->owner, false); @@ -709,30 +706,30 @@ void WxeApp::clearPtr(void * ptr) { if(refd->type == 1 && ((wxObject*)ptr)->IsKindOf(CLASSINFO(wxSizer))) { wxSizerItemList list = ((wxSizer*)ptr)->GetChildren(); for(wxSizerItemList::compatibility_iterator node = list.GetFirst(); - node; node = node->GetNext()) { + node; node = node->GetNext()) { wxSizerItem *item = node->GetData(); wxObject *content=NULL; - if((content = item->GetWindow())) + if((content = item->GetWindow())) if(ptr2ref.end() == ptr2ref.find(content)) { wxString msg; wxClassInfo *cinfo = ((wxObject *)ptr)->GetClassInfo(); msg.Printf(wxT("Double usage detected of window at %p in sizer {wx_ref, %d, %s}"), content, ref, cinfo->GetClassName()); send_msg("error", &msg); - ((wxSizer*)ptr)->Detach((wxWindow*)content); + ((wxSizer*)ptr)->Detach((wxWindow*)content); } - if((content = item->GetSizer())) + if((content = item->GetSizer())) if(ptr2ref.end() == ptr2ref.find(content)) { wxString msg; wxClassInfo *cinfo = ((wxObject *)ptr)->GetClassInfo(); msg.Printf(wxT("Double usage detected of sizer at %p in sizer {wx_ref, %d, %s}"), content, ref, cinfo->GetClassName()); send_msg("error", &msg); - ((wxSizer*)ptr)->Detach((wxSizer*)content); + ((wxSizer*)ptr)->Detach((wxSizer*)content); } } } - + delete refd; ptr2ref.erase(it); } @@ -753,7 +750,7 @@ void * WxeApp::getPtr(char * bp, wxeMemEnv *memenv) { void WxeApp::registerPid(char * bp, ErlDrvTermData pid, wxeMemEnv * memenv) { int index = *(int *) bp; - if(!memenv) + if(!memenv) throw wxe_badarg(index); void * temp = memenv->ref2ptr[index]; if((index < memenv->next) && ((index == 0) || (temp > NULL))) { @@ -773,14 +770,14 @@ void WxeApp::registerPid(char * bp, ErlDrvTermData pid, wxeMemEnv * memenv) { * Misc utility classes * ************************************************************/ -/* **************************************************************************** - * Memory handling +/* **************************************************************************** + * Memory handling * ****************************************************************************/ wxeMemEnv::wxeMemEnv() { - ref2ptr = (void **) driver_alloc(128*sizeof(void *)); + ref2ptr = (void **) driver_alloc(128*sizeof(void *)); ref2ptr[0] = NULL; - next = 1; + next = 1; max = 128; } @@ -788,12 +785,12 @@ wxeMemEnv::~wxeMemEnv() { driver_free(ref2ptr); } -/* **************************************************************************** +/* **************************************************************************** * Erlang Commands (don't need to be derived of wxEvent anymore should * be re-written to own class struct) * ****************************************************************************/ -wxeCommand::wxeCommand(int fc,char * cbuf,int buflen, wxe_data *sd) +wxeCommand::wxeCommand(int fc,char * cbuf,int buflen, wxe_data *sd) : wxObject() { WXEBinRef *temp, *start, *prev; @@ -809,12 +806,12 @@ wxeCommand::wxeCommand(int fc,char * cbuf,int buflen, wxe_data *sd) if(cbuf) { buffer = (char *) driver_alloc(len); memcpy((void *) buffer, (void *) cbuf, len);; - + temp = sd->bin; - + prev = NULL; start = temp; - + while(temp) { if(caller == temp->from) { bin[n++] = temp; @@ -839,7 +836,7 @@ wxeCommand::~wxeCommand() { int n = 0; if(buffer) { while(bin[n]) { - if(bin[n]->bin) + if(bin[n]->bin) driver_free_binary(bin[n]->bin); driver_free(bin[n++]); } @@ -847,26 +844,26 @@ wxeCommand::~wxeCommand() { } } -/* **************************************************************************** - * TreeItemData +/* **************************************************************************** + * TreeItemData * ****************************************************************************/ -wxETreeItemData::wxETreeItemData(int sz, char * data) { +wxETreeItemData::wxETreeItemData(int sz, char * data) { size = sz; bin = (char *) driver_alloc(sz); memcpy(bin, data, sz); } -wxETreeItemData::~wxETreeItemData() +wxETreeItemData::~wxETreeItemData() { driver_free(bin); } -/* **************************************************************************** +/* **************************************************************************** * CallbackData * * ****************************************************************************/ -wxeCallbackData::wxeCallbackData(ErlDrvTermData caller,void * req, char *req_type, +wxeCallbackData::wxeCallbackData(ErlDrvTermData caller,void * req, char *req_type, int funcb, int skip_ev, wxeErlTerm * userData) : wxObject() { @@ -893,8 +890,6 @@ int wxCALLBACK wxEListCtrlCompare(long item1, long item2, long callbackInfoPtr) { callbackInfo * cb = (callbackInfo *)callbackInfoPtr; wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(cb->port); - char * bp = ((WxeApp *) wxTheApp)->cb_buff; - wxeReturn rt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); rt.addInt(cb->callbackID); rt.addInt(item1); @@ -903,6 +898,13 @@ int wxCALLBACK wxEListCtrlCompare(long item1, long item2, long callbackInfoPtr) rt.addAtom("_wx_invoke_cb_"); rt.addTupleCount(3); rt.send(); - handle_callback_batch(cb->port); - return *(int*) bp; + handle_event_callback(cb->port, memenv->owner); + + if(((WxeApp *) wxTheApp)->cb_buff) { + int res = * (int*) ((WxeApp *) wxTheApp)->cb_buff; + driver_free(((WxeApp *) wxTheApp)->cb_buff); + ((WxeApp *) wxTheApp)->cb_buff = NULL; + return res; + } + return 0; } diff --git a/lib/wx/c_src/wxe_impl.h b/lib/wx/c_src/wxe_impl.h index 39c02f8c1a..ee31068d5d 100644 --- a/lib/wx/c_src/wxe_impl.h +++ b/lib/wx/c_src/wxe_impl.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2010. All Rights Reserved. + * Copyright Ericsson AB 2008-2011. All Rights Reserved. * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in @@ -178,7 +178,8 @@ public: wxeMemEnv * global_me; // Temp container for callbacks - char cb_buff[256]; + char *cb_buff; + int cb_len; }; class wxETreeItemData : public wxTreeItemData @@ -194,7 +195,6 @@ class wxETreeItemData : public wxTreeItemData bool sendevent(wxEvent * event, ErlDrvPort port); void pre_callback(); -void handle_callback_batch(ErlDrvPort port); // For wxePrintout void handle_event_callback(ErlDrvPort port, ErlDrvTermData process); void activateGL(ErlDrvTermData caller); @@ -232,8 +232,6 @@ class wxEPrintout : public wxPrintout bool OnPrintPage(int page); void GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo); - void clear_cb(int callback); - int onPrintPage; int onPreparePrinting; int onBeginPrinting; @@ -246,6 +244,9 @@ class wxEPrintout : public wxPrintout ErlDrvPort port; }; +void clear_cb(ErlDrvPort port, int callback); + + // Implementation of wxListCtrlCompare struct callbackInfo { ErlDrvPort port; diff --git a/lib/wx/examples/demo/ex_listCtrl.erl b/lib/wx/examples/demo/ex_listCtrl.erl index c574c7247a..3faec4e229 100644 --- a/lib/wx/examples/demo/ex_listCtrl.erl +++ b/lib/wx/examples/demo/ex_listCtrl.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% -module(ex_listCtrl). @@ -25,7 +25,7 @@ -export([start/1, init/1, terminate/2, code_change/3, handle_info/2, handle_call/3, handle_event/2]). --record(state, +-record(state, { parent, config, @@ -40,11 +40,11 @@ init(Config) -> wx:batch(fun() -> do_init(Config) end). do_init(Config) -> - Parent = proplists:get_value(parent, Config), + Parent = proplists:get_value(parent, Config), Panel = wxPanel:new(Parent, []), %% Setup sizers - MainSizer = wxStaticBoxSizer:new(?wxVERTICAL, Panel, + MainSizer = wxStaticBoxSizer:new(?wxVERTICAL, Panel, [{label, "wxListCtrl"}]), Notebook = wxNotebook:new(Panel, 1, [{style, ?wxBK_DEFAULT}]), @@ -81,14 +81,46 @@ do_init(Config) -> wxListCtrl:setItemBackgroundColour(ListCtrl3,3,?wxGREEN), wxListCtrl:setItemBackgroundColour(ListCtrl3,0,?wxCYAN), + IA = wxListItemAttr:new(), + wxListItemAttr:setTextColour(IA, {190, 25, 25}), + LC4Opts = [{style, ?wxLC_REPORT bor ?wxLC_VIRTUAL}, + {onGetItemText, fun(_This, Item, 0) -> + "Row " ++ integer_to_list(Item); + (_, Item, 1) when Item rem 5 == 0 -> + "Column 2"; + (_, _, _) -> "" + end}, + {onGetItemAttr, fun(_This, Item) when Item rem 3 == 0 -> + IA; + (_This, _Item) -> + wx:typeCast(wx:null(), wxListItemAttr) + end}, + {onGetItemColumnImage, fun(_This, Item, 1) -> + Item rem 4; + (_, _, _) -> + -1 + end} + ], + ListCtrl4 = wxListCtrl:new(Notebook, LC4Opts), + wxListCtrl:setImageList(ListCtrl4, IL, ?wxIMAGE_LIST_SMALL), + + wxListCtrl:insertColumn(ListCtrl4, 0, "Column 1"), + wxListCtrl:insertColumn(ListCtrl4, 1, "Column 2"), + wxListCtrl:setColumnWidth(ListCtrl4, 0, 200), + wxListCtrl:setColumnWidth(ListCtrl4, 1, 200), + wxListCtrl:setItemCount(ListCtrl4, 1000000), + + wxListCtrl:connect(ListCtrl1, command_list_item_selected, []), wxListCtrl:connect(ListCtrl2, command_list_item_selected, []), wxListCtrl:connect(ListCtrl3, command_list_item_selected, []), + wxListCtrl:connect(ListCtrl4, command_list_item_selected, []), %% Add to sizers wxNotebook:addPage(Notebook, ListCtrl1, "List", []), wxNotebook:addPage(Notebook, ListCtrl2, "Report", []), wxNotebook:addPage(Notebook, ListCtrl3, "Colored multiselect", []), + wxNotebook:addPage(Notebook, ListCtrl4, "Virtual Report", []), wxSizer:add(MainSizer, Notebook, [{proportion, 1}, {flag, ?wxEXPAND}]), @@ -145,4 +177,4 @@ create_list_ctrl(Win, Options) -> ListCtrl. - + diff --git a/lib/wx/include/gl.hrl b/lib/wx/include/gl.hrl index 52f2635af9..54eb551285 100644 --- a/lib/wx/include/gl.hrl +++ b/lib/wx/include/gl.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -21,32 +21,22 @@ %% This file is generated DO NOT EDIT -define(GL_VERSION_1_1, 1). --define(GL_CURRENT_BIT, 16#1). --define(GL_POINT_BIT, 16#2). --define(GL_LINE_BIT, 16#4). --define(GL_POLYGON_BIT, 16#8). --define(GL_POLYGON_STIPPLE_BIT, 16#10). --define(GL_PIXEL_MODE_BIT, 16#20). --define(GL_LIGHTING_BIT, 16#40). --define(GL_FOG_BIT, 16#80). --define(GL_DEPTH_BUFFER_BIT, 16#100). --define(GL_ACCUM_BUFFER_BIT, 16#200). --define(GL_STENCIL_BUFFER_BIT, 16#400). --define(GL_VIEWPORT_BIT, 16#800). --define(GL_TRANSFORM_BIT, 16#1000). --define(GL_ENABLE_BIT, 16#2000). --define(GL_COLOR_BUFFER_BIT, 16#4000). --define(GL_HINT_BIT, 16#8000). --define(GL_EVAL_BIT, 16#10000). --define(GL_LIST_BIT, 16#20000). --define(GL_TEXTURE_BIT, 16#40000). --define(GL_SCISSOR_BIT, 16#80000). --define(GL_ALL_ATTRIB_BITS, 16#FFFFFFFF). --define(GL_CLIENT_PIXEL_STORE_BIT, 16#1). --define(GL_CLIENT_VERTEX_ARRAY_BIT, 16#2). --define(GL_CLIENT_ALL_ATTRIB_BITS, 16#FFFFFFFF). --define(GL_FALSE, 0). --define(GL_TRUE, 1). +-define(GL_VERSION_1_2, 1). +-define(GL_VERSION_1_3, 1). +-define(GL_ARB_imaging, 1). +-define(GL_FALSE, 16#0). +-define(GL_TRUE, 16#1). +-define(GL_BYTE, 16#1400). +-define(GL_UNSIGNED_BYTE, 16#1401). +-define(GL_SHORT, 16#1402). +-define(GL_UNSIGNED_SHORT, 16#1403). +-define(GL_INT, 16#1404). +-define(GL_UNSIGNED_INT, 16#1405). +-define(GL_FLOAT, 16#1406). +-define(GL_2_BYTES, 16#1407). +-define(GL_3_BYTES, 16#1408). +-define(GL_4_BYTES, 16#1409). +-define(GL_DOUBLE, 16#140A). -define(GL_POINTS, 16#0). -define(GL_LINES, 16#1). -define(GL_LINE_LOOP, 16#2). @@ -57,11 +47,85 @@ -define(GL_QUADS, 16#7). -define(GL_QUAD_STRIP, 16#8). -define(GL_POLYGON, 16#9). --define(GL_ACCUM, 16#100). --define(GL_LOAD, 16#101). --define(GL_RETURN, 16#102). --define(GL_MULT, 16#103). --define(GL_ADD, 16#104). +-define(GL_VERTEX_ARRAY, 16#8074). +-define(GL_NORMAL_ARRAY, 16#8075). +-define(GL_COLOR_ARRAY, 16#8076). +-define(GL_INDEX_ARRAY, 16#8077). +-define(GL_TEXTURE_COORD_ARRAY, 16#8078). +-define(GL_EDGE_FLAG_ARRAY, 16#8079). +-define(GL_VERTEX_ARRAY_SIZE, 16#807A). +-define(GL_VERTEX_ARRAY_TYPE, 16#807B). +-define(GL_VERTEX_ARRAY_STRIDE, 16#807C). +-define(GL_NORMAL_ARRAY_TYPE, 16#807E). +-define(GL_NORMAL_ARRAY_STRIDE, 16#807F). +-define(GL_COLOR_ARRAY_SIZE, 16#8081). +-define(GL_COLOR_ARRAY_TYPE, 16#8082). +-define(GL_COLOR_ARRAY_STRIDE, 16#8083). +-define(GL_INDEX_ARRAY_TYPE, 16#8085). +-define(GL_INDEX_ARRAY_STRIDE, 16#8086). +-define(GL_TEXTURE_COORD_ARRAY_SIZE, 16#8088). +-define(GL_TEXTURE_COORD_ARRAY_TYPE, 16#8089). +-define(GL_TEXTURE_COORD_ARRAY_STRIDE, 16#808A). +-define(GL_EDGE_FLAG_ARRAY_STRIDE, 16#808C). +-define(GL_VERTEX_ARRAY_POINTER, 16#808E). +-define(GL_NORMAL_ARRAY_POINTER, 16#808F). +-define(GL_COLOR_ARRAY_POINTER, 16#8090). +-define(GL_INDEX_ARRAY_POINTER, 16#8091). +-define(GL_TEXTURE_COORD_ARRAY_POINTER, 16#8092). +-define(GL_EDGE_FLAG_ARRAY_POINTER, 16#8093). +-define(GL_V2F, 16#2A20). +-define(GL_V3F, 16#2A21). +-define(GL_C4UB_V2F, 16#2A22). +-define(GL_C4UB_V3F, 16#2A23). +-define(GL_C3F_V3F, 16#2A24). +-define(GL_N3F_V3F, 16#2A25). +-define(GL_C4F_N3F_V3F, 16#2A26). +-define(GL_T2F_V3F, 16#2A27). +-define(GL_T4F_V4F, 16#2A28). +-define(GL_T2F_C4UB_V3F, 16#2A29). +-define(GL_T2F_C3F_V3F, 16#2A2A). +-define(GL_T2F_N3F_V3F, 16#2A2B). +-define(GL_T2F_C4F_N3F_V3F, 16#2A2C). +-define(GL_T4F_C4F_N3F_V4F, 16#2A2D). +-define(GL_MATRIX_MODE, 16#BA0). +-define(GL_MODELVIEW, 16#1700). +-define(GL_PROJECTION, 16#1701). +-define(GL_TEXTURE, 16#1702). +-define(GL_POINT_SMOOTH, 16#B10). +-define(GL_POINT_SIZE, 16#B11). +-define(GL_POINT_SIZE_GRANULARITY, 16#B13). +-define(GL_POINT_SIZE_RANGE, 16#B12). +-define(GL_LINE_SMOOTH, 16#B20). +-define(GL_LINE_STIPPLE, 16#B24). +-define(GL_LINE_STIPPLE_PATTERN, 16#B25). +-define(GL_LINE_STIPPLE_REPEAT, 16#B26). +-define(GL_LINE_WIDTH, 16#B21). +-define(GL_LINE_WIDTH_GRANULARITY, 16#B23). +-define(GL_LINE_WIDTH_RANGE, 16#B22). +-define(GL_POINT, 16#1B00). +-define(GL_LINE, 16#1B01). +-define(GL_FILL, 16#1B02). +-define(GL_CW, 16#900). +-define(GL_CCW, 16#901). +-define(GL_FRONT, 16#404). +-define(GL_BACK, 16#405). +-define(GL_POLYGON_MODE, 16#B40). +-define(GL_POLYGON_SMOOTH, 16#B41). +-define(GL_POLYGON_STIPPLE, 16#B42). +-define(GL_EDGE_FLAG, 16#B43). +-define(GL_CULL_FACE, 16#B44). +-define(GL_CULL_FACE_MODE, 16#B45). +-define(GL_FRONT_FACE, 16#B46). +-define(GL_POLYGON_OFFSET_FACTOR, 16#8038). +-define(GL_POLYGON_OFFSET_UNITS, 16#2A00). +-define(GL_POLYGON_OFFSET_POINT, 16#2A01). +-define(GL_POLYGON_OFFSET_LINE, 16#2A02). +-define(GL_POLYGON_OFFSET_FILL, 16#8037). +-define(GL_COMPILE, 16#1300). +-define(GL_COMPILE_AND_EXECUTE, 16#1301). +-define(GL_LIST_BASE, 16#B32). +-define(GL_LIST_INDEX, 16#B33). +-define(GL_LIST_MODE, 16#B30). -define(GL_NEVER, 16#200). -define(GL_LESS, 16#201). -define(GL_EQUAL, 16#202). @@ -70,8 +134,71 @@ -define(GL_NOTEQUAL, 16#205). -define(GL_GEQUAL, 16#206). -define(GL_ALWAYS, 16#207). --define(GL_ZERO, 0). --define(GL_ONE, 1). +-define(GL_DEPTH_TEST, 16#B71). +-define(GL_DEPTH_BITS, 16#D56). +-define(GL_DEPTH_CLEAR_VALUE, 16#B73). +-define(GL_DEPTH_FUNC, 16#B74). +-define(GL_DEPTH_RANGE, 16#B70). +-define(GL_DEPTH_WRITEMASK, 16#B72). +-define(GL_DEPTH_COMPONENT, 16#1902). +-define(GL_LIGHTING, 16#B50). +-define(GL_LIGHT0, 16#4000). +-define(GL_LIGHT1, 16#4001). +-define(GL_LIGHT2, 16#4002). +-define(GL_LIGHT3, 16#4003). +-define(GL_LIGHT4, 16#4004). +-define(GL_LIGHT5, 16#4005). +-define(GL_LIGHT6, 16#4006). +-define(GL_LIGHT7, 16#4007). +-define(GL_SPOT_EXPONENT, 16#1205). +-define(GL_SPOT_CUTOFF, 16#1206). +-define(GL_CONSTANT_ATTENUATION, 16#1207). +-define(GL_LINEAR_ATTENUATION, 16#1208). +-define(GL_QUADRATIC_ATTENUATION, 16#1209). +-define(GL_AMBIENT, 16#1200). +-define(GL_DIFFUSE, 16#1201). +-define(GL_SPECULAR, 16#1202). +-define(GL_SHININESS, 16#1601). +-define(GL_EMISSION, 16#1600). +-define(GL_POSITION, 16#1203). +-define(GL_SPOT_DIRECTION, 16#1204). +-define(GL_AMBIENT_AND_DIFFUSE, 16#1602). +-define(GL_COLOR_INDEXES, 16#1603). +-define(GL_LIGHT_MODEL_TWO_SIDE, 16#B52). +-define(GL_LIGHT_MODEL_LOCAL_VIEWER, 16#B51). +-define(GL_LIGHT_MODEL_AMBIENT, 16#B53). +-define(GL_FRONT_AND_BACK, 16#408). +-define(GL_SHADE_MODEL, 16#B54). +-define(GL_FLAT, 16#1D00). +-define(GL_SMOOTH, 16#1D01). +-define(GL_COLOR_MATERIAL, 16#B57). +-define(GL_COLOR_MATERIAL_FACE, 16#B55). +-define(GL_COLOR_MATERIAL_PARAMETER, 16#B56). +-define(GL_NORMALIZE, 16#BA1). +-define(GL_CLIP_PLANE0, 16#3000). +-define(GL_CLIP_PLANE1, 16#3001). +-define(GL_CLIP_PLANE2, 16#3002). +-define(GL_CLIP_PLANE3, 16#3003). +-define(GL_CLIP_PLANE4, 16#3004). +-define(GL_CLIP_PLANE5, 16#3005). +-define(GL_ACCUM_RED_BITS, 16#D58). +-define(GL_ACCUM_GREEN_BITS, 16#D59). +-define(GL_ACCUM_BLUE_BITS, 16#D5A). +-define(GL_ACCUM_ALPHA_BITS, 16#D5B). +-define(GL_ACCUM_CLEAR_VALUE, 16#B80). +-define(GL_ACCUM, 16#100). +-define(GL_ADD, 16#104). +-define(GL_LOAD, 16#101). +-define(GL_MULT, 16#103). +-define(GL_RETURN, 16#102). +-define(GL_ALPHA_TEST, 16#BC0). +-define(GL_ALPHA_TEST_REF, 16#BC2). +-define(GL_ALPHA_TEST_FUNC, 16#BC1). +-define(GL_BLEND, 16#BE2). +-define(GL_BLEND_SRC, 16#BE1). +-define(GL_BLEND_DST, 16#BE0). +-define(GL_ZERO, 16#0). +-define(GL_ONE, 16#1). -define(GL_SRC_COLOR, 16#300). -define(GL_ONE_MINUS_SRC_COLOR, 16#301). -define(GL_SRC_ALPHA, 16#302). @@ -81,121 +208,58 @@ -define(GL_DST_COLOR, 16#306). -define(GL_ONE_MINUS_DST_COLOR, 16#307). -define(GL_SRC_ALPHA_SATURATE, 16#308). --define(GL_NONE, 0). --define(GL_FRONT_LEFT, 16#400). --define(GL_FRONT_RIGHT, 16#401). --define(GL_BACK_LEFT, 16#402). --define(GL_BACK_RIGHT, 16#403). --define(GL_FRONT, 16#404). --define(GL_BACK, 16#405). --define(GL_LEFT, 16#406). --define(GL_RIGHT, 16#407). --define(GL_FRONT_AND_BACK, 16#408). --define(GL_AUX0, 16#409). --define(GL_AUX1, 16#40A). --define(GL_AUX2, 16#40B). --define(GL_AUX3, 16#40C). --define(GL_NO_ERROR, 0). --define(GL_INVALID_ENUM, 16#500). --define(GL_INVALID_VALUE, 16#501). --define(GL_INVALID_OPERATION, 16#502). --define(GL_STACK_OVERFLOW, 16#503). --define(GL_STACK_UNDERFLOW, 16#504). --define(GL_OUT_OF_MEMORY, 16#505). --define(GL_TABLE_TOO_LARGE, 16#8031). +-define(GL_FEEDBACK, 16#1C01). +-define(GL_RENDER, 16#1C00). +-define(GL_SELECT, 16#1C02). -define(GL_2D, 16#600). -define(GL_3D, 16#601). -define(GL_3D_COLOR, 16#602). -define(GL_3D_COLOR_TEXTURE, 16#603). -define(GL_4D_COLOR_TEXTURE, 16#604). --define(GL_PASS_THROUGH_TOKEN, 16#700). -define(GL_POINT_TOKEN, 16#701). -define(GL_LINE_TOKEN, 16#702). +-define(GL_LINE_RESET_TOKEN, 16#707). -define(GL_POLYGON_TOKEN, 16#703). -define(GL_BITMAP_TOKEN, 16#704). -define(GL_DRAW_PIXEL_TOKEN, 16#705). -define(GL_COPY_PIXEL_TOKEN, 16#706). --define(GL_LINE_RESET_TOKEN, 16#707). --define(GL_EXP, 16#800). --define(GL_EXP2, 16#801). --define(GL_CW, 16#900). --define(GL_CCW, 16#901). --define(GL_COEFF, 16#A00). --define(GL_ORDER, 16#A01). --define(GL_DOMAIN, 16#A02). --define(GL_PIXEL_MAP_I_TO_I, 16#C70). --define(GL_PIXEL_MAP_S_TO_S, 16#C71). --define(GL_PIXEL_MAP_I_TO_R, 16#C72). --define(GL_PIXEL_MAP_I_TO_G, 16#C73). --define(GL_PIXEL_MAP_I_TO_B, 16#C74). --define(GL_PIXEL_MAP_I_TO_A, 16#C75). --define(GL_PIXEL_MAP_R_TO_R, 16#C76). --define(GL_PIXEL_MAP_G_TO_G, 16#C77). --define(GL_PIXEL_MAP_B_TO_B, 16#C78). --define(GL_PIXEL_MAP_A_TO_A, 16#C79). --define(GL_VERTEX_ARRAY_POINTER, 16#808E). --define(GL_NORMAL_ARRAY_POINTER, 16#808F). --define(GL_COLOR_ARRAY_POINTER, 16#8090). --define(GL_INDEX_ARRAY_POINTER, 16#8091). --define(GL_TEXTURE_COORD_ARRAY_POINTER, 16#8092). --define(GL_EDGE_FLAG_ARRAY_POINTER, 16#8093). --define(GL_CURRENT_COLOR, 16#B00). --define(GL_CURRENT_INDEX, 16#B01). --define(GL_CURRENT_NORMAL, 16#B02). --define(GL_CURRENT_TEXTURE_COORDS, 16#B03). --define(GL_CURRENT_RASTER_COLOR, 16#B04). --define(GL_CURRENT_RASTER_INDEX, 16#B05). --define(GL_CURRENT_RASTER_TEXTURE_COORDS, 16#B06). --define(GL_CURRENT_RASTER_POSITION, 16#B07). --define(GL_CURRENT_RASTER_POSITION_VALID, 16#B08). --define(GL_CURRENT_RASTER_DISTANCE, 16#B09). --define(GL_POINT_SMOOTH, 16#B10). --define(GL_POINT_SIZE, 16#B11). --define(GL_SMOOTH_POINT_SIZE_RANGE, 16#B12). --define(GL_SMOOTH_POINT_SIZE_GRANULARITY, 16#B13). --define(GL_POINT_SIZE_RANGE, ?GL_SMOOTH_POINT_SIZE_RANGE). --define(GL_POINT_SIZE_GRANULARITY, ?GL_SMOOTH_POINT_SIZE_GRANULARITY). --define(GL_LINE_SMOOTH, 16#B20). --define(GL_LINE_WIDTH, 16#B21). --define(GL_SMOOTH_LINE_WIDTH_RANGE, 16#B22). --define(GL_SMOOTH_LINE_WIDTH_GRANULARITY, 16#B23). --define(GL_LINE_WIDTH_RANGE, ?GL_SMOOTH_LINE_WIDTH_RANGE). --define(GL_LINE_WIDTH_GRANULARITY, ?GL_SMOOTH_LINE_WIDTH_GRANULARITY). --define(GL_LINE_STIPPLE, 16#B24). --define(GL_LINE_STIPPLE_PATTERN, 16#B25). --define(GL_LINE_STIPPLE_REPEAT, 16#B26). --define(GL_LIST_MODE, 16#B30). --define(GL_MAX_LIST_NESTING, 16#B31). --define(GL_LIST_BASE, 16#B32). --define(GL_LIST_INDEX, 16#B33). --define(GL_POLYGON_MODE, 16#B40). --define(GL_POLYGON_SMOOTH, 16#B41). --define(GL_POLYGON_STIPPLE, 16#B42). --define(GL_EDGE_FLAG, 16#B43). --define(GL_CULL_FACE, 16#B44). --define(GL_CULL_FACE_MODE, 16#B45). --define(GL_FRONT_FACE, 16#B46). --define(GL_LIGHTING, 16#B50). --define(GL_LIGHT_MODEL_LOCAL_VIEWER, 16#B51). --define(GL_LIGHT_MODEL_TWO_SIDE, 16#B52). --define(GL_LIGHT_MODEL_AMBIENT, 16#B53). --define(GL_SHADE_MODEL, 16#B54). --define(GL_COLOR_MATERIAL_FACE, 16#B55). --define(GL_COLOR_MATERIAL_PARAMETER, 16#B56). --define(GL_COLOR_MATERIAL, 16#B57). +-define(GL_PASS_THROUGH_TOKEN, 16#700). +-define(GL_FEEDBACK_BUFFER_POINTER, 16#DF0). +-define(GL_FEEDBACK_BUFFER_SIZE, 16#DF1). +-define(GL_FEEDBACK_BUFFER_TYPE, 16#DF2). +-define(GL_SELECTION_BUFFER_POINTER, 16#DF3). +-define(GL_SELECTION_BUFFER_SIZE, 16#DF4). -define(GL_FOG, 16#B60). --define(GL_FOG_INDEX, 16#B61). +-define(GL_FOG_MODE, 16#B65). -define(GL_FOG_DENSITY, 16#B62). +-define(GL_FOG_COLOR, 16#B66). +-define(GL_FOG_INDEX, 16#B61). -define(GL_FOG_START, 16#B63). -define(GL_FOG_END, 16#B64). --define(GL_FOG_MODE, 16#B65). --define(GL_FOG_COLOR, 16#B66). --define(GL_DEPTH_RANGE, 16#B70). --define(GL_DEPTH_TEST, 16#B71). --define(GL_DEPTH_WRITEMASK, 16#B72). --define(GL_DEPTH_CLEAR_VALUE, 16#B73). --define(GL_DEPTH_FUNC, 16#B74). --define(GL_ACCUM_CLEAR_VALUE, 16#B80). +-define(GL_LINEAR, 16#2601). +-define(GL_EXP, 16#800). +-define(GL_EXP2, 16#801). +-define(GL_LOGIC_OP, 16#BF1). +-define(GL_INDEX_LOGIC_OP, 16#BF1). +-define(GL_COLOR_LOGIC_OP, 16#BF2). +-define(GL_LOGIC_OP_MODE, 16#BF0). +-define(GL_CLEAR, 16#1500). +-define(GL_SET, 16#150F). +-define(GL_COPY, 16#1503). +-define(GL_COPY_INVERTED, 16#150C). +-define(GL_NOOP, 16#1505). +-define(GL_INVERT, 16#150A). +-define(GL_AND, 16#1501). +-define(GL_NAND, 16#150E). +-define(GL_OR, 16#1507). +-define(GL_NOR, 16#1508). +-define(GL_XOR, 16#1506). +-define(GL_EQUIV, 16#1509). +-define(GL_AND_REVERSE, 16#1502). +-define(GL_AND_INVERTED, 16#1504). +-define(GL_OR_REVERSE, 16#150B). +-define(GL_OR_INVERTED, 16#150D). +-define(GL_STENCIL_BITS, 16#D57). -define(GL_STENCIL_TEST, 16#B90). -define(GL_STENCIL_CLEAR_VALUE, 16#B91). -define(GL_STENCIL_FUNC, 16#B92). @@ -205,89 +269,48 @@ -define(GL_STENCIL_PASS_DEPTH_PASS, 16#B96). -define(GL_STENCIL_REF, 16#B97). -define(GL_STENCIL_WRITEMASK, 16#B98). --define(GL_MATRIX_MODE, 16#BA0). --define(GL_NORMALIZE, 16#BA1). --define(GL_VIEWPORT, 16#BA2). --define(GL_MODELVIEW_STACK_DEPTH, 16#BA3). --define(GL_PROJECTION_STACK_DEPTH, 16#BA4). --define(GL_TEXTURE_STACK_DEPTH, 16#BA5). --define(GL_MODELVIEW_MATRIX, 16#BA6). --define(GL_PROJECTION_MATRIX, 16#BA7). --define(GL_TEXTURE_MATRIX, 16#BA8). --define(GL_ATTRIB_STACK_DEPTH, 16#BB0). --define(GL_CLIENT_ATTRIB_STACK_DEPTH, 16#BB1). --define(GL_ALPHA_TEST, 16#BC0). --define(GL_ALPHA_TEST_FUNC, 16#BC1). --define(GL_ALPHA_TEST_REF, 16#BC2). --define(GL_DITHER, 16#BD0). --define(GL_BLEND_DST, 16#BE0). --define(GL_BLEND_SRC, 16#BE1). --define(GL_BLEND, 16#BE2). --define(GL_LOGIC_OP_MODE, 16#BF0). --define(GL_INDEX_LOGIC_OP, 16#BF1). --define(GL_LOGIC_OP, ?GL_INDEX_LOGIC_OP). --define(GL_COLOR_LOGIC_OP, 16#BF2). +-define(GL_STENCIL_INDEX, 16#1901). +-define(GL_KEEP, 16#1E00). +-define(GL_REPLACE, 16#1E01). +-define(GL_INCR, 16#1E02). +-define(GL_DECR, 16#1E03). +-define(GL_NONE, 16#0). +-define(GL_LEFT, 16#406). +-define(GL_RIGHT, 16#407). +-define(GL_FRONT_LEFT, 16#400). +-define(GL_FRONT_RIGHT, 16#401). +-define(GL_BACK_LEFT, 16#402). +-define(GL_BACK_RIGHT, 16#403). +-define(GL_AUX0, 16#409). +-define(GL_AUX1, 16#40A). +-define(GL_AUX2, 16#40B). +-define(GL_AUX3, 16#40C). +-define(GL_COLOR_INDEX, 16#1900). +-define(GL_RED, 16#1903). +-define(GL_GREEN, 16#1904). +-define(GL_BLUE, 16#1905). +-define(GL_ALPHA, 16#1906). +-define(GL_LUMINANCE, 16#1909). +-define(GL_LUMINANCE_ALPHA, 16#190A). +-define(GL_ALPHA_BITS, 16#D55). +-define(GL_RED_BITS, 16#D52). +-define(GL_GREEN_BITS, 16#D53). +-define(GL_BLUE_BITS, 16#D54). +-define(GL_INDEX_BITS, 16#D51). +-define(GL_SUBPIXEL_BITS, 16#D50). -define(GL_AUX_BUFFERS, 16#C00). --define(GL_DRAW_BUFFER, 16#C01). -define(GL_READ_BUFFER, 16#C02). --define(GL_SCISSOR_BOX, 16#C10). --define(GL_SCISSOR_TEST, 16#C11). --define(GL_INDEX_CLEAR_VALUE, 16#C20). --define(GL_INDEX_WRITEMASK, 16#C21). --define(GL_COLOR_CLEAR_VALUE, 16#C22). --define(GL_COLOR_WRITEMASK, 16#C23). --define(GL_INDEX_MODE, 16#C30). --define(GL_RGBA_MODE, 16#C31). +-define(GL_DRAW_BUFFER, 16#C01). -define(GL_DOUBLEBUFFER, 16#C32). -define(GL_STEREO, 16#C33). --define(GL_RENDER_MODE, 16#C40). --define(GL_PERSPECTIVE_CORRECTION_HINT, 16#C50). --define(GL_POINT_SMOOTH_HINT, 16#C51). --define(GL_LINE_SMOOTH_HINT, 16#C52). --define(GL_POLYGON_SMOOTH_HINT, 16#C53). --define(GL_FOG_HINT, 16#C54). --define(GL_TEXTURE_GEN_S, 16#C60). --define(GL_TEXTURE_GEN_T, 16#C61). --define(GL_TEXTURE_GEN_R, 16#C62). --define(GL_TEXTURE_GEN_Q, 16#C63). --define(GL_PIXEL_MAP_I_TO_I_SIZE, 16#CB0). --define(GL_PIXEL_MAP_S_TO_S_SIZE, 16#CB1). --define(GL_PIXEL_MAP_I_TO_R_SIZE, 16#CB2). --define(GL_PIXEL_MAP_I_TO_G_SIZE, 16#CB3). --define(GL_PIXEL_MAP_I_TO_B_SIZE, 16#CB4). --define(GL_PIXEL_MAP_I_TO_A_SIZE, 16#CB5). --define(GL_PIXEL_MAP_R_TO_R_SIZE, 16#CB6). --define(GL_PIXEL_MAP_G_TO_G_SIZE, 16#CB7). --define(GL_PIXEL_MAP_B_TO_B_SIZE, 16#CB8). --define(GL_PIXEL_MAP_A_TO_A_SIZE, 16#CB9). --define(GL_UNPACK_SWAP_BYTES, 16#CF0). --define(GL_UNPACK_LSB_FIRST, 16#CF1). --define(GL_UNPACK_ROW_LENGTH, 16#CF2). --define(GL_UNPACK_SKIP_ROWS, 16#CF3). --define(GL_UNPACK_SKIP_PIXELS, 16#CF4). --define(GL_UNPACK_ALIGNMENT, 16#CF5). --define(GL_PACK_SWAP_BYTES, 16#D00). --define(GL_PACK_LSB_FIRST, 16#D01). --define(GL_PACK_ROW_LENGTH, 16#D02). --define(GL_PACK_SKIP_ROWS, 16#D03). --define(GL_PACK_SKIP_PIXELS, 16#D04). --define(GL_PACK_ALIGNMENT, 16#D05). --define(GL_MAP_COLOR, 16#D10). --define(GL_MAP_STENCIL, 16#D11). --define(GL_INDEX_SHIFT, 16#D12). --define(GL_INDEX_OFFSET, 16#D13). --define(GL_RED_SCALE, 16#D14). --define(GL_RED_BIAS, 16#D15). --define(GL_ZOOM_X, 16#D16). --define(GL_ZOOM_Y, 16#D17). --define(GL_GREEN_SCALE, 16#D18). --define(GL_GREEN_BIAS, 16#D19). --define(GL_BLUE_SCALE, 16#D1A). --define(GL_BLUE_BIAS, 16#D1B). --define(GL_ALPHA_SCALE, 16#D1C). --define(GL_ALPHA_BIAS, 16#D1D). --define(GL_DEPTH_SCALE, 16#D1E). --define(GL_DEPTH_BIAS, 16#D1F). +-define(GL_BITMAP, 16#1A00). +-define(GL_COLOR, 16#1800). +-define(GL_DEPTH, 16#1801). +-define(GL_STENCIL, 16#1802). +-define(GL_DITHER, 16#BD0). +-define(GL_RGB, 16#1907). +-define(GL_RGBA, 16#1908). +-define(GL_MAX_LIST_NESTING, 16#B31). -define(GL_MAX_EVAL_ORDER, 16#D30). -define(GL_MAX_LIGHTS, 16#D31). -define(GL_MAX_CLIP_PLANES, 16#D32). @@ -300,19 +323,33 @@ -define(GL_MAX_TEXTURE_STACK_DEPTH, 16#D39). -define(GL_MAX_VIEWPORT_DIMS, 16#D3A). -define(GL_MAX_CLIENT_ATTRIB_STACK_DEPTH, 16#D3B). --define(GL_SUBPIXEL_BITS, 16#D50). --define(GL_INDEX_BITS, 16#D51). --define(GL_RED_BITS, 16#D52). --define(GL_GREEN_BITS, 16#D53). --define(GL_BLUE_BITS, 16#D54). --define(GL_ALPHA_BITS, 16#D55). --define(GL_DEPTH_BITS, 16#D56). --define(GL_STENCIL_BITS, 16#D57). --define(GL_ACCUM_RED_BITS, 16#D58). --define(GL_ACCUM_GREEN_BITS, 16#D59). --define(GL_ACCUM_BLUE_BITS, 16#D5A). --define(GL_ACCUM_ALPHA_BITS, 16#D5B). +-define(GL_ATTRIB_STACK_DEPTH, 16#BB0). +-define(GL_CLIENT_ATTRIB_STACK_DEPTH, 16#BB1). +-define(GL_COLOR_CLEAR_VALUE, 16#C22). +-define(GL_COLOR_WRITEMASK, 16#C23). +-define(GL_CURRENT_INDEX, 16#B01). +-define(GL_CURRENT_COLOR, 16#B00). +-define(GL_CURRENT_NORMAL, 16#B02). +-define(GL_CURRENT_RASTER_COLOR, 16#B04). +-define(GL_CURRENT_RASTER_DISTANCE, 16#B09). +-define(GL_CURRENT_RASTER_INDEX, 16#B05). +-define(GL_CURRENT_RASTER_POSITION, 16#B07). +-define(GL_CURRENT_RASTER_TEXTURE_COORDS, 16#B06). +-define(GL_CURRENT_RASTER_POSITION_VALID, 16#B08). +-define(GL_CURRENT_TEXTURE_COORDS, 16#B03). +-define(GL_INDEX_CLEAR_VALUE, 16#C20). +-define(GL_INDEX_MODE, 16#C30). +-define(GL_INDEX_WRITEMASK, 16#C21). +-define(GL_MODELVIEW_MATRIX, 16#BA6). +-define(GL_MODELVIEW_STACK_DEPTH, 16#BA3). -define(GL_NAME_STACK_DEPTH, 16#D70). +-define(GL_PROJECTION_MATRIX, 16#BA7). +-define(GL_PROJECTION_STACK_DEPTH, 16#BA4). +-define(GL_RENDER_MODE, 16#C40). +-define(GL_RGBA_MODE, 16#C31). +-define(GL_TEXTURE_MATRIX, 16#BA8). +-define(GL_TEXTURE_STACK_DEPTH, 16#BA5). +-define(GL_VIEWPORT, 16#BA2). -define(GL_AUTO_NORMAL, 16#D80). -define(GL_MAP1_COLOR_4, 16#D90). -define(GL_MAP1_INDEX, 16#D91). @@ -336,166 +373,149 @@ -define(GL_MAP1_GRID_SEGMENTS, 16#DD1). -define(GL_MAP2_GRID_DOMAIN, 16#DD2). -define(GL_MAP2_GRID_SEGMENTS, 16#DD3). +-define(GL_COEFF, 16#A00). +-define(GL_ORDER, 16#A01). +-define(GL_DOMAIN, 16#A02). +-define(GL_PERSPECTIVE_CORRECTION_HINT, 16#C50). +-define(GL_POINT_SMOOTH_HINT, 16#C51). +-define(GL_LINE_SMOOTH_HINT, 16#C52). +-define(GL_POLYGON_SMOOTH_HINT, 16#C53). +-define(GL_FOG_HINT, 16#C54). +-define(GL_DONT_CARE, 16#1100). +-define(GL_FASTEST, 16#1101). +-define(GL_NICEST, 16#1102). +-define(GL_SCISSOR_BOX, 16#C10). +-define(GL_SCISSOR_TEST, 16#C11). +-define(GL_MAP_COLOR, 16#D10). +-define(GL_MAP_STENCIL, 16#D11). +-define(GL_INDEX_SHIFT, 16#D12). +-define(GL_INDEX_OFFSET, 16#D13). +-define(GL_RED_SCALE, 16#D14). +-define(GL_RED_BIAS, 16#D15). +-define(GL_GREEN_SCALE, 16#D18). +-define(GL_GREEN_BIAS, 16#D19). +-define(GL_BLUE_SCALE, 16#D1A). +-define(GL_BLUE_BIAS, 16#D1B). +-define(GL_ALPHA_SCALE, 16#D1C). +-define(GL_ALPHA_BIAS, 16#D1D). +-define(GL_DEPTH_SCALE, 16#D1E). +-define(GL_DEPTH_BIAS, 16#D1F). +-define(GL_PIXEL_MAP_S_TO_S_SIZE, 16#CB1). +-define(GL_PIXEL_MAP_I_TO_I_SIZE, 16#CB0). +-define(GL_PIXEL_MAP_I_TO_R_SIZE, 16#CB2). +-define(GL_PIXEL_MAP_I_TO_G_SIZE, 16#CB3). +-define(GL_PIXEL_MAP_I_TO_B_SIZE, 16#CB4). +-define(GL_PIXEL_MAP_I_TO_A_SIZE, 16#CB5). +-define(GL_PIXEL_MAP_R_TO_R_SIZE, 16#CB6). +-define(GL_PIXEL_MAP_G_TO_G_SIZE, 16#CB7). +-define(GL_PIXEL_MAP_B_TO_B_SIZE, 16#CB8). +-define(GL_PIXEL_MAP_A_TO_A_SIZE, 16#CB9). +-define(GL_PIXEL_MAP_S_TO_S, 16#C71). +-define(GL_PIXEL_MAP_I_TO_I, 16#C70). +-define(GL_PIXEL_MAP_I_TO_R, 16#C72). +-define(GL_PIXEL_MAP_I_TO_G, 16#C73). +-define(GL_PIXEL_MAP_I_TO_B, 16#C74). +-define(GL_PIXEL_MAP_I_TO_A, 16#C75). +-define(GL_PIXEL_MAP_R_TO_R, 16#C76). +-define(GL_PIXEL_MAP_G_TO_G, 16#C77). +-define(GL_PIXEL_MAP_B_TO_B, 16#C78). +-define(GL_PIXEL_MAP_A_TO_A, 16#C79). +-define(GL_PACK_ALIGNMENT, 16#D05). +-define(GL_PACK_LSB_FIRST, 16#D01). +-define(GL_PACK_ROW_LENGTH, 16#D02). +-define(GL_PACK_SKIP_PIXELS, 16#D04). +-define(GL_PACK_SKIP_ROWS, 16#D03). +-define(GL_PACK_SWAP_BYTES, 16#D00). +-define(GL_UNPACK_ALIGNMENT, 16#CF5). +-define(GL_UNPACK_LSB_FIRST, 16#CF1). +-define(GL_UNPACK_ROW_LENGTH, 16#CF2). +-define(GL_UNPACK_SKIP_PIXELS, 16#CF4). +-define(GL_UNPACK_SKIP_ROWS, 16#CF3). +-define(GL_UNPACK_SWAP_BYTES, 16#CF0). +-define(GL_ZOOM_X, 16#D16). +-define(GL_ZOOM_Y, 16#D17). +-define(GL_TEXTURE_ENV, 16#2300). +-define(GL_TEXTURE_ENV_MODE, 16#2200). -define(GL_TEXTURE_1D, 16#DE0). -define(GL_TEXTURE_2D, 16#DE1). --define(GL_FEEDBACK_BUFFER_POINTER, 16#DF0). --define(GL_FEEDBACK_BUFFER_SIZE, 16#DF1). --define(GL_FEEDBACK_BUFFER_TYPE, 16#DF2). --define(GL_SELECTION_BUFFER_POINTER, 16#DF3). --define(GL_SELECTION_BUFFER_SIZE, 16#DF4). --define(GL_POLYGON_OFFSET_UNITS, 16#2A00). --define(GL_POLYGON_OFFSET_POINT, 16#2A01). --define(GL_POLYGON_OFFSET_LINE, 16#2A02). --define(GL_POLYGON_OFFSET_FILL, 16#8037). --define(GL_POLYGON_OFFSET_FACTOR, 16#8038). --define(GL_TEXTURE_BINDING_1D, 16#8068). --define(GL_TEXTURE_BINDING_2D, 16#8069). --define(GL_TEXTURE_BINDING_3D, 16#806A). --define(GL_VERTEX_ARRAY, 16#8074). --define(GL_NORMAL_ARRAY, 16#8075). --define(GL_COLOR_ARRAY, 16#8076). --define(GL_INDEX_ARRAY, 16#8077). --define(GL_TEXTURE_COORD_ARRAY, 16#8078). --define(GL_EDGE_FLAG_ARRAY, 16#8079). --define(GL_VERTEX_ARRAY_SIZE, 16#807A). --define(GL_VERTEX_ARRAY_TYPE, 16#807B). --define(GL_VERTEX_ARRAY_STRIDE, 16#807C). --define(GL_NORMAL_ARRAY_TYPE, 16#807E). --define(GL_NORMAL_ARRAY_STRIDE, 16#807F). --define(GL_COLOR_ARRAY_SIZE, 16#8081). --define(GL_COLOR_ARRAY_TYPE, 16#8082). --define(GL_COLOR_ARRAY_STRIDE, 16#8083). --define(GL_INDEX_ARRAY_TYPE, 16#8085). --define(GL_INDEX_ARRAY_STRIDE, 16#8086). --define(GL_TEXTURE_COORD_ARRAY_SIZE, 16#8088). --define(GL_TEXTURE_COORD_ARRAY_TYPE, 16#8089). --define(GL_TEXTURE_COORD_ARRAY_STRIDE, 16#808A). --define(GL_EDGE_FLAG_ARRAY_STRIDE, 16#808C). +-define(GL_TEXTURE_WRAP_S, 16#2802). +-define(GL_TEXTURE_WRAP_T, 16#2803). +-define(GL_TEXTURE_MAG_FILTER, 16#2800). +-define(GL_TEXTURE_MIN_FILTER, 16#2801). +-define(GL_TEXTURE_ENV_COLOR, 16#2201). +-define(GL_TEXTURE_GEN_S, 16#C60). +-define(GL_TEXTURE_GEN_T, 16#C61). +-define(GL_TEXTURE_GEN_MODE, 16#2500). +-define(GL_TEXTURE_BORDER_COLOR, 16#1004). -define(GL_TEXTURE_WIDTH, 16#1000). -define(GL_TEXTURE_HEIGHT, 16#1001). --define(GL_TEXTURE_INTERNAL_FORMAT, 16#1003). --define(GL_TEXTURE_COMPONENTS, ?GL_TEXTURE_INTERNAL_FORMAT). --define(GL_TEXTURE_BORDER_COLOR, 16#1004). -define(GL_TEXTURE_BORDER, 16#1005). +-define(GL_TEXTURE_COMPONENTS, 16#1003). -define(GL_TEXTURE_RED_SIZE, 16#805C). -define(GL_TEXTURE_GREEN_SIZE, 16#805D). -define(GL_TEXTURE_BLUE_SIZE, 16#805E). -define(GL_TEXTURE_ALPHA_SIZE, 16#805F). -define(GL_TEXTURE_LUMINANCE_SIZE, 16#8060). -define(GL_TEXTURE_INTENSITY_SIZE, 16#8061). --define(GL_TEXTURE_PRIORITY, 16#8066). --define(GL_TEXTURE_RESIDENT, 16#8067). --define(GL_DONT_CARE, 16#1100). --define(GL_FASTEST, 16#1101). --define(GL_NICEST, 16#1102). --define(GL_AMBIENT, 16#1200). --define(GL_DIFFUSE, 16#1201). --define(GL_SPECULAR, 16#1202). --define(GL_POSITION, 16#1203). --define(GL_SPOT_DIRECTION, 16#1204). --define(GL_SPOT_EXPONENT, 16#1205). --define(GL_SPOT_CUTOFF, 16#1206). --define(GL_CONSTANT_ATTENUATION, 16#1207). --define(GL_LINEAR_ATTENUATION, 16#1208). --define(GL_QUADRATIC_ATTENUATION, 16#1209). --define(GL_COMPILE, 16#1300). --define(GL_COMPILE_AND_EXECUTE, 16#1301). --define(GL_BYTE, 16#1400). --define(GL_UNSIGNED_BYTE, 16#1401). --define(GL_SHORT, 16#1402). --define(GL_UNSIGNED_SHORT, 16#1403). --define(GL_INT, 16#1404). --define(GL_UNSIGNED_INT, 16#1405). --define(GL_FLOAT, 16#1406). --define(GL_2_BYTES, 16#1407). --define(GL_3_BYTES, 16#1408). --define(GL_4_BYTES, 16#1409). --define(GL_DOUBLE, 16#140A). --define(GL_DOUBLE_EXT, 16#140A). --define(GL_CLEAR, 16#1500). --define(GL_AND, 16#1501). --define(GL_AND_REVERSE, 16#1502). --define(GL_COPY, 16#1503). --define(GL_AND_INVERTED, 16#1504). --define(GL_NOOP, 16#1505). --define(GL_XOR, 16#1506). --define(GL_OR, 16#1507). --define(GL_NOR, 16#1508). --define(GL_EQUIV, 16#1509). --define(GL_INVERT, 16#150A). --define(GL_OR_REVERSE, 16#150B). --define(GL_COPY_INVERTED, 16#150C). --define(GL_OR_INVERTED, 16#150D). --define(GL_NAND, 16#150E). --define(GL_SET, 16#150F). --define(GL_EMISSION, 16#1600). --define(GL_SHININESS, 16#1601). --define(GL_AMBIENT_AND_DIFFUSE, 16#1602). --define(GL_COLOR_INDEXES, 16#1603). --define(GL_MODELVIEW, 16#1700). --define(GL_PROJECTION, 16#1701). --define(GL_TEXTURE, 16#1702). --define(GL_COLOR, 16#1800). --define(GL_DEPTH, 16#1801). --define(GL_STENCIL, 16#1802). --define(GL_COLOR_INDEX, 16#1900). --define(GL_STENCIL_INDEX, 16#1901). --define(GL_DEPTH_COMPONENT, 16#1902). --define(GL_RED, 16#1903). --define(GL_GREEN, 16#1904). --define(GL_BLUE, 16#1905). --define(GL_ALPHA, 16#1906). --define(GL_RGB, 16#1907). --define(GL_RGBA, 16#1908). --define(GL_LUMINANCE, 16#1909). --define(GL_LUMINANCE_ALPHA, 16#190A). --define(GL_BITMAP, 16#1A00). --define(GL_POINT, 16#1B00). --define(GL_LINE, 16#1B01). --define(GL_FILL, 16#1B02). --define(GL_RENDER, 16#1C00). --define(GL_FEEDBACK, 16#1C01). --define(GL_SELECT, 16#1C02). --define(GL_FLAT, 16#1D00). --define(GL_SMOOTH, 16#1D01). --define(GL_KEEP, 16#1E00). --define(GL_REPLACE, 16#1E01). --define(GL_INCR, 16#1E02). --define(GL_DECR, 16#1E03). --define(GL_VENDOR, 16#1F00). --define(GL_RENDERER, 16#1F01). --define(GL_VERSION, 16#1F02). --define(GL_EXTENSIONS, 16#1F03). --define(GL_S, 16#2000). --define(GL_T, 16#2001). --define(GL_R, 16#2002). --define(GL_Q, 16#2003). --define(GL_MODULATE, 16#2100). --define(GL_DECAL, 16#2101). --define(GL_TEXTURE_ENV_MODE, 16#2200). --define(GL_TEXTURE_ENV_COLOR, 16#2201). --define(GL_TEXTURE_ENV, 16#2300). --define(GL_EYE_LINEAR, 16#2400). +-define(GL_NEAREST_MIPMAP_NEAREST, 16#2700). +-define(GL_NEAREST_MIPMAP_LINEAR, 16#2702). +-define(GL_LINEAR_MIPMAP_NEAREST, 16#2701). +-define(GL_LINEAR_MIPMAP_LINEAR, 16#2703). -define(GL_OBJECT_LINEAR, 16#2401). --define(GL_SPHERE_MAP, 16#2402). --define(GL_TEXTURE_GEN_MODE, 16#2500). -define(GL_OBJECT_PLANE, 16#2501). +-define(GL_EYE_LINEAR, 16#2400). -define(GL_EYE_PLANE, 16#2502). +-define(GL_SPHERE_MAP, 16#2402). +-define(GL_DECAL, 16#2101). +-define(GL_MODULATE, 16#2100). -define(GL_NEAREST, 16#2600). --define(GL_LINEAR, 16#2601). --define(GL_NEAREST_MIPMAP_NEAREST, 16#2700). --define(GL_LINEAR_MIPMAP_NEAREST, 16#2701). --define(GL_NEAREST_MIPMAP_LINEAR, 16#2702). --define(GL_LINEAR_MIPMAP_LINEAR, 16#2703). --define(GL_TEXTURE_MAG_FILTER, 16#2800). --define(GL_TEXTURE_MIN_FILTER, 16#2801). --define(GL_TEXTURE_WRAP_S, 16#2802). --define(GL_TEXTURE_WRAP_T, 16#2803). +-define(GL_REPEAT, 16#2901). +-define(GL_CLAMP, 16#2900). +-define(GL_S, 16#2000). +-define(GL_T, 16#2001). +-define(GL_R, 16#2002). +-define(GL_Q, 16#2003). +-define(GL_TEXTURE_GEN_R, 16#C62). +-define(GL_TEXTURE_GEN_Q, 16#C63). +-define(GL_VENDOR, 16#1F00). +-define(GL_RENDERER, 16#1F01). +-define(GL_VERSION, 16#1F02). +-define(GL_EXTENSIONS, 16#1F03). +-define(GL_NO_ERROR, 16#0). +-define(GL_INVALID_ENUM, 16#500). +-define(GL_INVALID_VALUE, 16#501). +-define(GL_INVALID_OPERATION, 16#502). +-define(GL_STACK_OVERFLOW, 16#503). +-define(GL_STACK_UNDERFLOW, 16#504). +-define(GL_OUT_OF_MEMORY, 16#505). +-define(GL_CURRENT_BIT, 16#1). +-define(GL_POINT_BIT, 16#2). +-define(GL_LINE_BIT, 16#4). +-define(GL_POLYGON_BIT, 16#8). +-define(GL_POLYGON_STIPPLE_BIT, 16#10). +-define(GL_PIXEL_MODE_BIT, 16#20). +-define(GL_LIGHTING_BIT, 16#40). +-define(GL_FOG_BIT, 16#80). +-define(GL_DEPTH_BUFFER_BIT, 16#100). +-define(GL_ACCUM_BUFFER_BIT, 16#200). +-define(GL_STENCIL_BUFFER_BIT, 16#400). +-define(GL_VIEWPORT_BIT, 16#800). +-define(GL_TRANSFORM_BIT, 16#1000). +-define(GL_ENABLE_BIT, 16#2000). +-define(GL_COLOR_BUFFER_BIT, 16#4000). +-define(GL_HINT_BIT, 16#8000). +-define(GL_EVAL_BIT, 16#10000). +-define(GL_LIST_BIT, 16#20000). +-define(GL_TEXTURE_BIT, 16#40000). +-define(GL_SCISSOR_BIT, 16#80000). +-define(GL_ALL_ATTRIB_BITS, 16#FFFFF). -define(GL_PROXY_TEXTURE_1D, 16#8063). -define(GL_PROXY_TEXTURE_2D, 16#8064). --define(GL_CLAMP, 16#2900). --define(GL_REPEAT, 16#2901). --define(GL_R3_G3_B2, 16#2A10). +-define(GL_TEXTURE_PRIORITY, 16#8066). +-define(GL_TEXTURE_RESIDENT, 16#8067). +-define(GL_TEXTURE_BINDING_1D, 16#8068). +-define(GL_TEXTURE_BINDING_2D, 16#8069). +-define(GL_TEXTURE_INTERNAL_FORMAT, 16#1003). -define(GL_ALPHA4, 16#803B). -define(GL_ALPHA8, 16#803C). -define(GL_ALPHA12, 16#803D). @@ -515,6 +535,7 @@ -define(GL_INTENSITY8, 16#804B). -define(GL_INTENSITY12, 16#804C). -define(GL_INTENSITY16, 16#804D). +-define(GL_R3_G3_B2, 16#2A10). -define(GL_RGB4, 16#804F). -define(GL_RGB5, 16#8050). -define(GL_RGB8, 16#8051). @@ -528,51 +549,14 @@ -define(GL_RGB10_A2, 16#8059). -define(GL_RGBA12, 16#805A). -define(GL_RGBA16, 16#805B). --define(GL_V2F, 16#2A20). --define(GL_V3F, 16#2A21). --define(GL_C4UB_V2F, 16#2A22). --define(GL_C4UB_V3F, 16#2A23). --define(GL_C3F_V3F, 16#2A24). --define(GL_N3F_V3F, 16#2A25). --define(GL_C4F_N3F_V3F, 16#2A26). --define(GL_T2F_V3F, 16#2A27). --define(GL_T4F_V4F, 16#2A28). --define(GL_T2F_C4UB_V3F, 16#2A29). --define(GL_T2F_C3F_V3F, 16#2A2A). --define(GL_T2F_N3F_V3F, 16#2A2B). --define(GL_T2F_C4F_N3F_V3F, 16#2A2C). --define(GL_T4F_C4F_N3F_V4F, 16#2A2D). --define(GL_CLIP_PLANE0, 16#3000). --define(GL_CLIP_PLANE1, 16#3001). --define(GL_CLIP_PLANE2, 16#3002). --define(GL_CLIP_PLANE3, 16#3003). --define(GL_CLIP_PLANE4, 16#3004). --define(GL_CLIP_PLANE5, 16#3005). --define(GL_LIGHT0, 16#4000). --define(GL_LIGHT1, 16#4001). --define(GL_LIGHT2, 16#4002). --define(GL_LIGHT3, 16#4003). --define(GL_LIGHT4, 16#4004). --define(GL_LIGHT5, 16#4005). --define(GL_LIGHT6, 16#4006). --define(GL_LIGHT7, 16#4007). --define(GL_ABGR_EXT, 16#8000). --define(GL_FUNC_SUBTRACT_EXT, 16#800A). --define(GL_FUNC_REVERSE_SUBTRACT_EXT, 16#800B). --define(GL_UNSIGNED_BYTE_3_3_2_EXT, 16#8032). --define(GL_UNSIGNED_SHORT_4_4_4_4_EXT, 16#8033). --define(GL_UNSIGNED_SHORT_5_5_5_1_EXT, 16#8034). --define(GL_UNSIGNED_INT_8_8_8_8_EXT, 16#8035). --define(GL_UNSIGNED_INT_10_10_10_2_EXT, 16#8036). --define(GL_PACK_SKIP_IMAGES, 16#806B). --define(GL_PACK_IMAGE_HEIGHT, 16#806C). --define(GL_UNPACK_SKIP_IMAGES, 16#806D). --define(GL_UNPACK_IMAGE_HEIGHT, 16#806E). --define(GL_TEXTURE_3D, 16#806F). --define(GL_PROXY_TEXTURE_3D, 16#8070). --define(GL_TEXTURE_DEPTH, 16#8071). --define(GL_TEXTURE_WRAP_R, 16#8072). --define(GL_MAX_3D_TEXTURE_SIZE, 16#8073). +-define(GL_CLIENT_PIXEL_STORE_BIT, 16#1). +-define(GL_CLIENT_VERTEX_ARRAY_BIT, 16#2). +-define(GL_ALL_CLIENT_ATTRIB_BITS, 16#FFFFFFFF). +-define(GL_CLIENT_ALL_ATTRIB_BITS, 16#FFFFFFFF). +-define(GL_RESCALE_NORMAL, 16#803A). +-define(GL_CLAMP_TO_EDGE, 16#812F). +-define(GL_MAX_ELEMENTS_VERTICES, 16#80E8). +-define(GL_MAX_ELEMENTS_INDICES, 16#80E9). -define(GL_BGR, 16#80E0). -define(GL_BGRA, 16#80E1). -define(GL_UNSIGNED_BYTE_3_3_2, 16#8032). @@ -587,22 +571,104 @@ -define(GL_UNSIGNED_INT_8_8_8_8_REV, 16#8367). -define(GL_UNSIGNED_INT_10_10_10_2, 16#8036). -define(GL_UNSIGNED_INT_2_10_10_10_REV, 16#8368). --define(GL_RESCALE_NORMAL, 16#803A). -define(GL_LIGHT_MODEL_COLOR_CONTROL, 16#81F8). -define(GL_SINGLE_COLOR, 16#81F9). -define(GL_SEPARATE_SPECULAR_COLOR, 16#81FA). --define(GL_CLAMP_TO_EDGE, 16#812F). -define(GL_TEXTURE_MIN_LOD, 16#813A). -define(GL_TEXTURE_MAX_LOD, 16#813B). -define(GL_TEXTURE_BASE_LEVEL, 16#813C). -define(GL_TEXTURE_MAX_LEVEL, 16#813D). --define(GL_MAX_ELEMENTS_VERTICES, 16#80E8). --define(GL_MAX_ELEMENTS_INDICES, 16#80E9). +-define(GL_SMOOTH_POINT_SIZE_RANGE, 16#B12). +-define(GL_SMOOTH_POINT_SIZE_GRANULARITY, 16#B13). +-define(GL_SMOOTH_LINE_WIDTH_RANGE, 16#B22). +-define(GL_SMOOTH_LINE_WIDTH_GRANULARITY, 16#B23). -define(GL_ALIASED_POINT_SIZE_RANGE, 16#846D). -define(GL_ALIASED_LINE_WIDTH_RANGE, 16#846E). --define(GL_ACTIVE_TEXTURE, 16#84E0). --define(GL_CLIENT_ACTIVE_TEXTURE, 16#84E1). --define(GL_MAX_TEXTURE_UNITS, 16#84E2). +-define(GL_PACK_SKIP_IMAGES, 16#806B). +-define(GL_PACK_IMAGE_HEIGHT, 16#806C). +-define(GL_UNPACK_SKIP_IMAGES, 16#806D). +-define(GL_UNPACK_IMAGE_HEIGHT, 16#806E). +-define(GL_TEXTURE_3D, 16#806F). +-define(GL_PROXY_TEXTURE_3D, 16#8070). +-define(GL_TEXTURE_DEPTH, 16#8071). +-define(GL_TEXTURE_WRAP_R, 16#8072). +-define(GL_MAX_3D_TEXTURE_SIZE, 16#8073). +-define(GL_TEXTURE_BINDING_3D, 16#806A). +-define(GL_CONSTANT_COLOR, 16#8001). +-define(GL_ONE_MINUS_CONSTANT_COLOR, 16#8002). +-define(GL_CONSTANT_ALPHA, 16#8003). +-define(GL_ONE_MINUS_CONSTANT_ALPHA, 16#8004). +-define(GL_COLOR_TABLE, 16#80D0). +-define(GL_POST_CONVOLUTION_COLOR_TABLE, 16#80D1). +-define(GL_POST_COLOR_MATRIX_COLOR_TABLE, 16#80D2). +-define(GL_PROXY_COLOR_TABLE, 16#80D3). +-define(GL_PROXY_POST_CONVOLUTION_COLOR_TABLE, 16#80D4). +-define(GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE, 16#80D5). +-define(GL_COLOR_TABLE_SCALE, 16#80D6). +-define(GL_COLOR_TABLE_BIAS, 16#80D7). +-define(GL_COLOR_TABLE_FORMAT, 16#80D8). +-define(GL_COLOR_TABLE_WIDTH, 16#80D9). +-define(GL_COLOR_TABLE_RED_SIZE, 16#80DA). +-define(GL_COLOR_TABLE_GREEN_SIZE, 16#80DB). +-define(GL_COLOR_TABLE_BLUE_SIZE, 16#80DC). +-define(GL_COLOR_TABLE_ALPHA_SIZE, 16#80DD). +-define(GL_COLOR_TABLE_LUMINANCE_SIZE, 16#80DE). +-define(GL_COLOR_TABLE_INTENSITY_SIZE, 16#80DF). +-define(GL_CONVOLUTION_1D, 16#8010). +-define(GL_CONVOLUTION_2D, 16#8011). +-define(GL_SEPARABLE_2D, 16#8012). +-define(GL_CONVOLUTION_BORDER_MODE, 16#8013). +-define(GL_CONVOLUTION_FILTER_SCALE, 16#8014). +-define(GL_CONVOLUTION_FILTER_BIAS, 16#8015). +-define(GL_REDUCE, 16#8016). +-define(GL_CONVOLUTION_FORMAT, 16#8017). +-define(GL_CONVOLUTION_WIDTH, 16#8018). +-define(GL_CONVOLUTION_HEIGHT, 16#8019). +-define(GL_MAX_CONVOLUTION_WIDTH, 16#801A). +-define(GL_MAX_CONVOLUTION_HEIGHT, 16#801B). +-define(GL_POST_CONVOLUTION_RED_SCALE, 16#801C). +-define(GL_POST_CONVOLUTION_GREEN_SCALE, 16#801D). +-define(GL_POST_CONVOLUTION_BLUE_SCALE, 16#801E). +-define(GL_POST_CONVOLUTION_ALPHA_SCALE, 16#801F). +-define(GL_POST_CONVOLUTION_RED_BIAS, 16#8020). +-define(GL_POST_CONVOLUTION_GREEN_BIAS, 16#8021). +-define(GL_POST_CONVOLUTION_BLUE_BIAS, 16#8022). +-define(GL_POST_CONVOLUTION_ALPHA_BIAS, 16#8023). +-define(GL_CONSTANT_BORDER, 16#8151). +-define(GL_REPLICATE_BORDER, 16#8153). +-define(GL_CONVOLUTION_BORDER_COLOR, 16#8154). +-define(GL_COLOR_MATRIX, 16#80B1). +-define(GL_COLOR_MATRIX_STACK_DEPTH, 16#80B2). +-define(GL_MAX_COLOR_MATRIX_STACK_DEPTH, 16#80B3). +-define(GL_POST_COLOR_MATRIX_RED_SCALE, 16#80B4). +-define(GL_POST_COLOR_MATRIX_GREEN_SCALE, 16#80B5). +-define(GL_POST_COLOR_MATRIX_BLUE_SCALE, 16#80B6). +-define(GL_POST_COLOR_MATRIX_ALPHA_SCALE, 16#80B7). +-define(GL_POST_COLOR_MATRIX_RED_BIAS, 16#80B8). +-define(GL_POST_COLOR_MATRIX_GREEN_BIAS, 16#80B9). +-define(GL_POST_COLOR_MATRIX_BLUE_BIAS, 16#80BA). +-define(GL_POST_COLOR_MATRIX_ALPHA_BIAS, 16#80BB). +-define(GL_HISTOGRAM, 16#8024). +-define(GL_PROXY_HISTOGRAM, 16#8025). +-define(GL_HISTOGRAM_WIDTH, 16#8026). +-define(GL_HISTOGRAM_FORMAT, 16#8027). +-define(GL_HISTOGRAM_RED_SIZE, 16#8028). +-define(GL_HISTOGRAM_GREEN_SIZE, 16#8029). +-define(GL_HISTOGRAM_BLUE_SIZE, 16#802A). +-define(GL_HISTOGRAM_ALPHA_SIZE, 16#802B). +-define(GL_HISTOGRAM_LUMINANCE_SIZE, 16#802C). +-define(GL_HISTOGRAM_SINK, 16#802D). +-define(GL_MINMAX, 16#802E). +-define(GL_MINMAX_FORMAT, 16#802F). +-define(GL_MINMAX_SINK, 16#8030). +-define(GL_TABLE_TOO_LARGE, 16#8031). +-define(GL_BLEND_EQUATION, 16#8009). +-define(GL_MIN, 16#8007). +-define(GL_MAX, 16#8008). +-define(GL_FUNC_ADD, 16#8006). +-define(GL_FUNC_SUBTRACT, 16#800A). +-define(GL_FUNC_REVERSE_SUBTRACT, 16#800B). +-define(GL_BLEND_COLOR, 16#8005). -define(GL_TEXTURE0, 16#84C0). -define(GL_TEXTURE1, 16#84C1). -define(GL_TEXTURE2, 16#84C2). @@ -635,6 +701,9 @@ -define(GL_TEXTURE29, 16#84DD). -define(GL_TEXTURE30, 16#84DE). -define(GL_TEXTURE31, 16#84DF). +-define(GL_ACTIVE_TEXTURE, 16#84E0). +-define(GL_CLIENT_ACTIVE_TEXTURE, 16#84E1). +-define(GL_MAX_TEXTURE_UNITS, 16#84E2). -define(GL_NORMAL_MAP, 16#8511). -define(GL_REFLECTION_MAP, 16#8512). -define(GL_TEXTURE_CUBE_MAP, 16#8513). @@ -647,32 +716,6 @@ -define(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 16#851A). -define(GL_PROXY_TEXTURE_CUBE_MAP, 16#851B). -define(GL_MAX_CUBE_MAP_TEXTURE_SIZE, 16#851C). --define(GL_COMBINE, 16#8570). --define(GL_COMBINE_RGB, 16#8571). --define(GL_COMBINE_ALPHA, 16#8572). --define(GL_RGB_SCALE, 16#8573). --define(GL_ADD_SIGNED, 16#8574). --define(GL_INTERPOLATE, 16#8575). --define(GL_CONSTANT, 16#8576). --define(GL_PRIMARY_COLOR, 16#8577). --define(GL_PREVIOUS, 16#8578). --define(GL_SOURCE0_RGB, 16#8580). --define(GL_SOURCE1_RGB, 16#8581). --define(GL_SOURCE2_RGB, 16#8582). --define(GL_SOURCE0_ALPHA, 16#8588). --define(GL_SOURCE1_ALPHA, 16#8589). --define(GL_SOURCE2_ALPHA, 16#858A). --define(GL_OPERAND0_RGB, 16#8590). --define(GL_OPERAND1_RGB, 16#8591). --define(GL_OPERAND2_RGB, 16#8592). --define(GL_OPERAND0_ALPHA, 16#8598). --define(GL_OPERAND1_ALPHA, 16#8599). --define(GL_OPERAND2_ALPHA, 16#859A). --define(GL_SUBTRACT, 16#84E7). --define(GL_TRANSPOSE_MODELVIEW_MATRIX, 16#84E3). --define(GL_TRANSPOSE_PROJECTION_MATRIX, 16#84E4). --define(GL_TRANSPOSE_TEXTURE_MATRIX, 16#84E5). --define(GL_TRANSPOSE_COLOR_MATRIX, 16#84E6). -define(GL_COMPRESSED_ALPHA, 16#84E9). -define(GL_COMPRESSED_LUMINANCE, 16#84EA). -define(GL_COMPRESSED_LUMINANCE_ALPHA, 16#84EB). @@ -684,9 +727,6 @@ -define(GL_TEXTURE_COMPRESSED, 16#86A1). -define(GL_NUM_COMPRESSED_TEXTURE_FORMATS, 16#86A2). -define(GL_COMPRESSED_TEXTURE_FORMATS, 16#86A3). --define(GL_DOT3_RGB, 16#86AE). --define(GL_DOT3_RGBA, 16#86AF). --define(GL_CLAMP_TO_BORDER, 16#812D). -define(GL_MULTISAMPLE, 16#809D). -define(GL_SAMPLE_ALPHA_TO_COVERAGE, 16#809E). -define(GL_SAMPLE_ALPHA_TO_ONE, 16#809F). @@ -696,57 +736,120 @@ -define(GL_SAMPLE_COVERAGE_VALUE, 16#80AA). -define(GL_SAMPLE_COVERAGE_INVERT, 16#80AB). -define(GL_MULTISAMPLE_BIT, 16#20000000). --define(GL_VERTEX_ARRAY_EXT, 16#8074). --define(GL_NORMAL_ARRAY_EXT, 16#8075). --define(GL_COLOR_ARRAY_EXT, 16#8076). --define(GL_INDEX_ARRAY_EXT, 16#8077). --define(GL_TEXTURE_COORD_ARRAY_EXT, 16#8078). --define(GL_EDGE_FLAG_ARRAY_EXT, 16#8079). --define(GL_VERTEX_ARRAY_SIZE_EXT, 16#807A). --define(GL_VERTEX_ARRAY_TYPE_EXT, 16#807B). --define(GL_VERTEX_ARRAY_STRIDE_EXT, 16#807C). --define(GL_VERTEX_ARRAY_COUNT_EXT, 16#807D). --define(GL_NORMAL_ARRAY_TYPE_EXT, 16#807E). --define(GL_NORMAL_ARRAY_STRIDE_EXT, 16#807F). --define(GL_NORMAL_ARRAY_COUNT_EXT, 16#8080). --define(GL_COLOR_ARRAY_SIZE_EXT, 16#8081). --define(GL_COLOR_ARRAY_TYPE_EXT, 16#8082). --define(GL_COLOR_ARRAY_STRIDE_EXT, 16#8083). --define(GL_COLOR_ARRAY_COUNT_EXT, 16#8084). --define(GL_INDEX_ARRAY_TYPE_EXT, 16#8085). --define(GL_INDEX_ARRAY_STRIDE_EXT, 16#8086). --define(GL_INDEX_ARRAY_COUNT_EXT, 16#8087). --define(GL_TEXTURE_COORD_ARRAY_SIZE_EXT, 16#8088). --define(GL_TEXTURE_COORD_ARRAY_TYPE_EXT, 16#8089). --define(GL_TEXTURE_COORD_ARRAY_STRIDE_EXT, 16#808A). --define(GL_TEXTURE_COORD_ARRAY_COUNT_EXT, 16#808B). --define(GL_EDGE_FLAG_ARRAY_STRIDE_EXT, 16#808C). --define(GL_EDGE_FLAG_ARRAY_COUNT_EXT, 16#808D). --define(GL_VERTEX_ARRAY_POINTER_EXT, 16#808E). --define(GL_NORMAL_ARRAY_POINTER_EXT, 16#808F). --define(GL_COLOR_ARRAY_POINTER_EXT, 16#8090). --define(GL_INDEX_ARRAY_POINTER_EXT, 16#8091). --define(GL_TEXTURE_COORD_ARRAY_POINTER_EXT, 16#8092). --define(GL_EDGE_FLAG_ARRAY_POINTER_EXT, 16#8093). --define(GL_TEXTURE_MIN_LOD_SGIS, 16#813A). --define(GL_TEXTURE_MAX_LOD_SGIS, 16#813B). --define(GL_TEXTURE_BASE_LEVEL_SGIS, 16#813C). --define(GL_TEXTURE_MAX_LEVEL_SGIS, 16#813D). --define(GL_SHARED_TEXTURE_PALETTE_EXT, 16#81FB). --define(GL_RESCALE_NORMAL_EXT, 16#803A). --define(GL_TEXTURE_COMPARE_SGIX, 16#819A). --define(GL_TEXTURE_COMPARE_OPERATOR_SGIX, 16#819B). --define(GL_TEXTURE_LEQUAL_R_SGIX, 16#819C). --define(GL_TEXTURE_GEQUAL_R_SGIX, 16#819D). --define(GL_DEPTH_COMPONENT16_SGIX, 16#81A5). --define(GL_DEPTH_COMPONENT24_SGIX, 16#81A6). --define(GL_DEPTH_COMPONENT32_SGIX, 16#81A7). --define(GL_GENERATE_MIPMAP_SGIS, 16#8191). --define(GL_GENERATE_MIPMAP_HINT_SGIS, 16#8192). +-define(GL_TRANSPOSE_MODELVIEW_MATRIX, 16#84E3). +-define(GL_TRANSPOSE_PROJECTION_MATRIX, 16#84E4). +-define(GL_TRANSPOSE_TEXTURE_MATRIX, 16#84E5). +-define(GL_TRANSPOSE_COLOR_MATRIX, 16#84E6). +-define(GL_COMBINE, 16#8570). +-define(GL_COMBINE_RGB, 16#8571). +-define(GL_COMBINE_ALPHA, 16#8572). +-define(GL_SOURCE0_RGB, 16#8580). +-define(GL_SOURCE1_RGB, 16#8581). +-define(GL_SOURCE2_RGB, 16#8582). +-define(GL_SOURCE0_ALPHA, 16#8588). +-define(GL_SOURCE1_ALPHA, 16#8589). +-define(GL_SOURCE2_ALPHA, 16#858A). +-define(GL_OPERAND0_RGB, 16#8590). +-define(GL_OPERAND1_RGB, 16#8591). +-define(GL_OPERAND2_RGB, 16#8592). +-define(GL_OPERAND0_ALPHA, 16#8598). +-define(GL_OPERAND1_ALPHA, 16#8599). +-define(GL_OPERAND2_ALPHA, 16#859A). +-define(GL_RGB_SCALE, 16#8573). +-define(GL_ADD_SIGNED, 16#8574). +-define(GL_INTERPOLATE, 16#8575). +-define(GL_SUBTRACT, 16#84E7). +-define(GL_CONSTANT, 16#8576). +-define(GL_PRIMARY_COLOR, 16#8577). +-define(GL_PREVIOUS, 16#8578). +-define(GL_DOT3_RGB, 16#86AE). +-define(GL_DOT3_RGBA, 16#86AF). +-define(GL_CLAMP_TO_BORDER, 16#812D). +-define(GL_ARB_multitexture, 1). +-define(GL_TEXTURE0_ARB, 16#84C0). +-define(GL_TEXTURE1_ARB, 16#84C1). +-define(GL_TEXTURE2_ARB, 16#84C2). +-define(GL_TEXTURE3_ARB, 16#84C3). +-define(GL_TEXTURE4_ARB, 16#84C4). +-define(GL_TEXTURE5_ARB, 16#84C5). +-define(GL_TEXTURE6_ARB, 16#84C6). +-define(GL_TEXTURE7_ARB, 16#84C7). +-define(GL_TEXTURE8_ARB, 16#84C8). +-define(GL_TEXTURE9_ARB, 16#84C9). +-define(GL_TEXTURE10_ARB, 16#84CA). +-define(GL_TEXTURE11_ARB, 16#84CB). +-define(GL_TEXTURE12_ARB, 16#84CC). +-define(GL_TEXTURE13_ARB, 16#84CD). +-define(GL_TEXTURE14_ARB, 16#84CE). +-define(GL_TEXTURE15_ARB, 16#84CF). +-define(GL_TEXTURE16_ARB, 16#84D0). +-define(GL_TEXTURE17_ARB, 16#84D1). +-define(GL_TEXTURE18_ARB, 16#84D2). +-define(GL_TEXTURE19_ARB, 16#84D3). +-define(GL_TEXTURE20_ARB, 16#84D4). +-define(GL_TEXTURE21_ARB, 16#84D5). +-define(GL_TEXTURE22_ARB, 16#84D6). +-define(GL_TEXTURE23_ARB, 16#84D7). +-define(GL_TEXTURE24_ARB, 16#84D8). +-define(GL_TEXTURE25_ARB, 16#84D9). +-define(GL_TEXTURE26_ARB, 16#84DA). +-define(GL_TEXTURE27_ARB, 16#84DB). +-define(GL_TEXTURE28_ARB, 16#84DC). +-define(GL_TEXTURE29_ARB, 16#84DD). +-define(GL_TEXTURE30_ARB, 16#84DE). +-define(GL_TEXTURE31_ARB, 16#84DF). +-define(GL_ACTIVE_TEXTURE_ARB, 16#84E0). +-define(GL_CLIENT_ACTIVE_TEXTURE_ARB, 16#84E1). +-define(GL_MAX_TEXTURE_UNITS_ARB, 16#84E2). +-define(GL_MESA_packed_depth_stencil, 1). +-define(GL_DEPTH_STENCIL_MESA, 16#8750). +-define(GL_UNSIGNED_INT_24_8_MESA, 16#8751). +-define(GL_UNSIGNED_INT_8_24_REV_MESA, 16#8752). +-define(GL_UNSIGNED_SHORT_15_1_MESA, 16#8753). +-define(GL_UNSIGNED_SHORT_1_15_REV_MESA, 16#8754). +-define(GL_MESA_program_debug, 1). +-define(GL_FRAGMENT_PROGRAM_POSITION_MESA, 16#8BB0). +-define(GL_FRAGMENT_PROGRAM_CALLBACK_MESA, 16#8BB1). +-define(GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA, 16#8BB2). +-define(GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA, 16#8BB3). +-define(GL_VERTEX_PROGRAM_POSITION_MESA, 16#8BB4). +-define(GL_VERTEX_PROGRAM_CALLBACK_MESA, 16#8BB5). +-define(GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA, 16#8BB6). +-define(GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA, 16#8BB7). +-define(GL_MESA_texture_array, 1). +-define(GL_TEXTURE_1D_ARRAY_EXT, 16#8C18). +-define(GL_PROXY_TEXTURE_1D_ARRAY_EXT, 16#8C19). +-define(GL_TEXTURE_2D_ARRAY_EXT, 16#8C1A). +-define(GL_PROXY_TEXTURE_2D_ARRAY_EXT, 16#8C1B). +-define(GL_TEXTURE_BINDING_1D_ARRAY_EXT, 16#8C1C). +-define(GL_TEXTURE_BINDING_2D_ARRAY_EXT, 16#8C1D). +-define(GL_MAX_ARRAY_TEXTURE_LAYERS_EXT, 16#88FF). +-define(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT, 16#8CD4). +-define(GL_ATI_blend_equation_separate, 1). +-define(GL_ALPHA_BLEND_EQUATION_ATI, 16#883D). +-define(GL_OES_EGL_image, 1). +-define(GL_GLEXT_VERSION, 66). +-define(GL_BLEND_DST_RGB, 16#80C8). +-define(GL_BLEND_SRC_RGB, 16#80C9). +-define(GL_BLEND_DST_ALPHA, 16#80CA). +-define(GL_BLEND_SRC_ALPHA, 16#80CB). +-define(GL_POINT_FADE_THRESHOLD_SIZE, 16#8128). +-define(GL_DEPTH_COMPONENT16, 16#81A5). +-define(GL_DEPTH_COMPONENT24, 16#81A6). +-define(GL_DEPTH_COMPONENT32, 16#81A7). +-define(GL_MIRRORED_REPEAT, 16#8370). +-define(GL_MAX_TEXTURE_LOD_BIAS, 16#84FD). +-define(GL_TEXTURE_LOD_BIAS, 16#8501). +-define(GL_INCR_WRAP, 16#8507). +-define(GL_DECR_WRAP, 16#8508). +-define(GL_TEXTURE_DEPTH_SIZE, 16#884A). +-define(GL_TEXTURE_COMPARE_MODE, 16#884C). +-define(GL_TEXTURE_COMPARE_FUNC, 16#884D). -define(GL_POINT_SIZE_MIN, 16#8126). -define(GL_POINT_SIZE_MAX, 16#8127). --define(GL_POINT_FADE_THRESHOLD_SIZE, 16#8128). -define(GL_POINT_DISTANCE_ATTENUATION, 16#8129). +-define(GL_GENERATE_MIPMAP, 16#8191). +-define(GL_GENERATE_MIPMAP_HINT, 16#8192). -define(GL_FOG_COORDINATE_SOURCE, 16#8450). -define(GL_FOG_COORDINATE, 16#8451). -define(GL_FRAGMENT_DEPTH, 16#8452). @@ -762,101 +865,9 @@ -define(GL_SECONDARY_COLOR_ARRAY_STRIDE, 16#845C). -define(GL_SECONDARY_COLOR_ARRAY_POINTER, 16#845D). -define(GL_SECONDARY_COLOR_ARRAY, 16#845E). --define(GL_INCR_WRAP, 16#8507). --define(GL_DECR_WRAP, 16#8508). --define(GL_MAX_TEXTURE_LOD_BIAS, 16#84FD). -define(GL_TEXTURE_FILTER_CONTROL, 16#8500). --define(GL_TEXTURE_LOD_BIAS, 16#8501). --define(GL_GENERATE_MIPMAP, 16#8191). --define(GL_GENERATE_MIPMAP_HINT, 16#8192). --define(GL_BLEND_DST_RGB, 16#80C8). --define(GL_BLEND_SRC_RGB, 16#80C9). --define(GL_BLEND_DST_ALPHA, 16#80CA). --define(GL_BLEND_SRC_ALPHA, 16#80CB). --define(GL_MIRRORED_REPEAT, 16#8370). --define(GL_DEPTH_COMPONENT16, 16#81A5). --define(GL_DEPTH_COMPONENT24, 16#81A6). --define(GL_DEPTH_COMPONENT32, 16#81A7). --define(GL_TEXTURE_DEPTH_SIZE, 16#884A). -define(GL_DEPTH_TEXTURE_MODE, 16#884B). --define(GL_TEXTURE_COMPARE_MODE, 16#884C). --define(GL_TEXTURE_COMPARE_FUNC, 16#884D). -define(GL_COMPARE_R_TO_TEXTURE, 16#884E). --define(GL_GLEXT_VERSION, 65). --define(GL_CONSTANT_COLOR, 16#8001). --define(GL_ONE_MINUS_CONSTANT_COLOR, 16#8002). --define(GL_CONSTANT_ALPHA, 16#8003). --define(GL_ONE_MINUS_CONSTANT_ALPHA, 16#8004). --define(GL_BLEND_COLOR, 16#8005). --define(GL_FUNC_ADD, 16#8006). --define(GL_MIN, 16#8007). --define(GL_MAX, 16#8008). --define(GL_BLEND_EQUATION, 16#8009). --define(GL_FUNC_SUBTRACT, 16#800A). --define(GL_FUNC_REVERSE_SUBTRACT, 16#800B). --define(GL_CONVOLUTION_1D, 16#8010). --define(GL_CONVOLUTION_2D, 16#8011). --define(GL_SEPARABLE_2D, 16#8012). --define(GL_CONVOLUTION_BORDER_MODE, 16#8013). --define(GL_CONVOLUTION_FILTER_SCALE, 16#8014). --define(GL_CONVOLUTION_FILTER_BIAS, 16#8015). --define(GL_REDUCE, 16#8016). --define(GL_CONVOLUTION_FORMAT, 16#8017). --define(GL_CONVOLUTION_WIDTH, 16#8018). --define(GL_CONVOLUTION_HEIGHT, 16#8019). --define(GL_MAX_CONVOLUTION_WIDTH, 16#801A). --define(GL_MAX_CONVOLUTION_HEIGHT, 16#801B). --define(GL_POST_CONVOLUTION_RED_SCALE, 16#801C). --define(GL_POST_CONVOLUTION_GREEN_SCALE, 16#801D). --define(GL_POST_CONVOLUTION_BLUE_SCALE, 16#801E). --define(GL_POST_CONVOLUTION_ALPHA_SCALE, 16#801F). --define(GL_POST_CONVOLUTION_RED_BIAS, 16#8020). --define(GL_POST_CONVOLUTION_GREEN_BIAS, 16#8021). --define(GL_POST_CONVOLUTION_BLUE_BIAS, 16#8022). --define(GL_POST_CONVOLUTION_ALPHA_BIAS, 16#8023). --define(GL_HISTOGRAM, 16#8024). --define(GL_PROXY_HISTOGRAM, 16#8025). --define(GL_HISTOGRAM_WIDTH, 16#8026). --define(GL_HISTOGRAM_FORMAT, 16#8027). --define(GL_HISTOGRAM_RED_SIZE, 16#8028). --define(GL_HISTOGRAM_GREEN_SIZE, 16#8029). --define(GL_HISTOGRAM_BLUE_SIZE, 16#802A). --define(GL_HISTOGRAM_ALPHA_SIZE, 16#802B). --define(GL_HISTOGRAM_LUMINANCE_SIZE, 16#802C). --define(GL_HISTOGRAM_SINK, 16#802D). --define(GL_MINMAX, 16#802E). --define(GL_MINMAX_FORMAT, 16#802F). --define(GL_MINMAX_SINK, 16#8030). --define(GL_COLOR_MATRIX, 16#80B1). --define(GL_COLOR_MATRIX_STACK_DEPTH, 16#80B2). --define(GL_MAX_COLOR_MATRIX_STACK_DEPTH, 16#80B3). --define(GL_POST_COLOR_MATRIX_RED_SCALE, 16#80B4). --define(GL_POST_COLOR_MATRIX_GREEN_SCALE, 16#80B5). --define(GL_POST_COLOR_MATRIX_BLUE_SCALE, 16#80B6). --define(GL_POST_COLOR_MATRIX_ALPHA_SCALE, 16#80B7). --define(GL_POST_COLOR_MATRIX_RED_BIAS, 16#80B8). --define(GL_POST_COLOR_MATRIX_GREEN_BIAS, 16#80B9). --define(GL_POST_COLOR_MATRIX_BLUE_BIAS, 16#80BA). --define(GL_POST_COLOR_MATRIX_ALPHA_BIAS, 16#80BB). --define(GL_COLOR_TABLE, 16#80D0). --define(GL_POST_CONVOLUTION_COLOR_TABLE, 16#80D1). --define(GL_POST_COLOR_MATRIX_COLOR_TABLE, 16#80D2). --define(GL_PROXY_COLOR_TABLE, 16#80D3). --define(GL_PROXY_POST_CONVOLUTION_COLOR_TABLE, 16#80D4). --define(GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE, 16#80D5). --define(GL_COLOR_TABLE_SCALE, 16#80D6). --define(GL_COLOR_TABLE_BIAS, 16#80D7). --define(GL_COLOR_TABLE_FORMAT, 16#80D8). --define(GL_COLOR_TABLE_WIDTH, 16#80D9). --define(GL_COLOR_TABLE_RED_SIZE, 16#80DA). --define(GL_COLOR_TABLE_GREEN_SIZE, 16#80DB). --define(GL_COLOR_TABLE_BLUE_SIZE, 16#80DC). --define(GL_COLOR_TABLE_ALPHA_SIZE, 16#80DD). --define(GL_COLOR_TABLE_LUMINANCE_SIZE, 16#80DE). --define(GL_COLOR_TABLE_INTENSITY_SIZE, 16#80DF). --define(GL_CONSTANT_BORDER, 16#8151). --define(GL_REPLICATE_BORDER, 16#8153). --define(GL_CONVOLUTION_BORDER_COLOR, 16#8154). -define(GL_BUFFER_SIZE, 16#8764). -define(GL_BUFFER_USAGE, 16#8765). -define(GL_QUERY_COUNTER_BITS, 16#8864). @@ -1184,41 +1195,6 @@ -define(GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW, 16#900D). -define(GL_INT_SAMPLER_CUBE_MAP_ARRAY, 16#900E). -define(GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY, 16#900F). --define(GL_TEXTURE0_ARB, 16#84C0). --define(GL_TEXTURE1_ARB, 16#84C1). --define(GL_TEXTURE2_ARB, 16#84C2). --define(GL_TEXTURE3_ARB, 16#84C3). --define(GL_TEXTURE4_ARB, 16#84C4). --define(GL_TEXTURE5_ARB, 16#84C5). --define(GL_TEXTURE6_ARB, 16#84C6). --define(GL_TEXTURE7_ARB, 16#84C7). --define(GL_TEXTURE8_ARB, 16#84C8). --define(GL_TEXTURE9_ARB, 16#84C9). --define(GL_TEXTURE10_ARB, 16#84CA). --define(GL_TEXTURE11_ARB, 16#84CB). --define(GL_TEXTURE12_ARB, 16#84CC). --define(GL_TEXTURE13_ARB, 16#84CD). --define(GL_TEXTURE14_ARB, 16#84CE). --define(GL_TEXTURE15_ARB, 16#84CF). --define(GL_TEXTURE16_ARB, 16#84D0). --define(GL_TEXTURE17_ARB, 16#84D1). --define(GL_TEXTURE18_ARB, 16#84D2). --define(GL_TEXTURE19_ARB, 16#84D3). --define(GL_TEXTURE20_ARB, 16#84D4). --define(GL_TEXTURE21_ARB, 16#84D5). --define(GL_TEXTURE22_ARB, 16#84D6). --define(GL_TEXTURE23_ARB, 16#84D7). --define(GL_TEXTURE24_ARB, 16#84D8). --define(GL_TEXTURE25_ARB, 16#84D9). --define(GL_TEXTURE26_ARB, 16#84DA). --define(GL_TEXTURE27_ARB, 16#84DB). --define(GL_TEXTURE28_ARB, 16#84DC). --define(GL_TEXTURE29_ARB, 16#84DD). --define(GL_TEXTURE30_ARB, 16#84DE). --define(GL_TEXTURE31_ARB, 16#84DF). --define(GL_ACTIVE_TEXTURE_ARB, 16#84E0). --define(GL_CLIENT_ACTIVE_TEXTURE_ARB, 16#84E1). --define(GL_MAX_TEXTURE_UNITS_ARB, 16#84E2). -define(GL_TRANSPOSE_MODELVIEW_MATRIX_ARB, 16#84E3). -define(GL_TRANSPOSE_PROJECTION_MATRIX_ARB, 16#84E4). -define(GL_TRANSPOSE_TEXTURE_MATRIX_ARB, 16#84E5). @@ -1956,6 +1932,7 @@ -define(GL_UNKNOWN_CONTEXT_RESET_ARB, 16#8255). -define(GL_RESET_NOTIFICATION_STRATEGY_ARB, 16#8256). -define(GL_NO_RESET_NOTIFICATION_ARB, 16#8261). +-define(GL_ABGR_EXT, 16#8000). -define(GL_CONSTANT_COLOR_EXT, 16#8001). -define(GL_ONE_MINUS_CONSTANT_COLOR_EXT, 16#8002). -define(GL_CONSTANT_ALPHA_EXT, 16#8003). @@ -2118,6 +2095,15 @@ -define(GL_LINEAR_SHARPEN_ALPHA_SGIS, 16#80AE). -define(GL_LINEAR_SHARPEN_COLOR_SGIS, 16#80AF). -define(GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS, 16#80B0). +-define(GL_UNSIGNED_BYTE_3_3_2_EXT, 16#8032). +-define(GL_UNSIGNED_SHORT_4_4_4_4_EXT, 16#8033). +-define(GL_UNSIGNED_SHORT_5_5_5_1_EXT, 16#8034). +-define(GL_UNSIGNED_INT_8_8_8_8_EXT, 16#8035). +-define(GL_UNSIGNED_INT_10_10_10_2_EXT, 16#8036). +-define(GL_TEXTURE_MIN_LOD_SGIS, 16#813A). +-define(GL_TEXTURE_MAX_LOD_SGIS, 16#813B). +-define(GL_TEXTURE_BASE_LEVEL_SGIS, 16#813C). +-define(GL_TEXTURE_MAX_LEVEL_SGIS, 16#813D). -define(GL_MULTISAMPLE_SGIS, 16#809D). -define(GL_SAMPLE_ALPHA_TO_MASK_SGIS, 16#809E). -define(GL_SAMPLE_ALPHA_TO_ONE_SGIS, 16#809F). @@ -2134,6 +2120,41 @@ -define(GL_SAMPLE_MASK_VALUE_SGIS, 16#80AA). -define(GL_SAMPLE_MASK_INVERT_SGIS, 16#80AB). -define(GL_SAMPLE_PATTERN_SGIS, 16#80AC). +-define(GL_RESCALE_NORMAL_EXT, 16#803A). +-define(GL_VERTEX_ARRAY_EXT, 16#8074). +-define(GL_NORMAL_ARRAY_EXT, 16#8075). +-define(GL_COLOR_ARRAY_EXT, 16#8076). +-define(GL_INDEX_ARRAY_EXT, 16#8077). +-define(GL_TEXTURE_COORD_ARRAY_EXT, 16#8078). +-define(GL_EDGE_FLAG_ARRAY_EXT, 16#8079). +-define(GL_VERTEX_ARRAY_SIZE_EXT, 16#807A). +-define(GL_VERTEX_ARRAY_TYPE_EXT, 16#807B). +-define(GL_VERTEX_ARRAY_STRIDE_EXT, 16#807C). +-define(GL_VERTEX_ARRAY_COUNT_EXT, 16#807D). +-define(GL_NORMAL_ARRAY_TYPE_EXT, 16#807E). +-define(GL_NORMAL_ARRAY_STRIDE_EXT, 16#807F). +-define(GL_NORMAL_ARRAY_COUNT_EXT, 16#8080). +-define(GL_COLOR_ARRAY_SIZE_EXT, 16#8081). +-define(GL_COLOR_ARRAY_TYPE_EXT, 16#8082). +-define(GL_COLOR_ARRAY_STRIDE_EXT, 16#8083). +-define(GL_COLOR_ARRAY_COUNT_EXT, 16#8084). +-define(GL_INDEX_ARRAY_TYPE_EXT, 16#8085). +-define(GL_INDEX_ARRAY_STRIDE_EXT, 16#8086). +-define(GL_INDEX_ARRAY_COUNT_EXT, 16#8087). +-define(GL_TEXTURE_COORD_ARRAY_SIZE_EXT, 16#8088). +-define(GL_TEXTURE_COORD_ARRAY_TYPE_EXT, 16#8089). +-define(GL_TEXTURE_COORD_ARRAY_STRIDE_EXT, 16#808A). +-define(GL_TEXTURE_COORD_ARRAY_COUNT_EXT, 16#808B). +-define(GL_EDGE_FLAG_ARRAY_STRIDE_EXT, 16#808C). +-define(GL_EDGE_FLAG_ARRAY_COUNT_EXT, 16#808D). +-define(GL_VERTEX_ARRAY_POINTER_EXT, 16#808E). +-define(GL_NORMAL_ARRAY_POINTER_EXT, 16#808F). +-define(GL_COLOR_ARRAY_POINTER_EXT, 16#8090). +-define(GL_INDEX_ARRAY_POINTER_EXT, 16#8091). +-define(GL_TEXTURE_COORD_ARRAY_POINTER_EXT, 16#8092). +-define(GL_EDGE_FLAG_ARRAY_POINTER_EXT, 16#8093). +-define(GL_GENERATE_MIPMAP_SGIS, 16#8191). +-define(GL_GENERATE_MIPMAP_HINT_SGIS, 16#8192). -define(GL_LINEAR_CLIPMAP_LINEAR_SGIX, 16#8170). -define(GL_TEXTURE_CLIPMAP_CENTER_SGIX, 16#8171). -define(GL_TEXTURE_CLIPMAP_FRAME_SGIX, 16#8172). @@ -2146,12 +2167,18 @@ -define(GL_NEAREST_CLIPMAP_NEAREST_SGIX, 16#844D). -define(GL_NEAREST_CLIPMAP_LINEAR_SGIX, 16#844E). -define(GL_LINEAR_CLIPMAP_NEAREST_SGIX, 16#844F). +-define(GL_TEXTURE_COMPARE_SGIX, 16#819A). +-define(GL_TEXTURE_COMPARE_OPERATOR_SGIX, 16#819B). +-define(GL_TEXTURE_LEQUAL_R_SGIX, 16#819C). +-define(GL_TEXTURE_GEQUAL_R_SGIX, 16#819D). -define(GL_CLAMP_TO_EDGE_SGIS, 16#812F). -define(GL_CLAMP_TO_BORDER_SGIS, 16#812D). -define(GL_FUNC_ADD_EXT, 16#8006). -define(GL_MIN_EXT, 16#8007). -define(GL_MAX_EXT, 16#8008). -define(GL_BLEND_EQUATION_EXT, 16#8009). +-define(GL_FUNC_SUBTRACT_EXT, 16#800A). +-define(GL_FUNC_REVERSE_SUBTRACT_EXT, 16#800B). -define(GL_INTERLACE_SGIX, 16#8094). -define(GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX, 16#813E). -define(GL_PIXEL_TILE_CACHE_INCREMENT_SGIX, 16#813F). @@ -2216,6 +2243,9 @@ -define(GL_MAX_DEFORMATION_ORDER_SGIX, 16#8197). -define(GL_REFERENCE_PLANE_SGIX, 16#817D). -define(GL_REFERENCE_PLANE_EQUATION_SGIX, 16#817E). +-define(GL_DEPTH_COMPONENT16_SGIX, 16#81A5). +-define(GL_DEPTH_COMPONENT24_SGIX, 16#81A6). +-define(GL_DEPTH_COMPONENT32_SGIX, 16#81A7). -define(GL_FOG_FUNC_SGIS, 16#812A). -define(GL_FOG_FUNC_POINTS_SGIS, 16#812B). -define(GL_MAX_FOG_FUNC_POINTS_SGIS, 16#812C). @@ -2393,6 +2423,7 @@ -define(GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT, 16#8336). -define(GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT, 16#8337). -define(GL_PIXEL_TRANSFORM_2D_MATRIX_EXT, 16#8338). +-define(GL_SHARED_TEXTURE_PALETTE_EXT, 16#81FB). -define(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, 16#81F8). -define(GL_SINGLE_COLOR_EXT, 16#81F9). -define(GL_SEPARATE_SPECULAR_COLOR_EXT, 16#81FA). @@ -3387,7 +3418,6 @@ -define(GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT, 16#8DA7). -define(GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT, 16#8DA8). -define(GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT, 16#8DA9). --define(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT, 16#8CD4). -define(GL_PROGRAM_POINT_SIZE_EXT, 16#8642). -define(GL_GEOMETRY_SHADER_EXT, 16#8DD9). -define(GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT, 16#8DDD). @@ -3425,13 +3455,6 @@ -define(GL_R11F_G11F_B10F_EXT, 16#8C3A). -define(GL_UNSIGNED_INT_10F_11F_11F_REV_EXT, 16#8C3B). -define(GL_RGBA_SIGNED_COMPONENTS_EXT, 16#8C3C). --define(GL_TEXTURE_1D_ARRAY_EXT, 16#8C18). --define(GL_PROXY_TEXTURE_1D_ARRAY_EXT, 16#8C19). --define(GL_TEXTURE_2D_ARRAY_EXT, 16#8C1A). --define(GL_PROXY_TEXTURE_2D_ARRAY_EXT, 16#8C1B). --define(GL_TEXTURE_BINDING_1D_ARRAY_EXT, 16#8C1C). --define(GL_TEXTURE_BINDING_2D_ARRAY_EXT, 16#8C1D). --define(GL_MAX_ARRAY_TEXTURE_LAYERS_EXT, 16#88FF). -define(GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT, 16#884E). -define(GL_TEXTURE_BUFFER_EXT, 16#8C2A). -define(GL_MAX_TEXTURE_BUFFER_SIZE_EXT, 16#8C2B). @@ -3857,396 +3880,5 @@ -define(GL_SURFACE_REGISTERED_NV, 16#86FD). -define(GL_SURFACE_MAPPED_NV, 16#8700). -define(GL_WRITE_DISCARD_NV, 16#88BE). --define(GL_VERSION_1_2, 1). --define(GL_VERSION_1_2_DEPRECATED, 1). --define(GL_VERSION_1_3, 1). --define(GL_VERSION_1_3_DEPRECATED, 1). --define(GL_VERSION_1_4, 1). --define(GL_VERSION_1_4_DEPRECATED, 1). --define(GL_VERSION_1_5, 1). --define(GL_VERSION_2_0, 1). --define(GL_VERSION_2_1, 1). --define(GL_VERSION_3_0, 1). --define(GL_VERSION_3_1, 1). --define(GL_VERSION_3_2, 1). --define(GL_VERSION_3_3, 1). --define(GL_VERSION_4_0, 1). --define(GL_VERSION_4_1, 1). --define(GL_ARB_multitexture, 1). --define(GL_ARB_transpose_matrix, 1). --define(GL_ARB_multisample, 1). --define(GL_ARB_texture_env_add, 1). --define(GL_ARB_texture_cube_map, 1). --define(GL_ARB_texture_compression, 1). --define(GL_ARB_texture_border_clamp, 1). --define(GL_ARB_point_parameters, 1). --define(GL_ARB_vertex_blend, 1). --define(GL_ARB_matrix_palette, 1). --define(GL_ARB_texture_env_combine, 1). --define(GL_ARB_texture_env_crossbar, 1). --define(GL_ARB_texture_env_dot3, 1). --define(GL_ARB_texture_mirrored_repeat, 1). --define(GL_ARB_depth_texture, 1). --define(GL_ARB_shadow, 1). --define(GL_ARB_shadow_ambient, 1). --define(GL_ARB_window_pos, 1). --define(GL_ARB_vertex_program, 1). --define(GL_ARB_fragment_program, 1). --define(GL_ARB_vertex_buffer_object, 1). --define(GL_ARB_occlusion_query, 1). --define(GL_ARB_shader_objects, 1). --define(GL_ARB_vertex_shader, 1). --define(GL_ARB_fragment_shader, 1). --define(GL_ARB_shading_language_100, 1). --define(GL_ARB_texture_non_power_of_two, 1). --define(GL_ARB_point_sprite, 1). --define(GL_ARB_fragment_program_shadow, 1). --define(GL_ARB_draw_buffers, 1). --define(GL_ARB_texture_rectangle, 1). --define(GL_ARB_color_buffer_float, 1). --define(GL_ARB_half_float_pixel, 1). --define(GL_ARB_texture_float, 1). --define(GL_ARB_pixel_buffer_object, 1). --define(GL_ARB_depth_buffer_float, 1). --define(GL_ARB_draw_instanced, 1). --define(GL_ARB_framebuffer_object, 1). --define(GL_ARB_framebuffer_sRGB, 1). --define(GL_ARB_geometry_shader4, 1). --define(GL_ARB_half_float_vertex, 1). --define(GL_ARB_instanced_arrays, 1). --define(GL_ARB_map_buffer_range, 1). --define(GL_ARB_texture_buffer_object, 1). --define(GL_ARB_texture_compression_rgtc, 1). --define(GL_ARB_texture_rg, 1). --define(GL_ARB_vertex_array_object, 1). --define(GL_ARB_uniform_buffer_object, 1). --define(GL_ARB_compatibility, 1). --define(GL_ARB_copy_buffer, 1). --define(GL_ARB_shader_texture_lod, 1). --define(GL_ARB_depth_clamp, 1). --define(GL_ARB_draw_elements_base_vertex, 1). --define(GL_ARB_fragment_coord_conventions, 1). --define(GL_ARB_provoking_vertex, 1). --define(GL_ARB_seamless_cube_map, 1). --define(GL_ARB_sync, 1). --define(GL_ARB_texture_multisample, 1). --define(GL_ARB_vertex_array_bgra, 1). --define(GL_ARB_draw_buffers_blend, 1). --define(GL_ARB_sample_shading, 1). --define(GL_ARB_texture_cube_map_array, 1). --define(GL_ARB_texture_gather, 1). --define(GL_ARB_texture_query_lod, 1). --define(GL_ARB_shading_language_include, 1). --define(GL_ARB_texture_compression_bptc, 1). --define(GL_ARB_blend_func_extended, 1). --define(GL_ARB_explicit_attrib_location, 1). --define(GL_ARB_occlusion_query2, 1). --define(GL_ARB_sampler_objects, 1). --define(GL_ARB_texture_rgb10_a2ui, 1). --define(GL_ARB_texture_swizzle, 1). --define(GL_ARB_timer_query, 1). --define(GL_ARB_vertex_type_2_10_10_10_rev, 1). --define(GL_ARB_draw_indirect, 1). --define(GL_ARB_gpu_shader5, 1). --define(GL_ARB_gpu_shader_fp64, 1). --define(GL_ARB_shader_subroutine, 1). --define(GL_ARB_tessellation_shader, 1). --define(GL_ARB_texture_buffer_object_rgb32, 1). --define(GL_ARB_transform_feedback2, 1). --define(GL_ARB_transform_feedback3, 1). --define(GL_ARB_ES2_compatibility, 1). --define(GL_ARB_get_program_binary, 1). --define(GL_ARB_separate_shader_objects, 1). --define(GL_ARB_vertex_attrib_64bit, 1). --define(GL_ARB_viewport_array, 1). --define(GL_ARB_cl_event, 1). --define(GL_ARB_debug_output, 1). --define(GL_ARB_robustness, 1). --define(GL_ARB_shader_stencil_export, 1). --define(GL_EXT_abgr, 1). --define(GL_EXT_blend_color, 1). --define(GL_EXT_polygon_offset, 1). --define(GL_EXT_texture, 1). --define(GL_EXT_texture3D, 1). --define(GL_SGIS_texture_filter4, 1). --define(GL_EXT_subtexture, 1). --define(GL_EXT_copy_texture, 1). --define(GL_EXT_histogram, 1). --define(GL_EXT_convolution, 1). --define(GL_SGI_color_matrix, 1). --define(GL_SGI_color_table, 1). --define(GL_SGIX_pixel_texture, 1). --define(GL_SGIS_pixel_texture, 1). --define(GL_SGIS_texture4D, 1). --define(GL_SGI_texture_color_table, 1). --define(GL_EXT_cmyka, 1). --define(GL_EXT_texture_object, 1). --define(GL_SGIS_detail_texture, 1). --define(GL_SGIS_sharpen_texture, 1). --define(GL_EXT_packed_pixels, 1). --define(GL_SGIS_texture_lod, 1). --define(GL_SGIS_multisample, 1). --define(GL_EXT_rescale_normal, 1). --define(GL_EXT_vertex_array, 1). --define(GL_EXT_misc_attribute, 1). --define(GL_SGIS_generate_mipmap, 1). --define(GL_SGIX_clipmap, 1). --define(GL_SGIX_shadow, 1). --define(GL_SGIS_texture_edge_clamp, 1). --define(GL_SGIS_texture_border_clamp, 1). --define(GL_EXT_blend_minmax, 1). --define(GL_EXT_blend_subtract, 1). --define(GL_EXT_blend_logic_op, 1). --define(GL_SGIX_interlace, 1). --define(GL_SGIX_pixel_tiles, 1). --define(GL_SGIX_texture_select, 1). --define(GL_SGIX_sprite, 1). --define(GL_SGIX_texture_multi_buffer, 1). --define(GL_EXT_point_parameters, 1). --define(GL_SGIS_point_parameters, 1). --define(GL_SGIX_instruments, 1). --define(GL_SGIX_texture_scale_bias, 1). --define(GL_SGIX_framezoom, 1). --define(GL_SGIX_tag_sample_buffer, 1). --define(GL_SGIX_polynomial_ffd, 1). --define(GL_SGIX_reference_plane, 1). --define(GL_SGIX_flush_raster, 1). --define(GL_SGIX_depth_texture, 1). --define(GL_SGIS_fog_function, 1). --define(GL_SGIX_fog_offset, 1). --define(GL_HP_image_transform, 1). --define(GL_HP_convolution_border_modes, 1). --define(GL_SGIX_texture_add_env, 1). --define(GL_EXT_color_subtable, 1). --define(GL_PGI_vertex_hints, 1). --define(GL_PGI_misc_hints, 1). --define(GL_EXT_paletted_texture, 1). --define(GL_EXT_clip_volume_hint, 1). --define(GL_SGIX_list_priority, 1). --define(GL_SGIX_ir_instrument1, 1). --define(GL_SGIX_calligraphic_fragment, 1). --define(GL_SGIX_texture_lod_bias, 1). --define(GL_SGIX_shadow_ambient, 1). --define(GL_EXT_index_texture, 1). --define(GL_EXT_index_material, 1). --define(GL_EXT_index_func, 1). --define(GL_EXT_index_array_formats, 1). --define(GL_EXT_compiled_vertex_array, 1). --define(GL_EXT_cull_vertex, 1). --define(GL_SGIX_ycrcb, 1). --define(GL_SGIX_fragment_lighting, 1). --define(GL_IBM_rasterpos_clip, 1). --define(GL_HP_texture_lighting, 1). --define(GL_EXT_draw_range_elements, 1). --define(GL_WIN_phong_shading, 1). --define(GL_WIN_specular_fog, 1). --define(GL_EXT_light_texture, 1). --define(GL_SGIX_blend_alpha_minmax, 1). --define(GL_EXT_bgra, 1). --define(GL_SGIX_async, 1). --define(GL_SGIX_async_pixel, 1). --define(GL_SGIX_async_histogram, 1). --define(GL_INTEL_parallel_arrays, 1). --define(GL_HP_occlusion_test, 1). --define(GL_EXT_pixel_transform, 1). --define(GL_EXT_pixel_transform_color_table, 1). --define(GL_EXT_shared_texture_palette, 1). --define(GL_EXT_separate_specular_color, 1). --define(GL_EXT_secondary_color, 1). --define(GL_EXT_texture_perturb_normal, 1). --define(GL_EXT_multi_draw_arrays, 1). --define(GL_EXT_fog_coord, 1). --define(GL_REND_screen_coordinates, 1). --define(GL_EXT_coordinate_frame, 1). --define(GL_EXT_texture_env_combine, 1). --define(GL_APPLE_specular_vector, 1). --define(GL_APPLE_transform_hint, 1). --define(GL_SGIX_fog_scale, 1). --define(GL_SUNX_constant_data, 1). --define(GL_SUN_global_alpha, 1). --define(GL_SUN_triangle_list, 1). --define(GL_SUN_vertex, 1). --define(GL_EXT_blend_func_separate, 1). --define(GL_INGR_blend_func_separate, 1). --define(GL_INGR_color_clamp, 1). --define(GL_INGR_interlace_read, 1). --define(GL_EXT_stencil_wrap, 1). --define(GL_EXT_422_pixels, 1). --define(GL_NV_texgen_reflection, 1). --define(GL_SUN_convolution_border_modes, 1). --define(GL_EXT_texture_env_add, 1). --define(GL_EXT_texture_lod_bias, 1). --define(GL_EXT_texture_filter_anisotropic, 1). --define(GL_EXT_vertex_weighting, 1). --define(GL_NV_light_max_exponent, 1). --define(GL_NV_vertex_array_range, 1). --define(GL_NV_register_combiners, 1). --define(GL_NV_fog_distance, 1). --define(GL_NV_texgen_emboss, 1). --define(GL_NV_blend_square, 1). --define(GL_NV_texture_env_combine4, 1). --define(GL_MESA_resize_buffers, 1). --define(GL_MESA_window_pos, 1). --define(GL_IBM_cull_vertex, 1). --define(GL_IBM_multimode_draw_arrays, 1). --define(GL_IBM_vertex_array_lists, 1). --define(GL_SGIX_subsample, 1). --define(GL_SGIX_ycrcba, 1). --define(GL_SGIX_ycrcb_subsample, 1). --define(GL_SGIX_depth_pass_instrument, 1). --define(GL_3DFX_texture_compression_FXT1, 1). --define(GL_3DFX_multisample, 1). --define(GL_3DFX_tbuffer, 1). --define(GL_EXT_multisample, 1). --define(GL_SGIX_vertex_preclip, 1). --define(GL_SGIX_convolution_accuracy, 1). --define(GL_SGIX_resample, 1). --define(GL_SGIS_point_line_texgen, 1). --define(GL_SGIS_texture_color_mask, 1). --define(GL_SGIX_igloo_interface, 1). --define(GL_EXT_texture_env_dot3, 1). --define(GL_ATI_texture_mirror_once, 1). --define(GL_NV_fence, 1). --define(GL_NV_evaluators, 1). --define(GL_NV_packed_depth_stencil, 1). --define(GL_NV_register_combiners2, 1). --define(GL_NV_texture_compression_vtc, 1). --define(GL_NV_texture_rectangle, 1). --define(GL_NV_texture_shader, 1). --define(GL_NV_texture_shader2, 1). --define(GL_NV_vertex_array_range2, 1). --define(GL_NV_vertex_program, 1). --define(GL_SGIX_texture_coordinate_clamp, 1). --define(GL_SGIX_scalebias_hint, 1). --define(GL_OML_interlace, 1). --define(GL_OML_subsample, 1). --define(GL_OML_resample, 1). --define(GL_NV_copy_depth_to_color, 1). --define(GL_ATI_envmap_bumpmap, 1). --define(GL_ATI_fragment_shader, 1). --define(GL_ATI_pn_triangles, 1). --define(GL_ATI_vertex_array_object, 1). --define(GL_EXT_vertex_shader, 1). --define(GL_ATI_vertex_streams, 1). --define(GL_ATI_element_array, 1). --define(GL_SUN_mesh_array, 1). --define(GL_SUN_slice_accum, 1). --define(GL_NV_multisample_filter_hint, 1). --define(GL_NV_depth_clamp, 1). --define(GL_NV_occlusion_query, 1). --define(GL_NV_point_sprite, 1). --define(GL_NV_texture_shader3, 1). --define(GL_NV_vertex_program1_1, 1). --define(GL_EXT_shadow_funcs, 1). --define(GL_EXT_stencil_two_side, 1). --define(GL_ATI_text_fragment_shader, 1). --define(GL_APPLE_client_storage, 1). --define(GL_APPLE_element_array, 1). --define(GL_APPLE_fence, 1). --define(GL_APPLE_vertex_array_object, 1). --define(GL_APPLE_vertex_array_range, 1). --define(GL_APPLE_ycbcr_422, 1). --define(GL_S3_s3tc, 1). --define(GL_ATI_draw_buffers, 1). --define(GL_ATI_pixel_format_float, 1). --define(GL_ATI_texture_env_combine3, 1). --define(GL_ATI_texture_float, 1). --define(GL_NV_float_buffer, 1). --define(GL_NV_fragment_program, 1). --define(GL_NV_half_float, 1). --define(GL_NV_pixel_data_range, 1). --define(GL_NV_primitive_restart, 1). --define(GL_NV_texture_expand_normal, 1). --define(GL_NV_vertex_program2, 1). --define(GL_ATI_map_object_buffer, 1). --define(GL_ATI_separate_stencil, 1). --define(GL_ATI_vertex_attrib_array_object, 1). --define(GL_OES_read_format, 1). --define(GL_EXT_depth_bounds_test, 1). --define(GL_EXT_texture_mirror_clamp, 1). --define(GL_EXT_blend_equation_separate, 1). --define(GL_MESA_pack_invert, 1). --define(GL_MESA_ycbcr_texture, 1). --define(GL_EXT_pixel_buffer_object, 1). --define(GL_NV_fragment_program_option, 1). --define(GL_NV_fragment_program2, 1). --define(GL_NV_vertex_program2_option, 1). --define(GL_NV_vertex_program3, 1). --define(GL_EXT_framebuffer_object, 1). --define(GL_GREMEDY_string_marker, 1). --define(GL_EXT_packed_depth_stencil, 1). --define(GL_EXT_stencil_clear_tag, 1). --define(GL_EXT_texture_sRGB, 1). --define(GL_EXT_framebuffer_blit, 1). --define(GL_EXT_framebuffer_multisample, 1). --define(GL_MESAX_texture_stack, 1). --define(GL_EXT_timer_query, 1). --define(GL_EXT_gpu_program_parameters, 1). --define(GL_APPLE_flush_buffer_range, 1). --define(GL_NV_gpu_program4, 1). --define(GL_NV_geometry_program4, 1). --define(GL_EXT_geometry_shader4, 1). --define(GL_NV_vertex_program4, 1). --define(GL_EXT_gpu_shader4, 1). --define(GL_EXT_draw_instanced, 1). --define(GL_EXT_packed_float, 1). --define(GL_EXT_texture_array, 1). --define(GL_EXT_texture_buffer_object, 1). --define(GL_EXT_texture_compression_latc, 1). --define(GL_EXT_texture_compression_rgtc, 1). --define(GL_EXT_texture_shared_exponent, 1). --define(GL_NV_depth_buffer_float, 1). --define(GL_NV_fragment_program4, 1). --define(GL_NV_framebuffer_multisample_coverage, 1). --define(GL_EXT_framebuffer_sRGB, 1). --define(GL_NV_geometry_shader4, 1). --define(GL_NV_parameter_buffer_object, 1). --define(GL_EXT_draw_buffers2, 1). --define(GL_NV_transform_feedback, 1). --define(GL_EXT_bindable_uniform, 1). --define(GL_EXT_texture_integer, 1). --define(GL_GREMEDY_frame_terminator, 1). --define(GL_NV_conditional_render, 1). --define(GL_NV_present_video, 1). --define(GL_EXT_transform_feedback, 1). --define(GL_EXT_direct_state_access, 1). --define(GL_EXT_vertex_array_bgra, 1). --define(GL_EXT_texture_swizzle, 1). --define(GL_NV_explicit_multisample, 1). --define(GL_NV_transform_feedback2, 1). --define(GL_ATI_meminfo, 1). --define(GL_AMD_performance_monitor, 1). --define(GL_AMD_texture_texture4, 1). --define(GL_AMD_vertex_shader_tesselator, 1). --define(GL_EXT_provoking_vertex, 1). --define(GL_EXT_texture_snorm, 1). --define(GL_AMD_draw_buffers_blend, 1). --define(GL_APPLE_texture_range, 1). --define(GL_APPLE_float_pixels, 1). --define(GL_APPLE_vertex_program_evaluators, 1). --define(GL_APPLE_aux_depth_stencil, 1). --define(GL_APPLE_object_purgeable, 1). --define(GL_APPLE_row_bytes, 1). --define(GL_APPLE_rgb_422, 1). --define(GL_NV_video_capture, 1). --define(GL_NV_copy_image, 1). --define(GL_EXT_separate_shader_objects, 1). --define(GL_NV_parameter_buffer_object2, 1). --define(GL_NV_shader_buffer_load, 1). --define(GL_NV_vertex_buffer_unified_memory, 1). --define(GL_NV_texture_barrier, 1). --define(GL_AMD_shader_stencil_export, 1). --define(GL_AMD_seamless_cubemap_per_texture, 1). --define(GL_AMD_conservative_depth, 1). --define(GL_EXT_shader_image_load_store, 1). --define(GL_EXT_vertex_attrib_64bit, 1). --define(GL_NV_gpu_program5, 1). --define(GL_NV_gpu_shader5, 1). --define(GL_NV_shader_buffer_store, 1). --define(GL_NV_tessellation_program5, 1). --define(GL_NV_vertex_attrib_integer_64bit, 1). --define(GL_NV_multisample_coverage, 1). --define(GL_AMD_name_gen_delete, 1). --define(GL_AMD_debug_output, 1). --define(GL_NV_vdpau_interop, 1). --define(GL_AMD_transform_feedback3_lines_triangles, 1). +-define(GL_DEPTH_CLAMP_NEAR_AMD, 16#901E). +-define(GL_DEPTH_CLAMP_FAR_AMD, 16#901F). diff --git a/lib/wx/src/gen/wxBoxSizer.erl b/lib/wx/src/gen/wxBoxSizer.erl index 1d5b1cf2fa..e6287945a9 100644 --- a/lib/wx/src/gen/wxBoxSizer.erl +++ b/lib/wx/src/gen/wxBoxSizer.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -102,7 +102,7 @@ prepend(This,Width,Height, Options) -> wxSizer:prepend(This,Width,Height, Option %% @hidden prepend(This,Width,Height) -> wxSizer:prepend(This,Width,Height). %% @hidden -prepend(This,Window) -> wxSizer:prepend(This,Window). +prepend(This,Item) -> wxSizer:prepend(This,Item). %% @hidden layout(This) -> wxSizer:layout(This). %% @hidden @@ -118,7 +118,7 @@ insert(This,Index,Width,Height, Options) -> wxSizer:insert(This,Index,Width,Heig %% @hidden insert(This,Index,Width,Height) -> wxSizer:insert(This,Index,Width,Height). %% @hidden -insert(This,Index,Window) -> wxSizer:insert(This,Index,Window). +insert(This,Index,Item) -> wxSizer:insert(This,Index,Item). %% @hidden hide(This,Window, Options) -> wxSizer:hide(This,Window, Options). %% @hidden diff --git a/lib/wx/src/gen/wxFlexGridSizer.erl b/lib/wx/src/gen/wxFlexGridSizer.erl index 9471cc8a01..910cc78894 100644 --- a/lib/wx/src/gen/wxFlexGridSizer.erl +++ b/lib/wx/src/gen/wxFlexGridSizer.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -222,7 +222,7 @@ prepend(This,Width,Height, Options) -> wxSizer:prepend(This,Width,Height, Option %% @hidden prepend(This,Width,Height) -> wxSizer:prepend(This,Width,Height). %% @hidden -prepend(This,Window) -> wxSizer:prepend(This,Window). +prepend(This,Item) -> wxSizer:prepend(This,Item). %% @hidden layout(This) -> wxSizer:layout(This). %% @hidden @@ -238,7 +238,7 @@ insert(This,Index,Width,Height, Options) -> wxSizer:insert(This,Index,Width,Heig %% @hidden insert(This,Index,Width,Height) -> wxSizer:insert(This,Index,Width,Height). %% @hidden -insert(This,Index,Window) -> wxSizer:insert(This,Index,Window). +insert(This,Index,Item) -> wxSizer:insert(This,Index,Item). %% @hidden hide(This,Window, Options) -> wxSizer:hide(This,Window, Options). %% @hidden diff --git a/lib/wx/src/gen/wxGridBagSizer.erl b/lib/wx/src/gen/wxGridBagSizer.erl index d8cc210d3b..cfc182cf89 100644 --- a/lib/wx/src/gen/wxGridBagSizer.erl +++ b/lib/wx/src/gen/wxGridBagSizer.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -474,7 +474,7 @@ prepend(This,Width,Height, Options) -> wxSizer:prepend(This,Width,Height, Option %% @hidden prepend(This,Width,Height) -> wxSizer:prepend(This,Width,Height). %% @hidden -prepend(This,Window) -> wxSizer:prepend(This,Window). +prepend(This,Item) -> wxSizer:prepend(This,Item). %% @hidden layout(This) -> wxSizer:layout(This). %% @hidden @@ -490,7 +490,7 @@ insert(This,Index,Width,Height, Options) -> wxSizer:insert(This,Index,Width,Heig %% @hidden insert(This,Index,Width,Height) -> wxSizer:insert(This,Index,Width,Height). %% @hidden -insert(This,Index,Window) -> wxSizer:insert(This,Index,Window). +insert(This,Index,Item) -> wxSizer:insert(This,Index,Item). %% @hidden hide(This,Window, Options) -> wxSizer:hide(This,Window, Options). %% @hidden diff --git a/lib/wx/src/gen/wxGridSizer.erl b/lib/wx/src/gen/wxGridSizer.erl index 7b62774347..fd8580c70d 100644 --- a/lib/wx/src/gen/wxGridSizer.erl +++ b/lib/wx/src/gen/wxGridSizer.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -174,7 +174,7 @@ prepend(This,Width,Height, Options) -> wxSizer:prepend(This,Width,Height, Option %% @hidden prepend(This,Width,Height) -> wxSizer:prepend(This,Width,Height). %% @hidden -prepend(This,Window) -> wxSizer:prepend(This,Window). +prepend(This,Item) -> wxSizer:prepend(This,Item). %% @hidden layout(This) -> wxSizer:layout(This). %% @hidden @@ -190,7 +190,7 @@ insert(This,Index,Width,Height, Options) -> wxSizer:insert(This,Index,Width,Heig %% @hidden insert(This,Index,Width,Height) -> wxSizer:insert(This,Index,Width,Height). %% @hidden -insert(This,Index,Window) -> wxSizer:insert(This,Index,Window). +insert(This,Index,Item) -> wxSizer:insert(This,Index,Item). %% @hidden hide(This,Window, Options) -> wxSizer:hide(This,Window, Options). %% @hidden diff --git a/lib/wx/src/gen/wxListCtrl.erl b/lib/wx/src/gen/wxListCtrl.erl index 9c4ba1e5a3..5799206b87 100644 --- a/lib/wx/src/gen/wxListCtrl.erl +++ b/lib/wx/src/gen/wxListCtrl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -29,17 +29,17 @@ -module(wxListCtrl). -include("wxe.hrl"). --export([ sortItems/2 ,arrange/1,arrange/2,assignImageList/3,clearAll/1,create/2, - create/3,deleteAllItems/1,deleteColumn/2,deleteItem/2,destroy/1,editLabel/2, - ensureVisible/2,findItem/3,findItem/4,getColumn/3,getColumnCount/1, - getColumnWidth/2,getCountPerPage/1,getEditControl/1,getImageList/2, - getItem/2,getItemBackgroundColour/2,getItemCount/1,getItemData/2, - getItemFont/2,getItemPosition/3,getItemRect/3,getItemRect/4,getItemSpacing/1, - getItemState/3,getItemText/2,getItemTextColour/2,getNextItem/2,getNextItem/3, - getSelectedItemCount/1,getTextColour/1,getTopItem/1,getViewRect/1, - hitTest/2,insertColumn/3,insertColumn/4,insertItem/2,insertItem/3, - insertItem/4,new/0,new/1,new/2,refreshItem/2,refreshItems/3,scrollList/3, - setBackgroundColour/2,setColumn/3,setColumnWidth/3,setImageList/3, +-export([ create/2, create/3 , new/0, new/1, new/2 , sortItems/2 ,arrange/1, + arrange/2,assignImageList/3,clearAll/1,deleteAllItems/1,deleteColumn/2, + deleteItem/2,destroy/1,editLabel/2,ensureVisible/2,findItem/3,findItem/4, + getColumn/3,getColumnCount/1,getColumnWidth/2,getCountPerPage/1,getEditControl/1, + getImageList/2,getItem/2,getItemBackgroundColour/2,getItemCount/1, + getItemData/2,getItemFont/2,getItemPosition/3,getItemRect/3,getItemRect/4, + getItemSpacing/1,getItemState/3,getItemText/2,getItemTextColour/2, + getNextItem/2,getNextItem/3,getSelectedItemCount/1,getTextColour/1, + getTopItem/1,getViewRect/1,hitTest/2,insertColumn/3,insertColumn/4, + insertItem/2,insertItem/3,insertItem/4,refreshItem/2,refreshItems/3, + scrollList/3,setBackgroundColour/2,setColumn/3,setColumnWidth/3,setImageList/3, setItem/2,setItem/4,setItem/5,setItemBackgroundColour/3,setItemColumnImage/4, setItemCount/2,setItemData/3,setItemFont/3,setItemImage/3,setItemImage/4, setItemPosition/3,setItemState/4,setItemText/3,setItemTextColour/3, @@ -89,11 +89,11 @@ parent_class(wxWindow) -> true; parent_class(wxEvtHandler) -> true; parent_class(_Class) -> erlang:error({badtype, ?MODULE}). + %% @spec () -> wxListCtrl() %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistctrl.html#wxlistctrlwxlistctrl">external documentation</a>. new() -> - wxe_util:construct(?wxListCtrl_new_0, - <<>>). + wxe_util:construct(?wxListCtrl_new_0, <<>>). %% @spec (Parent::wxWindow:wxWindow()) -> wxListCtrl() %% @equiv new(Parent, []) @@ -102,20 +102,44 @@ new(Parent) new(Parent, []). %% @spec (Parent::wxWindow:wxWindow(), [Option]) -> wxListCtrl() -%% Option = {winid, integer()} | {pos, {X::integer(),Y::integer()}} | {size, {W::integer(),H::integer()}} | {style, integer()} | {validator, wx:wx()} +%% Option = {winid, integer()} | +%% {pos, {X::integer(),Y::integer()}} | +%% {size, {W::integer(),H::integer()}} | +%% {style, integer()} | +%% {validator, wx:wx()} | +%% {onGetItemText, OnGetItemText} | +%% {onGetItemAttr, OnGetItemAttr} | +%% {onGetItemColumnImage, OnGetItemColumnImage} +%% +%% OnGetItemText = (This, Item, Column) -> wxString() +%% OnGetItemAttr = (This, Item) -> wxListItemAttr() +%% OnGetItemColumnImage = (This, Item, Column) -> integer() %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistctrl.html#wxlistctrlwxlistctrl">external documentation</a>. + new(#wx_ref{type=ParentT,ref=ParentRef}, Options) - when is_list(Options) -> - ?CLASS(ParentT,wxWindow), - MOpts = fun({winid, Winid}, Acc) -> [<<1:32/?UI,Winid:32/?UI>>|Acc]; - ({pos, {PosX,PosY}}, Acc) -> [<<2:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; - ({size, {SizeW,SizeH}}, Acc) -> [<<3:32/?UI,SizeW:32/?UI,SizeH:32/?UI,0:32>>|Acc]; - ({style, Style}, Acc) -> [<<4:32/?UI,Style:32/?UI>>|Acc]; - ({validator, #wx_ref{type=ValidatorT,ref=ValidatorRef}}, Acc) -> ?CLASS(ValidatorT,wx),[<<5:32/?UI,ValidatorRef:32/?UI>>|Acc]; - (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, - BinOpt = list_to_binary(lists:foldl(MOpts, [<<0:32>>], Options)), - wxe_util:construct(?wxListCtrl_new_2, - <<ParentRef:32/?UI, 0:32,BinOpt/binary>>). + when is_list(Options)-> + ?CLASS(ParentT,wxWindow), + MOpts = fun({winid, Winid}, Acc) -> [<<1:32/?UI,Winid:32/?UI>>|Acc]; + ({pos, {PosX,PosY}}, Acc) -> [<<2:32/?UI,PosX:32/?UI,PosY:32/?UI,0:32>>|Acc]; + ({size, {SizeW,SizeH}}, Acc) -> [<<3:32/?UI,SizeW:32/?UI,SizeH:32/?UI,0:32>>|Acc]; + ({style, Style}, Acc) -> [<<4:32/?UI,Style:32/?UI>>|Acc]; + ({validator, #wx_ref{type=ValidatorT,ref=ValidatorRef}}, Acc) -> + ?CLASS(ValidatorT,wx),[<<5:32/?UI,ValidatorRef:32/?UI>>|Acc]; + ({onGetItemText, F}, Acc) when is_function(F) -> + Fun = fun([This,Item,Col]) -> unicode:characters_to_binary([F(This,Item,Col),0]) end, + [<<6:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({onGetItemAttr, F}, Acc) when is_function(F) -> + Fun = fun([This,Item]) -> + #wx_ref{type=wxListItemAttr,ref=ThisRef} = F(This,Item), + <<ThisRef:32/?UI>> + end, + [<<7:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({onGetItemColumnImage, F}, Acc) when is_function(F) -> + Fun = fun([This,Item, Col]) -> <<(F(This,Item,Col)):32/?I>> end, + [<<8:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, + BinOpt = list_to_binary(lists:foldl(MOpts, [<<0:32>>], Options)), + wxe_util:construct(?wxListCtrl_new_2, <<ParentRef:32/?UI, 0:32,BinOpt/binary>>). %% @spec (This::wxListCtrl()) -> bool() %% @equiv arrange(This, []) @@ -151,6 +175,7 @@ clearAll(#wx_ref{type=ThisT,ref=ThisRef}) -> wxe_util:cast(?wxListCtrl_ClearAll, <<ThisRef:32/?UI>>). + %% @spec (This::wxListCtrl(), Parent::wxWindow:wxWindow()) -> bool() %% @equiv create(This,Parent, []) create(This,Parent) @@ -158,7 +183,18 @@ create(This,Parent) create(This,Parent, []). %% @spec (This::wxListCtrl(), Parent::wxWindow:wxWindow(), [Option]) -> bool() -%% Option = {winid, integer()} | {pos, {X::integer(),Y::integer()}} | {size, {W::integer(),H::integer()}} | {style, integer()} | {validator, wx:wx()} +%% Option = {winid, integer()} | +%% {pos, {X::integer(),Y::integer()}} | +%% {size, {W::integer(),H::integer()}} | +%% {style, integer()} | +%% {validator, wx:wx()} | +%% {onGetItemText, OnGetItemText} | +%% {onGetItemAttr, OnGetItemAttr} | +%% {onGetItemColumnImage, OnGetItemColumnImage} +%% +%% OnGetItemText = (This, Item, Column) -> wxString() +%% OnGetItemAttr = (This, Item) -> wxListItemAttr() +%% OnGetItemColumnImage = (This, Item, Column) -> integer() %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistctrl.html#wxlistctrlcreate">external documentation</a>. create(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ParentT,ref=ParentRef}, Options) when is_list(Options) -> @@ -726,12 +762,12 @@ setWindowStyleFlag(#wx_ref{type=ThisT,ref=ThisRef},Style) %% @spec (This::wxListCtrl(), SortCallBack::function()) -> boolean() %% @doc Sort the items in the list control<br /> -%% <pre>SortCalBack(Item1,Item2) -> integer()</pre> +%% <pre>SortCallBack(Item1,Item2) -> integer()</pre> %% <br /> SortCallBack receives the client data associated with two items %% to compare, and should return 0 if the items are equal, a negative %% value if the first item is less than the second one and a positive %% value if the first item is greater than the second one. -%% <br /> NOTE: The callback may not call other processes. +%% <br /> NOTE: The callback may not call other (wx) processes. sortItems(#wx_ref{type=ThisT,ref=ThisRef}, SortCallBack) when is_function(SortCallBack, 2) -> ?CLASS(ThisT,wxListCtrl), diff --git a/lib/wx/src/gen/wxListItemAttr.erl b/lib/wx/src/gen/wxListItemAttr.erl new file mode 100644 index 0000000000..1a43c71854 --- /dev/null +++ b/lib/wx/src/gen/wxListItemAttr.erl @@ -0,0 +1,122 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% This file is generated DO NOT EDIT + +%% @doc See external documentation: <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html">wxListItemAttr</a>. +%% @type wxListItemAttr(). An object reference, The representation is internal +%% and can be changed without notice. It can't be used for comparsion +%% stored on disc or distributed for use on other nodes. + +-module(wxListItemAttr). +-include("wxe.hrl"). +-export([destroy/1,getBackgroundColour/1,getFont/1,getTextColour/1,hasBackgroundColour/1, + hasFont/1,hasTextColour/1,new/0,new/3,setBackgroundColour/2,setFont/2, + setTextColour/2]). + +%% inherited exports +-export([parent_class/1]). + +%% @hidden +parent_class(_Class) -> erlang:error({badtype, ?MODULE}). + +%% @spec () -> wxListItemAttr() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrwxlistitemattr">external documentation</a>. +new() -> + wxe_util:construct(?wxListItemAttr_new_0, + <<>>). + +%% @spec (ColText::wx:colour(), ColBack::wx:colour(), Font::wxFont:wxFont()) -> wxListItemAttr() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrwxlistitemattr">external documentation</a>. +new(ColText,ColBack,#wx_ref{type=FontT,ref=FontRef}) + when tuple_size(ColText) =:= 3; tuple_size(ColText) =:= 4,tuple_size(ColBack) =:= 3; tuple_size(ColBack) =:= 4 -> + ?CLASS(FontT,wxFont), + wxe_util:construct(?wxListItemAttr_new_3, + <<(wxe_util:colour_bin(ColText)):16/binary,(wxe_util:colour_bin(ColBack)):16/binary,FontRef:32/?UI>>). + +%% @spec (This::wxListItemAttr()) -> wx:colour() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrgetbackgroundcolour">external documentation</a>. +getBackgroundColour(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxListItemAttr), + wxe_util:call(?wxListItemAttr_GetBackgroundColour, + <<ThisRef:32/?UI>>). + +%% @spec (This::wxListItemAttr()) -> wxFont:wxFont() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrgetfont">external documentation</a>. +getFont(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxListItemAttr), + wxe_util:call(?wxListItemAttr_GetFont, + <<ThisRef:32/?UI>>). + +%% @spec (This::wxListItemAttr()) -> wx:colour() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrgettextcolour">external documentation</a>. +getTextColour(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxListItemAttr), + wxe_util:call(?wxListItemAttr_GetTextColour, + <<ThisRef:32/?UI>>). + +%% @spec (This::wxListItemAttr()) -> bool() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrhasbackgroundcolour">external documentation</a>. +hasBackgroundColour(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxListItemAttr), + wxe_util:call(?wxListItemAttr_HasBackgroundColour, + <<ThisRef:32/?UI>>). + +%% @spec (This::wxListItemAttr()) -> bool() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrhasfont">external documentation</a>. +hasFont(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxListItemAttr), + wxe_util:call(?wxListItemAttr_HasFont, + <<ThisRef:32/?UI>>). + +%% @spec (This::wxListItemAttr()) -> bool() +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrhastextcolour">external documentation</a>. +hasTextColour(#wx_ref{type=ThisT,ref=ThisRef}) -> + ?CLASS(ThisT,wxListItemAttr), + wxe_util:call(?wxListItemAttr_HasTextColour, + <<ThisRef:32/?UI>>). + +%% @spec (This::wxListItemAttr(), ColBack::wx:colour()) -> ok +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrsetbackgroundcolour">external documentation</a>. +setBackgroundColour(#wx_ref{type=ThisT,ref=ThisRef},ColBack) + when tuple_size(ColBack) =:= 3; tuple_size(ColBack) =:= 4 -> + ?CLASS(ThisT,wxListItemAttr), + wxe_util:cast(?wxListItemAttr_SetBackgroundColour, + <<ThisRef:32/?UI,(wxe_util:colour_bin(ColBack)):16/binary>>). + +%% @spec (This::wxListItemAttr(), Font::wxFont:wxFont()) -> ok +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrsetfont">external documentation</a>. +setFont(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=FontT,ref=FontRef}) -> + ?CLASS(ThisT,wxListItemAttr), + ?CLASS(FontT,wxFont), + wxe_util:cast(?wxListItemAttr_SetFont, + <<ThisRef:32/?UI,FontRef:32/?UI>>). + +%% @spec (This::wxListItemAttr(), ColText::wx:colour()) -> ok +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxlistitemattr.html#wxlistitemattrsettextcolour">external documentation</a>. +setTextColour(#wx_ref{type=ThisT,ref=ThisRef},ColText) + when tuple_size(ColText) =:= 3; tuple_size(ColText) =:= 4 -> + ?CLASS(ThisT,wxListItemAttr), + wxe_util:cast(?wxListItemAttr_SetTextColour, + <<ThisRef:32/?UI,(wxe_util:colour_bin(ColText)):16/binary>>). + +%% @spec (This::wxListItemAttr()) -> ok +%% @doc Destroys this object, do not use object again +destroy(Obj=#wx_ref{type=Type}) -> + ?CLASS(Type,wxListItemAttr), + wxe_util:destroy(?wxListItemAttr_destroy,Obj), + ok. diff --git a/lib/wx/src/gen/wxRegion.erl b/lib/wx/src/gen/wxRegion.erl index 0ceba1d203..4e8d98a54f 100644 --- a/lib/wx/src/gen/wxRegion.erl +++ b/lib/wx/src/gen/wxRegion.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -48,7 +48,7 @@ new() -> %% new(Bmp::wxBitmap:wxBitmap()) -> wxRegion() </c> %% </p> %% <p><c> -%% new(Rect::{X::integer(),Y::integer(),W::integer(),H::integer()}) -> wxRegion() </c> +%% new(Rect::{X::integer(), Y::integer(), W::integer(), H::integer()}) -> wxRegion() </c> %% </p> new(#wx_ref{type=BmpT,ref=BmpRef}) -> ?CLASS(BmpT,wxBitmap), diff --git a/lib/wx/src/gen/wxSizer.erl b/lib/wx/src/gen/wxSizer.erl index 716b2224b5..e9b83a7333 100644 --- a/lib/wx/src/gen/wxSizer.erl +++ b/lib/wx/src/gen/wxSizer.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -298,18 +298,8 @@ hide(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=WindowT,ref=WindowRef}, Option wxe_util:call(WindowOP, <<ThisRef:32/?UI,WindowRef:32/?UI, BinOpt/binary>>). -%% @spec (This::wxSizer(),Index::integer(),X::term()) -> wxSizerItem:wxSizerItem() +%% @spec (This::wxSizer(), Index::integer(), Item::wxSizerItem:wxSizerItem()) -> wxSizerItem:wxSizerItem() %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxsizer.html#wxsizerinsert">external documentation</a>. -%% <br /> Alternatives: -%% <p><c> -%% insert(This::wxSizer(), Index::integer(), Window::wxWindow:wxWindow() | wxSizer()) -> insert(This,Index,Window, []) </c></p> -%% <p><c> -%% insert(This::wxSizer(), Index::integer(), Item::wxSizerItem:wxSizerItem()) -> wxSizerItem:wxSizerItem() </c> -%% </p> - -insert(This,Index,Window) - when is_record(This, wx_ref),is_integer(Index),is_record(Window, wx_ref) -> - insert(This,Index,Window, []); insert(#wx_ref{type=ThisT,ref=ThisRef},Index,#wx_ref{type=ItemT,ref=ItemRef}) when is_integer(Index) -> ?CLASS(ThisT,wxSizer), @@ -437,18 +427,8 @@ layout(#wx_ref{type=ThisT,ref=ThisRef}) -> wxe_util:cast(?wxSizer_Layout, <<ThisRef:32/?UI>>). -%% @spec (This::wxSizer(),X::term()) -> wxSizerItem:wxSizerItem() +%% @spec (This::wxSizer(), Item::wxSizerItem:wxSizerItem()) -> wxSizerItem:wxSizerItem() %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxsizer.html#wxsizerprepend">external documentation</a>. -%% <br /> Alternatives: -%% <p><c> -%% prepend(This::wxSizer(), Window::wxWindow:wxWindow() | wxSizer()) -> prepend(This,Window, []) </c></p> -%% <p><c> -%% prepend(This::wxSizer(), Item::wxSizerItem:wxSizerItem()) -> wxSizerItem:wxSizerItem() </c> -%% </p> - -prepend(This,Window) - when is_record(This, wx_ref),is_record(Window, wx_ref) -> - prepend(This,Window, []); prepend(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=ItemT,ref=ItemRef}) -> ?CLASS(ThisT,wxSizer), ?CLASS(ItemT,wxSizerItem), diff --git a/lib/wx/src/gen/wxStaticBoxSizer.erl b/lib/wx/src/gen/wxStaticBoxSizer.erl index 5f346b7a1e..2cf9f64325 100644 --- a/lib/wx/src/gen/wxStaticBoxSizer.erl +++ b/lib/wx/src/gen/wxStaticBoxSizer.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -130,7 +130,7 @@ prepend(This,Width,Height, Options) -> wxSizer:prepend(This,Width,Height, Option %% @hidden prepend(This,Width,Height) -> wxSizer:prepend(This,Width,Height). %% @hidden -prepend(This,Window) -> wxSizer:prepend(This,Window). +prepend(This,Item) -> wxSizer:prepend(This,Item). %% @hidden layout(This) -> wxSizer:layout(This). %% @hidden @@ -146,7 +146,7 @@ insert(This,Index,Width,Height, Options) -> wxSizer:insert(This,Index,Width,Heig %% @hidden insert(This,Index,Width,Height) -> wxSizer:insert(This,Index,Width,Height). %% @hidden -insert(This,Index,Window) -> wxSizer:insert(This,Index,Window). +insert(This,Index,Item) -> wxSizer:insert(This,Index,Item). %% @hidden hide(This,Window, Options) -> wxSizer:hide(This,Window, Options). %% @hidden diff --git a/lib/wx/src/gen/wxStdDialogButtonSizer.erl b/lib/wx/src/gen/wxStdDialogButtonSizer.erl index b0052ca2e1..3d31907275 100644 --- a/lib/wx/src/gen/wxStdDialogButtonSizer.erl +++ b/lib/wx/src/gen/wxStdDialogButtonSizer.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -139,7 +139,7 @@ prepend(This,Width,Height, Options) -> wxSizer:prepend(This,Width,Height, Option %% @hidden prepend(This,Width,Height) -> wxSizer:prepend(This,Width,Height). %% @hidden -prepend(This,Window) -> wxSizer:prepend(This,Window). +prepend(This,Item) -> wxSizer:prepend(This,Item). %% @hidden layout(This) -> wxSizer:layout(This). %% @hidden @@ -155,7 +155,7 @@ insert(This,Index,Width,Height, Options) -> wxSizer:insert(This,Index,Width,Heig %% @hidden insert(This,Index,Width,Height) -> wxSizer:insert(This,Index,Width,Height). %% @hidden -insert(This,Index,Window) -> wxSizer:insert(This,Index,Window). +insert(This,Index,Item) -> wxSizer:insert(This,Index,Item). %% @hidden hide(This,Window, Options) -> wxSizer:hide(This,Window, Options). %% @hidden diff --git a/lib/wx/src/gen/wxWindow.erl b/lib/wx/src/gen/wxWindow.erl index 33665a0ad6..031314bfe2 100644 --- a/lib/wx/src/gen/wxWindow.erl +++ b/lib/wx/src/gen/wxWindow.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -1144,10 +1144,10 @@ setCaret(#wx_ref{type=ThisT,ref=ThisRef},#wx_ref{type=CaretT,ref=CaretRef}) -> %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxwindow.html#wxwindowsetclientsize">external documentation</a>. %% <br /> Alternatives: %% <p><c> -%% setClientSize(This::wxWindow(), Size::{W::integer(),H::integer()}) -> ok </c> +%% setClientSize(This::wxWindow(), Size::{W::integer(), H::integer()}) -> ok </c> %% </p> %% <p><c> -%% setClientSize(This::wxWindow(), Rect::{X::integer(),Y::integer(),W::integer(),H::integer()}) -> ok </c> +%% setClientSize(This::wxWindow(), Rect::{X::integer(), Y::integer(), W::integer(), H::integer()}) -> ok </c> %% </p> setClientSize(#wx_ref{type=ThisT,ref=ThisRef},{SizeW,SizeH}) when is_integer(SizeW),is_integer(SizeH) -> diff --git a/lib/wx/src/gen/wxe_debug.hrl b/lib/wx/src/gen/wxe_debug.hrl index 3edfa73599..960f67a1f6 100644 --- a/lib/wx/src/gen/wxe_debug.hrl +++ b/lib/wx/src/gen/wxe_debug.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -1603,1684 +1603,1696 @@ wxdebug_table() -> {1754, {wxListItem, setText, 1}}, {1755, {wxListItem, setTextColour, 1}}, {1756, {wxListItem, setWidth, 1}}, - {1757, {wxImageList, new_0, 0}}, - {1758, {wxImageList, new_3, 3}}, - {1759, {wxImageList, add_1, 1}}, - {1760, {wxImageList, add_2_0, 2}}, - {1761, {wxImageList, add_2_1, 2}}, - {1762, {wxImageList, create, 3}}, - {1764, {wxImageList, draw, 5}}, - {1765, {wxImageList, getBitmap, 1}}, - {1766, {wxImageList, getIcon, 1}}, - {1767, {wxImageList, getImageCount, 0}}, - {1768, {wxImageList, getSize, 3}}, - {1769, {wxImageList, remove, 1}}, - {1770, {wxImageList, removeAll, 0}}, - {1771, {wxImageList, replace_2, 2}}, - {1772, {wxImageList, replace_3, 3}}, - {1773, {wxImageList, 'Destroy', undefined}}, - {1774, {wxTextAttr, new_0, 0}}, - {1775, {wxTextAttr, new_2, 2}}, - {1776, {wxTextAttr, getAlignment, 0}}, - {1777, {wxTextAttr, getBackgroundColour, 0}}, - {1778, {wxTextAttr, getFont, 0}}, - {1779, {wxTextAttr, getLeftIndent, 0}}, - {1780, {wxTextAttr, getLeftSubIndent, 0}}, - {1781, {wxTextAttr, getRightIndent, 0}}, - {1782, {wxTextAttr, getTabs, 0}}, - {1783, {wxTextAttr, getTextColour, 0}}, - {1784, {wxTextAttr, hasBackgroundColour, 0}}, - {1785, {wxTextAttr, hasFont, 0}}, - {1786, {wxTextAttr, hasTextColour, 0}}, - {1787, {wxTextAttr, getFlags, 0}}, - {1788, {wxTextAttr, isDefault, 0}}, - {1789, {wxTextAttr, setAlignment, 1}}, - {1790, {wxTextAttr, setBackgroundColour, 1}}, - {1791, {wxTextAttr, setFlags, 1}}, - {1792, {wxTextAttr, setFont, 2}}, - {1793, {wxTextAttr, setLeftIndent, 2}}, - {1794, {wxTextAttr, setRightIndent, 1}}, - {1795, {wxTextAttr, setTabs, 1}}, - {1796, {wxTextAttr, setTextColour, 1}}, - {1797, {wxTextAttr, 'Destroy', undefined}}, - {1799, {wxTextCtrl, new_3, 3}}, - {1800, {wxTextCtrl, new_0, 0}}, - {1802, {wxTextCtrl, destruct, 0}}, - {1803, {wxTextCtrl, appendText, 1}}, - {1804, {wxTextCtrl, canCopy, 0}}, - {1805, {wxTextCtrl, canCut, 0}}, - {1806, {wxTextCtrl, canPaste, 0}}, - {1807, {wxTextCtrl, canRedo, 0}}, - {1808, {wxTextCtrl, canUndo, 0}}, - {1809, {wxTextCtrl, clear, 0}}, - {1810, {wxTextCtrl, copy, 0}}, - {1811, {wxTextCtrl, create, 3}}, - {1812, {wxTextCtrl, cut, 0}}, - {1813, {wxTextCtrl, discardEdits, 0}}, - {1814, {wxTextCtrl, emulateKeyPress, 1}}, - {1815, {wxTextCtrl, getDefaultStyle, 0}}, - {1816, {wxTextCtrl, getInsertionPoint, 0}}, - {1817, {wxTextCtrl, getLastPosition, 0}}, - {1818, {wxTextCtrl, getLineLength, 1}}, - {1819, {wxTextCtrl, getLineText, 1}}, - {1820, {wxTextCtrl, getNumberOfLines, 0}}, - {1821, {wxTextCtrl, getRange, 2}}, - {1822, {wxTextCtrl, getSelection, 2}}, - {1823, {wxTextCtrl, getStringSelection, 0}}, - {1824, {wxTextCtrl, getStyle, 2}}, - {1825, {wxTextCtrl, getValue, 0}}, - {1826, {wxTextCtrl, isEditable, 0}}, - {1827, {wxTextCtrl, isModified, 0}}, - {1828, {wxTextCtrl, isMultiLine, 0}}, - {1829, {wxTextCtrl, isSingleLine, 0}}, - {1830, {wxTextCtrl, loadFile, 2}}, - {1831, {wxTextCtrl, markDirty, 0}}, - {1832, {wxTextCtrl, paste, 0}}, - {1833, {wxTextCtrl, positionToXY, 3}}, - {1834, {wxTextCtrl, redo, 0}}, - {1835, {wxTextCtrl, remove, 2}}, - {1836, {wxTextCtrl, replace, 3}}, - {1837, {wxTextCtrl, saveFile, 1}}, - {1838, {wxTextCtrl, setDefaultStyle, 1}}, - {1839, {wxTextCtrl, setEditable, 1}}, - {1840, {wxTextCtrl, setInsertionPoint, 1}}, - {1841, {wxTextCtrl, setInsertionPointEnd, 0}}, - {1843, {wxTextCtrl, setMaxLength, 1}}, - {1844, {wxTextCtrl, setSelection, 2}}, - {1845, {wxTextCtrl, setStyle, 3}}, - {1846, {wxTextCtrl, setValue, 1}}, - {1847, {wxTextCtrl, showPosition, 1}}, - {1848, {wxTextCtrl, undo, 0}}, - {1849, {wxTextCtrl, writeText, 1}}, - {1850, {wxTextCtrl, xYToPosition, 2}}, - {1853, {wxNotebook, new_0, 0}}, - {1854, {wxNotebook, new_3, 3}}, - {1855, {wxNotebook, destruct, 0}}, - {1856, {wxNotebook, addPage, 3}}, - {1857, {wxNotebook, advanceSelection, 1}}, - {1858, {wxNotebook, assignImageList, 1}}, - {1859, {wxNotebook, create, 3}}, - {1860, {wxNotebook, deleteAllPages, 0}}, - {1861, {wxNotebook, deletePage, 1}}, - {1862, {wxNotebook, removePage, 1}}, - {1863, {wxNotebook, getCurrentPage, 0}}, - {1864, {wxNotebook, getImageList, 0}}, - {1866, {wxNotebook, getPage, 1}}, - {1867, {wxNotebook, getPageCount, 0}}, - {1868, {wxNotebook, getPageImage, 1}}, - {1869, {wxNotebook, getPageText, 1}}, - {1870, {wxNotebook, getRowCount, 0}}, - {1871, {wxNotebook, getSelection, 0}}, - {1872, {wxNotebook, getThemeBackgroundColour, 0}}, - {1874, {wxNotebook, hitTest, 2}}, - {1876, {wxNotebook, insertPage, 4}}, - {1877, {wxNotebook, setImageList, 1}}, - {1878, {wxNotebook, setPadding, 1}}, - {1879, {wxNotebook, setPageSize, 1}}, - {1880, {wxNotebook, setPageImage, 2}}, - {1881, {wxNotebook, setPageText, 2}}, - {1882, {wxNotebook, setSelection, 1}}, - {1883, {wxNotebook, changeSelection, 1}}, - {1884, {wxChoicebook, new_0, 0}}, - {1885, {wxChoicebook, new_3, 3}}, - {1886, {wxChoicebook, addPage, 3}}, - {1887, {wxChoicebook, advanceSelection, 1}}, - {1888, {wxChoicebook, assignImageList, 1}}, - {1889, {wxChoicebook, create, 3}}, - {1890, {wxChoicebook, deleteAllPages, 0}}, - {1891, {wxChoicebook, deletePage, 1}}, - {1892, {wxChoicebook, removePage, 1}}, - {1893, {wxChoicebook, getCurrentPage, 0}}, - {1894, {wxChoicebook, getImageList, 0}}, - {1896, {wxChoicebook, getPage, 1}}, - {1897, {wxChoicebook, getPageCount, 0}}, - {1898, {wxChoicebook, getPageImage, 1}}, - {1899, {wxChoicebook, getPageText, 1}}, - {1900, {wxChoicebook, getSelection, 0}}, - {1901, {wxChoicebook, hitTest, 2}}, - {1902, {wxChoicebook, insertPage, 4}}, - {1903, {wxChoicebook, setImageList, 1}}, - {1904, {wxChoicebook, setPageSize, 1}}, - {1905, {wxChoicebook, setPageImage, 2}}, - {1906, {wxChoicebook, setPageText, 2}}, - {1907, {wxChoicebook, setSelection, 1}}, - {1908, {wxChoicebook, changeSelection, 1}}, - {1909, {wxChoicebook, 'Destroy', undefined}}, - {1910, {wxToolbook, new_0, 0}}, - {1911, {wxToolbook, new_3, 3}}, - {1912, {wxToolbook, addPage, 3}}, - {1913, {wxToolbook, advanceSelection, 1}}, - {1914, {wxToolbook, assignImageList, 1}}, - {1915, {wxToolbook, create, 3}}, - {1916, {wxToolbook, deleteAllPages, 0}}, - {1917, {wxToolbook, deletePage, 1}}, - {1918, {wxToolbook, removePage, 1}}, - {1919, {wxToolbook, getCurrentPage, 0}}, - {1920, {wxToolbook, getImageList, 0}}, - {1922, {wxToolbook, getPage, 1}}, - {1923, {wxToolbook, getPageCount, 0}}, - {1924, {wxToolbook, getPageImage, 1}}, - {1925, {wxToolbook, getPageText, 1}}, - {1926, {wxToolbook, getSelection, 0}}, - {1928, {wxToolbook, hitTest, 2}}, - {1929, {wxToolbook, insertPage, 4}}, - {1930, {wxToolbook, setImageList, 1}}, - {1931, {wxToolbook, setPageSize, 1}}, - {1932, {wxToolbook, setPageImage, 2}}, - {1933, {wxToolbook, setPageText, 2}}, - {1934, {wxToolbook, setSelection, 1}}, - {1935, {wxToolbook, changeSelection, 1}}, - {1936, {wxToolbook, 'Destroy', undefined}}, - {1937, {wxListbook, new_0, 0}}, - {1938, {wxListbook, new_3, 3}}, - {1939, {wxListbook, addPage, 3}}, - {1940, {wxListbook, advanceSelection, 1}}, - {1941, {wxListbook, assignImageList, 1}}, - {1942, {wxListbook, create, 3}}, - {1943, {wxListbook, deleteAllPages, 0}}, - {1944, {wxListbook, deletePage, 1}}, - {1945, {wxListbook, removePage, 1}}, - {1946, {wxListbook, getCurrentPage, 0}}, - {1947, {wxListbook, getImageList, 0}}, - {1949, {wxListbook, getPage, 1}}, - {1950, {wxListbook, getPageCount, 0}}, - {1951, {wxListbook, getPageImage, 1}}, - {1952, {wxListbook, getPageText, 1}}, - {1953, {wxListbook, getSelection, 0}}, - {1955, {wxListbook, hitTest, 2}}, - {1956, {wxListbook, insertPage, 4}}, - {1957, {wxListbook, setImageList, 1}}, - {1958, {wxListbook, setPageSize, 1}}, - {1959, {wxListbook, setPageImage, 2}}, - {1960, {wxListbook, setPageText, 2}}, - {1961, {wxListbook, setSelection, 1}}, - {1962, {wxListbook, changeSelection, 1}}, - {1963, {wxListbook, 'Destroy', undefined}}, - {1964, {wxTreebook, new_0, 0}}, - {1965, {wxTreebook, new_3, 3}}, - {1966, {wxTreebook, addPage, 3}}, - {1967, {wxTreebook, advanceSelection, 1}}, - {1968, {wxTreebook, assignImageList, 1}}, - {1969, {wxTreebook, create, 3}}, - {1970, {wxTreebook, deleteAllPages, 0}}, - {1971, {wxTreebook, deletePage, 1}}, - {1972, {wxTreebook, removePage, 1}}, - {1973, {wxTreebook, getCurrentPage, 0}}, - {1974, {wxTreebook, getImageList, 0}}, - {1976, {wxTreebook, getPage, 1}}, - {1977, {wxTreebook, getPageCount, 0}}, - {1978, {wxTreebook, getPageImage, 1}}, - {1979, {wxTreebook, getPageText, 1}}, - {1980, {wxTreebook, getSelection, 0}}, - {1981, {wxTreebook, expandNode, 2}}, - {1982, {wxTreebook, isNodeExpanded, 1}}, - {1984, {wxTreebook, hitTest, 2}}, - {1985, {wxTreebook, insertPage, 4}}, - {1986, {wxTreebook, insertSubPage, 4}}, - {1987, {wxTreebook, setImageList, 1}}, - {1988, {wxTreebook, setPageSize, 1}}, - {1989, {wxTreebook, setPageImage, 2}}, - {1990, {wxTreebook, setPageText, 2}}, - {1991, {wxTreebook, setSelection, 1}}, - {1992, {wxTreebook, changeSelection, 1}}, - {1993, {wxTreebook, 'Destroy', undefined}}, - {1996, {wxTreeCtrl, new_2, 2}}, - {1997, {wxTreeCtrl, new_0, 0}}, - {1999, {wxTreeCtrl, destruct, 0}}, - {2000, {wxTreeCtrl, addRoot, 2}}, - {2001, {wxTreeCtrl, appendItem, 3}}, - {2002, {wxTreeCtrl, assignImageList, 1}}, - {2003, {wxTreeCtrl, assignStateImageList, 1}}, - {2004, {wxTreeCtrl, collapse, 1}}, - {2005, {wxTreeCtrl, collapseAndReset, 1}}, - {2006, {wxTreeCtrl, create, 2}}, - {2007, {wxTreeCtrl, delete, 1}}, - {2008, {wxTreeCtrl, deleteAllItems, 0}}, - {2009, {wxTreeCtrl, deleteChildren, 1}}, - {2010, {wxTreeCtrl, editLabel, 1}}, - {2011, {wxTreeCtrl, ensureVisible, 1}}, - {2012, {wxTreeCtrl, expand, 1}}, - {2013, {wxTreeCtrl, getBoundingRect, 3}}, - {2015, {wxTreeCtrl, getChildrenCount, 2}}, - {2016, {wxTreeCtrl, getCount, 0}}, - {2017, {wxTreeCtrl, getEditControl, 0}}, - {2018, {wxTreeCtrl, getFirstChild, 2}}, - {2019, {wxTreeCtrl, getNextChild, 2}}, - {2020, {wxTreeCtrl, getFirstVisibleItem, 0}}, - {2021, {wxTreeCtrl, getImageList, 0}}, - {2022, {wxTreeCtrl, getIndent, 0}}, - {2023, {wxTreeCtrl, getItemBackgroundColour, 1}}, - {2024, {wxTreeCtrl, getItemData, 1}}, - {2025, {wxTreeCtrl, getItemFont, 1}}, - {2026, {wxTreeCtrl, getItemImage_1, 1}}, - {2027, {wxTreeCtrl, getItemImage_2, 2}}, - {2028, {wxTreeCtrl, getItemText, 1}}, - {2029, {wxTreeCtrl, getItemTextColour, 1}}, - {2030, {wxTreeCtrl, getLastChild, 1}}, - {2031, {wxTreeCtrl, getNextSibling, 1}}, - {2032, {wxTreeCtrl, getNextVisible, 1}}, - {2033, {wxTreeCtrl, getItemParent, 1}}, - {2034, {wxTreeCtrl, getPrevSibling, 1}}, - {2035, {wxTreeCtrl, getPrevVisible, 1}}, - {2036, {wxTreeCtrl, getRootItem, 0}}, - {2037, {wxTreeCtrl, getSelection, 0}}, - {2038, {wxTreeCtrl, getSelections, 1}}, - {2039, {wxTreeCtrl, getStateImageList, 0}}, - {2040, {wxTreeCtrl, hitTest, 1}}, - {2042, {wxTreeCtrl, insertItem, 4}}, - {2043, {wxTreeCtrl, isBold, 1}}, - {2044, {wxTreeCtrl, isExpanded, 1}}, - {2045, {wxTreeCtrl, isSelected, 1}}, - {2046, {wxTreeCtrl, isVisible, 1}}, - {2047, {wxTreeCtrl, itemHasChildren, 1}}, - {2048, {wxTreeCtrl, prependItem, 3}}, - {2049, {wxTreeCtrl, scrollTo, 1}}, - {2050, {wxTreeCtrl, selectItem_1, 1}}, - {2051, {wxTreeCtrl, selectItem_2, 2}}, - {2052, {wxTreeCtrl, setIndent, 1}}, - {2053, {wxTreeCtrl, setImageList, 1}}, - {2054, {wxTreeCtrl, setItemBackgroundColour, 2}}, - {2055, {wxTreeCtrl, setItemBold, 2}}, - {2056, {wxTreeCtrl, setItemData, 2}}, - {2057, {wxTreeCtrl, setItemDropHighlight, 2}}, - {2058, {wxTreeCtrl, setItemFont, 2}}, - {2059, {wxTreeCtrl, setItemHasChildren, 2}}, - {2060, {wxTreeCtrl, setItemImage_2, 2}}, - {2061, {wxTreeCtrl, setItemImage_3, 3}}, - {2062, {wxTreeCtrl, setItemText, 2}}, - {2063, {wxTreeCtrl, setItemTextColour, 2}}, - {2064, {wxTreeCtrl, setStateImageList, 1}}, - {2065, {wxTreeCtrl, setWindowStyle, 1}}, - {2066, {wxTreeCtrl, sortChildren, 1}}, - {2067, {wxTreeCtrl, toggle, 1}}, - {2068, {wxTreeCtrl, toggleItemSelection, 1}}, - {2069, {wxTreeCtrl, unselect, 0}}, - {2070, {wxTreeCtrl, unselectAll, 0}}, - {2071, {wxTreeCtrl, unselectItem, 1}}, - {2072, {wxScrollBar, new_0, 0}}, - {2073, {wxScrollBar, new_3, 3}}, - {2074, {wxScrollBar, destruct, 0}}, - {2075, {wxScrollBar, create, 3}}, - {2076, {wxScrollBar, getRange, 0}}, - {2077, {wxScrollBar, getPageSize, 0}}, - {2078, {wxScrollBar, getThumbPosition, 0}}, - {2079, {wxScrollBar, getThumbSize, 0}}, - {2080, {wxScrollBar, setThumbPosition, 1}}, - {2081, {wxScrollBar, setScrollbar, 5}}, - {2083, {wxSpinButton, new_2, 2}}, - {2084, {wxSpinButton, new_0, 0}}, - {2085, {wxSpinButton, create, 2}}, - {2086, {wxSpinButton, getMax, 0}}, - {2087, {wxSpinButton, getMin, 0}}, - {2088, {wxSpinButton, getValue, 0}}, - {2089, {wxSpinButton, setRange, 2}}, - {2090, {wxSpinButton, setValue, 1}}, - {2091, {wxSpinButton, 'Destroy', undefined}}, - {2092, {wxSpinCtrl, new_0, 0}}, - {2093, {wxSpinCtrl, new_2, 2}}, - {2095, {wxSpinCtrl, create, 2}}, - {2098, {wxSpinCtrl, setValue_1_1, 1}}, - {2099, {wxSpinCtrl, setValue_1_0, 1}}, - {2101, {wxSpinCtrl, getValue, 0}}, - {2103, {wxSpinCtrl, setRange, 2}}, - {2104, {wxSpinCtrl, setSelection, 2}}, - {2106, {wxSpinCtrl, getMin, 0}}, - {2108, {wxSpinCtrl, getMax, 0}}, - {2109, {wxSpinCtrl, 'Destroy', undefined}}, - {2110, {wxStaticText, new_0, 0}}, - {2111, {wxStaticText, new_4, 4}}, - {2112, {wxStaticText, create, 4}}, - {2113, {wxStaticText, getLabel, 0}}, - {2114, {wxStaticText, setLabel, 1}}, - {2115, {wxStaticText, wrap, 1}}, - {2116, {wxStaticText, 'Destroy', undefined}}, - {2117, {wxStaticBitmap, new_0, 0}}, - {2118, {wxStaticBitmap, new_4, 4}}, - {2119, {wxStaticBitmap, create, 4}}, - {2120, {wxStaticBitmap, getBitmap, 0}}, - {2121, {wxStaticBitmap, setBitmap, 1}}, - {2122, {wxStaticBitmap, 'Destroy', undefined}}, - {2123, {wxRadioBox, new, 7}}, - {2125, {wxRadioBox, destruct, 0}}, - {2126, {wxRadioBox, create, 7}}, - {2127, {wxRadioBox, enable_2, 2}}, - {2128, {wxRadioBox, enable_1, 1}}, - {2129, {wxRadioBox, getSelection, 0}}, - {2130, {wxRadioBox, getString, 1}}, - {2131, {wxRadioBox, setSelection, 1}}, - {2132, {wxRadioBox, show_2, 2}}, - {2133, {wxRadioBox, show_1, 1}}, - {2134, {wxRadioBox, getColumnCount, 0}}, - {2135, {wxRadioBox, getItemHelpText, 1}}, - {2136, {wxRadioBox, getItemToolTip, 1}}, - {2138, {wxRadioBox, getItemFromPoint, 1}}, - {2139, {wxRadioBox, getRowCount, 0}}, - {2140, {wxRadioBox, isItemEnabled, 1}}, - {2141, {wxRadioBox, isItemShown, 1}}, - {2142, {wxRadioBox, setItemHelpText, 2}}, - {2143, {wxRadioBox, setItemToolTip, 2}}, - {2144, {wxRadioButton, new_0, 0}}, - {2145, {wxRadioButton, new_4, 4}}, - {2146, {wxRadioButton, create, 4}}, - {2147, {wxRadioButton, getValue, 0}}, - {2148, {wxRadioButton, setValue, 1}}, - {2149, {wxRadioButton, 'Destroy', undefined}}, - {2151, {wxSlider, new_6, 6}}, - {2152, {wxSlider, new_0, 0}}, - {2153, {wxSlider, create, 6}}, - {2154, {wxSlider, getLineSize, 0}}, - {2155, {wxSlider, getMax, 0}}, - {2156, {wxSlider, getMin, 0}}, - {2157, {wxSlider, getPageSize, 0}}, - {2158, {wxSlider, getThumbLength, 0}}, - {2159, {wxSlider, getValue, 0}}, - {2160, {wxSlider, setLineSize, 1}}, - {2161, {wxSlider, setPageSize, 1}}, - {2162, {wxSlider, setRange, 2}}, - {2163, {wxSlider, setThumbLength, 1}}, - {2164, {wxSlider, setValue, 1}}, - {2165, {wxSlider, 'Destroy', undefined}}, - {2167, {wxDialog, new_4, 4}}, - {2168, {wxDialog, new_0, 0}}, - {2170, {wxDialog, destruct, 0}}, - {2171, {wxDialog, create, 4}}, - {2172, {wxDialog, createButtonSizer, 1}}, - {2173, {wxDialog, createStdDialogButtonSizer, 1}}, - {2174, {wxDialog, endModal, 1}}, - {2175, {wxDialog, getAffirmativeId, 0}}, - {2176, {wxDialog, getReturnCode, 0}}, - {2177, {wxDialog, isModal, 0}}, - {2178, {wxDialog, setAffirmativeId, 1}}, - {2179, {wxDialog, setReturnCode, 1}}, - {2180, {wxDialog, show, 1}}, - {2181, {wxDialog, showModal, 0}}, - {2182, {wxColourDialog, new_0, 0}}, - {2183, {wxColourDialog, new_2, 2}}, - {2184, {wxColourDialog, destruct, 0}}, - {2185, {wxColourDialog, create, 2}}, - {2186, {wxColourDialog, getColourData, 0}}, - {2187, {wxColourData, new_0, 0}}, - {2188, {wxColourData, new_1, 1}}, - {2189, {wxColourData, destruct, 0}}, - {2190, {wxColourData, getChooseFull, 0}}, - {2191, {wxColourData, getColour, 0}}, - {2193, {wxColourData, getCustomColour, 1}}, - {2194, {wxColourData, setChooseFull, 1}}, - {2195, {wxColourData, setColour, 1}}, - {2196, {wxColourData, setCustomColour, 2}}, - {2197, {wxPalette, new_0, 0}}, - {2198, {wxPalette, new_4, 4}}, - {2200, {wxPalette, destruct, 0}}, - {2201, {wxPalette, create, 4}}, - {2202, {wxPalette, getColoursCount, 0}}, - {2203, {wxPalette, getPixel, 3}}, - {2204, {wxPalette, getRGB, 4}}, - {2205, {wxPalette, isOk, 0}}, - {2209, {wxDirDialog, new, 2}}, - {2210, {wxDirDialog, destruct, 0}}, - {2211, {wxDirDialog, getPath, 0}}, - {2212, {wxDirDialog, getMessage, 0}}, - {2213, {wxDirDialog, setMessage, 1}}, - {2214, {wxDirDialog, setPath, 1}}, - {2218, {wxFileDialog, new, 2}}, - {2219, {wxFileDialog, destruct, 0}}, - {2220, {wxFileDialog, getDirectory, 0}}, - {2221, {wxFileDialog, getFilename, 0}}, - {2222, {wxFileDialog, getFilenames, 1}}, - {2223, {wxFileDialog, getFilterIndex, 0}}, - {2224, {wxFileDialog, getMessage, 0}}, - {2225, {wxFileDialog, getPath, 0}}, - {2226, {wxFileDialog, getPaths, 1}}, - {2227, {wxFileDialog, getWildcard, 0}}, - {2228, {wxFileDialog, setDirectory, 1}}, - {2229, {wxFileDialog, setFilename, 1}}, - {2230, {wxFileDialog, setFilterIndex, 1}}, - {2231, {wxFileDialog, setMessage, 1}}, - {2232, {wxFileDialog, setPath, 1}}, - {2233, {wxFileDialog, setWildcard, 1}}, - {2234, {wxPickerBase, setInternalMargin, 1}}, - {2235, {wxPickerBase, getInternalMargin, 0}}, - {2236, {wxPickerBase, setTextCtrlProportion, 1}}, - {2237, {wxPickerBase, setPickerCtrlProportion, 1}}, - {2238, {wxPickerBase, getTextCtrlProportion, 0}}, - {2239, {wxPickerBase, getPickerCtrlProportion, 0}}, - {2240, {wxPickerBase, hasTextCtrl, 0}}, - {2241, {wxPickerBase, getTextCtrl, 0}}, - {2242, {wxPickerBase, isTextCtrlGrowable, 0}}, - {2243, {wxPickerBase, setPickerCtrlGrowable, 1}}, - {2244, {wxPickerBase, setTextCtrlGrowable, 1}}, - {2245, {wxPickerBase, isPickerCtrlGrowable, 0}}, - {2246, {wxFilePickerCtrl, new_0, 0}}, - {2247, {wxFilePickerCtrl, new_3, 3}}, - {2248, {wxFilePickerCtrl, create, 3}}, - {2249, {wxFilePickerCtrl, getPath, 0}}, - {2250, {wxFilePickerCtrl, setPath, 1}}, - {2251, {wxFilePickerCtrl, 'Destroy', undefined}}, - {2252, {wxDirPickerCtrl, new_0, 0}}, - {2253, {wxDirPickerCtrl, new_3, 3}}, - {2254, {wxDirPickerCtrl, create, 3}}, - {2255, {wxDirPickerCtrl, getPath, 0}}, - {2256, {wxDirPickerCtrl, setPath, 1}}, - {2257, {wxDirPickerCtrl, 'Destroy', undefined}}, - {2258, {wxColourPickerCtrl, new_0, 0}}, - {2259, {wxColourPickerCtrl, new_3, 3}}, - {2260, {wxColourPickerCtrl, create, 3}}, - {2261, {wxColourPickerCtrl, getColour, 0}}, - {2262, {wxColourPickerCtrl, setColour_1_1, 1}}, - {2263, {wxColourPickerCtrl, setColour_1_0, 1}}, - {2264, {wxColourPickerCtrl, 'Destroy', undefined}}, - {2265, {wxDatePickerCtrl, new_0, 0}}, - {2266, {wxDatePickerCtrl, new_3, 3}}, - {2267, {wxDatePickerCtrl, getRange, 2}}, - {2268, {wxDatePickerCtrl, getValue, 0}}, - {2269, {wxDatePickerCtrl, setRange, 2}}, - {2270, {wxDatePickerCtrl, setValue, 1}}, - {2271, {wxDatePickerCtrl, 'Destroy', undefined}}, - {2272, {wxFontPickerCtrl, new_0, 0}}, - {2273, {wxFontPickerCtrl, new_3, 3}}, - {2274, {wxFontPickerCtrl, create, 3}}, - {2275, {wxFontPickerCtrl, getSelectedFont, 0}}, - {2276, {wxFontPickerCtrl, setSelectedFont, 1}}, - {2277, {wxFontPickerCtrl, getMaxPointSize, 0}}, - {2278, {wxFontPickerCtrl, setMaxPointSize, 1}}, - {2279, {wxFontPickerCtrl, 'Destroy', undefined}}, - {2282, {wxFindReplaceDialog, new_0, 0}}, - {2283, {wxFindReplaceDialog, new_4, 4}}, - {2284, {wxFindReplaceDialog, destruct, 0}}, - {2285, {wxFindReplaceDialog, create, 4}}, - {2286, {wxFindReplaceDialog, getData, 0}}, - {2287, {wxFindReplaceData, new_0, 0}}, - {2288, {wxFindReplaceData, new_1, 1}}, - {2289, {wxFindReplaceData, getFindString, 0}}, - {2290, {wxFindReplaceData, getReplaceString, 0}}, - {2291, {wxFindReplaceData, getFlags, 0}}, - {2292, {wxFindReplaceData, setFlags, 1}}, - {2293, {wxFindReplaceData, setFindString, 1}}, - {2294, {wxFindReplaceData, setReplaceString, 1}}, - {2295, {wxFindReplaceData, 'Destroy', undefined}}, - {2296, {wxMultiChoiceDialog, new_0, 0}}, - {2298, {wxMultiChoiceDialog, new_5, 5}}, - {2299, {wxMultiChoiceDialog, getSelections, 0}}, - {2300, {wxMultiChoiceDialog, setSelections, 1}}, - {2301, {wxMultiChoiceDialog, 'Destroy', undefined}}, - {2302, {wxSingleChoiceDialog, new_0, 0}}, - {2304, {wxSingleChoiceDialog, new_5, 5}}, - {2305, {wxSingleChoiceDialog, getSelection, 0}}, - {2306, {wxSingleChoiceDialog, getStringSelection, 0}}, - {2307, {wxSingleChoiceDialog, setSelection, 1}}, - {2308, {wxSingleChoiceDialog, 'Destroy', undefined}}, - {2309, {wxTextEntryDialog, new, 3}}, - {2310, {wxTextEntryDialog, getValue, 0}}, - {2311, {wxTextEntryDialog, setValue, 1}}, - {2312, {wxTextEntryDialog, 'Destroy', undefined}}, - {2313, {wxPasswordEntryDialog, new, 3}}, - {2314, {wxPasswordEntryDialog, 'Destroy', undefined}}, - {2315, {wxFontData, new_0, 0}}, - {2316, {wxFontData, new_1, 1}}, - {2317, {wxFontData, destruct, 0}}, - {2318, {wxFontData, enableEffects, 1}}, - {2319, {wxFontData, getAllowSymbols, 0}}, - {2320, {wxFontData, getColour, 0}}, - {2321, {wxFontData, getChosenFont, 0}}, - {2322, {wxFontData, getEnableEffects, 0}}, - {2323, {wxFontData, getInitialFont, 0}}, - {2324, {wxFontData, getShowHelp, 0}}, - {2325, {wxFontData, setAllowSymbols, 1}}, - {2326, {wxFontData, setChosenFont, 1}}, - {2327, {wxFontData, setColour, 1}}, - {2328, {wxFontData, setInitialFont, 1}}, - {2329, {wxFontData, setRange, 2}}, - {2330, {wxFontData, setShowHelp, 1}}, - {2334, {wxFontDialog, new_0, 0}}, - {2336, {wxFontDialog, new_2, 2}}, - {2338, {wxFontDialog, create, 2}}, - {2339, {wxFontDialog, getFontData, 0}}, - {2341, {wxFontDialog, 'Destroy', undefined}}, - {2342, {wxProgressDialog, new, 3}}, - {2343, {wxProgressDialog, destruct, 0}}, - {2344, {wxProgressDialog, resume, 0}}, - {2345, {wxProgressDialog, update_2, 2}}, - {2346, {wxProgressDialog, update_0, 0}}, - {2347, {wxMessageDialog, new, 3}}, - {2348, {wxMessageDialog, destruct, 0}}, - {2349, {wxPageSetupDialog, new, 2}}, - {2350, {wxPageSetupDialog, destruct, 0}}, - {2351, {wxPageSetupDialog, getPageSetupData, 0}}, - {2352, {wxPageSetupDialog, showModal, 0}}, - {2353, {wxPageSetupDialogData, new_0, 0}}, - {2354, {wxPageSetupDialogData, new_1_0, 1}}, - {2355, {wxPageSetupDialogData, new_1_1, 1}}, - {2356, {wxPageSetupDialogData, destruct, 0}}, - {2357, {wxPageSetupDialogData, enableHelp, 1}}, - {2358, {wxPageSetupDialogData, enableMargins, 1}}, - {2359, {wxPageSetupDialogData, enableOrientation, 1}}, - {2360, {wxPageSetupDialogData, enablePaper, 1}}, - {2361, {wxPageSetupDialogData, enablePrinter, 1}}, - {2362, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, - {2363, {wxPageSetupDialogData, getEnableMargins, 0}}, - {2364, {wxPageSetupDialogData, getEnableOrientation, 0}}, - {2365, {wxPageSetupDialogData, getEnablePaper, 0}}, - {2366, {wxPageSetupDialogData, getEnablePrinter, 0}}, - {2367, {wxPageSetupDialogData, getEnableHelp, 0}}, - {2368, {wxPageSetupDialogData, getDefaultInfo, 0}}, - {2369, {wxPageSetupDialogData, getMarginTopLeft, 0}}, - {2370, {wxPageSetupDialogData, getMarginBottomRight, 0}}, - {2371, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, - {2372, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, - {2373, {wxPageSetupDialogData, getPaperId, 0}}, - {2374, {wxPageSetupDialogData, getPaperSize, 0}}, - {2376, {wxPageSetupDialogData, getPrintData, 0}}, - {2377, {wxPageSetupDialogData, isOk, 0}}, - {2378, {wxPageSetupDialogData, setDefaultInfo, 1}}, - {2379, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, - {2380, {wxPageSetupDialogData, setMarginTopLeft, 1}}, - {2381, {wxPageSetupDialogData, setMarginBottomRight, 1}}, - {2382, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, - {2383, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, - {2384, {wxPageSetupDialogData, setPaperId, 1}}, - {2385, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, - {2386, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, - {2387, {wxPageSetupDialogData, setPrintData, 1}}, - {2388, {wxPrintDialog, new_2_0, 2}}, - {2389, {wxPrintDialog, new_2_1, 2}}, - {2390, {wxPrintDialog, destruct, 0}}, - {2391, {wxPrintDialog, getPrintDialogData, 0}}, - {2392, {wxPrintDialog, getPrintDC, 0}}, - {2393, {wxPrintDialogData, new_0, 0}}, - {2394, {wxPrintDialogData, new_1_1, 1}}, - {2395, {wxPrintDialogData, new_1_0, 1}}, - {2396, {wxPrintDialogData, destruct, 0}}, - {2397, {wxPrintDialogData, enableHelp, 1}}, - {2398, {wxPrintDialogData, enablePageNumbers, 1}}, - {2399, {wxPrintDialogData, enablePrintToFile, 1}}, - {2400, {wxPrintDialogData, enableSelection, 1}}, - {2401, {wxPrintDialogData, getAllPages, 0}}, - {2402, {wxPrintDialogData, getCollate, 0}}, - {2403, {wxPrintDialogData, getFromPage, 0}}, - {2404, {wxPrintDialogData, getMaxPage, 0}}, - {2405, {wxPrintDialogData, getMinPage, 0}}, - {2406, {wxPrintDialogData, getNoCopies, 0}}, - {2407, {wxPrintDialogData, getPrintData, 0}}, - {2408, {wxPrintDialogData, getPrintToFile, 0}}, - {2409, {wxPrintDialogData, getSelection, 0}}, - {2410, {wxPrintDialogData, getToPage, 0}}, - {2411, {wxPrintDialogData, isOk, 0}}, - {2412, {wxPrintDialogData, setCollate, 1}}, - {2413, {wxPrintDialogData, setFromPage, 1}}, - {2414, {wxPrintDialogData, setMaxPage, 1}}, - {2415, {wxPrintDialogData, setMinPage, 1}}, - {2416, {wxPrintDialogData, setNoCopies, 1}}, - {2417, {wxPrintDialogData, setPrintData, 1}}, - {2418, {wxPrintDialogData, setPrintToFile, 1}}, - {2419, {wxPrintDialogData, setSelection, 1}}, - {2420, {wxPrintDialogData, setToPage, 1}}, - {2421, {wxPrintData, new_0, 0}}, - {2422, {wxPrintData, new_1, 1}}, - {2423, {wxPrintData, destruct, 0}}, - {2424, {wxPrintData, getCollate, 0}}, - {2425, {wxPrintData, getBin, 0}}, - {2426, {wxPrintData, getColour, 0}}, - {2427, {wxPrintData, getDuplex, 0}}, - {2428, {wxPrintData, getNoCopies, 0}}, - {2429, {wxPrintData, getOrientation, 0}}, - {2430, {wxPrintData, getPaperId, 0}}, - {2431, {wxPrintData, getPrinterName, 0}}, - {2432, {wxPrintData, getQuality, 0}}, - {2433, {wxPrintData, isOk, 0}}, - {2434, {wxPrintData, setBin, 1}}, - {2435, {wxPrintData, setCollate, 1}}, - {2436, {wxPrintData, setColour, 1}}, - {2437, {wxPrintData, setDuplex, 1}}, - {2438, {wxPrintData, setNoCopies, 1}}, - {2439, {wxPrintData, setOrientation, 1}}, - {2440, {wxPrintData, setPaperId, 1}}, - {2441, {wxPrintData, setPrinterName, 1}}, - {2442, {wxPrintData, setQuality, 1}}, - {2445, {wxPrintPreview, new_2, 2}}, - {2446, {wxPrintPreview, new_3, 3}}, - {2448, {wxPrintPreview, destruct, 0}}, - {2449, {wxPrintPreview, getCanvas, 0}}, - {2450, {wxPrintPreview, getCurrentPage, 0}}, - {2451, {wxPrintPreview, getFrame, 0}}, - {2452, {wxPrintPreview, getMaxPage, 0}}, - {2453, {wxPrintPreview, getMinPage, 0}}, - {2454, {wxPrintPreview, getPrintout, 0}}, - {2455, {wxPrintPreview, getPrintoutForPrinting, 0}}, - {2456, {wxPrintPreview, isOk, 0}}, - {2457, {wxPrintPreview, paintPage, 2}}, - {2458, {wxPrintPreview, print, 1}}, - {2459, {wxPrintPreview, renderPage, 1}}, - {2460, {wxPrintPreview, setCanvas, 1}}, - {2461, {wxPrintPreview, setCurrentPage, 1}}, - {2462, {wxPrintPreview, setFrame, 1}}, - {2463, {wxPrintPreview, setPrintout, 1}}, - {2464, {wxPrintPreview, setZoom, 1}}, - {2465, {wxPreviewFrame, new, 3}}, - {2466, {wxPreviewFrame, destruct, 0}}, - {2467, {wxPreviewFrame, createControlBar, 0}}, - {2468, {wxPreviewFrame, createCanvas, 0}}, - {2469, {wxPreviewFrame, initialize, 0}}, - {2470, {wxPreviewFrame, onCloseWindow, 1}}, - {2471, {wxPreviewControlBar, new, 4}}, - {2472, {wxPreviewControlBar, destruct, 0}}, - {2473, {wxPreviewControlBar, createButtons, 0}}, - {2474, {wxPreviewControlBar, getPrintPreview, 0}}, - {2475, {wxPreviewControlBar, getZoomControl, 0}}, - {2476, {wxPreviewControlBar, setZoomControl, 1}}, - {2478, {wxPrinter, new, 1}}, - {2479, {wxPrinter, createAbortWindow, 2}}, - {2480, {wxPrinter, getAbort, 0}}, - {2481, {wxPrinter, getLastError, 0}}, - {2482, {wxPrinter, getPrintDialogData, 0}}, - {2483, {wxPrinter, print, 3}}, - {2484, {wxPrinter, printDialog, 1}}, - {2485, {wxPrinter, reportError, 3}}, - {2486, {wxPrinter, setup, 1}}, - {2487, {wxPrinter, 'Destroy', undefined}}, - {2488, {wxXmlResource, new_1, 1}}, - {2489, {wxXmlResource, new_2, 2}}, - {2490, {wxXmlResource, destruct, 0}}, - {2491, {wxXmlResource, attachUnknownControl, 3}}, - {2492, {wxXmlResource, clearHandlers, 0}}, - {2493, {wxXmlResource, compareVersion, 4}}, - {2494, {wxXmlResource, get, 0}}, - {2495, {wxXmlResource, getFlags, 0}}, - {2496, {wxXmlResource, getVersion, 0}}, - {2497, {wxXmlResource, getXRCID, 2}}, - {2498, {wxXmlResource, initAllHandlers, 0}}, - {2499, {wxXmlResource, load, 1}}, - {2500, {wxXmlResource, loadBitmap, 1}}, - {2501, {wxXmlResource, loadDialog_2, 2}}, - {2502, {wxXmlResource, loadDialog_3, 3}}, - {2503, {wxXmlResource, loadFrame_2, 2}}, - {2504, {wxXmlResource, loadFrame_3, 3}}, - {2505, {wxXmlResource, loadIcon, 1}}, - {2506, {wxXmlResource, loadMenu, 1}}, - {2507, {wxXmlResource, loadMenuBar_2, 2}}, - {2508, {wxXmlResource, loadMenuBar_1, 1}}, - {2509, {wxXmlResource, loadPanel_2, 2}}, - {2510, {wxXmlResource, loadPanel_3, 3}}, - {2511, {wxXmlResource, loadToolBar, 2}}, - {2512, {wxXmlResource, set, 1}}, - {2513, {wxXmlResource, setFlags, 1}}, - {2514, {wxXmlResource, unload, 1}}, - {2515, {wxXmlResource, xrcctrl, 3}}, - {2516, {wxHtmlEasyPrinting, new, 1}}, - {2517, {wxHtmlEasyPrinting, destruct, 0}}, - {2518, {wxHtmlEasyPrinting, getPrintData, 0}}, - {2519, {wxHtmlEasyPrinting, getPageSetupData, 0}}, - {2520, {wxHtmlEasyPrinting, previewFile, 1}}, - {2521, {wxHtmlEasyPrinting, previewText, 2}}, - {2522, {wxHtmlEasyPrinting, printFile, 1}}, - {2523, {wxHtmlEasyPrinting, printText, 2}}, - {2524, {wxHtmlEasyPrinting, pageSetup, 0}}, - {2525, {wxHtmlEasyPrinting, setFonts, 3}}, - {2526, {wxHtmlEasyPrinting, setHeader, 2}}, - {2527, {wxHtmlEasyPrinting, setFooter, 2}}, - {2529, {wxGLCanvas, new_2, 2}}, - {2530, {wxGLCanvas, new_3_1, 3}}, - {2531, {wxGLCanvas, new_3_0, 3}}, - {2532, {wxGLCanvas, getContext, 0}}, - {2534, {wxGLCanvas, setCurrent, 0}}, - {2535, {wxGLCanvas, swapBuffers, 0}}, - {2536, {wxGLCanvas, 'Destroy', undefined}}, - {2537, {wxAuiManager, new, 1}}, - {2538, {wxAuiManager, destruct, 0}}, - {2539, {wxAuiManager, addPane_2_1, 2}}, - {2540, {wxAuiManager, addPane_3, 3}}, - {2541, {wxAuiManager, addPane_2_0, 2}}, - {2542, {wxAuiManager, detachPane, 1}}, - {2543, {wxAuiManager, getAllPanes, 0}}, - {2544, {wxAuiManager, getArtProvider, 0}}, - {2545, {wxAuiManager, getDockSizeConstraint, 2}}, - {2546, {wxAuiManager, getFlags, 0}}, - {2547, {wxAuiManager, getManagedWindow, 0}}, - {2548, {wxAuiManager, getManager, 1}}, - {2549, {wxAuiManager, getPane_1_1, 1}}, - {2550, {wxAuiManager, getPane_1_0, 1}}, - {2551, {wxAuiManager, hideHint, 0}}, - {2552, {wxAuiManager, insertPane, 3}}, - {2553, {wxAuiManager, loadPaneInfo, 2}}, - {2554, {wxAuiManager, loadPerspective, 2}}, - {2555, {wxAuiManager, savePaneInfo, 1}}, - {2556, {wxAuiManager, savePerspective, 0}}, - {2557, {wxAuiManager, setArtProvider, 1}}, - {2558, {wxAuiManager, setDockSizeConstraint, 2}}, - {2559, {wxAuiManager, setFlags, 1}}, - {2560, {wxAuiManager, setManagedWindow, 1}}, - {2561, {wxAuiManager, showHint, 1}}, - {2562, {wxAuiManager, unInit, 0}}, - {2563, {wxAuiManager, update, 0}}, - {2564, {wxAuiPaneInfo, new_0, 0}}, - {2565, {wxAuiPaneInfo, new_1, 1}}, - {2566, {wxAuiPaneInfo, destruct, 0}}, - {2567, {wxAuiPaneInfo, bestSize_1, 1}}, - {2568, {wxAuiPaneInfo, bestSize_2, 2}}, - {2569, {wxAuiPaneInfo, bottom, 0}}, - {2570, {wxAuiPaneInfo, bottomDockable, 1}}, - {2571, {wxAuiPaneInfo, caption, 1}}, - {2572, {wxAuiPaneInfo, captionVisible, 1}}, - {2573, {wxAuiPaneInfo, centre, 0}}, - {2574, {wxAuiPaneInfo, centrePane, 0}}, - {2575, {wxAuiPaneInfo, closeButton, 1}}, - {2576, {wxAuiPaneInfo, defaultPane, 0}}, - {2577, {wxAuiPaneInfo, destroyOnClose, 1}}, - {2578, {wxAuiPaneInfo, direction, 1}}, - {2579, {wxAuiPaneInfo, dock, 0}}, - {2580, {wxAuiPaneInfo, dockable, 1}}, - {2581, {wxAuiPaneInfo, fixed, 0}}, - {2582, {wxAuiPaneInfo, float, 0}}, - {2583, {wxAuiPaneInfo, floatable, 1}}, - {2584, {wxAuiPaneInfo, floatingPosition_1, 1}}, - {2585, {wxAuiPaneInfo, floatingPosition_2, 2}}, - {2586, {wxAuiPaneInfo, floatingSize_1, 1}}, - {2587, {wxAuiPaneInfo, floatingSize_2, 2}}, - {2588, {wxAuiPaneInfo, gripper, 1}}, - {2589, {wxAuiPaneInfo, gripperTop, 1}}, - {2590, {wxAuiPaneInfo, hasBorder, 0}}, - {2591, {wxAuiPaneInfo, hasCaption, 0}}, - {2592, {wxAuiPaneInfo, hasCloseButton, 0}}, - {2593, {wxAuiPaneInfo, hasFlag, 1}}, - {2594, {wxAuiPaneInfo, hasGripper, 0}}, - {2595, {wxAuiPaneInfo, hasGripperTop, 0}}, - {2596, {wxAuiPaneInfo, hasMaximizeButton, 0}}, - {2597, {wxAuiPaneInfo, hasMinimizeButton, 0}}, - {2598, {wxAuiPaneInfo, hasPinButton, 0}}, - {2599, {wxAuiPaneInfo, hide, 0}}, - {2600, {wxAuiPaneInfo, isBottomDockable, 0}}, - {2601, {wxAuiPaneInfo, isDocked, 0}}, - {2602, {wxAuiPaneInfo, isFixed, 0}}, - {2603, {wxAuiPaneInfo, isFloatable, 0}}, - {2604, {wxAuiPaneInfo, isFloating, 0}}, - {2605, {wxAuiPaneInfo, isLeftDockable, 0}}, - {2606, {wxAuiPaneInfo, isMovable, 0}}, - {2607, {wxAuiPaneInfo, isOk, 0}}, - {2608, {wxAuiPaneInfo, isResizable, 0}}, - {2609, {wxAuiPaneInfo, isRightDockable, 0}}, - {2610, {wxAuiPaneInfo, isShown, 0}}, - {2611, {wxAuiPaneInfo, isToolbar, 0}}, - {2612, {wxAuiPaneInfo, isTopDockable, 0}}, - {2613, {wxAuiPaneInfo, layer, 1}}, - {2614, {wxAuiPaneInfo, left, 0}}, - {2615, {wxAuiPaneInfo, leftDockable, 1}}, - {2616, {wxAuiPaneInfo, maxSize_1, 1}}, - {2617, {wxAuiPaneInfo, maxSize_2, 2}}, - {2618, {wxAuiPaneInfo, maximizeButton, 1}}, - {2619, {wxAuiPaneInfo, minSize_1, 1}}, - {2620, {wxAuiPaneInfo, minSize_2, 2}}, - {2621, {wxAuiPaneInfo, minimizeButton, 1}}, - {2622, {wxAuiPaneInfo, movable, 1}}, - {2623, {wxAuiPaneInfo, name, 1}}, - {2624, {wxAuiPaneInfo, paneBorder, 1}}, - {2625, {wxAuiPaneInfo, pinButton, 1}}, - {2626, {wxAuiPaneInfo, position, 1}}, - {2627, {wxAuiPaneInfo, resizable, 1}}, - {2628, {wxAuiPaneInfo, right, 0}}, - {2629, {wxAuiPaneInfo, rightDockable, 1}}, - {2630, {wxAuiPaneInfo, row, 1}}, - {2631, {wxAuiPaneInfo, safeSet, 1}}, - {2632, {wxAuiPaneInfo, setFlag, 2}}, - {2633, {wxAuiPaneInfo, show, 1}}, - {2634, {wxAuiPaneInfo, toolbarPane, 0}}, - {2635, {wxAuiPaneInfo, top, 0}}, - {2636, {wxAuiPaneInfo, topDockable, 1}}, - {2637, {wxAuiPaneInfo, window, 1}}, - {2638, {wxAuiNotebook, new_0, 0}}, - {2639, {wxAuiNotebook, new_2, 2}}, - {2640, {wxAuiNotebook, addPage, 3}}, - {2641, {wxAuiNotebook, create, 2}}, - {2642, {wxAuiNotebook, deletePage, 1}}, - {2643, {wxAuiNotebook, getArtProvider, 0}}, - {2644, {wxAuiNotebook, getPage, 1}}, - {2645, {wxAuiNotebook, getPageBitmap, 1}}, - {2646, {wxAuiNotebook, getPageCount, 0}}, - {2647, {wxAuiNotebook, getPageIndex, 1}}, - {2648, {wxAuiNotebook, getPageText, 1}}, - {2649, {wxAuiNotebook, getSelection, 0}}, - {2650, {wxAuiNotebook, insertPage, 4}}, - {2651, {wxAuiNotebook, removePage, 1}}, - {2652, {wxAuiNotebook, setArtProvider, 1}}, - {2653, {wxAuiNotebook, setFont, 1}}, - {2654, {wxAuiNotebook, setPageBitmap, 2}}, - {2655, {wxAuiNotebook, setPageText, 2}}, - {2656, {wxAuiNotebook, setSelection, 1}}, - {2657, {wxAuiNotebook, setTabCtrlHeight, 1}}, - {2658, {wxAuiNotebook, setUniformBitmapSize, 1}}, - {2659, {wxAuiNotebook, 'Destroy', undefined}}, - {2660, {wxMDIParentFrame, new_0, 0}}, - {2661, {wxMDIParentFrame, new_4, 4}}, - {2662, {wxMDIParentFrame, destruct, 0}}, - {2663, {wxMDIParentFrame, activateNext, 0}}, - {2664, {wxMDIParentFrame, activatePrevious, 0}}, - {2665, {wxMDIParentFrame, arrangeIcons, 0}}, - {2666, {wxMDIParentFrame, cascade, 0}}, - {2667, {wxMDIParentFrame, create, 4}}, - {2668, {wxMDIParentFrame, getActiveChild, 0}}, - {2669, {wxMDIParentFrame, getClientWindow, 0}}, - {2670, {wxMDIParentFrame, tile, 1}}, - {2671, {wxMDIChildFrame, new_0, 0}}, - {2672, {wxMDIChildFrame, new_4, 4}}, - {2673, {wxMDIChildFrame, destruct, 0}}, - {2674, {wxMDIChildFrame, activate, 0}}, - {2675, {wxMDIChildFrame, create, 4}}, - {2676, {wxMDIChildFrame, maximize, 1}}, - {2677, {wxMDIChildFrame, restore, 0}}, - {2678, {wxMDIClientWindow, new_0, 0}}, - {2679, {wxMDIClientWindow, new_2, 2}}, - {2680, {wxMDIClientWindow, destruct, 0}}, - {2681, {wxMDIClientWindow, createClient, 2}}, - {2682, {wxLayoutAlgorithm, new, 0}}, - {2683, {wxLayoutAlgorithm, layoutFrame, 2}}, - {2684, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, - {2685, {wxLayoutAlgorithm, layoutWindow, 2}}, - {2686, {wxLayoutAlgorithm, 'Destroy', undefined}}, - {2687, {wxEvent, getId, 0}}, - {2688, {wxEvent, getSkipped, 0}}, - {2689, {wxEvent, getTimestamp, 0}}, - {2690, {wxEvent, isCommandEvent, 0}}, - {2691, {wxEvent, resumePropagation, 1}}, - {2692, {wxEvent, shouldPropagate, 0}}, - {2693, {wxEvent, skip, 1}}, - {2694, {wxEvent, stopPropagation, 0}}, - {2695, {wxCommandEvent, getClientData, 0}}, - {2696, {wxCommandEvent, getExtraLong, 0}}, - {2697, {wxCommandEvent, getInt, 0}}, - {2698, {wxCommandEvent, getSelection, 0}}, - {2699, {wxCommandEvent, getString, 0}}, - {2700, {wxCommandEvent, isChecked, 0}}, - {2701, {wxCommandEvent, isSelection, 0}}, - {2702, {wxCommandEvent, setInt, 1}}, - {2703, {wxCommandEvent, setString, 1}}, - {2704, {wxScrollEvent, getOrientation, 0}}, - {2705, {wxScrollEvent, getPosition, 0}}, - {2706, {wxScrollWinEvent, getOrientation, 0}}, - {2707, {wxScrollWinEvent, getPosition, 0}}, - {2708, {wxMouseEvent, altDown, 0}}, - {2709, {wxMouseEvent, button, 1}}, - {2710, {wxMouseEvent, buttonDClick, 1}}, - {2711, {wxMouseEvent, buttonDown, 1}}, - {2712, {wxMouseEvent, buttonUp, 1}}, - {2713, {wxMouseEvent, cmdDown, 0}}, - {2714, {wxMouseEvent, controlDown, 0}}, - {2715, {wxMouseEvent, dragging, 0}}, - {2716, {wxMouseEvent, entering, 0}}, - {2717, {wxMouseEvent, getButton, 0}}, - {2720, {wxMouseEvent, getPosition, 0}}, - {2721, {wxMouseEvent, getLogicalPosition, 1}}, - {2722, {wxMouseEvent, getLinesPerAction, 0}}, - {2723, {wxMouseEvent, getWheelRotation, 0}}, - {2724, {wxMouseEvent, getWheelDelta, 0}}, - {2725, {wxMouseEvent, getX, 0}}, - {2726, {wxMouseEvent, getY, 0}}, - {2727, {wxMouseEvent, isButton, 0}}, - {2728, {wxMouseEvent, isPageScroll, 0}}, - {2729, {wxMouseEvent, leaving, 0}}, - {2730, {wxMouseEvent, leftDClick, 0}}, - {2731, {wxMouseEvent, leftDown, 0}}, - {2732, {wxMouseEvent, leftIsDown, 0}}, - {2733, {wxMouseEvent, leftUp, 0}}, - {2734, {wxMouseEvent, metaDown, 0}}, - {2735, {wxMouseEvent, middleDClick, 0}}, - {2736, {wxMouseEvent, middleDown, 0}}, - {2737, {wxMouseEvent, middleIsDown, 0}}, - {2738, {wxMouseEvent, middleUp, 0}}, - {2739, {wxMouseEvent, moving, 0}}, - {2740, {wxMouseEvent, rightDClick, 0}}, - {2741, {wxMouseEvent, rightDown, 0}}, - {2742, {wxMouseEvent, rightIsDown, 0}}, - {2743, {wxMouseEvent, rightUp, 0}}, - {2744, {wxMouseEvent, shiftDown, 0}}, - {2745, {wxSetCursorEvent, getCursor, 0}}, - {2746, {wxSetCursorEvent, getX, 0}}, - {2747, {wxSetCursorEvent, getY, 0}}, - {2748, {wxSetCursorEvent, hasCursor, 0}}, - {2749, {wxSetCursorEvent, setCursor, 1}}, - {2750, {wxKeyEvent, altDown, 0}}, - {2751, {wxKeyEvent, cmdDown, 0}}, - {2752, {wxKeyEvent, controlDown, 0}}, - {2753, {wxKeyEvent, getKeyCode, 0}}, - {2754, {wxKeyEvent, getModifiers, 0}}, - {2757, {wxKeyEvent, getPosition, 0}}, - {2758, {wxKeyEvent, getRawKeyCode, 0}}, - {2759, {wxKeyEvent, getRawKeyFlags, 0}}, - {2760, {wxKeyEvent, getUnicodeKey, 0}}, - {2761, {wxKeyEvent, getX, 0}}, - {2762, {wxKeyEvent, getY, 0}}, - {2763, {wxKeyEvent, hasModifiers, 0}}, - {2764, {wxKeyEvent, metaDown, 0}}, - {2765, {wxKeyEvent, shiftDown, 0}}, - {2766, {wxSizeEvent, getSize, 0}}, - {2767, {wxMoveEvent, getPosition, 0}}, - {2768, {wxEraseEvent, getDC, 0}}, - {2769, {wxFocusEvent, getWindow, 0}}, - {2770, {wxChildFocusEvent, getWindow, 0}}, - {2771, {wxMenuEvent, getMenu, 0}}, - {2772, {wxMenuEvent, getMenuId, 0}}, - {2773, {wxMenuEvent, isPopup, 0}}, - {2774, {wxCloseEvent, canVeto, 0}}, - {2775, {wxCloseEvent, getLoggingOff, 0}}, - {2776, {wxCloseEvent, setCanVeto, 1}}, - {2777, {wxCloseEvent, setLoggingOff, 1}}, - {2778, {wxCloseEvent, veto, 1}}, - {2779, {wxShowEvent, setShow, 1}}, - {2780, {wxShowEvent, getShow, 0}}, - {2781, {wxIconizeEvent, iconized, 0}}, - {2782, {wxJoystickEvent, buttonDown, 1}}, - {2783, {wxJoystickEvent, buttonIsDown, 1}}, - {2784, {wxJoystickEvent, buttonUp, 1}}, - {2785, {wxJoystickEvent, getButtonChange, 0}}, - {2786, {wxJoystickEvent, getButtonState, 0}}, - {2787, {wxJoystickEvent, getJoystick, 0}}, - {2788, {wxJoystickEvent, getPosition, 0}}, - {2789, {wxJoystickEvent, getZPosition, 0}}, - {2790, {wxJoystickEvent, isButton, 0}}, - {2791, {wxJoystickEvent, isMove, 0}}, - {2792, {wxJoystickEvent, isZMove, 0}}, - {2793, {wxUpdateUIEvent, canUpdate, 1}}, - {2794, {wxUpdateUIEvent, check, 1}}, - {2795, {wxUpdateUIEvent, enable, 1}}, - {2796, {wxUpdateUIEvent, show, 1}}, - {2797, {wxUpdateUIEvent, getChecked, 0}}, - {2798, {wxUpdateUIEvent, getEnabled, 0}}, - {2799, {wxUpdateUIEvent, getShown, 0}}, - {2800, {wxUpdateUIEvent, getSetChecked, 0}}, - {2801, {wxUpdateUIEvent, getSetEnabled, 0}}, - {2802, {wxUpdateUIEvent, getSetShown, 0}}, - {2803, {wxUpdateUIEvent, getSetText, 0}}, - {2804, {wxUpdateUIEvent, getText, 0}}, - {2805, {wxUpdateUIEvent, getMode, 0}}, - {2806, {wxUpdateUIEvent, getUpdateInterval, 0}}, - {2807, {wxUpdateUIEvent, resetUpdateTime, 0}}, - {2808, {wxUpdateUIEvent, setMode, 1}}, - {2809, {wxUpdateUIEvent, setText, 1}}, - {2810, {wxUpdateUIEvent, setUpdateInterval, 1}}, - {2811, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, - {2812, {wxPaletteChangedEvent, setChangedWindow, 1}}, - {2813, {wxPaletteChangedEvent, getChangedWindow, 0}}, - {2814, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, - {2815, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, - {2816, {wxNavigationKeyEvent, getDirection, 0}}, - {2817, {wxNavigationKeyEvent, setDirection, 1}}, - {2818, {wxNavigationKeyEvent, isWindowChange, 0}}, - {2819, {wxNavigationKeyEvent, setWindowChange, 1}}, - {2820, {wxNavigationKeyEvent, isFromTab, 0}}, - {2821, {wxNavigationKeyEvent, setFromTab, 1}}, - {2822, {wxNavigationKeyEvent, getCurrentFocus, 0}}, - {2823, {wxNavigationKeyEvent, setCurrentFocus, 1}}, - {2824, {wxHelpEvent, getOrigin, 0}}, - {2825, {wxHelpEvent, getPosition, 0}}, - {2826, {wxHelpEvent, setOrigin, 1}}, - {2827, {wxHelpEvent, setPosition, 1}}, - {2828, {wxContextMenuEvent, getPosition, 0}}, - {2829, {wxContextMenuEvent, setPosition, 1}}, - {2830, {wxIdleEvent, canSend, 1}}, - {2831, {wxIdleEvent, getMode, 0}}, - {2832, {wxIdleEvent, requestMore, 1}}, - {2833, {wxIdleEvent, moreRequested, 0}}, - {2834, {wxIdleEvent, setMode, 1}}, - {2835, {wxGridEvent, altDown, 0}}, - {2836, {wxGridEvent, controlDown, 0}}, - {2837, {wxGridEvent, getCol, 0}}, - {2838, {wxGridEvent, getPosition, 0}}, - {2839, {wxGridEvent, getRow, 0}}, - {2840, {wxGridEvent, metaDown, 0}}, - {2841, {wxGridEvent, selecting, 0}}, - {2842, {wxGridEvent, shiftDown, 0}}, - {2843, {wxNotifyEvent, allow, 0}}, - {2844, {wxNotifyEvent, isAllowed, 0}}, - {2845, {wxNotifyEvent, veto, 0}}, - {2846, {wxSashEvent, getEdge, 0}}, - {2847, {wxSashEvent, getDragRect, 0}}, - {2848, {wxSashEvent, getDragStatus, 0}}, - {2849, {wxListEvent, getCacheFrom, 0}}, - {2850, {wxListEvent, getCacheTo, 0}}, - {2851, {wxListEvent, getKeyCode, 0}}, - {2852, {wxListEvent, getIndex, 0}}, - {2853, {wxListEvent, getColumn, 0}}, - {2854, {wxListEvent, getPoint, 0}}, - {2855, {wxListEvent, getLabel, 0}}, - {2856, {wxListEvent, getText, 0}}, - {2857, {wxListEvent, getImage, 0}}, - {2858, {wxListEvent, getData, 0}}, - {2859, {wxListEvent, getMask, 0}}, - {2860, {wxListEvent, getItem, 0}}, - {2861, {wxListEvent, isEditCancelled, 0}}, - {2862, {wxDateEvent, getDate, 0}}, - {2863, {wxCalendarEvent, getWeekDay, 0}}, - {2864, {wxFileDirPickerEvent, getPath, 0}}, - {2865, {wxColourPickerEvent, getColour, 0}}, - {2866, {wxFontPickerEvent, getFont, 0}}, - {2867, {wxStyledTextEvent, getPosition, 0}}, - {2868, {wxStyledTextEvent, getKey, 0}}, - {2869, {wxStyledTextEvent, getModifiers, 0}}, - {2870, {wxStyledTextEvent, getModificationType, 0}}, - {2871, {wxStyledTextEvent, getText, 0}}, - {2872, {wxStyledTextEvent, getLength, 0}}, - {2873, {wxStyledTextEvent, getLinesAdded, 0}}, - {2874, {wxStyledTextEvent, getLine, 0}}, - {2875, {wxStyledTextEvent, getFoldLevelNow, 0}}, - {2876, {wxStyledTextEvent, getFoldLevelPrev, 0}}, - {2877, {wxStyledTextEvent, getMargin, 0}}, - {2878, {wxStyledTextEvent, getMessage, 0}}, - {2879, {wxStyledTextEvent, getWParam, 0}}, - {2880, {wxStyledTextEvent, getLParam, 0}}, - {2881, {wxStyledTextEvent, getListType, 0}}, - {2882, {wxStyledTextEvent, getX, 0}}, - {2883, {wxStyledTextEvent, getY, 0}}, - {2884, {wxStyledTextEvent, getDragText, 0}}, - {2885, {wxStyledTextEvent, getDragAllowMove, 0}}, - {2886, {wxStyledTextEvent, getDragResult, 0}}, - {2887, {wxStyledTextEvent, getShift, 0}}, - {2888, {wxStyledTextEvent, getControl, 0}}, - {2889, {wxStyledTextEvent, getAlt, 0}}, - {2890, {utils, getKeyState, 1}}, - {2891, {utils, getMousePosition, 2}}, - {2892, {utils, getMouseState, 0}}, - {2893, {utils, setDetectableAutoRepeat, 1}}, - {2894, {utils, bell, 0}}, - {2895, {utils, findMenuItemId, 3}}, - {2896, {utils, genericFindWindowAtPoint, 1}}, - {2897, {utils, findWindowAtPoint, 1}}, - {2898, {utils, beginBusyCursor, 1}}, - {2899, {utils, endBusyCursor, 0}}, - {2900, {utils, isBusy, 0}}, - {2901, {utils, shutdown, 1}}, - {2902, {utils, shell, 1}}, - {2903, {utils, launchDefaultBrowser, 2}}, - {2904, {utils, getEmailAddress, 0}}, - {2905, {utils, getUserId, 0}}, - {2906, {utils, getHomeDir, 0}}, - {2907, {utils, newId, 0}}, - {2908, {utils, registerId, 1}}, - {2909, {utils, getCurrentId, 0}}, - {2910, {utils, getOsDescription, 0}}, - {2911, {utils, isPlatformLittleEndian, 0}}, - {2912, {utils, isPlatform64Bit, 0}}, - {2913, {wxPrintout, new, 1}}, - {2914, {wxPrintout, destruct, 0}}, - {2915, {wxPrintout, getDC, 0}}, - {2916, {wxPrintout, getPageSizeMM, 2}}, - {2917, {wxPrintout, getPageSizePixels, 2}}, - {2918, {wxPrintout, getPaperRectPixels, 0}}, - {2919, {wxPrintout, getPPIPrinter, 2}}, - {2920, {wxPrintout, getPPIScreen, 2}}, - {2921, {wxPrintout, getTitle, 0}}, - {2922, {wxPrintout, isPreview, 0}}, - {2923, {wxPrintout, fitThisSizeToPaper, 1}}, - {2924, {wxPrintout, fitThisSizeToPage, 1}}, - {2925, {wxPrintout, fitThisSizeToPageMargins, 2}}, - {2926, {wxPrintout, mapScreenSizeToPaper, 0}}, - {2927, {wxPrintout, mapScreenSizeToPage, 0}}, - {2928, {wxPrintout, mapScreenSizeToPageMargins, 1}}, - {2929, {wxPrintout, mapScreenSizeToDevice, 0}}, - {2930, {wxPrintout, getLogicalPaperRect, 0}}, - {2931, {wxPrintout, getLogicalPageRect, 0}}, - {2932, {wxPrintout, getLogicalPageMarginsRect, 1}}, - {2933, {wxPrintout, setLogicalOrigin, 2}}, - {2934, {wxPrintout, offsetLogicalOrigin, 2}}, - {2935, {wxStyledTextCtrl, new_2, 2}}, - {2936, {wxStyledTextCtrl, new_0, 0}}, - {2937, {wxStyledTextCtrl, destruct, 0}}, - {2938, {wxStyledTextCtrl, create, 2}}, - {2939, {wxStyledTextCtrl, addText, 1}}, - {2940, {wxStyledTextCtrl, addStyledText, 1}}, - {2941, {wxStyledTextCtrl, insertText, 2}}, - {2942, {wxStyledTextCtrl, clearAll, 0}}, - {2943, {wxStyledTextCtrl, clearDocumentStyle, 0}}, - {2944, {wxStyledTextCtrl, getLength, 0}}, - {2945, {wxStyledTextCtrl, getCharAt, 1}}, - {2946, {wxStyledTextCtrl, getCurrentPos, 0}}, - {2947, {wxStyledTextCtrl, getAnchor, 0}}, - {2948, {wxStyledTextCtrl, getStyleAt, 1}}, - {2949, {wxStyledTextCtrl, redo, 0}}, - {2950, {wxStyledTextCtrl, setUndoCollection, 1}}, - {2951, {wxStyledTextCtrl, selectAll, 0}}, - {2952, {wxStyledTextCtrl, setSavePoint, 0}}, - {2953, {wxStyledTextCtrl, getStyledText, 2}}, - {2954, {wxStyledTextCtrl, canRedo, 0}}, - {2955, {wxStyledTextCtrl, markerLineFromHandle, 1}}, - {2956, {wxStyledTextCtrl, markerDeleteHandle, 1}}, - {2957, {wxStyledTextCtrl, getUndoCollection, 0}}, - {2958, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, - {2959, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, - {2960, {wxStyledTextCtrl, positionFromPoint, 1}}, - {2961, {wxStyledTextCtrl, positionFromPointClose, 2}}, - {2962, {wxStyledTextCtrl, gotoLine, 1}}, - {2963, {wxStyledTextCtrl, gotoPos, 1}}, - {2964, {wxStyledTextCtrl, setAnchor, 1}}, - {2965, {wxStyledTextCtrl, getCurLine, 1}}, - {2966, {wxStyledTextCtrl, getEndStyled, 0}}, - {2967, {wxStyledTextCtrl, convertEOLs, 1}}, - {2968, {wxStyledTextCtrl, getEOLMode, 0}}, - {2969, {wxStyledTextCtrl, setEOLMode, 1}}, - {2970, {wxStyledTextCtrl, startStyling, 2}}, - {2971, {wxStyledTextCtrl, setStyling, 2}}, - {2972, {wxStyledTextCtrl, getBufferedDraw, 0}}, - {2973, {wxStyledTextCtrl, setBufferedDraw, 1}}, - {2974, {wxStyledTextCtrl, setTabWidth, 1}}, - {2975, {wxStyledTextCtrl, getTabWidth, 0}}, - {2976, {wxStyledTextCtrl, setCodePage, 1}}, - {2977, {wxStyledTextCtrl, markerDefine, 3}}, - {2978, {wxStyledTextCtrl, markerSetForeground, 2}}, - {2979, {wxStyledTextCtrl, markerSetBackground, 2}}, - {2980, {wxStyledTextCtrl, markerAdd, 2}}, - {2981, {wxStyledTextCtrl, markerDelete, 2}}, - {2982, {wxStyledTextCtrl, markerDeleteAll, 1}}, - {2983, {wxStyledTextCtrl, markerGet, 1}}, - {2984, {wxStyledTextCtrl, markerNext, 2}}, - {2985, {wxStyledTextCtrl, markerPrevious, 2}}, - {2986, {wxStyledTextCtrl, markerDefineBitmap, 2}}, - {2987, {wxStyledTextCtrl, markerAddSet, 2}}, - {2988, {wxStyledTextCtrl, markerSetAlpha, 2}}, - {2989, {wxStyledTextCtrl, setMarginType, 2}}, - {2990, {wxStyledTextCtrl, getMarginType, 1}}, - {2991, {wxStyledTextCtrl, setMarginWidth, 2}}, - {2992, {wxStyledTextCtrl, getMarginWidth, 1}}, - {2993, {wxStyledTextCtrl, setMarginMask, 2}}, - {2994, {wxStyledTextCtrl, getMarginMask, 1}}, - {2995, {wxStyledTextCtrl, setMarginSensitive, 2}}, - {2996, {wxStyledTextCtrl, getMarginSensitive, 1}}, - {2997, {wxStyledTextCtrl, styleClearAll, 0}}, - {2998, {wxStyledTextCtrl, styleSetForeground, 2}}, - {2999, {wxStyledTextCtrl, styleSetBackground, 2}}, - {3000, {wxStyledTextCtrl, styleSetBold, 2}}, - {3001, {wxStyledTextCtrl, styleSetItalic, 2}}, - {3002, {wxStyledTextCtrl, styleSetSize, 2}}, - {3003, {wxStyledTextCtrl, styleSetFaceName, 2}}, - {3004, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, - {3005, {wxStyledTextCtrl, styleResetDefault, 0}}, - {3006, {wxStyledTextCtrl, styleSetUnderline, 2}}, - {3007, {wxStyledTextCtrl, styleSetCase, 2}}, - {3008, {wxStyledTextCtrl, styleSetHotSpot, 2}}, - {3009, {wxStyledTextCtrl, setSelForeground, 2}}, - {3010, {wxStyledTextCtrl, setSelBackground, 2}}, - {3011, {wxStyledTextCtrl, getSelAlpha, 0}}, - {3012, {wxStyledTextCtrl, setSelAlpha, 1}}, - {3013, {wxStyledTextCtrl, setCaretForeground, 1}}, - {3014, {wxStyledTextCtrl, cmdKeyAssign, 3}}, - {3015, {wxStyledTextCtrl, cmdKeyClear, 2}}, - {3016, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, - {3017, {wxStyledTextCtrl, setStyleBytes, 2}}, - {3018, {wxStyledTextCtrl, styleSetVisible, 2}}, - {3019, {wxStyledTextCtrl, getCaretPeriod, 0}}, - {3020, {wxStyledTextCtrl, setCaretPeriod, 1}}, - {3021, {wxStyledTextCtrl, setWordChars, 1}}, - {3022, {wxStyledTextCtrl, beginUndoAction, 0}}, - {3023, {wxStyledTextCtrl, endUndoAction, 0}}, - {3024, {wxStyledTextCtrl, indicatorSetStyle, 2}}, - {3025, {wxStyledTextCtrl, indicatorGetStyle, 1}}, - {3026, {wxStyledTextCtrl, indicatorSetForeground, 2}}, - {3027, {wxStyledTextCtrl, indicatorGetForeground, 1}}, - {3028, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, - {3029, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, - {3030, {wxStyledTextCtrl, getStyleBits, 0}}, - {3031, {wxStyledTextCtrl, setLineState, 2}}, - {3032, {wxStyledTextCtrl, getLineState, 1}}, - {3033, {wxStyledTextCtrl, getMaxLineState, 0}}, - {3034, {wxStyledTextCtrl, getCaretLineVisible, 0}}, - {3035, {wxStyledTextCtrl, setCaretLineVisible, 1}}, - {3036, {wxStyledTextCtrl, getCaretLineBackground, 0}}, - {3037, {wxStyledTextCtrl, setCaretLineBackground, 1}}, - {3038, {wxStyledTextCtrl, autoCompShow, 2}}, - {3039, {wxStyledTextCtrl, autoCompCancel, 0}}, - {3040, {wxStyledTextCtrl, autoCompActive, 0}}, - {3041, {wxStyledTextCtrl, autoCompPosStart, 0}}, - {3042, {wxStyledTextCtrl, autoCompComplete, 0}}, - {3043, {wxStyledTextCtrl, autoCompStops, 1}}, - {3044, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, - {3045, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, - {3046, {wxStyledTextCtrl, autoCompSelect, 1}}, - {3047, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, - {3048, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, - {3049, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, - {3050, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, - {3051, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, - {3052, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, - {3053, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, - {3054, {wxStyledTextCtrl, userListShow, 2}}, - {3055, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, - {3056, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, - {3057, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, - {3058, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, - {3059, {wxStyledTextCtrl, registerImage, 2}}, - {3060, {wxStyledTextCtrl, clearRegisteredImages, 0}}, - {3061, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, - {3062, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, - {3063, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, - {3064, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, - {3065, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, - {3066, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, - {3067, {wxStyledTextCtrl, setIndent, 1}}, - {3068, {wxStyledTextCtrl, getIndent, 0}}, - {3069, {wxStyledTextCtrl, setUseTabs, 1}}, - {3070, {wxStyledTextCtrl, getUseTabs, 0}}, - {3071, {wxStyledTextCtrl, setLineIndentation, 2}}, - {3072, {wxStyledTextCtrl, getLineIndentation, 1}}, - {3073, {wxStyledTextCtrl, getLineIndentPosition, 1}}, - {3074, {wxStyledTextCtrl, getColumn, 1}}, - {3075, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, - {3076, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, - {3077, {wxStyledTextCtrl, setIndentationGuides, 1}}, - {3078, {wxStyledTextCtrl, getIndentationGuides, 0}}, - {3079, {wxStyledTextCtrl, setHighlightGuide, 1}}, - {3080, {wxStyledTextCtrl, getHighlightGuide, 0}}, - {3081, {wxStyledTextCtrl, getLineEndPosition, 1}}, - {3082, {wxStyledTextCtrl, getCodePage, 0}}, - {3083, {wxStyledTextCtrl, getCaretForeground, 0}}, - {3084, {wxStyledTextCtrl, getReadOnly, 0}}, - {3085, {wxStyledTextCtrl, setCurrentPos, 1}}, - {3086, {wxStyledTextCtrl, setSelectionStart, 1}}, - {3087, {wxStyledTextCtrl, getSelectionStart, 0}}, - {3088, {wxStyledTextCtrl, setSelectionEnd, 1}}, - {3089, {wxStyledTextCtrl, getSelectionEnd, 0}}, - {3090, {wxStyledTextCtrl, setPrintMagnification, 1}}, - {3091, {wxStyledTextCtrl, getPrintMagnification, 0}}, - {3092, {wxStyledTextCtrl, setPrintColourMode, 1}}, - {3093, {wxStyledTextCtrl, getPrintColourMode, 0}}, - {3094, {wxStyledTextCtrl, findText, 4}}, - {3095, {wxStyledTextCtrl, formatRange, 7}}, - {3096, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, - {3097, {wxStyledTextCtrl, getLine, 1}}, - {3098, {wxStyledTextCtrl, getLineCount, 0}}, - {3099, {wxStyledTextCtrl, setMarginLeft, 1}}, - {3100, {wxStyledTextCtrl, getMarginLeft, 0}}, - {3101, {wxStyledTextCtrl, setMarginRight, 1}}, - {3102, {wxStyledTextCtrl, getMarginRight, 0}}, - {3103, {wxStyledTextCtrl, getModify, 0}}, - {3104, {wxStyledTextCtrl, setSelection, 2}}, - {3105, {wxStyledTextCtrl, getSelectedText, 0}}, - {3106, {wxStyledTextCtrl, getTextRange, 2}}, - {3107, {wxStyledTextCtrl, hideSelection, 1}}, - {3108, {wxStyledTextCtrl, lineFromPosition, 1}}, - {3109, {wxStyledTextCtrl, positionFromLine, 1}}, - {3110, {wxStyledTextCtrl, lineScroll, 2}}, - {3111, {wxStyledTextCtrl, ensureCaretVisible, 0}}, - {3112, {wxStyledTextCtrl, replaceSelection, 1}}, - {3113, {wxStyledTextCtrl, setReadOnly, 1}}, - {3114, {wxStyledTextCtrl, canPaste, 0}}, - {3115, {wxStyledTextCtrl, canUndo, 0}}, - {3116, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, - {3117, {wxStyledTextCtrl, undo, 0}}, - {3118, {wxStyledTextCtrl, cut, 0}}, - {3119, {wxStyledTextCtrl, copy, 0}}, - {3120, {wxStyledTextCtrl, paste, 0}}, - {3121, {wxStyledTextCtrl, clear, 0}}, - {3122, {wxStyledTextCtrl, setText, 1}}, - {3123, {wxStyledTextCtrl, getText, 0}}, - {3124, {wxStyledTextCtrl, getTextLength, 0}}, - {3125, {wxStyledTextCtrl, getOvertype, 0}}, - {3126, {wxStyledTextCtrl, setCaretWidth, 1}}, - {3127, {wxStyledTextCtrl, getCaretWidth, 0}}, - {3128, {wxStyledTextCtrl, setTargetStart, 1}}, - {3129, {wxStyledTextCtrl, getTargetStart, 0}}, - {3130, {wxStyledTextCtrl, setTargetEnd, 1}}, - {3131, {wxStyledTextCtrl, getTargetEnd, 0}}, - {3132, {wxStyledTextCtrl, replaceTarget, 1}}, - {3133, {wxStyledTextCtrl, searchInTarget, 1}}, - {3134, {wxStyledTextCtrl, setSearchFlags, 1}}, - {3135, {wxStyledTextCtrl, getSearchFlags, 0}}, - {3136, {wxStyledTextCtrl, callTipShow, 2}}, - {3137, {wxStyledTextCtrl, callTipCancel, 0}}, - {3138, {wxStyledTextCtrl, callTipActive, 0}}, - {3139, {wxStyledTextCtrl, callTipPosAtStart, 0}}, - {3140, {wxStyledTextCtrl, callTipSetHighlight, 2}}, - {3141, {wxStyledTextCtrl, callTipSetBackground, 1}}, - {3142, {wxStyledTextCtrl, callTipSetForeground, 1}}, - {3143, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, - {3144, {wxStyledTextCtrl, callTipUseStyle, 1}}, - {3145, {wxStyledTextCtrl, visibleFromDocLine, 1}}, - {3146, {wxStyledTextCtrl, docLineFromVisible, 1}}, - {3147, {wxStyledTextCtrl, wrapCount, 1}}, - {3148, {wxStyledTextCtrl, setFoldLevel, 2}}, - {3149, {wxStyledTextCtrl, getFoldLevel, 1}}, - {3150, {wxStyledTextCtrl, getLastChild, 2}}, - {3151, {wxStyledTextCtrl, getFoldParent, 1}}, - {3152, {wxStyledTextCtrl, showLines, 2}}, - {3153, {wxStyledTextCtrl, hideLines, 2}}, - {3154, {wxStyledTextCtrl, getLineVisible, 1}}, - {3155, {wxStyledTextCtrl, setFoldExpanded, 2}}, - {3156, {wxStyledTextCtrl, getFoldExpanded, 1}}, - {3157, {wxStyledTextCtrl, toggleFold, 1}}, - {3158, {wxStyledTextCtrl, ensureVisible, 1}}, - {3159, {wxStyledTextCtrl, setFoldFlags, 1}}, - {3160, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, - {3161, {wxStyledTextCtrl, setTabIndents, 1}}, - {3162, {wxStyledTextCtrl, getTabIndents, 0}}, - {3163, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, - {3164, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, - {3165, {wxStyledTextCtrl, setMouseDwellTime, 1}}, - {3166, {wxStyledTextCtrl, getMouseDwellTime, 0}}, - {3167, {wxStyledTextCtrl, wordStartPosition, 2}}, - {3168, {wxStyledTextCtrl, wordEndPosition, 2}}, - {3169, {wxStyledTextCtrl, setWrapMode, 1}}, - {3170, {wxStyledTextCtrl, getWrapMode, 0}}, - {3171, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, - {3172, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, - {3173, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, - {3174, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, - {3175, {wxStyledTextCtrl, setWrapStartIndent, 1}}, - {3176, {wxStyledTextCtrl, getWrapStartIndent, 0}}, - {3177, {wxStyledTextCtrl, setLayoutCache, 1}}, - {3178, {wxStyledTextCtrl, getLayoutCache, 0}}, - {3179, {wxStyledTextCtrl, setScrollWidth, 1}}, - {3180, {wxStyledTextCtrl, getScrollWidth, 0}}, - {3181, {wxStyledTextCtrl, textWidth, 2}}, - {3182, {wxStyledTextCtrl, getEndAtLastLine, 0}}, - {3183, {wxStyledTextCtrl, textHeight, 1}}, - {3184, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, - {3185, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, - {3186, {wxStyledTextCtrl, appendText, 1}}, - {3187, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, - {3188, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, - {3189, {wxStyledTextCtrl, targetFromSelection, 0}}, - {3190, {wxStyledTextCtrl, linesJoin, 0}}, - {3191, {wxStyledTextCtrl, linesSplit, 1}}, - {3192, {wxStyledTextCtrl, setFoldMarginColour, 2}}, - {3193, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, - {3194, {wxStyledTextCtrl, lineDown, 0}}, - {3195, {wxStyledTextCtrl, lineDownExtend, 0}}, - {3196, {wxStyledTextCtrl, lineUp, 0}}, - {3197, {wxStyledTextCtrl, lineUpExtend, 0}}, - {3198, {wxStyledTextCtrl, charLeft, 0}}, - {3199, {wxStyledTextCtrl, charLeftExtend, 0}}, - {3200, {wxStyledTextCtrl, charRight, 0}}, - {3201, {wxStyledTextCtrl, charRightExtend, 0}}, - {3202, {wxStyledTextCtrl, wordLeft, 0}}, - {3203, {wxStyledTextCtrl, wordLeftExtend, 0}}, - {3204, {wxStyledTextCtrl, wordRight, 0}}, - {3205, {wxStyledTextCtrl, wordRightExtend, 0}}, - {3206, {wxStyledTextCtrl, home, 0}}, - {3207, {wxStyledTextCtrl, homeExtend, 0}}, - {3208, {wxStyledTextCtrl, lineEnd, 0}}, - {3209, {wxStyledTextCtrl, lineEndExtend, 0}}, - {3210, {wxStyledTextCtrl, documentStart, 0}}, - {3211, {wxStyledTextCtrl, documentStartExtend, 0}}, - {3212, {wxStyledTextCtrl, documentEnd, 0}}, - {3213, {wxStyledTextCtrl, documentEndExtend, 0}}, - {3214, {wxStyledTextCtrl, pageUp, 0}}, - {3215, {wxStyledTextCtrl, pageUpExtend, 0}}, - {3216, {wxStyledTextCtrl, pageDown, 0}}, - {3217, {wxStyledTextCtrl, pageDownExtend, 0}}, - {3218, {wxStyledTextCtrl, editToggleOvertype, 0}}, - {3219, {wxStyledTextCtrl, cancel, 0}}, - {3220, {wxStyledTextCtrl, deleteBack, 0}}, - {3221, {wxStyledTextCtrl, tab, 0}}, - {3222, {wxStyledTextCtrl, backTab, 0}}, - {3223, {wxStyledTextCtrl, newLine, 0}}, - {3224, {wxStyledTextCtrl, formFeed, 0}}, - {3225, {wxStyledTextCtrl, vCHome, 0}}, - {3226, {wxStyledTextCtrl, vCHomeExtend, 0}}, - {3227, {wxStyledTextCtrl, zoomIn, 0}}, - {3228, {wxStyledTextCtrl, zoomOut, 0}}, - {3229, {wxStyledTextCtrl, delWordLeft, 0}}, - {3230, {wxStyledTextCtrl, delWordRight, 0}}, - {3231, {wxStyledTextCtrl, lineCut, 0}}, - {3232, {wxStyledTextCtrl, lineDelete, 0}}, - {3233, {wxStyledTextCtrl, lineTranspose, 0}}, - {3234, {wxStyledTextCtrl, lineDuplicate, 0}}, - {3235, {wxStyledTextCtrl, lowerCase, 0}}, - {3236, {wxStyledTextCtrl, upperCase, 0}}, - {3237, {wxStyledTextCtrl, lineScrollDown, 0}}, - {3238, {wxStyledTextCtrl, lineScrollUp, 0}}, - {3239, {wxStyledTextCtrl, deleteBackNotLine, 0}}, - {3240, {wxStyledTextCtrl, homeDisplay, 0}}, - {3241, {wxStyledTextCtrl, homeDisplayExtend, 0}}, - {3242, {wxStyledTextCtrl, lineEndDisplay, 0}}, - {3243, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, - {3244, {wxStyledTextCtrl, homeWrapExtend, 0}}, - {3245, {wxStyledTextCtrl, lineEndWrap, 0}}, - {3246, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, - {3247, {wxStyledTextCtrl, vCHomeWrap, 0}}, - {3248, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, - {3249, {wxStyledTextCtrl, lineCopy, 0}}, - {3250, {wxStyledTextCtrl, moveCaretInsideView, 0}}, - {3251, {wxStyledTextCtrl, lineLength, 1}}, - {3252, {wxStyledTextCtrl, braceHighlight, 2}}, - {3253, {wxStyledTextCtrl, braceBadLight, 1}}, - {3254, {wxStyledTextCtrl, braceMatch, 1}}, - {3255, {wxStyledTextCtrl, getViewEOL, 0}}, - {3256, {wxStyledTextCtrl, setViewEOL, 1}}, - {3257, {wxStyledTextCtrl, setModEventMask, 1}}, - {3258, {wxStyledTextCtrl, getEdgeColumn, 0}}, - {3259, {wxStyledTextCtrl, setEdgeColumn, 1}}, - {3260, {wxStyledTextCtrl, getEdgeMode, 0}}, - {3261, {wxStyledTextCtrl, getEdgeColour, 0}}, - {3262, {wxStyledTextCtrl, setEdgeColour, 1}}, - {3263, {wxStyledTextCtrl, searchAnchor, 0}}, - {3264, {wxStyledTextCtrl, searchNext, 2}}, - {3265, {wxStyledTextCtrl, searchPrev, 2}}, - {3266, {wxStyledTextCtrl, linesOnScreen, 0}}, - {3267, {wxStyledTextCtrl, usePopUp, 1}}, - {3268, {wxStyledTextCtrl, selectionIsRectangle, 0}}, - {3269, {wxStyledTextCtrl, setZoom, 1}}, - {3270, {wxStyledTextCtrl, getZoom, 0}}, - {3271, {wxStyledTextCtrl, getModEventMask, 0}}, - {3272, {wxStyledTextCtrl, setSTCFocus, 1}}, - {3273, {wxStyledTextCtrl, getSTCFocus, 0}}, - {3274, {wxStyledTextCtrl, setStatus, 1}}, - {3275, {wxStyledTextCtrl, getStatus, 0}}, - {3276, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, - {3277, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, - {3278, {wxStyledTextCtrl, setSTCCursor, 1}}, - {3279, {wxStyledTextCtrl, getSTCCursor, 0}}, - {3280, {wxStyledTextCtrl, setControlCharSymbol, 1}}, - {3281, {wxStyledTextCtrl, getControlCharSymbol, 0}}, - {3282, {wxStyledTextCtrl, wordPartLeft, 0}}, - {3283, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, - {3284, {wxStyledTextCtrl, wordPartRight, 0}}, - {3285, {wxStyledTextCtrl, wordPartRightExtend, 0}}, - {3286, {wxStyledTextCtrl, setVisiblePolicy, 2}}, - {3287, {wxStyledTextCtrl, delLineLeft, 0}}, - {3288, {wxStyledTextCtrl, delLineRight, 0}}, - {3289, {wxStyledTextCtrl, getXOffset, 0}}, - {3290, {wxStyledTextCtrl, chooseCaretX, 0}}, - {3291, {wxStyledTextCtrl, setXCaretPolicy, 2}}, - {3292, {wxStyledTextCtrl, setYCaretPolicy, 2}}, - {3293, {wxStyledTextCtrl, getPrintWrapMode, 0}}, - {3294, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, - {3295, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, - {3296, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, - {3297, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, - {3298, {wxStyledTextCtrl, paraDownExtend, 0}}, - {3299, {wxStyledTextCtrl, paraUp, 0}}, - {3300, {wxStyledTextCtrl, paraUpExtend, 0}}, - {3301, {wxStyledTextCtrl, positionBefore, 1}}, - {3302, {wxStyledTextCtrl, positionAfter, 1}}, - {3303, {wxStyledTextCtrl, copyRange, 2}}, - {3304, {wxStyledTextCtrl, copyText, 2}}, - {3305, {wxStyledTextCtrl, setSelectionMode, 1}}, - {3306, {wxStyledTextCtrl, getSelectionMode, 0}}, - {3307, {wxStyledTextCtrl, lineDownRectExtend, 0}}, - {3308, {wxStyledTextCtrl, lineUpRectExtend, 0}}, - {3309, {wxStyledTextCtrl, charLeftRectExtend, 0}}, - {3310, {wxStyledTextCtrl, charRightRectExtend, 0}}, - {3311, {wxStyledTextCtrl, homeRectExtend, 0}}, - {3312, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, - {3313, {wxStyledTextCtrl, lineEndRectExtend, 0}}, - {3314, {wxStyledTextCtrl, pageUpRectExtend, 0}}, - {3315, {wxStyledTextCtrl, pageDownRectExtend, 0}}, - {3316, {wxStyledTextCtrl, stutteredPageUp, 0}}, - {3317, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, - {3318, {wxStyledTextCtrl, stutteredPageDown, 0}}, - {3319, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, - {3320, {wxStyledTextCtrl, wordLeftEnd, 0}}, - {3321, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, - {3322, {wxStyledTextCtrl, wordRightEnd, 0}}, - {3323, {wxStyledTextCtrl, wordRightEndExtend, 0}}, - {3324, {wxStyledTextCtrl, setWhitespaceChars, 1}}, - {3325, {wxStyledTextCtrl, setCharsDefault, 0}}, - {3326, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, - {3327, {wxStyledTextCtrl, allocate, 1}}, - {3328, {wxStyledTextCtrl, findColumn, 2}}, - {3329, {wxStyledTextCtrl, getCaretSticky, 0}}, - {3330, {wxStyledTextCtrl, setCaretSticky, 1}}, - {3331, {wxStyledTextCtrl, toggleCaretSticky, 0}}, - {3332, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, - {3333, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, - {3334, {wxStyledTextCtrl, selectionDuplicate, 0}}, - {3335, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, - {3336, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, - {3337, {wxStyledTextCtrl, startRecord, 0}}, - {3338, {wxStyledTextCtrl, stopRecord, 0}}, - {3339, {wxStyledTextCtrl, setLexer, 1}}, - {3340, {wxStyledTextCtrl, getLexer, 0}}, - {3341, {wxStyledTextCtrl, colourise, 2}}, - {3342, {wxStyledTextCtrl, setProperty, 2}}, - {3343, {wxStyledTextCtrl, setKeyWords, 2}}, - {3344, {wxStyledTextCtrl, setLexerLanguage, 1}}, - {3345, {wxStyledTextCtrl, getProperty, 1}}, - {3346, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, - {3347, {wxStyledTextCtrl, getCurrentLine, 0}}, - {3348, {wxStyledTextCtrl, styleSetSpec, 2}}, - {3349, {wxStyledTextCtrl, styleSetFont, 2}}, - {3350, {wxStyledTextCtrl, styleSetFontAttr, 7}}, - {3351, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, - {3352, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, - {3353, {wxStyledTextCtrl, cmdKeyExecute, 1}}, - {3354, {wxStyledTextCtrl, setMargins, 2}}, - {3355, {wxStyledTextCtrl, getSelection, 2}}, - {3356, {wxStyledTextCtrl, pointFromPosition, 1}}, - {3357, {wxStyledTextCtrl, scrollToLine, 1}}, - {3358, {wxStyledTextCtrl, scrollToColumn, 1}}, - {3359, {wxStyledTextCtrl, sendMsg, 2}}, - {3360, {wxStyledTextCtrl, setVScrollBar, 1}}, - {3361, {wxStyledTextCtrl, setHScrollBar, 1}}, - {3362, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, - {3363, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, - {3364, {wxStyledTextCtrl, saveFile, 1}}, - {3365, {wxStyledTextCtrl, loadFile, 1}}, - {3366, {wxStyledTextCtrl, doDragOver, 3}}, - {3367, {wxStyledTextCtrl, doDropText, 3}}, - {3368, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, - {3369, {wxStyledTextCtrl, addTextRaw, 1}}, - {3370, {wxStyledTextCtrl, insertTextRaw, 2}}, - {3371, {wxStyledTextCtrl, getCurLineRaw, 1}}, - {3372, {wxStyledTextCtrl, getLineRaw, 1}}, - {3373, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, - {3374, {wxStyledTextCtrl, getTextRangeRaw, 2}}, - {3375, {wxStyledTextCtrl, setTextRaw, 1}}, - {3376, {wxStyledTextCtrl, getTextRaw, 0}}, - {3377, {wxStyledTextCtrl, appendTextRaw, 1}}, - {3378, {wxArtProvider, getBitmap, 2}}, - {3379, {wxArtProvider, getIcon, 2}}, - {3380, {wxTreeEvent, getKeyCode, 0}}, - {3381, {wxTreeEvent, getItem, 0}}, - {3382, {wxTreeEvent, getKeyEvent, 0}}, - {3383, {wxTreeEvent, getLabel, 0}}, - {3384, {wxTreeEvent, getOldItem, 0}}, - {3385, {wxTreeEvent, getPoint, 0}}, - {3386, {wxTreeEvent, isEditCancelled, 0}}, - {3387, {wxTreeEvent, setToolTip, 1}}, - {3388, {wxNotebookEvent, getOldSelection, 0}}, - {3389, {wxNotebookEvent, getSelection, 0}}, - {3390, {wxNotebookEvent, setOldSelection, 1}}, - {3391, {wxNotebookEvent, setSelection, 1}}, - {3392, {wxFileDataObject, new, 0}}, - {3393, {wxFileDataObject, addFile, 1}}, - {3394, {wxFileDataObject, getFilenames, 0}}, - {3395, {wxFileDataObject, 'Destroy', undefined}}, - {3396, {wxTextDataObject, new, 1}}, - {3397, {wxTextDataObject, getTextLength, 0}}, - {3398, {wxTextDataObject, getText, 0}}, - {3399, {wxTextDataObject, setText, 1}}, - {3400, {wxTextDataObject, 'Destroy', undefined}}, - {3401, {wxBitmapDataObject, new_1_1, 1}}, - {3402, {wxBitmapDataObject, new_1_0, 1}}, - {3403, {wxBitmapDataObject, getBitmap, 0}}, - {3404, {wxBitmapDataObject, setBitmap, 1}}, - {3405, {wxBitmapDataObject, 'Destroy', undefined}}, - {3407, {wxClipboard, new, 0}}, - {3408, {wxClipboard, destruct, 0}}, - {3409, {wxClipboard, addData, 1}}, - {3410, {wxClipboard, clear, 0}}, - {3411, {wxClipboard, close, 0}}, - {3412, {wxClipboard, flush, 0}}, - {3413, {wxClipboard, getData, 1}}, - {3414, {wxClipboard, isOpened, 0}}, - {3415, {wxClipboard, open, 0}}, - {3416, {wxClipboard, setData, 1}}, - {3418, {wxClipboard, usePrimarySelection, 1}}, - {3419, {wxClipboard, isSupported, 1}}, - {3420, {wxClipboard, get, 0}}, - {3421, {wxSpinEvent, getPosition, 0}}, - {3422, {wxSpinEvent, setPosition, 1}}, - {3423, {wxSplitterWindow, new_0, 0}}, - {3424, {wxSplitterWindow, new_2, 2}}, - {3425, {wxSplitterWindow, destruct, 0}}, - {3426, {wxSplitterWindow, create, 2}}, - {3427, {wxSplitterWindow, getMinimumPaneSize, 0}}, - {3428, {wxSplitterWindow, getSashGravity, 0}}, - {3429, {wxSplitterWindow, getSashPosition, 0}}, - {3430, {wxSplitterWindow, getSplitMode, 0}}, - {3431, {wxSplitterWindow, getWindow1, 0}}, - {3432, {wxSplitterWindow, getWindow2, 0}}, - {3433, {wxSplitterWindow, initialize, 1}}, - {3434, {wxSplitterWindow, isSplit, 0}}, - {3435, {wxSplitterWindow, replaceWindow, 2}}, - {3436, {wxSplitterWindow, setSashGravity, 1}}, - {3437, {wxSplitterWindow, setSashPosition, 2}}, - {3438, {wxSplitterWindow, setSashSize, 1}}, - {3439, {wxSplitterWindow, setMinimumPaneSize, 1}}, - {3440, {wxSplitterWindow, setSplitMode, 1}}, - {3441, {wxSplitterWindow, splitHorizontally, 3}}, - {3442, {wxSplitterWindow, splitVertically, 3}}, - {3443, {wxSplitterWindow, unsplit, 1}}, - {3444, {wxSplitterWindow, updateSize, 0}}, - {3445, {wxSplitterEvent, getSashPosition, 0}}, - {3446, {wxSplitterEvent, getX, 0}}, - {3447, {wxSplitterEvent, getY, 0}}, - {3448, {wxSplitterEvent, getWindowBeingRemoved, 0}}, - {3449, {wxSplitterEvent, setSashPosition, 1}}, - {3450, {wxHtmlWindow, new_0, 0}}, - {3451, {wxHtmlWindow, new_2, 2}}, - {3452, {wxHtmlWindow, appendToPage, 1}}, - {3453, {wxHtmlWindow, getOpenedAnchor, 0}}, - {3454, {wxHtmlWindow, getOpenedPage, 0}}, - {3455, {wxHtmlWindow, getOpenedPageTitle, 0}}, - {3456, {wxHtmlWindow, getRelatedFrame, 0}}, - {3457, {wxHtmlWindow, historyBack, 0}}, - {3458, {wxHtmlWindow, historyCanBack, 0}}, - {3459, {wxHtmlWindow, historyCanForward, 0}}, - {3460, {wxHtmlWindow, historyClear, 0}}, - {3461, {wxHtmlWindow, historyForward, 0}}, - {3462, {wxHtmlWindow, loadFile, 1}}, - {3463, {wxHtmlWindow, loadPage, 1}}, - {3464, {wxHtmlWindow, selectAll, 0}}, - {3465, {wxHtmlWindow, selectionToText, 0}}, - {3466, {wxHtmlWindow, selectLine, 1}}, - {3467, {wxHtmlWindow, selectWord, 1}}, - {3468, {wxHtmlWindow, setBorders, 1}}, - {3469, {wxHtmlWindow, setFonts, 3}}, - {3470, {wxHtmlWindow, setPage, 1}}, - {3471, {wxHtmlWindow, setRelatedFrame, 2}}, - {3472, {wxHtmlWindow, setRelatedStatusBar, 1}}, - {3473, {wxHtmlWindow, toText, 0}}, - {3474, {wxHtmlWindow, 'Destroy', undefined}}, - {3475, {wxHtmlLinkEvent, getLinkInfo, 0}}, - {3476, {wxSystemSettings, getColour, 1}}, - {3477, {wxSystemSettings, getFont, 1}}, - {3478, {wxSystemSettings, getMetric, 2}}, - {3479, {wxSystemSettings, getScreenType, 0}}, - {3480, {wxAuiNotebookEvent, setSelection, 1}}, - {3481, {wxAuiNotebookEvent, getSelection, 0}}, - {3482, {wxAuiNotebookEvent, setOldSelection, 1}}, - {3483, {wxAuiNotebookEvent, getOldSelection, 0}}, - {3484, {wxAuiNotebookEvent, setDragSource, 1}}, - {3485, {wxAuiNotebookEvent, getDragSource, 0}}, - {3486, {wxAuiManagerEvent, setManager, 1}}, - {3487, {wxAuiManagerEvent, getManager, 0}}, - {3488, {wxAuiManagerEvent, setPane, 1}}, - {3489, {wxAuiManagerEvent, getPane, 0}}, - {3490, {wxAuiManagerEvent, setButton, 1}}, - {3491, {wxAuiManagerEvent, getButton, 0}}, - {3492, {wxAuiManagerEvent, setDC, 1}}, - {3493, {wxAuiManagerEvent, getDC, 0}}, - {3494, {wxAuiManagerEvent, veto, 1}}, - {3495, {wxAuiManagerEvent, getVeto, 0}}, - {3496, {wxAuiManagerEvent, setCanVeto, 1}}, - {3497, {wxAuiManagerEvent, canVeto, 0}}, - {3498, {wxLogNull, new, 0}}, - {3499, {wxLogNull, 'Destroy', undefined}}, + {1757, {wxListItemAttr, new_0, 0}}, + {1758, {wxListItemAttr, new_3, 3}}, + {1759, {wxListItemAttr, getBackgroundColour, 0}}, + {1760, {wxListItemAttr, getFont, 0}}, + {1761, {wxListItemAttr, getTextColour, 0}}, + {1762, {wxListItemAttr, hasBackgroundColour, 0}}, + {1763, {wxListItemAttr, hasFont, 0}}, + {1764, {wxListItemAttr, hasTextColour, 0}}, + {1765, {wxListItemAttr, setBackgroundColour, 1}}, + {1766, {wxListItemAttr, setFont, 1}}, + {1767, {wxListItemAttr, setTextColour, 1}}, + {1768, {wxListItemAttr, 'Destroy', undefined}}, + {1769, {wxImageList, new_0, 0}}, + {1770, {wxImageList, new_3, 3}}, + {1771, {wxImageList, add_1, 1}}, + {1772, {wxImageList, add_2_0, 2}}, + {1773, {wxImageList, add_2_1, 2}}, + {1774, {wxImageList, create, 3}}, + {1776, {wxImageList, draw, 5}}, + {1777, {wxImageList, getBitmap, 1}}, + {1778, {wxImageList, getIcon, 1}}, + {1779, {wxImageList, getImageCount, 0}}, + {1780, {wxImageList, getSize, 3}}, + {1781, {wxImageList, remove, 1}}, + {1782, {wxImageList, removeAll, 0}}, + {1783, {wxImageList, replace_2, 2}}, + {1784, {wxImageList, replace_3, 3}}, + {1785, {wxImageList, 'Destroy', undefined}}, + {1786, {wxTextAttr, new_0, 0}}, + {1787, {wxTextAttr, new_2, 2}}, + {1788, {wxTextAttr, getAlignment, 0}}, + {1789, {wxTextAttr, getBackgroundColour, 0}}, + {1790, {wxTextAttr, getFont, 0}}, + {1791, {wxTextAttr, getLeftIndent, 0}}, + {1792, {wxTextAttr, getLeftSubIndent, 0}}, + {1793, {wxTextAttr, getRightIndent, 0}}, + {1794, {wxTextAttr, getTabs, 0}}, + {1795, {wxTextAttr, getTextColour, 0}}, + {1796, {wxTextAttr, hasBackgroundColour, 0}}, + {1797, {wxTextAttr, hasFont, 0}}, + {1798, {wxTextAttr, hasTextColour, 0}}, + {1799, {wxTextAttr, getFlags, 0}}, + {1800, {wxTextAttr, isDefault, 0}}, + {1801, {wxTextAttr, setAlignment, 1}}, + {1802, {wxTextAttr, setBackgroundColour, 1}}, + {1803, {wxTextAttr, setFlags, 1}}, + {1804, {wxTextAttr, setFont, 2}}, + {1805, {wxTextAttr, setLeftIndent, 2}}, + {1806, {wxTextAttr, setRightIndent, 1}}, + {1807, {wxTextAttr, setTabs, 1}}, + {1808, {wxTextAttr, setTextColour, 1}}, + {1809, {wxTextAttr, 'Destroy', undefined}}, + {1811, {wxTextCtrl, new_3, 3}}, + {1812, {wxTextCtrl, new_0, 0}}, + {1814, {wxTextCtrl, destruct, 0}}, + {1815, {wxTextCtrl, appendText, 1}}, + {1816, {wxTextCtrl, canCopy, 0}}, + {1817, {wxTextCtrl, canCut, 0}}, + {1818, {wxTextCtrl, canPaste, 0}}, + {1819, {wxTextCtrl, canRedo, 0}}, + {1820, {wxTextCtrl, canUndo, 0}}, + {1821, {wxTextCtrl, clear, 0}}, + {1822, {wxTextCtrl, copy, 0}}, + {1823, {wxTextCtrl, create, 3}}, + {1824, {wxTextCtrl, cut, 0}}, + {1825, {wxTextCtrl, discardEdits, 0}}, + {1826, {wxTextCtrl, emulateKeyPress, 1}}, + {1827, {wxTextCtrl, getDefaultStyle, 0}}, + {1828, {wxTextCtrl, getInsertionPoint, 0}}, + {1829, {wxTextCtrl, getLastPosition, 0}}, + {1830, {wxTextCtrl, getLineLength, 1}}, + {1831, {wxTextCtrl, getLineText, 1}}, + {1832, {wxTextCtrl, getNumberOfLines, 0}}, + {1833, {wxTextCtrl, getRange, 2}}, + {1834, {wxTextCtrl, getSelection, 2}}, + {1835, {wxTextCtrl, getStringSelection, 0}}, + {1836, {wxTextCtrl, getStyle, 2}}, + {1837, {wxTextCtrl, getValue, 0}}, + {1838, {wxTextCtrl, isEditable, 0}}, + {1839, {wxTextCtrl, isModified, 0}}, + {1840, {wxTextCtrl, isMultiLine, 0}}, + {1841, {wxTextCtrl, isSingleLine, 0}}, + {1842, {wxTextCtrl, loadFile, 2}}, + {1843, {wxTextCtrl, markDirty, 0}}, + {1844, {wxTextCtrl, paste, 0}}, + {1845, {wxTextCtrl, positionToXY, 3}}, + {1846, {wxTextCtrl, redo, 0}}, + {1847, {wxTextCtrl, remove, 2}}, + {1848, {wxTextCtrl, replace, 3}}, + {1849, {wxTextCtrl, saveFile, 1}}, + {1850, {wxTextCtrl, setDefaultStyle, 1}}, + {1851, {wxTextCtrl, setEditable, 1}}, + {1852, {wxTextCtrl, setInsertionPoint, 1}}, + {1853, {wxTextCtrl, setInsertionPointEnd, 0}}, + {1855, {wxTextCtrl, setMaxLength, 1}}, + {1856, {wxTextCtrl, setSelection, 2}}, + {1857, {wxTextCtrl, setStyle, 3}}, + {1858, {wxTextCtrl, setValue, 1}}, + {1859, {wxTextCtrl, showPosition, 1}}, + {1860, {wxTextCtrl, undo, 0}}, + {1861, {wxTextCtrl, writeText, 1}}, + {1862, {wxTextCtrl, xYToPosition, 2}}, + {1865, {wxNotebook, new_0, 0}}, + {1866, {wxNotebook, new_3, 3}}, + {1867, {wxNotebook, destruct, 0}}, + {1868, {wxNotebook, addPage, 3}}, + {1869, {wxNotebook, advanceSelection, 1}}, + {1870, {wxNotebook, assignImageList, 1}}, + {1871, {wxNotebook, create, 3}}, + {1872, {wxNotebook, deleteAllPages, 0}}, + {1873, {wxNotebook, deletePage, 1}}, + {1874, {wxNotebook, removePage, 1}}, + {1875, {wxNotebook, getCurrentPage, 0}}, + {1876, {wxNotebook, getImageList, 0}}, + {1878, {wxNotebook, getPage, 1}}, + {1879, {wxNotebook, getPageCount, 0}}, + {1880, {wxNotebook, getPageImage, 1}}, + {1881, {wxNotebook, getPageText, 1}}, + {1882, {wxNotebook, getRowCount, 0}}, + {1883, {wxNotebook, getSelection, 0}}, + {1884, {wxNotebook, getThemeBackgroundColour, 0}}, + {1886, {wxNotebook, hitTest, 2}}, + {1888, {wxNotebook, insertPage, 4}}, + {1889, {wxNotebook, setImageList, 1}}, + {1890, {wxNotebook, setPadding, 1}}, + {1891, {wxNotebook, setPageSize, 1}}, + {1892, {wxNotebook, setPageImage, 2}}, + {1893, {wxNotebook, setPageText, 2}}, + {1894, {wxNotebook, setSelection, 1}}, + {1895, {wxNotebook, changeSelection, 1}}, + {1896, {wxChoicebook, new_0, 0}}, + {1897, {wxChoicebook, new_3, 3}}, + {1898, {wxChoicebook, addPage, 3}}, + {1899, {wxChoicebook, advanceSelection, 1}}, + {1900, {wxChoicebook, assignImageList, 1}}, + {1901, {wxChoicebook, create, 3}}, + {1902, {wxChoicebook, deleteAllPages, 0}}, + {1903, {wxChoicebook, deletePage, 1}}, + {1904, {wxChoicebook, removePage, 1}}, + {1905, {wxChoicebook, getCurrentPage, 0}}, + {1906, {wxChoicebook, getImageList, 0}}, + {1908, {wxChoicebook, getPage, 1}}, + {1909, {wxChoicebook, getPageCount, 0}}, + {1910, {wxChoicebook, getPageImage, 1}}, + {1911, {wxChoicebook, getPageText, 1}}, + {1912, {wxChoicebook, getSelection, 0}}, + {1913, {wxChoicebook, hitTest, 2}}, + {1914, {wxChoicebook, insertPage, 4}}, + {1915, {wxChoicebook, setImageList, 1}}, + {1916, {wxChoicebook, setPageSize, 1}}, + {1917, {wxChoicebook, setPageImage, 2}}, + {1918, {wxChoicebook, setPageText, 2}}, + {1919, {wxChoicebook, setSelection, 1}}, + {1920, {wxChoicebook, changeSelection, 1}}, + {1921, {wxChoicebook, 'Destroy', undefined}}, + {1922, {wxToolbook, new_0, 0}}, + {1923, {wxToolbook, new_3, 3}}, + {1924, {wxToolbook, addPage, 3}}, + {1925, {wxToolbook, advanceSelection, 1}}, + {1926, {wxToolbook, assignImageList, 1}}, + {1927, {wxToolbook, create, 3}}, + {1928, {wxToolbook, deleteAllPages, 0}}, + {1929, {wxToolbook, deletePage, 1}}, + {1930, {wxToolbook, removePage, 1}}, + {1931, {wxToolbook, getCurrentPage, 0}}, + {1932, {wxToolbook, getImageList, 0}}, + {1934, {wxToolbook, getPage, 1}}, + {1935, {wxToolbook, getPageCount, 0}}, + {1936, {wxToolbook, getPageImage, 1}}, + {1937, {wxToolbook, getPageText, 1}}, + {1938, {wxToolbook, getSelection, 0}}, + {1940, {wxToolbook, hitTest, 2}}, + {1941, {wxToolbook, insertPage, 4}}, + {1942, {wxToolbook, setImageList, 1}}, + {1943, {wxToolbook, setPageSize, 1}}, + {1944, {wxToolbook, setPageImage, 2}}, + {1945, {wxToolbook, setPageText, 2}}, + {1946, {wxToolbook, setSelection, 1}}, + {1947, {wxToolbook, changeSelection, 1}}, + {1948, {wxToolbook, 'Destroy', undefined}}, + {1949, {wxListbook, new_0, 0}}, + {1950, {wxListbook, new_3, 3}}, + {1951, {wxListbook, addPage, 3}}, + {1952, {wxListbook, advanceSelection, 1}}, + {1953, {wxListbook, assignImageList, 1}}, + {1954, {wxListbook, create, 3}}, + {1955, {wxListbook, deleteAllPages, 0}}, + {1956, {wxListbook, deletePage, 1}}, + {1957, {wxListbook, removePage, 1}}, + {1958, {wxListbook, getCurrentPage, 0}}, + {1959, {wxListbook, getImageList, 0}}, + {1961, {wxListbook, getPage, 1}}, + {1962, {wxListbook, getPageCount, 0}}, + {1963, {wxListbook, getPageImage, 1}}, + {1964, {wxListbook, getPageText, 1}}, + {1965, {wxListbook, getSelection, 0}}, + {1967, {wxListbook, hitTest, 2}}, + {1968, {wxListbook, insertPage, 4}}, + {1969, {wxListbook, setImageList, 1}}, + {1970, {wxListbook, setPageSize, 1}}, + {1971, {wxListbook, setPageImage, 2}}, + {1972, {wxListbook, setPageText, 2}}, + {1973, {wxListbook, setSelection, 1}}, + {1974, {wxListbook, changeSelection, 1}}, + {1975, {wxListbook, 'Destroy', undefined}}, + {1976, {wxTreebook, new_0, 0}}, + {1977, {wxTreebook, new_3, 3}}, + {1978, {wxTreebook, addPage, 3}}, + {1979, {wxTreebook, advanceSelection, 1}}, + {1980, {wxTreebook, assignImageList, 1}}, + {1981, {wxTreebook, create, 3}}, + {1982, {wxTreebook, deleteAllPages, 0}}, + {1983, {wxTreebook, deletePage, 1}}, + {1984, {wxTreebook, removePage, 1}}, + {1985, {wxTreebook, getCurrentPage, 0}}, + {1986, {wxTreebook, getImageList, 0}}, + {1988, {wxTreebook, getPage, 1}}, + {1989, {wxTreebook, getPageCount, 0}}, + {1990, {wxTreebook, getPageImage, 1}}, + {1991, {wxTreebook, getPageText, 1}}, + {1992, {wxTreebook, getSelection, 0}}, + {1993, {wxTreebook, expandNode, 2}}, + {1994, {wxTreebook, isNodeExpanded, 1}}, + {1996, {wxTreebook, hitTest, 2}}, + {1997, {wxTreebook, insertPage, 4}}, + {1998, {wxTreebook, insertSubPage, 4}}, + {1999, {wxTreebook, setImageList, 1}}, + {2000, {wxTreebook, setPageSize, 1}}, + {2001, {wxTreebook, setPageImage, 2}}, + {2002, {wxTreebook, setPageText, 2}}, + {2003, {wxTreebook, setSelection, 1}}, + {2004, {wxTreebook, changeSelection, 1}}, + {2005, {wxTreebook, 'Destroy', undefined}}, + {2008, {wxTreeCtrl, new_2, 2}}, + {2009, {wxTreeCtrl, new_0, 0}}, + {2011, {wxTreeCtrl, destruct, 0}}, + {2012, {wxTreeCtrl, addRoot, 2}}, + {2013, {wxTreeCtrl, appendItem, 3}}, + {2014, {wxTreeCtrl, assignImageList, 1}}, + {2015, {wxTreeCtrl, assignStateImageList, 1}}, + {2016, {wxTreeCtrl, collapse, 1}}, + {2017, {wxTreeCtrl, collapseAndReset, 1}}, + {2018, {wxTreeCtrl, create, 2}}, + {2019, {wxTreeCtrl, delete, 1}}, + {2020, {wxTreeCtrl, deleteAllItems, 0}}, + {2021, {wxTreeCtrl, deleteChildren, 1}}, + {2022, {wxTreeCtrl, editLabel, 1}}, + {2023, {wxTreeCtrl, ensureVisible, 1}}, + {2024, {wxTreeCtrl, expand, 1}}, + {2025, {wxTreeCtrl, getBoundingRect, 3}}, + {2027, {wxTreeCtrl, getChildrenCount, 2}}, + {2028, {wxTreeCtrl, getCount, 0}}, + {2029, {wxTreeCtrl, getEditControl, 0}}, + {2030, {wxTreeCtrl, getFirstChild, 2}}, + {2031, {wxTreeCtrl, getNextChild, 2}}, + {2032, {wxTreeCtrl, getFirstVisibleItem, 0}}, + {2033, {wxTreeCtrl, getImageList, 0}}, + {2034, {wxTreeCtrl, getIndent, 0}}, + {2035, {wxTreeCtrl, getItemBackgroundColour, 1}}, + {2036, {wxTreeCtrl, getItemData, 1}}, + {2037, {wxTreeCtrl, getItemFont, 1}}, + {2038, {wxTreeCtrl, getItemImage_1, 1}}, + {2039, {wxTreeCtrl, getItemImage_2, 2}}, + {2040, {wxTreeCtrl, getItemText, 1}}, + {2041, {wxTreeCtrl, getItemTextColour, 1}}, + {2042, {wxTreeCtrl, getLastChild, 1}}, + {2043, {wxTreeCtrl, getNextSibling, 1}}, + {2044, {wxTreeCtrl, getNextVisible, 1}}, + {2045, {wxTreeCtrl, getItemParent, 1}}, + {2046, {wxTreeCtrl, getPrevSibling, 1}}, + {2047, {wxTreeCtrl, getPrevVisible, 1}}, + {2048, {wxTreeCtrl, getRootItem, 0}}, + {2049, {wxTreeCtrl, getSelection, 0}}, + {2050, {wxTreeCtrl, getSelections, 1}}, + {2051, {wxTreeCtrl, getStateImageList, 0}}, + {2052, {wxTreeCtrl, hitTest, 1}}, + {2054, {wxTreeCtrl, insertItem, 4}}, + {2055, {wxTreeCtrl, isBold, 1}}, + {2056, {wxTreeCtrl, isExpanded, 1}}, + {2057, {wxTreeCtrl, isSelected, 1}}, + {2058, {wxTreeCtrl, isVisible, 1}}, + {2059, {wxTreeCtrl, itemHasChildren, 1}}, + {2060, {wxTreeCtrl, prependItem, 3}}, + {2061, {wxTreeCtrl, scrollTo, 1}}, + {2062, {wxTreeCtrl, selectItem_1, 1}}, + {2063, {wxTreeCtrl, selectItem_2, 2}}, + {2064, {wxTreeCtrl, setIndent, 1}}, + {2065, {wxTreeCtrl, setImageList, 1}}, + {2066, {wxTreeCtrl, setItemBackgroundColour, 2}}, + {2067, {wxTreeCtrl, setItemBold, 2}}, + {2068, {wxTreeCtrl, setItemData, 2}}, + {2069, {wxTreeCtrl, setItemDropHighlight, 2}}, + {2070, {wxTreeCtrl, setItemFont, 2}}, + {2071, {wxTreeCtrl, setItemHasChildren, 2}}, + {2072, {wxTreeCtrl, setItemImage_2, 2}}, + {2073, {wxTreeCtrl, setItemImage_3, 3}}, + {2074, {wxTreeCtrl, setItemText, 2}}, + {2075, {wxTreeCtrl, setItemTextColour, 2}}, + {2076, {wxTreeCtrl, setStateImageList, 1}}, + {2077, {wxTreeCtrl, setWindowStyle, 1}}, + {2078, {wxTreeCtrl, sortChildren, 1}}, + {2079, {wxTreeCtrl, toggle, 1}}, + {2080, {wxTreeCtrl, toggleItemSelection, 1}}, + {2081, {wxTreeCtrl, unselect, 0}}, + {2082, {wxTreeCtrl, unselectAll, 0}}, + {2083, {wxTreeCtrl, unselectItem, 1}}, + {2084, {wxScrollBar, new_0, 0}}, + {2085, {wxScrollBar, new_3, 3}}, + {2086, {wxScrollBar, destruct, 0}}, + {2087, {wxScrollBar, create, 3}}, + {2088, {wxScrollBar, getRange, 0}}, + {2089, {wxScrollBar, getPageSize, 0}}, + {2090, {wxScrollBar, getThumbPosition, 0}}, + {2091, {wxScrollBar, getThumbSize, 0}}, + {2092, {wxScrollBar, setThumbPosition, 1}}, + {2093, {wxScrollBar, setScrollbar, 5}}, + {2095, {wxSpinButton, new_2, 2}}, + {2096, {wxSpinButton, new_0, 0}}, + {2097, {wxSpinButton, create, 2}}, + {2098, {wxSpinButton, getMax, 0}}, + {2099, {wxSpinButton, getMin, 0}}, + {2100, {wxSpinButton, getValue, 0}}, + {2101, {wxSpinButton, setRange, 2}}, + {2102, {wxSpinButton, setValue, 1}}, + {2103, {wxSpinButton, 'Destroy', undefined}}, + {2104, {wxSpinCtrl, new_0, 0}}, + {2105, {wxSpinCtrl, new_2, 2}}, + {2107, {wxSpinCtrl, create, 2}}, + {2110, {wxSpinCtrl, setValue_1_1, 1}}, + {2111, {wxSpinCtrl, setValue_1_0, 1}}, + {2113, {wxSpinCtrl, getValue, 0}}, + {2115, {wxSpinCtrl, setRange, 2}}, + {2116, {wxSpinCtrl, setSelection, 2}}, + {2118, {wxSpinCtrl, getMin, 0}}, + {2120, {wxSpinCtrl, getMax, 0}}, + {2121, {wxSpinCtrl, 'Destroy', undefined}}, + {2122, {wxStaticText, new_0, 0}}, + {2123, {wxStaticText, new_4, 4}}, + {2124, {wxStaticText, create, 4}}, + {2125, {wxStaticText, getLabel, 0}}, + {2126, {wxStaticText, setLabel, 1}}, + {2127, {wxStaticText, wrap, 1}}, + {2128, {wxStaticText, 'Destroy', undefined}}, + {2129, {wxStaticBitmap, new_0, 0}}, + {2130, {wxStaticBitmap, new_4, 4}}, + {2131, {wxStaticBitmap, create, 4}}, + {2132, {wxStaticBitmap, getBitmap, 0}}, + {2133, {wxStaticBitmap, setBitmap, 1}}, + {2134, {wxStaticBitmap, 'Destroy', undefined}}, + {2135, {wxRadioBox, new, 7}}, + {2137, {wxRadioBox, destruct, 0}}, + {2138, {wxRadioBox, create, 7}}, + {2139, {wxRadioBox, enable_2, 2}}, + {2140, {wxRadioBox, enable_1, 1}}, + {2141, {wxRadioBox, getSelection, 0}}, + {2142, {wxRadioBox, getString, 1}}, + {2143, {wxRadioBox, setSelection, 1}}, + {2144, {wxRadioBox, show_2, 2}}, + {2145, {wxRadioBox, show_1, 1}}, + {2146, {wxRadioBox, getColumnCount, 0}}, + {2147, {wxRadioBox, getItemHelpText, 1}}, + {2148, {wxRadioBox, getItemToolTip, 1}}, + {2150, {wxRadioBox, getItemFromPoint, 1}}, + {2151, {wxRadioBox, getRowCount, 0}}, + {2152, {wxRadioBox, isItemEnabled, 1}}, + {2153, {wxRadioBox, isItemShown, 1}}, + {2154, {wxRadioBox, setItemHelpText, 2}}, + {2155, {wxRadioBox, setItemToolTip, 2}}, + {2156, {wxRadioButton, new_0, 0}}, + {2157, {wxRadioButton, new_4, 4}}, + {2158, {wxRadioButton, create, 4}}, + {2159, {wxRadioButton, getValue, 0}}, + {2160, {wxRadioButton, setValue, 1}}, + {2161, {wxRadioButton, 'Destroy', undefined}}, + {2163, {wxSlider, new_6, 6}}, + {2164, {wxSlider, new_0, 0}}, + {2165, {wxSlider, create, 6}}, + {2166, {wxSlider, getLineSize, 0}}, + {2167, {wxSlider, getMax, 0}}, + {2168, {wxSlider, getMin, 0}}, + {2169, {wxSlider, getPageSize, 0}}, + {2170, {wxSlider, getThumbLength, 0}}, + {2171, {wxSlider, getValue, 0}}, + {2172, {wxSlider, setLineSize, 1}}, + {2173, {wxSlider, setPageSize, 1}}, + {2174, {wxSlider, setRange, 2}}, + {2175, {wxSlider, setThumbLength, 1}}, + {2176, {wxSlider, setValue, 1}}, + {2177, {wxSlider, 'Destroy', undefined}}, + {2179, {wxDialog, new_4, 4}}, + {2180, {wxDialog, new_0, 0}}, + {2182, {wxDialog, destruct, 0}}, + {2183, {wxDialog, create, 4}}, + {2184, {wxDialog, createButtonSizer, 1}}, + {2185, {wxDialog, createStdDialogButtonSizer, 1}}, + {2186, {wxDialog, endModal, 1}}, + {2187, {wxDialog, getAffirmativeId, 0}}, + {2188, {wxDialog, getReturnCode, 0}}, + {2189, {wxDialog, isModal, 0}}, + {2190, {wxDialog, setAffirmativeId, 1}}, + {2191, {wxDialog, setReturnCode, 1}}, + {2192, {wxDialog, show, 1}}, + {2193, {wxDialog, showModal, 0}}, + {2194, {wxColourDialog, new_0, 0}}, + {2195, {wxColourDialog, new_2, 2}}, + {2196, {wxColourDialog, destruct, 0}}, + {2197, {wxColourDialog, create, 2}}, + {2198, {wxColourDialog, getColourData, 0}}, + {2199, {wxColourData, new_0, 0}}, + {2200, {wxColourData, new_1, 1}}, + {2201, {wxColourData, destruct, 0}}, + {2202, {wxColourData, getChooseFull, 0}}, + {2203, {wxColourData, getColour, 0}}, + {2205, {wxColourData, getCustomColour, 1}}, + {2206, {wxColourData, setChooseFull, 1}}, + {2207, {wxColourData, setColour, 1}}, + {2208, {wxColourData, setCustomColour, 2}}, + {2209, {wxPalette, new_0, 0}}, + {2210, {wxPalette, new_4, 4}}, + {2212, {wxPalette, destruct, 0}}, + {2213, {wxPalette, create, 4}}, + {2214, {wxPalette, getColoursCount, 0}}, + {2215, {wxPalette, getPixel, 3}}, + {2216, {wxPalette, getRGB, 4}}, + {2217, {wxPalette, isOk, 0}}, + {2221, {wxDirDialog, new, 2}}, + {2222, {wxDirDialog, destruct, 0}}, + {2223, {wxDirDialog, getPath, 0}}, + {2224, {wxDirDialog, getMessage, 0}}, + {2225, {wxDirDialog, setMessage, 1}}, + {2226, {wxDirDialog, setPath, 1}}, + {2230, {wxFileDialog, new, 2}}, + {2231, {wxFileDialog, destruct, 0}}, + {2232, {wxFileDialog, getDirectory, 0}}, + {2233, {wxFileDialog, getFilename, 0}}, + {2234, {wxFileDialog, getFilenames, 1}}, + {2235, {wxFileDialog, getFilterIndex, 0}}, + {2236, {wxFileDialog, getMessage, 0}}, + {2237, {wxFileDialog, getPath, 0}}, + {2238, {wxFileDialog, getPaths, 1}}, + {2239, {wxFileDialog, getWildcard, 0}}, + {2240, {wxFileDialog, setDirectory, 1}}, + {2241, {wxFileDialog, setFilename, 1}}, + {2242, {wxFileDialog, setFilterIndex, 1}}, + {2243, {wxFileDialog, setMessage, 1}}, + {2244, {wxFileDialog, setPath, 1}}, + {2245, {wxFileDialog, setWildcard, 1}}, + {2246, {wxPickerBase, setInternalMargin, 1}}, + {2247, {wxPickerBase, getInternalMargin, 0}}, + {2248, {wxPickerBase, setTextCtrlProportion, 1}}, + {2249, {wxPickerBase, setPickerCtrlProportion, 1}}, + {2250, {wxPickerBase, getTextCtrlProportion, 0}}, + {2251, {wxPickerBase, getPickerCtrlProportion, 0}}, + {2252, {wxPickerBase, hasTextCtrl, 0}}, + {2253, {wxPickerBase, getTextCtrl, 0}}, + {2254, {wxPickerBase, isTextCtrlGrowable, 0}}, + {2255, {wxPickerBase, setPickerCtrlGrowable, 1}}, + {2256, {wxPickerBase, setTextCtrlGrowable, 1}}, + {2257, {wxPickerBase, isPickerCtrlGrowable, 0}}, + {2258, {wxFilePickerCtrl, new_0, 0}}, + {2259, {wxFilePickerCtrl, new_3, 3}}, + {2260, {wxFilePickerCtrl, create, 3}}, + {2261, {wxFilePickerCtrl, getPath, 0}}, + {2262, {wxFilePickerCtrl, setPath, 1}}, + {2263, {wxFilePickerCtrl, 'Destroy', undefined}}, + {2264, {wxDirPickerCtrl, new_0, 0}}, + {2265, {wxDirPickerCtrl, new_3, 3}}, + {2266, {wxDirPickerCtrl, create, 3}}, + {2267, {wxDirPickerCtrl, getPath, 0}}, + {2268, {wxDirPickerCtrl, setPath, 1}}, + {2269, {wxDirPickerCtrl, 'Destroy', undefined}}, + {2270, {wxColourPickerCtrl, new_0, 0}}, + {2271, {wxColourPickerCtrl, new_3, 3}}, + {2272, {wxColourPickerCtrl, create, 3}}, + {2273, {wxColourPickerCtrl, getColour, 0}}, + {2274, {wxColourPickerCtrl, setColour_1_1, 1}}, + {2275, {wxColourPickerCtrl, setColour_1_0, 1}}, + {2276, {wxColourPickerCtrl, 'Destroy', undefined}}, + {2277, {wxDatePickerCtrl, new_0, 0}}, + {2278, {wxDatePickerCtrl, new_3, 3}}, + {2279, {wxDatePickerCtrl, getRange, 2}}, + {2280, {wxDatePickerCtrl, getValue, 0}}, + {2281, {wxDatePickerCtrl, setRange, 2}}, + {2282, {wxDatePickerCtrl, setValue, 1}}, + {2283, {wxDatePickerCtrl, 'Destroy', undefined}}, + {2284, {wxFontPickerCtrl, new_0, 0}}, + {2285, {wxFontPickerCtrl, new_3, 3}}, + {2286, {wxFontPickerCtrl, create, 3}}, + {2287, {wxFontPickerCtrl, getSelectedFont, 0}}, + {2288, {wxFontPickerCtrl, setSelectedFont, 1}}, + {2289, {wxFontPickerCtrl, getMaxPointSize, 0}}, + {2290, {wxFontPickerCtrl, setMaxPointSize, 1}}, + {2291, {wxFontPickerCtrl, 'Destroy', undefined}}, + {2294, {wxFindReplaceDialog, new_0, 0}}, + {2295, {wxFindReplaceDialog, new_4, 4}}, + {2296, {wxFindReplaceDialog, destruct, 0}}, + {2297, {wxFindReplaceDialog, create, 4}}, + {2298, {wxFindReplaceDialog, getData, 0}}, + {2299, {wxFindReplaceData, new_0, 0}}, + {2300, {wxFindReplaceData, new_1, 1}}, + {2301, {wxFindReplaceData, getFindString, 0}}, + {2302, {wxFindReplaceData, getReplaceString, 0}}, + {2303, {wxFindReplaceData, getFlags, 0}}, + {2304, {wxFindReplaceData, setFlags, 1}}, + {2305, {wxFindReplaceData, setFindString, 1}}, + {2306, {wxFindReplaceData, setReplaceString, 1}}, + {2307, {wxFindReplaceData, 'Destroy', undefined}}, + {2308, {wxMultiChoiceDialog, new_0, 0}}, + {2310, {wxMultiChoiceDialog, new_5, 5}}, + {2311, {wxMultiChoiceDialog, getSelections, 0}}, + {2312, {wxMultiChoiceDialog, setSelections, 1}}, + {2313, {wxMultiChoiceDialog, 'Destroy', undefined}}, + {2314, {wxSingleChoiceDialog, new_0, 0}}, + {2316, {wxSingleChoiceDialog, new_5, 5}}, + {2317, {wxSingleChoiceDialog, getSelection, 0}}, + {2318, {wxSingleChoiceDialog, getStringSelection, 0}}, + {2319, {wxSingleChoiceDialog, setSelection, 1}}, + {2320, {wxSingleChoiceDialog, 'Destroy', undefined}}, + {2321, {wxTextEntryDialog, new, 3}}, + {2322, {wxTextEntryDialog, getValue, 0}}, + {2323, {wxTextEntryDialog, setValue, 1}}, + {2324, {wxTextEntryDialog, 'Destroy', undefined}}, + {2325, {wxPasswordEntryDialog, new, 3}}, + {2326, {wxPasswordEntryDialog, 'Destroy', undefined}}, + {2327, {wxFontData, new_0, 0}}, + {2328, {wxFontData, new_1, 1}}, + {2329, {wxFontData, destruct, 0}}, + {2330, {wxFontData, enableEffects, 1}}, + {2331, {wxFontData, getAllowSymbols, 0}}, + {2332, {wxFontData, getColour, 0}}, + {2333, {wxFontData, getChosenFont, 0}}, + {2334, {wxFontData, getEnableEffects, 0}}, + {2335, {wxFontData, getInitialFont, 0}}, + {2336, {wxFontData, getShowHelp, 0}}, + {2337, {wxFontData, setAllowSymbols, 1}}, + {2338, {wxFontData, setChosenFont, 1}}, + {2339, {wxFontData, setColour, 1}}, + {2340, {wxFontData, setInitialFont, 1}}, + {2341, {wxFontData, setRange, 2}}, + {2342, {wxFontData, setShowHelp, 1}}, + {2346, {wxFontDialog, new_0, 0}}, + {2348, {wxFontDialog, new_2, 2}}, + {2350, {wxFontDialog, create, 2}}, + {2351, {wxFontDialog, getFontData, 0}}, + {2353, {wxFontDialog, 'Destroy', undefined}}, + {2354, {wxProgressDialog, new, 3}}, + {2355, {wxProgressDialog, destruct, 0}}, + {2356, {wxProgressDialog, resume, 0}}, + {2357, {wxProgressDialog, update_2, 2}}, + {2358, {wxProgressDialog, update_0, 0}}, + {2359, {wxMessageDialog, new, 3}}, + {2360, {wxMessageDialog, destruct, 0}}, + {2361, {wxPageSetupDialog, new, 2}}, + {2362, {wxPageSetupDialog, destruct, 0}}, + {2363, {wxPageSetupDialog, getPageSetupData, 0}}, + {2364, {wxPageSetupDialog, showModal, 0}}, + {2365, {wxPageSetupDialogData, new_0, 0}}, + {2366, {wxPageSetupDialogData, new_1_0, 1}}, + {2367, {wxPageSetupDialogData, new_1_1, 1}}, + {2368, {wxPageSetupDialogData, destruct, 0}}, + {2369, {wxPageSetupDialogData, enableHelp, 1}}, + {2370, {wxPageSetupDialogData, enableMargins, 1}}, + {2371, {wxPageSetupDialogData, enableOrientation, 1}}, + {2372, {wxPageSetupDialogData, enablePaper, 1}}, + {2373, {wxPageSetupDialogData, enablePrinter, 1}}, + {2374, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, + {2375, {wxPageSetupDialogData, getEnableMargins, 0}}, + {2376, {wxPageSetupDialogData, getEnableOrientation, 0}}, + {2377, {wxPageSetupDialogData, getEnablePaper, 0}}, + {2378, {wxPageSetupDialogData, getEnablePrinter, 0}}, + {2379, {wxPageSetupDialogData, getEnableHelp, 0}}, + {2380, {wxPageSetupDialogData, getDefaultInfo, 0}}, + {2381, {wxPageSetupDialogData, getMarginTopLeft, 0}}, + {2382, {wxPageSetupDialogData, getMarginBottomRight, 0}}, + {2383, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, + {2384, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, + {2385, {wxPageSetupDialogData, getPaperId, 0}}, + {2386, {wxPageSetupDialogData, getPaperSize, 0}}, + {2388, {wxPageSetupDialogData, getPrintData, 0}}, + {2389, {wxPageSetupDialogData, isOk, 0}}, + {2390, {wxPageSetupDialogData, setDefaultInfo, 1}}, + {2391, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, + {2392, {wxPageSetupDialogData, setMarginTopLeft, 1}}, + {2393, {wxPageSetupDialogData, setMarginBottomRight, 1}}, + {2394, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, + {2395, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, + {2396, {wxPageSetupDialogData, setPaperId, 1}}, + {2397, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, + {2398, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, + {2399, {wxPageSetupDialogData, setPrintData, 1}}, + {2400, {wxPrintDialog, new_2_0, 2}}, + {2401, {wxPrintDialog, new_2_1, 2}}, + {2402, {wxPrintDialog, destruct, 0}}, + {2403, {wxPrintDialog, getPrintDialogData, 0}}, + {2404, {wxPrintDialog, getPrintDC, 0}}, + {2405, {wxPrintDialogData, new_0, 0}}, + {2406, {wxPrintDialogData, new_1_1, 1}}, + {2407, {wxPrintDialogData, new_1_0, 1}}, + {2408, {wxPrintDialogData, destruct, 0}}, + {2409, {wxPrintDialogData, enableHelp, 1}}, + {2410, {wxPrintDialogData, enablePageNumbers, 1}}, + {2411, {wxPrintDialogData, enablePrintToFile, 1}}, + {2412, {wxPrintDialogData, enableSelection, 1}}, + {2413, {wxPrintDialogData, getAllPages, 0}}, + {2414, {wxPrintDialogData, getCollate, 0}}, + {2415, {wxPrintDialogData, getFromPage, 0}}, + {2416, {wxPrintDialogData, getMaxPage, 0}}, + {2417, {wxPrintDialogData, getMinPage, 0}}, + {2418, {wxPrintDialogData, getNoCopies, 0}}, + {2419, {wxPrintDialogData, getPrintData, 0}}, + {2420, {wxPrintDialogData, getPrintToFile, 0}}, + {2421, {wxPrintDialogData, getSelection, 0}}, + {2422, {wxPrintDialogData, getToPage, 0}}, + {2423, {wxPrintDialogData, isOk, 0}}, + {2424, {wxPrintDialogData, setCollate, 1}}, + {2425, {wxPrintDialogData, setFromPage, 1}}, + {2426, {wxPrintDialogData, setMaxPage, 1}}, + {2427, {wxPrintDialogData, setMinPage, 1}}, + {2428, {wxPrintDialogData, setNoCopies, 1}}, + {2429, {wxPrintDialogData, setPrintData, 1}}, + {2430, {wxPrintDialogData, setPrintToFile, 1}}, + {2431, {wxPrintDialogData, setSelection, 1}}, + {2432, {wxPrintDialogData, setToPage, 1}}, + {2433, {wxPrintData, new_0, 0}}, + {2434, {wxPrintData, new_1, 1}}, + {2435, {wxPrintData, destruct, 0}}, + {2436, {wxPrintData, getCollate, 0}}, + {2437, {wxPrintData, getBin, 0}}, + {2438, {wxPrintData, getColour, 0}}, + {2439, {wxPrintData, getDuplex, 0}}, + {2440, {wxPrintData, getNoCopies, 0}}, + {2441, {wxPrintData, getOrientation, 0}}, + {2442, {wxPrintData, getPaperId, 0}}, + {2443, {wxPrintData, getPrinterName, 0}}, + {2444, {wxPrintData, getQuality, 0}}, + {2445, {wxPrintData, isOk, 0}}, + {2446, {wxPrintData, setBin, 1}}, + {2447, {wxPrintData, setCollate, 1}}, + {2448, {wxPrintData, setColour, 1}}, + {2449, {wxPrintData, setDuplex, 1}}, + {2450, {wxPrintData, setNoCopies, 1}}, + {2451, {wxPrintData, setOrientation, 1}}, + {2452, {wxPrintData, setPaperId, 1}}, + {2453, {wxPrintData, setPrinterName, 1}}, + {2454, {wxPrintData, setQuality, 1}}, + {2457, {wxPrintPreview, new_2, 2}}, + {2458, {wxPrintPreview, new_3, 3}}, + {2460, {wxPrintPreview, destruct, 0}}, + {2461, {wxPrintPreview, getCanvas, 0}}, + {2462, {wxPrintPreview, getCurrentPage, 0}}, + {2463, {wxPrintPreview, getFrame, 0}}, + {2464, {wxPrintPreview, getMaxPage, 0}}, + {2465, {wxPrintPreview, getMinPage, 0}}, + {2466, {wxPrintPreview, getPrintout, 0}}, + {2467, {wxPrintPreview, getPrintoutForPrinting, 0}}, + {2468, {wxPrintPreview, isOk, 0}}, + {2469, {wxPrintPreview, paintPage, 2}}, + {2470, {wxPrintPreview, print, 1}}, + {2471, {wxPrintPreview, renderPage, 1}}, + {2472, {wxPrintPreview, setCanvas, 1}}, + {2473, {wxPrintPreview, setCurrentPage, 1}}, + {2474, {wxPrintPreview, setFrame, 1}}, + {2475, {wxPrintPreview, setPrintout, 1}}, + {2476, {wxPrintPreview, setZoom, 1}}, + {2477, {wxPreviewFrame, new, 3}}, + {2478, {wxPreviewFrame, destruct, 0}}, + {2479, {wxPreviewFrame, createControlBar, 0}}, + {2480, {wxPreviewFrame, createCanvas, 0}}, + {2481, {wxPreviewFrame, initialize, 0}}, + {2482, {wxPreviewFrame, onCloseWindow, 1}}, + {2483, {wxPreviewControlBar, new, 4}}, + {2484, {wxPreviewControlBar, destruct, 0}}, + {2485, {wxPreviewControlBar, createButtons, 0}}, + {2486, {wxPreviewControlBar, getPrintPreview, 0}}, + {2487, {wxPreviewControlBar, getZoomControl, 0}}, + {2488, {wxPreviewControlBar, setZoomControl, 1}}, + {2490, {wxPrinter, new, 1}}, + {2491, {wxPrinter, createAbortWindow, 2}}, + {2492, {wxPrinter, getAbort, 0}}, + {2493, {wxPrinter, getLastError, 0}}, + {2494, {wxPrinter, getPrintDialogData, 0}}, + {2495, {wxPrinter, print, 3}}, + {2496, {wxPrinter, printDialog, 1}}, + {2497, {wxPrinter, reportError, 3}}, + {2498, {wxPrinter, setup, 1}}, + {2499, {wxPrinter, 'Destroy', undefined}}, + {2500, {wxXmlResource, new_1, 1}}, + {2501, {wxXmlResource, new_2, 2}}, + {2502, {wxXmlResource, destruct, 0}}, + {2503, {wxXmlResource, attachUnknownControl, 3}}, + {2504, {wxXmlResource, clearHandlers, 0}}, + {2505, {wxXmlResource, compareVersion, 4}}, + {2506, {wxXmlResource, get, 0}}, + {2507, {wxXmlResource, getFlags, 0}}, + {2508, {wxXmlResource, getVersion, 0}}, + {2509, {wxXmlResource, getXRCID, 2}}, + {2510, {wxXmlResource, initAllHandlers, 0}}, + {2511, {wxXmlResource, load, 1}}, + {2512, {wxXmlResource, loadBitmap, 1}}, + {2513, {wxXmlResource, loadDialog_2, 2}}, + {2514, {wxXmlResource, loadDialog_3, 3}}, + {2515, {wxXmlResource, loadFrame_2, 2}}, + {2516, {wxXmlResource, loadFrame_3, 3}}, + {2517, {wxXmlResource, loadIcon, 1}}, + {2518, {wxXmlResource, loadMenu, 1}}, + {2519, {wxXmlResource, loadMenuBar_2, 2}}, + {2520, {wxXmlResource, loadMenuBar_1, 1}}, + {2521, {wxXmlResource, loadPanel_2, 2}}, + {2522, {wxXmlResource, loadPanel_3, 3}}, + {2523, {wxXmlResource, loadToolBar, 2}}, + {2524, {wxXmlResource, set, 1}}, + {2525, {wxXmlResource, setFlags, 1}}, + {2526, {wxXmlResource, unload, 1}}, + {2527, {wxXmlResource, xrcctrl, 3}}, + {2528, {wxHtmlEasyPrinting, new, 1}}, + {2529, {wxHtmlEasyPrinting, destruct, 0}}, + {2530, {wxHtmlEasyPrinting, getPrintData, 0}}, + {2531, {wxHtmlEasyPrinting, getPageSetupData, 0}}, + {2532, {wxHtmlEasyPrinting, previewFile, 1}}, + {2533, {wxHtmlEasyPrinting, previewText, 2}}, + {2534, {wxHtmlEasyPrinting, printFile, 1}}, + {2535, {wxHtmlEasyPrinting, printText, 2}}, + {2536, {wxHtmlEasyPrinting, pageSetup, 0}}, + {2537, {wxHtmlEasyPrinting, setFonts, 3}}, + {2538, {wxHtmlEasyPrinting, setHeader, 2}}, + {2539, {wxHtmlEasyPrinting, setFooter, 2}}, + {2541, {wxGLCanvas, new_2, 2}}, + {2542, {wxGLCanvas, new_3_1, 3}}, + {2543, {wxGLCanvas, new_3_0, 3}}, + {2544, {wxGLCanvas, getContext, 0}}, + {2546, {wxGLCanvas, setCurrent, 0}}, + {2547, {wxGLCanvas, swapBuffers, 0}}, + {2548, {wxGLCanvas, 'Destroy', undefined}}, + {2549, {wxAuiManager, new, 1}}, + {2550, {wxAuiManager, destruct, 0}}, + {2551, {wxAuiManager, addPane_2_1, 2}}, + {2552, {wxAuiManager, addPane_3, 3}}, + {2553, {wxAuiManager, addPane_2_0, 2}}, + {2554, {wxAuiManager, detachPane, 1}}, + {2555, {wxAuiManager, getAllPanes, 0}}, + {2556, {wxAuiManager, getArtProvider, 0}}, + {2557, {wxAuiManager, getDockSizeConstraint, 2}}, + {2558, {wxAuiManager, getFlags, 0}}, + {2559, {wxAuiManager, getManagedWindow, 0}}, + {2560, {wxAuiManager, getManager, 1}}, + {2561, {wxAuiManager, getPane_1_1, 1}}, + {2562, {wxAuiManager, getPane_1_0, 1}}, + {2563, {wxAuiManager, hideHint, 0}}, + {2564, {wxAuiManager, insertPane, 3}}, + {2565, {wxAuiManager, loadPaneInfo, 2}}, + {2566, {wxAuiManager, loadPerspective, 2}}, + {2567, {wxAuiManager, savePaneInfo, 1}}, + {2568, {wxAuiManager, savePerspective, 0}}, + {2569, {wxAuiManager, setArtProvider, 1}}, + {2570, {wxAuiManager, setDockSizeConstraint, 2}}, + {2571, {wxAuiManager, setFlags, 1}}, + {2572, {wxAuiManager, setManagedWindow, 1}}, + {2573, {wxAuiManager, showHint, 1}}, + {2574, {wxAuiManager, unInit, 0}}, + {2575, {wxAuiManager, update, 0}}, + {2576, {wxAuiPaneInfo, new_0, 0}}, + {2577, {wxAuiPaneInfo, new_1, 1}}, + {2578, {wxAuiPaneInfo, destruct, 0}}, + {2579, {wxAuiPaneInfo, bestSize_1, 1}}, + {2580, {wxAuiPaneInfo, bestSize_2, 2}}, + {2581, {wxAuiPaneInfo, bottom, 0}}, + {2582, {wxAuiPaneInfo, bottomDockable, 1}}, + {2583, {wxAuiPaneInfo, caption, 1}}, + {2584, {wxAuiPaneInfo, captionVisible, 1}}, + {2585, {wxAuiPaneInfo, centre, 0}}, + {2586, {wxAuiPaneInfo, centrePane, 0}}, + {2587, {wxAuiPaneInfo, closeButton, 1}}, + {2588, {wxAuiPaneInfo, defaultPane, 0}}, + {2589, {wxAuiPaneInfo, destroyOnClose, 1}}, + {2590, {wxAuiPaneInfo, direction, 1}}, + {2591, {wxAuiPaneInfo, dock, 0}}, + {2592, {wxAuiPaneInfo, dockable, 1}}, + {2593, {wxAuiPaneInfo, fixed, 0}}, + {2594, {wxAuiPaneInfo, float, 0}}, + {2595, {wxAuiPaneInfo, floatable, 1}}, + {2596, {wxAuiPaneInfo, floatingPosition_1, 1}}, + {2597, {wxAuiPaneInfo, floatingPosition_2, 2}}, + {2598, {wxAuiPaneInfo, floatingSize_1, 1}}, + {2599, {wxAuiPaneInfo, floatingSize_2, 2}}, + {2600, {wxAuiPaneInfo, gripper, 1}}, + {2601, {wxAuiPaneInfo, gripperTop, 1}}, + {2602, {wxAuiPaneInfo, hasBorder, 0}}, + {2603, {wxAuiPaneInfo, hasCaption, 0}}, + {2604, {wxAuiPaneInfo, hasCloseButton, 0}}, + {2605, {wxAuiPaneInfo, hasFlag, 1}}, + {2606, {wxAuiPaneInfo, hasGripper, 0}}, + {2607, {wxAuiPaneInfo, hasGripperTop, 0}}, + {2608, {wxAuiPaneInfo, hasMaximizeButton, 0}}, + {2609, {wxAuiPaneInfo, hasMinimizeButton, 0}}, + {2610, {wxAuiPaneInfo, hasPinButton, 0}}, + {2611, {wxAuiPaneInfo, hide, 0}}, + {2612, {wxAuiPaneInfo, isBottomDockable, 0}}, + {2613, {wxAuiPaneInfo, isDocked, 0}}, + {2614, {wxAuiPaneInfo, isFixed, 0}}, + {2615, {wxAuiPaneInfo, isFloatable, 0}}, + {2616, {wxAuiPaneInfo, isFloating, 0}}, + {2617, {wxAuiPaneInfo, isLeftDockable, 0}}, + {2618, {wxAuiPaneInfo, isMovable, 0}}, + {2619, {wxAuiPaneInfo, isOk, 0}}, + {2620, {wxAuiPaneInfo, isResizable, 0}}, + {2621, {wxAuiPaneInfo, isRightDockable, 0}}, + {2622, {wxAuiPaneInfo, isShown, 0}}, + {2623, {wxAuiPaneInfo, isToolbar, 0}}, + {2624, {wxAuiPaneInfo, isTopDockable, 0}}, + {2625, {wxAuiPaneInfo, layer, 1}}, + {2626, {wxAuiPaneInfo, left, 0}}, + {2627, {wxAuiPaneInfo, leftDockable, 1}}, + {2628, {wxAuiPaneInfo, maxSize_1, 1}}, + {2629, {wxAuiPaneInfo, maxSize_2, 2}}, + {2630, {wxAuiPaneInfo, maximizeButton, 1}}, + {2631, {wxAuiPaneInfo, minSize_1, 1}}, + {2632, {wxAuiPaneInfo, minSize_2, 2}}, + {2633, {wxAuiPaneInfo, minimizeButton, 1}}, + {2634, {wxAuiPaneInfo, movable, 1}}, + {2635, {wxAuiPaneInfo, name, 1}}, + {2636, {wxAuiPaneInfo, paneBorder, 1}}, + {2637, {wxAuiPaneInfo, pinButton, 1}}, + {2638, {wxAuiPaneInfo, position, 1}}, + {2639, {wxAuiPaneInfo, resizable, 1}}, + {2640, {wxAuiPaneInfo, right, 0}}, + {2641, {wxAuiPaneInfo, rightDockable, 1}}, + {2642, {wxAuiPaneInfo, row, 1}}, + {2643, {wxAuiPaneInfo, safeSet, 1}}, + {2644, {wxAuiPaneInfo, setFlag, 2}}, + {2645, {wxAuiPaneInfo, show, 1}}, + {2646, {wxAuiPaneInfo, toolbarPane, 0}}, + {2647, {wxAuiPaneInfo, top, 0}}, + {2648, {wxAuiPaneInfo, topDockable, 1}}, + {2649, {wxAuiPaneInfo, window, 1}}, + {2650, {wxAuiNotebook, new_0, 0}}, + {2651, {wxAuiNotebook, new_2, 2}}, + {2652, {wxAuiNotebook, addPage, 3}}, + {2653, {wxAuiNotebook, create, 2}}, + {2654, {wxAuiNotebook, deletePage, 1}}, + {2655, {wxAuiNotebook, getArtProvider, 0}}, + {2656, {wxAuiNotebook, getPage, 1}}, + {2657, {wxAuiNotebook, getPageBitmap, 1}}, + {2658, {wxAuiNotebook, getPageCount, 0}}, + {2659, {wxAuiNotebook, getPageIndex, 1}}, + {2660, {wxAuiNotebook, getPageText, 1}}, + {2661, {wxAuiNotebook, getSelection, 0}}, + {2662, {wxAuiNotebook, insertPage, 4}}, + {2663, {wxAuiNotebook, removePage, 1}}, + {2664, {wxAuiNotebook, setArtProvider, 1}}, + {2665, {wxAuiNotebook, setFont, 1}}, + {2666, {wxAuiNotebook, setPageBitmap, 2}}, + {2667, {wxAuiNotebook, setPageText, 2}}, + {2668, {wxAuiNotebook, setSelection, 1}}, + {2669, {wxAuiNotebook, setTabCtrlHeight, 1}}, + {2670, {wxAuiNotebook, setUniformBitmapSize, 1}}, + {2671, {wxAuiNotebook, 'Destroy', undefined}}, + {2672, {wxMDIParentFrame, new_0, 0}}, + {2673, {wxMDIParentFrame, new_4, 4}}, + {2674, {wxMDIParentFrame, destruct, 0}}, + {2675, {wxMDIParentFrame, activateNext, 0}}, + {2676, {wxMDIParentFrame, activatePrevious, 0}}, + {2677, {wxMDIParentFrame, arrangeIcons, 0}}, + {2678, {wxMDIParentFrame, cascade, 0}}, + {2679, {wxMDIParentFrame, create, 4}}, + {2680, {wxMDIParentFrame, getActiveChild, 0}}, + {2681, {wxMDIParentFrame, getClientWindow, 0}}, + {2682, {wxMDIParentFrame, tile, 1}}, + {2683, {wxMDIChildFrame, new_0, 0}}, + {2684, {wxMDIChildFrame, new_4, 4}}, + {2685, {wxMDIChildFrame, destruct, 0}}, + {2686, {wxMDIChildFrame, activate, 0}}, + {2687, {wxMDIChildFrame, create, 4}}, + {2688, {wxMDIChildFrame, maximize, 1}}, + {2689, {wxMDIChildFrame, restore, 0}}, + {2690, {wxMDIClientWindow, new_0, 0}}, + {2691, {wxMDIClientWindow, new_2, 2}}, + {2692, {wxMDIClientWindow, destruct, 0}}, + {2693, {wxMDIClientWindow, createClient, 2}}, + {2694, {wxLayoutAlgorithm, new, 0}}, + {2695, {wxLayoutAlgorithm, layoutFrame, 2}}, + {2696, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, + {2697, {wxLayoutAlgorithm, layoutWindow, 2}}, + {2698, {wxLayoutAlgorithm, 'Destroy', undefined}}, + {2699, {wxEvent, getId, 0}}, + {2700, {wxEvent, getSkipped, 0}}, + {2701, {wxEvent, getTimestamp, 0}}, + {2702, {wxEvent, isCommandEvent, 0}}, + {2703, {wxEvent, resumePropagation, 1}}, + {2704, {wxEvent, shouldPropagate, 0}}, + {2705, {wxEvent, skip, 1}}, + {2706, {wxEvent, stopPropagation, 0}}, + {2707, {wxCommandEvent, getClientData, 0}}, + {2708, {wxCommandEvent, getExtraLong, 0}}, + {2709, {wxCommandEvent, getInt, 0}}, + {2710, {wxCommandEvent, getSelection, 0}}, + {2711, {wxCommandEvent, getString, 0}}, + {2712, {wxCommandEvent, isChecked, 0}}, + {2713, {wxCommandEvent, isSelection, 0}}, + {2714, {wxCommandEvent, setInt, 1}}, + {2715, {wxCommandEvent, setString, 1}}, + {2716, {wxScrollEvent, getOrientation, 0}}, + {2717, {wxScrollEvent, getPosition, 0}}, + {2718, {wxScrollWinEvent, getOrientation, 0}}, + {2719, {wxScrollWinEvent, getPosition, 0}}, + {2720, {wxMouseEvent, altDown, 0}}, + {2721, {wxMouseEvent, button, 1}}, + {2722, {wxMouseEvent, buttonDClick, 1}}, + {2723, {wxMouseEvent, buttonDown, 1}}, + {2724, {wxMouseEvent, buttonUp, 1}}, + {2725, {wxMouseEvent, cmdDown, 0}}, + {2726, {wxMouseEvent, controlDown, 0}}, + {2727, {wxMouseEvent, dragging, 0}}, + {2728, {wxMouseEvent, entering, 0}}, + {2729, {wxMouseEvent, getButton, 0}}, + {2732, {wxMouseEvent, getPosition, 0}}, + {2733, {wxMouseEvent, getLogicalPosition, 1}}, + {2734, {wxMouseEvent, getLinesPerAction, 0}}, + {2735, {wxMouseEvent, getWheelRotation, 0}}, + {2736, {wxMouseEvent, getWheelDelta, 0}}, + {2737, {wxMouseEvent, getX, 0}}, + {2738, {wxMouseEvent, getY, 0}}, + {2739, {wxMouseEvent, isButton, 0}}, + {2740, {wxMouseEvent, isPageScroll, 0}}, + {2741, {wxMouseEvent, leaving, 0}}, + {2742, {wxMouseEvent, leftDClick, 0}}, + {2743, {wxMouseEvent, leftDown, 0}}, + {2744, {wxMouseEvent, leftIsDown, 0}}, + {2745, {wxMouseEvent, leftUp, 0}}, + {2746, {wxMouseEvent, metaDown, 0}}, + {2747, {wxMouseEvent, middleDClick, 0}}, + {2748, {wxMouseEvent, middleDown, 0}}, + {2749, {wxMouseEvent, middleIsDown, 0}}, + {2750, {wxMouseEvent, middleUp, 0}}, + {2751, {wxMouseEvent, moving, 0}}, + {2752, {wxMouseEvent, rightDClick, 0}}, + {2753, {wxMouseEvent, rightDown, 0}}, + {2754, {wxMouseEvent, rightIsDown, 0}}, + {2755, {wxMouseEvent, rightUp, 0}}, + {2756, {wxMouseEvent, shiftDown, 0}}, + {2757, {wxSetCursorEvent, getCursor, 0}}, + {2758, {wxSetCursorEvent, getX, 0}}, + {2759, {wxSetCursorEvent, getY, 0}}, + {2760, {wxSetCursorEvent, hasCursor, 0}}, + {2761, {wxSetCursorEvent, setCursor, 1}}, + {2762, {wxKeyEvent, altDown, 0}}, + {2763, {wxKeyEvent, cmdDown, 0}}, + {2764, {wxKeyEvent, controlDown, 0}}, + {2765, {wxKeyEvent, getKeyCode, 0}}, + {2766, {wxKeyEvent, getModifiers, 0}}, + {2769, {wxKeyEvent, getPosition, 0}}, + {2770, {wxKeyEvent, getRawKeyCode, 0}}, + {2771, {wxKeyEvent, getRawKeyFlags, 0}}, + {2772, {wxKeyEvent, getUnicodeKey, 0}}, + {2773, {wxKeyEvent, getX, 0}}, + {2774, {wxKeyEvent, getY, 0}}, + {2775, {wxKeyEvent, hasModifiers, 0}}, + {2776, {wxKeyEvent, metaDown, 0}}, + {2777, {wxKeyEvent, shiftDown, 0}}, + {2778, {wxSizeEvent, getSize, 0}}, + {2779, {wxMoveEvent, getPosition, 0}}, + {2780, {wxEraseEvent, getDC, 0}}, + {2781, {wxFocusEvent, getWindow, 0}}, + {2782, {wxChildFocusEvent, getWindow, 0}}, + {2783, {wxMenuEvent, getMenu, 0}}, + {2784, {wxMenuEvent, getMenuId, 0}}, + {2785, {wxMenuEvent, isPopup, 0}}, + {2786, {wxCloseEvent, canVeto, 0}}, + {2787, {wxCloseEvent, getLoggingOff, 0}}, + {2788, {wxCloseEvent, setCanVeto, 1}}, + {2789, {wxCloseEvent, setLoggingOff, 1}}, + {2790, {wxCloseEvent, veto, 1}}, + {2791, {wxShowEvent, setShow, 1}}, + {2792, {wxShowEvent, getShow, 0}}, + {2793, {wxIconizeEvent, iconized, 0}}, + {2794, {wxJoystickEvent, buttonDown, 1}}, + {2795, {wxJoystickEvent, buttonIsDown, 1}}, + {2796, {wxJoystickEvent, buttonUp, 1}}, + {2797, {wxJoystickEvent, getButtonChange, 0}}, + {2798, {wxJoystickEvent, getButtonState, 0}}, + {2799, {wxJoystickEvent, getJoystick, 0}}, + {2800, {wxJoystickEvent, getPosition, 0}}, + {2801, {wxJoystickEvent, getZPosition, 0}}, + {2802, {wxJoystickEvent, isButton, 0}}, + {2803, {wxJoystickEvent, isMove, 0}}, + {2804, {wxJoystickEvent, isZMove, 0}}, + {2805, {wxUpdateUIEvent, canUpdate, 1}}, + {2806, {wxUpdateUIEvent, check, 1}}, + {2807, {wxUpdateUIEvent, enable, 1}}, + {2808, {wxUpdateUIEvent, show, 1}}, + {2809, {wxUpdateUIEvent, getChecked, 0}}, + {2810, {wxUpdateUIEvent, getEnabled, 0}}, + {2811, {wxUpdateUIEvent, getShown, 0}}, + {2812, {wxUpdateUIEvent, getSetChecked, 0}}, + {2813, {wxUpdateUIEvent, getSetEnabled, 0}}, + {2814, {wxUpdateUIEvent, getSetShown, 0}}, + {2815, {wxUpdateUIEvent, getSetText, 0}}, + {2816, {wxUpdateUIEvent, getText, 0}}, + {2817, {wxUpdateUIEvent, getMode, 0}}, + {2818, {wxUpdateUIEvent, getUpdateInterval, 0}}, + {2819, {wxUpdateUIEvent, resetUpdateTime, 0}}, + {2820, {wxUpdateUIEvent, setMode, 1}}, + {2821, {wxUpdateUIEvent, setText, 1}}, + {2822, {wxUpdateUIEvent, setUpdateInterval, 1}}, + {2823, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, + {2824, {wxPaletteChangedEvent, setChangedWindow, 1}}, + {2825, {wxPaletteChangedEvent, getChangedWindow, 0}}, + {2826, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, + {2827, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, + {2828, {wxNavigationKeyEvent, getDirection, 0}}, + {2829, {wxNavigationKeyEvent, setDirection, 1}}, + {2830, {wxNavigationKeyEvent, isWindowChange, 0}}, + {2831, {wxNavigationKeyEvent, setWindowChange, 1}}, + {2832, {wxNavigationKeyEvent, isFromTab, 0}}, + {2833, {wxNavigationKeyEvent, setFromTab, 1}}, + {2834, {wxNavigationKeyEvent, getCurrentFocus, 0}}, + {2835, {wxNavigationKeyEvent, setCurrentFocus, 1}}, + {2836, {wxHelpEvent, getOrigin, 0}}, + {2837, {wxHelpEvent, getPosition, 0}}, + {2838, {wxHelpEvent, setOrigin, 1}}, + {2839, {wxHelpEvent, setPosition, 1}}, + {2840, {wxContextMenuEvent, getPosition, 0}}, + {2841, {wxContextMenuEvent, setPosition, 1}}, + {2842, {wxIdleEvent, canSend, 1}}, + {2843, {wxIdleEvent, getMode, 0}}, + {2844, {wxIdleEvent, requestMore, 1}}, + {2845, {wxIdleEvent, moreRequested, 0}}, + {2846, {wxIdleEvent, setMode, 1}}, + {2847, {wxGridEvent, altDown, 0}}, + {2848, {wxGridEvent, controlDown, 0}}, + {2849, {wxGridEvent, getCol, 0}}, + {2850, {wxGridEvent, getPosition, 0}}, + {2851, {wxGridEvent, getRow, 0}}, + {2852, {wxGridEvent, metaDown, 0}}, + {2853, {wxGridEvent, selecting, 0}}, + {2854, {wxGridEvent, shiftDown, 0}}, + {2855, {wxNotifyEvent, allow, 0}}, + {2856, {wxNotifyEvent, isAllowed, 0}}, + {2857, {wxNotifyEvent, veto, 0}}, + {2858, {wxSashEvent, getEdge, 0}}, + {2859, {wxSashEvent, getDragRect, 0}}, + {2860, {wxSashEvent, getDragStatus, 0}}, + {2861, {wxListEvent, getCacheFrom, 0}}, + {2862, {wxListEvent, getCacheTo, 0}}, + {2863, {wxListEvent, getKeyCode, 0}}, + {2864, {wxListEvent, getIndex, 0}}, + {2865, {wxListEvent, getColumn, 0}}, + {2866, {wxListEvent, getPoint, 0}}, + {2867, {wxListEvent, getLabel, 0}}, + {2868, {wxListEvent, getText, 0}}, + {2869, {wxListEvent, getImage, 0}}, + {2870, {wxListEvent, getData, 0}}, + {2871, {wxListEvent, getMask, 0}}, + {2872, {wxListEvent, getItem, 0}}, + {2873, {wxListEvent, isEditCancelled, 0}}, + {2874, {wxDateEvent, getDate, 0}}, + {2875, {wxCalendarEvent, getWeekDay, 0}}, + {2876, {wxFileDirPickerEvent, getPath, 0}}, + {2877, {wxColourPickerEvent, getColour, 0}}, + {2878, {wxFontPickerEvent, getFont, 0}}, + {2879, {wxStyledTextEvent, getPosition, 0}}, + {2880, {wxStyledTextEvent, getKey, 0}}, + {2881, {wxStyledTextEvent, getModifiers, 0}}, + {2882, {wxStyledTextEvent, getModificationType, 0}}, + {2883, {wxStyledTextEvent, getText, 0}}, + {2884, {wxStyledTextEvent, getLength, 0}}, + {2885, {wxStyledTextEvent, getLinesAdded, 0}}, + {2886, {wxStyledTextEvent, getLine, 0}}, + {2887, {wxStyledTextEvent, getFoldLevelNow, 0}}, + {2888, {wxStyledTextEvent, getFoldLevelPrev, 0}}, + {2889, {wxStyledTextEvent, getMargin, 0}}, + {2890, {wxStyledTextEvent, getMessage, 0}}, + {2891, {wxStyledTextEvent, getWParam, 0}}, + {2892, {wxStyledTextEvent, getLParam, 0}}, + {2893, {wxStyledTextEvent, getListType, 0}}, + {2894, {wxStyledTextEvent, getX, 0}}, + {2895, {wxStyledTextEvent, getY, 0}}, + {2896, {wxStyledTextEvent, getDragText, 0}}, + {2897, {wxStyledTextEvent, getDragAllowMove, 0}}, + {2898, {wxStyledTextEvent, getDragResult, 0}}, + {2899, {wxStyledTextEvent, getShift, 0}}, + {2900, {wxStyledTextEvent, getControl, 0}}, + {2901, {wxStyledTextEvent, getAlt, 0}}, + {2902, {utils, getKeyState, 1}}, + {2903, {utils, getMousePosition, 2}}, + {2904, {utils, getMouseState, 0}}, + {2905, {utils, setDetectableAutoRepeat, 1}}, + {2906, {utils, bell, 0}}, + {2907, {utils, findMenuItemId, 3}}, + {2908, {utils, genericFindWindowAtPoint, 1}}, + {2909, {utils, findWindowAtPoint, 1}}, + {2910, {utils, beginBusyCursor, 1}}, + {2911, {utils, endBusyCursor, 0}}, + {2912, {utils, isBusy, 0}}, + {2913, {utils, shutdown, 1}}, + {2914, {utils, shell, 1}}, + {2915, {utils, launchDefaultBrowser, 2}}, + {2916, {utils, getEmailAddress, 0}}, + {2917, {utils, getUserId, 0}}, + {2918, {utils, getHomeDir, 0}}, + {2919, {utils, newId, 0}}, + {2920, {utils, registerId, 1}}, + {2921, {utils, getCurrentId, 0}}, + {2922, {utils, getOsDescription, 0}}, + {2923, {utils, isPlatformLittleEndian, 0}}, + {2924, {utils, isPlatform64Bit, 0}}, + {2925, {wxPrintout, new, 1}}, + {2926, {wxPrintout, destruct, 0}}, + {2927, {wxPrintout, getDC, 0}}, + {2928, {wxPrintout, getPageSizeMM, 2}}, + {2929, {wxPrintout, getPageSizePixels, 2}}, + {2930, {wxPrintout, getPaperRectPixels, 0}}, + {2931, {wxPrintout, getPPIPrinter, 2}}, + {2932, {wxPrintout, getPPIScreen, 2}}, + {2933, {wxPrintout, getTitle, 0}}, + {2934, {wxPrintout, isPreview, 0}}, + {2935, {wxPrintout, fitThisSizeToPaper, 1}}, + {2936, {wxPrintout, fitThisSizeToPage, 1}}, + {2937, {wxPrintout, fitThisSizeToPageMargins, 2}}, + {2938, {wxPrintout, mapScreenSizeToPaper, 0}}, + {2939, {wxPrintout, mapScreenSizeToPage, 0}}, + {2940, {wxPrintout, mapScreenSizeToPageMargins, 1}}, + {2941, {wxPrintout, mapScreenSizeToDevice, 0}}, + {2942, {wxPrintout, getLogicalPaperRect, 0}}, + {2943, {wxPrintout, getLogicalPageRect, 0}}, + {2944, {wxPrintout, getLogicalPageMarginsRect, 1}}, + {2945, {wxPrintout, setLogicalOrigin, 2}}, + {2946, {wxPrintout, offsetLogicalOrigin, 2}}, + {2947, {wxStyledTextCtrl, new_2, 2}}, + {2948, {wxStyledTextCtrl, new_0, 0}}, + {2949, {wxStyledTextCtrl, destruct, 0}}, + {2950, {wxStyledTextCtrl, create, 2}}, + {2951, {wxStyledTextCtrl, addText, 1}}, + {2952, {wxStyledTextCtrl, addStyledText, 1}}, + {2953, {wxStyledTextCtrl, insertText, 2}}, + {2954, {wxStyledTextCtrl, clearAll, 0}}, + {2955, {wxStyledTextCtrl, clearDocumentStyle, 0}}, + {2956, {wxStyledTextCtrl, getLength, 0}}, + {2957, {wxStyledTextCtrl, getCharAt, 1}}, + {2958, {wxStyledTextCtrl, getCurrentPos, 0}}, + {2959, {wxStyledTextCtrl, getAnchor, 0}}, + {2960, {wxStyledTextCtrl, getStyleAt, 1}}, + {2961, {wxStyledTextCtrl, redo, 0}}, + {2962, {wxStyledTextCtrl, setUndoCollection, 1}}, + {2963, {wxStyledTextCtrl, selectAll, 0}}, + {2964, {wxStyledTextCtrl, setSavePoint, 0}}, + {2965, {wxStyledTextCtrl, getStyledText, 2}}, + {2966, {wxStyledTextCtrl, canRedo, 0}}, + {2967, {wxStyledTextCtrl, markerLineFromHandle, 1}}, + {2968, {wxStyledTextCtrl, markerDeleteHandle, 1}}, + {2969, {wxStyledTextCtrl, getUndoCollection, 0}}, + {2970, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, + {2971, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, + {2972, {wxStyledTextCtrl, positionFromPoint, 1}}, + {2973, {wxStyledTextCtrl, positionFromPointClose, 2}}, + {2974, {wxStyledTextCtrl, gotoLine, 1}}, + {2975, {wxStyledTextCtrl, gotoPos, 1}}, + {2976, {wxStyledTextCtrl, setAnchor, 1}}, + {2977, {wxStyledTextCtrl, getCurLine, 1}}, + {2978, {wxStyledTextCtrl, getEndStyled, 0}}, + {2979, {wxStyledTextCtrl, convertEOLs, 1}}, + {2980, {wxStyledTextCtrl, getEOLMode, 0}}, + {2981, {wxStyledTextCtrl, setEOLMode, 1}}, + {2982, {wxStyledTextCtrl, startStyling, 2}}, + {2983, {wxStyledTextCtrl, setStyling, 2}}, + {2984, {wxStyledTextCtrl, getBufferedDraw, 0}}, + {2985, {wxStyledTextCtrl, setBufferedDraw, 1}}, + {2986, {wxStyledTextCtrl, setTabWidth, 1}}, + {2987, {wxStyledTextCtrl, getTabWidth, 0}}, + {2988, {wxStyledTextCtrl, setCodePage, 1}}, + {2989, {wxStyledTextCtrl, markerDefine, 3}}, + {2990, {wxStyledTextCtrl, markerSetForeground, 2}}, + {2991, {wxStyledTextCtrl, markerSetBackground, 2}}, + {2992, {wxStyledTextCtrl, markerAdd, 2}}, + {2993, {wxStyledTextCtrl, markerDelete, 2}}, + {2994, {wxStyledTextCtrl, markerDeleteAll, 1}}, + {2995, {wxStyledTextCtrl, markerGet, 1}}, + {2996, {wxStyledTextCtrl, markerNext, 2}}, + {2997, {wxStyledTextCtrl, markerPrevious, 2}}, + {2998, {wxStyledTextCtrl, markerDefineBitmap, 2}}, + {2999, {wxStyledTextCtrl, markerAddSet, 2}}, + {3000, {wxStyledTextCtrl, markerSetAlpha, 2}}, + {3001, {wxStyledTextCtrl, setMarginType, 2}}, + {3002, {wxStyledTextCtrl, getMarginType, 1}}, + {3003, {wxStyledTextCtrl, setMarginWidth, 2}}, + {3004, {wxStyledTextCtrl, getMarginWidth, 1}}, + {3005, {wxStyledTextCtrl, setMarginMask, 2}}, + {3006, {wxStyledTextCtrl, getMarginMask, 1}}, + {3007, {wxStyledTextCtrl, setMarginSensitive, 2}}, + {3008, {wxStyledTextCtrl, getMarginSensitive, 1}}, + {3009, {wxStyledTextCtrl, styleClearAll, 0}}, + {3010, {wxStyledTextCtrl, styleSetForeground, 2}}, + {3011, {wxStyledTextCtrl, styleSetBackground, 2}}, + {3012, {wxStyledTextCtrl, styleSetBold, 2}}, + {3013, {wxStyledTextCtrl, styleSetItalic, 2}}, + {3014, {wxStyledTextCtrl, styleSetSize, 2}}, + {3015, {wxStyledTextCtrl, styleSetFaceName, 2}}, + {3016, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, + {3017, {wxStyledTextCtrl, styleResetDefault, 0}}, + {3018, {wxStyledTextCtrl, styleSetUnderline, 2}}, + {3019, {wxStyledTextCtrl, styleSetCase, 2}}, + {3020, {wxStyledTextCtrl, styleSetHotSpot, 2}}, + {3021, {wxStyledTextCtrl, setSelForeground, 2}}, + {3022, {wxStyledTextCtrl, setSelBackground, 2}}, + {3023, {wxStyledTextCtrl, getSelAlpha, 0}}, + {3024, {wxStyledTextCtrl, setSelAlpha, 1}}, + {3025, {wxStyledTextCtrl, setCaretForeground, 1}}, + {3026, {wxStyledTextCtrl, cmdKeyAssign, 3}}, + {3027, {wxStyledTextCtrl, cmdKeyClear, 2}}, + {3028, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, + {3029, {wxStyledTextCtrl, setStyleBytes, 2}}, + {3030, {wxStyledTextCtrl, styleSetVisible, 2}}, + {3031, {wxStyledTextCtrl, getCaretPeriod, 0}}, + {3032, {wxStyledTextCtrl, setCaretPeriod, 1}}, + {3033, {wxStyledTextCtrl, setWordChars, 1}}, + {3034, {wxStyledTextCtrl, beginUndoAction, 0}}, + {3035, {wxStyledTextCtrl, endUndoAction, 0}}, + {3036, {wxStyledTextCtrl, indicatorSetStyle, 2}}, + {3037, {wxStyledTextCtrl, indicatorGetStyle, 1}}, + {3038, {wxStyledTextCtrl, indicatorSetForeground, 2}}, + {3039, {wxStyledTextCtrl, indicatorGetForeground, 1}}, + {3040, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, + {3041, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, + {3042, {wxStyledTextCtrl, getStyleBits, 0}}, + {3043, {wxStyledTextCtrl, setLineState, 2}}, + {3044, {wxStyledTextCtrl, getLineState, 1}}, + {3045, {wxStyledTextCtrl, getMaxLineState, 0}}, + {3046, {wxStyledTextCtrl, getCaretLineVisible, 0}}, + {3047, {wxStyledTextCtrl, setCaretLineVisible, 1}}, + {3048, {wxStyledTextCtrl, getCaretLineBackground, 0}}, + {3049, {wxStyledTextCtrl, setCaretLineBackground, 1}}, + {3050, {wxStyledTextCtrl, autoCompShow, 2}}, + {3051, {wxStyledTextCtrl, autoCompCancel, 0}}, + {3052, {wxStyledTextCtrl, autoCompActive, 0}}, + {3053, {wxStyledTextCtrl, autoCompPosStart, 0}}, + {3054, {wxStyledTextCtrl, autoCompComplete, 0}}, + {3055, {wxStyledTextCtrl, autoCompStops, 1}}, + {3056, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, + {3057, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, + {3058, {wxStyledTextCtrl, autoCompSelect, 1}}, + {3059, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, + {3060, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, + {3061, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, + {3062, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, + {3063, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, + {3064, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, + {3065, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, + {3066, {wxStyledTextCtrl, userListShow, 2}}, + {3067, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, + {3068, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, + {3069, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, + {3070, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, + {3071, {wxStyledTextCtrl, registerImage, 2}}, + {3072, {wxStyledTextCtrl, clearRegisteredImages, 0}}, + {3073, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, + {3074, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, + {3075, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, + {3076, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, + {3077, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, + {3078, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, + {3079, {wxStyledTextCtrl, setIndent, 1}}, + {3080, {wxStyledTextCtrl, getIndent, 0}}, + {3081, {wxStyledTextCtrl, setUseTabs, 1}}, + {3082, {wxStyledTextCtrl, getUseTabs, 0}}, + {3083, {wxStyledTextCtrl, setLineIndentation, 2}}, + {3084, {wxStyledTextCtrl, getLineIndentation, 1}}, + {3085, {wxStyledTextCtrl, getLineIndentPosition, 1}}, + {3086, {wxStyledTextCtrl, getColumn, 1}}, + {3087, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, + {3088, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, + {3089, {wxStyledTextCtrl, setIndentationGuides, 1}}, + {3090, {wxStyledTextCtrl, getIndentationGuides, 0}}, + {3091, {wxStyledTextCtrl, setHighlightGuide, 1}}, + {3092, {wxStyledTextCtrl, getHighlightGuide, 0}}, + {3093, {wxStyledTextCtrl, getLineEndPosition, 1}}, + {3094, {wxStyledTextCtrl, getCodePage, 0}}, + {3095, {wxStyledTextCtrl, getCaretForeground, 0}}, + {3096, {wxStyledTextCtrl, getReadOnly, 0}}, + {3097, {wxStyledTextCtrl, setCurrentPos, 1}}, + {3098, {wxStyledTextCtrl, setSelectionStart, 1}}, + {3099, {wxStyledTextCtrl, getSelectionStart, 0}}, + {3100, {wxStyledTextCtrl, setSelectionEnd, 1}}, + {3101, {wxStyledTextCtrl, getSelectionEnd, 0}}, + {3102, {wxStyledTextCtrl, setPrintMagnification, 1}}, + {3103, {wxStyledTextCtrl, getPrintMagnification, 0}}, + {3104, {wxStyledTextCtrl, setPrintColourMode, 1}}, + {3105, {wxStyledTextCtrl, getPrintColourMode, 0}}, + {3106, {wxStyledTextCtrl, findText, 4}}, + {3107, {wxStyledTextCtrl, formatRange, 7}}, + {3108, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, + {3109, {wxStyledTextCtrl, getLine, 1}}, + {3110, {wxStyledTextCtrl, getLineCount, 0}}, + {3111, {wxStyledTextCtrl, setMarginLeft, 1}}, + {3112, {wxStyledTextCtrl, getMarginLeft, 0}}, + {3113, {wxStyledTextCtrl, setMarginRight, 1}}, + {3114, {wxStyledTextCtrl, getMarginRight, 0}}, + {3115, {wxStyledTextCtrl, getModify, 0}}, + {3116, {wxStyledTextCtrl, setSelection, 2}}, + {3117, {wxStyledTextCtrl, getSelectedText, 0}}, + {3118, {wxStyledTextCtrl, getTextRange, 2}}, + {3119, {wxStyledTextCtrl, hideSelection, 1}}, + {3120, {wxStyledTextCtrl, lineFromPosition, 1}}, + {3121, {wxStyledTextCtrl, positionFromLine, 1}}, + {3122, {wxStyledTextCtrl, lineScroll, 2}}, + {3123, {wxStyledTextCtrl, ensureCaretVisible, 0}}, + {3124, {wxStyledTextCtrl, replaceSelection, 1}}, + {3125, {wxStyledTextCtrl, setReadOnly, 1}}, + {3126, {wxStyledTextCtrl, canPaste, 0}}, + {3127, {wxStyledTextCtrl, canUndo, 0}}, + {3128, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, + {3129, {wxStyledTextCtrl, undo, 0}}, + {3130, {wxStyledTextCtrl, cut, 0}}, + {3131, {wxStyledTextCtrl, copy, 0}}, + {3132, {wxStyledTextCtrl, paste, 0}}, + {3133, {wxStyledTextCtrl, clear, 0}}, + {3134, {wxStyledTextCtrl, setText, 1}}, + {3135, {wxStyledTextCtrl, getText, 0}}, + {3136, {wxStyledTextCtrl, getTextLength, 0}}, + {3137, {wxStyledTextCtrl, getOvertype, 0}}, + {3138, {wxStyledTextCtrl, setCaretWidth, 1}}, + {3139, {wxStyledTextCtrl, getCaretWidth, 0}}, + {3140, {wxStyledTextCtrl, setTargetStart, 1}}, + {3141, {wxStyledTextCtrl, getTargetStart, 0}}, + {3142, {wxStyledTextCtrl, setTargetEnd, 1}}, + {3143, {wxStyledTextCtrl, getTargetEnd, 0}}, + {3144, {wxStyledTextCtrl, replaceTarget, 1}}, + {3145, {wxStyledTextCtrl, searchInTarget, 1}}, + {3146, {wxStyledTextCtrl, setSearchFlags, 1}}, + {3147, {wxStyledTextCtrl, getSearchFlags, 0}}, + {3148, {wxStyledTextCtrl, callTipShow, 2}}, + {3149, {wxStyledTextCtrl, callTipCancel, 0}}, + {3150, {wxStyledTextCtrl, callTipActive, 0}}, + {3151, {wxStyledTextCtrl, callTipPosAtStart, 0}}, + {3152, {wxStyledTextCtrl, callTipSetHighlight, 2}}, + {3153, {wxStyledTextCtrl, callTipSetBackground, 1}}, + {3154, {wxStyledTextCtrl, callTipSetForeground, 1}}, + {3155, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, + {3156, {wxStyledTextCtrl, callTipUseStyle, 1}}, + {3157, {wxStyledTextCtrl, visibleFromDocLine, 1}}, + {3158, {wxStyledTextCtrl, docLineFromVisible, 1}}, + {3159, {wxStyledTextCtrl, wrapCount, 1}}, + {3160, {wxStyledTextCtrl, setFoldLevel, 2}}, + {3161, {wxStyledTextCtrl, getFoldLevel, 1}}, + {3162, {wxStyledTextCtrl, getLastChild, 2}}, + {3163, {wxStyledTextCtrl, getFoldParent, 1}}, + {3164, {wxStyledTextCtrl, showLines, 2}}, + {3165, {wxStyledTextCtrl, hideLines, 2}}, + {3166, {wxStyledTextCtrl, getLineVisible, 1}}, + {3167, {wxStyledTextCtrl, setFoldExpanded, 2}}, + {3168, {wxStyledTextCtrl, getFoldExpanded, 1}}, + {3169, {wxStyledTextCtrl, toggleFold, 1}}, + {3170, {wxStyledTextCtrl, ensureVisible, 1}}, + {3171, {wxStyledTextCtrl, setFoldFlags, 1}}, + {3172, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, + {3173, {wxStyledTextCtrl, setTabIndents, 1}}, + {3174, {wxStyledTextCtrl, getTabIndents, 0}}, + {3175, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, + {3176, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, + {3177, {wxStyledTextCtrl, setMouseDwellTime, 1}}, + {3178, {wxStyledTextCtrl, getMouseDwellTime, 0}}, + {3179, {wxStyledTextCtrl, wordStartPosition, 2}}, + {3180, {wxStyledTextCtrl, wordEndPosition, 2}}, + {3181, {wxStyledTextCtrl, setWrapMode, 1}}, + {3182, {wxStyledTextCtrl, getWrapMode, 0}}, + {3183, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, + {3184, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, + {3185, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, + {3186, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, + {3187, {wxStyledTextCtrl, setWrapStartIndent, 1}}, + {3188, {wxStyledTextCtrl, getWrapStartIndent, 0}}, + {3189, {wxStyledTextCtrl, setLayoutCache, 1}}, + {3190, {wxStyledTextCtrl, getLayoutCache, 0}}, + {3191, {wxStyledTextCtrl, setScrollWidth, 1}}, + {3192, {wxStyledTextCtrl, getScrollWidth, 0}}, + {3193, {wxStyledTextCtrl, textWidth, 2}}, + {3194, {wxStyledTextCtrl, getEndAtLastLine, 0}}, + {3195, {wxStyledTextCtrl, textHeight, 1}}, + {3196, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, + {3197, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, + {3198, {wxStyledTextCtrl, appendText, 1}}, + {3199, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, + {3200, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, + {3201, {wxStyledTextCtrl, targetFromSelection, 0}}, + {3202, {wxStyledTextCtrl, linesJoin, 0}}, + {3203, {wxStyledTextCtrl, linesSplit, 1}}, + {3204, {wxStyledTextCtrl, setFoldMarginColour, 2}}, + {3205, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, + {3206, {wxStyledTextCtrl, lineDown, 0}}, + {3207, {wxStyledTextCtrl, lineDownExtend, 0}}, + {3208, {wxStyledTextCtrl, lineUp, 0}}, + {3209, {wxStyledTextCtrl, lineUpExtend, 0}}, + {3210, {wxStyledTextCtrl, charLeft, 0}}, + {3211, {wxStyledTextCtrl, charLeftExtend, 0}}, + {3212, {wxStyledTextCtrl, charRight, 0}}, + {3213, {wxStyledTextCtrl, charRightExtend, 0}}, + {3214, {wxStyledTextCtrl, wordLeft, 0}}, + {3215, {wxStyledTextCtrl, wordLeftExtend, 0}}, + {3216, {wxStyledTextCtrl, wordRight, 0}}, + {3217, {wxStyledTextCtrl, wordRightExtend, 0}}, + {3218, {wxStyledTextCtrl, home, 0}}, + {3219, {wxStyledTextCtrl, homeExtend, 0}}, + {3220, {wxStyledTextCtrl, lineEnd, 0}}, + {3221, {wxStyledTextCtrl, lineEndExtend, 0}}, + {3222, {wxStyledTextCtrl, documentStart, 0}}, + {3223, {wxStyledTextCtrl, documentStartExtend, 0}}, + {3224, {wxStyledTextCtrl, documentEnd, 0}}, + {3225, {wxStyledTextCtrl, documentEndExtend, 0}}, + {3226, {wxStyledTextCtrl, pageUp, 0}}, + {3227, {wxStyledTextCtrl, pageUpExtend, 0}}, + {3228, {wxStyledTextCtrl, pageDown, 0}}, + {3229, {wxStyledTextCtrl, pageDownExtend, 0}}, + {3230, {wxStyledTextCtrl, editToggleOvertype, 0}}, + {3231, {wxStyledTextCtrl, cancel, 0}}, + {3232, {wxStyledTextCtrl, deleteBack, 0}}, + {3233, {wxStyledTextCtrl, tab, 0}}, + {3234, {wxStyledTextCtrl, backTab, 0}}, + {3235, {wxStyledTextCtrl, newLine, 0}}, + {3236, {wxStyledTextCtrl, formFeed, 0}}, + {3237, {wxStyledTextCtrl, vCHome, 0}}, + {3238, {wxStyledTextCtrl, vCHomeExtend, 0}}, + {3239, {wxStyledTextCtrl, zoomIn, 0}}, + {3240, {wxStyledTextCtrl, zoomOut, 0}}, + {3241, {wxStyledTextCtrl, delWordLeft, 0}}, + {3242, {wxStyledTextCtrl, delWordRight, 0}}, + {3243, {wxStyledTextCtrl, lineCut, 0}}, + {3244, {wxStyledTextCtrl, lineDelete, 0}}, + {3245, {wxStyledTextCtrl, lineTranspose, 0}}, + {3246, {wxStyledTextCtrl, lineDuplicate, 0}}, + {3247, {wxStyledTextCtrl, lowerCase, 0}}, + {3248, {wxStyledTextCtrl, upperCase, 0}}, + {3249, {wxStyledTextCtrl, lineScrollDown, 0}}, + {3250, {wxStyledTextCtrl, lineScrollUp, 0}}, + {3251, {wxStyledTextCtrl, deleteBackNotLine, 0}}, + {3252, {wxStyledTextCtrl, homeDisplay, 0}}, + {3253, {wxStyledTextCtrl, homeDisplayExtend, 0}}, + {3254, {wxStyledTextCtrl, lineEndDisplay, 0}}, + {3255, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, + {3256, {wxStyledTextCtrl, homeWrapExtend, 0}}, + {3257, {wxStyledTextCtrl, lineEndWrap, 0}}, + {3258, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, + {3259, {wxStyledTextCtrl, vCHomeWrap, 0}}, + {3260, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, + {3261, {wxStyledTextCtrl, lineCopy, 0}}, + {3262, {wxStyledTextCtrl, moveCaretInsideView, 0}}, + {3263, {wxStyledTextCtrl, lineLength, 1}}, + {3264, {wxStyledTextCtrl, braceHighlight, 2}}, + {3265, {wxStyledTextCtrl, braceBadLight, 1}}, + {3266, {wxStyledTextCtrl, braceMatch, 1}}, + {3267, {wxStyledTextCtrl, getViewEOL, 0}}, + {3268, {wxStyledTextCtrl, setViewEOL, 1}}, + {3269, {wxStyledTextCtrl, setModEventMask, 1}}, + {3270, {wxStyledTextCtrl, getEdgeColumn, 0}}, + {3271, {wxStyledTextCtrl, setEdgeColumn, 1}}, + {3272, {wxStyledTextCtrl, getEdgeMode, 0}}, + {3273, {wxStyledTextCtrl, getEdgeColour, 0}}, + {3274, {wxStyledTextCtrl, setEdgeColour, 1}}, + {3275, {wxStyledTextCtrl, searchAnchor, 0}}, + {3276, {wxStyledTextCtrl, searchNext, 2}}, + {3277, {wxStyledTextCtrl, searchPrev, 2}}, + {3278, {wxStyledTextCtrl, linesOnScreen, 0}}, + {3279, {wxStyledTextCtrl, usePopUp, 1}}, + {3280, {wxStyledTextCtrl, selectionIsRectangle, 0}}, + {3281, {wxStyledTextCtrl, setZoom, 1}}, + {3282, {wxStyledTextCtrl, getZoom, 0}}, + {3283, {wxStyledTextCtrl, getModEventMask, 0}}, + {3284, {wxStyledTextCtrl, setSTCFocus, 1}}, + {3285, {wxStyledTextCtrl, getSTCFocus, 0}}, + {3286, {wxStyledTextCtrl, setStatus, 1}}, + {3287, {wxStyledTextCtrl, getStatus, 0}}, + {3288, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, + {3289, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, + {3290, {wxStyledTextCtrl, setSTCCursor, 1}}, + {3291, {wxStyledTextCtrl, getSTCCursor, 0}}, + {3292, {wxStyledTextCtrl, setControlCharSymbol, 1}}, + {3293, {wxStyledTextCtrl, getControlCharSymbol, 0}}, + {3294, {wxStyledTextCtrl, wordPartLeft, 0}}, + {3295, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, + {3296, {wxStyledTextCtrl, wordPartRight, 0}}, + {3297, {wxStyledTextCtrl, wordPartRightExtend, 0}}, + {3298, {wxStyledTextCtrl, setVisiblePolicy, 2}}, + {3299, {wxStyledTextCtrl, delLineLeft, 0}}, + {3300, {wxStyledTextCtrl, delLineRight, 0}}, + {3301, {wxStyledTextCtrl, getXOffset, 0}}, + {3302, {wxStyledTextCtrl, chooseCaretX, 0}}, + {3303, {wxStyledTextCtrl, setXCaretPolicy, 2}}, + {3304, {wxStyledTextCtrl, setYCaretPolicy, 2}}, + {3305, {wxStyledTextCtrl, getPrintWrapMode, 0}}, + {3306, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, + {3307, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, + {3308, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, + {3309, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, + {3310, {wxStyledTextCtrl, paraDownExtend, 0}}, + {3311, {wxStyledTextCtrl, paraUp, 0}}, + {3312, {wxStyledTextCtrl, paraUpExtend, 0}}, + {3313, {wxStyledTextCtrl, positionBefore, 1}}, + {3314, {wxStyledTextCtrl, positionAfter, 1}}, + {3315, {wxStyledTextCtrl, copyRange, 2}}, + {3316, {wxStyledTextCtrl, copyText, 2}}, + {3317, {wxStyledTextCtrl, setSelectionMode, 1}}, + {3318, {wxStyledTextCtrl, getSelectionMode, 0}}, + {3319, {wxStyledTextCtrl, lineDownRectExtend, 0}}, + {3320, {wxStyledTextCtrl, lineUpRectExtend, 0}}, + {3321, {wxStyledTextCtrl, charLeftRectExtend, 0}}, + {3322, {wxStyledTextCtrl, charRightRectExtend, 0}}, + {3323, {wxStyledTextCtrl, homeRectExtend, 0}}, + {3324, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, + {3325, {wxStyledTextCtrl, lineEndRectExtend, 0}}, + {3326, {wxStyledTextCtrl, pageUpRectExtend, 0}}, + {3327, {wxStyledTextCtrl, pageDownRectExtend, 0}}, + {3328, {wxStyledTextCtrl, stutteredPageUp, 0}}, + {3329, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, + {3330, {wxStyledTextCtrl, stutteredPageDown, 0}}, + {3331, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, + {3332, {wxStyledTextCtrl, wordLeftEnd, 0}}, + {3333, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, + {3334, {wxStyledTextCtrl, wordRightEnd, 0}}, + {3335, {wxStyledTextCtrl, wordRightEndExtend, 0}}, + {3336, {wxStyledTextCtrl, setWhitespaceChars, 1}}, + {3337, {wxStyledTextCtrl, setCharsDefault, 0}}, + {3338, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, + {3339, {wxStyledTextCtrl, allocate, 1}}, + {3340, {wxStyledTextCtrl, findColumn, 2}}, + {3341, {wxStyledTextCtrl, getCaretSticky, 0}}, + {3342, {wxStyledTextCtrl, setCaretSticky, 1}}, + {3343, {wxStyledTextCtrl, toggleCaretSticky, 0}}, + {3344, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, + {3345, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, + {3346, {wxStyledTextCtrl, selectionDuplicate, 0}}, + {3347, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, + {3348, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, + {3349, {wxStyledTextCtrl, startRecord, 0}}, + {3350, {wxStyledTextCtrl, stopRecord, 0}}, + {3351, {wxStyledTextCtrl, setLexer, 1}}, + {3352, {wxStyledTextCtrl, getLexer, 0}}, + {3353, {wxStyledTextCtrl, colourise, 2}}, + {3354, {wxStyledTextCtrl, setProperty, 2}}, + {3355, {wxStyledTextCtrl, setKeyWords, 2}}, + {3356, {wxStyledTextCtrl, setLexerLanguage, 1}}, + {3357, {wxStyledTextCtrl, getProperty, 1}}, + {3358, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, + {3359, {wxStyledTextCtrl, getCurrentLine, 0}}, + {3360, {wxStyledTextCtrl, styleSetSpec, 2}}, + {3361, {wxStyledTextCtrl, styleSetFont, 2}}, + {3362, {wxStyledTextCtrl, styleSetFontAttr, 7}}, + {3363, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, + {3364, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, + {3365, {wxStyledTextCtrl, cmdKeyExecute, 1}}, + {3366, {wxStyledTextCtrl, setMargins, 2}}, + {3367, {wxStyledTextCtrl, getSelection, 2}}, + {3368, {wxStyledTextCtrl, pointFromPosition, 1}}, + {3369, {wxStyledTextCtrl, scrollToLine, 1}}, + {3370, {wxStyledTextCtrl, scrollToColumn, 1}}, + {3371, {wxStyledTextCtrl, sendMsg, 2}}, + {3372, {wxStyledTextCtrl, setVScrollBar, 1}}, + {3373, {wxStyledTextCtrl, setHScrollBar, 1}}, + {3374, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, + {3375, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, + {3376, {wxStyledTextCtrl, saveFile, 1}}, + {3377, {wxStyledTextCtrl, loadFile, 1}}, + {3378, {wxStyledTextCtrl, doDragOver, 3}}, + {3379, {wxStyledTextCtrl, doDropText, 3}}, + {3380, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, + {3381, {wxStyledTextCtrl, addTextRaw, 1}}, + {3382, {wxStyledTextCtrl, insertTextRaw, 2}}, + {3383, {wxStyledTextCtrl, getCurLineRaw, 1}}, + {3384, {wxStyledTextCtrl, getLineRaw, 1}}, + {3385, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, + {3386, {wxStyledTextCtrl, getTextRangeRaw, 2}}, + {3387, {wxStyledTextCtrl, setTextRaw, 1}}, + {3388, {wxStyledTextCtrl, getTextRaw, 0}}, + {3389, {wxStyledTextCtrl, appendTextRaw, 1}}, + {3390, {wxArtProvider, getBitmap, 2}}, + {3391, {wxArtProvider, getIcon, 2}}, + {3392, {wxTreeEvent, getKeyCode, 0}}, + {3393, {wxTreeEvent, getItem, 0}}, + {3394, {wxTreeEvent, getKeyEvent, 0}}, + {3395, {wxTreeEvent, getLabel, 0}}, + {3396, {wxTreeEvent, getOldItem, 0}}, + {3397, {wxTreeEvent, getPoint, 0}}, + {3398, {wxTreeEvent, isEditCancelled, 0}}, + {3399, {wxTreeEvent, setToolTip, 1}}, + {3400, {wxNotebookEvent, getOldSelection, 0}}, + {3401, {wxNotebookEvent, getSelection, 0}}, + {3402, {wxNotebookEvent, setOldSelection, 1}}, + {3403, {wxNotebookEvent, setSelection, 1}}, + {3404, {wxFileDataObject, new, 0}}, + {3405, {wxFileDataObject, addFile, 1}}, + {3406, {wxFileDataObject, getFilenames, 0}}, + {3407, {wxFileDataObject, 'Destroy', undefined}}, + {3408, {wxTextDataObject, new, 1}}, + {3409, {wxTextDataObject, getTextLength, 0}}, + {3410, {wxTextDataObject, getText, 0}}, + {3411, {wxTextDataObject, setText, 1}}, + {3412, {wxTextDataObject, 'Destroy', undefined}}, + {3413, {wxBitmapDataObject, new_1_1, 1}}, + {3414, {wxBitmapDataObject, new_1_0, 1}}, + {3415, {wxBitmapDataObject, getBitmap, 0}}, + {3416, {wxBitmapDataObject, setBitmap, 1}}, + {3417, {wxBitmapDataObject, 'Destroy', undefined}}, + {3419, {wxClipboard, new, 0}}, + {3420, {wxClipboard, destruct, 0}}, + {3421, {wxClipboard, addData, 1}}, + {3422, {wxClipboard, clear, 0}}, + {3423, {wxClipboard, close, 0}}, + {3424, {wxClipboard, flush, 0}}, + {3425, {wxClipboard, getData, 1}}, + {3426, {wxClipboard, isOpened, 0}}, + {3427, {wxClipboard, open, 0}}, + {3428, {wxClipboard, setData, 1}}, + {3430, {wxClipboard, usePrimarySelection, 1}}, + {3431, {wxClipboard, isSupported, 1}}, + {3432, {wxClipboard, get, 0}}, + {3433, {wxSpinEvent, getPosition, 0}}, + {3434, {wxSpinEvent, setPosition, 1}}, + {3435, {wxSplitterWindow, new_0, 0}}, + {3436, {wxSplitterWindow, new_2, 2}}, + {3437, {wxSplitterWindow, destruct, 0}}, + {3438, {wxSplitterWindow, create, 2}}, + {3439, {wxSplitterWindow, getMinimumPaneSize, 0}}, + {3440, {wxSplitterWindow, getSashGravity, 0}}, + {3441, {wxSplitterWindow, getSashPosition, 0}}, + {3442, {wxSplitterWindow, getSplitMode, 0}}, + {3443, {wxSplitterWindow, getWindow1, 0}}, + {3444, {wxSplitterWindow, getWindow2, 0}}, + {3445, {wxSplitterWindow, initialize, 1}}, + {3446, {wxSplitterWindow, isSplit, 0}}, + {3447, {wxSplitterWindow, replaceWindow, 2}}, + {3448, {wxSplitterWindow, setSashGravity, 1}}, + {3449, {wxSplitterWindow, setSashPosition, 2}}, + {3450, {wxSplitterWindow, setSashSize, 1}}, + {3451, {wxSplitterWindow, setMinimumPaneSize, 1}}, + {3452, {wxSplitterWindow, setSplitMode, 1}}, + {3453, {wxSplitterWindow, splitHorizontally, 3}}, + {3454, {wxSplitterWindow, splitVertically, 3}}, + {3455, {wxSplitterWindow, unsplit, 1}}, + {3456, {wxSplitterWindow, updateSize, 0}}, + {3457, {wxSplitterEvent, getSashPosition, 0}}, + {3458, {wxSplitterEvent, getX, 0}}, + {3459, {wxSplitterEvent, getY, 0}}, + {3460, {wxSplitterEvent, getWindowBeingRemoved, 0}}, + {3461, {wxSplitterEvent, setSashPosition, 1}}, + {3462, {wxHtmlWindow, new_0, 0}}, + {3463, {wxHtmlWindow, new_2, 2}}, + {3464, {wxHtmlWindow, appendToPage, 1}}, + {3465, {wxHtmlWindow, getOpenedAnchor, 0}}, + {3466, {wxHtmlWindow, getOpenedPage, 0}}, + {3467, {wxHtmlWindow, getOpenedPageTitle, 0}}, + {3468, {wxHtmlWindow, getRelatedFrame, 0}}, + {3469, {wxHtmlWindow, historyBack, 0}}, + {3470, {wxHtmlWindow, historyCanBack, 0}}, + {3471, {wxHtmlWindow, historyCanForward, 0}}, + {3472, {wxHtmlWindow, historyClear, 0}}, + {3473, {wxHtmlWindow, historyForward, 0}}, + {3474, {wxHtmlWindow, loadFile, 1}}, + {3475, {wxHtmlWindow, loadPage, 1}}, + {3476, {wxHtmlWindow, selectAll, 0}}, + {3477, {wxHtmlWindow, selectionToText, 0}}, + {3478, {wxHtmlWindow, selectLine, 1}}, + {3479, {wxHtmlWindow, selectWord, 1}}, + {3480, {wxHtmlWindow, setBorders, 1}}, + {3481, {wxHtmlWindow, setFonts, 3}}, + {3482, {wxHtmlWindow, setPage, 1}}, + {3483, {wxHtmlWindow, setRelatedFrame, 2}}, + {3484, {wxHtmlWindow, setRelatedStatusBar, 1}}, + {3485, {wxHtmlWindow, toText, 0}}, + {3486, {wxHtmlWindow, 'Destroy', undefined}}, + {3487, {wxHtmlLinkEvent, getLinkInfo, 0}}, + {3488, {wxSystemSettings, getColour, 1}}, + {3489, {wxSystemSettings, getFont, 1}}, + {3490, {wxSystemSettings, getMetric, 2}}, + {3491, {wxSystemSettings, getScreenType, 0}}, + {3492, {wxAuiNotebookEvent, setSelection, 1}}, + {3493, {wxAuiNotebookEvent, getSelection, 0}}, + {3494, {wxAuiNotebookEvent, setOldSelection, 1}}, + {3495, {wxAuiNotebookEvent, getOldSelection, 0}}, + {3496, {wxAuiNotebookEvent, setDragSource, 1}}, + {3497, {wxAuiNotebookEvent, getDragSource, 0}}, + {3498, {wxAuiManagerEvent, setManager, 1}}, + {3499, {wxAuiManagerEvent, getManager, 0}}, + {3500, {wxAuiManagerEvent, setPane, 1}}, + {3501, {wxAuiManagerEvent, getPane, 0}}, + {3502, {wxAuiManagerEvent, setButton, 1}}, + {3503, {wxAuiManagerEvent, getButton, 0}}, + {3504, {wxAuiManagerEvent, setDC, 1}}, + {3505, {wxAuiManagerEvent, getDC, 0}}, + {3506, {wxAuiManagerEvent, veto, 1}}, + {3507, {wxAuiManagerEvent, getVeto, 0}}, + {3508, {wxAuiManagerEvent, setCanVeto, 1}}, + {3509, {wxAuiManagerEvent, canVeto, 0}}, + {3510, {wxLogNull, new, 0}}, + {3511, {wxLogNull, 'Destroy', undefined}}, {-1, {mod, func, -1}} ]. diff --git a/lib/wx/src/gen/wxe_funcs.hrl b/lib/wx/src/gen/wxe_funcs.hrl index cf672644c6..af74caaa25 100644 --- a/lib/wx/src/gen/wxe_funcs.hrl +++ b/lib/wx/src/gen/wxe_funcs.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -1600,1681 +1600,1693 @@ -define(wxListItem_SetText, 1754). -define(wxListItem_SetTextColour, 1755). -define(wxListItem_SetWidth, 1756). --define(wxImageList_new_0, 1757). --define(wxImageList_new_3, 1758). --define(wxImageList_Add_1, 1759). --define(wxImageList_Add_2_0, 1760). --define(wxImageList_Add_2_1, 1761). --define(wxImageList_Create, 1762). --define(wxImageList_Draw, 1764). --define(wxImageList_GetBitmap, 1765). --define(wxImageList_GetIcon, 1766). --define(wxImageList_GetImageCount, 1767). --define(wxImageList_GetSize, 1768). --define(wxImageList_Remove, 1769). --define(wxImageList_RemoveAll, 1770). --define(wxImageList_Replace_2, 1771). --define(wxImageList_Replace_3, 1772). --define(wxImageList_destroy, 1773). --define(wxTextAttr_new_0, 1774). --define(wxTextAttr_new_2, 1775). --define(wxTextAttr_GetAlignment, 1776). --define(wxTextAttr_GetBackgroundColour, 1777). --define(wxTextAttr_GetFont, 1778). --define(wxTextAttr_GetLeftIndent, 1779). --define(wxTextAttr_GetLeftSubIndent, 1780). --define(wxTextAttr_GetRightIndent, 1781). --define(wxTextAttr_GetTabs, 1782). --define(wxTextAttr_GetTextColour, 1783). --define(wxTextAttr_HasBackgroundColour, 1784). --define(wxTextAttr_HasFont, 1785). --define(wxTextAttr_HasTextColour, 1786). --define(wxTextAttr_GetFlags, 1787). --define(wxTextAttr_IsDefault, 1788). --define(wxTextAttr_SetAlignment, 1789). --define(wxTextAttr_SetBackgroundColour, 1790). --define(wxTextAttr_SetFlags, 1791). --define(wxTextAttr_SetFont, 1792). --define(wxTextAttr_SetLeftIndent, 1793). --define(wxTextAttr_SetRightIndent, 1794). --define(wxTextAttr_SetTabs, 1795). --define(wxTextAttr_SetTextColour, 1796). --define(wxTextAttr_destroy, 1797). --define(wxTextCtrl_new_3, 1799). --define(wxTextCtrl_new_0, 1800). --define(wxTextCtrl_destruct, 1802). --define(wxTextCtrl_AppendText, 1803). --define(wxTextCtrl_CanCopy, 1804). --define(wxTextCtrl_CanCut, 1805). --define(wxTextCtrl_CanPaste, 1806). --define(wxTextCtrl_CanRedo, 1807). --define(wxTextCtrl_CanUndo, 1808). --define(wxTextCtrl_Clear, 1809). --define(wxTextCtrl_Copy, 1810). --define(wxTextCtrl_Create, 1811). --define(wxTextCtrl_Cut, 1812). --define(wxTextCtrl_DiscardEdits, 1813). --define(wxTextCtrl_EmulateKeyPress, 1814). --define(wxTextCtrl_GetDefaultStyle, 1815). --define(wxTextCtrl_GetInsertionPoint, 1816). --define(wxTextCtrl_GetLastPosition, 1817). --define(wxTextCtrl_GetLineLength, 1818). --define(wxTextCtrl_GetLineText, 1819). --define(wxTextCtrl_GetNumberOfLines, 1820). --define(wxTextCtrl_GetRange, 1821). --define(wxTextCtrl_GetSelection, 1822). --define(wxTextCtrl_GetStringSelection, 1823). --define(wxTextCtrl_GetStyle, 1824). --define(wxTextCtrl_GetValue, 1825). --define(wxTextCtrl_IsEditable, 1826). --define(wxTextCtrl_IsModified, 1827). --define(wxTextCtrl_IsMultiLine, 1828). --define(wxTextCtrl_IsSingleLine, 1829). --define(wxTextCtrl_LoadFile, 1830). --define(wxTextCtrl_MarkDirty, 1831). --define(wxTextCtrl_Paste, 1832). --define(wxTextCtrl_PositionToXY, 1833). --define(wxTextCtrl_Redo, 1834). --define(wxTextCtrl_Remove, 1835). --define(wxTextCtrl_Replace, 1836). --define(wxTextCtrl_SaveFile, 1837). --define(wxTextCtrl_SetDefaultStyle, 1838). --define(wxTextCtrl_SetEditable, 1839). --define(wxTextCtrl_SetInsertionPoint, 1840). --define(wxTextCtrl_SetInsertionPointEnd, 1841). --define(wxTextCtrl_SetMaxLength, 1843). --define(wxTextCtrl_SetSelection, 1844). --define(wxTextCtrl_SetStyle, 1845). --define(wxTextCtrl_SetValue, 1846). --define(wxTextCtrl_ShowPosition, 1847). --define(wxTextCtrl_Undo, 1848). --define(wxTextCtrl_WriteText, 1849). --define(wxTextCtrl_XYToPosition, 1850). --define(wxNotebook_new_0, 1853). --define(wxNotebook_new_3, 1854). --define(wxNotebook_destruct, 1855). --define(wxNotebook_AddPage, 1856). --define(wxNotebook_AdvanceSelection, 1857). --define(wxNotebook_AssignImageList, 1858). --define(wxNotebook_Create, 1859). --define(wxNotebook_DeleteAllPages, 1860). --define(wxNotebook_DeletePage, 1861). --define(wxNotebook_RemovePage, 1862). --define(wxNotebook_GetCurrentPage, 1863). --define(wxNotebook_GetImageList, 1864). --define(wxNotebook_GetPage, 1866). --define(wxNotebook_GetPageCount, 1867). --define(wxNotebook_GetPageImage, 1868). --define(wxNotebook_GetPageText, 1869). --define(wxNotebook_GetRowCount, 1870). --define(wxNotebook_GetSelection, 1871). --define(wxNotebook_GetThemeBackgroundColour, 1872). --define(wxNotebook_HitTest, 1874). --define(wxNotebook_InsertPage, 1876). --define(wxNotebook_SetImageList, 1877). --define(wxNotebook_SetPadding, 1878). --define(wxNotebook_SetPageSize, 1879). --define(wxNotebook_SetPageImage, 1880). --define(wxNotebook_SetPageText, 1881). --define(wxNotebook_SetSelection, 1882). --define(wxNotebook_ChangeSelection, 1883). --define(wxChoicebook_new_0, 1884). --define(wxChoicebook_new_3, 1885). --define(wxChoicebook_AddPage, 1886). --define(wxChoicebook_AdvanceSelection, 1887). --define(wxChoicebook_AssignImageList, 1888). --define(wxChoicebook_Create, 1889). --define(wxChoicebook_DeleteAllPages, 1890). --define(wxChoicebook_DeletePage, 1891). --define(wxChoicebook_RemovePage, 1892). --define(wxChoicebook_GetCurrentPage, 1893). --define(wxChoicebook_GetImageList, 1894). --define(wxChoicebook_GetPage, 1896). --define(wxChoicebook_GetPageCount, 1897). --define(wxChoicebook_GetPageImage, 1898). --define(wxChoicebook_GetPageText, 1899). --define(wxChoicebook_GetSelection, 1900). --define(wxChoicebook_HitTest, 1901). --define(wxChoicebook_InsertPage, 1902). --define(wxChoicebook_SetImageList, 1903). --define(wxChoicebook_SetPageSize, 1904). --define(wxChoicebook_SetPageImage, 1905). --define(wxChoicebook_SetPageText, 1906). --define(wxChoicebook_SetSelection, 1907). --define(wxChoicebook_ChangeSelection, 1908). --define(wxChoicebook_destroy, 1909). --define(wxToolbook_new_0, 1910). --define(wxToolbook_new_3, 1911). --define(wxToolbook_AddPage, 1912). --define(wxToolbook_AdvanceSelection, 1913). --define(wxToolbook_AssignImageList, 1914). --define(wxToolbook_Create, 1915). --define(wxToolbook_DeleteAllPages, 1916). --define(wxToolbook_DeletePage, 1917). --define(wxToolbook_RemovePage, 1918). --define(wxToolbook_GetCurrentPage, 1919). --define(wxToolbook_GetImageList, 1920). --define(wxToolbook_GetPage, 1922). --define(wxToolbook_GetPageCount, 1923). --define(wxToolbook_GetPageImage, 1924). --define(wxToolbook_GetPageText, 1925). --define(wxToolbook_GetSelection, 1926). --define(wxToolbook_HitTest, 1928). --define(wxToolbook_InsertPage, 1929). --define(wxToolbook_SetImageList, 1930). --define(wxToolbook_SetPageSize, 1931). --define(wxToolbook_SetPageImage, 1932). --define(wxToolbook_SetPageText, 1933). --define(wxToolbook_SetSelection, 1934). --define(wxToolbook_ChangeSelection, 1935). --define(wxToolbook_destroy, 1936). --define(wxListbook_new_0, 1937). --define(wxListbook_new_3, 1938). --define(wxListbook_AddPage, 1939). --define(wxListbook_AdvanceSelection, 1940). --define(wxListbook_AssignImageList, 1941). --define(wxListbook_Create, 1942). --define(wxListbook_DeleteAllPages, 1943). --define(wxListbook_DeletePage, 1944). --define(wxListbook_RemovePage, 1945). --define(wxListbook_GetCurrentPage, 1946). --define(wxListbook_GetImageList, 1947). --define(wxListbook_GetPage, 1949). --define(wxListbook_GetPageCount, 1950). --define(wxListbook_GetPageImage, 1951). --define(wxListbook_GetPageText, 1952). --define(wxListbook_GetSelection, 1953). --define(wxListbook_HitTest, 1955). --define(wxListbook_InsertPage, 1956). --define(wxListbook_SetImageList, 1957). --define(wxListbook_SetPageSize, 1958). --define(wxListbook_SetPageImage, 1959). --define(wxListbook_SetPageText, 1960). --define(wxListbook_SetSelection, 1961). --define(wxListbook_ChangeSelection, 1962). --define(wxListbook_destroy, 1963). --define(wxTreebook_new_0, 1964). --define(wxTreebook_new_3, 1965). --define(wxTreebook_AddPage, 1966). --define(wxTreebook_AdvanceSelection, 1967). --define(wxTreebook_AssignImageList, 1968). --define(wxTreebook_Create, 1969). --define(wxTreebook_DeleteAllPages, 1970). --define(wxTreebook_DeletePage, 1971). --define(wxTreebook_RemovePage, 1972). --define(wxTreebook_GetCurrentPage, 1973). --define(wxTreebook_GetImageList, 1974). --define(wxTreebook_GetPage, 1976). --define(wxTreebook_GetPageCount, 1977). --define(wxTreebook_GetPageImage, 1978). --define(wxTreebook_GetPageText, 1979). --define(wxTreebook_GetSelection, 1980). --define(wxTreebook_ExpandNode, 1981). --define(wxTreebook_IsNodeExpanded, 1982). --define(wxTreebook_HitTest, 1984). --define(wxTreebook_InsertPage, 1985). --define(wxTreebook_InsertSubPage, 1986). --define(wxTreebook_SetImageList, 1987). --define(wxTreebook_SetPageSize, 1988). --define(wxTreebook_SetPageImage, 1989). --define(wxTreebook_SetPageText, 1990). --define(wxTreebook_SetSelection, 1991). --define(wxTreebook_ChangeSelection, 1992). --define(wxTreebook_destroy, 1993). --define(wxTreeCtrl_new_2, 1996). --define(wxTreeCtrl_new_0, 1997). --define(wxTreeCtrl_destruct, 1999). --define(wxTreeCtrl_AddRoot, 2000). --define(wxTreeCtrl_AppendItem, 2001). --define(wxTreeCtrl_AssignImageList, 2002). --define(wxTreeCtrl_AssignStateImageList, 2003). --define(wxTreeCtrl_Collapse, 2004). --define(wxTreeCtrl_CollapseAndReset, 2005). --define(wxTreeCtrl_Create, 2006). --define(wxTreeCtrl_Delete, 2007). --define(wxTreeCtrl_DeleteAllItems, 2008). --define(wxTreeCtrl_DeleteChildren, 2009). --define(wxTreeCtrl_EditLabel, 2010). --define(wxTreeCtrl_EnsureVisible, 2011). --define(wxTreeCtrl_Expand, 2012). --define(wxTreeCtrl_GetBoundingRect, 2013). --define(wxTreeCtrl_GetChildrenCount, 2015). --define(wxTreeCtrl_GetCount, 2016). --define(wxTreeCtrl_GetEditControl, 2017). --define(wxTreeCtrl_GetFirstChild, 2018). --define(wxTreeCtrl_GetNextChild, 2019). --define(wxTreeCtrl_GetFirstVisibleItem, 2020). --define(wxTreeCtrl_GetImageList, 2021). --define(wxTreeCtrl_GetIndent, 2022). --define(wxTreeCtrl_GetItemBackgroundColour, 2023). --define(wxTreeCtrl_GetItemData, 2024). --define(wxTreeCtrl_GetItemFont, 2025). --define(wxTreeCtrl_GetItemImage_1, 2026). --define(wxTreeCtrl_GetItemImage_2, 2027). --define(wxTreeCtrl_GetItemText, 2028). --define(wxTreeCtrl_GetItemTextColour, 2029). --define(wxTreeCtrl_GetLastChild, 2030). --define(wxTreeCtrl_GetNextSibling, 2031). --define(wxTreeCtrl_GetNextVisible, 2032). --define(wxTreeCtrl_GetItemParent, 2033). --define(wxTreeCtrl_GetPrevSibling, 2034). --define(wxTreeCtrl_GetPrevVisible, 2035). --define(wxTreeCtrl_GetRootItem, 2036). --define(wxTreeCtrl_GetSelection, 2037). --define(wxTreeCtrl_GetSelections, 2038). --define(wxTreeCtrl_GetStateImageList, 2039). --define(wxTreeCtrl_HitTest, 2040). --define(wxTreeCtrl_InsertItem, 2042). --define(wxTreeCtrl_IsBold, 2043). --define(wxTreeCtrl_IsExpanded, 2044). --define(wxTreeCtrl_IsSelected, 2045). --define(wxTreeCtrl_IsVisible, 2046). --define(wxTreeCtrl_ItemHasChildren, 2047). --define(wxTreeCtrl_PrependItem, 2048). --define(wxTreeCtrl_ScrollTo, 2049). --define(wxTreeCtrl_SelectItem_1, 2050). --define(wxTreeCtrl_SelectItem_2, 2051). --define(wxTreeCtrl_SetIndent, 2052). --define(wxTreeCtrl_SetImageList, 2053). --define(wxTreeCtrl_SetItemBackgroundColour, 2054). --define(wxTreeCtrl_SetItemBold, 2055). --define(wxTreeCtrl_SetItemData, 2056). --define(wxTreeCtrl_SetItemDropHighlight, 2057). --define(wxTreeCtrl_SetItemFont, 2058). --define(wxTreeCtrl_SetItemHasChildren, 2059). --define(wxTreeCtrl_SetItemImage_2, 2060). --define(wxTreeCtrl_SetItemImage_3, 2061). --define(wxTreeCtrl_SetItemText, 2062). --define(wxTreeCtrl_SetItemTextColour, 2063). --define(wxTreeCtrl_SetStateImageList, 2064). --define(wxTreeCtrl_SetWindowStyle, 2065). --define(wxTreeCtrl_SortChildren, 2066). --define(wxTreeCtrl_Toggle, 2067). --define(wxTreeCtrl_ToggleItemSelection, 2068). --define(wxTreeCtrl_Unselect, 2069). --define(wxTreeCtrl_UnselectAll, 2070). --define(wxTreeCtrl_UnselectItem, 2071). --define(wxScrollBar_new_0, 2072). --define(wxScrollBar_new_3, 2073). --define(wxScrollBar_destruct, 2074). --define(wxScrollBar_Create, 2075). --define(wxScrollBar_GetRange, 2076). --define(wxScrollBar_GetPageSize, 2077). --define(wxScrollBar_GetThumbPosition, 2078). --define(wxScrollBar_GetThumbSize, 2079). --define(wxScrollBar_SetThumbPosition, 2080). --define(wxScrollBar_SetScrollbar, 2081). --define(wxSpinButton_new_2, 2083). --define(wxSpinButton_new_0, 2084). --define(wxSpinButton_Create, 2085). --define(wxSpinButton_GetMax, 2086). --define(wxSpinButton_GetMin, 2087). --define(wxSpinButton_GetValue, 2088). --define(wxSpinButton_SetRange, 2089). --define(wxSpinButton_SetValue, 2090). --define(wxSpinButton_destroy, 2091). --define(wxSpinCtrl_new_0, 2092). --define(wxSpinCtrl_new_2, 2093). --define(wxSpinCtrl_Create, 2095). --define(wxSpinCtrl_SetValue_1_1, 2098). --define(wxSpinCtrl_SetValue_1_0, 2099). --define(wxSpinCtrl_GetValue, 2101). --define(wxSpinCtrl_SetRange, 2103). --define(wxSpinCtrl_SetSelection, 2104). --define(wxSpinCtrl_GetMin, 2106). --define(wxSpinCtrl_GetMax, 2108). --define(wxSpinCtrl_destroy, 2109). --define(wxStaticText_new_0, 2110). --define(wxStaticText_new_4, 2111). --define(wxStaticText_Create, 2112). --define(wxStaticText_GetLabel, 2113). --define(wxStaticText_SetLabel, 2114). --define(wxStaticText_Wrap, 2115). --define(wxStaticText_destroy, 2116). --define(wxStaticBitmap_new_0, 2117). --define(wxStaticBitmap_new_4, 2118). --define(wxStaticBitmap_Create, 2119). --define(wxStaticBitmap_GetBitmap, 2120). --define(wxStaticBitmap_SetBitmap, 2121). --define(wxStaticBitmap_destroy, 2122). --define(wxRadioBox_new, 2123). --define(wxRadioBox_destruct, 2125). --define(wxRadioBox_Create, 2126). --define(wxRadioBox_Enable_2, 2127). --define(wxRadioBox_Enable_1, 2128). --define(wxRadioBox_GetSelection, 2129). --define(wxRadioBox_GetString, 2130). --define(wxRadioBox_SetSelection, 2131). --define(wxRadioBox_Show_2, 2132). --define(wxRadioBox_Show_1, 2133). --define(wxRadioBox_GetColumnCount, 2134). --define(wxRadioBox_GetItemHelpText, 2135). --define(wxRadioBox_GetItemToolTip, 2136). --define(wxRadioBox_GetItemFromPoint, 2138). --define(wxRadioBox_GetRowCount, 2139). --define(wxRadioBox_IsItemEnabled, 2140). --define(wxRadioBox_IsItemShown, 2141). --define(wxRadioBox_SetItemHelpText, 2142). --define(wxRadioBox_SetItemToolTip, 2143). --define(wxRadioButton_new_0, 2144). --define(wxRadioButton_new_4, 2145). --define(wxRadioButton_Create, 2146). --define(wxRadioButton_GetValue, 2147). --define(wxRadioButton_SetValue, 2148). --define(wxRadioButton_destroy, 2149). --define(wxSlider_new_6, 2151). --define(wxSlider_new_0, 2152). --define(wxSlider_Create, 2153). --define(wxSlider_GetLineSize, 2154). --define(wxSlider_GetMax, 2155). --define(wxSlider_GetMin, 2156). --define(wxSlider_GetPageSize, 2157). --define(wxSlider_GetThumbLength, 2158). --define(wxSlider_GetValue, 2159). --define(wxSlider_SetLineSize, 2160). --define(wxSlider_SetPageSize, 2161). --define(wxSlider_SetRange, 2162). --define(wxSlider_SetThumbLength, 2163). --define(wxSlider_SetValue, 2164). --define(wxSlider_destroy, 2165). --define(wxDialog_new_4, 2167). --define(wxDialog_new_0, 2168). --define(wxDialog_destruct, 2170). --define(wxDialog_Create, 2171). --define(wxDialog_CreateButtonSizer, 2172). --define(wxDialog_CreateStdDialogButtonSizer, 2173). --define(wxDialog_EndModal, 2174). --define(wxDialog_GetAffirmativeId, 2175). --define(wxDialog_GetReturnCode, 2176). --define(wxDialog_IsModal, 2177). --define(wxDialog_SetAffirmativeId, 2178). --define(wxDialog_SetReturnCode, 2179). --define(wxDialog_Show, 2180). --define(wxDialog_ShowModal, 2181). --define(wxColourDialog_new_0, 2182). --define(wxColourDialog_new_2, 2183). --define(wxColourDialog_destruct, 2184). --define(wxColourDialog_Create, 2185). --define(wxColourDialog_GetColourData, 2186). --define(wxColourData_new_0, 2187). --define(wxColourData_new_1, 2188). --define(wxColourData_destruct, 2189). --define(wxColourData_GetChooseFull, 2190). --define(wxColourData_GetColour, 2191). --define(wxColourData_GetCustomColour, 2193). --define(wxColourData_SetChooseFull, 2194). --define(wxColourData_SetColour, 2195). --define(wxColourData_SetCustomColour, 2196). --define(wxPalette_new_0, 2197). --define(wxPalette_new_4, 2198). --define(wxPalette_destruct, 2200). --define(wxPalette_Create, 2201). --define(wxPalette_GetColoursCount, 2202). --define(wxPalette_GetPixel, 2203). --define(wxPalette_GetRGB, 2204). --define(wxPalette_IsOk, 2205). --define(wxDirDialog_new, 2209). --define(wxDirDialog_destruct, 2210). --define(wxDirDialog_GetPath, 2211). --define(wxDirDialog_GetMessage, 2212). --define(wxDirDialog_SetMessage, 2213). --define(wxDirDialog_SetPath, 2214). --define(wxFileDialog_new, 2218). --define(wxFileDialog_destruct, 2219). --define(wxFileDialog_GetDirectory, 2220). --define(wxFileDialog_GetFilename, 2221). --define(wxFileDialog_GetFilenames, 2222). --define(wxFileDialog_GetFilterIndex, 2223). --define(wxFileDialog_GetMessage, 2224). --define(wxFileDialog_GetPath, 2225). --define(wxFileDialog_GetPaths, 2226). --define(wxFileDialog_GetWildcard, 2227). --define(wxFileDialog_SetDirectory, 2228). --define(wxFileDialog_SetFilename, 2229). --define(wxFileDialog_SetFilterIndex, 2230). --define(wxFileDialog_SetMessage, 2231). --define(wxFileDialog_SetPath, 2232). --define(wxFileDialog_SetWildcard, 2233). --define(wxPickerBase_SetInternalMargin, 2234). --define(wxPickerBase_GetInternalMargin, 2235). --define(wxPickerBase_SetTextCtrlProportion, 2236). --define(wxPickerBase_SetPickerCtrlProportion, 2237). --define(wxPickerBase_GetTextCtrlProportion, 2238). --define(wxPickerBase_GetPickerCtrlProportion, 2239). --define(wxPickerBase_HasTextCtrl, 2240). --define(wxPickerBase_GetTextCtrl, 2241). --define(wxPickerBase_IsTextCtrlGrowable, 2242). --define(wxPickerBase_SetPickerCtrlGrowable, 2243). --define(wxPickerBase_SetTextCtrlGrowable, 2244). --define(wxPickerBase_IsPickerCtrlGrowable, 2245). --define(wxFilePickerCtrl_new_0, 2246). --define(wxFilePickerCtrl_new_3, 2247). --define(wxFilePickerCtrl_Create, 2248). --define(wxFilePickerCtrl_GetPath, 2249). --define(wxFilePickerCtrl_SetPath, 2250). --define(wxFilePickerCtrl_destroy, 2251). --define(wxDirPickerCtrl_new_0, 2252). --define(wxDirPickerCtrl_new_3, 2253). --define(wxDirPickerCtrl_Create, 2254). --define(wxDirPickerCtrl_GetPath, 2255). --define(wxDirPickerCtrl_SetPath, 2256). --define(wxDirPickerCtrl_destroy, 2257). --define(wxColourPickerCtrl_new_0, 2258). --define(wxColourPickerCtrl_new_3, 2259). --define(wxColourPickerCtrl_Create, 2260). --define(wxColourPickerCtrl_GetColour, 2261). --define(wxColourPickerCtrl_SetColour_1_1, 2262). --define(wxColourPickerCtrl_SetColour_1_0, 2263). --define(wxColourPickerCtrl_destroy, 2264). --define(wxDatePickerCtrl_new_0, 2265). --define(wxDatePickerCtrl_new_3, 2266). --define(wxDatePickerCtrl_GetRange, 2267). --define(wxDatePickerCtrl_GetValue, 2268). --define(wxDatePickerCtrl_SetRange, 2269). --define(wxDatePickerCtrl_SetValue, 2270). --define(wxDatePickerCtrl_destroy, 2271). --define(wxFontPickerCtrl_new_0, 2272). --define(wxFontPickerCtrl_new_3, 2273). --define(wxFontPickerCtrl_Create, 2274). --define(wxFontPickerCtrl_GetSelectedFont, 2275). --define(wxFontPickerCtrl_SetSelectedFont, 2276). --define(wxFontPickerCtrl_GetMaxPointSize, 2277). --define(wxFontPickerCtrl_SetMaxPointSize, 2278). --define(wxFontPickerCtrl_destroy, 2279). --define(wxFindReplaceDialog_new_0, 2282). --define(wxFindReplaceDialog_new_4, 2283). --define(wxFindReplaceDialog_destruct, 2284). --define(wxFindReplaceDialog_Create, 2285). --define(wxFindReplaceDialog_GetData, 2286). --define(wxFindReplaceData_new_0, 2287). --define(wxFindReplaceData_new_1, 2288). --define(wxFindReplaceData_GetFindString, 2289). --define(wxFindReplaceData_GetReplaceString, 2290). --define(wxFindReplaceData_GetFlags, 2291). --define(wxFindReplaceData_SetFlags, 2292). --define(wxFindReplaceData_SetFindString, 2293). --define(wxFindReplaceData_SetReplaceString, 2294). --define(wxFindReplaceData_destroy, 2295). --define(wxMultiChoiceDialog_new_0, 2296). --define(wxMultiChoiceDialog_new_5, 2298). --define(wxMultiChoiceDialog_GetSelections, 2299). --define(wxMultiChoiceDialog_SetSelections, 2300). --define(wxMultiChoiceDialog_destroy, 2301). --define(wxSingleChoiceDialog_new_0, 2302). --define(wxSingleChoiceDialog_new_5, 2304). --define(wxSingleChoiceDialog_GetSelection, 2305). --define(wxSingleChoiceDialog_GetStringSelection, 2306). --define(wxSingleChoiceDialog_SetSelection, 2307). --define(wxSingleChoiceDialog_destroy, 2308). --define(wxTextEntryDialog_new, 2309). --define(wxTextEntryDialog_GetValue, 2310). --define(wxTextEntryDialog_SetValue, 2311). --define(wxTextEntryDialog_destroy, 2312). --define(wxPasswordEntryDialog_new, 2313). --define(wxPasswordEntryDialog_destroy, 2314). --define(wxFontData_new_0, 2315). --define(wxFontData_new_1, 2316). --define(wxFontData_destruct, 2317). --define(wxFontData_EnableEffects, 2318). --define(wxFontData_GetAllowSymbols, 2319). --define(wxFontData_GetColour, 2320). --define(wxFontData_GetChosenFont, 2321). --define(wxFontData_GetEnableEffects, 2322). --define(wxFontData_GetInitialFont, 2323). --define(wxFontData_GetShowHelp, 2324). --define(wxFontData_SetAllowSymbols, 2325). --define(wxFontData_SetChosenFont, 2326). --define(wxFontData_SetColour, 2327). --define(wxFontData_SetInitialFont, 2328). --define(wxFontData_SetRange, 2329). --define(wxFontData_SetShowHelp, 2330). --define(wxFontDialog_new_0, 2334). --define(wxFontDialog_new_2, 2336). --define(wxFontDialog_Create, 2338). --define(wxFontDialog_GetFontData, 2339). --define(wxFontDialog_destroy, 2341). --define(wxProgressDialog_new, 2342). --define(wxProgressDialog_destruct, 2343). --define(wxProgressDialog_Resume, 2344). --define(wxProgressDialog_Update_2, 2345). --define(wxProgressDialog_Update_0, 2346). --define(wxMessageDialog_new, 2347). --define(wxMessageDialog_destruct, 2348). --define(wxPageSetupDialog_new, 2349). --define(wxPageSetupDialog_destruct, 2350). --define(wxPageSetupDialog_GetPageSetupData, 2351). --define(wxPageSetupDialog_ShowModal, 2352). --define(wxPageSetupDialogData_new_0, 2353). --define(wxPageSetupDialogData_new_1_0, 2354). --define(wxPageSetupDialogData_new_1_1, 2355). --define(wxPageSetupDialogData_destruct, 2356). --define(wxPageSetupDialogData_EnableHelp, 2357). --define(wxPageSetupDialogData_EnableMargins, 2358). --define(wxPageSetupDialogData_EnableOrientation, 2359). --define(wxPageSetupDialogData_EnablePaper, 2360). --define(wxPageSetupDialogData_EnablePrinter, 2361). --define(wxPageSetupDialogData_GetDefaultMinMargins, 2362). --define(wxPageSetupDialogData_GetEnableMargins, 2363). --define(wxPageSetupDialogData_GetEnableOrientation, 2364). --define(wxPageSetupDialogData_GetEnablePaper, 2365). --define(wxPageSetupDialogData_GetEnablePrinter, 2366). --define(wxPageSetupDialogData_GetEnableHelp, 2367). --define(wxPageSetupDialogData_GetDefaultInfo, 2368). --define(wxPageSetupDialogData_GetMarginTopLeft, 2369). --define(wxPageSetupDialogData_GetMarginBottomRight, 2370). --define(wxPageSetupDialogData_GetMinMarginTopLeft, 2371). --define(wxPageSetupDialogData_GetMinMarginBottomRight, 2372). --define(wxPageSetupDialogData_GetPaperId, 2373). --define(wxPageSetupDialogData_GetPaperSize, 2374). --define(wxPageSetupDialogData_GetPrintData, 2376). --define(wxPageSetupDialogData_IsOk, 2377). --define(wxPageSetupDialogData_SetDefaultInfo, 2378). --define(wxPageSetupDialogData_SetDefaultMinMargins, 2379). --define(wxPageSetupDialogData_SetMarginTopLeft, 2380). --define(wxPageSetupDialogData_SetMarginBottomRight, 2381). --define(wxPageSetupDialogData_SetMinMarginTopLeft, 2382). --define(wxPageSetupDialogData_SetMinMarginBottomRight, 2383). --define(wxPageSetupDialogData_SetPaperId, 2384). --define(wxPageSetupDialogData_SetPaperSize_1_1, 2385). --define(wxPageSetupDialogData_SetPaperSize_1_0, 2386). --define(wxPageSetupDialogData_SetPrintData, 2387). --define(wxPrintDialog_new_2_0, 2388). --define(wxPrintDialog_new_2_1, 2389). --define(wxPrintDialog_destruct, 2390). --define(wxPrintDialog_GetPrintDialogData, 2391). --define(wxPrintDialog_GetPrintDC, 2392). --define(wxPrintDialogData_new_0, 2393). --define(wxPrintDialogData_new_1_1, 2394). --define(wxPrintDialogData_new_1_0, 2395). --define(wxPrintDialogData_destruct, 2396). --define(wxPrintDialogData_EnableHelp, 2397). --define(wxPrintDialogData_EnablePageNumbers, 2398). --define(wxPrintDialogData_EnablePrintToFile, 2399). --define(wxPrintDialogData_EnableSelection, 2400). --define(wxPrintDialogData_GetAllPages, 2401). --define(wxPrintDialogData_GetCollate, 2402). --define(wxPrintDialogData_GetFromPage, 2403). --define(wxPrintDialogData_GetMaxPage, 2404). --define(wxPrintDialogData_GetMinPage, 2405). --define(wxPrintDialogData_GetNoCopies, 2406). --define(wxPrintDialogData_GetPrintData, 2407). --define(wxPrintDialogData_GetPrintToFile, 2408). --define(wxPrintDialogData_GetSelection, 2409). --define(wxPrintDialogData_GetToPage, 2410). --define(wxPrintDialogData_IsOk, 2411). --define(wxPrintDialogData_SetCollate, 2412). --define(wxPrintDialogData_SetFromPage, 2413). --define(wxPrintDialogData_SetMaxPage, 2414). --define(wxPrintDialogData_SetMinPage, 2415). --define(wxPrintDialogData_SetNoCopies, 2416). --define(wxPrintDialogData_SetPrintData, 2417). --define(wxPrintDialogData_SetPrintToFile, 2418). --define(wxPrintDialogData_SetSelection, 2419). --define(wxPrintDialogData_SetToPage, 2420). --define(wxPrintData_new_0, 2421). --define(wxPrintData_new_1, 2422). --define(wxPrintData_destruct, 2423). --define(wxPrintData_GetCollate, 2424). --define(wxPrintData_GetBin, 2425). --define(wxPrintData_GetColour, 2426). --define(wxPrintData_GetDuplex, 2427). --define(wxPrintData_GetNoCopies, 2428). --define(wxPrintData_GetOrientation, 2429). --define(wxPrintData_GetPaperId, 2430). --define(wxPrintData_GetPrinterName, 2431). --define(wxPrintData_GetQuality, 2432). --define(wxPrintData_IsOk, 2433). --define(wxPrintData_SetBin, 2434). --define(wxPrintData_SetCollate, 2435). --define(wxPrintData_SetColour, 2436). --define(wxPrintData_SetDuplex, 2437). --define(wxPrintData_SetNoCopies, 2438). --define(wxPrintData_SetOrientation, 2439). --define(wxPrintData_SetPaperId, 2440). --define(wxPrintData_SetPrinterName, 2441). --define(wxPrintData_SetQuality, 2442). --define(wxPrintPreview_new_2, 2445). --define(wxPrintPreview_new_3, 2446). --define(wxPrintPreview_destruct, 2448). --define(wxPrintPreview_GetCanvas, 2449). --define(wxPrintPreview_GetCurrentPage, 2450). --define(wxPrintPreview_GetFrame, 2451). --define(wxPrintPreview_GetMaxPage, 2452). --define(wxPrintPreview_GetMinPage, 2453). --define(wxPrintPreview_GetPrintout, 2454). --define(wxPrintPreview_GetPrintoutForPrinting, 2455). --define(wxPrintPreview_IsOk, 2456). --define(wxPrintPreview_PaintPage, 2457). --define(wxPrintPreview_Print, 2458). --define(wxPrintPreview_RenderPage, 2459). --define(wxPrintPreview_SetCanvas, 2460). --define(wxPrintPreview_SetCurrentPage, 2461). --define(wxPrintPreview_SetFrame, 2462). --define(wxPrintPreview_SetPrintout, 2463). --define(wxPrintPreview_SetZoom, 2464). --define(wxPreviewFrame_new, 2465). --define(wxPreviewFrame_destruct, 2466). --define(wxPreviewFrame_CreateControlBar, 2467). --define(wxPreviewFrame_CreateCanvas, 2468). --define(wxPreviewFrame_Initialize, 2469). --define(wxPreviewFrame_OnCloseWindow, 2470). --define(wxPreviewControlBar_new, 2471). --define(wxPreviewControlBar_destruct, 2472). --define(wxPreviewControlBar_CreateButtons, 2473). --define(wxPreviewControlBar_GetPrintPreview, 2474). --define(wxPreviewControlBar_GetZoomControl, 2475). --define(wxPreviewControlBar_SetZoomControl, 2476). --define(wxPrinter_new, 2478). --define(wxPrinter_CreateAbortWindow, 2479). --define(wxPrinter_GetAbort, 2480). --define(wxPrinter_GetLastError, 2481). --define(wxPrinter_GetPrintDialogData, 2482). --define(wxPrinter_Print, 2483). --define(wxPrinter_PrintDialog, 2484). --define(wxPrinter_ReportError, 2485). --define(wxPrinter_Setup, 2486). --define(wxPrinter_destroy, 2487). --define(wxXmlResource_new_1, 2488). --define(wxXmlResource_new_2, 2489). --define(wxXmlResource_destruct, 2490). --define(wxXmlResource_AttachUnknownControl, 2491). --define(wxXmlResource_ClearHandlers, 2492). --define(wxXmlResource_CompareVersion, 2493). --define(wxXmlResource_Get, 2494). --define(wxXmlResource_GetFlags, 2495). --define(wxXmlResource_GetVersion, 2496). --define(wxXmlResource_GetXRCID, 2497). --define(wxXmlResource_InitAllHandlers, 2498). --define(wxXmlResource_Load, 2499). --define(wxXmlResource_LoadBitmap, 2500). --define(wxXmlResource_LoadDialog_2, 2501). --define(wxXmlResource_LoadDialog_3, 2502). --define(wxXmlResource_LoadFrame_2, 2503). --define(wxXmlResource_LoadFrame_3, 2504). --define(wxXmlResource_LoadIcon, 2505). --define(wxXmlResource_LoadMenu, 2506). --define(wxXmlResource_LoadMenuBar_2, 2507). --define(wxXmlResource_LoadMenuBar_1, 2508). --define(wxXmlResource_LoadPanel_2, 2509). --define(wxXmlResource_LoadPanel_3, 2510). --define(wxXmlResource_LoadToolBar, 2511). --define(wxXmlResource_Set, 2512). --define(wxXmlResource_SetFlags, 2513). --define(wxXmlResource_Unload, 2514). --define(wxXmlResource_xrcctrl, 2515). --define(wxHtmlEasyPrinting_new, 2516). --define(wxHtmlEasyPrinting_destruct, 2517). --define(wxHtmlEasyPrinting_GetPrintData, 2518). --define(wxHtmlEasyPrinting_GetPageSetupData, 2519). --define(wxHtmlEasyPrinting_PreviewFile, 2520). --define(wxHtmlEasyPrinting_PreviewText, 2521). --define(wxHtmlEasyPrinting_PrintFile, 2522). --define(wxHtmlEasyPrinting_PrintText, 2523). --define(wxHtmlEasyPrinting_PageSetup, 2524). --define(wxHtmlEasyPrinting_SetFonts, 2525). --define(wxHtmlEasyPrinting_SetHeader, 2526). --define(wxHtmlEasyPrinting_SetFooter, 2527). --define(wxGLCanvas_new_2, 2529). --define(wxGLCanvas_new_3_1, 2530). --define(wxGLCanvas_new_3_0, 2531). --define(wxGLCanvas_GetContext, 2532). --define(wxGLCanvas_SetCurrent, 2534). --define(wxGLCanvas_SwapBuffers, 2535). --define(wxGLCanvas_destroy, 2536). --define(wxAuiManager_new, 2537). --define(wxAuiManager_destruct, 2538). --define(wxAuiManager_AddPane_2_1, 2539). --define(wxAuiManager_AddPane_3, 2540). --define(wxAuiManager_AddPane_2_0, 2541). --define(wxAuiManager_DetachPane, 2542). --define(wxAuiManager_GetAllPanes, 2543). --define(wxAuiManager_GetArtProvider, 2544). --define(wxAuiManager_GetDockSizeConstraint, 2545). --define(wxAuiManager_GetFlags, 2546). --define(wxAuiManager_GetManagedWindow, 2547). --define(wxAuiManager_GetManager, 2548). --define(wxAuiManager_GetPane_1_1, 2549). --define(wxAuiManager_GetPane_1_0, 2550). --define(wxAuiManager_HideHint, 2551). --define(wxAuiManager_InsertPane, 2552). --define(wxAuiManager_LoadPaneInfo, 2553). --define(wxAuiManager_LoadPerspective, 2554). --define(wxAuiManager_SavePaneInfo, 2555). --define(wxAuiManager_SavePerspective, 2556). --define(wxAuiManager_SetArtProvider, 2557). --define(wxAuiManager_SetDockSizeConstraint, 2558). --define(wxAuiManager_SetFlags, 2559). --define(wxAuiManager_SetManagedWindow, 2560). --define(wxAuiManager_ShowHint, 2561). --define(wxAuiManager_UnInit, 2562). --define(wxAuiManager_Update, 2563). --define(wxAuiPaneInfo_new_0, 2564). --define(wxAuiPaneInfo_new_1, 2565). --define(wxAuiPaneInfo_destruct, 2566). --define(wxAuiPaneInfo_BestSize_1, 2567). --define(wxAuiPaneInfo_BestSize_2, 2568). --define(wxAuiPaneInfo_Bottom, 2569). --define(wxAuiPaneInfo_BottomDockable, 2570). --define(wxAuiPaneInfo_Caption, 2571). --define(wxAuiPaneInfo_CaptionVisible, 2572). --define(wxAuiPaneInfo_Centre, 2573). --define(wxAuiPaneInfo_CentrePane, 2574). --define(wxAuiPaneInfo_CloseButton, 2575). --define(wxAuiPaneInfo_DefaultPane, 2576). --define(wxAuiPaneInfo_DestroyOnClose, 2577). --define(wxAuiPaneInfo_Direction, 2578). --define(wxAuiPaneInfo_Dock, 2579). --define(wxAuiPaneInfo_Dockable, 2580). --define(wxAuiPaneInfo_Fixed, 2581). --define(wxAuiPaneInfo_Float, 2582). --define(wxAuiPaneInfo_Floatable, 2583). --define(wxAuiPaneInfo_FloatingPosition_1, 2584). --define(wxAuiPaneInfo_FloatingPosition_2, 2585). --define(wxAuiPaneInfo_FloatingSize_1, 2586). --define(wxAuiPaneInfo_FloatingSize_2, 2587). --define(wxAuiPaneInfo_Gripper, 2588). --define(wxAuiPaneInfo_GripperTop, 2589). --define(wxAuiPaneInfo_HasBorder, 2590). --define(wxAuiPaneInfo_HasCaption, 2591). --define(wxAuiPaneInfo_HasCloseButton, 2592). --define(wxAuiPaneInfo_HasFlag, 2593). --define(wxAuiPaneInfo_HasGripper, 2594). --define(wxAuiPaneInfo_HasGripperTop, 2595). --define(wxAuiPaneInfo_HasMaximizeButton, 2596). --define(wxAuiPaneInfo_HasMinimizeButton, 2597). --define(wxAuiPaneInfo_HasPinButton, 2598). --define(wxAuiPaneInfo_Hide, 2599). --define(wxAuiPaneInfo_IsBottomDockable, 2600). --define(wxAuiPaneInfo_IsDocked, 2601). --define(wxAuiPaneInfo_IsFixed, 2602). --define(wxAuiPaneInfo_IsFloatable, 2603). --define(wxAuiPaneInfo_IsFloating, 2604). --define(wxAuiPaneInfo_IsLeftDockable, 2605). --define(wxAuiPaneInfo_IsMovable, 2606). --define(wxAuiPaneInfo_IsOk, 2607). --define(wxAuiPaneInfo_IsResizable, 2608). --define(wxAuiPaneInfo_IsRightDockable, 2609). --define(wxAuiPaneInfo_IsShown, 2610). --define(wxAuiPaneInfo_IsToolbar, 2611). --define(wxAuiPaneInfo_IsTopDockable, 2612). --define(wxAuiPaneInfo_Layer, 2613). --define(wxAuiPaneInfo_Left, 2614). --define(wxAuiPaneInfo_LeftDockable, 2615). --define(wxAuiPaneInfo_MaxSize_1, 2616). --define(wxAuiPaneInfo_MaxSize_2, 2617). --define(wxAuiPaneInfo_MaximizeButton, 2618). --define(wxAuiPaneInfo_MinSize_1, 2619). --define(wxAuiPaneInfo_MinSize_2, 2620). --define(wxAuiPaneInfo_MinimizeButton, 2621). --define(wxAuiPaneInfo_Movable, 2622). --define(wxAuiPaneInfo_Name, 2623). --define(wxAuiPaneInfo_PaneBorder, 2624). --define(wxAuiPaneInfo_PinButton, 2625). --define(wxAuiPaneInfo_Position, 2626). --define(wxAuiPaneInfo_Resizable, 2627). --define(wxAuiPaneInfo_Right, 2628). --define(wxAuiPaneInfo_RightDockable, 2629). --define(wxAuiPaneInfo_Row, 2630). --define(wxAuiPaneInfo_SafeSet, 2631). --define(wxAuiPaneInfo_SetFlag, 2632). --define(wxAuiPaneInfo_Show, 2633). --define(wxAuiPaneInfo_ToolbarPane, 2634). --define(wxAuiPaneInfo_Top, 2635). --define(wxAuiPaneInfo_TopDockable, 2636). --define(wxAuiPaneInfo_Window, 2637). --define(wxAuiNotebook_new_0, 2638). --define(wxAuiNotebook_new_2, 2639). --define(wxAuiNotebook_AddPage, 2640). --define(wxAuiNotebook_Create, 2641). --define(wxAuiNotebook_DeletePage, 2642). --define(wxAuiNotebook_GetArtProvider, 2643). --define(wxAuiNotebook_GetPage, 2644). --define(wxAuiNotebook_GetPageBitmap, 2645). --define(wxAuiNotebook_GetPageCount, 2646). --define(wxAuiNotebook_GetPageIndex, 2647). --define(wxAuiNotebook_GetPageText, 2648). --define(wxAuiNotebook_GetSelection, 2649). --define(wxAuiNotebook_InsertPage, 2650). --define(wxAuiNotebook_RemovePage, 2651). --define(wxAuiNotebook_SetArtProvider, 2652). --define(wxAuiNotebook_SetFont, 2653). --define(wxAuiNotebook_SetPageBitmap, 2654). --define(wxAuiNotebook_SetPageText, 2655). --define(wxAuiNotebook_SetSelection, 2656). --define(wxAuiNotebook_SetTabCtrlHeight, 2657). --define(wxAuiNotebook_SetUniformBitmapSize, 2658). --define(wxAuiNotebook_destroy, 2659). --define(wxMDIParentFrame_new_0, 2660). --define(wxMDIParentFrame_new_4, 2661). --define(wxMDIParentFrame_destruct, 2662). --define(wxMDIParentFrame_ActivateNext, 2663). --define(wxMDIParentFrame_ActivatePrevious, 2664). --define(wxMDIParentFrame_ArrangeIcons, 2665). --define(wxMDIParentFrame_Cascade, 2666). --define(wxMDIParentFrame_Create, 2667). --define(wxMDIParentFrame_GetActiveChild, 2668). --define(wxMDIParentFrame_GetClientWindow, 2669). --define(wxMDIParentFrame_Tile, 2670). --define(wxMDIChildFrame_new_0, 2671). --define(wxMDIChildFrame_new_4, 2672). --define(wxMDIChildFrame_destruct, 2673). --define(wxMDIChildFrame_Activate, 2674). --define(wxMDIChildFrame_Create, 2675). --define(wxMDIChildFrame_Maximize, 2676). --define(wxMDIChildFrame_Restore, 2677). --define(wxMDIClientWindow_new_0, 2678). --define(wxMDIClientWindow_new_2, 2679). --define(wxMDIClientWindow_destruct, 2680). --define(wxMDIClientWindow_CreateClient, 2681). --define(wxLayoutAlgorithm_new, 2682). --define(wxLayoutAlgorithm_LayoutFrame, 2683). --define(wxLayoutAlgorithm_LayoutMDIFrame, 2684). --define(wxLayoutAlgorithm_LayoutWindow, 2685). --define(wxLayoutAlgorithm_destroy, 2686). --define(wxEvent_GetId, 2687). --define(wxEvent_GetSkipped, 2688). --define(wxEvent_GetTimestamp, 2689). --define(wxEvent_IsCommandEvent, 2690). --define(wxEvent_ResumePropagation, 2691). --define(wxEvent_ShouldPropagate, 2692). --define(wxEvent_Skip, 2693). --define(wxEvent_StopPropagation, 2694). --define(wxCommandEvent_getClientData, 2695). --define(wxCommandEvent_GetExtraLong, 2696). --define(wxCommandEvent_GetInt, 2697). --define(wxCommandEvent_GetSelection, 2698). --define(wxCommandEvent_GetString, 2699). --define(wxCommandEvent_IsChecked, 2700). --define(wxCommandEvent_IsSelection, 2701). --define(wxCommandEvent_SetInt, 2702). --define(wxCommandEvent_SetString, 2703). --define(wxScrollEvent_GetOrientation, 2704). --define(wxScrollEvent_GetPosition, 2705). --define(wxScrollWinEvent_GetOrientation, 2706). --define(wxScrollWinEvent_GetPosition, 2707). --define(wxMouseEvent_AltDown, 2708). --define(wxMouseEvent_Button, 2709). --define(wxMouseEvent_ButtonDClick, 2710). --define(wxMouseEvent_ButtonDown, 2711). --define(wxMouseEvent_ButtonUp, 2712). --define(wxMouseEvent_CmdDown, 2713). --define(wxMouseEvent_ControlDown, 2714). --define(wxMouseEvent_Dragging, 2715). --define(wxMouseEvent_Entering, 2716). --define(wxMouseEvent_GetButton, 2717). --define(wxMouseEvent_GetPosition, 2720). --define(wxMouseEvent_GetLogicalPosition, 2721). --define(wxMouseEvent_GetLinesPerAction, 2722). --define(wxMouseEvent_GetWheelRotation, 2723). --define(wxMouseEvent_GetWheelDelta, 2724). --define(wxMouseEvent_GetX, 2725). --define(wxMouseEvent_GetY, 2726). --define(wxMouseEvent_IsButton, 2727). --define(wxMouseEvent_IsPageScroll, 2728). --define(wxMouseEvent_Leaving, 2729). --define(wxMouseEvent_LeftDClick, 2730). --define(wxMouseEvent_LeftDown, 2731). --define(wxMouseEvent_LeftIsDown, 2732). --define(wxMouseEvent_LeftUp, 2733). --define(wxMouseEvent_MetaDown, 2734). --define(wxMouseEvent_MiddleDClick, 2735). --define(wxMouseEvent_MiddleDown, 2736). --define(wxMouseEvent_MiddleIsDown, 2737). --define(wxMouseEvent_MiddleUp, 2738). --define(wxMouseEvent_Moving, 2739). --define(wxMouseEvent_RightDClick, 2740). --define(wxMouseEvent_RightDown, 2741). --define(wxMouseEvent_RightIsDown, 2742). --define(wxMouseEvent_RightUp, 2743). --define(wxMouseEvent_ShiftDown, 2744). --define(wxSetCursorEvent_GetCursor, 2745). --define(wxSetCursorEvent_GetX, 2746). --define(wxSetCursorEvent_GetY, 2747). --define(wxSetCursorEvent_HasCursor, 2748). --define(wxSetCursorEvent_SetCursor, 2749). --define(wxKeyEvent_AltDown, 2750). --define(wxKeyEvent_CmdDown, 2751). --define(wxKeyEvent_ControlDown, 2752). --define(wxKeyEvent_GetKeyCode, 2753). --define(wxKeyEvent_GetModifiers, 2754). --define(wxKeyEvent_GetPosition, 2757). --define(wxKeyEvent_GetRawKeyCode, 2758). --define(wxKeyEvent_GetRawKeyFlags, 2759). --define(wxKeyEvent_GetUnicodeKey, 2760). --define(wxKeyEvent_GetX, 2761). --define(wxKeyEvent_GetY, 2762). --define(wxKeyEvent_HasModifiers, 2763). --define(wxKeyEvent_MetaDown, 2764). --define(wxKeyEvent_ShiftDown, 2765). --define(wxSizeEvent_GetSize, 2766). --define(wxMoveEvent_GetPosition, 2767). --define(wxEraseEvent_GetDC, 2768). --define(wxFocusEvent_GetWindow, 2769). --define(wxChildFocusEvent_GetWindow, 2770). --define(wxMenuEvent_GetMenu, 2771). --define(wxMenuEvent_GetMenuId, 2772). --define(wxMenuEvent_IsPopup, 2773). --define(wxCloseEvent_CanVeto, 2774). --define(wxCloseEvent_GetLoggingOff, 2775). --define(wxCloseEvent_SetCanVeto, 2776). --define(wxCloseEvent_SetLoggingOff, 2777). --define(wxCloseEvent_Veto, 2778). --define(wxShowEvent_SetShow, 2779). --define(wxShowEvent_GetShow, 2780). --define(wxIconizeEvent_Iconized, 2781). --define(wxJoystickEvent_ButtonDown, 2782). --define(wxJoystickEvent_ButtonIsDown, 2783). --define(wxJoystickEvent_ButtonUp, 2784). --define(wxJoystickEvent_GetButtonChange, 2785). --define(wxJoystickEvent_GetButtonState, 2786). --define(wxJoystickEvent_GetJoystick, 2787). --define(wxJoystickEvent_GetPosition, 2788). --define(wxJoystickEvent_GetZPosition, 2789). --define(wxJoystickEvent_IsButton, 2790). --define(wxJoystickEvent_IsMove, 2791). --define(wxJoystickEvent_IsZMove, 2792). --define(wxUpdateUIEvent_CanUpdate, 2793). --define(wxUpdateUIEvent_Check, 2794). --define(wxUpdateUIEvent_Enable, 2795). --define(wxUpdateUIEvent_Show, 2796). --define(wxUpdateUIEvent_GetChecked, 2797). --define(wxUpdateUIEvent_GetEnabled, 2798). --define(wxUpdateUIEvent_GetShown, 2799). --define(wxUpdateUIEvent_GetSetChecked, 2800). --define(wxUpdateUIEvent_GetSetEnabled, 2801). --define(wxUpdateUIEvent_GetSetShown, 2802). --define(wxUpdateUIEvent_GetSetText, 2803). --define(wxUpdateUIEvent_GetText, 2804). --define(wxUpdateUIEvent_GetMode, 2805). --define(wxUpdateUIEvent_GetUpdateInterval, 2806). --define(wxUpdateUIEvent_ResetUpdateTime, 2807). --define(wxUpdateUIEvent_SetMode, 2808). --define(wxUpdateUIEvent_SetText, 2809). --define(wxUpdateUIEvent_SetUpdateInterval, 2810). --define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2811). --define(wxPaletteChangedEvent_SetChangedWindow, 2812). --define(wxPaletteChangedEvent_GetChangedWindow, 2813). --define(wxQueryNewPaletteEvent_SetPaletteRealized, 2814). --define(wxQueryNewPaletteEvent_GetPaletteRealized, 2815). --define(wxNavigationKeyEvent_GetDirection, 2816). --define(wxNavigationKeyEvent_SetDirection, 2817). --define(wxNavigationKeyEvent_IsWindowChange, 2818). --define(wxNavigationKeyEvent_SetWindowChange, 2819). --define(wxNavigationKeyEvent_IsFromTab, 2820). --define(wxNavigationKeyEvent_SetFromTab, 2821). --define(wxNavigationKeyEvent_GetCurrentFocus, 2822). --define(wxNavigationKeyEvent_SetCurrentFocus, 2823). --define(wxHelpEvent_GetOrigin, 2824). --define(wxHelpEvent_GetPosition, 2825). --define(wxHelpEvent_SetOrigin, 2826). --define(wxHelpEvent_SetPosition, 2827). --define(wxContextMenuEvent_GetPosition, 2828). --define(wxContextMenuEvent_SetPosition, 2829). --define(wxIdleEvent_CanSend, 2830). --define(wxIdleEvent_GetMode, 2831). --define(wxIdleEvent_RequestMore, 2832). --define(wxIdleEvent_MoreRequested, 2833). --define(wxIdleEvent_SetMode, 2834). --define(wxGridEvent_AltDown, 2835). --define(wxGridEvent_ControlDown, 2836). --define(wxGridEvent_GetCol, 2837). --define(wxGridEvent_GetPosition, 2838). --define(wxGridEvent_GetRow, 2839). --define(wxGridEvent_MetaDown, 2840). --define(wxGridEvent_Selecting, 2841). --define(wxGridEvent_ShiftDown, 2842). --define(wxNotifyEvent_Allow, 2843). --define(wxNotifyEvent_IsAllowed, 2844). --define(wxNotifyEvent_Veto, 2845). --define(wxSashEvent_GetEdge, 2846). --define(wxSashEvent_GetDragRect, 2847). --define(wxSashEvent_GetDragStatus, 2848). --define(wxListEvent_GetCacheFrom, 2849). --define(wxListEvent_GetCacheTo, 2850). --define(wxListEvent_GetKeyCode, 2851). --define(wxListEvent_GetIndex, 2852). --define(wxListEvent_GetColumn, 2853). --define(wxListEvent_GetPoint, 2854). --define(wxListEvent_GetLabel, 2855). --define(wxListEvent_GetText, 2856). --define(wxListEvent_GetImage, 2857). --define(wxListEvent_GetData, 2858). --define(wxListEvent_GetMask, 2859). --define(wxListEvent_GetItem, 2860). --define(wxListEvent_IsEditCancelled, 2861). --define(wxDateEvent_GetDate, 2862). --define(wxCalendarEvent_GetWeekDay, 2863). --define(wxFileDirPickerEvent_GetPath, 2864). --define(wxColourPickerEvent_GetColour, 2865). --define(wxFontPickerEvent_GetFont, 2866). --define(wxStyledTextEvent_GetPosition, 2867). --define(wxStyledTextEvent_GetKey, 2868). --define(wxStyledTextEvent_GetModifiers, 2869). --define(wxStyledTextEvent_GetModificationType, 2870). --define(wxStyledTextEvent_GetText, 2871). --define(wxStyledTextEvent_GetLength, 2872). --define(wxStyledTextEvent_GetLinesAdded, 2873). --define(wxStyledTextEvent_GetLine, 2874). --define(wxStyledTextEvent_GetFoldLevelNow, 2875). --define(wxStyledTextEvent_GetFoldLevelPrev, 2876). --define(wxStyledTextEvent_GetMargin, 2877). --define(wxStyledTextEvent_GetMessage, 2878). --define(wxStyledTextEvent_GetWParam, 2879). --define(wxStyledTextEvent_GetLParam, 2880). --define(wxStyledTextEvent_GetListType, 2881). --define(wxStyledTextEvent_GetX, 2882). --define(wxStyledTextEvent_GetY, 2883). --define(wxStyledTextEvent_GetDragText, 2884). --define(wxStyledTextEvent_GetDragAllowMove, 2885). --define(wxStyledTextEvent_GetDragResult, 2886). --define(wxStyledTextEvent_GetShift, 2887). --define(wxStyledTextEvent_GetControl, 2888). --define(wxStyledTextEvent_GetAlt, 2889). --define(utils_wxGetKeyState, 2890). --define(utils_wxGetMousePosition, 2891). --define(utils_wxGetMouseState, 2892). --define(utils_wxSetDetectableAutoRepeat, 2893). --define(utils_wxBell, 2894). --define(utils_wxFindMenuItemId, 2895). --define(utils_wxGenericFindWindowAtPoint, 2896). --define(utils_wxFindWindowAtPoint, 2897). --define(utils_wxBeginBusyCursor, 2898). --define(utils_wxEndBusyCursor, 2899). --define(utils_wxIsBusy, 2900). --define(utils_wxShutdown, 2901). --define(utils_wxShell, 2902). --define(utils_wxLaunchDefaultBrowser, 2903). --define(utils_wxGetEmailAddress, 2904). --define(utils_wxGetUserId, 2905). --define(utils_wxGetHomeDir, 2906). --define(utils_wxNewId, 2907). --define(utils_wxRegisterId, 2908). --define(utils_wxGetCurrentId, 2909). --define(utils_wxGetOsDescription, 2910). --define(utils_wxIsPlatformLittleEndian, 2911). --define(utils_wxIsPlatform64Bit, 2912). --define(wxPrintout_new, 2913). --define(wxPrintout_destruct, 2914). --define(wxPrintout_GetDC, 2915). --define(wxPrintout_GetPageSizeMM, 2916). --define(wxPrintout_GetPageSizePixels, 2917). --define(wxPrintout_GetPaperRectPixels, 2918). --define(wxPrintout_GetPPIPrinter, 2919). --define(wxPrintout_GetPPIScreen, 2920). --define(wxPrintout_GetTitle, 2921). --define(wxPrintout_IsPreview, 2922). --define(wxPrintout_FitThisSizeToPaper, 2923). --define(wxPrintout_FitThisSizeToPage, 2924). --define(wxPrintout_FitThisSizeToPageMargins, 2925). --define(wxPrintout_MapScreenSizeToPaper, 2926). --define(wxPrintout_MapScreenSizeToPage, 2927). --define(wxPrintout_MapScreenSizeToPageMargins, 2928). --define(wxPrintout_MapScreenSizeToDevice, 2929). --define(wxPrintout_GetLogicalPaperRect, 2930). --define(wxPrintout_GetLogicalPageRect, 2931). --define(wxPrintout_GetLogicalPageMarginsRect, 2932). --define(wxPrintout_SetLogicalOrigin, 2933). --define(wxPrintout_OffsetLogicalOrigin, 2934). --define(wxStyledTextCtrl_new_2, 2935). --define(wxStyledTextCtrl_new_0, 2936). --define(wxStyledTextCtrl_destruct, 2937). --define(wxStyledTextCtrl_Create, 2938). --define(wxStyledTextCtrl_AddText, 2939). --define(wxStyledTextCtrl_AddStyledText, 2940). --define(wxStyledTextCtrl_InsertText, 2941). --define(wxStyledTextCtrl_ClearAll, 2942). --define(wxStyledTextCtrl_ClearDocumentStyle, 2943). --define(wxStyledTextCtrl_GetLength, 2944). --define(wxStyledTextCtrl_GetCharAt, 2945). --define(wxStyledTextCtrl_GetCurrentPos, 2946). --define(wxStyledTextCtrl_GetAnchor, 2947). --define(wxStyledTextCtrl_GetStyleAt, 2948). --define(wxStyledTextCtrl_Redo, 2949). --define(wxStyledTextCtrl_SetUndoCollection, 2950). --define(wxStyledTextCtrl_SelectAll, 2951). --define(wxStyledTextCtrl_SetSavePoint, 2952). --define(wxStyledTextCtrl_GetStyledText, 2953). --define(wxStyledTextCtrl_CanRedo, 2954). --define(wxStyledTextCtrl_MarkerLineFromHandle, 2955). --define(wxStyledTextCtrl_MarkerDeleteHandle, 2956). --define(wxStyledTextCtrl_GetUndoCollection, 2957). --define(wxStyledTextCtrl_GetViewWhiteSpace, 2958). --define(wxStyledTextCtrl_SetViewWhiteSpace, 2959). --define(wxStyledTextCtrl_PositionFromPoint, 2960). --define(wxStyledTextCtrl_PositionFromPointClose, 2961). --define(wxStyledTextCtrl_GotoLine, 2962). --define(wxStyledTextCtrl_GotoPos, 2963). --define(wxStyledTextCtrl_SetAnchor, 2964). --define(wxStyledTextCtrl_GetCurLine, 2965). --define(wxStyledTextCtrl_GetEndStyled, 2966). --define(wxStyledTextCtrl_ConvertEOLs, 2967). --define(wxStyledTextCtrl_GetEOLMode, 2968). --define(wxStyledTextCtrl_SetEOLMode, 2969). --define(wxStyledTextCtrl_StartStyling, 2970). --define(wxStyledTextCtrl_SetStyling, 2971). --define(wxStyledTextCtrl_GetBufferedDraw, 2972). --define(wxStyledTextCtrl_SetBufferedDraw, 2973). --define(wxStyledTextCtrl_SetTabWidth, 2974). --define(wxStyledTextCtrl_GetTabWidth, 2975). --define(wxStyledTextCtrl_SetCodePage, 2976). --define(wxStyledTextCtrl_MarkerDefine, 2977). --define(wxStyledTextCtrl_MarkerSetForeground, 2978). --define(wxStyledTextCtrl_MarkerSetBackground, 2979). --define(wxStyledTextCtrl_MarkerAdd, 2980). --define(wxStyledTextCtrl_MarkerDelete, 2981). --define(wxStyledTextCtrl_MarkerDeleteAll, 2982). --define(wxStyledTextCtrl_MarkerGet, 2983). --define(wxStyledTextCtrl_MarkerNext, 2984). --define(wxStyledTextCtrl_MarkerPrevious, 2985). --define(wxStyledTextCtrl_MarkerDefineBitmap, 2986). --define(wxStyledTextCtrl_MarkerAddSet, 2987). --define(wxStyledTextCtrl_MarkerSetAlpha, 2988). --define(wxStyledTextCtrl_SetMarginType, 2989). --define(wxStyledTextCtrl_GetMarginType, 2990). --define(wxStyledTextCtrl_SetMarginWidth, 2991). --define(wxStyledTextCtrl_GetMarginWidth, 2992). --define(wxStyledTextCtrl_SetMarginMask, 2993). --define(wxStyledTextCtrl_GetMarginMask, 2994). --define(wxStyledTextCtrl_SetMarginSensitive, 2995). --define(wxStyledTextCtrl_GetMarginSensitive, 2996). --define(wxStyledTextCtrl_StyleClearAll, 2997). --define(wxStyledTextCtrl_StyleSetForeground, 2998). --define(wxStyledTextCtrl_StyleSetBackground, 2999). --define(wxStyledTextCtrl_StyleSetBold, 3000). --define(wxStyledTextCtrl_StyleSetItalic, 3001). --define(wxStyledTextCtrl_StyleSetSize, 3002). --define(wxStyledTextCtrl_StyleSetFaceName, 3003). --define(wxStyledTextCtrl_StyleSetEOLFilled, 3004). --define(wxStyledTextCtrl_StyleResetDefault, 3005). --define(wxStyledTextCtrl_StyleSetUnderline, 3006). --define(wxStyledTextCtrl_StyleSetCase, 3007). --define(wxStyledTextCtrl_StyleSetHotSpot, 3008). --define(wxStyledTextCtrl_SetSelForeground, 3009). --define(wxStyledTextCtrl_SetSelBackground, 3010). --define(wxStyledTextCtrl_GetSelAlpha, 3011). --define(wxStyledTextCtrl_SetSelAlpha, 3012). --define(wxStyledTextCtrl_SetCaretForeground, 3013). --define(wxStyledTextCtrl_CmdKeyAssign, 3014). --define(wxStyledTextCtrl_CmdKeyClear, 3015). --define(wxStyledTextCtrl_CmdKeyClearAll, 3016). --define(wxStyledTextCtrl_SetStyleBytes, 3017). --define(wxStyledTextCtrl_StyleSetVisible, 3018). --define(wxStyledTextCtrl_GetCaretPeriod, 3019). --define(wxStyledTextCtrl_SetCaretPeriod, 3020). --define(wxStyledTextCtrl_SetWordChars, 3021). --define(wxStyledTextCtrl_BeginUndoAction, 3022). --define(wxStyledTextCtrl_EndUndoAction, 3023). --define(wxStyledTextCtrl_IndicatorSetStyle, 3024). --define(wxStyledTextCtrl_IndicatorGetStyle, 3025). --define(wxStyledTextCtrl_IndicatorSetForeground, 3026). --define(wxStyledTextCtrl_IndicatorGetForeground, 3027). --define(wxStyledTextCtrl_SetWhitespaceForeground, 3028). --define(wxStyledTextCtrl_SetWhitespaceBackground, 3029). --define(wxStyledTextCtrl_GetStyleBits, 3030). --define(wxStyledTextCtrl_SetLineState, 3031). --define(wxStyledTextCtrl_GetLineState, 3032). --define(wxStyledTextCtrl_GetMaxLineState, 3033). --define(wxStyledTextCtrl_GetCaretLineVisible, 3034). --define(wxStyledTextCtrl_SetCaretLineVisible, 3035). --define(wxStyledTextCtrl_GetCaretLineBackground, 3036). --define(wxStyledTextCtrl_SetCaretLineBackground, 3037). --define(wxStyledTextCtrl_AutoCompShow, 3038). --define(wxStyledTextCtrl_AutoCompCancel, 3039). --define(wxStyledTextCtrl_AutoCompActive, 3040). --define(wxStyledTextCtrl_AutoCompPosStart, 3041). --define(wxStyledTextCtrl_AutoCompComplete, 3042). --define(wxStyledTextCtrl_AutoCompStops, 3043). --define(wxStyledTextCtrl_AutoCompSetSeparator, 3044). --define(wxStyledTextCtrl_AutoCompGetSeparator, 3045). --define(wxStyledTextCtrl_AutoCompSelect, 3046). --define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3047). --define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3048). --define(wxStyledTextCtrl_AutoCompSetFillUps, 3049). --define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3050). --define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3051). --define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3052). --define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3053). --define(wxStyledTextCtrl_UserListShow, 3054). --define(wxStyledTextCtrl_AutoCompSetAutoHide, 3055). --define(wxStyledTextCtrl_AutoCompGetAutoHide, 3056). --define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3057). --define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3058). --define(wxStyledTextCtrl_RegisterImage, 3059). --define(wxStyledTextCtrl_ClearRegisteredImages, 3060). --define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3061). --define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3062). --define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3063). --define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3064). --define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3065). --define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3066). --define(wxStyledTextCtrl_SetIndent, 3067). --define(wxStyledTextCtrl_GetIndent, 3068). --define(wxStyledTextCtrl_SetUseTabs, 3069). --define(wxStyledTextCtrl_GetUseTabs, 3070). --define(wxStyledTextCtrl_SetLineIndentation, 3071). --define(wxStyledTextCtrl_GetLineIndentation, 3072). --define(wxStyledTextCtrl_GetLineIndentPosition, 3073). --define(wxStyledTextCtrl_GetColumn, 3074). --define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3075). --define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3076). --define(wxStyledTextCtrl_SetIndentationGuides, 3077). --define(wxStyledTextCtrl_GetIndentationGuides, 3078). --define(wxStyledTextCtrl_SetHighlightGuide, 3079). --define(wxStyledTextCtrl_GetHighlightGuide, 3080). --define(wxStyledTextCtrl_GetLineEndPosition, 3081). --define(wxStyledTextCtrl_GetCodePage, 3082). --define(wxStyledTextCtrl_GetCaretForeground, 3083). --define(wxStyledTextCtrl_GetReadOnly, 3084). --define(wxStyledTextCtrl_SetCurrentPos, 3085). --define(wxStyledTextCtrl_SetSelectionStart, 3086). --define(wxStyledTextCtrl_GetSelectionStart, 3087). --define(wxStyledTextCtrl_SetSelectionEnd, 3088). --define(wxStyledTextCtrl_GetSelectionEnd, 3089). --define(wxStyledTextCtrl_SetPrintMagnification, 3090). --define(wxStyledTextCtrl_GetPrintMagnification, 3091). --define(wxStyledTextCtrl_SetPrintColourMode, 3092). --define(wxStyledTextCtrl_GetPrintColourMode, 3093). --define(wxStyledTextCtrl_FindText, 3094). --define(wxStyledTextCtrl_FormatRange, 3095). --define(wxStyledTextCtrl_GetFirstVisibleLine, 3096). --define(wxStyledTextCtrl_GetLine, 3097). --define(wxStyledTextCtrl_GetLineCount, 3098). --define(wxStyledTextCtrl_SetMarginLeft, 3099). --define(wxStyledTextCtrl_GetMarginLeft, 3100). --define(wxStyledTextCtrl_SetMarginRight, 3101). --define(wxStyledTextCtrl_GetMarginRight, 3102). --define(wxStyledTextCtrl_GetModify, 3103). --define(wxStyledTextCtrl_SetSelection, 3104). --define(wxStyledTextCtrl_GetSelectedText, 3105). --define(wxStyledTextCtrl_GetTextRange, 3106). --define(wxStyledTextCtrl_HideSelection, 3107). --define(wxStyledTextCtrl_LineFromPosition, 3108). --define(wxStyledTextCtrl_PositionFromLine, 3109). --define(wxStyledTextCtrl_LineScroll, 3110). --define(wxStyledTextCtrl_EnsureCaretVisible, 3111). --define(wxStyledTextCtrl_ReplaceSelection, 3112). --define(wxStyledTextCtrl_SetReadOnly, 3113). --define(wxStyledTextCtrl_CanPaste, 3114). --define(wxStyledTextCtrl_CanUndo, 3115). --define(wxStyledTextCtrl_EmptyUndoBuffer, 3116). --define(wxStyledTextCtrl_Undo, 3117). --define(wxStyledTextCtrl_Cut, 3118). --define(wxStyledTextCtrl_Copy, 3119). --define(wxStyledTextCtrl_Paste, 3120). --define(wxStyledTextCtrl_Clear, 3121). --define(wxStyledTextCtrl_SetText, 3122). --define(wxStyledTextCtrl_GetText, 3123). --define(wxStyledTextCtrl_GetTextLength, 3124). --define(wxStyledTextCtrl_GetOvertype, 3125). --define(wxStyledTextCtrl_SetCaretWidth, 3126). --define(wxStyledTextCtrl_GetCaretWidth, 3127). --define(wxStyledTextCtrl_SetTargetStart, 3128). --define(wxStyledTextCtrl_GetTargetStart, 3129). --define(wxStyledTextCtrl_SetTargetEnd, 3130). --define(wxStyledTextCtrl_GetTargetEnd, 3131). --define(wxStyledTextCtrl_ReplaceTarget, 3132). --define(wxStyledTextCtrl_SearchInTarget, 3133). --define(wxStyledTextCtrl_SetSearchFlags, 3134). --define(wxStyledTextCtrl_GetSearchFlags, 3135). --define(wxStyledTextCtrl_CallTipShow, 3136). --define(wxStyledTextCtrl_CallTipCancel, 3137). --define(wxStyledTextCtrl_CallTipActive, 3138). --define(wxStyledTextCtrl_CallTipPosAtStart, 3139). --define(wxStyledTextCtrl_CallTipSetHighlight, 3140). --define(wxStyledTextCtrl_CallTipSetBackground, 3141). --define(wxStyledTextCtrl_CallTipSetForeground, 3142). --define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3143). --define(wxStyledTextCtrl_CallTipUseStyle, 3144). --define(wxStyledTextCtrl_VisibleFromDocLine, 3145). --define(wxStyledTextCtrl_DocLineFromVisible, 3146). --define(wxStyledTextCtrl_WrapCount, 3147). --define(wxStyledTextCtrl_SetFoldLevel, 3148). --define(wxStyledTextCtrl_GetFoldLevel, 3149). --define(wxStyledTextCtrl_GetLastChild, 3150). --define(wxStyledTextCtrl_GetFoldParent, 3151). --define(wxStyledTextCtrl_ShowLines, 3152). --define(wxStyledTextCtrl_HideLines, 3153). --define(wxStyledTextCtrl_GetLineVisible, 3154). --define(wxStyledTextCtrl_SetFoldExpanded, 3155). --define(wxStyledTextCtrl_GetFoldExpanded, 3156). --define(wxStyledTextCtrl_ToggleFold, 3157). --define(wxStyledTextCtrl_EnsureVisible, 3158). --define(wxStyledTextCtrl_SetFoldFlags, 3159). --define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3160). --define(wxStyledTextCtrl_SetTabIndents, 3161). --define(wxStyledTextCtrl_GetTabIndents, 3162). --define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3163). --define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3164). --define(wxStyledTextCtrl_SetMouseDwellTime, 3165). --define(wxStyledTextCtrl_GetMouseDwellTime, 3166). --define(wxStyledTextCtrl_WordStartPosition, 3167). --define(wxStyledTextCtrl_WordEndPosition, 3168). --define(wxStyledTextCtrl_SetWrapMode, 3169). --define(wxStyledTextCtrl_GetWrapMode, 3170). --define(wxStyledTextCtrl_SetWrapVisualFlags, 3171). --define(wxStyledTextCtrl_GetWrapVisualFlags, 3172). --define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3173). --define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3174). --define(wxStyledTextCtrl_SetWrapStartIndent, 3175). --define(wxStyledTextCtrl_GetWrapStartIndent, 3176). --define(wxStyledTextCtrl_SetLayoutCache, 3177). --define(wxStyledTextCtrl_GetLayoutCache, 3178). --define(wxStyledTextCtrl_SetScrollWidth, 3179). --define(wxStyledTextCtrl_GetScrollWidth, 3180). --define(wxStyledTextCtrl_TextWidth, 3181). --define(wxStyledTextCtrl_GetEndAtLastLine, 3182). --define(wxStyledTextCtrl_TextHeight, 3183). --define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3184). --define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3185). --define(wxStyledTextCtrl_AppendText, 3186). --define(wxStyledTextCtrl_GetTwoPhaseDraw, 3187). --define(wxStyledTextCtrl_SetTwoPhaseDraw, 3188). --define(wxStyledTextCtrl_TargetFromSelection, 3189). --define(wxStyledTextCtrl_LinesJoin, 3190). --define(wxStyledTextCtrl_LinesSplit, 3191). --define(wxStyledTextCtrl_SetFoldMarginColour, 3192). --define(wxStyledTextCtrl_SetFoldMarginHiColour, 3193). --define(wxStyledTextCtrl_LineDown, 3194). --define(wxStyledTextCtrl_LineDownExtend, 3195). --define(wxStyledTextCtrl_LineUp, 3196). --define(wxStyledTextCtrl_LineUpExtend, 3197). --define(wxStyledTextCtrl_CharLeft, 3198). --define(wxStyledTextCtrl_CharLeftExtend, 3199). --define(wxStyledTextCtrl_CharRight, 3200). --define(wxStyledTextCtrl_CharRightExtend, 3201). --define(wxStyledTextCtrl_WordLeft, 3202). --define(wxStyledTextCtrl_WordLeftExtend, 3203). --define(wxStyledTextCtrl_WordRight, 3204). --define(wxStyledTextCtrl_WordRightExtend, 3205). --define(wxStyledTextCtrl_Home, 3206). --define(wxStyledTextCtrl_HomeExtend, 3207). --define(wxStyledTextCtrl_LineEnd, 3208). --define(wxStyledTextCtrl_LineEndExtend, 3209). --define(wxStyledTextCtrl_DocumentStart, 3210). --define(wxStyledTextCtrl_DocumentStartExtend, 3211). --define(wxStyledTextCtrl_DocumentEnd, 3212). --define(wxStyledTextCtrl_DocumentEndExtend, 3213). --define(wxStyledTextCtrl_PageUp, 3214). --define(wxStyledTextCtrl_PageUpExtend, 3215). --define(wxStyledTextCtrl_PageDown, 3216). --define(wxStyledTextCtrl_PageDownExtend, 3217). --define(wxStyledTextCtrl_EditToggleOvertype, 3218). --define(wxStyledTextCtrl_Cancel, 3219). --define(wxStyledTextCtrl_DeleteBack, 3220). --define(wxStyledTextCtrl_Tab, 3221). --define(wxStyledTextCtrl_BackTab, 3222). --define(wxStyledTextCtrl_NewLine, 3223). --define(wxStyledTextCtrl_FormFeed, 3224). --define(wxStyledTextCtrl_VCHome, 3225). --define(wxStyledTextCtrl_VCHomeExtend, 3226). --define(wxStyledTextCtrl_ZoomIn, 3227). --define(wxStyledTextCtrl_ZoomOut, 3228). --define(wxStyledTextCtrl_DelWordLeft, 3229). --define(wxStyledTextCtrl_DelWordRight, 3230). --define(wxStyledTextCtrl_LineCut, 3231). --define(wxStyledTextCtrl_LineDelete, 3232). --define(wxStyledTextCtrl_LineTranspose, 3233). --define(wxStyledTextCtrl_LineDuplicate, 3234). --define(wxStyledTextCtrl_LowerCase, 3235). --define(wxStyledTextCtrl_UpperCase, 3236). --define(wxStyledTextCtrl_LineScrollDown, 3237). --define(wxStyledTextCtrl_LineScrollUp, 3238). --define(wxStyledTextCtrl_DeleteBackNotLine, 3239). --define(wxStyledTextCtrl_HomeDisplay, 3240). --define(wxStyledTextCtrl_HomeDisplayExtend, 3241). --define(wxStyledTextCtrl_LineEndDisplay, 3242). --define(wxStyledTextCtrl_LineEndDisplayExtend, 3243). --define(wxStyledTextCtrl_HomeWrapExtend, 3244). --define(wxStyledTextCtrl_LineEndWrap, 3245). --define(wxStyledTextCtrl_LineEndWrapExtend, 3246). --define(wxStyledTextCtrl_VCHomeWrap, 3247). --define(wxStyledTextCtrl_VCHomeWrapExtend, 3248). --define(wxStyledTextCtrl_LineCopy, 3249). --define(wxStyledTextCtrl_MoveCaretInsideView, 3250). --define(wxStyledTextCtrl_LineLength, 3251). --define(wxStyledTextCtrl_BraceHighlight, 3252). --define(wxStyledTextCtrl_BraceBadLight, 3253). --define(wxStyledTextCtrl_BraceMatch, 3254). --define(wxStyledTextCtrl_GetViewEOL, 3255). --define(wxStyledTextCtrl_SetViewEOL, 3256). --define(wxStyledTextCtrl_SetModEventMask, 3257). --define(wxStyledTextCtrl_GetEdgeColumn, 3258). --define(wxStyledTextCtrl_SetEdgeColumn, 3259). --define(wxStyledTextCtrl_GetEdgeMode, 3260). --define(wxStyledTextCtrl_GetEdgeColour, 3261). --define(wxStyledTextCtrl_SetEdgeColour, 3262). --define(wxStyledTextCtrl_SearchAnchor, 3263). --define(wxStyledTextCtrl_SearchNext, 3264). --define(wxStyledTextCtrl_SearchPrev, 3265). --define(wxStyledTextCtrl_LinesOnScreen, 3266). --define(wxStyledTextCtrl_UsePopUp, 3267). --define(wxStyledTextCtrl_SelectionIsRectangle, 3268). --define(wxStyledTextCtrl_SetZoom, 3269). --define(wxStyledTextCtrl_GetZoom, 3270). --define(wxStyledTextCtrl_GetModEventMask, 3271). --define(wxStyledTextCtrl_SetSTCFocus, 3272). --define(wxStyledTextCtrl_GetSTCFocus, 3273). --define(wxStyledTextCtrl_SetStatus, 3274). --define(wxStyledTextCtrl_GetStatus, 3275). --define(wxStyledTextCtrl_SetMouseDownCaptures, 3276). --define(wxStyledTextCtrl_GetMouseDownCaptures, 3277). --define(wxStyledTextCtrl_SetSTCCursor, 3278). --define(wxStyledTextCtrl_GetSTCCursor, 3279). --define(wxStyledTextCtrl_SetControlCharSymbol, 3280). --define(wxStyledTextCtrl_GetControlCharSymbol, 3281). --define(wxStyledTextCtrl_WordPartLeft, 3282). --define(wxStyledTextCtrl_WordPartLeftExtend, 3283). --define(wxStyledTextCtrl_WordPartRight, 3284). --define(wxStyledTextCtrl_WordPartRightExtend, 3285). --define(wxStyledTextCtrl_SetVisiblePolicy, 3286). --define(wxStyledTextCtrl_DelLineLeft, 3287). --define(wxStyledTextCtrl_DelLineRight, 3288). --define(wxStyledTextCtrl_GetXOffset, 3289). --define(wxStyledTextCtrl_ChooseCaretX, 3290). --define(wxStyledTextCtrl_SetXCaretPolicy, 3291). --define(wxStyledTextCtrl_SetYCaretPolicy, 3292). --define(wxStyledTextCtrl_GetPrintWrapMode, 3293). --define(wxStyledTextCtrl_SetHotspotActiveForeground, 3294). --define(wxStyledTextCtrl_SetHotspotActiveBackground, 3295). --define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3296). --define(wxStyledTextCtrl_SetHotspotSingleLine, 3297). --define(wxStyledTextCtrl_ParaDownExtend, 3298). --define(wxStyledTextCtrl_ParaUp, 3299). --define(wxStyledTextCtrl_ParaUpExtend, 3300). --define(wxStyledTextCtrl_PositionBefore, 3301). --define(wxStyledTextCtrl_PositionAfter, 3302). --define(wxStyledTextCtrl_CopyRange, 3303). --define(wxStyledTextCtrl_CopyText, 3304). --define(wxStyledTextCtrl_SetSelectionMode, 3305). --define(wxStyledTextCtrl_GetSelectionMode, 3306). --define(wxStyledTextCtrl_LineDownRectExtend, 3307). --define(wxStyledTextCtrl_LineUpRectExtend, 3308). --define(wxStyledTextCtrl_CharLeftRectExtend, 3309). --define(wxStyledTextCtrl_CharRightRectExtend, 3310). --define(wxStyledTextCtrl_HomeRectExtend, 3311). --define(wxStyledTextCtrl_VCHomeRectExtend, 3312). --define(wxStyledTextCtrl_LineEndRectExtend, 3313). --define(wxStyledTextCtrl_PageUpRectExtend, 3314). --define(wxStyledTextCtrl_PageDownRectExtend, 3315). --define(wxStyledTextCtrl_StutteredPageUp, 3316). --define(wxStyledTextCtrl_StutteredPageUpExtend, 3317). --define(wxStyledTextCtrl_StutteredPageDown, 3318). --define(wxStyledTextCtrl_StutteredPageDownExtend, 3319). --define(wxStyledTextCtrl_WordLeftEnd, 3320). --define(wxStyledTextCtrl_WordLeftEndExtend, 3321). --define(wxStyledTextCtrl_WordRightEnd, 3322). --define(wxStyledTextCtrl_WordRightEndExtend, 3323). --define(wxStyledTextCtrl_SetWhitespaceChars, 3324). --define(wxStyledTextCtrl_SetCharsDefault, 3325). --define(wxStyledTextCtrl_AutoCompGetCurrent, 3326). --define(wxStyledTextCtrl_Allocate, 3327). --define(wxStyledTextCtrl_FindColumn, 3328). --define(wxStyledTextCtrl_GetCaretSticky, 3329). --define(wxStyledTextCtrl_SetCaretSticky, 3330). --define(wxStyledTextCtrl_ToggleCaretSticky, 3331). --define(wxStyledTextCtrl_SetPasteConvertEndings, 3332). --define(wxStyledTextCtrl_GetPasteConvertEndings, 3333). --define(wxStyledTextCtrl_SelectionDuplicate, 3334). --define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3335). --define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3336). --define(wxStyledTextCtrl_StartRecord, 3337). --define(wxStyledTextCtrl_StopRecord, 3338). --define(wxStyledTextCtrl_SetLexer, 3339). --define(wxStyledTextCtrl_GetLexer, 3340). --define(wxStyledTextCtrl_Colourise, 3341). --define(wxStyledTextCtrl_SetProperty, 3342). --define(wxStyledTextCtrl_SetKeyWords, 3343). --define(wxStyledTextCtrl_SetLexerLanguage, 3344). --define(wxStyledTextCtrl_GetProperty, 3345). --define(wxStyledTextCtrl_GetStyleBitsNeeded, 3346). --define(wxStyledTextCtrl_GetCurrentLine, 3347). --define(wxStyledTextCtrl_StyleSetSpec, 3348). --define(wxStyledTextCtrl_StyleSetFont, 3349). --define(wxStyledTextCtrl_StyleSetFontAttr, 3350). --define(wxStyledTextCtrl_StyleSetCharacterSet, 3351). --define(wxStyledTextCtrl_StyleSetFontEncoding, 3352). --define(wxStyledTextCtrl_CmdKeyExecute, 3353). --define(wxStyledTextCtrl_SetMargins, 3354). --define(wxStyledTextCtrl_GetSelection, 3355). --define(wxStyledTextCtrl_PointFromPosition, 3356). --define(wxStyledTextCtrl_ScrollToLine, 3357). --define(wxStyledTextCtrl_ScrollToColumn, 3358). --define(wxStyledTextCtrl_SendMsg, 3359). --define(wxStyledTextCtrl_SetVScrollBar, 3360). --define(wxStyledTextCtrl_SetHScrollBar, 3361). --define(wxStyledTextCtrl_GetLastKeydownProcessed, 3362). --define(wxStyledTextCtrl_SetLastKeydownProcessed, 3363). --define(wxStyledTextCtrl_SaveFile, 3364). --define(wxStyledTextCtrl_LoadFile, 3365). --define(wxStyledTextCtrl_DoDragOver, 3366). --define(wxStyledTextCtrl_DoDropText, 3367). --define(wxStyledTextCtrl_GetUseAntiAliasing, 3368). --define(wxStyledTextCtrl_AddTextRaw, 3369). --define(wxStyledTextCtrl_InsertTextRaw, 3370). --define(wxStyledTextCtrl_GetCurLineRaw, 3371). --define(wxStyledTextCtrl_GetLineRaw, 3372). --define(wxStyledTextCtrl_GetSelectedTextRaw, 3373). --define(wxStyledTextCtrl_GetTextRangeRaw, 3374). --define(wxStyledTextCtrl_SetTextRaw, 3375). --define(wxStyledTextCtrl_GetTextRaw, 3376). --define(wxStyledTextCtrl_AppendTextRaw, 3377). --define(wxArtProvider_GetBitmap, 3378). --define(wxArtProvider_GetIcon, 3379). --define(wxTreeEvent_GetKeyCode, 3380). --define(wxTreeEvent_GetItem, 3381). --define(wxTreeEvent_GetKeyEvent, 3382). --define(wxTreeEvent_GetLabel, 3383). --define(wxTreeEvent_GetOldItem, 3384). --define(wxTreeEvent_GetPoint, 3385). --define(wxTreeEvent_IsEditCancelled, 3386). --define(wxTreeEvent_SetToolTip, 3387). --define(wxNotebookEvent_GetOldSelection, 3388). --define(wxNotebookEvent_GetSelection, 3389). --define(wxNotebookEvent_SetOldSelection, 3390). --define(wxNotebookEvent_SetSelection, 3391). --define(wxFileDataObject_new, 3392). --define(wxFileDataObject_AddFile, 3393). --define(wxFileDataObject_GetFilenames, 3394). --define(wxFileDataObject_destroy, 3395). --define(wxTextDataObject_new, 3396). --define(wxTextDataObject_GetTextLength, 3397). --define(wxTextDataObject_GetText, 3398). --define(wxTextDataObject_SetText, 3399). --define(wxTextDataObject_destroy, 3400). --define(wxBitmapDataObject_new_1_1, 3401). --define(wxBitmapDataObject_new_1_0, 3402). --define(wxBitmapDataObject_GetBitmap, 3403). --define(wxBitmapDataObject_SetBitmap, 3404). --define(wxBitmapDataObject_destroy, 3405). --define(wxClipboard_new, 3407). --define(wxClipboard_destruct, 3408). --define(wxClipboard_AddData, 3409). --define(wxClipboard_Clear, 3410). --define(wxClipboard_Close, 3411). --define(wxClipboard_Flush, 3412). --define(wxClipboard_GetData, 3413). --define(wxClipboard_IsOpened, 3414). --define(wxClipboard_Open, 3415). --define(wxClipboard_SetData, 3416). --define(wxClipboard_UsePrimarySelection, 3418). --define(wxClipboard_IsSupported, 3419). --define(wxClipboard_Get, 3420). --define(wxSpinEvent_GetPosition, 3421). --define(wxSpinEvent_SetPosition, 3422). --define(wxSplitterWindow_new_0, 3423). --define(wxSplitterWindow_new_2, 3424). --define(wxSplitterWindow_destruct, 3425). --define(wxSplitterWindow_Create, 3426). --define(wxSplitterWindow_GetMinimumPaneSize, 3427). --define(wxSplitterWindow_GetSashGravity, 3428). --define(wxSplitterWindow_GetSashPosition, 3429). --define(wxSplitterWindow_GetSplitMode, 3430). --define(wxSplitterWindow_GetWindow1, 3431). --define(wxSplitterWindow_GetWindow2, 3432). --define(wxSplitterWindow_Initialize, 3433). --define(wxSplitterWindow_IsSplit, 3434). --define(wxSplitterWindow_ReplaceWindow, 3435). --define(wxSplitterWindow_SetSashGravity, 3436). --define(wxSplitterWindow_SetSashPosition, 3437). --define(wxSplitterWindow_SetSashSize, 3438). --define(wxSplitterWindow_SetMinimumPaneSize, 3439). --define(wxSplitterWindow_SetSplitMode, 3440). --define(wxSplitterWindow_SplitHorizontally, 3441). --define(wxSplitterWindow_SplitVertically, 3442). --define(wxSplitterWindow_Unsplit, 3443). --define(wxSplitterWindow_UpdateSize, 3444). --define(wxSplitterEvent_GetSashPosition, 3445). --define(wxSplitterEvent_GetX, 3446). --define(wxSplitterEvent_GetY, 3447). --define(wxSplitterEvent_GetWindowBeingRemoved, 3448). --define(wxSplitterEvent_SetSashPosition, 3449). --define(wxHtmlWindow_new_0, 3450). --define(wxHtmlWindow_new_2, 3451). --define(wxHtmlWindow_AppendToPage, 3452). --define(wxHtmlWindow_GetOpenedAnchor, 3453). --define(wxHtmlWindow_GetOpenedPage, 3454). --define(wxHtmlWindow_GetOpenedPageTitle, 3455). --define(wxHtmlWindow_GetRelatedFrame, 3456). --define(wxHtmlWindow_HistoryBack, 3457). --define(wxHtmlWindow_HistoryCanBack, 3458). --define(wxHtmlWindow_HistoryCanForward, 3459). --define(wxHtmlWindow_HistoryClear, 3460). --define(wxHtmlWindow_HistoryForward, 3461). --define(wxHtmlWindow_LoadFile, 3462). --define(wxHtmlWindow_LoadPage, 3463). --define(wxHtmlWindow_SelectAll, 3464). --define(wxHtmlWindow_SelectionToText, 3465). --define(wxHtmlWindow_SelectLine, 3466). --define(wxHtmlWindow_SelectWord, 3467). --define(wxHtmlWindow_SetBorders, 3468). --define(wxHtmlWindow_SetFonts, 3469). --define(wxHtmlWindow_SetPage, 3470). --define(wxHtmlWindow_SetRelatedFrame, 3471). --define(wxHtmlWindow_SetRelatedStatusBar, 3472). --define(wxHtmlWindow_ToText, 3473). --define(wxHtmlWindow_destroy, 3474). --define(wxHtmlLinkEvent_GetLinkInfo, 3475). --define(wxSystemSettings_GetColour, 3476). --define(wxSystemSettings_GetFont, 3477). --define(wxSystemSettings_GetMetric, 3478). --define(wxSystemSettings_GetScreenType, 3479). --define(wxAuiNotebookEvent_SetSelection, 3480). --define(wxAuiNotebookEvent_GetSelection, 3481). --define(wxAuiNotebookEvent_SetOldSelection, 3482). --define(wxAuiNotebookEvent_GetOldSelection, 3483). --define(wxAuiNotebookEvent_SetDragSource, 3484). --define(wxAuiNotebookEvent_GetDragSource, 3485). --define(wxAuiManagerEvent_SetManager, 3486). --define(wxAuiManagerEvent_GetManager, 3487). --define(wxAuiManagerEvent_SetPane, 3488). --define(wxAuiManagerEvent_GetPane, 3489). --define(wxAuiManagerEvent_SetButton, 3490). --define(wxAuiManagerEvent_GetButton, 3491). --define(wxAuiManagerEvent_SetDC, 3492). --define(wxAuiManagerEvent_GetDC, 3493). --define(wxAuiManagerEvent_Veto, 3494). --define(wxAuiManagerEvent_GetVeto, 3495). --define(wxAuiManagerEvent_SetCanVeto, 3496). --define(wxAuiManagerEvent_CanVeto, 3497). --define(wxLogNull_new, 3498). --define(wxLogNull_destroy, 3499). +-define(wxListItemAttr_new_0, 1757). +-define(wxListItemAttr_new_3, 1758). +-define(wxListItemAttr_GetBackgroundColour, 1759). +-define(wxListItemAttr_GetFont, 1760). +-define(wxListItemAttr_GetTextColour, 1761). +-define(wxListItemAttr_HasBackgroundColour, 1762). +-define(wxListItemAttr_HasFont, 1763). +-define(wxListItemAttr_HasTextColour, 1764). +-define(wxListItemAttr_SetBackgroundColour, 1765). +-define(wxListItemAttr_SetFont, 1766). +-define(wxListItemAttr_SetTextColour, 1767). +-define(wxListItemAttr_destroy, 1768). +-define(wxImageList_new_0, 1769). +-define(wxImageList_new_3, 1770). +-define(wxImageList_Add_1, 1771). +-define(wxImageList_Add_2_0, 1772). +-define(wxImageList_Add_2_1, 1773). +-define(wxImageList_Create, 1774). +-define(wxImageList_Draw, 1776). +-define(wxImageList_GetBitmap, 1777). +-define(wxImageList_GetIcon, 1778). +-define(wxImageList_GetImageCount, 1779). +-define(wxImageList_GetSize, 1780). +-define(wxImageList_Remove, 1781). +-define(wxImageList_RemoveAll, 1782). +-define(wxImageList_Replace_2, 1783). +-define(wxImageList_Replace_3, 1784). +-define(wxImageList_destroy, 1785). +-define(wxTextAttr_new_0, 1786). +-define(wxTextAttr_new_2, 1787). +-define(wxTextAttr_GetAlignment, 1788). +-define(wxTextAttr_GetBackgroundColour, 1789). +-define(wxTextAttr_GetFont, 1790). +-define(wxTextAttr_GetLeftIndent, 1791). +-define(wxTextAttr_GetLeftSubIndent, 1792). +-define(wxTextAttr_GetRightIndent, 1793). +-define(wxTextAttr_GetTabs, 1794). +-define(wxTextAttr_GetTextColour, 1795). +-define(wxTextAttr_HasBackgroundColour, 1796). +-define(wxTextAttr_HasFont, 1797). +-define(wxTextAttr_HasTextColour, 1798). +-define(wxTextAttr_GetFlags, 1799). +-define(wxTextAttr_IsDefault, 1800). +-define(wxTextAttr_SetAlignment, 1801). +-define(wxTextAttr_SetBackgroundColour, 1802). +-define(wxTextAttr_SetFlags, 1803). +-define(wxTextAttr_SetFont, 1804). +-define(wxTextAttr_SetLeftIndent, 1805). +-define(wxTextAttr_SetRightIndent, 1806). +-define(wxTextAttr_SetTabs, 1807). +-define(wxTextAttr_SetTextColour, 1808). +-define(wxTextAttr_destroy, 1809). +-define(wxTextCtrl_new_3, 1811). +-define(wxTextCtrl_new_0, 1812). +-define(wxTextCtrl_destruct, 1814). +-define(wxTextCtrl_AppendText, 1815). +-define(wxTextCtrl_CanCopy, 1816). +-define(wxTextCtrl_CanCut, 1817). +-define(wxTextCtrl_CanPaste, 1818). +-define(wxTextCtrl_CanRedo, 1819). +-define(wxTextCtrl_CanUndo, 1820). +-define(wxTextCtrl_Clear, 1821). +-define(wxTextCtrl_Copy, 1822). +-define(wxTextCtrl_Create, 1823). +-define(wxTextCtrl_Cut, 1824). +-define(wxTextCtrl_DiscardEdits, 1825). +-define(wxTextCtrl_EmulateKeyPress, 1826). +-define(wxTextCtrl_GetDefaultStyle, 1827). +-define(wxTextCtrl_GetInsertionPoint, 1828). +-define(wxTextCtrl_GetLastPosition, 1829). +-define(wxTextCtrl_GetLineLength, 1830). +-define(wxTextCtrl_GetLineText, 1831). +-define(wxTextCtrl_GetNumberOfLines, 1832). +-define(wxTextCtrl_GetRange, 1833). +-define(wxTextCtrl_GetSelection, 1834). +-define(wxTextCtrl_GetStringSelection, 1835). +-define(wxTextCtrl_GetStyle, 1836). +-define(wxTextCtrl_GetValue, 1837). +-define(wxTextCtrl_IsEditable, 1838). +-define(wxTextCtrl_IsModified, 1839). +-define(wxTextCtrl_IsMultiLine, 1840). +-define(wxTextCtrl_IsSingleLine, 1841). +-define(wxTextCtrl_LoadFile, 1842). +-define(wxTextCtrl_MarkDirty, 1843). +-define(wxTextCtrl_Paste, 1844). +-define(wxTextCtrl_PositionToXY, 1845). +-define(wxTextCtrl_Redo, 1846). +-define(wxTextCtrl_Remove, 1847). +-define(wxTextCtrl_Replace, 1848). +-define(wxTextCtrl_SaveFile, 1849). +-define(wxTextCtrl_SetDefaultStyle, 1850). +-define(wxTextCtrl_SetEditable, 1851). +-define(wxTextCtrl_SetInsertionPoint, 1852). +-define(wxTextCtrl_SetInsertionPointEnd, 1853). +-define(wxTextCtrl_SetMaxLength, 1855). +-define(wxTextCtrl_SetSelection, 1856). +-define(wxTextCtrl_SetStyle, 1857). +-define(wxTextCtrl_SetValue, 1858). +-define(wxTextCtrl_ShowPosition, 1859). +-define(wxTextCtrl_Undo, 1860). +-define(wxTextCtrl_WriteText, 1861). +-define(wxTextCtrl_XYToPosition, 1862). +-define(wxNotebook_new_0, 1865). +-define(wxNotebook_new_3, 1866). +-define(wxNotebook_destruct, 1867). +-define(wxNotebook_AddPage, 1868). +-define(wxNotebook_AdvanceSelection, 1869). +-define(wxNotebook_AssignImageList, 1870). +-define(wxNotebook_Create, 1871). +-define(wxNotebook_DeleteAllPages, 1872). +-define(wxNotebook_DeletePage, 1873). +-define(wxNotebook_RemovePage, 1874). +-define(wxNotebook_GetCurrentPage, 1875). +-define(wxNotebook_GetImageList, 1876). +-define(wxNotebook_GetPage, 1878). +-define(wxNotebook_GetPageCount, 1879). +-define(wxNotebook_GetPageImage, 1880). +-define(wxNotebook_GetPageText, 1881). +-define(wxNotebook_GetRowCount, 1882). +-define(wxNotebook_GetSelection, 1883). +-define(wxNotebook_GetThemeBackgroundColour, 1884). +-define(wxNotebook_HitTest, 1886). +-define(wxNotebook_InsertPage, 1888). +-define(wxNotebook_SetImageList, 1889). +-define(wxNotebook_SetPadding, 1890). +-define(wxNotebook_SetPageSize, 1891). +-define(wxNotebook_SetPageImage, 1892). +-define(wxNotebook_SetPageText, 1893). +-define(wxNotebook_SetSelection, 1894). +-define(wxNotebook_ChangeSelection, 1895). +-define(wxChoicebook_new_0, 1896). +-define(wxChoicebook_new_3, 1897). +-define(wxChoicebook_AddPage, 1898). +-define(wxChoicebook_AdvanceSelection, 1899). +-define(wxChoicebook_AssignImageList, 1900). +-define(wxChoicebook_Create, 1901). +-define(wxChoicebook_DeleteAllPages, 1902). +-define(wxChoicebook_DeletePage, 1903). +-define(wxChoicebook_RemovePage, 1904). +-define(wxChoicebook_GetCurrentPage, 1905). +-define(wxChoicebook_GetImageList, 1906). +-define(wxChoicebook_GetPage, 1908). +-define(wxChoicebook_GetPageCount, 1909). +-define(wxChoicebook_GetPageImage, 1910). +-define(wxChoicebook_GetPageText, 1911). +-define(wxChoicebook_GetSelection, 1912). +-define(wxChoicebook_HitTest, 1913). +-define(wxChoicebook_InsertPage, 1914). +-define(wxChoicebook_SetImageList, 1915). +-define(wxChoicebook_SetPageSize, 1916). +-define(wxChoicebook_SetPageImage, 1917). +-define(wxChoicebook_SetPageText, 1918). +-define(wxChoicebook_SetSelection, 1919). +-define(wxChoicebook_ChangeSelection, 1920). +-define(wxChoicebook_destroy, 1921). +-define(wxToolbook_new_0, 1922). +-define(wxToolbook_new_3, 1923). +-define(wxToolbook_AddPage, 1924). +-define(wxToolbook_AdvanceSelection, 1925). +-define(wxToolbook_AssignImageList, 1926). +-define(wxToolbook_Create, 1927). +-define(wxToolbook_DeleteAllPages, 1928). +-define(wxToolbook_DeletePage, 1929). +-define(wxToolbook_RemovePage, 1930). +-define(wxToolbook_GetCurrentPage, 1931). +-define(wxToolbook_GetImageList, 1932). +-define(wxToolbook_GetPage, 1934). +-define(wxToolbook_GetPageCount, 1935). +-define(wxToolbook_GetPageImage, 1936). +-define(wxToolbook_GetPageText, 1937). +-define(wxToolbook_GetSelection, 1938). +-define(wxToolbook_HitTest, 1940). +-define(wxToolbook_InsertPage, 1941). +-define(wxToolbook_SetImageList, 1942). +-define(wxToolbook_SetPageSize, 1943). +-define(wxToolbook_SetPageImage, 1944). +-define(wxToolbook_SetPageText, 1945). +-define(wxToolbook_SetSelection, 1946). +-define(wxToolbook_ChangeSelection, 1947). +-define(wxToolbook_destroy, 1948). +-define(wxListbook_new_0, 1949). +-define(wxListbook_new_3, 1950). +-define(wxListbook_AddPage, 1951). +-define(wxListbook_AdvanceSelection, 1952). +-define(wxListbook_AssignImageList, 1953). +-define(wxListbook_Create, 1954). +-define(wxListbook_DeleteAllPages, 1955). +-define(wxListbook_DeletePage, 1956). +-define(wxListbook_RemovePage, 1957). +-define(wxListbook_GetCurrentPage, 1958). +-define(wxListbook_GetImageList, 1959). +-define(wxListbook_GetPage, 1961). +-define(wxListbook_GetPageCount, 1962). +-define(wxListbook_GetPageImage, 1963). +-define(wxListbook_GetPageText, 1964). +-define(wxListbook_GetSelection, 1965). +-define(wxListbook_HitTest, 1967). +-define(wxListbook_InsertPage, 1968). +-define(wxListbook_SetImageList, 1969). +-define(wxListbook_SetPageSize, 1970). +-define(wxListbook_SetPageImage, 1971). +-define(wxListbook_SetPageText, 1972). +-define(wxListbook_SetSelection, 1973). +-define(wxListbook_ChangeSelection, 1974). +-define(wxListbook_destroy, 1975). +-define(wxTreebook_new_0, 1976). +-define(wxTreebook_new_3, 1977). +-define(wxTreebook_AddPage, 1978). +-define(wxTreebook_AdvanceSelection, 1979). +-define(wxTreebook_AssignImageList, 1980). +-define(wxTreebook_Create, 1981). +-define(wxTreebook_DeleteAllPages, 1982). +-define(wxTreebook_DeletePage, 1983). +-define(wxTreebook_RemovePage, 1984). +-define(wxTreebook_GetCurrentPage, 1985). +-define(wxTreebook_GetImageList, 1986). +-define(wxTreebook_GetPage, 1988). +-define(wxTreebook_GetPageCount, 1989). +-define(wxTreebook_GetPageImage, 1990). +-define(wxTreebook_GetPageText, 1991). +-define(wxTreebook_GetSelection, 1992). +-define(wxTreebook_ExpandNode, 1993). +-define(wxTreebook_IsNodeExpanded, 1994). +-define(wxTreebook_HitTest, 1996). +-define(wxTreebook_InsertPage, 1997). +-define(wxTreebook_InsertSubPage, 1998). +-define(wxTreebook_SetImageList, 1999). +-define(wxTreebook_SetPageSize, 2000). +-define(wxTreebook_SetPageImage, 2001). +-define(wxTreebook_SetPageText, 2002). +-define(wxTreebook_SetSelection, 2003). +-define(wxTreebook_ChangeSelection, 2004). +-define(wxTreebook_destroy, 2005). +-define(wxTreeCtrl_new_2, 2008). +-define(wxTreeCtrl_new_0, 2009). +-define(wxTreeCtrl_destruct, 2011). +-define(wxTreeCtrl_AddRoot, 2012). +-define(wxTreeCtrl_AppendItem, 2013). +-define(wxTreeCtrl_AssignImageList, 2014). +-define(wxTreeCtrl_AssignStateImageList, 2015). +-define(wxTreeCtrl_Collapse, 2016). +-define(wxTreeCtrl_CollapseAndReset, 2017). +-define(wxTreeCtrl_Create, 2018). +-define(wxTreeCtrl_Delete, 2019). +-define(wxTreeCtrl_DeleteAllItems, 2020). +-define(wxTreeCtrl_DeleteChildren, 2021). +-define(wxTreeCtrl_EditLabel, 2022). +-define(wxTreeCtrl_EnsureVisible, 2023). +-define(wxTreeCtrl_Expand, 2024). +-define(wxTreeCtrl_GetBoundingRect, 2025). +-define(wxTreeCtrl_GetChildrenCount, 2027). +-define(wxTreeCtrl_GetCount, 2028). +-define(wxTreeCtrl_GetEditControl, 2029). +-define(wxTreeCtrl_GetFirstChild, 2030). +-define(wxTreeCtrl_GetNextChild, 2031). +-define(wxTreeCtrl_GetFirstVisibleItem, 2032). +-define(wxTreeCtrl_GetImageList, 2033). +-define(wxTreeCtrl_GetIndent, 2034). +-define(wxTreeCtrl_GetItemBackgroundColour, 2035). +-define(wxTreeCtrl_GetItemData, 2036). +-define(wxTreeCtrl_GetItemFont, 2037). +-define(wxTreeCtrl_GetItemImage_1, 2038). +-define(wxTreeCtrl_GetItemImage_2, 2039). +-define(wxTreeCtrl_GetItemText, 2040). +-define(wxTreeCtrl_GetItemTextColour, 2041). +-define(wxTreeCtrl_GetLastChild, 2042). +-define(wxTreeCtrl_GetNextSibling, 2043). +-define(wxTreeCtrl_GetNextVisible, 2044). +-define(wxTreeCtrl_GetItemParent, 2045). +-define(wxTreeCtrl_GetPrevSibling, 2046). +-define(wxTreeCtrl_GetPrevVisible, 2047). +-define(wxTreeCtrl_GetRootItem, 2048). +-define(wxTreeCtrl_GetSelection, 2049). +-define(wxTreeCtrl_GetSelections, 2050). +-define(wxTreeCtrl_GetStateImageList, 2051). +-define(wxTreeCtrl_HitTest, 2052). +-define(wxTreeCtrl_InsertItem, 2054). +-define(wxTreeCtrl_IsBold, 2055). +-define(wxTreeCtrl_IsExpanded, 2056). +-define(wxTreeCtrl_IsSelected, 2057). +-define(wxTreeCtrl_IsVisible, 2058). +-define(wxTreeCtrl_ItemHasChildren, 2059). +-define(wxTreeCtrl_PrependItem, 2060). +-define(wxTreeCtrl_ScrollTo, 2061). +-define(wxTreeCtrl_SelectItem_1, 2062). +-define(wxTreeCtrl_SelectItem_2, 2063). +-define(wxTreeCtrl_SetIndent, 2064). +-define(wxTreeCtrl_SetImageList, 2065). +-define(wxTreeCtrl_SetItemBackgroundColour, 2066). +-define(wxTreeCtrl_SetItemBold, 2067). +-define(wxTreeCtrl_SetItemData, 2068). +-define(wxTreeCtrl_SetItemDropHighlight, 2069). +-define(wxTreeCtrl_SetItemFont, 2070). +-define(wxTreeCtrl_SetItemHasChildren, 2071). +-define(wxTreeCtrl_SetItemImage_2, 2072). +-define(wxTreeCtrl_SetItemImage_3, 2073). +-define(wxTreeCtrl_SetItemText, 2074). +-define(wxTreeCtrl_SetItemTextColour, 2075). +-define(wxTreeCtrl_SetStateImageList, 2076). +-define(wxTreeCtrl_SetWindowStyle, 2077). +-define(wxTreeCtrl_SortChildren, 2078). +-define(wxTreeCtrl_Toggle, 2079). +-define(wxTreeCtrl_ToggleItemSelection, 2080). +-define(wxTreeCtrl_Unselect, 2081). +-define(wxTreeCtrl_UnselectAll, 2082). +-define(wxTreeCtrl_UnselectItem, 2083). +-define(wxScrollBar_new_0, 2084). +-define(wxScrollBar_new_3, 2085). +-define(wxScrollBar_destruct, 2086). +-define(wxScrollBar_Create, 2087). +-define(wxScrollBar_GetRange, 2088). +-define(wxScrollBar_GetPageSize, 2089). +-define(wxScrollBar_GetThumbPosition, 2090). +-define(wxScrollBar_GetThumbSize, 2091). +-define(wxScrollBar_SetThumbPosition, 2092). +-define(wxScrollBar_SetScrollbar, 2093). +-define(wxSpinButton_new_2, 2095). +-define(wxSpinButton_new_0, 2096). +-define(wxSpinButton_Create, 2097). +-define(wxSpinButton_GetMax, 2098). +-define(wxSpinButton_GetMin, 2099). +-define(wxSpinButton_GetValue, 2100). +-define(wxSpinButton_SetRange, 2101). +-define(wxSpinButton_SetValue, 2102). +-define(wxSpinButton_destroy, 2103). +-define(wxSpinCtrl_new_0, 2104). +-define(wxSpinCtrl_new_2, 2105). +-define(wxSpinCtrl_Create, 2107). +-define(wxSpinCtrl_SetValue_1_1, 2110). +-define(wxSpinCtrl_SetValue_1_0, 2111). +-define(wxSpinCtrl_GetValue, 2113). +-define(wxSpinCtrl_SetRange, 2115). +-define(wxSpinCtrl_SetSelection, 2116). +-define(wxSpinCtrl_GetMin, 2118). +-define(wxSpinCtrl_GetMax, 2120). +-define(wxSpinCtrl_destroy, 2121). +-define(wxStaticText_new_0, 2122). +-define(wxStaticText_new_4, 2123). +-define(wxStaticText_Create, 2124). +-define(wxStaticText_GetLabel, 2125). +-define(wxStaticText_SetLabel, 2126). +-define(wxStaticText_Wrap, 2127). +-define(wxStaticText_destroy, 2128). +-define(wxStaticBitmap_new_0, 2129). +-define(wxStaticBitmap_new_4, 2130). +-define(wxStaticBitmap_Create, 2131). +-define(wxStaticBitmap_GetBitmap, 2132). +-define(wxStaticBitmap_SetBitmap, 2133). +-define(wxStaticBitmap_destroy, 2134). +-define(wxRadioBox_new, 2135). +-define(wxRadioBox_destruct, 2137). +-define(wxRadioBox_Create, 2138). +-define(wxRadioBox_Enable_2, 2139). +-define(wxRadioBox_Enable_1, 2140). +-define(wxRadioBox_GetSelection, 2141). +-define(wxRadioBox_GetString, 2142). +-define(wxRadioBox_SetSelection, 2143). +-define(wxRadioBox_Show_2, 2144). +-define(wxRadioBox_Show_1, 2145). +-define(wxRadioBox_GetColumnCount, 2146). +-define(wxRadioBox_GetItemHelpText, 2147). +-define(wxRadioBox_GetItemToolTip, 2148). +-define(wxRadioBox_GetItemFromPoint, 2150). +-define(wxRadioBox_GetRowCount, 2151). +-define(wxRadioBox_IsItemEnabled, 2152). +-define(wxRadioBox_IsItemShown, 2153). +-define(wxRadioBox_SetItemHelpText, 2154). +-define(wxRadioBox_SetItemToolTip, 2155). +-define(wxRadioButton_new_0, 2156). +-define(wxRadioButton_new_4, 2157). +-define(wxRadioButton_Create, 2158). +-define(wxRadioButton_GetValue, 2159). +-define(wxRadioButton_SetValue, 2160). +-define(wxRadioButton_destroy, 2161). +-define(wxSlider_new_6, 2163). +-define(wxSlider_new_0, 2164). +-define(wxSlider_Create, 2165). +-define(wxSlider_GetLineSize, 2166). +-define(wxSlider_GetMax, 2167). +-define(wxSlider_GetMin, 2168). +-define(wxSlider_GetPageSize, 2169). +-define(wxSlider_GetThumbLength, 2170). +-define(wxSlider_GetValue, 2171). +-define(wxSlider_SetLineSize, 2172). +-define(wxSlider_SetPageSize, 2173). +-define(wxSlider_SetRange, 2174). +-define(wxSlider_SetThumbLength, 2175). +-define(wxSlider_SetValue, 2176). +-define(wxSlider_destroy, 2177). +-define(wxDialog_new_4, 2179). +-define(wxDialog_new_0, 2180). +-define(wxDialog_destruct, 2182). +-define(wxDialog_Create, 2183). +-define(wxDialog_CreateButtonSizer, 2184). +-define(wxDialog_CreateStdDialogButtonSizer, 2185). +-define(wxDialog_EndModal, 2186). +-define(wxDialog_GetAffirmativeId, 2187). +-define(wxDialog_GetReturnCode, 2188). +-define(wxDialog_IsModal, 2189). +-define(wxDialog_SetAffirmativeId, 2190). +-define(wxDialog_SetReturnCode, 2191). +-define(wxDialog_Show, 2192). +-define(wxDialog_ShowModal, 2193). +-define(wxColourDialog_new_0, 2194). +-define(wxColourDialog_new_2, 2195). +-define(wxColourDialog_destruct, 2196). +-define(wxColourDialog_Create, 2197). +-define(wxColourDialog_GetColourData, 2198). +-define(wxColourData_new_0, 2199). +-define(wxColourData_new_1, 2200). +-define(wxColourData_destruct, 2201). +-define(wxColourData_GetChooseFull, 2202). +-define(wxColourData_GetColour, 2203). +-define(wxColourData_GetCustomColour, 2205). +-define(wxColourData_SetChooseFull, 2206). +-define(wxColourData_SetColour, 2207). +-define(wxColourData_SetCustomColour, 2208). +-define(wxPalette_new_0, 2209). +-define(wxPalette_new_4, 2210). +-define(wxPalette_destruct, 2212). +-define(wxPalette_Create, 2213). +-define(wxPalette_GetColoursCount, 2214). +-define(wxPalette_GetPixel, 2215). +-define(wxPalette_GetRGB, 2216). +-define(wxPalette_IsOk, 2217). +-define(wxDirDialog_new, 2221). +-define(wxDirDialog_destruct, 2222). +-define(wxDirDialog_GetPath, 2223). +-define(wxDirDialog_GetMessage, 2224). +-define(wxDirDialog_SetMessage, 2225). +-define(wxDirDialog_SetPath, 2226). +-define(wxFileDialog_new, 2230). +-define(wxFileDialog_destruct, 2231). +-define(wxFileDialog_GetDirectory, 2232). +-define(wxFileDialog_GetFilename, 2233). +-define(wxFileDialog_GetFilenames, 2234). +-define(wxFileDialog_GetFilterIndex, 2235). +-define(wxFileDialog_GetMessage, 2236). +-define(wxFileDialog_GetPath, 2237). +-define(wxFileDialog_GetPaths, 2238). +-define(wxFileDialog_GetWildcard, 2239). +-define(wxFileDialog_SetDirectory, 2240). +-define(wxFileDialog_SetFilename, 2241). +-define(wxFileDialog_SetFilterIndex, 2242). +-define(wxFileDialog_SetMessage, 2243). +-define(wxFileDialog_SetPath, 2244). +-define(wxFileDialog_SetWildcard, 2245). +-define(wxPickerBase_SetInternalMargin, 2246). +-define(wxPickerBase_GetInternalMargin, 2247). +-define(wxPickerBase_SetTextCtrlProportion, 2248). +-define(wxPickerBase_SetPickerCtrlProportion, 2249). +-define(wxPickerBase_GetTextCtrlProportion, 2250). +-define(wxPickerBase_GetPickerCtrlProportion, 2251). +-define(wxPickerBase_HasTextCtrl, 2252). +-define(wxPickerBase_GetTextCtrl, 2253). +-define(wxPickerBase_IsTextCtrlGrowable, 2254). +-define(wxPickerBase_SetPickerCtrlGrowable, 2255). +-define(wxPickerBase_SetTextCtrlGrowable, 2256). +-define(wxPickerBase_IsPickerCtrlGrowable, 2257). +-define(wxFilePickerCtrl_new_0, 2258). +-define(wxFilePickerCtrl_new_3, 2259). +-define(wxFilePickerCtrl_Create, 2260). +-define(wxFilePickerCtrl_GetPath, 2261). +-define(wxFilePickerCtrl_SetPath, 2262). +-define(wxFilePickerCtrl_destroy, 2263). +-define(wxDirPickerCtrl_new_0, 2264). +-define(wxDirPickerCtrl_new_3, 2265). +-define(wxDirPickerCtrl_Create, 2266). +-define(wxDirPickerCtrl_GetPath, 2267). +-define(wxDirPickerCtrl_SetPath, 2268). +-define(wxDirPickerCtrl_destroy, 2269). +-define(wxColourPickerCtrl_new_0, 2270). +-define(wxColourPickerCtrl_new_3, 2271). +-define(wxColourPickerCtrl_Create, 2272). +-define(wxColourPickerCtrl_GetColour, 2273). +-define(wxColourPickerCtrl_SetColour_1_1, 2274). +-define(wxColourPickerCtrl_SetColour_1_0, 2275). +-define(wxColourPickerCtrl_destroy, 2276). +-define(wxDatePickerCtrl_new_0, 2277). +-define(wxDatePickerCtrl_new_3, 2278). +-define(wxDatePickerCtrl_GetRange, 2279). +-define(wxDatePickerCtrl_GetValue, 2280). +-define(wxDatePickerCtrl_SetRange, 2281). +-define(wxDatePickerCtrl_SetValue, 2282). +-define(wxDatePickerCtrl_destroy, 2283). +-define(wxFontPickerCtrl_new_0, 2284). +-define(wxFontPickerCtrl_new_3, 2285). +-define(wxFontPickerCtrl_Create, 2286). +-define(wxFontPickerCtrl_GetSelectedFont, 2287). +-define(wxFontPickerCtrl_SetSelectedFont, 2288). +-define(wxFontPickerCtrl_GetMaxPointSize, 2289). +-define(wxFontPickerCtrl_SetMaxPointSize, 2290). +-define(wxFontPickerCtrl_destroy, 2291). +-define(wxFindReplaceDialog_new_0, 2294). +-define(wxFindReplaceDialog_new_4, 2295). +-define(wxFindReplaceDialog_destruct, 2296). +-define(wxFindReplaceDialog_Create, 2297). +-define(wxFindReplaceDialog_GetData, 2298). +-define(wxFindReplaceData_new_0, 2299). +-define(wxFindReplaceData_new_1, 2300). +-define(wxFindReplaceData_GetFindString, 2301). +-define(wxFindReplaceData_GetReplaceString, 2302). +-define(wxFindReplaceData_GetFlags, 2303). +-define(wxFindReplaceData_SetFlags, 2304). +-define(wxFindReplaceData_SetFindString, 2305). +-define(wxFindReplaceData_SetReplaceString, 2306). +-define(wxFindReplaceData_destroy, 2307). +-define(wxMultiChoiceDialog_new_0, 2308). +-define(wxMultiChoiceDialog_new_5, 2310). +-define(wxMultiChoiceDialog_GetSelections, 2311). +-define(wxMultiChoiceDialog_SetSelections, 2312). +-define(wxMultiChoiceDialog_destroy, 2313). +-define(wxSingleChoiceDialog_new_0, 2314). +-define(wxSingleChoiceDialog_new_5, 2316). +-define(wxSingleChoiceDialog_GetSelection, 2317). +-define(wxSingleChoiceDialog_GetStringSelection, 2318). +-define(wxSingleChoiceDialog_SetSelection, 2319). +-define(wxSingleChoiceDialog_destroy, 2320). +-define(wxTextEntryDialog_new, 2321). +-define(wxTextEntryDialog_GetValue, 2322). +-define(wxTextEntryDialog_SetValue, 2323). +-define(wxTextEntryDialog_destroy, 2324). +-define(wxPasswordEntryDialog_new, 2325). +-define(wxPasswordEntryDialog_destroy, 2326). +-define(wxFontData_new_0, 2327). +-define(wxFontData_new_1, 2328). +-define(wxFontData_destruct, 2329). +-define(wxFontData_EnableEffects, 2330). +-define(wxFontData_GetAllowSymbols, 2331). +-define(wxFontData_GetColour, 2332). +-define(wxFontData_GetChosenFont, 2333). +-define(wxFontData_GetEnableEffects, 2334). +-define(wxFontData_GetInitialFont, 2335). +-define(wxFontData_GetShowHelp, 2336). +-define(wxFontData_SetAllowSymbols, 2337). +-define(wxFontData_SetChosenFont, 2338). +-define(wxFontData_SetColour, 2339). +-define(wxFontData_SetInitialFont, 2340). +-define(wxFontData_SetRange, 2341). +-define(wxFontData_SetShowHelp, 2342). +-define(wxFontDialog_new_0, 2346). +-define(wxFontDialog_new_2, 2348). +-define(wxFontDialog_Create, 2350). +-define(wxFontDialog_GetFontData, 2351). +-define(wxFontDialog_destroy, 2353). +-define(wxProgressDialog_new, 2354). +-define(wxProgressDialog_destruct, 2355). +-define(wxProgressDialog_Resume, 2356). +-define(wxProgressDialog_Update_2, 2357). +-define(wxProgressDialog_Update_0, 2358). +-define(wxMessageDialog_new, 2359). +-define(wxMessageDialog_destruct, 2360). +-define(wxPageSetupDialog_new, 2361). +-define(wxPageSetupDialog_destruct, 2362). +-define(wxPageSetupDialog_GetPageSetupData, 2363). +-define(wxPageSetupDialog_ShowModal, 2364). +-define(wxPageSetupDialogData_new_0, 2365). +-define(wxPageSetupDialogData_new_1_0, 2366). +-define(wxPageSetupDialogData_new_1_1, 2367). +-define(wxPageSetupDialogData_destruct, 2368). +-define(wxPageSetupDialogData_EnableHelp, 2369). +-define(wxPageSetupDialogData_EnableMargins, 2370). +-define(wxPageSetupDialogData_EnableOrientation, 2371). +-define(wxPageSetupDialogData_EnablePaper, 2372). +-define(wxPageSetupDialogData_EnablePrinter, 2373). +-define(wxPageSetupDialogData_GetDefaultMinMargins, 2374). +-define(wxPageSetupDialogData_GetEnableMargins, 2375). +-define(wxPageSetupDialogData_GetEnableOrientation, 2376). +-define(wxPageSetupDialogData_GetEnablePaper, 2377). +-define(wxPageSetupDialogData_GetEnablePrinter, 2378). +-define(wxPageSetupDialogData_GetEnableHelp, 2379). +-define(wxPageSetupDialogData_GetDefaultInfo, 2380). +-define(wxPageSetupDialogData_GetMarginTopLeft, 2381). +-define(wxPageSetupDialogData_GetMarginBottomRight, 2382). +-define(wxPageSetupDialogData_GetMinMarginTopLeft, 2383). +-define(wxPageSetupDialogData_GetMinMarginBottomRight, 2384). +-define(wxPageSetupDialogData_GetPaperId, 2385). +-define(wxPageSetupDialogData_GetPaperSize, 2386). +-define(wxPageSetupDialogData_GetPrintData, 2388). +-define(wxPageSetupDialogData_IsOk, 2389). +-define(wxPageSetupDialogData_SetDefaultInfo, 2390). +-define(wxPageSetupDialogData_SetDefaultMinMargins, 2391). +-define(wxPageSetupDialogData_SetMarginTopLeft, 2392). +-define(wxPageSetupDialogData_SetMarginBottomRight, 2393). +-define(wxPageSetupDialogData_SetMinMarginTopLeft, 2394). +-define(wxPageSetupDialogData_SetMinMarginBottomRight, 2395). +-define(wxPageSetupDialogData_SetPaperId, 2396). +-define(wxPageSetupDialogData_SetPaperSize_1_1, 2397). +-define(wxPageSetupDialogData_SetPaperSize_1_0, 2398). +-define(wxPageSetupDialogData_SetPrintData, 2399). +-define(wxPrintDialog_new_2_0, 2400). +-define(wxPrintDialog_new_2_1, 2401). +-define(wxPrintDialog_destruct, 2402). +-define(wxPrintDialog_GetPrintDialogData, 2403). +-define(wxPrintDialog_GetPrintDC, 2404). +-define(wxPrintDialogData_new_0, 2405). +-define(wxPrintDialogData_new_1_1, 2406). +-define(wxPrintDialogData_new_1_0, 2407). +-define(wxPrintDialogData_destruct, 2408). +-define(wxPrintDialogData_EnableHelp, 2409). +-define(wxPrintDialogData_EnablePageNumbers, 2410). +-define(wxPrintDialogData_EnablePrintToFile, 2411). +-define(wxPrintDialogData_EnableSelection, 2412). +-define(wxPrintDialogData_GetAllPages, 2413). +-define(wxPrintDialogData_GetCollate, 2414). +-define(wxPrintDialogData_GetFromPage, 2415). +-define(wxPrintDialogData_GetMaxPage, 2416). +-define(wxPrintDialogData_GetMinPage, 2417). +-define(wxPrintDialogData_GetNoCopies, 2418). +-define(wxPrintDialogData_GetPrintData, 2419). +-define(wxPrintDialogData_GetPrintToFile, 2420). +-define(wxPrintDialogData_GetSelection, 2421). +-define(wxPrintDialogData_GetToPage, 2422). +-define(wxPrintDialogData_IsOk, 2423). +-define(wxPrintDialogData_SetCollate, 2424). +-define(wxPrintDialogData_SetFromPage, 2425). +-define(wxPrintDialogData_SetMaxPage, 2426). +-define(wxPrintDialogData_SetMinPage, 2427). +-define(wxPrintDialogData_SetNoCopies, 2428). +-define(wxPrintDialogData_SetPrintData, 2429). +-define(wxPrintDialogData_SetPrintToFile, 2430). +-define(wxPrintDialogData_SetSelection, 2431). +-define(wxPrintDialogData_SetToPage, 2432). +-define(wxPrintData_new_0, 2433). +-define(wxPrintData_new_1, 2434). +-define(wxPrintData_destruct, 2435). +-define(wxPrintData_GetCollate, 2436). +-define(wxPrintData_GetBin, 2437). +-define(wxPrintData_GetColour, 2438). +-define(wxPrintData_GetDuplex, 2439). +-define(wxPrintData_GetNoCopies, 2440). +-define(wxPrintData_GetOrientation, 2441). +-define(wxPrintData_GetPaperId, 2442). +-define(wxPrintData_GetPrinterName, 2443). +-define(wxPrintData_GetQuality, 2444). +-define(wxPrintData_IsOk, 2445). +-define(wxPrintData_SetBin, 2446). +-define(wxPrintData_SetCollate, 2447). +-define(wxPrintData_SetColour, 2448). +-define(wxPrintData_SetDuplex, 2449). +-define(wxPrintData_SetNoCopies, 2450). +-define(wxPrintData_SetOrientation, 2451). +-define(wxPrintData_SetPaperId, 2452). +-define(wxPrintData_SetPrinterName, 2453). +-define(wxPrintData_SetQuality, 2454). +-define(wxPrintPreview_new_2, 2457). +-define(wxPrintPreview_new_3, 2458). +-define(wxPrintPreview_destruct, 2460). +-define(wxPrintPreview_GetCanvas, 2461). +-define(wxPrintPreview_GetCurrentPage, 2462). +-define(wxPrintPreview_GetFrame, 2463). +-define(wxPrintPreview_GetMaxPage, 2464). +-define(wxPrintPreview_GetMinPage, 2465). +-define(wxPrintPreview_GetPrintout, 2466). +-define(wxPrintPreview_GetPrintoutForPrinting, 2467). +-define(wxPrintPreview_IsOk, 2468). +-define(wxPrintPreview_PaintPage, 2469). +-define(wxPrintPreview_Print, 2470). +-define(wxPrintPreview_RenderPage, 2471). +-define(wxPrintPreview_SetCanvas, 2472). +-define(wxPrintPreview_SetCurrentPage, 2473). +-define(wxPrintPreview_SetFrame, 2474). +-define(wxPrintPreview_SetPrintout, 2475). +-define(wxPrintPreview_SetZoom, 2476). +-define(wxPreviewFrame_new, 2477). +-define(wxPreviewFrame_destruct, 2478). +-define(wxPreviewFrame_CreateControlBar, 2479). +-define(wxPreviewFrame_CreateCanvas, 2480). +-define(wxPreviewFrame_Initialize, 2481). +-define(wxPreviewFrame_OnCloseWindow, 2482). +-define(wxPreviewControlBar_new, 2483). +-define(wxPreviewControlBar_destruct, 2484). +-define(wxPreviewControlBar_CreateButtons, 2485). +-define(wxPreviewControlBar_GetPrintPreview, 2486). +-define(wxPreviewControlBar_GetZoomControl, 2487). +-define(wxPreviewControlBar_SetZoomControl, 2488). +-define(wxPrinter_new, 2490). +-define(wxPrinter_CreateAbortWindow, 2491). +-define(wxPrinter_GetAbort, 2492). +-define(wxPrinter_GetLastError, 2493). +-define(wxPrinter_GetPrintDialogData, 2494). +-define(wxPrinter_Print, 2495). +-define(wxPrinter_PrintDialog, 2496). +-define(wxPrinter_ReportError, 2497). +-define(wxPrinter_Setup, 2498). +-define(wxPrinter_destroy, 2499). +-define(wxXmlResource_new_1, 2500). +-define(wxXmlResource_new_2, 2501). +-define(wxXmlResource_destruct, 2502). +-define(wxXmlResource_AttachUnknownControl, 2503). +-define(wxXmlResource_ClearHandlers, 2504). +-define(wxXmlResource_CompareVersion, 2505). +-define(wxXmlResource_Get, 2506). +-define(wxXmlResource_GetFlags, 2507). +-define(wxXmlResource_GetVersion, 2508). +-define(wxXmlResource_GetXRCID, 2509). +-define(wxXmlResource_InitAllHandlers, 2510). +-define(wxXmlResource_Load, 2511). +-define(wxXmlResource_LoadBitmap, 2512). +-define(wxXmlResource_LoadDialog_2, 2513). +-define(wxXmlResource_LoadDialog_3, 2514). +-define(wxXmlResource_LoadFrame_2, 2515). +-define(wxXmlResource_LoadFrame_3, 2516). +-define(wxXmlResource_LoadIcon, 2517). +-define(wxXmlResource_LoadMenu, 2518). +-define(wxXmlResource_LoadMenuBar_2, 2519). +-define(wxXmlResource_LoadMenuBar_1, 2520). +-define(wxXmlResource_LoadPanel_2, 2521). +-define(wxXmlResource_LoadPanel_3, 2522). +-define(wxXmlResource_LoadToolBar, 2523). +-define(wxXmlResource_Set, 2524). +-define(wxXmlResource_SetFlags, 2525). +-define(wxXmlResource_Unload, 2526). +-define(wxXmlResource_xrcctrl, 2527). +-define(wxHtmlEasyPrinting_new, 2528). +-define(wxHtmlEasyPrinting_destruct, 2529). +-define(wxHtmlEasyPrinting_GetPrintData, 2530). +-define(wxHtmlEasyPrinting_GetPageSetupData, 2531). +-define(wxHtmlEasyPrinting_PreviewFile, 2532). +-define(wxHtmlEasyPrinting_PreviewText, 2533). +-define(wxHtmlEasyPrinting_PrintFile, 2534). +-define(wxHtmlEasyPrinting_PrintText, 2535). +-define(wxHtmlEasyPrinting_PageSetup, 2536). +-define(wxHtmlEasyPrinting_SetFonts, 2537). +-define(wxHtmlEasyPrinting_SetHeader, 2538). +-define(wxHtmlEasyPrinting_SetFooter, 2539). +-define(wxGLCanvas_new_2, 2541). +-define(wxGLCanvas_new_3_1, 2542). +-define(wxGLCanvas_new_3_0, 2543). +-define(wxGLCanvas_GetContext, 2544). +-define(wxGLCanvas_SetCurrent, 2546). +-define(wxGLCanvas_SwapBuffers, 2547). +-define(wxGLCanvas_destroy, 2548). +-define(wxAuiManager_new, 2549). +-define(wxAuiManager_destruct, 2550). +-define(wxAuiManager_AddPane_2_1, 2551). +-define(wxAuiManager_AddPane_3, 2552). +-define(wxAuiManager_AddPane_2_0, 2553). +-define(wxAuiManager_DetachPane, 2554). +-define(wxAuiManager_GetAllPanes, 2555). +-define(wxAuiManager_GetArtProvider, 2556). +-define(wxAuiManager_GetDockSizeConstraint, 2557). +-define(wxAuiManager_GetFlags, 2558). +-define(wxAuiManager_GetManagedWindow, 2559). +-define(wxAuiManager_GetManager, 2560). +-define(wxAuiManager_GetPane_1_1, 2561). +-define(wxAuiManager_GetPane_1_0, 2562). +-define(wxAuiManager_HideHint, 2563). +-define(wxAuiManager_InsertPane, 2564). +-define(wxAuiManager_LoadPaneInfo, 2565). +-define(wxAuiManager_LoadPerspective, 2566). +-define(wxAuiManager_SavePaneInfo, 2567). +-define(wxAuiManager_SavePerspective, 2568). +-define(wxAuiManager_SetArtProvider, 2569). +-define(wxAuiManager_SetDockSizeConstraint, 2570). +-define(wxAuiManager_SetFlags, 2571). +-define(wxAuiManager_SetManagedWindow, 2572). +-define(wxAuiManager_ShowHint, 2573). +-define(wxAuiManager_UnInit, 2574). +-define(wxAuiManager_Update, 2575). +-define(wxAuiPaneInfo_new_0, 2576). +-define(wxAuiPaneInfo_new_1, 2577). +-define(wxAuiPaneInfo_destruct, 2578). +-define(wxAuiPaneInfo_BestSize_1, 2579). +-define(wxAuiPaneInfo_BestSize_2, 2580). +-define(wxAuiPaneInfo_Bottom, 2581). +-define(wxAuiPaneInfo_BottomDockable, 2582). +-define(wxAuiPaneInfo_Caption, 2583). +-define(wxAuiPaneInfo_CaptionVisible, 2584). +-define(wxAuiPaneInfo_Centre, 2585). +-define(wxAuiPaneInfo_CentrePane, 2586). +-define(wxAuiPaneInfo_CloseButton, 2587). +-define(wxAuiPaneInfo_DefaultPane, 2588). +-define(wxAuiPaneInfo_DestroyOnClose, 2589). +-define(wxAuiPaneInfo_Direction, 2590). +-define(wxAuiPaneInfo_Dock, 2591). +-define(wxAuiPaneInfo_Dockable, 2592). +-define(wxAuiPaneInfo_Fixed, 2593). +-define(wxAuiPaneInfo_Float, 2594). +-define(wxAuiPaneInfo_Floatable, 2595). +-define(wxAuiPaneInfo_FloatingPosition_1, 2596). +-define(wxAuiPaneInfo_FloatingPosition_2, 2597). +-define(wxAuiPaneInfo_FloatingSize_1, 2598). +-define(wxAuiPaneInfo_FloatingSize_2, 2599). +-define(wxAuiPaneInfo_Gripper, 2600). +-define(wxAuiPaneInfo_GripperTop, 2601). +-define(wxAuiPaneInfo_HasBorder, 2602). +-define(wxAuiPaneInfo_HasCaption, 2603). +-define(wxAuiPaneInfo_HasCloseButton, 2604). +-define(wxAuiPaneInfo_HasFlag, 2605). +-define(wxAuiPaneInfo_HasGripper, 2606). +-define(wxAuiPaneInfo_HasGripperTop, 2607). +-define(wxAuiPaneInfo_HasMaximizeButton, 2608). +-define(wxAuiPaneInfo_HasMinimizeButton, 2609). +-define(wxAuiPaneInfo_HasPinButton, 2610). +-define(wxAuiPaneInfo_Hide, 2611). +-define(wxAuiPaneInfo_IsBottomDockable, 2612). +-define(wxAuiPaneInfo_IsDocked, 2613). +-define(wxAuiPaneInfo_IsFixed, 2614). +-define(wxAuiPaneInfo_IsFloatable, 2615). +-define(wxAuiPaneInfo_IsFloating, 2616). +-define(wxAuiPaneInfo_IsLeftDockable, 2617). +-define(wxAuiPaneInfo_IsMovable, 2618). +-define(wxAuiPaneInfo_IsOk, 2619). +-define(wxAuiPaneInfo_IsResizable, 2620). +-define(wxAuiPaneInfo_IsRightDockable, 2621). +-define(wxAuiPaneInfo_IsShown, 2622). +-define(wxAuiPaneInfo_IsToolbar, 2623). +-define(wxAuiPaneInfo_IsTopDockable, 2624). +-define(wxAuiPaneInfo_Layer, 2625). +-define(wxAuiPaneInfo_Left, 2626). +-define(wxAuiPaneInfo_LeftDockable, 2627). +-define(wxAuiPaneInfo_MaxSize_1, 2628). +-define(wxAuiPaneInfo_MaxSize_2, 2629). +-define(wxAuiPaneInfo_MaximizeButton, 2630). +-define(wxAuiPaneInfo_MinSize_1, 2631). +-define(wxAuiPaneInfo_MinSize_2, 2632). +-define(wxAuiPaneInfo_MinimizeButton, 2633). +-define(wxAuiPaneInfo_Movable, 2634). +-define(wxAuiPaneInfo_Name, 2635). +-define(wxAuiPaneInfo_PaneBorder, 2636). +-define(wxAuiPaneInfo_PinButton, 2637). +-define(wxAuiPaneInfo_Position, 2638). +-define(wxAuiPaneInfo_Resizable, 2639). +-define(wxAuiPaneInfo_Right, 2640). +-define(wxAuiPaneInfo_RightDockable, 2641). +-define(wxAuiPaneInfo_Row, 2642). +-define(wxAuiPaneInfo_SafeSet, 2643). +-define(wxAuiPaneInfo_SetFlag, 2644). +-define(wxAuiPaneInfo_Show, 2645). +-define(wxAuiPaneInfo_ToolbarPane, 2646). +-define(wxAuiPaneInfo_Top, 2647). +-define(wxAuiPaneInfo_TopDockable, 2648). +-define(wxAuiPaneInfo_Window, 2649). +-define(wxAuiNotebook_new_0, 2650). +-define(wxAuiNotebook_new_2, 2651). +-define(wxAuiNotebook_AddPage, 2652). +-define(wxAuiNotebook_Create, 2653). +-define(wxAuiNotebook_DeletePage, 2654). +-define(wxAuiNotebook_GetArtProvider, 2655). +-define(wxAuiNotebook_GetPage, 2656). +-define(wxAuiNotebook_GetPageBitmap, 2657). +-define(wxAuiNotebook_GetPageCount, 2658). +-define(wxAuiNotebook_GetPageIndex, 2659). +-define(wxAuiNotebook_GetPageText, 2660). +-define(wxAuiNotebook_GetSelection, 2661). +-define(wxAuiNotebook_InsertPage, 2662). +-define(wxAuiNotebook_RemovePage, 2663). +-define(wxAuiNotebook_SetArtProvider, 2664). +-define(wxAuiNotebook_SetFont, 2665). +-define(wxAuiNotebook_SetPageBitmap, 2666). +-define(wxAuiNotebook_SetPageText, 2667). +-define(wxAuiNotebook_SetSelection, 2668). +-define(wxAuiNotebook_SetTabCtrlHeight, 2669). +-define(wxAuiNotebook_SetUniformBitmapSize, 2670). +-define(wxAuiNotebook_destroy, 2671). +-define(wxMDIParentFrame_new_0, 2672). +-define(wxMDIParentFrame_new_4, 2673). +-define(wxMDIParentFrame_destruct, 2674). +-define(wxMDIParentFrame_ActivateNext, 2675). +-define(wxMDIParentFrame_ActivatePrevious, 2676). +-define(wxMDIParentFrame_ArrangeIcons, 2677). +-define(wxMDIParentFrame_Cascade, 2678). +-define(wxMDIParentFrame_Create, 2679). +-define(wxMDIParentFrame_GetActiveChild, 2680). +-define(wxMDIParentFrame_GetClientWindow, 2681). +-define(wxMDIParentFrame_Tile, 2682). +-define(wxMDIChildFrame_new_0, 2683). +-define(wxMDIChildFrame_new_4, 2684). +-define(wxMDIChildFrame_destruct, 2685). +-define(wxMDIChildFrame_Activate, 2686). +-define(wxMDIChildFrame_Create, 2687). +-define(wxMDIChildFrame_Maximize, 2688). +-define(wxMDIChildFrame_Restore, 2689). +-define(wxMDIClientWindow_new_0, 2690). +-define(wxMDIClientWindow_new_2, 2691). +-define(wxMDIClientWindow_destruct, 2692). +-define(wxMDIClientWindow_CreateClient, 2693). +-define(wxLayoutAlgorithm_new, 2694). +-define(wxLayoutAlgorithm_LayoutFrame, 2695). +-define(wxLayoutAlgorithm_LayoutMDIFrame, 2696). +-define(wxLayoutAlgorithm_LayoutWindow, 2697). +-define(wxLayoutAlgorithm_destroy, 2698). +-define(wxEvent_GetId, 2699). +-define(wxEvent_GetSkipped, 2700). +-define(wxEvent_GetTimestamp, 2701). +-define(wxEvent_IsCommandEvent, 2702). +-define(wxEvent_ResumePropagation, 2703). +-define(wxEvent_ShouldPropagate, 2704). +-define(wxEvent_Skip, 2705). +-define(wxEvent_StopPropagation, 2706). +-define(wxCommandEvent_getClientData, 2707). +-define(wxCommandEvent_GetExtraLong, 2708). +-define(wxCommandEvent_GetInt, 2709). +-define(wxCommandEvent_GetSelection, 2710). +-define(wxCommandEvent_GetString, 2711). +-define(wxCommandEvent_IsChecked, 2712). +-define(wxCommandEvent_IsSelection, 2713). +-define(wxCommandEvent_SetInt, 2714). +-define(wxCommandEvent_SetString, 2715). +-define(wxScrollEvent_GetOrientation, 2716). +-define(wxScrollEvent_GetPosition, 2717). +-define(wxScrollWinEvent_GetOrientation, 2718). +-define(wxScrollWinEvent_GetPosition, 2719). +-define(wxMouseEvent_AltDown, 2720). +-define(wxMouseEvent_Button, 2721). +-define(wxMouseEvent_ButtonDClick, 2722). +-define(wxMouseEvent_ButtonDown, 2723). +-define(wxMouseEvent_ButtonUp, 2724). +-define(wxMouseEvent_CmdDown, 2725). +-define(wxMouseEvent_ControlDown, 2726). +-define(wxMouseEvent_Dragging, 2727). +-define(wxMouseEvent_Entering, 2728). +-define(wxMouseEvent_GetButton, 2729). +-define(wxMouseEvent_GetPosition, 2732). +-define(wxMouseEvent_GetLogicalPosition, 2733). +-define(wxMouseEvent_GetLinesPerAction, 2734). +-define(wxMouseEvent_GetWheelRotation, 2735). +-define(wxMouseEvent_GetWheelDelta, 2736). +-define(wxMouseEvent_GetX, 2737). +-define(wxMouseEvent_GetY, 2738). +-define(wxMouseEvent_IsButton, 2739). +-define(wxMouseEvent_IsPageScroll, 2740). +-define(wxMouseEvent_Leaving, 2741). +-define(wxMouseEvent_LeftDClick, 2742). +-define(wxMouseEvent_LeftDown, 2743). +-define(wxMouseEvent_LeftIsDown, 2744). +-define(wxMouseEvent_LeftUp, 2745). +-define(wxMouseEvent_MetaDown, 2746). +-define(wxMouseEvent_MiddleDClick, 2747). +-define(wxMouseEvent_MiddleDown, 2748). +-define(wxMouseEvent_MiddleIsDown, 2749). +-define(wxMouseEvent_MiddleUp, 2750). +-define(wxMouseEvent_Moving, 2751). +-define(wxMouseEvent_RightDClick, 2752). +-define(wxMouseEvent_RightDown, 2753). +-define(wxMouseEvent_RightIsDown, 2754). +-define(wxMouseEvent_RightUp, 2755). +-define(wxMouseEvent_ShiftDown, 2756). +-define(wxSetCursorEvent_GetCursor, 2757). +-define(wxSetCursorEvent_GetX, 2758). +-define(wxSetCursorEvent_GetY, 2759). +-define(wxSetCursorEvent_HasCursor, 2760). +-define(wxSetCursorEvent_SetCursor, 2761). +-define(wxKeyEvent_AltDown, 2762). +-define(wxKeyEvent_CmdDown, 2763). +-define(wxKeyEvent_ControlDown, 2764). +-define(wxKeyEvent_GetKeyCode, 2765). +-define(wxKeyEvent_GetModifiers, 2766). +-define(wxKeyEvent_GetPosition, 2769). +-define(wxKeyEvent_GetRawKeyCode, 2770). +-define(wxKeyEvent_GetRawKeyFlags, 2771). +-define(wxKeyEvent_GetUnicodeKey, 2772). +-define(wxKeyEvent_GetX, 2773). +-define(wxKeyEvent_GetY, 2774). +-define(wxKeyEvent_HasModifiers, 2775). +-define(wxKeyEvent_MetaDown, 2776). +-define(wxKeyEvent_ShiftDown, 2777). +-define(wxSizeEvent_GetSize, 2778). +-define(wxMoveEvent_GetPosition, 2779). +-define(wxEraseEvent_GetDC, 2780). +-define(wxFocusEvent_GetWindow, 2781). +-define(wxChildFocusEvent_GetWindow, 2782). +-define(wxMenuEvent_GetMenu, 2783). +-define(wxMenuEvent_GetMenuId, 2784). +-define(wxMenuEvent_IsPopup, 2785). +-define(wxCloseEvent_CanVeto, 2786). +-define(wxCloseEvent_GetLoggingOff, 2787). +-define(wxCloseEvent_SetCanVeto, 2788). +-define(wxCloseEvent_SetLoggingOff, 2789). +-define(wxCloseEvent_Veto, 2790). +-define(wxShowEvent_SetShow, 2791). +-define(wxShowEvent_GetShow, 2792). +-define(wxIconizeEvent_Iconized, 2793). +-define(wxJoystickEvent_ButtonDown, 2794). +-define(wxJoystickEvent_ButtonIsDown, 2795). +-define(wxJoystickEvent_ButtonUp, 2796). +-define(wxJoystickEvent_GetButtonChange, 2797). +-define(wxJoystickEvent_GetButtonState, 2798). +-define(wxJoystickEvent_GetJoystick, 2799). +-define(wxJoystickEvent_GetPosition, 2800). +-define(wxJoystickEvent_GetZPosition, 2801). +-define(wxJoystickEvent_IsButton, 2802). +-define(wxJoystickEvent_IsMove, 2803). +-define(wxJoystickEvent_IsZMove, 2804). +-define(wxUpdateUIEvent_CanUpdate, 2805). +-define(wxUpdateUIEvent_Check, 2806). +-define(wxUpdateUIEvent_Enable, 2807). +-define(wxUpdateUIEvent_Show, 2808). +-define(wxUpdateUIEvent_GetChecked, 2809). +-define(wxUpdateUIEvent_GetEnabled, 2810). +-define(wxUpdateUIEvent_GetShown, 2811). +-define(wxUpdateUIEvent_GetSetChecked, 2812). +-define(wxUpdateUIEvent_GetSetEnabled, 2813). +-define(wxUpdateUIEvent_GetSetShown, 2814). +-define(wxUpdateUIEvent_GetSetText, 2815). +-define(wxUpdateUIEvent_GetText, 2816). +-define(wxUpdateUIEvent_GetMode, 2817). +-define(wxUpdateUIEvent_GetUpdateInterval, 2818). +-define(wxUpdateUIEvent_ResetUpdateTime, 2819). +-define(wxUpdateUIEvent_SetMode, 2820). +-define(wxUpdateUIEvent_SetText, 2821). +-define(wxUpdateUIEvent_SetUpdateInterval, 2822). +-define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2823). +-define(wxPaletteChangedEvent_SetChangedWindow, 2824). +-define(wxPaletteChangedEvent_GetChangedWindow, 2825). +-define(wxQueryNewPaletteEvent_SetPaletteRealized, 2826). +-define(wxQueryNewPaletteEvent_GetPaletteRealized, 2827). +-define(wxNavigationKeyEvent_GetDirection, 2828). +-define(wxNavigationKeyEvent_SetDirection, 2829). +-define(wxNavigationKeyEvent_IsWindowChange, 2830). +-define(wxNavigationKeyEvent_SetWindowChange, 2831). +-define(wxNavigationKeyEvent_IsFromTab, 2832). +-define(wxNavigationKeyEvent_SetFromTab, 2833). +-define(wxNavigationKeyEvent_GetCurrentFocus, 2834). +-define(wxNavigationKeyEvent_SetCurrentFocus, 2835). +-define(wxHelpEvent_GetOrigin, 2836). +-define(wxHelpEvent_GetPosition, 2837). +-define(wxHelpEvent_SetOrigin, 2838). +-define(wxHelpEvent_SetPosition, 2839). +-define(wxContextMenuEvent_GetPosition, 2840). +-define(wxContextMenuEvent_SetPosition, 2841). +-define(wxIdleEvent_CanSend, 2842). +-define(wxIdleEvent_GetMode, 2843). +-define(wxIdleEvent_RequestMore, 2844). +-define(wxIdleEvent_MoreRequested, 2845). +-define(wxIdleEvent_SetMode, 2846). +-define(wxGridEvent_AltDown, 2847). +-define(wxGridEvent_ControlDown, 2848). +-define(wxGridEvent_GetCol, 2849). +-define(wxGridEvent_GetPosition, 2850). +-define(wxGridEvent_GetRow, 2851). +-define(wxGridEvent_MetaDown, 2852). +-define(wxGridEvent_Selecting, 2853). +-define(wxGridEvent_ShiftDown, 2854). +-define(wxNotifyEvent_Allow, 2855). +-define(wxNotifyEvent_IsAllowed, 2856). +-define(wxNotifyEvent_Veto, 2857). +-define(wxSashEvent_GetEdge, 2858). +-define(wxSashEvent_GetDragRect, 2859). +-define(wxSashEvent_GetDragStatus, 2860). +-define(wxListEvent_GetCacheFrom, 2861). +-define(wxListEvent_GetCacheTo, 2862). +-define(wxListEvent_GetKeyCode, 2863). +-define(wxListEvent_GetIndex, 2864). +-define(wxListEvent_GetColumn, 2865). +-define(wxListEvent_GetPoint, 2866). +-define(wxListEvent_GetLabel, 2867). +-define(wxListEvent_GetText, 2868). +-define(wxListEvent_GetImage, 2869). +-define(wxListEvent_GetData, 2870). +-define(wxListEvent_GetMask, 2871). +-define(wxListEvent_GetItem, 2872). +-define(wxListEvent_IsEditCancelled, 2873). +-define(wxDateEvent_GetDate, 2874). +-define(wxCalendarEvent_GetWeekDay, 2875). +-define(wxFileDirPickerEvent_GetPath, 2876). +-define(wxColourPickerEvent_GetColour, 2877). +-define(wxFontPickerEvent_GetFont, 2878). +-define(wxStyledTextEvent_GetPosition, 2879). +-define(wxStyledTextEvent_GetKey, 2880). +-define(wxStyledTextEvent_GetModifiers, 2881). +-define(wxStyledTextEvent_GetModificationType, 2882). +-define(wxStyledTextEvent_GetText, 2883). +-define(wxStyledTextEvent_GetLength, 2884). +-define(wxStyledTextEvent_GetLinesAdded, 2885). +-define(wxStyledTextEvent_GetLine, 2886). +-define(wxStyledTextEvent_GetFoldLevelNow, 2887). +-define(wxStyledTextEvent_GetFoldLevelPrev, 2888). +-define(wxStyledTextEvent_GetMargin, 2889). +-define(wxStyledTextEvent_GetMessage, 2890). +-define(wxStyledTextEvent_GetWParam, 2891). +-define(wxStyledTextEvent_GetLParam, 2892). +-define(wxStyledTextEvent_GetListType, 2893). +-define(wxStyledTextEvent_GetX, 2894). +-define(wxStyledTextEvent_GetY, 2895). +-define(wxStyledTextEvent_GetDragText, 2896). +-define(wxStyledTextEvent_GetDragAllowMove, 2897). +-define(wxStyledTextEvent_GetDragResult, 2898). +-define(wxStyledTextEvent_GetShift, 2899). +-define(wxStyledTextEvent_GetControl, 2900). +-define(wxStyledTextEvent_GetAlt, 2901). +-define(utils_wxGetKeyState, 2902). +-define(utils_wxGetMousePosition, 2903). +-define(utils_wxGetMouseState, 2904). +-define(utils_wxSetDetectableAutoRepeat, 2905). +-define(utils_wxBell, 2906). +-define(utils_wxFindMenuItemId, 2907). +-define(utils_wxGenericFindWindowAtPoint, 2908). +-define(utils_wxFindWindowAtPoint, 2909). +-define(utils_wxBeginBusyCursor, 2910). +-define(utils_wxEndBusyCursor, 2911). +-define(utils_wxIsBusy, 2912). +-define(utils_wxShutdown, 2913). +-define(utils_wxShell, 2914). +-define(utils_wxLaunchDefaultBrowser, 2915). +-define(utils_wxGetEmailAddress, 2916). +-define(utils_wxGetUserId, 2917). +-define(utils_wxGetHomeDir, 2918). +-define(utils_wxNewId, 2919). +-define(utils_wxRegisterId, 2920). +-define(utils_wxGetCurrentId, 2921). +-define(utils_wxGetOsDescription, 2922). +-define(utils_wxIsPlatformLittleEndian, 2923). +-define(utils_wxIsPlatform64Bit, 2924). +-define(wxPrintout_new, 2925). +-define(wxPrintout_destruct, 2926). +-define(wxPrintout_GetDC, 2927). +-define(wxPrintout_GetPageSizeMM, 2928). +-define(wxPrintout_GetPageSizePixels, 2929). +-define(wxPrintout_GetPaperRectPixels, 2930). +-define(wxPrintout_GetPPIPrinter, 2931). +-define(wxPrintout_GetPPIScreen, 2932). +-define(wxPrintout_GetTitle, 2933). +-define(wxPrintout_IsPreview, 2934). +-define(wxPrintout_FitThisSizeToPaper, 2935). +-define(wxPrintout_FitThisSizeToPage, 2936). +-define(wxPrintout_FitThisSizeToPageMargins, 2937). +-define(wxPrintout_MapScreenSizeToPaper, 2938). +-define(wxPrintout_MapScreenSizeToPage, 2939). +-define(wxPrintout_MapScreenSizeToPageMargins, 2940). +-define(wxPrintout_MapScreenSizeToDevice, 2941). +-define(wxPrintout_GetLogicalPaperRect, 2942). +-define(wxPrintout_GetLogicalPageRect, 2943). +-define(wxPrintout_GetLogicalPageMarginsRect, 2944). +-define(wxPrintout_SetLogicalOrigin, 2945). +-define(wxPrintout_OffsetLogicalOrigin, 2946). +-define(wxStyledTextCtrl_new_2, 2947). +-define(wxStyledTextCtrl_new_0, 2948). +-define(wxStyledTextCtrl_destruct, 2949). +-define(wxStyledTextCtrl_Create, 2950). +-define(wxStyledTextCtrl_AddText, 2951). +-define(wxStyledTextCtrl_AddStyledText, 2952). +-define(wxStyledTextCtrl_InsertText, 2953). +-define(wxStyledTextCtrl_ClearAll, 2954). +-define(wxStyledTextCtrl_ClearDocumentStyle, 2955). +-define(wxStyledTextCtrl_GetLength, 2956). +-define(wxStyledTextCtrl_GetCharAt, 2957). +-define(wxStyledTextCtrl_GetCurrentPos, 2958). +-define(wxStyledTextCtrl_GetAnchor, 2959). +-define(wxStyledTextCtrl_GetStyleAt, 2960). +-define(wxStyledTextCtrl_Redo, 2961). +-define(wxStyledTextCtrl_SetUndoCollection, 2962). +-define(wxStyledTextCtrl_SelectAll, 2963). +-define(wxStyledTextCtrl_SetSavePoint, 2964). +-define(wxStyledTextCtrl_GetStyledText, 2965). +-define(wxStyledTextCtrl_CanRedo, 2966). +-define(wxStyledTextCtrl_MarkerLineFromHandle, 2967). +-define(wxStyledTextCtrl_MarkerDeleteHandle, 2968). +-define(wxStyledTextCtrl_GetUndoCollection, 2969). +-define(wxStyledTextCtrl_GetViewWhiteSpace, 2970). +-define(wxStyledTextCtrl_SetViewWhiteSpace, 2971). +-define(wxStyledTextCtrl_PositionFromPoint, 2972). +-define(wxStyledTextCtrl_PositionFromPointClose, 2973). +-define(wxStyledTextCtrl_GotoLine, 2974). +-define(wxStyledTextCtrl_GotoPos, 2975). +-define(wxStyledTextCtrl_SetAnchor, 2976). +-define(wxStyledTextCtrl_GetCurLine, 2977). +-define(wxStyledTextCtrl_GetEndStyled, 2978). +-define(wxStyledTextCtrl_ConvertEOLs, 2979). +-define(wxStyledTextCtrl_GetEOLMode, 2980). +-define(wxStyledTextCtrl_SetEOLMode, 2981). +-define(wxStyledTextCtrl_StartStyling, 2982). +-define(wxStyledTextCtrl_SetStyling, 2983). +-define(wxStyledTextCtrl_GetBufferedDraw, 2984). +-define(wxStyledTextCtrl_SetBufferedDraw, 2985). +-define(wxStyledTextCtrl_SetTabWidth, 2986). +-define(wxStyledTextCtrl_GetTabWidth, 2987). +-define(wxStyledTextCtrl_SetCodePage, 2988). +-define(wxStyledTextCtrl_MarkerDefine, 2989). +-define(wxStyledTextCtrl_MarkerSetForeground, 2990). +-define(wxStyledTextCtrl_MarkerSetBackground, 2991). +-define(wxStyledTextCtrl_MarkerAdd, 2992). +-define(wxStyledTextCtrl_MarkerDelete, 2993). +-define(wxStyledTextCtrl_MarkerDeleteAll, 2994). +-define(wxStyledTextCtrl_MarkerGet, 2995). +-define(wxStyledTextCtrl_MarkerNext, 2996). +-define(wxStyledTextCtrl_MarkerPrevious, 2997). +-define(wxStyledTextCtrl_MarkerDefineBitmap, 2998). +-define(wxStyledTextCtrl_MarkerAddSet, 2999). +-define(wxStyledTextCtrl_MarkerSetAlpha, 3000). +-define(wxStyledTextCtrl_SetMarginType, 3001). +-define(wxStyledTextCtrl_GetMarginType, 3002). +-define(wxStyledTextCtrl_SetMarginWidth, 3003). +-define(wxStyledTextCtrl_GetMarginWidth, 3004). +-define(wxStyledTextCtrl_SetMarginMask, 3005). +-define(wxStyledTextCtrl_GetMarginMask, 3006). +-define(wxStyledTextCtrl_SetMarginSensitive, 3007). +-define(wxStyledTextCtrl_GetMarginSensitive, 3008). +-define(wxStyledTextCtrl_StyleClearAll, 3009). +-define(wxStyledTextCtrl_StyleSetForeground, 3010). +-define(wxStyledTextCtrl_StyleSetBackground, 3011). +-define(wxStyledTextCtrl_StyleSetBold, 3012). +-define(wxStyledTextCtrl_StyleSetItalic, 3013). +-define(wxStyledTextCtrl_StyleSetSize, 3014). +-define(wxStyledTextCtrl_StyleSetFaceName, 3015). +-define(wxStyledTextCtrl_StyleSetEOLFilled, 3016). +-define(wxStyledTextCtrl_StyleResetDefault, 3017). +-define(wxStyledTextCtrl_StyleSetUnderline, 3018). +-define(wxStyledTextCtrl_StyleSetCase, 3019). +-define(wxStyledTextCtrl_StyleSetHotSpot, 3020). +-define(wxStyledTextCtrl_SetSelForeground, 3021). +-define(wxStyledTextCtrl_SetSelBackground, 3022). +-define(wxStyledTextCtrl_GetSelAlpha, 3023). +-define(wxStyledTextCtrl_SetSelAlpha, 3024). +-define(wxStyledTextCtrl_SetCaretForeground, 3025). +-define(wxStyledTextCtrl_CmdKeyAssign, 3026). +-define(wxStyledTextCtrl_CmdKeyClear, 3027). +-define(wxStyledTextCtrl_CmdKeyClearAll, 3028). +-define(wxStyledTextCtrl_SetStyleBytes, 3029). +-define(wxStyledTextCtrl_StyleSetVisible, 3030). +-define(wxStyledTextCtrl_GetCaretPeriod, 3031). +-define(wxStyledTextCtrl_SetCaretPeriod, 3032). +-define(wxStyledTextCtrl_SetWordChars, 3033). +-define(wxStyledTextCtrl_BeginUndoAction, 3034). +-define(wxStyledTextCtrl_EndUndoAction, 3035). +-define(wxStyledTextCtrl_IndicatorSetStyle, 3036). +-define(wxStyledTextCtrl_IndicatorGetStyle, 3037). +-define(wxStyledTextCtrl_IndicatorSetForeground, 3038). +-define(wxStyledTextCtrl_IndicatorGetForeground, 3039). +-define(wxStyledTextCtrl_SetWhitespaceForeground, 3040). +-define(wxStyledTextCtrl_SetWhitespaceBackground, 3041). +-define(wxStyledTextCtrl_GetStyleBits, 3042). +-define(wxStyledTextCtrl_SetLineState, 3043). +-define(wxStyledTextCtrl_GetLineState, 3044). +-define(wxStyledTextCtrl_GetMaxLineState, 3045). +-define(wxStyledTextCtrl_GetCaretLineVisible, 3046). +-define(wxStyledTextCtrl_SetCaretLineVisible, 3047). +-define(wxStyledTextCtrl_GetCaretLineBackground, 3048). +-define(wxStyledTextCtrl_SetCaretLineBackground, 3049). +-define(wxStyledTextCtrl_AutoCompShow, 3050). +-define(wxStyledTextCtrl_AutoCompCancel, 3051). +-define(wxStyledTextCtrl_AutoCompActive, 3052). +-define(wxStyledTextCtrl_AutoCompPosStart, 3053). +-define(wxStyledTextCtrl_AutoCompComplete, 3054). +-define(wxStyledTextCtrl_AutoCompStops, 3055). +-define(wxStyledTextCtrl_AutoCompSetSeparator, 3056). +-define(wxStyledTextCtrl_AutoCompGetSeparator, 3057). +-define(wxStyledTextCtrl_AutoCompSelect, 3058). +-define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3059). +-define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3060). +-define(wxStyledTextCtrl_AutoCompSetFillUps, 3061). +-define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3062). +-define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3063). +-define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3064). +-define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3065). +-define(wxStyledTextCtrl_UserListShow, 3066). +-define(wxStyledTextCtrl_AutoCompSetAutoHide, 3067). +-define(wxStyledTextCtrl_AutoCompGetAutoHide, 3068). +-define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3069). +-define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3070). +-define(wxStyledTextCtrl_RegisterImage, 3071). +-define(wxStyledTextCtrl_ClearRegisteredImages, 3072). +-define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3073). +-define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3074). +-define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3075). +-define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3076). +-define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3077). +-define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3078). +-define(wxStyledTextCtrl_SetIndent, 3079). +-define(wxStyledTextCtrl_GetIndent, 3080). +-define(wxStyledTextCtrl_SetUseTabs, 3081). +-define(wxStyledTextCtrl_GetUseTabs, 3082). +-define(wxStyledTextCtrl_SetLineIndentation, 3083). +-define(wxStyledTextCtrl_GetLineIndentation, 3084). +-define(wxStyledTextCtrl_GetLineIndentPosition, 3085). +-define(wxStyledTextCtrl_GetColumn, 3086). +-define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3087). +-define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3088). +-define(wxStyledTextCtrl_SetIndentationGuides, 3089). +-define(wxStyledTextCtrl_GetIndentationGuides, 3090). +-define(wxStyledTextCtrl_SetHighlightGuide, 3091). +-define(wxStyledTextCtrl_GetHighlightGuide, 3092). +-define(wxStyledTextCtrl_GetLineEndPosition, 3093). +-define(wxStyledTextCtrl_GetCodePage, 3094). +-define(wxStyledTextCtrl_GetCaretForeground, 3095). +-define(wxStyledTextCtrl_GetReadOnly, 3096). +-define(wxStyledTextCtrl_SetCurrentPos, 3097). +-define(wxStyledTextCtrl_SetSelectionStart, 3098). +-define(wxStyledTextCtrl_GetSelectionStart, 3099). +-define(wxStyledTextCtrl_SetSelectionEnd, 3100). +-define(wxStyledTextCtrl_GetSelectionEnd, 3101). +-define(wxStyledTextCtrl_SetPrintMagnification, 3102). +-define(wxStyledTextCtrl_GetPrintMagnification, 3103). +-define(wxStyledTextCtrl_SetPrintColourMode, 3104). +-define(wxStyledTextCtrl_GetPrintColourMode, 3105). +-define(wxStyledTextCtrl_FindText, 3106). +-define(wxStyledTextCtrl_FormatRange, 3107). +-define(wxStyledTextCtrl_GetFirstVisibleLine, 3108). +-define(wxStyledTextCtrl_GetLine, 3109). +-define(wxStyledTextCtrl_GetLineCount, 3110). +-define(wxStyledTextCtrl_SetMarginLeft, 3111). +-define(wxStyledTextCtrl_GetMarginLeft, 3112). +-define(wxStyledTextCtrl_SetMarginRight, 3113). +-define(wxStyledTextCtrl_GetMarginRight, 3114). +-define(wxStyledTextCtrl_GetModify, 3115). +-define(wxStyledTextCtrl_SetSelection, 3116). +-define(wxStyledTextCtrl_GetSelectedText, 3117). +-define(wxStyledTextCtrl_GetTextRange, 3118). +-define(wxStyledTextCtrl_HideSelection, 3119). +-define(wxStyledTextCtrl_LineFromPosition, 3120). +-define(wxStyledTextCtrl_PositionFromLine, 3121). +-define(wxStyledTextCtrl_LineScroll, 3122). +-define(wxStyledTextCtrl_EnsureCaretVisible, 3123). +-define(wxStyledTextCtrl_ReplaceSelection, 3124). +-define(wxStyledTextCtrl_SetReadOnly, 3125). +-define(wxStyledTextCtrl_CanPaste, 3126). +-define(wxStyledTextCtrl_CanUndo, 3127). +-define(wxStyledTextCtrl_EmptyUndoBuffer, 3128). +-define(wxStyledTextCtrl_Undo, 3129). +-define(wxStyledTextCtrl_Cut, 3130). +-define(wxStyledTextCtrl_Copy, 3131). +-define(wxStyledTextCtrl_Paste, 3132). +-define(wxStyledTextCtrl_Clear, 3133). +-define(wxStyledTextCtrl_SetText, 3134). +-define(wxStyledTextCtrl_GetText, 3135). +-define(wxStyledTextCtrl_GetTextLength, 3136). +-define(wxStyledTextCtrl_GetOvertype, 3137). +-define(wxStyledTextCtrl_SetCaretWidth, 3138). +-define(wxStyledTextCtrl_GetCaretWidth, 3139). +-define(wxStyledTextCtrl_SetTargetStart, 3140). +-define(wxStyledTextCtrl_GetTargetStart, 3141). +-define(wxStyledTextCtrl_SetTargetEnd, 3142). +-define(wxStyledTextCtrl_GetTargetEnd, 3143). +-define(wxStyledTextCtrl_ReplaceTarget, 3144). +-define(wxStyledTextCtrl_SearchInTarget, 3145). +-define(wxStyledTextCtrl_SetSearchFlags, 3146). +-define(wxStyledTextCtrl_GetSearchFlags, 3147). +-define(wxStyledTextCtrl_CallTipShow, 3148). +-define(wxStyledTextCtrl_CallTipCancel, 3149). +-define(wxStyledTextCtrl_CallTipActive, 3150). +-define(wxStyledTextCtrl_CallTipPosAtStart, 3151). +-define(wxStyledTextCtrl_CallTipSetHighlight, 3152). +-define(wxStyledTextCtrl_CallTipSetBackground, 3153). +-define(wxStyledTextCtrl_CallTipSetForeground, 3154). +-define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3155). +-define(wxStyledTextCtrl_CallTipUseStyle, 3156). +-define(wxStyledTextCtrl_VisibleFromDocLine, 3157). +-define(wxStyledTextCtrl_DocLineFromVisible, 3158). +-define(wxStyledTextCtrl_WrapCount, 3159). +-define(wxStyledTextCtrl_SetFoldLevel, 3160). +-define(wxStyledTextCtrl_GetFoldLevel, 3161). +-define(wxStyledTextCtrl_GetLastChild, 3162). +-define(wxStyledTextCtrl_GetFoldParent, 3163). +-define(wxStyledTextCtrl_ShowLines, 3164). +-define(wxStyledTextCtrl_HideLines, 3165). +-define(wxStyledTextCtrl_GetLineVisible, 3166). +-define(wxStyledTextCtrl_SetFoldExpanded, 3167). +-define(wxStyledTextCtrl_GetFoldExpanded, 3168). +-define(wxStyledTextCtrl_ToggleFold, 3169). +-define(wxStyledTextCtrl_EnsureVisible, 3170). +-define(wxStyledTextCtrl_SetFoldFlags, 3171). +-define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3172). +-define(wxStyledTextCtrl_SetTabIndents, 3173). +-define(wxStyledTextCtrl_GetTabIndents, 3174). +-define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3175). +-define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3176). +-define(wxStyledTextCtrl_SetMouseDwellTime, 3177). +-define(wxStyledTextCtrl_GetMouseDwellTime, 3178). +-define(wxStyledTextCtrl_WordStartPosition, 3179). +-define(wxStyledTextCtrl_WordEndPosition, 3180). +-define(wxStyledTextCtrl_SetWrapMode, 3181). +-define(wxStyledTextCtrl_GetWrapMode, 3182). +-define(wxStyledTextCtrl_SetWrapVisualFlags, 3183). +-define(wxStyledTextCtrl_GetWrapVisualFlags, 3184). +-define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3185). +-define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3186). +-define(wxStyledTextCtrl_SetWrapStartIndent, 3187). +-define(wxStyledTextCtrl_GetWrapStartIndent, 3188). +-define(wxStyledTextCtrl_SetLayoutCache, 3189). +-define(wxStyledTextCtrl_GetLayoutCache, 3190). +-define(wxStyledTextCtrl_SetScrollWidth, 3191). +-define(wxStyledTextCtrl_GetScrollWidth, 3192). +-define(wxStyledTextCtrl_TextWidth, 3193). +-define(wxStyledTextCtrl_GetEndAtLastLine, 3194). +-define(wxStyledTextCtrl_TextHeight, 3195). +-define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3196). +-define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3197). +-define(wxStyledTextCtrl_AppendText, 3198). +-define(wxStyledTextCtrl_GetTwoPhaseDraw, 3199). +-define(wxStyledTextCtrl_SetTwoPhaseDraw, 3200). +-define(wxStyledTextCtrl_TargetFromSelection, 3201). +-define(wxStyledTextCtrl_LinesJoin, 3202). +-define(wxStyledTextCtrl_LinesSplit, 3203). +-define(wxStyledTextCtrl_SetFoldMarginColour, 3204). +-define(wxStyledTextCtrl_SetFoldMarginHiColour, 3205). +-define(wxStyledTextCtrl_LineDown, 3206). +-define(wxStyledTextCtrl_LineDownExtend, 3207). +-define(wxStyledTextCtrl_LineUp, 3208). +-define(wxStyledTextCtrl_LineUpExtend, 3209). +-define(wxStyledTextCtrl_CharLeft, 3210). +-define(wxStyledTextCtrl_CharLeftExtend, 3211). +-define(wxStyledTextCtrl_CharRight, 3212). +-define(wxStyledTextCtrl_CharRightExtend, 3213). +-define(wxStyledTextCtrl_WordLeft, 3214). +-define(wxStyledTextCtrl_WordLeftExtend, 3215). +-define(wxStyledTextCtrl_WordRight, 3216). +-define(wxStyledTextCtrl_WordRightExtend, 3217). +-define(wxStyledTextCtrl_Home, 3218). +-define(wxStyledTextCtrl_HomeExtend, 3219). +-define(wxStyledTextCtrl_LineEnd, 3220). +-define(wxStyledTextCtrl_LineEndExtend, 3221). +-define(wxStyledTextCtrl_DocumentStart, 3222). +-define(wxStyledTextCtrl_DocumentStartExtend, 3223). +-define(wxStyledTextCtrl_DocumentEnd, 3224). +-define(wxStyledTextCtrl_DocumentEndExtend, 3225). +-define(wxStyledTextCtrl_PageUp, 3226). +-define(wxStyledTextCtrl_PageUpExtend, 3227). +-define(wxStyledTextCtrl_PageDown, 3228). +-define(wxStyledTextCtrl_PageDownExtend, 3229). +-define(wxStyledTextCtrl_EditToggleOvertype, 3230). +-define(wxStyledTextCtrl_Cancel, 3231). +-define(wxStyledTextCtrl_DeleteBack, 3232). +-define(wxStyledTextCtrl_Tab, 3233). +-define(wxStyledTextCtrl_BackTab, 3234). +-define(wxStyledTextCtrl_NewLine, 3235). +-define(wxStyledTextCtrl_FormFeed, 3236). +-define(wxStyledTextCtrl_VCHome, 3237). +-define(wxStyledTextCtrl_VCHomeExtend, 3238). +-define(wxStyledTextCtrl_ZoomIn, 3239). +-define(wxStyledTextCtrl_ZoomOut, 3240). +-define(wxStyledTextCtrl_DelWordLeft, 3241). +-define(wxStyledTextCtrl_DelWordRight, 3242). +-define(wxStyledTextCtrl_LineCut, 3243). +-define(wxStyledTextCtrl_LineDelete, 3244). +-define(wxStyledTextCtrl_LineTranspose, 3245). +-define(wxStyledTextCtrl_LineDuplicate, 3246). +-define(wxStyledTextCtrl_LowerCase, 3247). +-define(wxStyledTextCtrl_UpperCase, 3248). +-define(wxStyledTextCtrl_LineScrollDown, 3249). +-define(wxStyledTextCtrl_LineScrollUp, 3250). +-define(wxStyledTextCtrl_DeleteBackNotLine, 3251). +-define(wxStyledTextCtrl_HomeDisplay, 3252). +-define(wxStyledTextCtrl_HomeDisplayExtend, 3253). +-define(wxStyledTextCtrl_LineEndDisplay, 3254). +-define(wxStyledTextCtrl_LineEndDisplayExtend, 3255). +-define(wxStyledTextCtrl_HomeWrapExtend, 3256). +-define(wxStyledTextCtrl_LineEndWrap, 3257). +-define(wxStyledTextCtrl_LineEndWrapExtend, 3258). +-define(wxStyledTextCtrl_VCHomeWrap, 3259). +-define(wxStyledTextCtrl_VCHomeWrapExtend, 3260). +-define(wxStyledTextCtrl_LineCopy, 3261). +-define(wxStyledTextCtrl_MoveCaretInsideView, 3262). +-define(wxStyledTextCtrl_LineLength, 3263). +-define(wxStyledTextCtrl_BraceHighlight, 3264). +-define(wxStyledTextCtrl_BraceBadLight, 3265). +-define(wxStyledTextCtrl_BraceMatch, 3266). +-define(wxStyledTextCtrl_GetViewEOL, 3267). +-define(wxStyledTextCtrl_SetViewEOL, 3268). +-define(wxStyledTextCtrl_SetModEventMask, 3269). +-define(wxStyledTextCtrl_GetEdgeColumn, 3270). +-define(wxStyledTextCtrl_SetEdgeColumn, 3271). +-define(wxStyledTextCtrl_GetEdgeMode, 3272). +-define(wxStyledTextCtrl_GetEdgeColour, 3273). +-define(wxStyledTextCtrl_SetEdgeColour, 3274). +-define(wxStyledTextCtrl_SearchAnchor, 3275). +-define(wxStyledTextCtrl_SearchNext, 3276). +-define(wxStyledTextCtrl_SearchPrev, 3277). +-define(wxStyledTextCtrl_LinesOnScreen, 3278). +-define(wxStyledTextCtrl_UsePopUp, 3279). +-define(wxStyledTextCtrl_SelectionIsRectangle, 3280). +-define(wxStyledTextCtrl_SetZoom, 3281). +-define(wxStyledTextCtrl_GetZoom, 3282). +-define(wxStyledTextCtrl_GetModEventMask, 3283). +-define(wxStyledTextCtrl_SetSTCFocus, 3284). +-define(wxStyledTextCtrl_GetSTCFocus, 3285). +-define(wxStyledTextCtrl_SetStatus, 3286). +-define(wxStyledTextCtrl_GetStatus, 3287). +-define(wxStyledTextCtrl_SetMouseDownCaptures, 3288). +-define(wxStyledTextCtrl_GetMouseDownCaptures, 3289). +-define(wxStyledTextCtrl_SetSTCCursor, 3290). +-define(wxStyledTextCtrl_GetSTCCursor, 3291). +-define(wxStyledTextCtrl_SetControlCharSymbol, 3292). +-define(wxStyledTextCtrl_GetControlCharSymbol, 3293). +-define(wxStyledTextCtrl_WordPartLeft, 3294). +-define(wxStyledTextCtrl_WordPartLeftExtend, 3295). +-define(wxStyledTextCtrl_WordPartRight, 3296). +-define(wxStyledTextCtrl_WordPartRightExtend, 3297). +-define(wxStyledTextCtrl_SetVisiblePolicy, 3298). +-define(wxStyledTextCtrl_DelLineLeft, 3299). +-define(wxStyledTextCtrl_DelLineRight, 3300). +-define(wxStyledTextCtrl_GetXOffset, 3301). +-define(wxStyledTextCtrl_ChooseCaretX, 3302). +-define(wxStyledTextCtrl_SetXCaretPolicy, 3303). +-define(wxStyledTextCtrl_SetYCaretPolicy, 3304). +-define(wxStyledTextCtrl_GetPrintWrapMode, 3305). +-define(wxStyledTextCtrl_SetHotspotActiveForeground, 3306). +-define(wxStyledTextCtrl_SetHotspotActiveBackground, 3307). +-define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3308). +-define(wxStyledTextCtrl_SetHotspotSingleLine, 3309). +-define(wxStyledTextCtrl_ParaDownExtend, 3310). +-define(wxStyledTextCtrl_ParaUp, 3311). +-define(wxStyledTextCtrl_ParaUpExtend, 3312). +-define(wxStyledTextCtrl_PositionBefore, 3313). +-define(wxStyledTextCtrl_PositionAfter, 3314). +-define(wxStyledTextCtrl_CopyRange, 3315). +-define(wxStyledTextCtrl_CopyText, 3316). +-define(wxStyledTextCtrl_SetSelectionMode, 3317). +-define(wxStyledTextCtrl_GetSelectionMode, 3318). +-define(wxStyledTextCtrl_LineDownRectExtend, 3319). +-define(wxStyledTextCtrl_LineUpRectExtend, 3320). +-define(wxStyledTextCtrl_CharLeftRectExtend, 3321). +-define(wxStyledTextCtrl_CharRightRectExtend, 3322). +-define(wxStyledTextCtrl_HomeRectExtend, 3323). +-define(wxStyledTextCtrl_VCHomeRectExtend, 3324). +-define(wxStyledTextCtrl_LineEndRectExtend, 3325). +-define(wxStyledTextCtrl_PageUpRectExtend, 3326). +-define(wxStyledTextCtrl_PageDownRectExtend, 3327). +-define(wxStyledTextCtrl_StutteredPageUp, 3328). +-define(wxStyledTextCtrl_StutteredPageUpExtend, 3329). +-define(wxStyledTextCtrl_StutteredPageDown, 3330). +-define(wxStyledTextCtrl_StutteredPageDownExtend, 3331). +-define(wxStyledTextCtrl_WordLeftEnd, 3332). +-define(wxStyledTextCtrl_WordLeftEndExtend, 3333). +-define(wxStyledTextCtrl_WordRightEnd, 3334). +-define(wxStyledTextCtrl_WordRightEndExtend, 3335). +-define(wxStyledTextCtrl_SetWhitespaceChars, 3336). +-define(wxStyledTextCtrl_SetCharsDefault, 3337). +-define(wxStyledTextCtrl_AutoCompGetCurrent, 3338). +-define(wxStyledTextCtrl_Allocate, 3339). +-define(wxStyledTextCtrl_FindColumn, 3340). +-define(wxStyledTextCtrl_GetCaretSticky, 3341). +-define(wxStyledTextCtrl_SetCaretSticky, 3342). +-define(wxStyledTextCtrl_ToggleCaretSticky, 3343). +-define(wxStyledTextCtrl_SetPasteConvertEndings, 3344). +-define(wxStyledTextCtrl_GetPasteConvertEndings, 3345). +-define(wxStyledTextCtrl_SelectionDuplicate, 3346). +-define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3347). +-define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3348). +-define(wxStyledTextCtrl_StartRecord, 3349). +-define(wxStyledTextCtrl_StopRecord, 3350). +-define(wxStyledTextCtrl_SetLexer, 3351). +-define(wxStyledTextCtrl_GetLexer, 3352). +-define(wxStyledTextCtrl_Colourise, 3353). +-define(wxStyledTextCtrl_SetProperty, 3354). +-define(wxStyledTextCtrl_SetKeyWords, 3355). +-define(wxStyledTextCtrl_SetLexerLanguage, 3356). +-define(wxStyledTextCtrl_GetProperty, 3357). +-define(wxStyledTextCtrl_GetStyleBitsNeeded, 3358). +-define(wxStyledTextCtrl_GetCurrentLine, 3359). +-define(wxStyledTextCtrl_StyleSetSpec, 3360). +-define(wxStyledTextCtrl_StyleSetFont, 3361). +-define(wxStyledTextCtrl_StyleSetFontAttr, 3362). +-define(wxStyledTextCtrl_StyleSetCharacterSet, 3363). +-define(wxStyledTextCtrl_StyleSetFontEncoding, 3364). +-define(wxStyledTextCtrl_CmdKeyExecute, 3365). +-define(wxStyledTextCtrl_SetMargins, 3366). +-define(wxStyledTextCtrl_GetSelection, 3367). +-define(wxStyledTextCtrl_PointFromPosition, 3368). +-define(wxStyledTextCtrl_ScrollToLine, 3369). +-define(wxStyledTextCtrl_ScrollToColumn, 3370). +-define(wxStyledTextCtrl_SendMsg, 3371). +-define(wxStyledTextCtrl_SetVScrollBar, 3372). +-define(wxStyledTextCtrl_SetHScrollBar, 3373). +-define(wxStyledTextCtrl_GetLastKeydownProcessed, 3374). +-define(wxStyledTextCtrl_SetLastKeydownProcessed, 3375). +-define(wxStyledTextCtrl_SaveFile, 3376). +-define(wxStyledTextCtrl_LoadFile, 3377). +-define(wxStyledTextCtrl_DoDragOver, 3378). +-define(wxStyledTextCtrl_DoDropText, 3379). +-define(wxStyledTextCtrl_GetUseAntiAliasing, 3380). +-define(wxStyledTextCtrl_AddTextRaw, 3381). +-define(wxStyledTextCtrl_InsertTextRaw, 3382). +-define(wxStyledTextCtrl_GetCurLineRaw, 3383). +-define(wxStyledTextCtrl_GetLineRaw, 3384). +-define(wxStyledTextCtrl_GetSelectedTextRaw, 3385). +-define(wxStyledTextCtrl_GetTextRangeRaw, 3386). +-define(wxStyledTextCtrl_SetTextRaw, 3387). +-define(wxStyledTextCtrl_GetTextRaw, 3388). +-define(wxStyledTextCtrl_AppendTextRaw, 3389). +-define(wxArtProvider_GetBitmap, 3390). +-define(wxArtProvider_GetIcon, 3391). +-define(wxTreeEvent_GetKeyCode, 3392). +-define(wxTreeEvent_GetItem, 3393). +-define(wxTreeEvent_GetKeyEvent, 3394). +-define(wxTreeEvent_GetLabel, 3395). +-define(wxTreeEvent_GetOldItem, 3396). +-define(wxTreeEvent_GetPoint, 3397). +-define(wxTreeEvent_IsEditCancelled, 3398). +-define(wxTreeEvent_SetToolTip, 3399). +-define(wxNotebookEvent_GetOldSelection, 3400). +-define(wxNotebookEvent_GetSelection, 3401). +-define(wxNotebookEvent_SetOldSelection, 3402). +-define(wxNotebookEvent_SetSelection, 3403). +-define(wxFileDataObject_new, 3404). +-define(wxFileDataObject_AddFile, 3405). +-define(wxFileDataObject_GetFilenames, 3406). +-define(wxFileDataObject_destroy, 3407). +-define(wxTextDataObject_new, 3408). +-define(wxTextDataObject_GetTextLength, 3409). +-define(wxTextDataObject_GetText, 3410). +-define(wxTextDataObject_SetText, 3411). +-define(wxTextDataObject_destroy, 3412). +-define(wxBitmapDataObject_new_1_1, 3413). +-define(wxBitmapDataObject_new_1_0, 3414). +-define(wxBitmapDataObject_GetBitmap, 3415). +-define(wxBitmapDataObject_SetBitmap, 3416). +-define(wxBitmapDataObject_destroy, 3417). +-define(wxClipboard_new, 3419). +-define(wxClipboard_destruct, 3420). +-define(wxClipboard_AddData, 3421). +-define(wxClipboard_Clear, 3422). +-define(wxClipboard_Close, 3423). +-define(wxClipboard_Flush, 3424). +-define(wxClipboard_GetData, 3425). +-define(wxClipboard_IsOpened, 3426). +-define(wxClipboard_Open, 3427). +-define(wxClipboard_SetData, 3428). +-define(wxClipboard_UsePrimarySelection, 3430). +-define(wxClipboard_IsSupported, 3431). +-define(wxClipboard_Get, 3432). +-define(wxSpinEvent_GetPosition, 3433). +-define(wxSpinEvent_SetPosition, 3434). +-define(wxSplitterWindow_new_0, 3435). +-define(wxSplitterWindow_new_2, 3436). +-define(wxSplitterWindow_destruct, 3437). +-define(wxSplitterWindow_Create, 3438). +-define(wxSplitterWindow_GetMinimumPaneSize, 3439). +-define(wxSplitterWindow_GetSashGravity, 3440). +-define(wxSplitterWindow_GetSashPosition, 3441). +-define(wxSplitterWindow_GetSplitMode, 3442). +-define(wxSplitterWindow_GetWindow1, 3443). +-define(wxSplitterWindow_GetWindow2, 3444). +-define(wxSplitterWindow_Initialize, 3445). +-define(wxSplitterWindow_IsSplit, 3446). +-define(wxSplitterWindow_ReplaceWindow, 3447). +-define(wxSplitterWindow_SetSashGravity, 3448). +-define(wxSplitterWindow_SetSashPosition, 3449). +-define(wxSplitterWindow_SetSashSize, 3450). +-define(wxSplitterWindow_SetMinimumPaneSize, 3451). +-define(wxSplitterWindow_SetSplitMode, 3452). +-define(wxSplitterWindow_SplitHorizontally, 3453). +-define(wxSplitterWindow_SplitVertically, 3454). +-define(wxSplitterWindow_Unsplit, 3455). +-define(wxSplitterWindow_UpdateSize, 3456). +-define(wxSplitterEvent_GetSashPosition, 3457). +-define(wxSplitterEvent_GetX, 3458). +-define(wxSplitterEvent_GetY, 3459). +-define(wxSplitterEvent_GetWindowBeingRemoved, 3460). +-define(wxSplitterEvent_SetSashPosition, 3461). +-define(wxHtmlWindow_new_0, 3462). +-define(wxHtmlWindow_new_2, 3463). +-define(wxHtmlWindow_AppendToPage, 3464). +-define(wxHtmlWindow_GetOpenedAnchor, 3465). +-define(wxHtmlWindow_GetOpenedPage, 3466). +-define(wxHtmlWindow_GetOpenedPageTitle, 3467). +-define(wxHtmlWindow_GetRelatedFrame, 3468). +-define(wxHtmlWindow_HistoryBack, 3469). +-define(wxHtmlWindow_HistoryCanBack, 3470). +-define(wxHtmlWindow_HistoryCanForward, 3471). +-define(wxHtmlWindow_HistoryClear, 3472). +-define(wxHtmlWindow_HistoryForward, 3473). +-define(wxHtmlWindow_LoadFile, 3474). +-define(wxHtmlWindow_LoadPage, 3475). +-define(wxHtmlWindow_SelectAll, 3476). +-define(wxHtmlWindow_SelectionToText, 3477). +-define(wxHtmlWindow_SelectLine, 3478). +-define(wxHtmlWindow_SelectWord, 3479). +-define(wxHtmlWindow_SetBorders, 3480). +-define(wxHtmlWindow_SetFonts, 3481). +-define(wxHtmlWindow_SetPage, 3482). +-define(wxHtmlWindow_SetRelatedFrame, 3483). +-define(wxHtmlWindow_SetRelatedStatusBar, 3484). +-define(wxHtmlWindow_ToText, 3485). +-define(wxHtmlWindow_destroy, 3486). +-define(wxHtmlLinkEvent_GetLinkInfo, 3487). +-define(wxSystemSettings_GetColour, 3488). +-define(wxSystemSettings_GetFont, 3489). +-define(wxSystemSettings_GetMetric, 3490). +-define(wxSystemSettings_GetScreenType, 3491). +-define(wxAuiNotebookEvent_SetSelection, 3492). +-define(wxAuiNotebookEvent_GetSelection, 3493). +-define(wxAuiNotebookEvent_SetOldSelection, 3494). +-define(wxAuiNotebookEvent_GetOldSelection, 3495). +-define(wxAuiNotebookEvent_SetDragSource, 3496). +-define(wxAuiNotebookEvent_GetDragSource, 3497). +-define(wxAuiManagerEvent_SetManager, 3498). +-define(wxAuiManagerEvent_GetManager, 3499). +-define(wxAuiManagerEvent_SetPane, 3500). +-define(wxAuiManagerEvent_GetPane, 3501). +-define(wxAuiManagerEvent_SetButton, 3502). +-define(wxAuiManagerEvent_GetButton, 3503). +-define(wxAuiManagerEvent_SetDC, 3504). +-define(wxAuiManagerEvent_GetDC, 3505). +-define(wxAuiManagerEvent_Veto, 3506). +-define(wxAuiManagerEvent_GetVeto, 3507). +-define(wxAuiManagerEvent_SetCanVeto, 3508). +-define(wxAuiManagerEvent_CanVeto, 3509). +-define(wxLogNull_new, 3510). +-define(wxLogNull_destroy, 3511). diff --git a/lib/wx/src/wxe_server.erl b/lib/wx/src/wxe_server.erl index 40412987a5..69e2189fac 100644 --- a/lib/wx/src/wxe_server.erl +++ b/lib/wx/src/wxe_server.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %%%------------------------------------------------------------------- %%% File : wxe_server.erl @@ -24,7 +24,7 @@ %%% Created : 17 Jan 2007 by Dan Gudmundsson <[email protected]> %%%------------------------------------------------------------------- -%% @hidden +%% @hidden -module(wxe_server). -behaviour(gen_server). @@ -65,7 +65,7 @@ start() -> end; Env = #wx_env{sv=Pid} -> case erlang:is_process_alive(Pid) of - true -> + true -> Env; false -> %% Ok we got an old wx env, someone forgot erase(?WXE_IDENTIFIER), %% to call wx:destroy() @@ -94,7 +94,7 @@ init([]) -> {ok,#state{port=Port, cb_port=CBPort, users=gb_trees:empty(), cb=gb_trees:empty(), cb_cnt=1}}. -%% Register process +%% Register process handle_call(register_me, {From,_}, State=#state{users=Users}) -> erlang:monitor(process, From), case gb_trees:is_defined(From, Users) of @@ -147,7 +147,7 @@ handle_cast({debug, Level}, State) -> put(?WXE_IDENTIFIER, Env#wx_env{debug=Level}), {noreply, State}; -handle_cast(_Msg, State) -> +handle_cast(_Msg, State) -> ?log("Unknown message ~p sent to ~p~n",[_Msg, ?MODULE]), {noreply, State}. @@ -156,7 +156,7 @@ handle_cast(_Msg, State) -> %% Callback request from driver handle_info(Cb = {_, _, '_wx_invoke_cb_'}, State) -> invoke_cb(Cb, State), - {noreply, State}; + {noreply, State}; handle_info({wx_delete_cb, FunId}, State0 = #state{cb=CB}) when is_integer(FunId) -> case get(FunId) of undefined -> @@ -166,7 +166,7 @@ handle_info({wx_delete_cb, FunId}, State0 = #state{cb=CB}) when is_integer(FunId {noreply, State0#state{cb=gb_trees:delete(Fun, CB)}} end; handle_info({'DOWN',_,process,Pid,_}, State=#state{users=Users0,cleaners=Cs}) -> - try + try User = gb_trees:get(Pid,Users0), Users = gb_trees:delete(Pid,Users0), Env = wx:get_env(), @@ -210,7 +210,7 @@ handle_connect(Object, EvData, From, State0 = #state{users=Users}) -> case Handler0 of #wx_ref{} when Callback =:= 0 -> CBHandler = Handler0, - Handler = Handler0; + Handler = Handler0; undefined when Callback =:= 0 -> Handler = new_evt_listener(State0), CBHandler = Handler; @@ -225,7 +225,7 @@ handle_connect(Object, EvData, From, State0 = #state{users=Users}) -> {FunId, State} = attach_fun(Callback,State1), Res = wxEvtHandler:connect_impl(CBHandler,Object, wxEvtHandler:replace_fun_with_id(EvData,FunId)), - case Res of + case Res of ok -> {reply,Res,State}; _Error -> {reply,Res,State0} end; @@ -238,11 +238,7 @@ invoke_cb({{Ev=#wx{}, Ref=#wx_ref{}}, FunId,_}, _S) -> %% Event callbacks case get(FunId) of Fun when is_function(Fun) -> - invoke_callback(fun() -> - wxe_util:cast(?WXE_CB_START, <<>>), - Fun(Ev, Ref), - <<>> - end); + invoke_callback(fun() -> Fun(Ev, Ref), <<>> end); Err -> ?log("Internal Error ~p~n",[Err]) end; @@ -254,12 +250,14 @@ invoke_cb({FunId, Args, _}, _S) when is_list(Args), is_integer(FunId) -> Err -> ?log("Internal Error ~p ~p ~p~n",[Err, FunId, Args]) end. - + invoke_callback(Fun) -> Env = get(?WXE_IDENTIFIER), CB = fun() -> wx:set_env(Env), - Res = try Return = Fun(), + wxe_util:cast(?WXE_CB_START, <<>>), + Res = try + Return = Fun(), true = is_binary(Return), Return catch _:Reason -> @@ -278,9 +276,9 @@ new_evt_listener(State) -> get_result(State). get_result(_State) -> - receive + receive {'_wxe_result_', Res} -> Res; - {'_wxe_error_', Op, Error} -> + {'_wxe_error_', Op, Error} -> erlang:error({Error, {wxEvtHandler, {internal_installer, Op}}}) end. @@ -289,7 +287,7 @@ attach_fun(Fun, S = #state{cb=CB,cb_cnt=Next}) -> {value, ID} -> {ID,S}; none -> - put(Next,Fun), + put(Next,Fun), {Next,S#state{cb=gb_trees:insert(Fun,Next,CB),cb_cnt=Next+1}} end. @@ -297,7 +295,7 @@ handle_disconnect(Object, Evh, From, State0 = #state{users=Users0}) -> User0 = #user{events=Evs0, evt_handler=PidH} = gb_trees:get(From, Users0), Fun = wxEvtHandler:get_callback(Evh), case find_handler(Evs0, Object, Fun) of - [] -> + [] -> {reply, false, State0}; Handlers -> case disconnect(Object,Evh, Handlers) of @@ -310,7 +308,7 @@ handle_disconnect(Object, Evh, From, State0 = #state{users=Users0}) -> [] when PidH =/= undefined -> wxEvtHandler:destroy_evt_listener(PidH), User0#user{events=[], evt_handler=undefined}; - Evs -> + Evs -> User0#user{events=Evs} end, {reply, true, State0#state{users=gb_trees:update(From,User,Users0)}}; @@ -345,7 +343,7 @@ find_handler([],_Object,_Fun,Res) -> %% Cleanup -%% The server handles callbacks from driver so every other wx call must +%% The server handles callbacks from driver so every other wx call must %% be called from another process, therefore the cleaning must be spawned. %% cleanup(Env, _Pid, Data) -> @@ -358,7 +356,7 @@ cleanup(#user{objects=_Os,events=Evs, evt_handler=Handler}) -> lists:foreach(fun(#event{object=_O, callback=CB, cb_handler=CbH}) -> %%catch wxEvtHandler:disconnect_impl(CbH,O), case is_function(CB) of - true -> + true -> wxEvtHandler:destroy_evt_listener(CbH); false -> ignore diff --git a/lib/wx/test/wx_class_SUITE.erl b/lib/wx/test/wx_class_SUITE.erl index 79e6833e9b..b75b0cc74e 100644 --- a/lib/wx/test/wx_class_SUITE.erl +++ b/lib/wx/test/wx_class_SUITE.erl @@ -18,14 +18,14 @@ %%%------------------------------------------------------------------- %%% File : wx_class_SUITE.erl %%% Author : Dan Gudmundsson <[email protected]> -%%% Description : +%%% Description : %%% %%% Created : 13 Nov 2008 by Dan Gudmundsson <[email protected]> %%%------------------------------------------------------------------- -module(wx_class_SUITE). --export([all/0, suite/0,groups/0,init_per_group/2,end_per_group/2, - init_per_suite/1, end_per_suite/1, +-export([all/0, suite/0,groups/0,init_per_group/2,end_per_group/2, + init_per_suite/1, end_per_suite/1, init_per_testcase/2, end_per_testcase/2]). -compile(export_all). @@ -41,18 +41,18 @@ end_per_suite(Config) -> init_per_testcase(Func,Config) -> wx_test_lib:init_per_testcase(Func,Config). -end_per_testcase(Func,Config) -> +end_per_testcase(Func,Config) -> wx_test_lib:end_per_testcase(Func,Config). %% SUITE specification suite() -> [{ct_hooks,[ts_install_cth]}]. -all() -> +all() -> [calendarCtrl, treeCtrl, notebook, staticBoxSizer, - clipboard, helpFrame, htmlWindow, listCtrlSort, + clipboard, helpFrame, htmlWindow, listCtrlSort, listCtrlVirtual, radioBox, systemSettings]. -groups() -> +groups() -> []. init_per_group(_GroupName, Config) -> @@ -70,9 +70,9 @@ calendarCtrl(Config) -> Frame = ?mt(wxFrame, wxFrame:new(Wx, 1, "Calendar", [])), Panel = wxPanel:new(Frame), Sz = wxBoxSizer:new(?wxVERTICAL), - + {YMD={_,_,Day},_} = DateTime = calendar:now_to_datetime(erlang:now()), - Cal = ?mt(wxCalendarCtrl, wxCalendarCtrl:new(Panel, ?wxID_ANY, + Cal = ?mt(wxCalendarCtrl, wxCalendarCtrl:new(Panel, ?wxID_ANY, [{date,DateTime} ])), wxSizer:add(Sz,Cal), @@ -91,25 +91,25 @@ calendarCtrl(Config) -> ?m({0,243,0,255}, wxCalendarDateAttr:getBackgroundColour(DateAttr1)), ?m({YMD, _},wxCalendarCtrl:getDate(Cal)), - - wxCalendarCtrl:connect(Cal, calendar_weekday_clicked), - wxCalendarCtrl:connect(Cal, calendar_day_changed), - wxCalendarCtrl:connect(Cal, calendar_month_changed), + + wxCalendarCtrl:connect(Cal, calendar_weekday_clicked), + wxCalendarCtrl:connect(Cal, calendar_day_changed), + wxCalendarCtrl:connect(Cal, calendar_month_changed), wxCalendarCtrl:connect(Cal, calendar_year_changed), - wxCalendarCtrl:connect(Cal, calendar_doubleclicked), + wxCalendarCtrl:connect(Cal, calendar_doubleclicked), wxCalendarCtrl:connect(Cal, calendar_sel_changed), - + wxWindow:setSizer(Panel,Sz), wxSizer:setSizeHints(Sz,Frame), - wxWindow:show(Frame), - + wxWindow:show(Frame), + wx_test_lib:wx_destroy(Frame,Config). treeCtrl(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo); treeCtrl(Config) -> Wx = wx:new(), - + Frame = wxFrame:new(Wx, ?wxID_ANY, "Frame"), Panel = wxPanel:new(Frame, []), Tree = ?mt(wxTreeCtrl,wxTreeCtrl:new(Panel, [{style , ?wxTR_HAS_BUTTONS}])), @@ -122,25 +122,25 @@ treeCtrl(Config) -> ?m(ok, wxTreeCtrl:setItemData(Tree, Item2, {data, item2})), Item3 = wxTreeCtrl:appendItem(Tree, Root, "Item3", []), ?m(ok, wxTreeCtrl:setItemData(Tree, Item3, {data, item3})), - + Sizer = wxBoxSizer:new(?wxVERTICAL), wxSizer:add(Sizer, Tree, [{flag, ?wxEXPAND}, {proportion, 1}]), wxWindow:setSizerAndFit(Panel, Sizer), wxFrame:show(Frame), - + ?m([], wxTreeCtrl:getItemData(Tree, Root)), ?m({data,item1}, wxTreeCtrl:getItemData(Tree, Item1)), ?m({data,item2}, wxTreeCtrl:getItemData(Tree, Item2)), ?m({data,item3}, wxTreeCtrl:getItemData(Tree, Item3)), - + wxFrame:connect(Tree, command_tree_item_expanded), wxFrame:connect(Tree, command_tree_item_collapsed), wxFrame:connect(Frame, close_window), wxTreeCtrl:editLabel(Tree, Root), - + wx_test_lib:wx_destroy(Frame,Config). notebook(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo); @@ -210,13 +210,13 @@ staticBoxSizer(Config) -> Frame = wxFrame:new(Wx, ?wxID_ANY, "Frame"), Panel = wxPanel:new(Frame, []), InclSizer = ?mt(wxStaticBoxSizer, - wxStaticBoxSizer:new(?wxVERTICAL, Panel, + wxStaticBoxSizer:new(?wxVERTICAL, Panel, [{label, "Module inclusion policy"}])), Sizer = wxBoxSizer:new(?wxVERTICAL), wxSizer:add(Sizer, InclSizer, [{border, 2}, {flag, ?wxALL bor ?wxEXPAND}, {proportion, 1}]), - wxWindow:setSizerAndFit(Panel, Sizer), - + wxWindow:setSizerAndFit(Panel, Sizer), + wxWindow:show(Frame), wx_test_lib:wx_destroy(Frame,Config). @@ -263,13 +263,13 @@ clipboard(_Config) -> wxClipboard:flush(CB), ?log("Stopping ~n",[]), ok. - + helpFrame(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo); helpFrame(Config) -> Wx = wx:new(), MFrame = wx:batch(fun() -> MFrame = wxFrame:new(Wx, ?wxID_ANY, "Main Frame"), - wxPanel:new(MFrame, [{size, {600,400}}]), + wxPanel:new(MFrame, [{size, {600,400}}]), wxWindow:show(MFrame), MFrame end), @@ -279,11 +279,11 @@ helpFrame(Config) -> {X, Y, W,H} = wxWindow:getScreenRect(MFrame), io:format("Pos0: ~p ~p ~p Pos: ~p:~p Size: ~p:~p ~n", [X0,Y0, wxWindow:clientToScreen(MFrame, {0,0}), X,Y,W,H]), - + Pos = {X+5, Y+(H div 2)}, Size = {W-10, (H div 2) - 5}, - Comp = wxFrame:new(MFrame, ?wxID_ANY, "Completion Window", + Comp = wxFrame:new(MFrame, ?wxID_ANY, "Completion Window", [{pos, Pos}, {size, Size}, {style, ?wxFRAME_FLOAT_ON_PARENT}]), LB = wxListBox:new(Comp, 42, [{style, ?wxLB_SINGLE}, @@ -301,7 +301,7 @@ htmlWindow(Config) -> {MFrame,HPanel} = wx:batch(fun() -> MFrame = wxFrame:new(Wx, ?wxID_ANY, "Main Frame"), - HPanel = wxHtmlWindow:new(MFrame, [{size, {600,400}}]), + HPanel = wxHtmlWindow:new(MFrame, [{size, {600,400}}]), wxWindow:show(MFrame), {MFrame, HPanel} end), @@ -310,7 +310,7 @@ htmlWindow(Config) -> WxMod = code:which(wx), WxDir = filename:split(filename:dirname(WxMod)) -- ["ebin"], Html = filename:join(filename:join(WxDir),filename:join("doc", "html")), - + Index = filename:join(Html, "wx.html"), ?m(ok, wxHtmlWindow:connect(HPanel, command_html_link_clicked, @@ -318,7 +318,7 @@ htmlWindow(Config) -> fun(Ev,_) -> io:format("Link clicked: ~p~n",[Ev]) end}])), - + case filelib:is_file(Index) of true -> ?m(true, wxHtmlWindow:loadFile(HPanel, Index)), @@ -326,7 +326,7 @@ htmlWindow(Config) -> false -> ok end, - + wx_test_lib:wx_destroy(MFrame,Config). @@ -334,18 +334,18 @@ listCtrlSort(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo); listCtrlSort(Config) -> Wx = wx:new(), Frame = wxFrame:new(Wx, ?wxID_ANY, "Frame"), - + LC = wxListCtrl:new(Frame, [{style, ?wxLC_REPORT bor ?wxLC_SORT_ASCENDING}]), %% must be done crashes in wxwidgets otherwise. wxListCtrl:insertColumn(LC, 0, "Column"), - - Add = fun(Int) -> + + Add = fun(Int) -> wxListCtrl:insertItem(LC, Int, integer_to_list(Int)), %% ItemData Can only be integers currently wxListCtrl:setItemData(LC, Int, abs(2500-Int)) end, - + wx:foreach(Add, lists:seq(0,5000)), wxWindow:show(Frame), @@ -360,10 +360,10 @@ listCtrlSort(Config) -> end end) end, - + Time = timer:tc(erlang, apply, [Sort,[]]), io:format("Sorted ~p ~n",[Time]), - + Item = wxListItem:new(), _List = wx:map(fun(Int) -> wxListItem:setId(Item, Int), @@ -374,6 +374,48 @@ listCtrlSort(Config) -> wx_test_lib:wx_destroy(Frame,Config). +listCtrlVirtual(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo); +listCtrlVirtual(Config) -> + Wx = wx:new(), + Frame = wxFrame:new(Wx, ?wxID_ANY, "Frame"), + IA = wxListItemAttr:new(), + wxListItemAttr:setTextColour(IA, {190, 25, 25}), + LC = wxListCtrl:new(Frame, + [{style, ?wxLC_REPORT bor ?wxLC_VIRTUAL}, + {onGetItemText, fun(_This, Item, 0) -> + "Row " ++ integer_to_list(Item); + (_, Item, 1) when Item rem 5 == 0 -> + "Column 2"; + (_, _, _) -> "" + end}, + {onGetItemAttr, fun(_This, Item) when Item rem 3 == 0 -> + IA; + (_This, _Item) -> + wx:typeCast(wx:null(), wxListItemAttr) + end}, + {onGetItemColumnImage, fun(_This, Item, 1) -> + Item rem 4; + (_, _, _) -> + -1 + end} + ]), + + IL = wxImageList:new(16,16), + wxImageList:add(IL, wxArtProvider:getBitmap("wxART_COPY", [{size, {16,16}}])), + wxImageList:add(IL, wxArtProvider:getBitmap("wxART_MISSING_IMAGE", [{size, {16,16}}])), + wxImageList:add(IL, wxArtProvider:getBitmap("wxART_TICK_MARK", [{size, {16,16}}])), + wxImageList:add(IL, wxArtProvider:getBitmap("wxART_CROSS_MARK", [{size, {16,16}}])), + wxListCtrl:assignImageList(LC, IL, ?wxIMAGE_LIST_SMALL), + + wxListCtrl:insertColumn(LC, 0, "Column 1"), + wxListCtrl:insertColumn(LC, 1, "Column 2"), + wxListCtrl:setColumnWidth(LC, 0, 200), + wxListCtrl:setColumnWidth(LC, 1, 200), + wxListCtrl:setItemCount(LC, 1000000), + + wxWindow:show(Frame), + wx_test_lib:wx_destroy(Frame,Config). + radioBox(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo); radioBox(Config) -> @@ -382,7 +424,7 @@ radioBox(Config) -> TrSortRadioBox = wxRadioBox:new(Frame, ?wxID_ANY, "Sort by:", {100, 100},{100, 100}, ["Timestamp"]), - + io:format("TrSortRadioBox ~p ~n", [TrSortRadioBox]), %% If I uncomment any of these lines, it will crash @@ -398,7 +440,7 @@ systemSettings(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo) systemSettings(Config) -> Wx = wx:new(), Frame = wxFrame:new(Wx, ?wxID_ANY, "Frame"), - + ?m({_,_,_,_}, wxSystemSettings:getColour(?wxSYS_COLOUR_DESKTOP)), ?mt(wxFont, wxSystemSettings:getFont(?wxSYS_SYSTEM_FONT)), ?m(true, is_integer(wxSystemSettings:getMetric(?wxSYS_MOUSE_BUTTONS))), @@ -406,3 +448,25 @@ systemSettings(Config) -> wxWindow:show(Frame), wx_test_lib:wx_destroy(Frame,Config). + + +textCtrl(TestInfo) when is_atom(TestInfo) -> wx_test_lib:tc_info(TestInfo); +textCtrl(Config) -> + Wx = wx:new(), + Frame = wxFrame:new(Wx, ?wxID_ANY, "Frame"), + + TC = ?mt(wxTextCtrl, wxTextCtrl:new(Frame, ?wxID_ANY, [{style, ?wxTE_MULTILINE bor ?wxTE_RICH2}])), + wxTextCtrl:appendText(TC, "This line is in default color\n"), + Attr = ?mt(wxTextAttr, wxTextAttr:new(?wxRED)), + wxTextCtrl:setDefaultStyle(TC, Attr), + wxTextCtrl:appendText(TC, "This line is in ?wxRED color\n"), + wxTextAttr:setTextColour(Attr, ?wxBLACK), + wxTextCtrl:setDefaultStyle(TC, Attr), + wxTextCtrl:appendText(TC, "This line is in ?wxBLACK color\n"), + Default = wxSystemSettings:getColour(?wxSYS_COLOUR_WINDOWTEXT), + wxTextAttr:setTextColour(Attr, Default), + wxTextCtrl:setDefaultStyle(TC, Attr), + wxTextCtrl:appendText(TC, "This line is in default color\n"), + wxTextAttr:destroy(Attr), + wxWindow:show(Frame), + wx_test_lib:wx_destroy(Frame,Config). diff --git a/lib/xmerl/src/xmerl_scan.erl b/lib/xmerl/src/xmerl_scan.erl index e598c5f56d..25c6547497 100644 --- a/lib/xmerl/src/xmerl_scan.erl +++ b/lib/xmerl/src/xmerl_scan.erl @@ -2074,10 +2074,10 @@ scan_element(T, S, Pos, Name, StartL, StartC, Attrs, Lang, Parents, {AttName, NamespaceInfo, T1, S1} = scan_name(T, S), {T2, S2} = scan_eq(T1, S1), {AttType,_DefaultDecl} = get_att_type(S2,AttName,Name), - {AttValue, T3, S3,IsNorm} = scan_att_value(T2, S2, AttType), + {AttValue, T3a, S3a,IsNorm} = scan_att_value(T2, S2, AttType), %% check_default_value(S3,DefaultDecl,AttValue), NewNS = check_namespace(AttName, NamespaceInfo, AttValue, NS), - wfc_whitespace_betw_attrs(hd(T3),S3), + {T3,S3} = wfc_whitespace_betw_attrs(T3a,S3a), ?strip4, AttrPos = case Attrs of [] -> @@ -3284,12 +3284,17 @@ wfc_legal_char(Ch,S) -> end. -wfc_whitespace_betw_attrs(WS,_S) when ?whitespace(WS) -> - ok; -wfc_whitespace_betw_attrs($/,_S) -> - ok; -wfc_whitespace_betw_attrs($>,_S) -> - ok; +wfc_whitespace_betw_attrs([WS |_]=L,S) when ?whitespace(WS) -> + {L,S}; +wfc_whitespace_betw_attrs([$/ |_]=L,S) -> + {L,S}; +wfc_whitespace_betw_attrs([$> |_]=L,S) -> + {L,S}; +wfc_whitespace_betw_attrs([],S=#xmerl_scanner{continuation_fun = F}) -> + ?dbg("cont()...~n", []), + F(fun(MoreBytes, S1) -> wfc_whitespace_betw_attrs(MoreBytes, S1) end, + fun(S1) -> ?fatal(unexpected_end, S1) end, + S); wfc_whitespace_betw_attrs(_,S) -> ?fatal({whitespace_required_between_attributes},S). diff --git a/lib/xmerl/src/xmerl_ucs.erl b/lib/xmerl/src/xmerl_ucs.erl index 7c45c838ab..feb16070a0 100644 --- a/lib/xmerl/src/xmerl_ucs.erl +++ b/lib/xmerl/src/xmerl_ucs.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% +%% %% Copyright Ericsson AB 2005-2009. All Rights Reserved. -%% +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %% @@ -43,6 +43,7 @@ -export([to_utf16be/1, from_utf16be/1, from_utf16be/2]). -export([to_utf16le/1, from_utf16le/1, from_utf16le/2]). -export([to_utf8/1, from_utf8/1]). +-export([from_latin9/1]). %%% NB: Non-canonical UTF-8 encodings and incorrectly used %%% surrogate-pair codes are disallowed by this code. There are @@ -177,13 +178,27 @@ to_utf8(List) when is_list(List) -> lists:flatmap(fun to_utf8/1, List); to_utf8(Ch) -> char_to_utf8(Ch). from_utf8(Bin) when is_binary(Bin) -> from_utf8(binary_to_list(Bin)); -from_utf8(List) -> +from_utf8(List) -> case expand_utf8(List) of {Result,0} -> Result; {_Res,_NumBadChar} -> exit({ucs,{bad_utf8_character_code}}) end. +%%% Latin9 support +from_latin9(Bin) when is_binary(Bin) -> from_latin9(binary_to_list(Bin)); +from_latin9(List) -> + [ latin9_to_ucs4(Char) || Char <- List]. + +latin9_to_ucs4(16#A4) -> 16#20AC; +latin9_to_ucs4(16#A6) -> 16#160; +latin9_to_ucs4(16#A8) -> 16#161; +latin9_to_ucs4(16#B4) -> 16#17D; +latin9_to_ucs4(16#B8) -> 16#17E; +latin9_to_ucs4(16#BC) -> 16#152; +latin9_to_ucs4(16#BD) -> 16#153; +latin9_to_ucs4(16#BE) -> 16#178; +latin9_to_ucs4(Other) -> Other. @@ -238,7 +253,7 @@ from_ucs4le(Bin,Acc,Tail) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% UCS-2 support -%%% FIXME! Don't know how to encode UCS-2!! +%%% FIXME! Don't know how to encode UCS-2!! %%% Currently I just encode as UCS-4, but strips the 16 higher bits. char_to_ucs2be(Ch) -> true = is_iso10646(Ch), @@ -259,15 +274,15 @@ from_ucs2be(Bin,Acc,Tail) -> char_to_ucs2le(Ch) -> true = is_iso10646(Ch), - [(Ch bsr 16) band 16#FF, - (Ch bsr 24)]. + [Ch band 16#FF, + (Ch bsr 8) band 16#FF]. from_ucs2le(<<Ch:16/little-signed-integer, Rest/binary>>,Acc,Tail) -> if Ch < 0; Ch >= 16#D800, Ch < 16#E000; Ch =:= 16#FFFE; Ch =:= 16#FFFF -> exit({bad_character_code,Ch}); true -> - from_ucs4le(Rest,[Ch|Acc],Tail) + from_ucs2le(Rest,[Ch|Acc],Tail) end; from_ucs2le(<<>>,Acc,Tail) -> lists:reverse(Acc,Tail); @@ -476,6 +491,8 @@ to_unicode(Input,Cs) when Cs=='iso_8859-1:1987';Cs=='iso-ir-100'; Cs=='l1';Cs=='ibm819'; Cs=='cp819';Cs=='csisolatin1' -> Input; +to_unicode(Input,Cs) when Cs=='iso_8859-15';Cs=='iso-8859-15';Cs=='latin9' -> + from_latin9(Input); % to_unicode(Input,Cs) when Cs=='mnemonic';Cs=='"mnemonic+ascii+38'; % Cs=='mnem';Cs=='"mnemonic+ascii+8200' -> % from_mnemonic(Input); diff --git a/lib/xmerl/src/xmerl_xsd.erl b/lib/xmerl/src/xmerl_xsd.erl index f003cc74ba..dfdc6138ef 100644 --- a/lib/xmerl/src/xmerl_xsd.erl +++ b/lib/xmerl/src/xmerl_xsd.erl @@ -355,9 +355,9 @@ initiate_state(Opts,Schema) -> XSDBase = filename:dirname(Schema), {{state,S},RestOpts}=new_state(Opts), S2 = create_tables(S), - S3 = initiate_state2(S2#xsd_state{schema_name = Schema, xsd_base=XSDBase, - fetch_fun = fun fetch/2}, - RestOpts). + initiate_state2(S2#xsd_state{schema_name = Schema, xsd_base=XSDBase, + fetch_fun = fun fetch/2}, + RestOpts). initiate_state2(S,[]) -> S; @@ -742,7 +742,7 @@ element_content({IDC,S},El,Env) {{IDC,IDConstr},S3}; Err -> S3 = acc_errs(S2,{error_path(El,El#xmlElement.name),?MODULE, - {erronous_content_in_identity_constraint,IDC,Err}}), + {erroneous_content_in_identity_constraint,IDC,Err}}), {{IDC,[]},S3} end; element_content({selector,S},Sel,_Env) -> @@ -5571,7 +5571,7 @@ format_error({incomplete_file,_FileName,_Other}) -> "Schema: The file containing a schema state must be produced by xmerl_xsd:state2file/[1,2]."; format_error({unexpected_content_in_any,A}) -> io_lib:format("Schema: The any type is considered to have no content besides annotation. ~p was found.",[A]); -format_error({erronous_content_in_identity_constraint,IDC,Err}) -> +format_error({erroneous_content_in_identity_constraint,IDC,Err}) -> io_lib:format("Schema: An ~p identity constraint must have one selector and one or more field in content. This case ~p",[IDC,Err]); format_error({missing_xpath_attribute,IDCContent}) -> io_lib:format("Schema: A ~p in a identity constraint must have a xpath attribute.",[IDCContent]); diff --git a/lib/xmerl/test/xmerl_SUITE.erl b/lib/xmerl/test/xmerl_SUITE.erl index 0c809dbcb6..94c38d4d48 100644 --- a/lib/xmerl/test/xmerl_SUITE.erl +++ b/lib/xmerl/test/xmerl_SUITE.erl @@ -58,7 +58,7 @@ groups() -> {ticket_tests, [], [ticket_5998, ticket_7211, ticket_7214, ticket_7430, ticket_6873, ticket_7496, ticket_8156, ticket_8697, - ticket_9411]}, + ticket_9411, ticket_9457]}, {app_test, [], [{xmerl_app_test, all}]}, {appup_test, [], [{xmerl_appup_test, all}]}]. @@ -588,7 +588,26 @@ ticket_9411(Config) -> ?line {E, _} = xmerl_scan:string(Xml), ?line {E, _} = xmerl_xsd:validate(E, Schema). - +ticket_9457(suite) -> []; +ticket_9457(doc) -> + ["Test that xmerl_scan handles continuation correct when current input runs out at the end of an attribute value"]; +ticket_9457(Config) -> + Opts = [{continuation_fun, fun ticket_9457_cont/3, start}, {space, normalize}], + ?line {E, _} = xmerl_scan:string([], Opts). + +ticket_9457_cont(Continue, Exception, GlobalState) -> + case xmerl_scan:cont_state(GlobalState) of + start -> + G1 = xmerl_scan:cont_state(next, GlobalState), + Bytes = "<?xml version=\"1.0\" ?>\r\n<item a=\"b\"", + Continue(Bytes, G1); + next -> + G1 = xmerl_scan:cont_state(last, GlobalState), + Bytes = ">blah</item>\r\n", + Continue(Bytes, G1); + _ -> + Exception(GlobalState) + end. %%====================================================================== %% Support Functions diff --git a/make/otp.mk.in b/make/otp.mk.in index 1ba74a3048..4dd309b6ec 100644 --- a/make/otp.mk.in +++ b/make/otp.mk.in @@ -269,7 +269,7 @@ $(MAN3DIR)/%.3: %.xml xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< endif -# left for compatability +# left for compatibility $(MAN4DIR)/%.4: %.xml date=`date +"%B %e %Y"`; \ xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< @@ -278,7 +278,7 @@ $(MAN4DIR)/%.5: %.xml date=`date +"%B %e %Y"`; \ xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< -# left for compatability +# left for compatibility $(MAN6DIR)/%.6: %_app.xml date=`date +"%B %e %Y"`; \ xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< diff --git a/make/otp_release_targets.mk b/make/otp_release_targets.mk index 8058e634d4..229612630d 100644 --- a/make/otp_release_targets.mk +++ b/make/otp_release_targets.mk @@ -74,10 +74,10 @@ ifneq ($(XML_FILES),) # ---------------------------------------------------- # Generation of application index data # ---------------------------------------------------- -$(HTMLDIR)/$(APPLICATION).eix: $(XML_FILES) +$(HTMLDIR)/$(APPLICATION).eix: $(XML_FILES) $(SPECS_FILES) date=`date +"%B %e %Y"`; \ $(XSLTPROC) --stringparam docgen "$(DOCGEN)" \ - --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude \ + --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude $(TOP_SPECS_PARAM) \ -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_html_entities $(DOCGEN)/priv/xsl/db_eix.xsl book.xml > $@ docs: $(HTMLDIR)/$(APPLICATION).eix @@ -186,15 +186,15 @@ set_config_flags () if target_contains free_source; then CONFIG_FLAGS="$CONFIG_FLAGS --host=$TARGET" fi - # Link SSL static for all binary distributions if not overridden - # Even for win32 starting with R14B03 - XX=`echo $* | grep -v dynamic-ssl-lib` - if [ "$*" = "$XX" ]; then - CONFIG_FLAGS="--disable-dynamic-ssl-lib $CONFIG_FLAGS" - fi + # Link SSL static for win32 binary distributions if not overridden if target_contains win32; then + XX=`echo $* | grep -v dynamic-ssl-lib` + if [ "$*" = "$XX" ]; then + CONFIG_FLAGS="--disable-dynamic-ssl-lib $CONFIG_FLAGS" + fi CONFIG_FLAGS="--build=$BUILDSYS build_alias=win32 --host=win32 --target=win32 $CONFIG_FLAGS" fi + if [ "x$OVERRIDE_CONFIG_CACHE" = "x" ]; then CONFIG_FLAGS="$CONFIG_FLAGS --cache-file=/dev/null" @@ -878,8 +878,10 @@ do_primary_git () git add -A bootstrap/lib/kernel \ bootstrap/lib/stdlib \ bootstrap/lib/compiler \ - bootstrap/lib/orber/include \ bootstrap/bin + find bootstrap -name egen -o -name '*.script' -o \ + -name '*.app' -o -name '*.appup' | + xargs git reset HEAD git commit --no-verify -m 'Update primary bootstrap' } @@ -1001,24 +1003,17 @@ do_copy_primary_bootstrap () test -d $bootstrap/lib/kernel/ebin || mkdir -p $bootstrap/lib/kernel/ebin test -d $bootstrap/lib/kernel/include || mkdir -p $bootstrap/lib/kernel/include cp -f $lib_src/kernel/ebin/*.beam $bootstrap/lib/kernel/ebin - cp -f $lib_src/kernel/ebin/*.app* $bootstrap/lib/kernel/ebin cp -f $lib_src/kernel/include/*.hrl $bootstrap/lib/kernel/include # stdlib test -d $bootstrap/lib/stdlib/ebin || mkdir -p $bootstrap/lib/stdlib/ebin test -d $bootstrap/lib/stdlib/include || mkdir -p $bootstrap/lib/stdlib/include cp -f $lib_src/stdlib/ebin/*.beam $bootstrap/lib/stdlib/ebin - cp -f $lib_src/stdlib/ebin/*.app* $bootstrap/lib/stdlib/ebin cp -f $lib_src/stdlib/include/*.hrl $bootstrap/lib/stdlib/include # compiler test -d $bootstrap/lib/compiler/ebin || mkdir -p $bootstrap/lib/compiler/ebin cp -f $lib_src/compiler/ebin/*.beam $bootstrap/lib/compiler/ebin - cp -f $lib_src/compiler/ebin/*.app* $bootstrap/lib/compiler/ebin - - # orber include - test -d $bootstrap/lib/orber/include || mkdir -p $bootstrap/lib/orber/include - cp -f $lib_src/orber/include/* $bootstrap/lib/orber/include # bootstrap bin if [ $bootstrap_src_top != $ERL_TOP ]; then diff --git a/system/doc/design_principles/Makefile b/system/doc/design_principles/Makefile index b3fe136644..ae951ba8d4 100644 --- a/system/doc/design_principles/Makefile +++ b/system/doc/design_principles/Makefile @@ -79,6 +79,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + $(HTMLDIR)/%.gif: %.gif $(INSTALL_DATA) $< $@ diff --git a/system/doc/efficiency_guide/Makefile b/system/doc/efficiency_guide/Makefile index f51313de84..2629285b42 100644 --- a/system/doc/efficiency_guide/Makefile +++ b/system/doc/efficiency_guide/Makefile @@ -85,6 +85,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + docs: html local_docs: PDFDIR=../../pdf diff --git a/system/doc/embedded/Makefile b/system/doc/embedded/Makefile index 5e68917fc2..70357efb1f 100644 --- a/system/doc/embedded/Makefile +++ b/system/doc/embedded/Makefile @@ -73,6 +73,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + docs: html local_docs: PDFDIR=../../pdf diff --git a/system/doc/getting_started/Makefile b/system/doc/getting_started/Makefile index 5ca885d56e..5d85ca2adc 100644 --- a/system/doc/getting_started/Makefile +++ b/system/doc/getting_started/Makefile @@ -72,6 +72,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + docs: html local_docs: PDFDIR=../../pdf diff --git a/system/doc/oam/Makefile b/system/doc/oam/Makefile index e3288c9182..7732426ce6 100644 --- a/system/doc/oam/Makefile +++ b/system/doc/oam/Makefile @@ -69,6 +69,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + $(HTMLDIR)/%.gif: %.gif $(INSTALL_DATA) $< $@ diff --git a/system/doc/programming_examples/Makefile b/system/doc/programming_examples/Makefile index 73512c9654..8aeead9f6a 100644 --- a/system/doc/programming_examples/Makefile +++ b/system/doc/programming_examples/Makefile @@ -70,6 +70,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + docs: html local_docs: PDFDIR=../../pdf diff --git a/system/doc/reference_manual/Makefile b/system/doc/reference_manual/Makefile index 34e5b7f555..2e1f8e71cb 100644 --- a/system/doc/reference_manual/Makefile +++ b/system/doc/reference_manual/Makefile @@ -82,6 +82,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + docs: html local_docs: PDFDIR=../../pdf diff --git a/system/doc/system_architecture_intro/Makefile b/system/doc/system_architecture_intro/Makefile index 0fff9bc4d5..8d677886b8 100644 --- a/system/doc/system_architecture_intro/Makefile +++ b/system/doc/system_architecture_intro/Makefile @@ -67,6 +67,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + docs: html local_docs: PDFDIR=../../pdf diff --git a/system/doc/system_principles/Makefile b/system/doc/system_principles/Makefile index b0698fec9d..da109be211 100644 --- a/system/doc/system_principles/Makefile +++ b/system/doc/system_principles/Makefile @@ -66,6 +66,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + docs: html local_docs: PDFDIR=../../pdf diff --git a/system/doc/tutorial/Makefile b/system/doc/tutorial/Makefile index efb380248e..d48082484c 100644 --- a/system/doc/tutorial/Makefile +++ b/system/doc/tutorial/Makefile @@ -88,6 +88,8 @@ DVIPS_FLAGS += # ---------------------------------------------------- # Targets # ---------------------------------------------------- +_create_dirs := $(shell mkdir -p $(HTMLDIR)) + $(HTMLDIR)/%.gif: %.gif $(INSTALL_DATA) $< $@ |