diff options
Diffstat (limited to 'lib')
556 files changed, 12472 insertions, 6678 deletions
diff --git a/lib/appmon/doc/src/notes.xml b/lib/appmon/doc/src/notes.xml index 04b2b0d8ba..52d7e1586d 100644 --- a/lib/appmon/doc/src/notes.xml +++ b/lib/appmon/doc/src/notes.xml @@ -30,6 +30,31 @@ </header> <p>This document describes the changes made to the Appmon application.</p> +<section><title>Appmon 2.1.14.2</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + <item> + <p> + The backend module appmon_info.erl is moved from appmon + application to runtime_tools. This allows appmon to be + run from a remote erlang node towards a target node which + does not have appmon (and its dependencies) installed, as + long as runtime_tools is installed there.</p> + <p> + Own Id: OTP-10786</p> + </item> + </list> + </section> + +</section> + <section><title>Appmon 2.1.14.1</title> <section><title>Improvements and New Features</title> diff --git a/lib/appmon/src/Makefile b/lib/appmon/src/Makefile index c42ce068b4..c1620bc37a 100644 --- a/lib/appmon/src/Makefile +++ b/lib/appmon/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/appmon/vsn.mk b/lib/appmon/vsn.mk index 0654468b42..5585c5e1c2 100644 --- a/lib/appmon/vsn.mk +++ b/lib/appmon/vsn.mk @@ -1 +1 @@ -APPMON_VSN = 2.1.14.1 +APPMON_VSN = 2.1.14.2 diff --git a/lib/asn1/c_src/asn1_erl_nif.c b/lib/asn1/c_src/asn1_erl_nif.c index 7f1870d5b0..e7e5f5f2f5 100644 --- a/lib/asn1/c_src/asn1_erl_nif.c +++ b/lib/asn1/c_src/asn1_erl_nif.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2002-2012. All Rights Reserved. + * Copyright Ericsson AB 2002-2013. 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/asn1/doc/src/asn1_ug.xml b/lib/asn1/doc/src/asn1_ug.xml index a0ab98cf7a..362ca9330f 100644 --- a/lib/asn1/doc/src/asn1_ug.xml +++ b/lib/asn1/doc/src/asn1_ug.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>1997</year><year>2011</year> + <year>1997</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/asn1/doc/src/asn1ct.xml b/lib/asn1/doc/src/asn1ct.xml index b269276a92..f04bac9fec 100644 --- a/lib/asn1/doc/src/asn1ct.xml +++ b/lib/asn1/doc/src/asn1ct.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1997</year><year>2012</year> + <year>1997</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/asn1/doc/src/asn1rt.xml b/lib/asn1/doc/src/asn1rt.xml index f2cac0c9e7..2b1b108ab1 100644 --- a/lib/asn1/doc/src/asn1rt.xml +++ b/lib/asn1/doc/src/asn1rt.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1997</year><year>2011</year> + <year>1997</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/asn1/doc/src/notes.xml b/lib/asn1/doc/src/notes.xml index 72b496caf7..da0812f000 100644 --- a/lib/asn1/doc/src/notes.xml +++ b/lib/asn1/doc/src/notes.xml @@ -31,6 +31,73 @@ <p>This document describes the changes made to the asn1 application.</p> +<section><title>Asn1 2.0</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Encoding SEQUENCEs with multiple extension addition + groups with optional values could fail (depending both on + the specification and whether all values were provided).</p> + <p> + Own Id: OTP-10664</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>The options for the ASN.1 compiler has been + drastically simplified. The backend is chosen by using + <c>ber</c>, <c>per</c>, or <c>uper</c>. The options + <c>optimize</c>, <c>nif</c>, and <c>driver</c> are no + longer needed. The old options will still work, but will + issue a warning.</p> + <p>Another change is that generated <c>encode/2</c> + function will always return a binary (some backends used + to return an iolist).</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10410 Aux Id: kunagi-254 [165] </p> + </item> + <item> + <p> + The ASN.1 compiler generates faster decode functions for + PER and UPER. Some minor improvements have also been made + for PER/UPER encoding, and to the BER backend.</p> + <p> + Own Id: OTP-10519 Aux Id: kunagi-322 [233] </p> + </item> + <item> + <p>The ASN.1 compiler will now always include necessary + run-time functions in the generated Erlang modules + (except for <c>asn1rt_nif</c> which is still neeeded). If + the option '<c>inline</c>' is used the ASN.1 compiler + will generate a warning. But if + '<c>{inline,OutputFile}</c>' is use, the ASN.1 compiler + will refuse to compile the file. (Use a <c>.set.asn</c> + file if you need to remove the output file.)</p> + <p>The '<c>BIT STRING</c>' type will now be decoded as + Erlang bitstrings by default. Use the new + <c>legacy_bit_string</c> option to encode as lists of + ones and zeroes. (The <c>compact_bit_string</c> option + still works as before.)</p> + <p>Open types are now always returned as binaries (when + there is no information allowing them to be decoded).</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10588 Aux Id: kunagi-341 [252] </p> + </item> + </list> + </section> + +</section> + <section><title>Asn1 1.8</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/asn1/src/Makefile b/lib/asn1/src/Makefile index faef9efd49..9607799401 100644 --- a/lib/asn1/src/Makefile +++ b/lib/asn1/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1997-2012. All Rights Reserved. +# Copyright Ericsson AB 1997-2013. 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/asn1/src/asn1_records.hrl b/lib/asn1/src/asn1_records.hrl index c229aa0759..16d14c2e7b 100644 --- a/lib/asn1/src/asn1_records.hrl +++ b/lib/asn1/src/asn1_records.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/asn1/src/asn1ct.erl b/lib/asn1/src/asn1ct.erl index 46602a3071..770b92cbc3 100644 --- a/lib/asn1/src/asn1ct.erl +++ b/lib/asn1/src/asn1ct.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/asn1/src/asn1ct_constructed_ber_bin_v2.erl b/lib/asn1/src/asn1ct_constructed_ber_bin_v2.erl index d5097e83c5..e82212f0d8 100644 --- a/lib/asn1/src/asn1ct_constructed_ber_bin_v2.erl +++ b/lib/asn1/src/asn1ct_constructed_ber_bin_v2.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2011. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/asn1/src/asn1ct_constructed_per.erl b/lib/asn1/src/asn1ct_constructed_per.erl index 3c59c73108..aa5ee18c80 100644 --- a/lib/asn1/src/asn1ct_constructed_per.erl +++ b/lib/asn1/src/asn1ct_constructed_per.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/asn1/src/asn1ct_gen.erl b/lib/asn1/src/asn1ct_gen.erl index 79f0593c37..ebc52df1d9 100644 --- a/lib/asn1/src/asn1ct_gen.erl +++ b/lib/asn1/src/asn1ct_gen.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/asn1/src/asn1ct_gen_ber_bin_v2.erl b/lib/asn1/src/asn1ct_gen_ber_bin_v2.erl index 121f452da8..f3a2486565 100644 --- a/lib/asn1/src/asn1ct_gen_ber_bin_v2.erl +++ b/lib/asn1/src/asn1ct_gen_ber_bin_v2.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2012. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/asn1/src/asn1ct_gen_per.erl b/lib/asn1/src/asn1ct_gen_per.erl index 3b320065d2..0d6620667f 100644 --- a/lib/asn1/src/asn1ct_gen_per.erl +++ b/lib/asn1/src/asn1ct_gen_per.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/asn1/src/asn1ct_gen_per_rt2ct.erl b/lib/asn1/src/asn1ct_gen_per_rt2ct.erl index 8dd0297f89..5a409295fb 100644 --- a/lib/asn1/src/asn1ct_gen_per_rt2ct.erl +++ b/lib/asn1/src/asn1ct_gen_per_rt2ct.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2012. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/asn1/src/asn1ct_imm.erl b/lib/asn1/src/asn1ct_imm.erl index 5bdaed8f4f..869bda5d52 100644 --- a/lib/asn1/src/asn1ct_imm.erl +++ b/lib/asn1/src/asn1ct_imm.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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/asn1/src/asn1ct_value.erl b/lib/asn1/src/asn1ct_value.erl index 8f3dc1d8b8..764555c4d2 100644 --- a/lib/asn1/src/asn1ct_value.erl +++ b/lib/asn1/src/asn1ct_value.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/asn1/src/asn1rt_nif.erl b/lib/asn1/src/asn1rt_nif.erl index 0b2e5a62a5..c1879e3dcf 100644 --- a/lib/asn1/src/asn1rt_nif.erl +++ b/lib/asn1/src/asn1rt_nif.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2011. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/asn1/src/asn1rtt_ber.erl b/lib/asn1/src/asn1rtt_ber.erl index 889a421e4f..88292aca99 100644 --- a/lib/asn1/src/asn1rtt_ber.erl +++ b/lib/asn1/src/asn1rtt_ber.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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/asn1/src/asn1rtt_ext.erl b/lib/asn1/src/asn1rtt_ext.erl index 7510b01f17..46adb2007d 100644 --- a/lib/asn1/src/asn1rtt_ext.erl +++ b/lib/asn1/src/asn1rtt_ext.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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/asn1/src/asn1rtt_per.erl b/lib/asn1/src/asn1rtt_per.erl index 4713125ffc..d02f4f548e 100644 --- a/lib/asn1/src/asn1rtt_per.erl +++ b/lib/asn1/src/asn1rtt_per.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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/asn1/src/asn1rtt_per_common.erl b/lib/asn1/src/asn1rtt_per_common.erl index a7d359a288..e7edc2b65f 100644 --- a/lib/asn1/src/asn1rtt_per_common.erl +++ b/lib/asn1/src/asn1rtt_per_common.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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/asn1/src/asn1rtt_uper.erl b/lib/asn1/src/asn1rtt_uper.erl index b5e8a3c3bb..ad0678f3c3 100644 --- a/lib/asn1/src/asn1rtt_uper.erl +++ b/lib/asn1/src/asn1rtt_uper.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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/asn1/test/asn1_SUITE.erl b/lib/asn1/test/asn1_SUITE.erl index 0d09929f6d..644cba8c3c 100644 --- a/lib/asn1/test/asn1_SUITE.erl +++ b/lib/asn1/test/asn1_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2012. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/asn1/test/asn1_SUITE_data/Extension-Addition-Group.asn b/lib/asn1/test/asn1_SUITE_data/Extension-Addition-Group.asn index b7cc74ab07..b07dcd8baa 100644 --- a/lib/asn1/test/asn1_SUITE_data/Extension-Addition-Group.asn +++ b/lib/asn1/test/asn1_SUITE_data/Extension-Addition-Group.asn @@ -1,7 +1,7 @@ -- -- %CopyrightBegin% -- --- Copyright Ericsson AB 2001-2012. All Rights Reserved. +-- Copyright Ericsson AB 2001-2013. 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/asn1/test/asn1_SUITE_data/extensionAdditionGroup.erl b/lib/asn1/test/asn1_SUITE_data/extensionAdditionGroup.erl index 1aec3e1fab..d46560979d 100644 --- a/lib/asn1/test/asn1_SUITE_data/extensionAdditionGroup.erl +++ b/lib/asn1/test/asn1_SUITE_data/extensionAdditionGroup.erl @@ -7,7 +7,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2010. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/asn1/test/asn1_SUITE_data/testobj.erl b/lib/asn1/test/asn1_SUITE_data/testobj.erl index d9f60ca8a3..8d34a473ae 100644 --- a/lib/asn1/test/asn1_SUITE_data/testobj.erl +++ b/lib/asn1/test/asn1_SUITE_data/testobj.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2010. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/asn1/test/asn1_wrapper.erl b/lib/asn1/test/asn1_wrapper.erl index e764d8b4ca..ac194fe38b 100644 --- a/lib/asn1/test/asn1_wrapper.erl +++ b/lib/asn1/test/asn1_wrapper.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2010. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/asn1/test/ber_decode_error.erl b/lib/asn1/test/ber_decode_error.erl index af0105bf26..1c4b4c6894 100644 --- a/lib/asn1/test/ber_decode_error.erl +++ b/lib/asn1/test/ber_decode_error.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2012. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/asn1/test/testContextSwitchingTypes.erl b/lib/asn1/test/testContextSwitchingTypes.erl index f06cc7c117..40dbe25015 100644 --- a/lib/asn1/test/testContextSwitchingTypes.erl +++ b/lib/asn1/test/testContextSwitchingTypes.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2012. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/asn1/test/testDoubleEllipses.erl b/lib/asn1/test/testDoubleEllipses.erl index 72ff693667..1032156b91 100644 --- a/lib/asn1/test/testDoubleEllipses.erl +++ b/lib/asn1/test/testDoubleEllipses.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2012. All Rights Reserved. +%% Copyright Ericsson AB 2007-2013. 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/asn1/test/testNBAPsystem.erl b/lib/asn1/test/testNBAPsystem.erl index 3e7dfb0522..0f4459f5b2 100644 --- a/lib/asn1/test/testNBAPsystem.erl +++ b/lib/asn1/test/testNBAPsystem.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2012. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/asn1/test/testParamBasic.erl b/lib/asn1/test/testParamBasic.erl index e5e2de804c..a10468d592 100644 --- a/lib/asn1/test/testParamBasic.erl +++ b/lib/asn1/test/testParamBasic.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2012. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/asn1/test/testPrimStrings.erl b/lib/asn1/test/testPrimStrings.erl index 935e730ca1..f8b0c5b05a 100644 --- a/lib/asn1/test/testPrimStrings.erl +++ b/lib/asn1/test/testPrimStrings.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/asn1/test/testSeqSetDefaultVal.erl b/lib/asn1/test/testSeqSetDefaultVal.erl index 6e680feafa..bd6c9428e2 100644 --- a/lib/asn1/test/testSeqSetDefaultVal.erl +++ b/lib/asn1/test/testSeqSetDefaultVal.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2012. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/asn1/test/testTypeValueNotation.erl b/lib/asn1/test/testTypeValueNotation.erl index d21b054e8d..61d69edd0e 100644 --- a/lib/asn1/test/testTypeValueNotation.erl +++ b/lib/asn1/test/testTypeValueNotation.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2012. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/asn1/vsn.mk b/lib/asn1/vsn.mk index 81288496e9..8f4f68c855 100644 --- a/lib/asn1/vsn.mk +++ b/lib/asn1/vsn.mk @@ -1,2 +1,2 @@ #next version number to use is 2.0 -ASN1_VSN = 1.8 +ASN1_VSN = 2.0 diff --git a/lib/common_test/doc/src/ct_run.xml b/lib/common_test/doc/src/ct_run.xml index 0750f560b3..198290c1be 100644 --- a/lib/common_test/doc/src/ct_run.xml +++ b/lib/common_test/doc/src/ct_run.xml @@ -126,6 +126,7 @@ <title>Run tests using test specification</title> <pre> ct_run -spec TestSpec1 TestSpec2 .. TestSpecN + [-join_specs] [-config ConfigFile1 ConfigFile2 .. ConfigFileN] [-userconfig CallbackModule1 ConfigString1 and CallbackModule2 ConfigString2 and .. and CallbackModuleN ConfigStringN] diff --git a/lib/common_test/doc/src/notes.xml b/lib/common_test/doc/src/notes.xml index 0345fab8e8..8cbcbad8b2 100644 --- a/lib/common_test/doc/src/notes.xml +++ b/lib/common_test/doc/src/notes.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2004</year><year>2012</year> + <year>2004</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -47,6 +47,14 @@ </item> <item> <p> + The earlier undocumented cross cover feature for + accumulating cover data over multiple tests has now been + fixed and documented.</p> + <p> + Own Id: OTP-9870 Aux Id: kunagi-206 [117] </p> + </item> + <item> + <p> If a busy test case generated lots of error messages, cth_log_redirect:post_end_per_testcase would crash with a timeout while waiting for the error logger to finish @@ -56,6 +64,58 @@ Own Id: OTP-10040 Aux Id: kunagi-173 [84] </p> </item> <item> + <p>When a test case failed because of a timetrap time + out, the <c>Config</c> data for the case was lost in the + following call to <c>end_per_testcase/2</c>, and also in + calls to the CT Hook function + <c>post_end_per_testcase/4</c>. This problem has been + solved and the <c>Config</c> data is now correctly passed + to the above functions after a timetrap timeout + failure.</p> + <p> + Own Id: OTP-10070 Aux Id: kunagi-175 [86] </p> + </item> + <item> + <p> + Some calls to deprecated and removed functions in snmp + are removed from ct_snmp.</p> + <p> + Own Id: OTP-10088 Aux Id: kunagi-176 [87] </p> + </item> + <item> + <p>In test_server, the same process would supervise the + currently running test case and be group leader (and IO + server) for the test case. Furthermore, when running + parallel test cases, new temporary supervisor/group + leader processes were spawned and the process that was + group leader for sequential test cases would not be + active. That would lead to several problems:</p> + <p>* Processes started by init_per_suite will inherit the + group leader of the init_per_suite process (and that + group leader would not process IO requests when parallel + test cases was running). If later a parallel test case + caused such a processto print using (for example) + io:format/2, the calling would hang.</p> + <p>* Similarly, if a process was spawned from a parallel + test case, it would inherit the temporary group leader + for that parallel test case. If that spawned process + later - when the group of parallel tests have finished - + attempted to print something, its group leader would be + dead and there would be <c>badarg</c> exception.</p> + <p>Those problems have been solved by having group + leaders separate from the processes that supervises the + test cases, and keeping temporary group leader process + for parallel test cases alive until no more process in + the system use them as group leaders.</p> + <p>Also, a new <c>unexpected_io.log</c> log file + (reachable from the summary page of each test suite) has + been introduced. All unexpected IO will be printed into + it(for example, IO to a group leader for a parallel test + case that has finished).</p> + <p> + Own Id: OTP-10101 Aux Id: OTP-10125 </p> + </item> + <item> <p> Some bugfixes in <c>ct_snmp:</c></p> <p> @@ -115,27 +175,71 @@ </section> - <section><title>Known Bugs and Problems</title> + <section><title>Improvements and New Features</title> <list> <item> + <p>It is now possible to let a test specification include + other test specifications. Included specs can either be + joined with the source spec (and all other joined specs), + resulting in one single test run, or they can be executed + in separate test runs. Also, a start flag/option, + <c>join_specs</c>, has been introduced, to be used in + combination with the <c>spec</c> option. With + <c>join_specs</c>, Common Test can be told to either join + multiple test specifications, or run them separately. + Without <c>join_specs</c>, the latter behaviour is + default. Note that this is a change compared to earlier + versions of Common Test, where specifications could only + be joined. More information can be found in the Running + Tests chapter in the User's Guide (see the Test + Specifications section).</p> <p> - The earlier undocumented cross cover feature for - accumulating cover data over multiple tests has now been - fixed and documented.</p> + *** POTENTIAL INCOMPATIBILITY ***</p> <p> - Own Id: OTP-9870 Aux Id: kunagi-206 [117] </p> + Own Id: OTP-9881 Aux Id: kunagi-350 [261] </p> </item> <item> <p> - CT drops error reason when groups/0 crashes.</p> + The <c>ct_slave:start/3</c> function now supports an + <c>{env,[{Var,Value}]}</c> option to extend environment + for the slave node.</p> <p> - Own Id: OTP-10631 Aux Id: kunagi-345 [256] </p> + Own Id: OTP-10469 Aux Id: kunagi-317 [228] </p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> </item> <item> <p> - Problem opening sftp connection with ct_ssh.</p> + Update common test modules to handle unicode <list> + <item> Use UTF-8 encoding for all HTML files, except the + HTML version of the test suite generated with + erl2html2:convert, which will have the same encoding as + the original test suite (.erl) file. </item> <item> + Encode link targets in HTML files with + test_server_ctrl:uri_encode/1. </item> <item> Use unicode + modifier 't' with ~s when appropriate. </item> <item> Use + unicode:characters_to_list and + unicode:characters_to_binary for conversion between + binaries and strings instead of binary_to_list and + list_to_binary. </item> </list></p> <p> - Own Id: OTP-10632 Aux Id: kunagi-346 [257] </p> + Own Id: OTP-10783</p> + </item> + </list> + </section> + + + <section><title>Known Bugs and Problems</title> + <list> + <item> + <p> + CT drops error reason when groups/0 crashes.</p> + <p> + Own Id: OTP-10631 Aux Id: kunagi-345 [256] </p> </item> <item> <p> @@ -143,6 +247,12 @@ <p> Own Id: OTP-10634 Aux Id: kunagi-347 [258] </p> </item> + <item> + <p> + CT fails to open telnet conn after a timetrap timeout.</p> + <p> + Own Id: OTP-10648 Aux Id: seq12212 </p> + </item> </list> </section> diff --git a/lib/common_test/doc/src/run_test_chapter.xml b/lib/common_test/doc/src/run_test_chapter.xml index d5f5d89e05..35f89153d3 100644 --- a/lib/common_test/doc/src/run_test_chapter.xml +++ b/lib/common_test/doc/src/run_test_chapter.xml @@ -530,374 +530,469 @@ <marker id="test_specifications"></marker> <section> <title>Test Specifications</title> - - <p>The most flexible way to specify what to test, is to use a so - called test specification. A test specification is a sequence of - Erlang terms. The terms are normally declared in a text file (see - <c><seealso marker="ct#run_test-1">ct:run_test/1</seealso></c>), but - may also be passed to Common Test on the form of a list (see - <c><seealso marker="ct#run_testspec-1">ct:run_testspec/1</seealso></c>). - There are two general types of terms: configuration terms and test - specification terms.</p> - <p>With configuration terms it is possible to e.g. label the test - run (similar to <c>ct_run -label</c>), evaluate arbitrary expressions - before starting the test, import configuration data (similar to - <c>ct_run -config/-userconfig</c>), specify the top level HTML log - directory (similar to <c>ct_run -logdir</c>), enable code coverage - analysis (similar to <c>ct_run -cover</c>), install Common Test Hooks - (similar to <c>ct_run -ch_hooks</c>), install event_handler plugins - (similar to <c>ct_run -event_handler</c>), specify include directories - that should be passed to the compiler for automatic compilation - (similar to <c>ct_run -include</c>), disable the auto compilation - feature (similar to <c>ct_run -no_auto_compile</c>), set verbosity - levels (similar to <c>ct_run -verbosity</c>), and more.</p> - <p>Configuration terms can be combined with <c>ct_run</c> start flags, - or <c>ct:run_test/1</c> options. The result will for some flags/options - and terms be that the values are merged (e.g. configuration files, - include directories, verbosity levels, silent connections), and for - others that the start flags/options override the test specification - terms (e.g. log directory, label, style sheet, auto compilation).</p> - <p>With test specification terms it is possible to state exactly - which tests should run and in which order. A test term specifies - either one or more suites, one or more test case groups (possibly nested), - or one or more test cases in a group (or in multiple groups) or in a suite.</p> - <p>An arbitrary number of test terms may be declared in sequence. - Common Test will by default compile the terms into one or more tests - to be performed in one resulting test run. Note that a term that - specifies a set of test cases will "swallow" one that only - specifies a subset of these cases. E.g. the result of merging - one term that specifies that all cases in suite S should be - executed, with another term specifying only test case X and Y in - S, is a test of all cases in S. However, if a term specifying - test case X and Y in S is merged with a term specifying case Z - in S, the result is a test of X, Y and Z in S. To disable this - behaviour, i.e. to instead perform each test sequentially in a "script-like" - manner, the term <c>merge_tests</c> can be set to <c>false</c> in - the test specification.</p> - <p>A test term can also specify one or more test suites, groups, - or test cases to be skipped. Skipped suites, groups and cases - are not executed and show up in the HTML log files as - SKIPPED.</p> - <p>When a test case group is specified, the resulting test - executes the <c>init_per_group</c> function, followed by all test - cases and sub groups (including their configuration functions), and - finally the <c>end_per_group</c> function. Also if particular - test cases in a group are specified, <c>init_per_group</c> - and <c>end_per_group</c> for the group in question are - called. If a group which is defined (in <c>Suite:group/0</c>) to - be a sub group of another group, is specified (or if particular test - cases of a sub group are), Common Test will call the configuration - functions for the top level groups as well as for the sub group - in question (making it possible to pass configuration data all - the way from <c>init_per_suite</c> down to the test cases in the - sub group).</p> - <p>The test specification utilizes the same mechanism for specifying - test case groups by means of names and paths, as explained in the - <seealso marker="run_test_chapter#group_execution">Group Execution</seealso> - section above, with the addition of the <c>GroupSpec</c> element - described next.</p> - <p>The <c>GroupSpec</c> element makes it possible to specify - group execution properties that will override those in the - group definition (i.e. in <c>groups/0</c>). Execution properties for - sub-groups may be overridden as well. This feature makes it possible to - change properties of groups at the time of execution, - without even having to edit the test suite. The very same - feature is available for <c>group</c> elements in the <c>Suite:all/0</c> - list. Therefore, more detailed documentation, and examples, can be - found in the <seealso marker="write_test_chapter#test_case_groups"> - Test case groups</seealso> chapter.</p> - - <p>Below is the test specification syntax. Test specifications can - be used to run tests both in a single test host environment and - in a distributed Common Test environment (Large Scale - Testing). The node parameters in the <c>init</c> term are only - relevant in the latter (see the - <seealso marker="ct_master_chapter#test_specifications">Large - Scale Testing</seealso> chapter for information). For more information - about the various terms, please see the corresponding sections in the - User's Guide, such as e.g. the - <seealso marker="run_test_chapter#ct_run"><c>ct_run</c> - program</seealso> for an overview of available start flags - (since most flags have a corresponding configuration term), and - more detailed explanation of e.g. - <seealso marker="write_test_chapter#logging">Logging</seealso> - (for the <c>verbosity</c>, <c>stylesheet</c> and <c>basic_html</c> terms), - <seealso marker="config_file_chapter#top">External Configuration Data</seealso> - (for the <c>config</c> and <c>userconfig</c> terms), - <seealso marker="event_handler_chapter#event_handling">Event - Handling</seealso> (for the <c>event_handler</c> term), - <seealso marker="ct_hooks_chapter#installing">Common Test Hooks</seealso> - (for the <c>ct_hooks</c> term), etc.</p> - <p>Config terms:</p> - <pre> - {merge_tests, Bool}. - - {define, Constant, Value}. - - {node, NodeAlias, Node}. - - {init, InitOptions}. - {init, [NodeAlias], InitOptions}. - - {label, Label}. - {label, NodeRefs, Label}. - - {verbosity, VerbosityLevels}. - {verbosity, NodeRefs, VerbosityLevels}. - - {stylesheet, CSSFile}. - {stylesheet, NodeRefs, CSSFile}. - - {silent_connections, ConnTypes}. - {silent_connections, NodeRefs, ConnTypes}. - - {multiply_timetraps, N}. - {multiply_timetraps, NodeRefs, N}. - - {scale_timetraps, Bool}. - {scale_timetraps, NodeRefs, Bool}. - - {cover, CoverSpecFile}. - {cover, NodeRefs, CoverSpecFile}. - - {cover_stop, Bool}. - {cover_stop, NodeRefs, Bool}. - - {include, IncludeDirs}. - {include, NodeRefs, IncludeDirs}. - - {auto_compile, Bool}, - {auto_compile, NodeRefs, Bool}, - - {config, ConfigFiles}. - {config, ConfigDir, ConfigBaseNames}. - {config, NodeRefs, ConfigFiles}. - {config, NodeRefs, ConfigDir, ConfigBaseNames}. - - {userconfig, {CallbackModule, ConfigStrings}}. - {userconfig, NodeRefs, {CallbackModule, ConfigStrings}}. - - {logdir, LogDir}. - {logdir, NodeRefs, LogDir}. - - {logopts, LogOpts}. - {logopts, NodeRefs, LogOpts}. - - {create_priv_dir, PrivDirOption}. - {create_priv_dir, NodeRefs, PrivDirOption}. - - {event_handler, EventHandlers}. - {event_handler, NodeRefs, EventHandlers}. - {event_handler, EventHandlers, InitArgs}. - {event_handler, NodeRefs, EventHandlers, InitArgs}. - - {ct_hooks, CTHModules}. - {ct_hooks, NodeRefs, CTHModules}. - - {enable_builtin_hooks, Bool}. - - {basic_html, Bool}. - {basic_html, NodeRefs, Bool}. + <section> + <title>General description</title> + <p>The most flexible way to specify what to test, is to use a so + called test specification. A test specification is a sequence of + Erlang terms. The terms are normally declared in one or more text files + (see <c><seealso marker="ct#run_test-1">ct:run_test/1</seealso></c>), but + may also be passed to Common Test on the form of a list (see + <c><seealso marker="ct#run_testspec-1">ct:run_testspec/1</seealso></c>). + There are two general types of terms: configuration terms and test + specification terms.</p> + <p>With configuration terms it is possible to e.g. label the test + run (similar to <c>ct_run -label</c>), evaluate arbitrary expressions + before starting the test, import configuration data (similar to + <c>ct_run -config/-userconfig</c>), specify the top level HTML log + directory (similar to <c>ct_run -logdir</c>), enable code coverage + analysis (similar to <c>ct_run -cover</c>), install Common Test Hooks + (similar to <c>ct_run -ch_hooks</c>), install event_handler plugins + (similar to <c>ct_run -event_handler</c>), specify include directories + that should be passed to the compiler for automatic compilation + (similar to <c>ct_run -include</c>), disable the auto compilation + feature (similar to <c>ct_run -no_auto_compile</c>), set verbosity + levels (similar to <c>ct_run -verbosity</c>), and more.</p> + <p>Configuration terms can be combined with <c>ct_run</c> start flags, + or <c>ct:run_test/1</c> options. The result will for some flags/options + and terms be that the values are merged (e.g. configuration files, + include directories, verbosity levels, silent connections), and for + others that the start flags/options override the test specification + terms (e.g. log directory, label, style sheet, auto compilation).</p> + <p>With test specification terms it is possible to state exactly + which tests should run and in which order. A test term specifies + either one or more suites, one or more test case groups (possibly nested), + or one or more test cases in a group (or in multiple groups) or in a suite.</p> + <p>An arbitrary number of test terms may be declared in sequence. + Common Test will by default compile the terms into one or more tests + to be performed in one resulting test run. Note that a term that + specifies a set of test cases will "swallow" one that only + specifies a subset of these cases. E.g. the result of merging + one term that specifies that all cases in suite S should be + executed, with another term specifying only test case X and Y in + S, is a test of all cases in S. However, if a term specifying + test case X and Y in S is merged with a term specifying case Z + in S, the result is a test of X, Y and Z in S. To disable this + behaviour, i.e. to instead perform each test sequentially in a "script-like" + manner, the term <c>merge_tests</c> can be set to <c>false</c> in + the test specification.</p> + <p>A test term can also specify one or more test suites, groups, + or test cases to be skipped. Skipped suites, groups and cases + are not executed and show up in the HTML log files as + SKIPPED.</p> + </section> + <section> + <title>Using multiple test specification files</title> + + <p>When multiple test specification files are given at startup (either + with <c>ct_run -spec file1 file2 ...</c> or + <c>ct:run_test([{spec, [File1,File2,...]}])</c>), + Common Test will either execute one test run per specification file, or + join the files and perform all tests within one single test run. The first + behaviour is the default one. The latter requires that the start + flag/option <c>join_suites</c> is provided, e.g. + <c>run_test -spec ./my_tests1.ts ./my_tests2.ts -join_suites</c>.</p> + + <p>Joining a number of specifications, or running them separately, can + also be accomplished with (and may be combined with) test specification + file inclusion, described next.</p> + </section> + <section> + <title>Test specification file inclusion</title> + <p>With the <c>specs</c> term (see syntax below), it's possible to have + a test specification include other specifications. An included + specification may either be joined with the source specification, + or used to produce a separate test run (like with the <c>join_specs</c> + start flag/option above). Example:</p> + <pre> + %% In specification file "a.spec" + {specs, join, ["b.spec", "c.spec"]}. + {specs, separate, ["d.spec", "e.spec"]}. + %% Config and test terms follow + ...</pre> + <p>In this example, the test terms defined in files "b.spec" and "c.spec" + will be joined with the terms in the source specification "a.spec" + (if any). The inclusion of specifications "d.spec" and + "e.spec" will result in two separate, and independent, test runs (i.e. + one for each included specification).</p> + <p>Note that the <c>join</c> option does not imply that the test terms + will be merged (see <c>merge_tests</c> above), only that all tests are + executed in one single test run.</p> + <p>Joined specifications share common configuration settings, such as + the list of <c>config</c> files or <c>include</c> directories. + For configuration that can not be combined, such as settings for <c>logdir</c> + or <c>verbosity</c>, it is up to the user to ensure there are no clashes + when the test specifications are joined. Specifications included with + the <c>separate</c> option, do not share configuration settings with the + source specification. This is useful e.g. if there are clashing + configuration settings in included specifications, making it impossible + to join them.</p> + <p>If <c>{merge_tests,true}</c> is set in the source specification + (which is the default setting), terms in joined specifications will be + merged with terms in the source specification (according to the + description of <c>merge_tests</c> above).</p> + <p>Note that it is always the <c>merge_tests</c> setting in the source + specification that is used when joined with other specifications. + Say e.g. that a source specification A, with tests TA1 and TA2, has + <c>{merge_tests,false}</c> set, and it includes another specification, + B, with tests TB1 and TB2, that has <c>{merge_tests,true}</c> set. + The result will be that the test series: <c>TA1,TA2,merge(TB1,TB2)</c>, + is executed. The opposite <c>merge_tests</c> settings would result in the + following the test series: <c>merge(merge(TA1,TA2),TB1,TB2)</c>.</p> + <p>The <c>specs</c> term may of course be used to nest specifications, + i.e. have one specification include other specifications, which in turn + include others, etc.</p> + </section> + <section> + <title>Test case groups</title> + + <p>When a test case group is specified, the resulting test + executes the <c>init_per_group</c> function, followed by all test + cases and sub groups (including their configuration functions), and + finally the <c>end_per_group</c> function. Also if particular + test cases in a group are specified, <c>init_per_group</c> + and <c>end_per_group</c> for the group in question are + called. If a group which is defined (in <c>Suite:group/0</c>) to + be a sub group of another group, is specified (or if particular test + cases of a sub group are), Common Test will call the configuration + functions for the top level groups as well as for the sub group + in question (making it possible to pass configuration data all + the way from <c>init_per_suite</c> down to the test cases in the + sub group).</p> + <p>The test specification utilizes the same mechanism for specifying + test case groups by means of names and paths, as explained in the + <seealso marker="run_test_chapter#group_execution">Group Execution</seealso> + section above, with the addition of the <c>GroupSpec</c> element + described next.</p> + <p>The <c>GroupSpec</c> element makes it possible to specify + group execution properties that will override those in the + group definition (i.e. in <c>groups/0</c>). Execution properties for + sub-groups may be overridden as well. This feature makes it possible to + change properties of groups at the time of execution, + without even having to edit the test suite. The very same + feature is available for <c>group</c> elements in the <c>Suite:all/0</c> + list. Therefore, more detailed documentation, and examples, can be + found in the <seealso marker="write_test_chapter#test_case_groups"> + Test case groups</seealso> chapter.</p> + </section> - {release_shell, Bool}.</pre> + <section> + <title>Test specification syntax</title> + + <p>Below is the test specification syntax. Test specifications can + be used to run tests both in a single test host environment and + in a distributed Common Test environment (Large Scale + Testing). The node parameters in the <c>init</c> term are only + relevant in the latter (see the + <seealso marker="ct_master_chapter#test_specifications">Large + Scale Testing</seealso> chapter for information). For more information + about the various terms, please see the corresponding sections in the + User's Guide, such as e.g. the + <seealso marker="run_test_chapter#ct_run"><c>ct_run</c> + program</seealso> for an overview of available start flags + (since most flags have a corresponding configuration term), and + more detailed explanation of e.g. + <seealso marker="write_test_chapter#logging">Logging</seealso> + (for the <c>verbosity</c>, <c>stylesheet</c> and <c>basic_html</c> terms), + <seealso marker="config_file_chapter#top">External Configuration Data</seealso> + (for the <c>config</c> and <c>userconfig</c> terms), + <seealso marker="event_handler_chapter#event_handling">Event + Handling</seealso> (for the <c>event_handler</c> term), + <seealso marker="ct_hooks_chapter#installing">Common Test Hooks</seealso> + (for the <c>ct_hooks</c> term), etc.</p> + </section> + <p>Config terms:</p> + <pre> + {merge_tests, Bool}. + + {define, Constant, Value}. + + {specs, InclSpecsOption, TestSpecs}. + + {node, NodeAlias, Node}. + + {init, InitOptions}. + {init, [NodeAlias], InitOptions}. + + {label, Label}. + {label, NodeRefs, Label}. + + {verbosity, VerbosityLevels}. + {verbosity, NodeRefs, VerbosityLevels}. + + {stylesheet, CSSFile}. + {stylesheet, NodeRefs, CSSFile}. + + {silent_connections, ConnTypes}. + {silent_connections, NodeRefs, ConnTypes}. + + {multiply_timetraps, N}. + {multiply_timetraps, NodeRefs, N}. + + {scale_timetraps, Bool}. + {scale_timetraps, NodeRefs, Bool}. + + {cover, CoverSpecFile}. + {cover, NodeRefs, CoverSpecFile}. + + {cover_stop, Bool}. + {cover_stop, NodeRefs, Bool}. + + {include, IncludeDirs}. + {include, NodeRefs, IncludeDirs}. + + {auto_compile, Bool}, + {auto_compile, NodeRefs, Bool}, + + {config, ConfigFiles}. + {config, ConfigDir, ConfigBaseNames}. + {config, NodeRefs, ConfigFiles}. + {config, NodeRefs, ConfigDir, ConfigBaseNames}. + + {userconfig, {CallbackModule, ConfigStrings}}. + {userconfig, NodeRefs, {CallbackModule, ConfigStrings}}. + + {logdir, LogDir}. + {logdir, NodeRefs, LogDir}. + + {logopts, LogOpts}. + {logopts, NodeRefs, LogOpts}. + + {create_priv_dir, PrivDirOption}. + {create_priv_dir, NodeRefs, PrivDirOption}. + + {event_handler, EventHandlers}. + {event_handler, NodeRefs, EventHandlers}. + {event_handler, EventHandlers, InitArgs}. + {event_handler, NodeRefs, EventHandlers, InitArgs}. + + {ct_hooks, CTHModules}. + {ct_hooks, NodeRefs, CTHModules}. + + {enable_builtin_hooks, Bool}. + + {basic_html, Bool}. + {basic_html, NodeRefs, Bool}. + + {release_shell, Bool}.</pre> + <p>Test terms:</p> - <pre> - {suites, Dir, Suites}. - {suites, NodeRefs, Dir, Suites}. - - {groups, Dir, Suite, Groups}. - {groups, NodeRefs, Dir, Suite, Groups}. - - {groups, Dir, Suite, Groups, {cases,Cases}}. - {groups, NodeRefs, Dir, Suite, Groups, {cases,Cases}}. - - {cases, Dir, Suite, Cases}. - {cases, NodeRefs, Dir, Suite, Cases}. - - {skip_suites, Dir, Suites, Comment}. - {skip_suites, NodeRefs, Dir, Suites, Comment}. - - {skip_groups, Dir, Suite, GroupNames, Comment}. - {skip_groups, NodeRefs, Dir, Suite, GroupNames, Comment}. - - {skip_cases, Dir, Suite, Cases, Comment}. - {skip_cases, NodeRefs, Dir, Suite, Cases, Comment}.</pre> - + <pre> + {suites, Dir, Suites}. + {suites, NodeRefs, Dir, Suites}. + + {groups, Dir, Suite, Groups}. + {groups, NodeRefs, Dir, Suite, Groups}. + + {groups, Dir, Suite, Groups, {cases,Cases}}. + {groups, NodeRefs, Dir, Suite, Groups, {cases,Cases}}. + + {cases, Dir, Suite, Cases}. + {cases, NodeRefs, Dir, Suite, Cases}. + + {skip_suites, Dir, Suites, Comment}. + {skip_suites, NodeRefs, Dir, Suites, Comment}. + + {skip_groups, Dir, Suite, GroupNames, Comment}. + {skip_groups, NodeRefs, Dir, Suite, GroupNames, Comment}. + + {skip_cases, Dir, Suite, Cases, Comment}. + {skip_cases, NodeRefs, Dir, Suite, Cases, Comment}.</pre> + <p>Types:</p> - <pre> - Bool = true | false - Constant = atom() - Value = term() - NodeAlias = atom() - Node = node() - NodeRef = NodeAlias | Node | master - NodeRefs = all_nodes | [NodeRef] | NodeRef - InitOptions = term() - Label = atom() | string() - VerbosityLevels = integer() | [{Category,integer()}] - Category = atom() - CSSFile = string() - ConnTypes = all | [atom()] - N = integer() - CoverSpecFile = string() - IncludeDirs = string() | [string()] - ConfigFiles = string() | [string()] - ConfigDir = string() - ConfigBaseNames = string() | [string()] - CallbackModule = atom() - ConfigStrings = string() | [string()] - LogDir = string() - LogOpts = [term()] - PrivDirOption = auto_per_run | auto_per_tc | manual_per_tc - EventHandlers = atom() | [atom()] - InitArgs = [term()] - CTHModules = [CTHModule | - {CTHModule, CTHInitArgs} | - {CTHModule, CTHInitArgs, CTHPriority}] - CTHModule = atom() - CTHInitArgs = term() - Dir = string() - Suites = atom() | [atom()] | all - Suite = atom() - Groups = GroupPath | [GroupPath] | GroupSpec | [GroupSpec] | all - GroupPath = [GroupName] - GroupSpec = GroupName | {GroupName,Properties} | {GroupName,Properties,GroupSpec} - GroupName = atom() - GroupNames = GroupName | [GroupName] - Cases = atom() | [atom()] | all - Comment = string() | ""</pre> - - <p>The difference between the <c>config</c> terms above, is that with - <c>ConfigDir</c>, <c>ConfigBaseNames</c> is a list of base names, - i.e. without directory paths. <c>ConfigFiles</c> must be full names, - including paths. E.g, these two terms have the same meaning:</p> - <pre> - {config, ["/home/testuser/tests/config/nodeA.cfg", - "/home/testuser/tests/config/nodeB.cfg"]}. - - {config, "/home/testuser/tests/config", ["nodeA.cfg","nodeB.cfg"]}.</pre> - - <note><p>Any relative paths specified in the test specification, will be - relative to the directory which contains the test specification file, if - <c>ct_run -spec TestSpecFile ...</c> or - <c>ct:run:test([{spec,TestSpecFile},...])</c> - executes the test. The path will be relative to the top level log directory, if - <c>ct:run:testspec(TestSpec)</c> executes the test.</p></note> - - <p>The <c>define</c> term introduces a constant, which is used to - replace the name <c>Constant</c> with <c>Value</c>, wherever it's found in - the test specification. This replacement happens during an initial iteration - through the test specification. Constants may be used anywhere in the test - specification, e.g. in arbitrary lists and tuples, and even in strings - and inside the value part of other constant definitions! A constant can - also be part of a node name, but that is the only place where a constant - can be part of an atom.</p> - - <note><p>For the sake of readability, the name of the constant must always - begin with an upper case letter, or a <c>$</c>, <c>?</c>, or <c>_</c>. - This also means that it must always be single quoted (obviously, since - the constant name is actually an atom, not text).</p></note> - - <p>The main benefit of constants is that they can be used to reduce the size - (and avoid repetition) of long strings, such as file paths. Compare these - terms:</p> - - <pre> - %% 1a. no constant - {config, "/home/testuser/tests/config", ["nodeA.cfg","nodeB.cfg"]}. - {suites, "/home/testuser/tests/suites", all}. - - %% 1b. with constant - {define, 'TESTDIR', "/home/testuser/tests"}. - {config, "'TESTDIR'/config", ["nodeA.cfg","nodeB.cfg"]}. - {suites, "'TESTDIR'/suites", all}. - - %% 2a. no constants - {config, [testnode@host1, testnode@host2], "../config", ["nodeA.cfg","nodeB.cfg"]}. - {suites, [testnode@host1, testnode@host2], "../suites", [x_SUITE, y_SUITE]}. - - %% 2b. with constants - {define, 'NODE', testnode}. - {define, 'NODES', ['NODE'@host1, 'NODE'@host2]}. - {config, 'NODES', "../config", ["nodeA.cfg","nodeB.cfg"]}. - {suites, 'NODES', "../suites", [x_SUITE, y_SUITE]}.</pre> - - <p>Constants make the test specification term <c>alias</c>, in previous - versions of Common Test, redundant. This term has been deprecated but will - remain supported in upcoming Common Test releases. Replacing <c>alias</c> - terms with <c>define</c> is strongly recommended though! Here's an example - of such a replacement:</p> + <pre> + Bool = true | false + Constant = atom() + Value = term() + InclSpecsOption = join | separate + TestSpecs = string() | [string()] + NodeAlias = atom() + Node = node() + NodeRef = NodeAlias | Node | master + NodeRefs = all_nodes | [NodeRef] | NodeRef + InitOptions = term() + Label = atom() | string() + VerbosityLevels = integer() | [{Category,integer()}] + Category = atom() + CSSFile = string() + ConnTypes = all | [atom()] + N = integer() + CoverSpecFile = string() + IncludeDirs = string() | [string()] + ConfigFiles = string() | [string()] + ConfigDir = string() + ConfigBaseNames = string() | [string()] + CallbackModule = atom() + ConfigStrings = string() | [string()] + LogDir = string() + LogOpts = [term()] + PrivDirOption = auto_per_run | auto_per_tc | manual_per_tc + EventHandlers = atom() | [atom()] + InitArgs = [term()] + CTHModules = [CTHModule | + {CTHModule, CTHInitArgs} | + {CTHModule, CTHInitArgs, CTHPriority}] + CTHModule = atom() + CTHInitArgs = term() + Dir = string() + Suites = atom() | [atom()] | all + Suite = atom() + Groups = GroupPath | [GroupPath] | GroupSpec | [GroupSpec] | all + GroupPath = [GroupName] + GroupSpec = GroupName | {GroupName,Properties} | {GroupName,Properties,GroupSpec} + GroupName = atom() + GroupNames = GroupName | [GroupName] + Cases = atom() | [atom()] | all + Comment = string() | ""</pre> + + <section> + <p>The difference between the <c>config</c> terms above, is that with + <c>ConfigDir</c>, <c>ConfigBaseNames</c> is a list of base names, + i.e. without directory paths. <c>ConfigFiles</c> must be full names, + including paths. E.g, these two terms have the same meaning:</p> + <pre> + {config, ["/home/testuser/tests/config/nodeA.cfg", + "/home/testuser/tests/config/nodeB.cfg"]}. + + {config, "/home/testuser/tests/config", ["nodeA.cfg","nodeB.cfg"]}.</pre> + + <note><p>Any relative paths specified in the test specification, will be + relative to the directory which contains the test specification file, if + <c>ct_run -spec TestSpecFile ...</c> or + <c>ct:run:test([{spec,TestSpecFile},...])</c> + executes the test. The path will be relative to the top level log directory, if + <c>ct:run:testspec(TestSpec)</c> executes the test.</p></note> + </section> - <pre> - %% using the old alias term - {config, "/home/testuser/tests/config/nodeA.cfg"}. - {alias, suite_dir, "/home/testuser/tests/suites"}. - {groups, suite_dir, x_SUITE, group1}. - - %% replacing with constants - {define, 'TestDir', "/home/testuser/tests"}. - {define, 'CfgDir', "'TestDir'/config"}. - {define, 'SuiteDir', "'TestDir'/suites"}. - {config, 'CfgDir', "nodeA.cfg"}. - {groups, 'SuiteDir', x_SUITE, group1}.</pre> - - <p>Actually, constants could well replace the <c>node</c> term too, but - this still has declarative value, mainly when used in combination - with <c>NodeRefs == all_nodes</c> (see types above).</p> - - <p>Here follows a simple test specification example:</p> - <pre> - {define, 'Top', "/home/test"}. - {define, 'T1', "'Top'/t1"}. - {define, 'T2', "'Top'/t2"}. - {define, 'T3', "'Top'/t3"}. - {define, 'CfgFile', "config.cfg"}. + <section> + <title>Constants</title> + + <p>The <c>define</c> term introduces a constant, which is used to + replace the name <c>Constant</c> with <c>Value</c>, wherever it's found in + the test specification. This replacement happens during an initial iteration + through the test specification. Constants may be used anywhere in the test + specification, e.g. in arbitrary lists and tuples, and even in strings + and inside the value part of other constant definitions! A constant can + also be part of a node name, but that is the only place where a constant + can be part of an atom.</p> + + <note><p>For the sake of readability, the name of the constant must always + begin with an upper case letter, or a <c>$</c>, <c>?</c>, or <c>_</c>. + This also means that it must always be single quoted (obviously, since + the constant name is actually an atom, not text).</p></note> + + <p>The main benefit of constants is that they can be used to reduce the size + (and avoid repetition) of long strings, such as file paths. Compare these + terms:</p> + + <pre> + %% 1a. no constant + {config, "/home/testuser/tests/config", ["nodeA.cfg","nodeB.cfg"]}. + {suites, "/home/testuser/tests/suites", all}. + + %% 1b. with constant + {define, 'TESTDIR', "/home/testuser/tests"}. + {config, "'TESTDIR'/config", ["nodeA.cfg","nodeB.cfg"]}. + {suites, "'TESTDIR'/suites", all}. + + %% 2a. no constants + {config, [testnode@host1, testnode@host2], "../config", ["nodeA.cfg","nodeB.cfg"]}. + {suites, [testnode@host1, testnode@host2], "../suites", [x_SUITE, y_SUITE]}. + + %% 2b. with constants + {define, 'NODE', testnode}. + {define, 'NODES', ['NODE'@host1, 'NODE'@host2]}. + {config, 'NODES', "../config", ["nodeA.cfg","nodeB.cfg"]}. + {suites, 'NODES', "../suites", [x_SUITE, y_SUITE]}.</pre> + + <p>Constants make the test specification term <c>alias</c>, in previous + versions of Common Test, redundant. This term has been deprecated but will + remain supported in upcoming Common Test releases. Replacing <c>alias</c> + terms with <c>define</c> is strongly recommended though! Here's an example + of such a replacement:</p> + + <pre> + %% using the old alias term + {config, "/home/testuser/tests/config/nodeA.cfg"}. + {alias, suite_dir, "/home/testuser/tests/suites"}. + {groups, suite_dir, x_SUITE, group1}. + + %% replacing with constants + {define, 'TestDir', "/home/testuser/tests"}. + {define, 'CfgDir', "'TestDir'/config"}. + {define, 'SuiteDir', "'TestDir'/suites"}. + {config, 'CfgDir', "nodeA.cfg"}. + {groups, 'SuiteDir', x_SUITE, group1}.</pre> + + <p>Actually, constants could well replace the <c>node</c> term too, but + this still has declarative value, mainly when used in combination + with <c>NodeRefs == all_nodes</c> (see types above).</p> + </section> - {logdir, "'Top'/logs"}. - - {config, ["'T1'/'CfgFile'", "'T2'/'CfgFile'", "'T3'/'CfgFile'"]}. - - {suites, 'T1', all}. - {skip_suites, 'T1', [t1B_SUITE,t1D_SUITE], "Not implemented"}. - {skip_cases, 'T1', t1A_SUITE, [test3,test4], "Irrelevant"}. - {skip_cases, 'T1', t1C_SUITE, [test1], "Ignore"}. - - {suites, 'T2', [t2B_SUITE,t2C_SUITE]}. - {cases, 'T2', t2A_SUITE, [test4,test1,test7]}. - - {skip_suites, 'T3', all, "Not implemented"}.</pre> + <section> + <title>Example</title> + + <p>Here follows a simple test specification example:</p> + <pre> + {define, 'Top', "/home/test"}. + {define, 'T1', "'Top'/t1"}. + {define, 'T2', "'Top'/t2"}. + {define, 'T3', "'Top'/t3"}. + {define, 'CfgFile', "config.cfg"}. + + {logdir, "'Top'/logs"}. + + {config, ["'T1'/'CfgFile'", "'T2'/'CfgFile'", "'T3'/'CfgFile'"]}. + + {suites, 'T1', all}. + {skip_suites, 'T1', [t1B_SUITE,t1D_SUITE], "Not implemented"}. + {skip_cases, 'T1', t1A_SUITE, [test3,test4], "Irrelevant"}. + {skip_cases, 'T1', t1C_SUITE, [test1], "Ignore"}. + + {suites, 'T2', [t2B_SUITE,t2C_SUITE]}. + {cases, 'T2', t2A_SUITE, [test4,test1,test7]}. + + {skip_suites, 'T3', all, "Not implemented"}.</pre> + + <p>The example specifies the following:</p> + <list> + <item>The specified logdir directory will be used for storing + the HTML log files (in subdirectories tagged with node name, + date and time).</item> + <item>The variables in the specified test system config files will be + imported for the test.</item> + <item>The first test to run includes all suites for system t1. Excluded from + the test are however the t1B and t1D suites. Also test cases test3 and + test4 in t1A as well as the test1 case in t1C are excluded from + the test.</item> + <item>Secondly, the test for system t2 should run. The included suites are + t2B and t2C. Included are also test cases test4, test1 and test7 in suite + t2A. Note that the test cases will be executed in the specified order.</item> + <item>Lastly, all suites for systems t3 are to be completely skipped and this + should be explicitly noted in the log files.</item> + </list> + </section> - <p>The example specifies the following:</p> - <list> - <item>The specified logdir directory will be used for storing - the HTML log files (in subdirectories tagged with node name, - date and time).</item> - <item>The variables in the specified test system config files will be - imported for the test.</item> - <item>The first test to run includes all suites for system t1. Excluded from - the test are however the t1B and t1D suites. Also test cases test3 and - test4 in t1A as well as the test1 case in t1C are excluded from - the test.</item> - <item>Secondly, the test for system t2 should run. The included suites are - t2B and t2C. Included are also test cases test4, test1 and test7 in suite - t2A. Note that the test cases will be executed in the specified order.</item> - <item>Lastly, all suites for systems t3 are to be completely skipped and this - should be explicitly noted in the log files.</item> - </list> - <p>With the <c>init</c> term it's possible to specify initialization options - for nodes defined in the test specification. Currently, there are options - to start the node and/or to evaluate any function on the node. - See the <seealso marker="ct_master_chapter#ct_slave">Automatic startup of - the test target nodes</seealso> chapter for details.</p> - <p>It is possible for the user to provide a test specification that - includes (for Common Test) unrecognizable terms. If this is desired, - the <c>-allow_user_terms</c> flag should be used when starting tests with - <c>ct_run</c>. This forces Common Test to ignore unrecognizable terms. - Note that in this mode, Common Test is not able to check the specification - for errors as efficiently as if the scanner runs in default mode. - If <c><seealso marker="ct#run_test-1">ct:run_test/1</seealso></c> is used for starting the tests, the relaxed scanner - mode is enabled by means of the tuple: <c>{allow_user_terms,true}</c></p> + <section> + <title>The init term</title> + <p>With the <c>init</c> term it's possible to specify initialization options + for nodes defined in the test specification. Currently, there are options + to start the node and/or to evaluate any function on the node. + See the <seealso marker="ct_master_chapter#ct_slave">Automatic startup of + the test target nodes</seealso> chapter for details.</p> + </section> + <section> + <title>User specific terms</title> + <p>It is possible for the user to provide a test specification that + includes (for Common Test) unrecognizable terms. If this is desired, + the <c>-allow_user_terms</c> flag should be used when starting tests with + <c>ct_run</c>. This forces Common Test to ignore unrecognizable terms. + Note that in this mode, Common Test is not able to check the specification + for errors as efficiently as if the scanner runs in default mode. + If <c><seealso marker="ct#run_test-1">ct:run_test/1</seealso></c> is used + for starting the tests, the relaxed scanner + mode is enabled by means of the tuple: <c>{allow_user_terms,true}</c></p> + </section> </section> <section> diff --git a/lib/common_test/src/Makefile b/lib/common_test/src/Makefile index 31906b4568..4600c0ad78 100644 --- a/lib/common_test/src/Makefile +++ b/lib/common_test/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2003-2012. All Rights Reserved. +# Copyright Ericsson AB 2003-2013. 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/common_test/src/ct.erl b/lib/common_test/src/ct.erl index 8eafdff29f..04a95a53fa 100644 --- a/lib/common_test/src/ct.erl +++ b/lib/common_test/src/ct.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2012. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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 @@ -144,8 +144,8 @@ run(TestDirs) -> %%% @spec run_test(Opts) -> Result %%% Opts = [OptTuples] %%% OptTuples = {dir,TestDirs} | {suite,Suites} | {group,Groups} | -%%% {testcase,Cases} | {spec,TestSpecs} | {label,Label} | -%%% {config,CfgFiles} | {userconfig, UserConfig} | +%%% {testcase,Cases} | {spec,TestSpecs} | {join_specs,Bool} | +%%% {label,Label} | {config,CfgFiles} | {userconfig, UserConfig} | %%% {allow_user_terms,Bool} | {logdir,LogDir} | %%% {silent_connections,Conns} | {stylesheet,CSSFile} | %%% {cover,CoverSpecFile} | {cover_stop,Bool} | {step,StepOpts} | @@ -735,7 +735,7 @@ fail(Format, Args) -> %%% overwrites the string set by this function.</p> comment(Comment) when is_list(Comment) -> Formatted = - case (catch io_lib:format("~s",[Comment])) of + case (catch io_lib:format("~ts",[Comment])) of {'EXIT',_} -> % it's a list not a string io_lib:format("~p",[Comment]); String -> diff --git a/lib/common_test/src/ct_config.erl b/lib/common_test/src/ct_config.erl index b1d709bc75..c35cbd3c08 100644 --- a/lib/common_test/src/ct_config.erl +++ b/lib/common_test/src/ct_config.erl @@ -1,7 +1,7 @@ %%-------------------------------------------------------------------- %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. 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 @@ -266,7 +266,10 @@ read_config_files_int([{Callback, File}|Files], FunToSave) -> read_config_files_int([], _FunToSave) -> ok. -store_config(Config, Callback, File) -> +store_config(Config, Callback, File) when is_tuple(Config) -> + store_config([Config], Callback, File); + +store_config(Config, Callback, File) when is_list(Config) -> [ets:insert(?attr_table, #ct_conf{key=Key, value=Val, @@ -607,7 +610,7 @@ encrypt_config_file(SrcFileName, EncryptFileName, {key,Key}) -> EncBin = crypto:des3_cbc_encrypt(K1, K2, K3, IVec, Bin2), case file:write_file(EncryptFileName, EncBin) of ok -> - io:format("~s --(encrypt)--> ~s~n", + io:format("~ts --(encrypt)--> ~ts~n", [SrcFileName,EncryptFileName]), ok; {error,Reason} -> @@ -649,7 +652,7 @@ decrypt_config_file(EncryptFileName, TargetFileName, {key,Key}) -> _ -> case file:write_file(TargetFileName, SrcBin) of ok -> - io:format("~s --(decrypt)--> ~s~n", + io:format("~ts --(decrypt)--> ~ts~n", [EncryptFileName,TargetFileName]), ok; {error,Reason} -> @@ -700,7 +703,7 @@ get_crypt_key_from_file() -> _ -> case catch string:tokens(binary_to_list(Result), [$\n,$\r]) of [Key] -> - io:format("~nCrypt key file: ~s~n", [FullName]), + io:format("~nCrypt key file: ~ts~n", [FullName]), Key; _ -> {error,{bad_crypt_file,FullName}} diff --git a/lib/common_test/src/ct_config_plain.erl b/lib/common_test/src/ct_config_plain.erl index 237df5c8f3..c6547f0a40 100644 --- a/lib/common_test/src/ct_config_plain.erl +++ b/lib/common_test/src/ct_config_plain.erl @@ -1,7 +1,7 @@ %%-------------------------------------------------------------------- %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. 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 @@ -47,7 +47,7 @@ read_config(ConfigFile) -> {error,no_crypt_file} -> {error,{config_file_error, lists:flatten( - io_lib:format("~s",[file:format_error(Reason)]))}}; + io_lib:format("~ts",[file:format_error(Reason)]))}}; {error,CryptError} -> {error,{decrypt_file_error,CryptError}}; _ when is_list(Key) -> diff --git a/lib/common_test/src/ct_conn_log_h.erl b/lib/common_test/src/ct_conn_log_h.erl index d7bd18606b..ac08a3e0ad 100644 --- a/lib/common_test/src/ct_conn_log_h.erl +++ b/lib/common_test/src/ct_conn_log_h.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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 @@ -52,7 +52,7 @@ open_files([],State) -> do_open_files([{Tag,File}|Logs],Acc) -> - case file:open(File, [write]) of + case file:open(File, [write,{encoding,utf8}]) of {ok,Fd} -> do_open_files(Logs,[{Tag,Fd}|Acc]); {error,Reason} -> @@ -98,9 +98,9 @@ terminate(_,#state{logs=Logs}) -> %%% Writing reports write_report(Time,#conn_log{module=ConnMod}=Info,Data,State) -> {LogType,Fd} = get_log(Info,State), - io:format(Fd,"~n~s~s~s",[format_head(ConnMod,LogType,Time), - format_title(LogType,Info), - format_data(ConnMod,LogType,Data)]). + io:format(Fd,"~n~ts~ts~ts",[format_head(ConnMod,LogType,Time), + format_title(LogType,Info), + format_data(ConnMod,LogType,Data)]). write_error(Time,#conn_log{module=ConnMod}=Info,Report,State) -> case get_log(Info,State) of @@ -109,9 +109,10 @@ write_error(Time,#conn_log{module=ConnMod}=Info,Report,State) -> %% sasl error handler, so don't write it again. ok; {LogType,Fd} -> - io:format(Fd,"~n~s~s~s",[format_head(ConnMod,LogType,Time," ERROR"), - format_title(LogType,Info), - format_error(LogType,Report)]) + io:format(Fd,"~n~ts~ts~ts", + [format_head(ConnMod,LogType,Time," ERROR"), + format_title(LogType,Info), + format_error(LogType,Report)]) end. get_log(Info,State) -> @@ -140,16 +141,16 @@ format_head(ConnMod,LogType,Time) -> format_head(ConnMod,LogType,Time,""). format_head(ConnMod,raw,Time,Text) -> - io_lib:format("~n~p, ~p~s, ",[now_to_time(Time),ConnMod,Text]); + io_lib:format("~n~w, ~w~ts, ",[now_to_time(Time),ConnMod,Text]); format_head(ConnMod,_,Time,Text) -> Head = pad_char_end(?WIDTH,pretty_head(now_to_time(Time),ConnMod,Text),$=), - io_lib:format("~n~s",[Head]). + io_lib:format("~n~ts",[Head]). format_title(raw,#conn_log{client=Client}=Info) -> - io_lib:format("Client ~p ~s ~s",[Client,actionstr(Info),serverstr(Info)]); + io_lib:format("Client ~w ~s ~ts",[Client,actionstr(Info),serverstr(Info)]); format_title(_,Info) -> Title = pad_char_end(?WIDTH,pretty_title(Info),$=), - io_lib:format("~n~s", [Title]). + io_lib:format("~n~ts", [Title]). format_data(_,_,NoData) when NoData == ""; NoData == <<>> -> ""; @@ -162,8 +163,6 @@ format_error(pretty,Report) -> [io_lib:format("~n ~p: ~p",[K,V]) || {K,V} <- Report]. - - %%%----------------------------------------------------------------- %%% Helpers conn_info(LoggingProc, #conn_log{client=undefined} = ConnInfo) -> @@ -187,12 +186,12 @@ now_to_time({_,_,MicroS}=Now) -> pretty_head({{{Y,Mo,D},{H,Mi,S}},MicroS},ConnMod,Text0) -> Text = string:to_upper(atom_to_list(ConnMod) ++ Text0), - io_lib:format("= ~s ==== ~s-~s-~p::~s:~s:~s,~s ", + io_lib:format("= ~s ==== ~s-~s-~w::~s:~s:~s,~s ", [Text,t(D),month(Mo),Y,t(H),t(Mi),t(S), micro2milli(MicroS)]). pretty_title(#conn_log{client=Client}=Info) -> - io_lib:format("= Client ~p ~s Server ~s ", + io_lib:format("= Client ~w ~s Server ~ts ", [Client,actionstr(Info),serverstr(Info)]). actionstr(#conn_log{action=send}) -> "----->"; @@ -204,7 +203,7 @@ actionstr(_) -> "<---->". serverstr(#conn_log{name=undefined,address=Address}) -> io_lib:format("~p",[Address]); serverstr(#conn_log{name=Alias,address=Address}) -> - io_lib:format("~p(~p)",[Alias,Address]). + io_lib:format("~w(~p)",[Alias,Address]). month(1) -> "Jan"; month(2) -> "Feb"; diff --git a/lib/common_test/src/ct_event.erl b/lib/common_test/src/ct_event.erl index 49e0635d79..c1c1d943b9 100644 --- a/lib/common_test/src/ct_event.erl +++ b/lib/common_test/src/ct_event.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2012. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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 @@ -150,7 +150,7 @@ init(RecvPids) -> %%-------------------------------------------------------------------- handle_event(Event,State=#state{receivers=RecvPids}) -> print("~n=== ~w ===~n", [?MODULE]), - print("~p: ~p~n", [Event#event.name,Event#event.data]), + print("~w: ~w~n", [Event#event.name,Event#event.data]), lists:foreach(fun(Recv) -> report_event(Recv,Event) end, RecvPids), {ok,State}. diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl index c1abf27e9f..5fe4eaf511 100644 --- a/lib/common_test/src/ct_framework.erl +++ b/lib/common_test/src/ct_framework.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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 @@ -750,12 +750,12 @@ error_notification(Mod,Func,_Args,{Error,Loc}) -> Descr1 = lists:flatten(io_lib:format("~P",[Descr,10])), if length(Descr1) > 50 -> Descr2 = string:substr(Descr1,1,50), - io_lib:format("{badmatch,~s...}",[Descr2]); + io_lib:format("{badmatch,~ts...}",[Descr2]); true -> - io_lib:format("{badmatch,~s}",[Descr1]) + io_lib:format("{badmatch,~ts}",[Descr1]) end; {test_case_failed,Reason} -> - case (catch io_lib:format("{test_case_failed,~s}", [Reason])) of + case (catch io_lib:format("{test_case_failed,~ts}", [Reason])) of {'EXIT',_} -> io_lib:format("{test_case_failed,~p}", [Reason]); Result -> Result @@ -788,7 +788,7 @@ error_notification(Mod,Func,_Args,{Error,Loc}) -> "<font color=\"green\">" ++ "(" ++ "</font>" ++ Comment ++ "<font color=\"green\">" ++ ")" ++ "</font>", - Str = io_lib:format("~s ~s", [ErrorHtml,CommentHtml]), + Str = io_lib:format("~ts ~ts", [ErrorHtml,CommentHtml]), test_server:comment(Str) end end, @@ -803,24 +803,24 @@ error_notification(Mod,Func,_Args,{Error,Loc}) -> end, case Loc of [{?MODULE,error_in_suite}] -> - PrintErr("Error in suite detected: ~s", [ErrStr]); + PrintErr("Error in suite detected: ~ts", [ErrStr]); R when R == unknown; R == undefined -> - PrintErr("Error detected: ~s", [ErrStr]); + PrintErr("Error detected: ~ts", [ErrStr]); %% if a function specified by all/0 does not exist, we %% pick up undef here [{LastMod,LastFunc}|_] when ErrStr == "undef" -> - PrintErr("~w:~w could not be executed~nReason: ~s", + PrintErr("~w:~w could not be executed~nReason: ~ts", [LastMod,LastFunc,ErrStr]); [{LastMod,LastFunc}|_] -> - PrintErr("~w:~w failed~nReason: ~s", [LastMod,LastFunc,ErrStr]); + PrintErr("~w:~w failed~nReason: ~ts", [LastMod,LastFunc,ErrStr]); [{LastMod,LastFunc,LastLine}|_] -> %% print error to console, we are only %% interested in the last executed expression - PrintErr("~w:~w failed on line ~w~nReason: ~s", + PrintErr("~w:~w failed on line ~w~nReason: ~ts", [LastMod,LastFunc,LastLine,ErrStr]), case ct_util:read_suite_data({seq,Mod,Func}) of @@ -1184,7 +1184,7 @@ report(What,Data) -> ok; {error,Reason} -> ct_logs:log("COVER INFO", - "Importing cover data from: ~s fails! " + "Importing cover data from: ~ts fails! " "Reason: ~p", [Imp,Reason]) end end, Imps) @@ -1349,4 +1349,7 @@ format_comment(Comment) -> %%%----------------------------------------------------------------- %%% @spec get_html_wrapper(TestName, PrintLabel, Cwd) -> Header get_html_wrapper(TestName, PrintLabel, Cwd, TableCols) -> - ct_logs:get_ts_html_wrapper(TestName, PrintLabel, Cwd, TableCols). + get_html_wrapper(TestName, PrintLabel, Cwd, TableCols, utf8). + +get_html_wrapper(TestName, PrintLabel, Cwd, TableCols, Encoding) -> + ct_logs:get_ts_html_wrapper(TestName, PrintLabel, Cwd, TableCols, Encoding). diff --git a/lib/common_test/src/ct_gen_conn.erl b/lib/common_test/src/ct_gen_conn.erl index 1f01d84601..2d4b1d1f52 100644 --- a/lib/common_test/src/ct_gen_conn.erl +++ b/lib/common_test/src/ct_gen_conn.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2012. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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 @@ -272,7 +272,7 @@ call(Pid, Msg, Timeout) -> after Timeout -> erlang:demonitor(MRef, [flush]), log("ct_gen_conn", - "Connection process ~p not responding. Killing now!", + "Connection process ~w not responding. Killing now!", [Pid]), exit(Pid, kill), {error,{process_down,Pid,forced_termination}} diff --git a/lib/common_test/src/ct_groups.erl b/lib/common_test/src/ct_groups.erl index 74ab5e5439..14a8aab881 100644 --- a/lib/common_test/src/ct_groups.erl +++ b/lib/common_test/src/ct_groups.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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 @@ -462,7 +462,7 @@ make_conf(Mod, Name, Props, TestSpec) -> false -> ct_logs:log("TEST INFO", "init_per_group/2 and " "end_per_group/2 missing for group " - "~p in ~p, using default.", + "~w in ~w, using default.", [Name,Mod]), {{ct_framework,init_per_group}, {ct_framework,end_per_group}, diff --git a/lib/common_test/src/ct_hooks.erl b/lib/common_test/src/ct_hooks.erl index 1bcc63738e..3d87a82e24 100644 --- a/lib/common_test/src/ct_hooks.erl +++ b/lib/common_test/src/ct_hooks.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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,11 +362,11 @@ catch_apply(M,F,A, Default) -> [{M,F,A,_}|_] when Reason == undef -> Default; Trace -> - ct_logs:log("Suite Hook","Call to CTH failed: ~p:~p", + ct_logs:log("Suite Hook","Call to CTH failed: ~w:~p", [error,{Reason,Trace}]), throw({error_in_cth_call, lists:flatten( - io_lib:format("~p:~p/~p CTH call failed", + io_lib:format("~w:~w/~w CTH call failed", [M,F,length(A)]))}) end end. diff --git a/lib/common_test/src/ct_logs.erl b/lib/common_test/src/ct_logs.erl index 0b7a8bb075..5924930072 100644 --- a/lib/common_test/src/ct_logs.erl +++ b/lib/common_test/src/ct_logs.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2012. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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 @@ -35,9 +35,10 @@ -export([add_external_logs/1, add_link/3]). -export([make_last_run_index/0]). -export([make_all_suites_index/1,make_all_runs_index/1]). --export([get_ts_html_wrapper/4]). +-export([get_ts_html_wrapper/5]). -export([xhtml/2, locate_priv_file/1, make_relative/1]). -export([insert_javascript/1]). +-export([uri/1]). %% Logging stuff directly from testcase -export([tc_log/3, tc_log/4, tc_log_async/3, tc_print/3, tc_print/4, @@ -307,8 +308,8 @@ end_log() -> %%% calling test suite.</p> add_external_logs(Logs) -> start_log("External Logs"), - [cont_log("<a href=~p>~s</a>\n", - [filename:join("log_private",Log),Log]) || Log <- Logs], + [cont_log("<a href=\"~ts\">~ts</a>\n", + [uri(filename:join("log_private",Log)),Log]) || Log <- Logs], end_log(). %%%----------------------------------------------------------------- @@ -320,8 +321,8 @@ add_external_logs(Logs) -> %%% @doc Print a link to a given file stored in the priv_dir of the %%% calling test suite. add_link(Heading,File,Type) -> - log(Heading,"<a href=~p type=~p>~s</a>\n", - [filename:join("log_private",File),Type,File]). + log(Heading,"<a href=\"~ts\" type=~p>~ts</a>\n", + [uri(filename:join("log_private",File)),Type,File]). %%%----------------------------------------------------------------- @@ -469,7 +470,7 @@ ct_log(Category,Format,Args) -> %%%================================================================= %%% Internal functions int_header() -> - "<div class=\"ct_internal\"><b>*** CT ~s *** ~s</b>". + "<div class=\"ct_internal\"><b>*** CT ~s *** ~ts</b>". int_footer() -> "</div>". @@ -692,7 +693,7 @@ logger_loop(State) -> logger_loop(State); {set_stylesheet,TC,SSFile} -> Fd = State#logger_state.ct_log_fd, - io:format(Fd, "~p loading external style sheet: ~s~n", + io:format(Fd, "~p loading external style sheet: ~ts~n", [TC,SSFile]), logger_loop(State#logger_state{stylesheet = SSFile}); {clear_stylesheet,_} when State#logger_state.stylesheet == undefined -> @@ -752,7 +753,7 @@ print_to_log(sync, FromPid, TCGL, List, State) -> IoProc = if FromPid /= TCGL -> TCGL; true -> State#logger_state.ct_log_fd end, - io:format(IoProc, "~s", [lists:foldl(IoFun, [], List)]), + io:format(IoProc, "~ts", [lists:foldl(IoFun, [], List)]), State; print_to_log(async, FromPid, TCGL, List, State) -> @@ -764,7 +765,7 @@ print_to_log(async, FromPid, TCGL, List, State) -> end, Printer = fun() -> test_server:permit_io(IoProc, self()), - io:format(IoProc, "~s", [lists:foldl(IoFun, [], List)]) + io:format(IoProc, "~ts", [lists:foldl(IoFun, [], List)]) end, case State#logger_state.async_print_jobs of [] -> @@ -868,7 +869,7 @@ set_evmgr_gl(GL) -> end. open_ctlog() -> - {ok,Fd} = file:open(?ct_log_name,[write]), + {ok,Fd} = file:open(?ct_log_name,[write,{encoding,utf8}]), io:format(Fd, header("Common Test Framework Log", {[],[1,2],[]}), []), case file:consult(ct_run:variables_file_name("../")) of {ok,Vars} -> @@ -878,7 +879,7 @@ open_ctlog() -> Dir = filename:dirname(Cwd), Variables = ct_run:variables_file_name(Dir), io:format(Fd, - "Can not read the file \'~s\' Reason: ~w\n" + "Can not read the file \'~ts\' Reason: ~w\n" "No configuration found for test!!\n", [Variables,Reason]) end, @@ -904,7 +905,7 @@ print_style(Fd,undefined) -> print_style(Fd,StyleSheet) -> case file:read_file(StyleSheet) of {ok,Bin} -> - Str = binary_to_list(Bin), + Str = b2s(Bin,encoding(StyleSheet)), Pos0 = case string:str(Str,"<style>") of 0 -> string:str(Str,"<STYLE>"); N0 -> N0 @@ -919,9 +920,9 @@ print_style(Fd,StyleSheet) -> print_style_error(Fd,StyleSheet,missing_style_end_tag); Pos0 /= 0 -> Style = string:sub_string(Str,Pos0,Pos1+7), - io:format(Fd,"~s\n",[Style]); + io:format(Fd,"~ts\n",[Style]); Pos0 == 0 -> - io:format(Fd,"<style>~s</style>\n",[Str]) + io:format(Fd,"<style>~ts</style>\n",[Str]) end; {error,Reason} -> print_style_error(Fd,StyleSheet,Reason) @@ -934,7 +935,7 @@ print_style(Fd,StyleSheet) -> %% [StyleSheet]). print_style_error(Fd,StyleSheet,Reason) -> - io:format(Fd,"\n<!-- Failed to load stylesheet ~s: ~p -->\n", + io:format(Fd,"\n<!-- Failed to load stylesheet ~ts: ~p -->\n", [StyleSheet,Reason]), print_style(Fd,undefined). @@ -963,7 +964,7 @@ make_last_run_index(StartTime) -> % io:put_chars("done\n"), ok; Err -> - io:format("Unknown internal error while updating ~s. " + io:format("Unknown internal error while updating ~ts. " "Please report.\n(Err: ~p, ID: 1)", [AbsIndexName,Err]), {error, Err} @@ -1001,7 +1002,7 @@ make_last_run_index1(StartTime,IndexName) -> %% write current Totals to file, later to be used in all_runs log write_totals_file(?totals_name,Label,Logs1,Totals), Index = [Index0|index_footer()], - case force_write_file(IndexName, Index) of + case force_write_file(IndexName, unicode:characters_to_binary(Index)) of ok -> ok; {error, Reason} -> @@ -1085,7 +1086,7 @@ make_one_index_entry1(SuiteName, Link, Label, Success, Fail, UserSkip, AutoSkip, CrashDumpName = SuiteName ++ "_erl_crash.dump", case filelib:is_file(CrashDumpName) of true -> - [" <a href=\"", CrashDumpName, + [" <a href=\"", uri(CrashDumpName), "\">(CrashDump)</a>"]; false -> "" @@ -1115,10 +1116,10 @@ make_one_index_entry1(SuiteName, Link, Label, Success, Fail, UserSkip, AutoSkip, [] -> "none"; _ -> "<a href=\""++?all_runs_name++"\">Old Runs</a>" end, - A = xhtml(["<td><font size=\"-1\"><a href=\"",CtLogFile, + A = xhtml(["<td><font size=\"-1\"><a href=\"",uri(CtLogFile), "\">CT Log</a></font></td>\n", "<td><font size=\"-1\">",OldRunsLink,"</font></td>\n"], - ["<td><a href=\"",CtLogFile,"\">CT Log</a></td>\n", + ["<td><a href=\"",uri(CtLogFile),"\">CT Log</a></td>\n", "<td>",OldRunsLink,"</td>\n"]), {L,T,N,A}; false -> @@ -1128,7 +1129,8 @@ make_one_index_entry1(SuiteName, Link, Label, Success, Fail, UserSkip, AutoSkip, if NotBuilt == 0 -> ["<td align=right>",integer_to_list(NotBuilt),"</td>\n"]; true -> - ["<td align=right><a href=\"",filename:join(CtRunDir,?ct_log_name),"\">", + ["<td align=right><a href=\"", + uri(filename:join(CtRunDir,?ct_log_name)),"\">", integer_to_list(NotBuilt),"</a></td>\n"] end, FailStr = @@ -1151,7 +1153,7 @@ make_one_index_entry1(SuiteName, Link, Label, Success, Fail, UserSkip, AutoSkip, [xhtml("<tr valign=top>\n", ["<tr class=\"",odd_or_even(),"\">\n"]), xhtml("<td><font size=\"-1\"><a href=\"", "<td><a href=\""), - LogFile,"\">",SuiteName,"</a>", CrashDumpLink, + uri(LogFile),"\">",SuiteName,"</a>", CrashDumpLink, xhtml("</font></td>\n", "</td>\n"), Lbl, Timestamp, "<td align=right>",integer_to_list(Success),"</td>\n", @@ -1364,8 +1366,9 @@ header1(Title, SubTitle, TableCols) -> "<head>\n", "<title>" ++ Title ++ " " ++ SubTitle ++ "</title>\n", "<meta http-equiv=\"cache-control\" content=\"no-cache\">\n", + "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n", xhtml("", - ["<link rel=\"stylesheet\" href=\"",CSSFile,"\" type=\"text/css\">\n"]), + ["<link rel=\"stylesheet\" href=\"",uri(CSSFile),"\" type=\"text/css\">\n"]), xhtml("", ["<script type=\"text/javascript\" src=\"",JQueryFile, "\"></script>\n"]), @@ -1462,7 +1465,7 @@ count_cases(Dir) -> LogFile = filename:join(Dir, ?suitelog_name), case file:read_file(LogFile) of {ok, Bin} -> - case count_cases1(binary_to_list(Bin), + case count_cases1(b2s(Bin), {undefined,undefined,undefined,undefined}) of {error,not_complete} -> %% The test is not complete - dont write summary @@ -1557,7 +1560,7 @@ config_table1([{Key,Value}|Vars]) -> "<td><pre>",io_lib:format("~p",[Value]),"</pre></td></tr>\n"], ["<tr class=\"", odd_or_even(), "\">\n", "<td>", atom_to_list(Key), "</td>\n", - "<td>", io_lib:format("~p",[Value]), "</td>\n</tr>\n"]) | + "<td>", io_lib:format("~p",[Value]), "</td>\n</tr>\n"]) | config_table1(Vars)]; config_table1([]) -> ["</tbody>\n</table>\n"]. @@ -1574,8 +1577,9 @@ make_all_runs_index(When) -> DirsSorted = (catch sort_all_runs(Dirs)), Header = all_runs_header(), Index = [runentry(Dir) || Dir <- DirsSorted], - Result = file:write_file(AbsName,Header++Index++ - all_runs_index_footer()), + Result = file:write_file(AbsName, + unicode:characters_to_binary( + Header++Index++all_runs_index_footer())), if When == start -> ok; true -> io:put_chars("done\n") end, @@ -1602,10 +1606,27 @@ sort_all_runs(Dirs) -> interactive_link() -> [Dir|_] = lists:reverse(filelib:wildcard(logdir_prefix()++"*.*")), CtLog = filename:join(Dir,"ctlog.html"), - Body = ["Log from last interactive run: <a href=\"",CtLog,"\">", - timestamp(Dir),"</a>"], - file:write_file("last_interactive.html",Body), - io:format("~n~nUpdated ~s\n" + Body = + [xhtml( + ["<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n", + "<html>\n"], + ["<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n", + "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n", + "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"]), + "<!-- autogenerated by '"++atom_to_list(?MODULE)++"' -->\n", + "<head>\n", + "<title>Last interactive run</title>\n", + "<meta http-equiv=\"cache-control\" content=\"no-cache\">\n", + "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n", + "</head>\n", + "<body>\n", + "Log from last interactive run: <a href=\"",uri(CtLog),"\">", + timestamp(Dir),"</a>", + "</body>\n", + "</html>\n" + ], + file:write_file("last_interactive.html",unicode:characters_to_binary(Body)), + io:format("~n~nUpdated ~ts\n" "Any CT activities will be logged here\n", [?abs("last_interactive.html")]). @@ -1655,7 +1676,7 @@ runentry(Dir) -> TestNames; true -> Trunc = Polish(string:substr(TestNames,1,?testname_width-3)), - lists:flatten(io_lib:format("~s...",[Trunc])) + lists:flatten(io_lib:format("~ts...",[Trunc])) end, Total = TotSucc+TotFail+AllSkip, A = xhtml(["<td align=center><font size=\"-1\">",Node, @@ -1695,7 +1716,7 @@ runentry(Dir) -> "<td align=right>?</td>\n"], A++B++C end, - Index = filename:join(Dir,?index_name), + Index = uri(filename:join(Dir,?index_name)), [xhtml("<tr>\n", ["<tr class=\"",odd_or_even(),"\">\n"]), xhtml(["<td><font size=\"-1\"><a href=\"",Index,"\">",timestamp(Dir),"</a>", TotalsStr,"</font></td>\n"], @@ -1836,7 +1857,7 @@ make_all_suites_index(NewTestData = {_TestName,DirName}) -> ok -> ok; Err -> - io:format("Unknown internal error while updating ~s. " + io:format("Unknown internal error while updating ~ts. " "Please report.\n(Err: ~p, ID: 1)", [AbsIndexName,Err]), {error, Err} @@ -1900,7 +1921,7 @@ make_all_suites_index1(When, AbsIndexName, AllLogDirs) -> ok end; Err -> - io:format("Unknown internal error while updating ~s. " + io:format("Unknown internal error while updating ~ts. " "Please report.\n(Err: ~p, ID: 1)", [AbsIndexName,Err]), {error, Err} @@ -1912,7 +1933,7 @@ make_all_suites_index2(IndexName, AllTestLogDirs) -> all_suites_index_header(), 0, 0, 0, 0, 0, [], []), Index = [Index0|index_footer()], - case force_write_file(IndexName, Index) of + case force_write_file(IndexName, unicode:characters_to_binary(Index)) of ok -> {ok,CacheData}; {error, Reason} -> @@ -1970,7 +1991,7 @@ make_all_suites_ix_cached(AbsIndexName, NewTestData, Label, AllTestLogDirs) -> all_suites_index_header(IndexDir), 0, 0, 0, 0, 0), Index = [Index0|index_footer()], - case force_write_file(AbsIndexName, Index) of + case force_write_file(AbsIndexName, unicode:characters_to_binary(Index)) of ok -> ok; {error, Reason} -> @@ -2116,7 +2137,7 @@ simulate_logger_loop() -> receive {log,_,_,_,_,_,List} -> S = [[io_lib:format(Str,Args),io_lib:nl()] || {Str,Args} <- List], - io:format("~s",[S]), + io:format("~ts",[S]), simulate_logger_loop(); stop -> ok @@ -2273,11 +2294,12 @@ make_relative1(DirTs, CwdTs) -> Ups ++ DirTs. %%%----------------------------------------------------------------- -%%% @spec get_ts_html_wrapper(TestName, PrintLabel, Cwd) -> {Mode,Header,Footer} +%%% @spec get_ts_html_wrapper(TestName, PrintLabel, Cwd, TableCols, Encoding) +%%% -> {Mode,Header,Footer} %%% %%% @doc %%% -get_ts_html_wrapper(TestName, PrintLabel, Cwd, TableCols) -> +get_ts_html_wrapper(TestName, PrintLabel, Cwd, TableCols, Encoding) -> TestName1 = if is_list(TestName) -> lists:flatten(TestName); true -> @@ -2319,14 +2341,16 @@ get_ts_html_wrapper(TestName, PrintLabel, Cwd, TableCols) -> "<html>\n", "<head><title>", TestName1, "</title>\n", "<meta http-equiv=\"cache-control\" content=\"no-cache\">\n", + "<meta http-equiv=\"content-type\" content=\"text/html; charset=", + html_encoding(Encoding),"\">\n", "</head>\n", "<body", Bgr, " bgcolor=\"white\" text=\"black\" ", "link=\"blue\" vlink=\"purple\" alink=\"red\">\n", LabelStr, "\n"], ["<center>\n<br><hr><p>\n", - "<a href=\"", AllRuns, + "<a href=\"", uri(AllRuns), "\">Test run history\n</a> | ", - "<a href=\"", TestIndex, + "<a href=\"", uri(TestIndex), "\">Top level test index\n</a>\n</p>\n", Copyright,"</center>\n</body>\n</html>\n"]}; _ -> @@ -2363,14 +2387,15 @@ get_ts_html_wrapper(TestName, PrintLabel, Cwd, TableCols) -> "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n", "<head>\n<title>", TestName1, "</title>\n", "<meta http-equiv=\"cache-control\" content=\"no-cache\">\n", - "<link rel=\"stylesheet\" href=\"", CSSFile, "\" type=\"text/css\">\n", + "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n", + "<link rel=\"stylesheet\" href=\"", uri(CSSFile), "\" type=\"text/css\">\n", "<script type=\"text/javascript\" src=\"", JQueryFile, "\"></script>\n", "<script type=\"text/javascript\" src=\"", TableSorterFile, "\"></script>\n"] ++ TableSorterScript ++ ["</head>\n","<body>\n", LabelStr, "\n"], ["<center>\n<br /><hr /><p>\n", - "<a href=\"", AllRuns, + "<a href=\"", uri(AllRuns), "\">Test run history\n</a> | ", - "<a href=\"", TestIndex, + "<a href=\"", uri(TestIndex), "\">Top level test index\n</a>\n</p>\n", Copyright,"</center>\n</body>\n</html>\n"]} end. @@ -2460,3 +2485,31 @@ insert_javascript({tablesorter,TableName, " $(\"#",TableName,"\").trigger(\"update\");\n", " $(\"#",TableName,"\").trigger(\"appendCache\");\n", "});\n</script>\n"]. + +uri("") -> + ""; +uri(Href) -> + test_server_ctrl:uri_encode(Href). + +%% Read magic comment to get encoding of text file. +%% If no magic comment exists, assume default encoding +encoding(File) -> + case epp:read_encoding(File) of + none -> + epp:default_encoding(); + E -> + E + end. + +%% Convert binary to string using default encoding +b2s(Bin) -> + b2s(Bin,epp:default_encoding()). + +%% Convert binary to string using given encoding +b2s(Bin,Encoding) -> + unicode:characters_to_list(Bin,Encoding). + +html_encoding(latin1) -> + "iso-8859-1"; +html_encoding(utf8) -> + "utf-8". diff --git a/lib/common_test/src/ct_make.erl b/lib/common_test/src/ct_make.erl index 8ddb91d355..d4bd81e78d 100644 --- a/lib/common_test/src/ct_make.erl +++ b/lib/common_test/src/ct_make.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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 @@ -280,13 +280,13 @@ recompile(File, NoExec, Load, Opts) -> do_recompile(_File, true, _Load, _Opts) -> out_of_date; do_recompile(File, false, noload, Opts) -> - io:format("Recompile: ~s\n",[File]), + io:format("Recompile: ~ts\n",[File]), compile:file(File, [report_errors, report_warnings, error_summary |Opts]); do_recompile(File, false, load, Opts) -> - io:format("Recompile: ~s\n",[File]), + io:format("Recompile: ~ts\n",[File]), c:c(File, Opts); do_recompile(File, false, netload, Opts) -> - io:format("Recompile: ~s\n",[File]), + io:format("Recompile: ~ts\n",[File]), c:nc(File, Opts). exists(File) -> diff --git a/lib/common_test/src/ct_master.erl b/lib/common_test/src/ct_master.erl index f29eba605c..e516f635d2 100644 --- a/lib/common_test/src/ct_master.erl +++ b/lib/common_test/src/ct_master.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2012. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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 @@ -82,39 +82,48 @@ run_test(NodeOptsList) when is_list(NodeOptsList) -> %%% ExclNodes = [atom()] %%% %%% @doc Tests are spawned on the nodes as specified in <code>TestSpecs</code>. -%%% Each specification in TestSpec will be handled separately. It is however possible -%%% to also specify a list of specifications that should be merged into one before -%%% the tests are executed. Any test without a particular node specification will -%%% also be executed on the nodes in <code>InclNodes</code>. Nodes in the -%%% <code>ExclNodes</code> list will be excluded from the test. +%%% Each specification in TestSpec will be handled separately. It is however +%%% possible to also specify a list of specifications that should be merged +%%% into one before the tests are executed. Any test without a particular node +%%% specification will also be executed on the nodes in <code>InclNodes</code>. +%%% Nodes in the <code>ExclNodes</code> list will be excluded from the test. run([TS|TestSpecs],AllowUserTerms,InclNodes,ExclNodes) when is_list(TS), is_list(InclNodes), is_list(ExclNodes) -> - TS1 = - case TS of - List=[S|_] when is_list(S) -> List; - Spec -> [Spec] - end, - Result = - case catch ct_testspec:collect_tests_from_file(TS1,InclNodes,AllowUserTerms) of - {error,Reason} -> - {error,Reason}; - TSRec=#testspec{logdir=AllLogDirs, - config=StdCfgFiles, - userconfig=UserCfgFiles, - include=AllIncludes, - init=AllInitOpts, - event_handler=AllEvHs} -> - AllCfgFiles = {StdCfgFiles, UserCfgFiles}, - RunSkipPerNode = ct_testspec:prepare_tests(TSRec), - RunSkipPerNode2 = exclude_nodes(ExclNodes,RunSkipPerNode), - run_all(RunSkipPerNode2,AllLogDirs,AllCfgFiles,AllEvHs, - AllIncludes,[],[],AllInitOpts,TS1) - end, - [{TS,Result} | run(TestSpecs,AllowUserTerms,InclNodes,ExclNodes)]; + %% Note: [Spec] means run one test with Spec + %% [Spec1,Spec2] means run two tests separately + %% [[Spec1,Spec2]] means run one test, with the two specs merged + case catch ct_testspec:collect_tests_from_file([TS],InclNodes, + AllowUserTerms) of + {error,Reason} -> + [{error,Reason} | run(TestSpecs,AllowUserTerms,InclNodes,ExclNodes)]; + Tests -> + RunResult = + lists:map( + fun({Specs,TSRec=#testspec{logdir=AllLogDirs, + config=StdCfgFiles, + userconfig=UserCfgFiles, + include=AllIncludes, + init=AllInitOpts, + event_handler=AllEvHs}}) -> + AllCfgFiles = + {StdCfgFiles,UserCfgFiles}, + RunSkipPerNode = + ct_testspec:prepare_tests(TSRec), + RunSkipPerNode2 = + exclude_nodes(ExclNodes,RunSkipPerNode), + TSList = if is_integer(hd(TS)) -> [TS]; + true -> TS end, + {Specs,run_all(RunSkipPerNode2,AllLogDirs, + AllCfgFiles,AllEvHs, + AllIncludes,[],[],AllInitOpts,TSList)} + end, Tests), + RunResult ++ run(TestSpecs,AllowUserTerms,InclNodes,ExclNodes) + end; run([],_,_,_) -> []; -run(TS,AllowUserTerms,InclNodes,ExclNodes) when is_list(InclNodes), is_list(ExclNodes) -> +run(TS,AllowUserTerms,InclNodes,ExclNodes) when is_list(InclNodes), + is_list(ExclNodes) -> run([TS],AllowUserTerms,InclNodes,ExclNodes). %%%----------------------------------------------------------------- @@ -152,29 +161,32 @@ exclude_nodes([],RunSkipPerNode) -> %%% AllowUserTerms = bool() %%% Node = atom() %%% -%%% @doc Tests are spawned on <code>Node</code> according to <code>TestSpecs</code>. +%%% @doc Tests are spawned on <code>Node</code> according to +%%% <code>TestSpecs</code>. run_on_node([TS|TestSpecs],AllowUserTerms,Node) when is_list(TS),is_atom(Node) -> - TS1 = - case TS of - [List|_] when is_list(List) -> List; - Spec -> [Spec] - end, - Result = - case catch ct_testspec:collect_tests_from_file(TS1,[Node],AllowUserTerms) of - {error,Reason} -> - {error,Reason}; - TSRec=#testspec{logdir=AllLogDirs, - config=StdCfgFiles, - init=AllInitOpts, - include=AllIncludes, - userconfig=UserCfgFiles, - event_handler=AllEvHs} -> - AllCfgFiles = {StdCfgFiles, UserCfgFiles}, - {Run,Skip} = ct_testspec:prepare_tests(TSRec,Node), - run_all([{Node,Run,Skip}],AllLogDirs,AllCfgFiles,AllEvHs, - AllIncludes, [],[],AllInitOpts,TS1) - end, - [{TS,Result} | run_on_node(TestSpecs,AllowUserTerms,Node)]; + case catch ct_testspec:collect_tests_from_file([TS],[Node], + AllowUserTerms) of + {error,Reason} -> + [{error,Reason} | run_on_node(TestSpecs,AllowUserTerms,Node)]; + Tests -> + RunResult = + lists:map( + fun({Specs,TSRec=#testspec{logdir=AllLogDirs, + config=StdCfgFiles, + init=AllInitOpts, + include=AllIncludes, + userconfig=UserCfgFiles, + event_handler=AllEvHs}}) -> + AllCfgFiles = {StdCfgFiles,UserCfgFiles}, + {Run,Skip} = ct_testspec:prepare_tests(TSRec,Node), + TSList = if is_integer(hd(TS)) -> [TS]; + true -> TS end, + {Specs,run_all([{Node,Run,Skip}],AllLogDirs, + AllCfgFiles,AllEvHs, + AllIncludes, [],[],AllInitOpts,TSList)} + end, Tests), + RunResult ++ run_on_node(TestSpecs,AllowUserTerms,Node) + end; run_on_node([],_,_) -> []; run_on_node(TS,AllowUserTerms,Node) when is_atom(Node) -> @@ -244,8 +256,9 @@ run_all([],AllLogDirs,_,AllEvHs,_AllIncludes, {value,{_,Dir}} -> Dir; false -> "." end, - log(tty,"Master Logdir","~s",[MasterLogDir]), - start_master(lists:reverse(NodeOpts),Handlers,MasterLogDir,LogDirs,InitOptions,Specs), + log(tty,"Master Logdir","~ts",[MasterLogDir]), + start_master(lists:reverse(NodeOpts),Handlers,MasterLogDir, + LogDirs,InitOptions,Specs), ok. @@ -297,13 +310,15 @@ start_master(NodeOptsList) -> start_master(NodeOptsList,EvHandlers,MasterLogDir,LogDirs,InitOptions,Specs) -> Master = spawn_link(?MODULE,init_master,[self(),NodeOptsList,EvHandlers, - MasterLogDir,LogDirs,InitOptions,Specs]), + MasterLogDir,LogDirs, + InitOptions,Specs]), receive {Master,Result} -> Result end. %%% @hidden -init_master(Parent,NodeOptsList,EvHandlers,MasterLogDir,LogDirs,InitOptions,Specs) -> +init_master(Parent,NodeOptsList,EvHandlers,MasterLogDir,LogDirs, + InitOptions,Specs) -> case whereis(ct_master) of undefined -> register(ct_master,self()), @@ -325,13 +340,14 @@ init_master(Parent,NodeOptsList,EvHandlers,MasterLogDir,LogDirs,InitOptions,Spec {MLPid,_} = ct_master_logs:start(MasterLogDir, [N || {N,_} <- NodeOptsList]), log(all,"Master Logger process started","~w",[MLPid]), + case Specs of [] -> ok; _ -> SpecsStr = lists:map(fun(Name) -> Name ++ " " end,Specs), - ct_master_logs:log("Test Specification file(s)","~s", + ct_master_logs:log("Test Specification file(s)","~ts", [lists:flatten(SpecsStr)]) end, @@ -340,7 +356,7 @@ init_master(Parent,NodeOptsList,EvHandlers,MasterLogDir,LogDirs,InitOptions,Spec ct_master_event:add_handler(), %% add user handlers for master event manager Add = fun({H,Args}) -> - log(all,"Adding Event Handler","~p",[H]), + log(all,"Adding Event Handler","~w",[H]), case gen_event:add_handler(?CT_MEVMGR_REF,H,Args) of ok -> ok; {'EXIT',Why} -> exit(Why); @@ -359,7 +375,8 @@ init_master(Parent,NodeOptsList,EvHandlers,MasterLogDir,LogDirs,InitOptions,Spec init_master1(Parent,NodeOptsList,InitOptions,LogDirs). init_master1(Parent,NodeOptsList,InitOptions,LogDirs) -> - {Inaccessible,NodeOptsList1,InitOptions1} = init_nodes(NodeOptsList,InitOptions), + {Inaccessible,NodeOptsList1,InitOptions1} = init_nodes(NodeOptsList, + InitOptions), case Inaccessible of [] -> init_master2(Parent,NodeOptsList,LogDirs); @@ -391,8 +408,9 @@ init_master2(Parent,NodeOptsList,LogDirs) -> SpawnAndMon = fun({Node,Opts}) -> monitor_node(Node,true), - log(all,"Test Info","Starting test(s) on ~p...",[Node]), - {spawn_link(Node,?MODULE,init_node_ctrl,[self(),Cookie,Opts]),Node} + log(all,"Test Info","Starting test(s) on ~w...",[Node]), + {spawn_link(Node,?MODULE,init_node_ctrl,[self(),Cookie,Opts]), + Node} end, NodeCtrlPids = lists:map(SpawnAndMon,NodeOptsList), Result = master_loop(#state{node_ctrl_pids=NodeCtrlPids, @@ -404,7 +422,8 @@ master_loop(#state{node_ctrl_pids=[], results=Finished}) -> Str = lists:map(fun({Node,Result}) -> - io_lib:format("~-40.40.*s~p\n",[$_,atom_to_list(Node),Result]) + io_lib:format("~-40.40.*ts~p\n", + [$_,atom_to_list(Node),Result]) end,lists:reverse(Finished)), log(all,"TEST RESULTS",Str,[]), log(all,"Info","Updating log files",[]), @@ -437,18 +456,20 @@ master_loop(State=#state{node_ctrl_pids=NodeCtrlPids, Bad end, log(all,"Test Info", - "Test on node ~w failed! Reason: ~p",[Node,Error]), + "Test on node ~w failed! Reason: ~p", + [Node,Error]), {Locks1,Blocked1} = update_queue(exit,Node,Locks,Blocked), master_loop(State#state{node_ctrl_pids=NodeCtrlPids1, - results=[{Node,Error}|Results], + results=[{Node, + Error}|Results], locks=Locks1, blocked=Blocked1}) end; undefined -> %% ignore (but report) exit from master_logger etc log(all,"Test Info", - "Warning! Process ~p has terminated. Reason: ~p", + "Warning! Process ~w has terminated. Reason: ~p", [Pid,Reason]), master_loop(State) end; @@ -531,7 +552,7 @@ update_queue(take,Node,From,Lock={Op,Resource},Locks,Blocked) -> %% Blocked: [{{Operation,Resource},Node,WaitingPid},...] case lists:keysearch(Lock,1,Locks) of {value,{_Lock,Owner}} -> % other node has lock - log(html,"Lock Info","Node ~p blocked on ~w by ~w. Resource: ~p", + log(html,"Lock Info","Node ~w blocked on ~w by ~w. Resource: ~p", [Node,Op,Owner,Resource]), Blocked1 = Blocked ++ [{Lock,Node,From}], {Locks,Blocked1}; @@ -546,7 +567,7 @@ update_queue(release,Node,_From,Lock={Op,Resource},Locks,Blocked) -> case lists:keysearch(Lock,1,Blocked) of {value,E={Lock,SomeNode,WaitingPid}} -> Blocked1 = lists:delete(E,Blocked), - log(html,"Lock Info","Node ~p proceeds with ~w. Resource: ~p", + log(html,"Lock Info","Node ~w proceeds with ~w. Resource: ~p", [SomeNode,Op,Resource]), reply(ok,WaitingPid), % waiting process may start {Locks1,Blocked1}; @@ -625,7 +646,8 @@ refresh_logs([D|Dirs],Refreshed) -> refresh_logs([],Refreshed) -> Str = lists:map(fun({D,Result}) -> - io_lib:format("Refreshing logs in ~p... ~p",[D,Result]) + io_lib:format("Refreshing logs in ~p... ~p", + [D,Result]) end,Refreshed), log(all,"Info",Str,[]). @@ -638,7 +660,7 @@ init_node_ctrl(MasterPid,Cookie,Opts) -> process_flag(trap_exit, true), MasterNode = node(MasterPid), group_leader(whereis(user),self()), - io:format("~n********** node_ctrl process ~p started on ~p **********~n", + io:format("~n********** node_ctrl process ~w started on ~w **********~n", [self(),node()]), %% initially this node must have the same cookie as the master node %% but now we set it explicitly for the connection so that test suites @@ -671,7 +693,7 @@ init_node_ctrl(MasterPid,Cookie,Opts) -> pong -> MasterPid ! {self(),{result,Result}}; pang -> - io:format("Warning! Connection to master node ~p is lost. " + io:format("Warning! Connection to master node ~w is lost. " "Can't report result!~n~n", [MasterNode]) end. @@ -752,21 +774,25 @@ start_nodes(InitOptions)-> IsAlive = lists:member(NodeName, nodes()), case {HasNodeStart, IsAlive} of {false, false}-> - io:format("WARNING: Node ~p is not alive but has no node_start option~n", [NodeName]); + io:format("WARNING: Node ~w is not alive but has no " + "node_start option~n", [NodeName]); {false, true}-> - io:format("Node ~p is alive~n", [NodeName]); + io:format("Node ~w is alive~n", [NodeName]); {true, false}-> {node_start, NodeStart} = lists:keyfind(node_start, 1, Options), {value, {callback_module, Callback}, NodeStart2}= lists:keytake(callback_module, 1, NodeStart), case Callback:start(Host, Node, NodeStart2) of {ok, NodeName} -> - io:format("Node ~p started successfully with callback ~p~n", [NodeName,Callback]); + io:format("Node ~w started successfully " + "with callback ~w~n", [NodeName,Callback]); {error, Reason, _NodeName} -> - io:format("Failed to start node ~p with callback ~p! Reason: ~p~n", [NodeName, Callback, Reason]) + io:format("Failed to start node ~w with callback ~w! " + "Reason: ~p~n", [NodeName, Callback, Reason]) end; {true, true}-> - io:format("WARNING: Node ~p is alive but has node_start option~n", [NodeName]) + io:format("WARNING: Node ~w is alive but has node_start " + "option~n", [NodeName]) end end, InitOptions). @@ -779,7 +805,8 @@ eval_on_nodes(InitOptions)-> {false,_}-> ok; {true,false}-> - io:format("WARNING: Node ~p is not alive but has eval option ~n", [NodeName]); + io:format("WARNING: Node ~w is not alive but has eval " + "option~n", [NodeName]); {true,true}-> {eval, MFAs} = lists:keyfind(eval, 1, Options), evaluate(NodeName, MFAs) @@ -790,9 +817,11 @@ eval_on_nodes(InitOptions)-> evaluate(Node, [{M,F,A}|MFAs])-> case rpc:call(Node, M, F, A) of {badrpc,Reason}-> - io:format("WARNING: Failed to call ~p:~p/~p on node ~p due to ~p~n", [M,F,length(A),Node,Reason]); + io:format("WARNING: Failed to call ~w:~w/~w on node ~w " + "due to ~p~n", [M,F,length(A),Node,Reason]); Result-> - io:format("Called ~p:~p/~p on node ~p, result: ~p~n", [M,F,length(A),Node,Result]) + io:format("Called ~w:~w/~w on node ~w, result: ~p~n", + [M,F,length(A),Node,Result]) end, evaluate(Node, MFAs); evaluate(_Node, [])-> diff --git a/lib/common_test/src/ct_master_event.erl b/lib/common_test/src/ct_master_event.erl index a70baefaaf..5877b7c6f2 100644 --- a/lib/common_test/src/ct_master_event.erl +++ b/lib/common_test/src/ct_master_event.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2009. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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 @@ -114,13 +114,13 @@ init(_) -> %% each installed event handler to handle the event. %%-------------------------------------------------------------------- handle_event(#event{name=start_logging,node=Node,data=RunDir},State) -> - ct_master_logs:log("CT Master Event Handler","Got ~s from ~p",[RunDir,Node]), + ct_master_logs:log("CT Master Event Handler","Got ~ts from ~w",[RunDir,Node]), ct_master_logs:nodedir(Node,RunDir), {ok,State}; handle_event(#event{name=Name,node=Node,data=Data},State) -> print("~n=== ~w ===~n", [?MODULE]), - print("~p on ~p: ~p~n", [Name,Node,Data]), + print("~w on ~w: ~p~n", [Name,Node,Data]), {ok,State}. %%-------------------------------------------------------------------- diff --git a/lib/common_test/src/ct_master_logs.erl b/lib/common_test/src/ct_master_logs.erl index 84f175c0a9..5393097f57 100644 --- a/lib/common_test/src/ct_master_logs.erl +++ b/lib/common_test/src/ct_master_logs.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2012. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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 @@ -133,7 +133,7 @@ init(Parent,LogDir,Nodes) -> end,Nodes)), io:format(CtLogFd,int_header(),[log_timestamp(now()),"Test Nodes\n"]), - io:format(CtLogFd,"~s\n",[NodeStr]), + io:format(CtLogFd,"~ts\n",[NodeStr]), io:put_chars(CtLogFd,[int_footer(),"\n"]), NodeDirIxFd = open_nodedir_index(RunDirAbs,Time), @@ -201,7 +201,7 @@ loop(State) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%% open_ct_master_log(Dir) -> FullName = filename:join(Dir,?ct_master_log_name), - {ok,Fd} = file:open(FullName,[write]), + {ok,Fd} = file:open(FullName,[write,{encoding,utf8}]), io:put_chars(Fd,header("Common Test Master Log", {[],[1,2],[]})), %% maybe add config info here later io:put_chars(Fd,config_table([])), @@ -235,7 +235,7 @@ config_table1([]) -> ["</tbody>\n</table>\n"]. int_header() -> - "<div class=\"ct_internal\"><b>*** CT MASTER ~s *** ~s</b>". + "<div class=\"ct_internal\"><b>*** CT MASTER ~s *** ~ts</b>". int_footer() -> "</div>". @@ -244,7 +244,7 @@ int_footer() -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% open_nodedir_index(Dir,StartTime) -> FullName = filename:join(Dir,?nodedir_index_name), - {ok,Fd} = file:open(FullName,[write]), + {ok,Fd} = file:open(FullName,[write,{encoding,utf8}]), io:put_chars(Fd,nodedir_index_header(StartTime)), Fd. @@ -253,7 +253,8 @@ print_nodedir(Node,RunDir,Fd) -> io:put_chars(Fd, ["<tr>\n" "<td align=center>",atom_to_list(Node),"</td>\n", - "<td align=left><a href=\"",Index,"\">",Index,"</a></td>\n", + "<td align=left><a href=\"",ct_logs:uri(Index),"\">",Index, + "</a></td>\n", "</tr>\n"]), ok. @@ -283,7 +284,9 @@ make_all_runs_index(LogDir) -> DirsSorted = (catch sort_all_runs(Dirs)), Header = all_runs_header(), Index = [runentry(Dir) || Dir <- DirsSorted], - Result = file:write_file(FullName,Header++Index++index_footer()), + Result = file:write_file(FullName, + unicode:characters_to_binary( + Header++Index++index_footer())), Result. sort_all_runs(Dirs) -> @@ -323,7 +326,8 @@ runentry(Dir) -> end, Index = filename:join(Dir,?nodedir_index_name), ["<tr>\n" - "<td align=center><a href=\"",Index,"\">",timestamp(Dir),"</a></td>\n", + "<td align=center><a href=\"",ct_logs:uri(Index),"\">", + timestamp(Dir),"</a></td>\n", "<td align=center>",MasterStr,"</td>\n", "<td align=center>",NodesStr,"</td>\n", "</tr>\n"]. @@ -381,8 +385,10 @@ header(Title, TableCols) -> "<head>\n", "<title>" ++ Title ++ "</title>\n", "<meta http-equiv=\"cache-control\" content=\"no-cache\">\n", + "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n", xhtml("", - ["<link rel=\"stylesheet\" href=\"",CSSFile,"\" type=\"text/css\">"]), + ["<link rel=\"stylesheet\" href=\"",ct_logs:uri(CSSFile), + "\" type=\"text/css\">"]), xhtml("", ["<script type=\"text/javascript\" src=\"",JQueryFile, "\"></script>\n"]), diff --git a/lib/common_test/src/ct_master_status.erl b/lib/common_test/src/ct_master_status.erl index 76060fb7bb..f9f511ecca 100644 --- a/lib/common_test/src/ct_master_status.erl +++ b/lib/common_test/src/ct_master_status.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2009. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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 @@ -70,7 +70,7 @@ init(_) -> %% handle_event(#event{name=Name,node=Node,data=Data},State) -> print("~n=== ~w ===~n", [?MODULE]), - print("~p on ~p: ~p~n", [Name,Node,Data]), + print("~w on ~w: ~p~n", [Name,Node,Data]), {ok,State}. %%-------------------------------------------------------------------- diff --git a/lib/common_test/src/ct_netconfc.erl b/lib/common_test/src/ct_netconfc.erl index 1ccbc86d8f..1339e53780 100644 --- a/lib/common_test/src/ct_netconfc.erl +++ b/lib/common_test/src/ct_netconfc.erl @@ -1,7 +1,7 @@ %%---------------------------------------------------------------------- %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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 @@ -1281,10 +1281,11 @@ do_send(Connection, SimpleXml) -> to_xml_doc(Simple) -> Prolog = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>", - Xml = list_to_binary(xmerl:export_simple([Simple], - xmerl_xml, - [#xmlAttribute{name=prolog, - value=Prolog}])), + Xml = unicode:characters_to_binary( + xmerl:export_simple([Simple], + xmerl_xml, + [#xmlAttribute{name=prolog, + value=Prolog}])), <<Xml/binary,?END_TAG/binary>>. %%%----------------------------------------------------------------- @@ -1688,18 +1689,27 @@ log(#connection{host=Host,port=Port,name=Name},Action,Data) -> %% Log callback - called from the error handler process -format_data(raw,Data) -> - io_lib:format("~n~s~n",[hide_password(Data)]); -format_data(pretty,Data) -> - io_lib:format("~n~s~n",[indent(Data)]); -format_data(html,Data) -> - io_lib:format("~n~s~n",[html_format(Data)]). +format_data(How,Data) -> + %% Assuming that the data is encoded as UTF-8. If it is not, then + %% the printout might be wrong, but the format function will not + %% crash! + %% FIXME: should probably read encoding from the data and do + %% unicode:characters_to_binary(Data,InEncoding,utf8) when calling + %% log/3 instead of assuming utf8 in as done here! + do_format_data(How,unicode:characters_to_binary(Data)). + +do_format_data(raw,Data) -> + io_lib:format("~n~ts~n",[hide_password(Data)]); +do_format_data(pretty,Data) -> + io_lib:format("~n~ts~n",[indent(Data)]); +do_format_data(html,Data) -> + io_lib:format("~n~ts~n",[html_format(Data)]). %%%----------------------------------------------------------------- %%% Hide password elements from XML data hide_password(Bin) -> re:replace(Bin,<<"(<password[^>]*>)[^<]*(</password>)">>,<<"\\1*****\\2">>, - [global,{return,binary}]). + [global,{return,binary},unicode]). %%%----------------------------------------------------------------- %%% HTML formatting @@ -1717,13 +1727,13 @@ indent(Bin) -> Part -> indent1(lists:reverse(Part)++String,erase(indent)) end, - list_to_binary(IndentedString). + unicode:characters_to_binary(IndentedString). %% Normalizes the XML document by removing all space and newline %% between two XML tags. %% Returns a list, no matter if the input was a list or a binary. -normalize(Str) -> - re:replace(Str,<<">[ \r\n\t]+<">>,<<"><">>,[global,{return,list}]). +normalize(Bin) -> + re:replace(Bin,<<">[ \r\n\t]+<">>,<<"><">>,[global,{return,list},unicode]). indent1("<?"++Rest1,Indent1) -> diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl index eb05c90ba8..c0bdbb2a09 100644 --- a/lib/common_test/src/ct_run.erl +++ b/lib/common_test/src/ct_run.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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 @@ -148,7 +148,7 @@ script_start(Args) -> _ -> "" end end, - io:format("~nCommon Test~s starting (cwd is ~s)~n~n", + io:format("~nCommon Test~s starting (cwd is ~ts)~n~n", [CTVsn,Cwd]), Self = self(), Pid = spawn_link(fun() -> script_start1(Self, Args) end), @@ -330,33 +330,33 @@ script_start1(Parent, Args) -> true end, - StartOpts = #opts{label = Label, profile = Profile, - vts = Vts, shell = Shell, - cover = Cover, cover_stop = CoverStop, - logdir = LogDir, logopts = LogOpts, - basic_html = BasicHtml, - verbosity = Verbosity, - event_handlers = EvHandlers, - ct_hooks = CTHooks, - enable_builtin_hooks = EnableBuiltinHooks, - auto_compile = AutoCompile, - include = IncludeDirs, - silent_connections = SilentConns, - stylesheet = Stylesheet, - multiply_timetraps = MultTT, - scale_timetraps = ScaleTT, - create_priv_dir = CreatePrivDir, - starter = script}, - + Opts = #opts{label = Label, profile = Profile, + vts = Vts, shell = Shell, + cover = Cover, cover_stop = CoverStop, + logdir = LogDir, logopts = LogOpts, + basic_html = BasicHtml, + verbosity = Verbosity, + event_handlers = EvHandlers, + ct_hooks = CTHooks, + enable_builtin_hooks = EnableBuiltinHooks, + auto_compile = AutoCompile, + include = IncludeDirs, + silent_connections = SilentConns, + stylesheet = Stylesheet, + multiply_timetraps = MultTT, + scale_timetraps = ScaleTT, + create_priv_dir = CreatePrivDir, + starter = script}, + %% check if log files should be refreshed or go on to run tests... - Result = run_or_refresh(StartOpts, Args), + Result = run_or_refresh(Opts, Args), %% send final results to starting process waiting in script_start/0 Parent ! {self(), Result}. -run_or_refresh(StartOpts = #opts{logdir = LogDir}, Args) -> +run_or_refresh(Opts = #opts{logdir = LogDir}, Args) -> case proplists:get_value(refresh_logs, Args) of undefined -> - script_start2(StartOpts, Args); + script_start2(Opts, Args); Refresh -> LogDir1 = case Refresh of [] -> which(logdir,LogDir); @@ -378,171 +378,203 @@ run_or_refresh(StartOpts = #opts{logdir = LogDir}, Args) -> {error,{all_suites_index,ASReason}}; _ -> file:set_cwd(Cwd), - io:format("Logs in ~s refreshed!~n~n", [LogDir1]), + io:format("Logs in ~ts refreshed!~n~n", + [LogDir1]), timer:sleep(500), % time to flush io before quitting ok end end end. -script_start2(StartOpts = #opts{vts = undefined, - shell = undefined}, Args) -> - TestSpec = proplists:get_value(spec, Args), - {Terms,Opts} = - case TestSpec of - Specs when Specs =/= [], Specs =/= undefined -> - %% using testspec as input for test - Relaxed = get_start_opt(allow_user_terms, true, false, Args), - case catch ct_testspec:collect_tests_from_file(Specs, Relaxed) of - {E,Reason} when E == error ; E == 'EXIT' -> - {{error,Reason},StartOpts}; - TS -> - SpecStartOpts = get_data_for_node(TS, node()), - - Label = choose_val(StartOpts#opts.label, - SpecStartOpts#opts.label), - - Profile = choose_val(StartOpts#opts.profile, - SpecStartOpts#opts.profile), - - LogDir = choose_val(StartOpts#opts.logdir, - SpecStartOpts#opts.logdir), - - AllLogOpts = merge_vals([StartOpts#opts.logopts, - SpecStartOpts#opts.logopts]), - AllVerbosity = - merge_keyvals([StartOpts#opts.verbosity, - SpecStartOpts#opts.verbosity]), - AllSilentConns = - merge_vals([StartOpts#opts.silent_connections, - SpecStartOpts#opts.silent_connections]), - Cover = - choose_val(StartOpts#opts.cover, - SpecStartOpts#opts.cover), - CoverStop = - choose_val(StartOpts#opts.cover_stop, - SpecStartOpts#opts.cover_stop), - MultTT = - choose_val(StartOpts#opts.multiply_timetraps, - SpecStartOpts#opts.multiply_timetraps), - ScaleTT = - choose_val(StartOpts#opts.scale_timetraps, - SpecStartOpts#opts.scale_timetraps), - - CreatePrivDir = - choose_val(StartOpts#opts.create_priv_dir, - SpecStartOpts#opts.create_priv_dir), - - AllEvHs = - merge_vals([StartOpts#opts.event_handlers, - SpecStartOpts#opts.event_handlers]), - - AllCTHooks = merge_vals( - [StartOpts#opts.ct_hooks, - SpecStartOpts#opts.ct_hooks]), - - EnableBuiltinHooks = - choose_val( - StartOpts#opts.enable_builtin_hooks, - SpecStartOpts#opts.enable_builtin_hooks), - - Stylesheet = - choose_val(StartOpts#opts.stylesheet, - SpecStartOpts#opts.stylesheet), - - AllInclude = merge_vals([StartOpts#opts.include, - SpecStartOpts#opts.include]), - application:set_env(common_test, include, AllInclude), - - AutoCompile = - case choose_val(StartOpts#opts.auto_compile, - SpecStartOpts#opts.auto_compile) of - undefined -> - true; - ACBool -> - application:set_env(common_test, - auto_compile, - ACBool), - ACBool - end, - - BasicHtml = - case choose_val(StartOpts#opts.basic_html, - SpecStartOpts#opts.basic_html) of - undefined -> - false; - BHBool -> - application:set_env(common_test, basic_html, - BHBool), - BHBool - end, - - {TS,StartOpts#opts{label = Label, - profile = Profile, - testspecs = Specs, - cover = Cover, - cover_stop = CoverStop, - logdir = LogDir, - logopts = AllLogOpts, - basic_html = BasicHtml, - verbosity = AllVerbosity, - silent_connections = AllSilentConns, - config = SpecStartOpts#opts.config, - event_handlers = AllEvHs, - ct_hooks = AllCTHooks, - enable_builtin_hooks = - EnableBuiltinHooks, - stylesheet = Stylesheet, - auto_compile = AutoCompile, - include = AllInclude, - multiply_timetraps = MultTT, - scale_timetraps = ScaleTT, - create_priv_dir = CreatePrivDir}} - end; - _ -> - {undefined,StartOpts} - end, - %% read config/userconfig from start flags - InitConfig = ct_config:prepare_config_list(Args), - TheLogDir = which(logdir, Opts#opts.logdir), - case {TestSpec,Terms} of - {_,{error,_}=Error} -> - Error; - {[],_} -> +script_start2(Opts = #opts{vts = undefined, + shell = undefined}, Args) -> + case proplists:get_value(spec, Args) of + Specs when Specs =/= [], Specs =/= undefined -> + Specs1 = get_start_opt(join_specs, [Specs], Specs, Args), + %% using testspec as input for test + Relaxed = get_start_opt(allow_user_terms, true, false, Args), + case catch ct_testspec:collect_tests_from_file(Specs1, Relaxed) of + {E,Reason} when E == error ; E == 'EXIT' -> + {error,Reason}; + TestSpecData -> + execute_all_specs(TestSpecData, Opts, Args, []) + end; + [] -> {error,no_testspec_specified}; - {undefined,_} -> % no testspec used - case check_and_install_configfiles(InitConfig, TheLogDir, Opts) of + _ -> % no testspec used + %% read config/userconfig from start flags + InitConfig = ct_config:prepare_config_list(Args), + TheLogDir = which(logdir, Opts#opts.logdir), + 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); Error -> Error - end; - {_,_} -> % 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) of - ok -> % read tests from spec - {Run,Skip} = ct_testspec:prepare_tests(Terms, node()), - do_run(Run, Skip, Opts#opts{config=AllConfig, - logdir=TheLogDir}, Args); - Error -> - Error end end; -script_start2(StartOpts, Args) -> +script_start2(Opts, 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) of + LogDir = which(logdir, Opts#opts.logdir), + case check_and_install_configfiles(InitConfig, LogDir, Opts) of ok -> % go on read tests from start flags - script_start3(StartOpts#opts{config=InitConfig, - logdir=LogDir}, Args); + script_start3(Opts#opts{config=InitConfig, + logdir=LogDir}, Args); + Error -> + Error + end. + +execute_all_specs([], _, _, Result) -> + Result1 = lists:reverse(Result), + case lists:keysearch('EXIT', 1, Result1) of + {value,{_,_,ExitReason}} -> + exit(ExitReason); + false -> + case lists:keysearch(error, 1, Result1) of + {value,Error} -> + Error; + false -> + lists:foldl(fun({Ok,Fail,{UserSkip,AutoSkip}}, + {Ok1,Fail1,{UserSkip1,AutoSkip1}}) -> + {Ok1+Ok,Fail1+Fail, + {UserSkip1+UserSkip, + AutoSkip1+AutoSkip}} + end, {0,0,{0,0}}, Result1) + end + end; + +execute_all_specs([{Specs,TS} | TSs], Opts, Args, Result) -> + CombinedOpts = combine_test_opts(TS, Specs, Opts), + try execute_one_spec(TS, CombinedOpts, Args) of + ExecResult -> + execute_all_specs(TSs, Opts, Args, [ExecResult|Result]) + catch + _ : ExitReason -> + execute_all_specs(TSs, Opts, Args, + [{'EXIT',self(),ExitReason}|Result]) + end. + +execute_one_spec(TS, Opts, Args) -> + %% read config/userconfig from start flags + InitConfig = ct_config:prepare_config_list(Args), + TheLogDir = which(logdir, Opts#opts.logdir), + %% merge config from start flags with config from testspec + AllConfig = merge_vals([InitConfig, Opts#opts.config]), + case check_and_install_configfiles(AllConfig, TheLogDir, Opts) of + ok -> % read tests from spec + {Run,Skip} = ct_testspec:prepare_tests(TS, node()), + do_run(Run, Skip, Opts#opts{config=AllConfig, + logdir=TheLogDir}, Args); Error -> Error end. +combine_test_opts(TS, Specs, Opts) -> + TSOpts = get_data_for_node(TS, node()), + + Label = choose_val(Opts#opts.label, + TSOpts#opts.label), + + Profile = choose_val(Opts#opts.profile, + TSOpts#opts.profile), + + LogDir = choose_val(Opts#opts.logdir, + TSOpts#opts.logdir), + + AllLogOpts = merge_vals([Opts#opts.logopts, + TSOpts#opts.logopts]), + AllVerbosity = + merge_keyvals([Opts#opts.verbosity, + TSOpts#opts.verbosity]), + AllSilentConns = + merge_vals([Opts#opts.silent_connections, + TSOpts#opts.silent_connections]), + Cover = + choose_val(Opts#opts.cover, + TSOpts#opts.cover), + CoverStop = + choose_val(Opts#opts.cover_stop, + TSOpts#opts.cover_stop), + MultTT = + choose_val(Opts#opts.multiply_timetraps, + TSOpts#opts.multiply_timetraps), + ScaleTT = + choose_val(Opts#opts.scale_timetraps, + TSOpts#opts.scale_timetraps), + + CreatePrivDir = + choose_val(Opts#opts.create_priv_dir, + TSOpts#opts.create_priv_dir), + + AllEvHs = + merge_vals([Opts#opts.event_handlers, + TSOpts#opts.event_handlers]), + + AllCTHooks = merge_vals( + [Opts#opts.ct_hooks, + TSOpts#opts.ct_hooks]), + + EnableBuiltinHooks = + choose_val( + Opts#opts.enable_builtin_hooks, + TSOpts#opts.enable_builtin_hooks), + + Stylesheet = + choose_val(Opts#opts.stylesheet, + TSOpts#opts.stylesheet), + + AllInclude = merge_vals([Opts#opts.include, + TSOpts#opts.include]), + application:set_env(common_test, include, AllInclude), + + AutoCompile = + case choose_val(Opts#opts.auto_compile, + TSOpts#opts.auto_compile) of + undefined -> + true; + ACBool -> + application:set_env(common_test, + auto_compile, + ACBool), + ACBool + end, + + BasicHtml = + case choose_val(Opts#opts.basic_html, + TSOpts#opts.basic_html) of + undefined -> + false; + BHBool -> + application:set_env(common_test, basic_html, + BHBool), + BHBool + end, + + Opts#opts{label = Label, + profile = Profile, + testspecs = Specs, + cover = Cover, + cover_stop = CoverStop, + logdir = which(logdir, LogDir), + logopts = AllLogOpts, + basic_html = BasicHtml, + verbosity = AllVerbosity, + silent_connections = AllSilentConns, + config = TSOpts#opts.config, + event_handlers = AllEvHs, + ct_hooks = AllCTHooks, + enable_builtin_hooks = EnableBuiltinHooks, + stylesheet = Stylesheet, + auto_compile = AutoCompile, + include = AllInclude, + multiply_timetraps = MultTT, + scale_timetraps = ScaleTT, + create_priv_dir = CreatePrivDir}. + check_and_install_configfiles( Configs, LogDir, #opts{ event_handlers = EvHandlers, @@ -562,12 +594,12 @@ check_and_install_configfiles( {error,{cant_load_callback_module,Info}} end. -script_start3(StartOpts, Args) -> - StartOpts1 = get_start_opt(step, - fun(Step) -> - StartOpts#opts{step = Step, - cover = undefined} - end, StartOpts, Args), +script_start3(Opts, Args) -> + Opts1 = get_start_opt(step, + fun(Step) -> + Opts#opts{step = Step, + cover = undefined} + end, Opts, Args), case {proplists:get_value(dir, Args), proplists:get_value(suite, Args), groups_and_cases(proplists:get_value(group, Args), @@ -581,17 +613,17 @@ script_start3(StartOpts, Args) -> {error,no_dir_specified}; {Dirs,undefined,[]} when is_list(Dirs) -> - script_start4(StartOpts#opts{tests = tests(Dirs)}, Args); + script_start4(Opts#opts{tests = tests(Dirs)}, Args); {undefined,Suites,[]} when is_list(Suites) -> Ts = tests([suite_to_test(S) || S <- Suites]), - script_start4(StartOpts1#opts{tests = Ts}, Args); + script_start4(Opts1#opts{tests = Ts}, Args); {undefined,Suite,GsAndCs} when is_list(Suite) -> case [suite_to_test(S) || S <- Suite] of DirMods = [_] -> Ts = tests(DirMods, GsAndCs), - script_start4(StartOpts1#opts{tests = Ts}, Args); + script_start4(Opts1#opts{tests = Ts}, Args); [_,_|_] -> {error,multiple_suites_and_cases}; _ -> @@ -605,10 +637,10 @@ script_start3(StartOpts, Args) -> case [suite_to_test(Dir,S) || S <- Suite] of DirMods when GsAndCs == [] -> Ts = tests(DirMods), - script_start4(StartOpts1#opts{tests = Ts}, Args); + script_start4(Opts1#opts{tests = Ts}, Args); DirMods = [_] when GsAndCs /= [] -> Ts = tests(DirMods, GsAndCs), - script_start4(StartOpts1#opts{tests = Ts}, Args); + script_start4(Opts1#opts{tests = Ts}, Args); [_,_|_] when GsAndCs /= [] -> {error,multiple_suites_and_cases}; _ -> @@ -619,8 +651,8 @@ script_start3(StartOpts, Args) -> {error,incorrect_start_options}; {undefined,undefined,_} -> - if StartOpts#opts.vts ; StartOpts#opts.shell -> - script_start4(StartOpts#opts{tests = []}, Args); + if Opts#opts.vts ; Opts#opts.shell -> + script_start4(Opts#opts{tests = []}, Args); true -> script_usage(), {error,missing_start_options} @@ -750,6 +782,7 @@ script_usage() -> "\n\t[-logopts LogOpt1 LogOpt2 .. LogOptN]" "\n\t[-verbosity GenVLvl | [CategoryVLvl1 .. CategoryVLvlN]]" "\n\t[-allow_user_terms]" + "\n\t[-join_specs]" "\n\t[-silent_connections [ConnType1 ConnType2 .. ConnTypeN]]" "\n\t[-stylesheet CSSFile]" "\n\t[-cover CoverCfgFile]" @@ -848,7 +881,7 @@ run_test1(StartOpts) when is_list(StartOpts) -> undefined -> Tracing = start_trace(StartOpts), {ok,Cwd} = file:get_cwd(), - io:format("~nCommon Test starting (cwd is ~s)~n~n", [Cwd]), + io:format("~nCommon Test starting (cwd is ~ts)~n~n", [Cwd]), Res = case ct_repeat:loop_test(func, StartOpts) of false -> @@ -1044,105 +1077,60 @@ run_test2(StartOpts) -> end. run_spec_file(Relaxed, - Opts = #opts{testspecs = Specs, config = CfgFiles}, + Opts = #opts{testspecs = Specs}, StartOpts) -> Specs1 = case Specs of [X|_] when is_integer(X) -> [Specs]; _ -> Specs end, AbsSpecs = lists:map(fun(SF) -> ?abs(SF) end, Specs1), - log_ts_names(AbsSpecs), - case catch ct_testspec:collect_tests_from_file(AbsSpecs, Relaxed) of + AbsSpecs1 = get_start_opt(join_specs, [AbsSpecs], AbsSpecs, StartOpts), + case catch ct_testspec:collect_tests_from_file(AbsSpecs1, Relaxed) of {Error,CTReason} when Error == error ; Error == 'EXIT' -> exit({error,CTReason}); - TS -> - SpecOpts = get_data_for_node(TS, node()), - Label = choose_val(Opts#opts.label, - SpecOpts#opts.label), - Profile = choose_val(Opts#opts.profile, - SpecOpts#opts.profile), - LogDir = choose_val(Opts#opts.logdir, - SpecOpts#opts.logdir), - AllLogOpts = merge_vals([Opts#opts.logopts, - SpecOpts#opts.logopts]), - Stylesheet = choose_val(Opts#opts.stylesheet, - SpecOpts#opts.stylesheet), - AllVerbosity = merge_keyvals([Opts#opts.verbosity, - SpecOpts#opts.verbosity]), - AllSilentConns = merge_vals([Opts#opts.silent_connections, - SpecOpts#opts.silent_connections]), - AllConfig = merge_vals([CfgFiles, SpecOpts#opts.config]), - Cover = choose_val(Opts#opts.cover, - SpecOpts#opts.cover), - CoverStop = choose_val(Opts#opts.cover_stop, - SpecOpts#opts.cover_stop), - MultTT = choose_val(Opts#opts.multiply_timetraps, - SpecOpts#opts.multiply_timetraps), - ScaleTT = choose_val(Opts#opts.scale_timetraps, - SpecOpts#opts.scale_timetraps), - CreatePrivDir = choose_val(Opts#opts.create_priv_dir, - SpecOpts#opts.create_priv_dir), - AllEvHs = merge_vals([Opts#opts.event_handlers, - SpecOpts#opts.event_handlers]), - AllInclude = merge_vals([Opts#opts.include, - SpecOpts#opts.include]), - 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), - - AutoCompile = case choose_val(Opts#opts.auto_compile, - SpecOpts#opts.auto_compile) of - undefined -> - true; - ACBool -> - application:set_env(common_test, auto_compile, - ACBool), - ACBool - end, + TestSpecData -> + run_all_specs(TestSpecData, Opts, StartOpts, []) + end. - BasicHtml = case choose_val(Opts#opts.basic_html, - SpecOpts#opts.basic_html) of - undefined -> - false; - BHBool -> - application:set_env(common_test, basic_html, - BHBool), - BHBool - end, - - Opts1 = Opts#opts{label = Label, - profile = Profile, - cover = Cover, - cover_stop = CoverStop, - logdir = which(logdir, LogDir), - logopts = AllLogOpts, - stylesheet = Stylesheet, - basic_html = BasicHtml, - verbosity = AllVerbosity, - silent_connections = AllSilentConns, - config = AllConfig, - event_handlers = AllEvHs, - auto_compile = AutoCompile, - include = AllInclude, - testspecs = AbsSpecs, - multiply_timetraps = MultTT, - scale_timetraps = ScaleTT, - create_priv_dir = CreatePrivDir, - ct_hooks = AllCTHooks, - enable_builtin_hooks = EnableBuiltinHooks - }, - - case check_and_install_configfiles(AllConfig,Opts1#opts.logdir, - Opts1) of - ok -> - {Run,Skip} = ct_testspec:prepare_tests(TS, node()), - reformat_result(catch do_run(Run, Skip, Opts1, StartOpts)); - {error,GCFReason} -> - exit({error,GCFReason}) +run_all_specs([], _, _, TotResult) -> + TotResult1 = lists:reverse(TotResult), + case lists:keysearch('EXIT', 1, TotResult1) of + {value,{_,_,ExitReason}} -> + exit(ExitReason); + false -> + case lists:keysearch(error, 1, TotResult1) of + {value,Error} -> + Error; + false -> + lists:foldl(fun({Ok,Fail,{UserSkip,AutoSkip}}, + {Ok1,Fail1,{UserSkip1,AutoSkip1}}) -> + {Ok1+Ok,Fail1+Fail, + {UserSkip1+UserSkip, + AutoSkip1+AutoSkip}} + end, {0,0,{0,0}}, TotResult1) end + end; + +run_all_specs([{Specs,TS} | TSs], Opts, StartOpts, TotResult) -> + log_ts_names(Specs), + Combined = #opts{config = TSConfig} = combine_test_opts(TS, Specs, Opts), + AllConfig = merge_vals([Opts#opts.config, TSConfig]), + try run_one_spec(TS, Combined#opts{config = AllConfig}, StartOpts) of + Result -> + run_all_specs(TSs, Opts, StartOpts, [Result | TotResult]) + catch + _ : Reason -> + run_all_specs(TSs, Opts, StartOpts, [{error,Reason} | TotResult]) + end. + +run_one_spec(TS, CombinedOpts, StartOpts) -> + #opts{logdir = Logdir, config = Config} = CombinedOpts, + case check_and_install_configfiles(Config, Logdir, CombinedOpts) of + ok -> + {Run,Skip} = ct_testspec:prepare_tests(TS, node()), + reformat_result(catch do_run(Run, Skip, CombinedOpts, StartOpts)); + Error -> + Error end. run_prepared(Run, Skip, Opts = #opts{logdir = LogDir, @@ -1332,7 +1320,7 @@ run_testspec(TestSpec) -> run_testspec1(TestSpec) -> {ok,Cwd} = file:get_cwd(), - io:format("~nCommon Test starting (cwd is ~s)~n~n", [Cwd]), + io:format("~nCommon Test starting (cwd is ~ts)~n~n", [Cwd]), case catch run_testspec2(TestSpec) of {'EXIT',Reason} -> file:set_cwd(Cwd), @@ -1469,7 +1457,7 @@ refresh_logs(LogDir) -> {error,{all_runs_index,ARReason}}; _ -> file:set_cwd(Cwd), - io:format("Logs in ~s refreshed!~n",[LogDir]), + io:format("Logs in ~ts refreshed!~n",[LogDir]), ok end end @@ -1792,7 +1780,7 @@ possibly_spawn(true, Tests, Skip, Opts) -> end, unlink(CTUtilSrv), SupPid = spawn(Supervisor), - io:format(user, "~nTest control handed over to process ~p~n~n", + io:format(user, "~nTest control handed over to process ~w~n~n", [SupPid]), SupPid. @@ -1880,7 +1868,7 @@ verify_suites(TestSuites) -> Suite)), io:format(user, "Suite ~w not found" - "in directory ~s~n", + "in directory ~ts~n", [Suite,TestDir]), {Found,[{DS,[Name]}|NotFound]} end @@ -1895,7 +1883,7 @@ verify_suites(TestSuites) -> ActualDir = filename:dirname(SuiteFile), {[{ActualDir,Suite}|Found],NotFound}; false -> - io:format(user, "Directory ~s is " + io:format(user, "Directory ~ts is " "invalid~n", [Dir]), Name = filename:join(Dir, atom_to_list(Suite)), {Found,[{DS,[Name]}|NotFound]} @@ -2135,7 +2123,7 @@ do_run_test(Tests, Skip, Opts) -> cross = CovCross, src = _CovSrc}} -> ct_logs:log("COVER INFO", - "Using cover specification file: ~s~n" + "Using cover specification file: ~ts~n" "App: ~w~n" "Cross cover: ~w~n" "Including ~w modules~n" @@ -2150,7 +2138,7 @@ do_run_test(Tests, Skip, Opts) -> DelResult = file:delete(CovExport), ct_logs:log("COVER INFO", "Warning! " - "Export file ~s already exists. " + "Export file ~ts already exists. " "Deleting with result: ~p", [CovExport,DelResult]); false -> @@ -2632,7 +2620,7 @@ log_ts_names(Specs) -> List = lists:map(fun(Name) -> Name ++ " " end, Specs), - ct_logs:log("Test Specification file(s)", "~s", + ct_logs:log("Test Specification file(s)", "~ts", [lists:flatten(List)]). merge_arguments(Args) -> @@ -2743,10 +2731,10 @@ event_handler_args2opts(Default, Args) -> event_handler_init_args2opts(EHs) end. event_handler_init_args2opts([EH, Arg, "and" | EHs]) -> - [{list_to_atom(EH),lists:flatten(io_lib:format("~s",[Arg]))} | + [{list_to_atom(EH),lists:flatten(io_lib:format("~ts",[Arg]))} | event_handler_init_args2opts(EHs)]; event_handler_init_args2opts([EH, Arg]) -> - [{list_to_atom(EH),lists:flatten(io_lib:format("~s",[Arg]))}]; + [{list_to_atom(EH),lists:flatten(io_lib:format("~ts",[Arg]))}]; event_handler_init_args2opts([]) -> []. @@ -2896,6 +2884,10 @@ opts2args(EnvStartOpts) -> [{allow_user_terms,[]}]; ({allow_user_terms,false}) -> []; + ({join_specs,true}) -> + [{join_specs,[]}]; + ({join_specs,false}) -> + []; ({auto_compile,false}) -> [{no_auto_compile,[]}]; ({auto_compile,true}) -> @@ -3064,7 +3056,7 @@ start_trace(Args) -> false end; {_,Error} -> - io:format("Warning! Tracing not started. Reason: ~s~n~n", + io:format("Warning! Tracing not started. Reason: ~ts~n~n", [file:format_error(Error)]), false end; diff --git a/lib/common_test/src/ct_telnet.erl b/lib/common_test/src/ct_telnet.erl index b13c050e32..02186864a5 100644 --- a/lib/common_test/src/ct_telnet.erl +++ b/lib/common_test/src/ct_telnet.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2012. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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 @@ -201,7 +201,7 @@ open(KeyOrName,ConnType,TargetMod,Extra) -> close(Connection) -> case get_handle(Connection) of {ok,Pid} -> - log("ct_telnet:close","Handle: ~p",[Pid]), + log("ct_telnet:close","Handle: ~w",[Pid]), case ct_gen_conn:stop(Pid) of {error,{process_down,Pid,noproc}} -> {error,already_closed}; @@ -558,7 +558,7 @@ reconnect(Ip,Port,N,State=#state{target_mod=TargetMod, Error when N==0 -> Error; _Error -> - log("Reconnect failed!","Retries left: ~p",[N]), + log("Reconnect failed!","Retries left: ~w",[N]), timer:sleep(ReconnInt), reconnect(Ip,Port,N-1,State) end. @@ -567,7 +567,7 @@ reconnect(Ip,Port,N,State=#state{target_mod=TargetMod, %% @hidden terminate(TelnPid,State) -> log(heading(terminate,State#state.name), - "Closing telnet connection.\nId: ~p", + "Closing telnet connection.\nId: ~w", [TelnPid]), ct_telnet_client:close(TelnPid). @@ -899,7 +899,7 @@ one_expect(Data,Pattern,EO) -> [Prompt] when Prompt==prompt; Prompt=={prompt,PromptType} -> %% Only searching for prompt log_lines(UptoPrompt), - try_cont_log("<b>PROMPT:</b> ~s", [PromptType]), + try_cont_log("<b>PROMPT:</b> ~ts", [PromptType]), {match,{prompt,PromptType},Rest}; [{prompt,_OtherPromptType}] -> %% Only searching for one specific prompt, not thisone @@ -969,7 +969,7 @@ seq_expect1(Data,[prompt|Patterns],Acc,Rest,EO) -> {continue,[prompt|Patterns],Acc,LastLine}; PromptType -> log_lines(Data), - try_cont_log("<b>PROMPT:</b> ~s", [PromptType]), + try_cont_log("<b>PROMPT:</b> ~ts", [PromptType]), seq_expect(Rest,Patterns,[{prompt,PromptType}|Acc],EO) end; seq_expect1(Data,[{prompt,PromptType}|Patterns],Acc,Rest,EO) -> @@ -980,7 +980,7 @@ seq_expect1(Data,[{prompt,PromptType}|Patterns],Acc,Rest,EO) -> {continue,[{prompt,PromptType}|Patterns],Acc,LastLine}; PromptType -> log_lines(Data), - try_cont_log("<b>PROMPT:</b> ~s", [PromptType]), + try_cont_log("<b>PROMPT:</b> ~ts", [PromptType]), seq_expect(Rest,Patterns,[{prompt,PromptType}|Acc],EO); _OtherPromptType -> log_lines(Data), @@ -1032,13 +1032,13 @@ match_line(Line,Patterns,FoundPrompt,EO) -> match_line(Line,[prompt|Patterns],false,EO,RetTag) -> match_line(Line,Patterns,false,EO,RetTag); match_line(Line,[prompt|_Patterns],FoundPrompt,_EO,RetTag) -> - try_cont_log(" ~s", [Line]), - try_cont_log("<b>PROMPT:</b> ~s", [FoundPrompt]), + try_cont_log(" ~ts", [Line]), + try_cont_log("<b>PROMPT:</b> ~ts", [FoundPrompt]), {RetTag,{prompt,FoundPrompt}}; match_line(Line,[{prompt,PromptType}|_Patterns],FoundPrompt,_EO,RetTag) when PromptType==FoundPrompt -> - try_cont_log(" ~s", [Line]), - try_cont_log("<b>PROMPT:</b> ~s", [FoundPrompt]), + try_cont_log(" ~ts", [Line]), + try_cont_log("<b>PROMPT:</b> ~ts", [FoundPrompt]), {RetTag,{prompt,FoundPrompt}}; match_line(Line,[{prompt,PromptType}|Patterns],FoundPrompt,EO,RetTag) when PromptType=/=FoundPrompt -> @@ -1048,7 +1048,7 @@ match_line(Line,[{Tag,Pattern}|Patterns],FoundPrompt,EO,RetTag) -> nomatch -> match_line(Line,Patterns,FoundPrompt,EO,RetTag); {match,Match} -> - try_cont_log("<b>MATCH:</b> ~s", [Line]), + try_cont_log("<b>MATCH:</b> ~ts", [Line]), {RetTag,{Tag,Match}} end; match_line(Line,[Pattern|Patterns],FoundPrompt,EO,RetTag) -> @@ -1056,13 +1056,13 @@ match_line(Line,[Pattern|Patterns],FoundPrompt,EO,RetTag) -> nomatch -> match_line(Line,Patterns,FoundPrompt,EO,RetTag); {match,Match} -> - try_cont_log("<b>MATCH:</b> ~s", [Line]), + try_cont_log("<b>MATCH:</b> ~ts", [Line]), {RetTag,Match} end; match_line(Line,[],FoundPrompt,EO,match) -> match_line(Line,EO#eo.haltpatterns,FoundPrompt,EO,halt); match_line(Line,[],_FoundPrompt,_EO,halt) -> - try_cont_log(" ~s", [Line]), + try_cont_log(" ~ts", [Line]), nomatch. one_line([$\n|Rest],Line) -> @@ -1086,7 +1086,7 @@ log_lines(String) -> [] -> ok; LastLine -> - try_cont_log(" ~s", [LastLine]) + try_cont_log(" ~ts", [LastLine]) end. log_lines_not_last(String) -> @@ -1094,7 +1094,7 @@ log_lines_not_last(String) -> {[],LastLine} -> LastLine; {String1,LastLine} -> - try_cont_log("~s",[String1]), + try_cont_log("~ts",[String1]), LastLine end. diff --git a/lib/common_test/src/ct_telnet_client.erl b/lib/common_test/src/ct_telnet_client.erl index d703b39ac5..7329498ed6 100644 --- a/lib/common_test/src/ct_telnet_client.erl +++ b/lib/common_test/src/ct_telnet_client.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2010. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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 @@ -308,7 +308,7 @@ cmd_dbg(_Cmd) -> [Opt] -> Opt; _ -> Opts end, - io:format("~s(~w): ~w\n", [CtrlStr,Ctrl,Opts1]); + io:format("~ts(~w): ~w\n", [CtrlStr,Ctrl,Opts1]); Any -> io:format("Unexpected in cmd_dbg:~n~w~n",[Any]) end. diff --git a/lib/common_test/src/ct_testspec.erl b/lib/common_test/src/ct_testspec.erl index 202d8f9373..e341391a91 100644 --- a/lib/common_test/src/ct_testspec.erl +++ b/lib/common_test/src/ct_testspec.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2012. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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 @@ -28,7 +28,6 @@ collect_tests_from_file/2, collect_tests_from_file/3]). -include("ct_util.hrl"). - -define(testspec_fields, record_info(fields, testspec)). %%%------------------------------------------------------------------ @@ -93,7 +92,7 @@ prepare_tests(TestSpec) when is_record(TestSpec,testspec) -> %% run_per_node/2 takes the Run list as input and returns a list %% of {Node,RunPerNode,[]} tuples where the tests have been sorted %% on a per node basis. -run_per_node([{{Node,Dir},Test}|Ts],Result, MergeTests) -> +run_per_node([{{Node,Dir},Test}|Ts],Result,MergeTests) -> {value,{Node,{Run,Skip}}} = lists:keysearch(Node,1,Result), Run1 = case MergeTests of false -> @@ -190,7 +189,7 @@ prepare_suites(_Node,_Dir,[],Run,Skip) -> prepare_cases(Node,Dir,Suite,Cases) -> case get_skipped_cases(Node,Dir,Suite,Cases) of - SkipAll=[{{Node,Dir},{Suite,_Cmt}}] -> % all cases to be skipped + SkipAll=[{{Node,Dir},{Suite,_Cmt}}] -> % all cases to be skipped %% note: this adds an 'all' test even if only skip is specified {[{{Node,Dir},{Suite,all}}],SkipAll}; Skipped -> @@ -241,34 +240,147 @@ get_skipped_cases1(_,_,_,[]) -> %%% collect_tests_from_file reads a testspec file and returns a record %%% containing the data found. -collect_tests_from_file(Specs, Relaxed) -> +collect_tests_from_file(Specs,Relaxed) -> collect_tests_from_file(Specs,[node()],Relaxed). collect_tests_from_file(Specs,Nodes,Relaxed) when is_list(Nodes) -> NodeRefs = lists:map(fun(N) -> {undefined,N} end, Nodes), - catch collect_tests_from_file1(Specs,#testspec{nodes=NodeRefs},Relaxed). + %% [Spec1,Spec2,...] means create one testpec record per Spec file + %% [[Spec1,Spec2,...]] means merge all specs into one testspec record + {Join,Specs1} = if is_list(hd(hd(Specs))) -> {true,hd(Specs)}; + true -> {false,Specs} + end, + Specs2 = [filename:absname(S) || S <- Specs1], + TS0 = #testspec{nodes=NodeRefs}, + + try create_specs(Specs2,TS0,Relaxed,Join) of + {{[],_},SeparateTestSpecs} -> + filter_and_convert(SeparateTestSpecs); + {{_,#testspec{tests=[]}},SeparateTestSpecs} -> + filter_and_convert(SeparateTestSpecs); + {Joined,SeparateTestSpecs} -> + [filter_and_convert(Joined) | + filter_and_convert(SeparateTestSpecs)] + catch + _:Error -> + Error + end. + +filter_and_convert(Joined) when is_tuple(Joined) -> + hd(filter_and_convert([Joined])); +filter_and_convert([{_,#testspec{tests=[]}}|TSs]) -> + filter_and_convert(TSs); +filter_and_convert([{[{SpecFile,MergeTests}|SMs],TestSpec}|TSs]) -> + #testspec{config = CfgFiles} = TestSpec, + TestSpec1 = TestSpec#testspec{config = delete_dups(CfgFiles), + merge_tests = MergeTests}, + %% set the merge_tests value for the testspec to the value + %% of the first test spec in the set + [{[SpecFile | [SF || {SF,_} <- SMs]], TestSpec1} | filter_and_convert(TSs)]; +filter_and_convert([]) -> + []. + +delete_dups(Elems) -> + delete_dups1(lists:reverse(Elems),[]). + +delete_dups1([E|Es],Keep) -> + case lists:member(E,Es) of + true -> + delete_dups1(Es,Keep); + false -> + delete_dups1(Es,[E|Keep]) + end; +delete_dups1([],Keep) -> + Keep. + +create_specs(Specs,TestSpec,Relaxed,Join) -> + SpecsTree = create_spec_tree(Specs,TestSpec,Join,[]), + create_specs(SpecsTree,TestSpec,Relaxed). -collect_tests_from_file1([Spec|Specs],TestSpec,Relaxed) -> +create_spec_tree([Spec|Specs],TS,JoinWithNext,Known) -> SpecDir = filename:dirname(filename:absname(Spec)), - case file:consult(Spec) of - {ok,Terms} -> - case collect_tests(Terms, - TestSpec#testspec{spec_dir=SpecDir}, - Relaxed) of - TS = #testspec{tests=Tests, logdir=LogDirs} when Specs == [] -> - LogDirs1 = lists:delete(".",LogDirs) ++ ["."], - TS#testspec{tests=lists:flatten(Tests), logdir=LogDirs1}; - TS = #testspec{alias = As, nodes = Ns} -> - TS1 = TS#testspec{alias = lists:reverse(As), - nodes = lists:reverse(Ns)}, - collect_tests_from_file1(Specs,TS1,Relaxed) - end; - {error,Reason} -> - ReasonStr = - lists:flatten(io_lib:format("~s", - [file:format_error(Reason)])), - throw({error,{Spec,ReasonStr}}) - end. + TS1 = TS#testspec{spec_dir=SpecDir}, + SpecAbsName = get_absfile(Spec,TS1), + case lists:member(SpecAbsName,Known) of + true -> + throw({error,{cyclic_reference,SpecAbsName}}); + false -> + case file:consult(SpecAbsName) of + {ok,Terms} -> + Terms1 = replace_names(Terms), + {InclJoin,InclSep} = get_included_specs(Terms1,TS1), + {SpecAbsName,Terms1, + create_spec_tree(InclJoin,TS,true,[SpecAbsName|Known]), + create_spec_tree(InclSep,TS,false,[SpecAbsName|Known]), + JoinWithNext, + create_spec_tree(Specs,TS,JoinWithNext,Known)}; + {error,Reason} -> + ReasonStr = + lists:flatten(io_lib:format("~s", + [file:format_error(Reason)])), + throw({error,{SpecAbsName,ReasonStr}}) + end + end; +create_spec_tree([],_TS,_JoinWithNext,_Known) -> + []. + +create_specs({Spec,Terms,InclJoin,InclSep,JoinWithNext,NextSpec}, + TestSpec,Relaxed) -> + SpecDir = filename:dirname(filename:absname(Spec)), + TestSpec1 = create_spec(Terms,TestSpec#testspec{spec_dir=SpecDir}, + JoinWithNext,Relaxed), + + {{JoinSpecs1,JoinTS1},Separate1} = create_specs(InclJoin,TestSpec1,Relaxed), + + {{JoinSpecs2,JoinTS2},Separate2} = + case JoinWithNext of + true -> + create_specs(NextSpec,JoinTS1,Relaxed); + false -> + {{[],JoinTS1},[]} + end, + {SepJoinSpecs,Separate3} = create_specs(InclSep,TestSpec,Relaxed), + {SepJoinSpecs1,Separate4} = + case JoinWithNext of + true -> + {{[],TestSpec},[]}; + false -> + create_specs(NextSpec,TestSpec,Relaxed) + end, + + SpecInfo = {Spec,TestSpec1#testspec.merge_tests}, + AllSeparate = + [TSData || TSData = {Ss,_TS} <- Separate3++Separate1++ + [SepJoinSpecs]++Separate2++ + [SepJoinSpecs1]++Separate4, + Ss /= []], + + case {JoinWithNext,JoinSpecs1} of + {true,_} -> + {{[SpecInfo|(JoinSpecs1++JoinSpecs2)],JoinTS2}, + AllSeparate}; + {false,[]} -> + {{[],TestSpec}, + [{[SpecInfo],TestSpec1}|AllSeparate]}; + {false,_} -> + {{[SpecInfo|(JoinSpecs1++JoinSpecs2)],JoinTS2}, + AllSeparate} + end; +create_specs([],TestSpec,_Relaxed) -> + {{[],TestSpec},[]}. + +create_spec(Terms,TestSpec,JoinedByPrev,Relaxed) -> + %% it's the "includer" that decides the value of merge_tests + Terms1 = if not JoinedByPrev -> + [{set_merge_tests,true}|Terms]; + true -> + [{set_merge_tests,false}|Terms] + end, + TS = #testspec{tests=Tests, logdir=LogDirs} = + collect_tests({false,Terms1},TestSpec,Relaxed), + LogDirs1 = lists:delete(".",LogDirs) ++ ["."], + TS#testspec{tests=lists:flatten(Tests), + logdir=LogDirs1}. collect_tests_from_list(Terms,Relaxed) -> collect_tests_from_list(Terms,[node()],Relaxed). @@ -276,8 +388,8 @@ collect_tests_from_list(Terms,Relaxed) -> collect_tests_from_list(Terms,Nodes,Relaxed) when is_list(Nodes) -> {ok,Cwd} = file:get_cwd(), NodeRefs = lists:map(fun(N) -> {undefined,N} end, Nodes), - case catch collect_tests(Terms,#testspec{nodes=NodeRefs, - spec_dir=Cwd}, + case catch collect_tests({true,Terms},#testspec{nodes=NodeRefs, + spec_dir=Cwd}, Relaxed) of E = {error,_} -> E; @@ -287,13 +399,28 @@ collect_tests_from_list(Terms,Nodes,Relaxed) when is_list(Nodes) -> TS#testspec{tests=lists:flatten(Tests), logdir=LogDirs1} end. -collect_tests(Terms,TestSpec,Relaxed) -> +collect_tests({Replace,Terms},TestSpec=#testspec{alias=As,nodes=Ns},Relaxed) -> put(relaxed,Relaxed), - Terms1 = replace_names(Terms), - TestSpec1 = get_global(Terms1,TestSpec), - TestSpec2 = get_all_nodes(Terms1,TestSpec1), - {Terms2, TestSpec3} = filter_init_terms(Terms1, [], TestSpec2), - add_tests(Terms2,TestSpec3). + Terms1 = if Replace -> replace_names(Terms); + true -> Terms + end, + {MergeTestsDef,Terms2} = + case proplists:get_value(set_merge_tests,Terms1,true) of + false -> + %% disable merge_tests + {TestSpec#testspec.merge_tests, + proplists:delete(merge_tests,Terms1)}; + true -> + {true,Terms1} + end, + %% reverse nodes and aliases initially to get the order of them right + %% in case this spec is being joined with a previous one + TestSpec1 = get_global(Terms2,TestSpec#testspec{alias = lists:reverse(As), + nodes = lists:reverse(Ns), + merge_tests = MergeTestsDef}), + TestSpec2 = get_all_nodes(Terms2,TestSpec1), + {Terms3, TestSpec3} = filter_init_terms(Terms2, [], TestSpec2), + add_tests(Terms3,TestSpec3). %% replace names (atoms) in the testspec matching those in 'define' terms by %% searching recursively through tuples and lists @@ -420,9 +547,30 @@ replace_names_in_node1(NodeStr,Defs=[{Name,Replacement}|Ds]) -> replace_names_in_node1(NodeStr,[]) -> NodeStr. +%% look for other specification files, either to join with the +%% current spec, or execute as separate test runs +get_included_specs(Terms,TestSpec) -> + get_included_specs(Terms,TestSpec,[],[]). + +get_included_specs([{specs,How,SpecOrSpecs}|Ts],TestSpec,Join,Sep) -> + Specs = case SpecOrSpecs of + [File|_] when is_list(File) -> + [get_absfile(Spec,TestSpec) || Spec <- SpecOrSpecs]; + [Ch|_] when is_integer(Ch) -> + [get_absfile(SpecOrSpecs,TestSpec)] + end, + if How == join -> + get_included_specs(Ts,TestSpec,Join++Specs,Sep); + true -> + get_included_specs(Ts,TestSpec,Join,Sep++Specs) + end; +get_included_specs([_|Ts],TestSpec,Join,Sep) -> + get_included_specs(Ts,TestSpec,Join,Sep); +get_included_specs([],_,Join,Sep) -> + {Join,Sep}. %% global terms that will be used for analysing all other terms in the spec -get_global([{merge_tests,Bool} | Ts], Spec) -> +get_global([{merge_tests,Bool}|Ts],Spec) -> get_global(Ts,Spec#testspec{merge_tests=Bool}); %% the 'define' term replaces the 'alias' and 'node' terms, but we need to keep @@ -588,7 +736,7 @@ add_option({Key,Value},Node,List,WarnIfExists) when is_list(Value) -> NewOption = case lists:keyfind(Key,1,OldOptions) of {Key,OldOption} when WarnIfExists,OldOption/=[]-> io:format("There is an option ~w=~w already " - "defined for node ~p, skipping new ~w~n", + "defined for node ~w, skipping new ~w~n", [Key,OldOption,Node,Value]), OldOption; {Key,OldOption}-> @@ -637,7 +785,7 @@ add_tests([{suites,all_nodes,Dir,Ss}|Ts],Spec) -> add_tests([{suites,Dir,Ss}|Ts],Spec) -> add_tests([{suites,all_nodes,Dir,Ss}|Ts],Spec); add_tests([{suites,Nodes,Dir,Ss}|Ts],Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,suites,[Dir,Ss],Ts,Spec#testspec.nodes), + Ts1 = per_node(Nodes,suites,[Dir,Ss],Ts,Spec#testspec.nodes), add_tests(Ts1,Spec); add_tests([{suites,Node,Dir,Ss}|Ts],Spec) -> Tests = Spec#testspec.tests, @@ -660,11 +808,11 @@ add_tests([{groups,Dir,Suite,Gs}|Ts],Spec) -> add_tests([{groups,Dir,Suite,Gs,{cases,TCs}}|Ts],Spec) -> add_tests([{groups,all_nodes,Dir,Suite,Gs,{cases,TCs}}|Ts],Spec); add_tests([{groups,Nodes,Dir,Suite,Gs}|Ts],Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,groups,[Dir,Suite,Gs],Ts,Spec#testspec.nodes), + Ts1 = per_node(Nodes,groups,[Dir,Suite,Gs],Ts,Spec#testspec.nodes), add_tests(Ts1,Spec); add_tests([{groups,Nodes,Dir,Suite,Gs,{cases,TCs}}|Ts], Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,groups,[Dir,Suite,Gs,{cases,TCs}],Ts, + Ts1 = per_node(Nodes,groups,[Dir,Suite,Gs,{cases,TCs}],Ts, Spec#testspec.nodes), add_tests(Ts1,Spec); add_tests([{groups,Node,Dir,Suite,Gs}|Ts],Spec) -> @@ -688,7 +836,7 @@ add_tests([{cases,all_nodes,Dir,Suite,Cs}|Ts],Spec) -> add_tests([{cases,Dir,Suite,Cs}|Ts],Spec) -> add_tests([{cases,all_nodes,Dir,Suite,Cs}|Ts],Spec); add_tests([{cases,Nodes,Dir,Suite,Cs}|Ts],Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,cases,[Dir,Suite,Cs],Ts,Spec#testspec.nodes), + Ts1 = per_node(Nodes,cases,[Dir,Suite,Cs],Ts,Spec#testspec.nodes), add_tests(Ts1,Spec); add_tests([{cases,Node,Dir,Suite,Cs}|Ts],Spec) -> Tests = Spec#testspec.tests, @@ -703,7 +851,7 @@ add_tests([{skip_suites,all_nodes,Dir,Ss,Cmt}|Ts],Spec) -> add_tests([{skip_suites,Dir,Ss,Cmt}|Ts],Spec) -> add_tests([{skip_suites,all_nodes,Dir,Ss,Cmt}|Ts],Spec); add_tests([{skip_suites,Nodes,Dir,Ss,Cmt}|Ts],Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,skip_suites,[Dir,Ss,Cmt],Ts,Spec#testspec.nodes), + Ts1 = per_node(Nodes,skip_suites,[Dir,Ss,Cmt],Ts,Spec#testspec.nodes), add_tests(Ts1,Spec); add_tests([{skip_suites,Node,Dir,Ss,Cmt}|Ts],Spec) -> Tests = Spec#testspec.tests, @@ -724,11 +872,11 @@ add_tests([{skip_groups,Dir,Suite,Gs,Cmt}|Ts],Spec) -> add_tests([{skip_groups,Dir,Suite,Gs,{cases,TCs},Cmt}|Ts],Spec) -> add_tests([{skip_groups,all_nodes,Dir,Suite,Gs,{cases,TCs},Cmt}|Ts],Spec); add_tests([{skip_groups,Nodes,Dir,Suite,Gs,Cmt}|Ts],Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,skip_groups,[Dir,Suite,Gs,Cmt],Ts,Spec#testspec.nodes), + Ts1 = per_node(Nodes,skip_groups,[Dir,Suite,Gs,Cmt],Ts,Spec#testspec.nodes), add_tests(Ts1,Spec); add_tests([{skip_groups,Nodes,Dir,Suite,Gs,{cases,TCs},Cmt}|Ts], Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,skip_groups,[Dir,Suite,Gs,{cases,TCs},Cmt],Ts, + Ts1 = per_node(Nodes,skip_groups,[Dir,Suite,Gs,{cases,TCs},Cmt],Ts, Spec#testspec.nodes), add_tests(Ts1,Spec); add_tests([{skip_groups,Node,Dir,Suite,Gs,Cmt}|Ts],Spec) -> @@ -752,7 +900,7 @@ add_tests([{skip_cases,all_nodes,Dir,Suite,Cs,Cmt}|Ts],Spec) -> add_tests([{skip_cases,Dir,Suite,Cs,Cmt}|Ts],Spec) -> add_tests([{skip_cases,all_nodes,Dir,Suite,Cs,Cmt}|Ts],Spec); add_tests([{skip_cases,Nodes,Dir,Suite,Cs,Cmt}|Ts],Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,skip_cases,[Dir,Suite,Cs,Cmt],Ts,Spec#testspec.nodes), + Ts1 = per_node(Nodes,skip_cases,[Dir,Suite,Cs,Cmt],Ts,Spec#testspec.nodes), add_tests(Ts1,Spec); add_tests([{skip_cases,Node,Dir,Suite,Cs,Cmt}|Ts],Spec) -> Tests = Spec#testspec.tests, @@ -783,6 +931,9 @@ add_tests([{release_shell,Bool}|Ts],Spec) -> add_tests(Ts, Spec#testspec{release_shell = Bool}); %% --- handled/errors --- +add_tests([{set_merge_tests,_}|Ts],Spec) -> % internal + add_tests(Ts,Spec); + add_tests([{define,_,_}|Ts],Spec) -> % handled add_tests(Ts,Spec); @@ -792,7 +943,10 @@ add_tests([{alias,_,_}|Ts],Spec) -> % handled add_tests([{node,_,_}|Ts],Spec) -> % handled add_tests(Ts,Spec); -add_tests([{merge_tests, _} | Ts], Spec) -> % handled +add_tests([{merge_tests,_} | Ts], Spec) -> % handled + add_tests(Ts,Spec); + +add_tests([{specs,_,_} | Ts], Spec) -> % handled add_tests(Ts,Spec); %% -------------------------------------------------- @@ -821,7 +975,7 @@ add_tests([{Tag,NodesOrOther,Data}|Ts],Spec) when is_list(NodesOrOther) -> case lists:all(fun(Test) -> is_node(Test,Spec#testspec.nodes) end, NodesOrOther) of true -> - Ts1 = separate(NodesOrOther,Tag,[Data],Ts,Spec#testspec.nodes), + Ts1 = per_node(NodesOrOther,Tag,[Data],Ts,Spec#testspec.nodes), add_tests(Ts1,Spec); false -> add_tests([{Tag,all_nodes,{NodesOrOther,Data}}|Ts],Spec) @@ -866,7 +1020,18 @@ add_tests([],Spec) -> % done %% check if it's a CT term that has bad format or if the user seems to %% have added something of his/her own, which we'll let pass if relaxed %% mode is enabled. -check_term(Term) -> +check_term(Atom) when is_atom(Atom) -> + Valid = valid_terms(), + case lists:member(Atom,Valid) of + true -> + valid; + false -> % ignore + case get(relaxed) of + true -> invalid; + false -> throw({error,{undefined_term_in_spec,Atom}}) + end + end; +check_term(Term) when is_tuple(Term) -> Size = size(Term), [Name|_] = tuple_to_list(Term), Valid = valid_terms(), @@ -894,7 +1059,9 @@ check_term(Term) -> throw({error,{undefined_term_in_spec,Term}}) end end - end. + end; +check_term(Other) -> + throw({error,{undefined_term_in_spec,Other}}). %% specific data handling before saving in testspec record, e.g. %% converting relative paths to absolute for directories and files @@ -977,12 +1144,12 @@ update_recorded(Tag,Node,Spec) -> end. %% create one test term per node -separate(Nodes,Tag,Data,Tests,Refs) -> - Separated = separate(Nodes,Tag,Data,Refs), +per_node(Nodes,Tag,Data,Tests,Refs) -> + Separated = per_node(Nodes,Tag,Data,Refs), Separated ++ Tests. -separate([N|Ns],Tag,Data,Refs) -> - [list_to_tuple([Tag,ref2node(N,Refs)|Data])|separate(Ns,Tag,Data,Refs)]; -separate([],_,_,_) -> +per_node([N|Ns],Tag,Data,Refs) -> + [list_to_tuple([Tag,ref2node(N,Refs)|Data])|per_node(Ns,Tag,Data,Refs)]; +per_node([],_,_,_) -> []. %% read the value for FieldName in record Rec#testspec @@ -1039,14 +1206,21 @@ insert_groups(Node,Dir,Suite,Groups,Cases,Tests,true) when {[Gr],Cases}; true -> {Gr,Cases} end || Gr <- Groups], - case lists:keysearch({Node,Dir},1,Tests) of - {value,{{Node,Dir},[{all,_}]}} -> - Tests; - {value,{{Node,Dir},Suites0}} -> - Suites1 = insert_groups1(Suite,Groups1,Suites0), - insert_in_order({{Node,Dir},Suites1},Tests); - false -> - insert_in_order({{Node,Dir},[{Suite,Groups1}]},Tests) + {Tests1,Done} = + lists:foldr(fun(All={{N,D},[{all,_}]},{Replaced,_}) when N == Node, + D == Dir -> + {[All|Replaced],true}; + ({{N,D},Suites0},{Replaced,_}) when N == Node, + D == Dir -> + Suites1 = insert_groups1(Suite,Groups1,Suites0), + {[{{N,D},Suites1}|Replaced],true}; + (T,{Replaced,Match}) -> + {[T|Replaced],Match} + end, {[],false}, Tests), + if not Done -> + Tests ++ [{{Node,Dir},[{Suite,Groups1}]}]; + true -> + Tests1 end; insert_groups(Node,Dir,Suite,Groups,Case,Tests, MergeTests) when is_atom(Case) -> @@ -1084,14 +1258,21 @@ insert_groups2([],GrAndCases) -> insert_cases(Node,Dir,Suite,Cases,Tests,false) when is_list(Cases) -> append({{Node,Dir},[{Suite,Cases}]},Tests); insert_cases(Node,Dir,Suite,Cases,Tests,true) when is_list(Cases) -> - case lists:keysearch({Node,Dir},1,Tests) of - {value,{{Node,Dir},[{all,_}]}} -> - Tests; - {value,{{Node,Dir},Suites0}} -> - Suites1 = insert_cases1(Suite,Cases,Suites0), - insert_in_order({{Node,Dir},Suites1},Tests); - false -> - insert_in_order({{Node,Dir},[{Suite,Cases}]},Tests) + {Tests1,Done} = + lists:foldr(fun(All={{N,D},[{all,_}]},{Replaced,_}) when N == Node, + D == Dir -> + {[All|Replaced],true}; + ({{N,D},Suites0},{Replaced,_}) when N == Node, + D == Dir -> + Suites1 = insert_cases1(Suite,Cases,Suites0), + {[{{N,D},Suites1}|Replaced],true}; + (T,{Replaced,Match}) -> + {[T|Replaced],Match} + end, {[],false}, Tests), + if not Done -> + Tests ++ [{{Node,Dir},[{Suite,Cases}]}]; + true -> + Tests1 end; insert_cases(Node,Dir,Suite,Case,Tests,MergeTests) when is_atom(Case) -> insert_cases(Node,Dir,Suite,[Case],Tests,MergeTests). @@ -1132,15 +1313,23 @@ skip_groups(Node,Dir,Suite,Groups,Cases,Cmt,Tests,false) when append({{Node,Dir},Suites1},Tests); skip_groups(Node,Dir,Suite,Groups,Cases,Cmt,Tests,true) when ((Cases == all) or is_list(Cases)) and is_list(Groups) -> - Suites = - case lists:keysearch({Node,Dir},1,Tests) of - {value,{{Node,Dir},Suites0}} -> - Suites0; - false -> - [] - end, - Suites1 = skip_groups1(Suite,[{Gr,Cases} || Gr <- Groups],Cmt,Suites), - insert_in_order({{Node,Dir},Suites1},Tests); + {Tests1,Done} = + lists:foldr(fun({{N,D},Suites0},{Replaced,_}) when N == Node, + D == Dir -> + Suites1 = skip_groups1(Suite, + [{Gr,Cases} || Gr <- Groups], + Cmt,Suites0), + {[{{N,D},Suites1}|Replaced],true}; + (T,{Replaced,Match}) -> + {[T|Replaced],Match} + end, {[],false}, Tests), + if not Done -> + Tests ++ [{{Node,Dir},skip_groups1(Suite, + [{Gr,Cases} || Gr <- Groups], + Cmt,[])}]; + true -> + Tests1 + end; skip_groups(Node,Dir,Suite,Groups,Case,Cmt,Tests,MergeTests) when is_atom(Case) -> Cases = if Case == all -> all; true -> [Case] end, @@ -1162,15 +1351,19 @@ skip_cases(Node,Dir,Suite,Cases,Cmt,Tests,false) when is_list(Cases) -> Suites1 = skip_cases1(Suite,Cases,Cmt,[]), append({{Node,Dir},Suites1},Tests); skip_cases(Node,Dir,Suite,Cases,Cmt,Tests,true) when is_list(Cases) -> - Suites = - case lists:keysearch({Node,Dir},1,Tests) of - {value,{{Node,Dir},Suites0}} -> - Suites0; - false -> - [] - end, - Suites1 = skip_cases1(Suite,Cases,Cmt,Suites), - insert_in_order({{Node,Dir},Suites1},Tests); + {Tests1,Done} = + lists:foldr(fun({{N,D},Suites0},{Replaced,_}) when N == Node, + D == Dir -> + Suites1 = skip_cases1(Suite,Cases,Cmt,Suites0), + {[{{N,D},Suites1}|Replaced],true}; + (T,{Replaced,Match}) -> + {[T|Replaced],Match} + end, {[],false}, Tests), + if not Done -> + Tests ++ [{{Node,Dir},skip_cases1(Suite,Cases,Cmt,[])}]; + true -> + Tests1 + end; skip_cases(Node,Dir,Suite,Case,Cmt,Tests,MergeTests) when is_atom(Case) -> skip_cases(Node,Dir,Suite,[Case],Cmt,Tests,MergeTests). @@ -1260,7 +1453,9 @@ is_node([],_) -> valid_terms() -> [ + {set_merge_tests,2}, {define,3}, + {specs,3}, {node,3}, {cover,2}, {cover,3}, diff --git a/lib/common_test/src/ct_util.erl b/lib/common_test/src/ct_util.erl index cf891ed043..0f2b2081d9 100644 --- a/lib/common_test/src/ct_util.erl +++ b/lib/common_test/src/ct_util.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2012. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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 @@ -396,14 +396,14 @@ loop(Mode,TestData,StartDir) -> %% A connection crashed - remove the connection but don't die ct_logs:tc_log_async(ct_error_notify, "Connection process died: " - "Pid: ~p, Address: ~p, Callback: ~p\n" + "Pid: ~w, Address: ~p, Callback: ~w\n" "Reason: ~p\n\n", [Pid,A,CB,Reason]), catch CB:close(Pid), loop(Mode,TestData,StartDir); _ -> %% Let process crash in case of error, this shouldn't happen! - io:format("\n\nct_util_server got EXIT from ~p: ~p\n\n", + io:format("\n\nct_util_server got EXIT from ~w: ~p\n\n", [Pid,Reason]), file:set_cwd(StartDir), exit(Reason) @@ -956,7 +956,7 @@ open_url(iexplore, Args, URL) -> Path = proplists:get_value(default, Paths), [Cmd | _] = string:tokens(Path, "%"), Cmd1 = Cmd ++ " " ++ Args ++ " " ++ URL, - io:format(user, "~nOpening ~s with command:~n ~s~n", [URL,Cmd1]), + io:format(user, "~nOpening ~ts with command:~n ~ts~n", [URL,Cmd1]), open_port({spawn,Cmd1}, []); _ -> io:format("~nNo path to iexplore.exe~n",[]) @@ -969,6 +969,6 @@ open_url(Prog, Args, URL) -> is_list(Prog) -> Prog end, Cmd = ProgStr ++ " " ++ Args ++ " " ++ URL, - io:format(user, "~nOpening ~s with command:~n ~s~n", [URL,Cmd]), + io:format(user, "~nOpening ~ts with command:~n ~ts~n", [URL,Cmd]), open_port({spawn,Cmd},[]), ok. diff --git a/lib/common_test/src/cth_conn_log.erl b/lib/common_test/src/cth_conn_log.erl index 255f3ec78a..644594e34d 100644 --- a/lib/common_test/src/cth_conn_log.erl +++ b/lib/common_test/src/cth_conn_log.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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 @@ -105,8 +105,9 @@ pre_init_per_testcase(TestCase,Config,CthState) -> "<table borders=1>" "<b>" ++ ConnModStr ++ " logs:</b>\n" ++ [io_lib:format( - "<tr><td>~p</td><td><a href=~p>~s</a></td></tr>", - [S,L,filename:basename(L)]) + "<tr><td>~p</td><td><a href=\"~ts\">~ts</a>" + "</td></tr>", + [S,ct_logs:uri(L),filename:basename(L)]) || {S,L} <- Ls] ++ "</table>", io:format(Str,[]), diff --git a/lib/common_test/src/cth_surefire.erl b/lib/common_test/src/cth_surefire.erl index e6eaad8d48..1a38b6584b 100644 --- a/lib/common_test/src/cth_surefire.erl +++ b/lib/common_test/src/cth_surefire.erl @@ -1,7 +1,7 @@ %%-------------------------------------------------------------------- %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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 @@ -297,7 +297,7 @@ sanitize([]) -> now_to_string(Now) -> {{YY,MM,DD},{HH,Mi,SS}} = calendar:now_to_local_time(Now), - io_lib:format("~p-~2..0B-~2..0BT~2..0B:~2..0B:~2..0B",[YY,MM,DD,HH,Mi,SS]). + io_lib:format("~w-~2..0B-~2..0BT~2..0B:~2..0B:~2..0B",[YY,MM,DD,HH,Mi,SS]). make_url(undefined,_) -> undefined; diff --git a/lib/common_test/src/unix_telnet.erl b/lib/common_test/src/unix_telnet.erl index 25b9d4d5d2..99ce92e9f1 100644 --- a/lib/common_test/src/unix_telnet.erl +++ b/lib/common_test/src/unix_telnet.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2010. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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 @@ -110,7 +110,7 @@ connect1(Ip,Port,Timeout,KeepAlive,Username,Password) -> case ct_telnet:silent_teln_expect(Pid,[],[prompt],?prx,[]) of {ok,{prompt,?username},_} -> ok = ct_telnet_client:send_data(Pid,Username), - cont_log("Username: ~s",[Username]), + cont_log("Username: ~ts",[Username]), case ct_telnet:silent_teln_expect(Pid,[],prompt,?prx,[]) of {ok,{prompt,?password},_} -> ok = ct_telnet_client:send_data(Pid,Password), diff --git a/lib/common_test/test/Makefile b/lib/common_test/test/Makefile index d469d03e04..760cc20410 100644 --- a/lib/common_test/test/Makefile +++ b/lib/common_test/test/Makefile @@ -40,6 +40,7 @@ MODULES= \ ct_repeat_1_SUITE \ ct_testspec_1_SUITE \ ct_testspec_2_SUITE \ + ct_testspec_3_SUITE \ ct_skip_SUITE \ ct_error_SUITE \ ct_test_server_if_1_SUITE \ diff --git a/lib/common_test/test/ct_error_SUITE.erl b/lib/common_test/test/ct_error_SUITE.erl index 6d90b29f41..86ec71c98e 100644 --- a/lib/common_test/test/ct_error_SUITE.erl +++ b/lib/common_test/test/ct_error_SUITE.erl @@ -44,8 +44,12 @@ %% there will be clashes with logging processes etc). %%-------------------------------------------------------------------- init_per_suite(Config) -> - Config1 = ct_test_support:init_per_suite(Config), - Config1. + DataDir = ?config(data_dir, Config), + TestDir = filename:join(DataDir, "error/test/"), + CTH = filename:join(TestDir, "verify_config.erl"), + ct:pal("Compiling ~p: ~p", + [CTH,compile:file(CTH,[{outdir,TestDir},debug_info])]), + ct_test_support:init_per_suite([{path_dirs,[TestDir]} | Config]). end_per_suite(Config) -> ct_test_support:end_per_suite(Config). @@ -61,7 +65,8 @@ suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> [cfg_error, lib_error, no_compile, timetrap_end_conf, timetrap_normal, timetrap_extended, timetrap_parallel, - timetrap_fun, timetrap_fun_group, misc_errors]. + timetrap_fun, timetrap_fun_group, misc_errors, + config_restored]. groups() -> []. @@ -285,6 +290,24 @@ misc_errors(Config) when is_list(Config) -> TestEvents = events_to_check(misc_errors), ok = ct_test_support:verify_events(TestEvents, Events, Config). +%%%----------------------------------------------------------------- +%%% +config_restored(Config) when is_list(Config) -> + DataDir = ?config(data_dir, Config), + Suite = filename:join(DataDir, "error/test/config_restored_SUITE"), + {Opts,ERPid} = setup([{suite,Suite}, + {ct_hooks,[verify_config]}], + Config), + ok = ct_test_support:run(Opts, Config), + Events = ct_test_support:get_events(ERPid, Config), + + ct_test_support:log_events(config_restored, + reformat(Events, ?eh), + ?config(priv_dir, Config), + Opts), + + TestEvents = events_to_check(config_restored), + ok = ct_test_support:verify_events(TestEvents, Events, Config). %%%----------------------------------------------------------------- %%% HELP FUNCTIONS @@ -1439,4 +1462,40 @@ test_events(misc_errors) -> {?eh,test_stats,{2,7,{0,0}}}, {?eh,test_done,{'DEF','STOP_TIME'}}, {?eh,stop_logging,[]} + ]; + +test_events(config_restored) -> + [ + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{1,1,4}}, + {?eh,tc_start,{config_restored_SUITE,init_per_suite}}, + {?eh,tc_done,{config_restored_SUITE,init_per_suite,ok}}, + {?eh,tc_start,{config_restored_SUITE,to_tc}}, + {?eh,cth,{verify_config,post_end_per_testcase,{to_tc,diff_ok}}}, + {?eh,tc_done, + {config_restored_SUITE,to_tc,{failed,{timetrap_timeout,1000}}}}, + {?eh,test_stats,{0,1,{0,0}}}, + {?eh,tc_start,{config_restored_SUITE,exit_tc}}, + {?eh,cth,{verify_config,post_end_per_testcase,{exit_tc,diff_ok}}}, + {?eh,tc_done,{config_restored_SUITE,exit_tc, + {failed,{error,{test_case_failed,"Goodbye!"}}}}}, + {?eh,test_stats,{0,2,{0,0}}}, + [{?eh,tc_start,{config_restored_SUITE,{init_per_group,g1,[]}}}, + {?eh,tc_start,{config_restored_SUITE,to_tc}}, + {?eh,cth,{verify_config,post_end_per_testcase,{to_tc,diff_ok}}}, + {?eh,tc_done, + {config_restored_SUITE,to_tc,{failed,{timetrap_timeout,1000}}}}, + {?eh,test_stats,{0,3,{0,0}}}, + {?eh,tc_start,{config_restored_SUITE,exit_tc}}, + {?eh,cth,{verify_config,post_end_per_testcase,{exit_tc,diff_ok}}}, + {?eh,tc_done,{config_restored_SUITE,exit_tc, + {failed,{error,{test_case_failed,"Goodbye!"}}}}}, + {?eh,test_stats,{0,4,{0,0}}}, + {?eh,tc_start,{config_restored_SUITE,{end_per_group,g1,[]}}}, + {?eh,tc_done,{config_restored_SUITE,{end_per_group,g1,[]},ok}}], + {?eh,tc_start,{config_restored_SUITE,end_per_suite}}, + {?eh,tc_done,{config_restored_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]} ]. diff --git a/lib/common_test/test/ct_error_SUITE_data/error/test/config_restored_SUITE.erl b/lib/common_test/test/ct_error_SUITE_data/error/test/config_restored_SUITE.erl new file mode 100644 index 0000000000..fb47f2bcb9 --- /dev/null +++ b/lib/common_test/test/ct_error_SUITE_data/error/test/config_restored_SUITE.erl @@ -0,0 +1,175 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2012. 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(config_restored_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). + +%%-------------------------------------------------------------------- +%% Function: suite() -> Info +%% Info = [tuple()] +%%-------------------------------------------------------------------- +suite() -> + [{timetrap,1000}]. + +%%-------------------------------------------------------------------- +%% Function: init_per_suite(Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%%-------------------------------------------------------------------- +init_per_suite(Config) -> + Config1 = [{init_per_suite,?MODULE} | Config], + TabPid = spawn(fun() -> + ets:new(?MODULE, [named_table, set, public]), + receive _ -> ok end + end), + [{tab,TabPid} | Config1]. + +%%-------------------------------------------------------------------- +%% Function: end_per_suite(Config0) -> void() | {save_config,Config1} +%% Config0 = Config1 = [tuple()] +%%-------------------------------------------------------------------- +end_per_suite(Config) -> + ets:delete(?MODULE), + exit(?config(tab, Config), kill), + ok. + +%%-------------------------------------------------------------------- +%% Function: init_per_group(GroupName, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%%-------------------------------------------------------------------- +init_per_group(GroupName, Config) -> + [{init_per_group,GroupName} | Config]. + +%%-------------------------------------------------------------------- +%% Function: end_per_group(GroupName, Config0) -> +%% void() | {save_config,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%%-------------------------------------------------------------------- +end_per_group(_GroupName, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% Function: init_per_testcase(TestCase, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%%-------------------------------------------------------------------- +init_per_testcase(TC, Config) -> + Config1 = [{init_per_testcase,TC} | Config], + ets:insert(?MODULE, {config,Config}), + %% ct:pal("Config after init_per_testcase(~w) = ~p", [TC,Config1]), + Config1. + +%%-------------------------------------------------------------------- +%% Function: end_per_testcase(TestCase, Config0) -> +%% void() | {save_config,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%%-------------------------------------------------------------------- +end_per_testcase(TC, Config) -> + ct:pal("Config in end_per_testcase(~w) = ~p", [TC,Config]), + [{_,MemConfig}] = ets:lookup(?MODULE, config), + diff_config(Config, MemConfig, [tc_status]), + ?MODULE = proplists:get_value(init_per_suite, Config), + TC = proplists:get_value(init_per_testcase, Config), + case ?config(tc_group_properties, Config) of + undefined -> + ok; + Props -> + GName = proplists:get_value(name, Props), + GName = proplists:get_value(init_per_group, Config) + end, + ok. + +%%-------------------------------------------------------------------- +%% Function: groups() -> [Group] +%% Group = {GroupName,Properties,GroupsAndTestCases} +%% GroupName = atom() +%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}] +%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase] +%% TestCase = atom() +%% Shuffle = shuffle | {shuffle,{integer(),integer(),integer()}} +%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail | +%% repeat_until_any_ok | repeat_until_any_fail +%% N = integer() | forever +%%-------------------------------------------------------------------- +groups() -> + [{g1,[],[to_tc, exit_tc]}]. + +%%-------------------------------------------------------------------- +%% Function: all() -> GroupsAndTestCases | {skip,Reason} +%% GroupsAndTestCases = [{group,GroupName} | TestCase] +%% GroupName = atom() +%% TestCase = atom() +%% Reason = term() +%%-------------------------------------------------------------------- +all() -> + [to_tc, exit_tc, + {group,g1}]. + + +to_tc(Config) -> + %% ct:pal("Config for to_tc = ~p", [Config]), + [{_,MemConfig}] = ets:lookup(?MODULE, config), + diff_config(Config, MemConfig, []), + ct:sleep(2000). + +exit_tc(Config) -> + %% ct:pal("Config for exit_tc = ~p", [Config]), + [{_,MemConfig}] = ets:lookup(?MODULE, config), + diff_config(Config, MemConfig, []), + ct:fail("Goodbye!"). + + +%%%----------------------------------------------------------------- +%%% HELP FUNCTIONS + +diff_config(Cfg1, Cfg2, DiffKeys) -> + diff_config(Cfg1, Cfg2, DiffKeys, []). + +diff_config([{K,V} | Cfg1], Cfg2, DiffKeys, RemKeys) -> + case proplists:get_value(K, Cfg2) of + undefined -> + diff_config(Cfg1, Cfg2, proplists:delete(K, DiffKeys), RemKeys); + V -> + diff_config(Cfg1, proplists:delete(K, Cfg2), DiffKeys, RemKeys); + _Other -> + case proplists:is_defined(K, DiffKeys) of + true -> + diff_config(Cfg1, Cfg2, proplists:delete(K, DiffKeys), RemKeys); + false -> + diff_config(Cfg1, Cfg2, DiffKeys, [K | RemKeys]) + end + end; +diff_config([], [], [], []) -> + ct:pal("Diff ok!", []), + ok; +diff_config([], Cfg2, DiffKeys, RemKeys) -> + Result = {diff_failed, {cfg2,Cfg2}, {diffkeys,DiffKeys}, {remkeys,RemKeys}}, + ct:pal("Diff failed! Result = ~p", [Result]), + exit(Result). + diff --git a/lib/common_test/test/ct_error_SUITE_data/error/test/verify_config.erl b/lib/common_test/test/ct_error_SUITE_data/error/test/verify_config.erl new file mode 100644 index 0000000000..40a54b9f99 --- /dev/null +++ b/lib/common_test/test/ct_error_SUITE_data/error/test/verify_config.erl @@ -0,0 +1,239 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2012. 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% +%% + +%%% @doc Common Test Example Suite Callback module. +%%% +%%% <p>This module gives an example of a common test CTH (Common Test Hook). +%%% There are many ways to add a CTH to a test run, you can do it either in +%%% the command line using -ct_hook, in a test spec using +%%% {ct_hook,M} or in the suite it self by returning ct_hook +%%% from either suite/0, init_per_suite/1, init_per_group/2 and +%%% init_per_testcase/2. The scope of the CTH is determined by where is it +%%% started. If it is started in the command line or test spec then it will +%%% be stopped at the end of all tests. If it is started in init_per_suite, +%%% it will be stopped after end_per_suite and so on. See terminate +%%% documentation for a table describing the scoping machanics. +%%% +%%% All of callbacks except init/1 in a CTH are optional.</p> + +-module(verify_config). + +%% CT Hooks +-export([id/1]). +-export([init/2]). + +-export([pre_init_per_suite/3]). +-export([post_init_per_suite/4]). +-export([pre_end_per_suite/3]). +-export([post_end_per_suite/4]). + +-export([pre_init_per_group/3]). +-export([post_init_per_group/4]). +-export([pre_end_per_group/3]). +-export([post_end_per_group/4]). + +-export([pre_init_per_testcase/3]). +-export([post_end_per_testcase/4]). + +-export([on_tc_fail/3]). +-export([on_tc_skip/3]). + +-export([terminate/1]). + +-include_lib("common_test/src/ct_util.hrl"). +-include_lib("common_test/include/ct_event.hrl"). + +-type config() :: proplists:proplist(). +-type reason() :: term(). +-type skip_or_fail() :: {skip, reason()} | + {auto_skip, reason()} | + {fail, reason()} | + {'EXIT',reason()}. + +-record(state, { id = ?MODULE :: term()}). + +%% @doc Always called before any other callback function. Use this to initiate +%% any common state. It should return an state for this CTH. +-spec init(Id :: term(), Opts :: proplists:proplist()) -> + {ok, State :: #state{}}. +init(Id, Opts) -> + {ok,Opts}. + +%% @doc The ID is used to uniquly identify an CTH instance, if two CTH's +%% return the same ID the seconds CTH is ignored. This function should NOT +%% have any side effects as it might be called multiple times by common test. +-spec id(Opts :: proplists:proplist()) -> + Id :: term(). +id(Opts) -> + now(). + +%% @doc Called before init_per_suite is called. Note that this callback is +%% only called if the CTH is added before init_per_suite is run (eg. in a test +%% specification, suite/0 function etc). +%% You can change the config in the this function. +-spec pre_init_per_suite(Suite :: atom(), + Config :: config(), + State :: #state{}) -> + {config() | skip_or_fail(), NewState :: #state{}}. +pre_init_per_suite(Suite,Config,State) -> + {Config, State}. + +%% @doc Called after init_per_suite. +%% you can change the return value in this function. +-spec post_init_per_suite(Suite :: atom(), + Config :: config(), + Return :: config() | skip_or_fail(), + State :: #state{}) -> + {config() | skip_or_fail(), NewState :: #state{}}. +post_init_per_suite(Suite,Config,Return,State) -> + {Return, State}. + +%% @doc Called before end_per_suite. The config/state can be changed here, +%% though it will only affect the *end_per_suite function. +-spec pre_end_per_suite(Suite :: atom(), + Config :: config() | skip_or_fail(), + State :: #state{}) -> + {ok | skip_or_fail(), NewState :: #state{}}. +pre_end_per_suite(Suite,Config,State) -> + {Config, State}. + +%% @doc Called after end_per_suite. Note that the config cannot be +%% changed here, only the status of the suite. +-spec post_end_per_suite(Suite :: atom(), + Config :: config(), + Return :: term(), + State :: #state{}) -> + {ok | skip_or_fail(), NewState :: #state{}}. +post_end_per_suite(Suite,Config,Return,State) -> + {Return, State}. + +%% @doc Called before each init_per_group. +%% You can change the config in this function. +-spec pre_init_per_group(Group :: atom(), + Config :: config(), + State :: #state{}) -> + {config() | skip_or_fail(), NewState :: #state{}}. +pre_init_per_group(Group,Config,State) -> + {Config, State}. + +%% @doc Called after each init_per_group. +%% You can change the return value in this function. +-spec post_init_per_group(Group :: atom(), + Config :: config(), + Return :: config() | skip_or_fail(), + State :: #state{}) -> + {config() | skip_or_fail(), NewState :: #state{}}. +post_init_per_group(Group,Config,Return,State) -> + {Return, State}. + +%% @doc Called after each end_per_group. The config/state can be changed here, +%% though it will only affect the *end_per_group functions. +-spec pre_end_per_group(Group :: atom(), + Config :: config() | skip_or_fail(), + State :: #state{}) -> + {ok | skip_or_fail(), NewState :: #state{}}. +pre_end_per_group(Group,Config,State) -> + {Config, State}. + +%% @doc Called after each end_per_group. Note that the config cannot be +%% changed here, only the status of the group. +-spec post_end_per_group(Group :: atom(), + Config :: config(), + Return :: term(), + State :: #state{}) -> + {ok | skip_or_fail(), NewState :: #state{}}. +post_end_per_group(Group,Config,Return,State) -> + {Return, State}. + +%% @doc Called before each test case. +%% You can change the config in this function. +-spec pre_init_per_testcase(TC :: atom(), + Config :: config(), + State :: #state{}) -> + {config() | skip_or_fail(), NewState :: #state{}}. +pre_init_per_testcase(TC,Config,State) -> + {Config, State}. + +%% @doc Called after each test case. Note that the config cannot be +%% changed here, only the status of the test case. +-spec post_end_per_testcase(TC :: atom(), + Config :: config(), + Return :: term(), + State :: #state{}) -> + {ok | skip_or_fail(), NewState :: #state{}}. +post_end_per_testcase(TC,Config,Return,State) -> + %% check that config has been restored + ct:pal("Config in verify_config:post_end_per_testcase(~w) = ~p", + [TC,Config]), + [{_,MemConfig}] = ets:lookup(config_restored_SUITE, config), + try config_restored_SUITE:diff_config(Config, MemConfig, [tc_status]) of + ok -> + gen_event:notify( + ?CT_EVMGR_REF, #event{ name = cth, node = node(), + data = {?MODULE, post_end_per_testcase, + {TC,diff_ok}}}) + catch + _:_ -> + gen_event:notify( + ?CT_EVMGR_REF, #event{ name = cth, node = node(), + data = {?MODULE, post_end_per_testcase, + {TC,diff_failed}}}) + end, + {Return, State}. + +%% @doc Called after post_init_per_suite, post_end_per_suite, post_init_per_group, +%% post_end_per_group and post_end_per_tc if the suite, group or test case failed. +%% This function should be used for extra cleanup which might be needed. +%% It is not possible to modify the config or the status of the test run. +-spec on_tc_fail(TC :: init_per_suite | end_per_suite | + init_per_group | end_per_group | atom(), + Reason :: term(), State :: #state{}) -> + NewState :: #state{}. +on_tc_fail(TC, Reason, State) -> + State. + +%% @doc Called when a test case is skipped by either user action +%% or due to an init function failing. Test case can be +%% end_per_suite, init_per_group, end_per_group and the actual test cases. +-spec on_tc_skip(TC :: end_per_suite | + init_per_group | end_per_group | atom(), + {tc_auto_skip, {failed, {Mod :: atom(), Function :: atom(), Reason :: term()}}} | + {tc_user_skip, {skipped, Reason :: term()}}, + State :: #state{}) -> + NewState :: #state{}. +on_tc_skip(TC, Reason, State) -> + State. + +%% @doc Called when the scope of the CTH is done, this depends on +%% when the CTH was specified. This translation table describes when this +%% function is called. +%% +%% | Started in | terminate called | +%% |---------------------|-------------------------| +%% | command_line | after all tests are run | +%% | test spec | after all tests are run | +%% | suite/0 | after SUITE is done | +%% | init_per_suite/1 | after SUITE is done | +%% | init_per_group/2 | after group is done | +%% |-----------------------------------------------| +%% +-spec terminate(State :: #state{}) -> + term(). +terminate(State) -> + ok. diff --git a/lib/common_test/test/ct_master_SUITE.erl b/lib/common_test/test/ct_master_SUITE.erl index b89d7d4dc5..0f336d2d79 100644 --- a/lib/common_test/test/ct_master_SUITE.erl +++ b/lib/common_test/test/ct_master_SUITE.erl @@ -109,7 +109,7 @@ ct_master_test(Config) when is_list(Config) -> ERPid = ct_test_support:start_event_receiver(Config), - [{TSFile,ok}] = run_test(ct_master_test, FileName, Config), + [{[TSFile],ok}] = run_test(ct_master_test, FileName, Config), Events = ct_test_support:get_events(ERPid, Config), @@ -195,12 +195,12 @@ get_log_dir(_,PrivDir,NodeName) -> run_test(_Name, FileName, Config) -> %% run the test twice, using different html versions - [{FileName,ok}] = ct_test_support:run({ct_master,run,[FileName]}, - [{ct_master,basic_html,[true]}], - Config), - [{FileName,ok}] = ct_test_support:run({ct_master,run,[FileName]}, - [{ct_master,basic_html,[false]}], - Config). + [{[FileName],ok}] = ct_test_support:run({ct_master,run,[FileName]}, + [{ct_master,basic_html,[true]}], + Config), + [{[FileName],ok}] = ct_test_support:run({ct_master,run,[FileName]}, + [{ct_master,basic_html,[false]}], + Config). reformat(Events, EH) -> ct_test_support:reformat(Events, EH). diff --git a/lib/common_test/test/ct_master_SUITE_data/master/master_SUITE.erl b/lib/common_test/test/ct_master_SUITE_data/master/master_SUITE.erl index 8a5009ad62..df54c4419c 100644 --- a/lib/common_test/test/ct_master_SUITE_data/master/master_SUITE.erl +++ b/lib/common_test/test/ct_master_SUITE_data/master/master_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. 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/common_test/test/ct_netconfc_SUITE_data/ns.erl b/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl index 2427f37f52..09217f60a3 100644 --- a/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl +++ b/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl @@ -1,7 +1,7 @@ %%-------------------------------------------------------------------- %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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 @@ -426,7 +426,7 @@ reply(ConnRef,Reply) -> send(ConnRef, make_msg(Reply)). from_simple(Simple) -> - list_to_binary(xmerl:export_simple_element(Simple,xmerl_xml)). + unicode_c2b(xmerl:export_simple_element(Simple,xmerl_xml)). xml(Content) -> <<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", @@ -435,30 +435,30 @@ xml(Content) -> rpc_reply(Content) when is_binary(Content) -> MsgId = case erase(msg_id) of undefined -> <<>>; - Id -> list_to_binary([" message-id=\"",Id,"\""]) + Id -> unicode_c2b([" message-id=\"",Id,"\""]) end, <<"<rpc-reply xmlns=\"",?NETCONF_NAMESPACE,"\"",MsgId/binary,">\n", Content/binary,"\n</rpc-reply>">>; rpc_reply(Content) -> - rpc_reply(list_to_binary(Content)). + rpc_reply(unicode_c2b(Content)). session_id(no_session_id) -> <<>>; session_id(SessionId0) -> - SessionId = list_to_binary(integer_to_list(SessionId0)), + SessionId = unicode_c2b(integer_to_list(SessionId0)), <<"<session-id>",SessionId/binary,"</session-id>\n">>. capabilities(undefined) -> - CapsXml = list_to_binary([["<capability>",C,"</capability>\n"] + CapsXml = unicode_c2b([["<capability>",C,"</capability>\n"] || C <- ?CAPABILITIES]), <<"<capabilities>\n",CapsXml/binary,"</capabilities>\n">>; capabilities({base,Vsn}) -> - CapsXml = list_to_binary([["<capability>",C,"</capability>\n"] + CapsXml = unicode_c2b([["<capability>",C,"</capability>\n"] || C <- ?CAPABILITIES_VSN(Vsn)]), <<"<capabilities>\n",CapsXml/binary,"</capabilities>\n">>; capabilities(no_base) -> [_|Caps] = ?CAPABILITIES, - CapsXml = list_to_binary([["<capability>",C,"</capability>\n"] || C <- Caps]), + CapsXml = unicode_c2b([["<capability>",C,"</capability>\n"] || C <- Caps]), <<"<capabilities>\n",CapsXml/binary,"</capabilities>\n">>; capabilities(no_caps) -> <<>>. @@ -553,3 +553,8 @@ make_msg(Xml) when is_binary(Xml) -> xml(Xml); make_msg(Simple) when is_tuple(Simple) -> xml(from_simple(Simple)). + +%%%----------------------------------------------------------------- +%%% Convert to unicode binary, since we use UTF-8 encoding in XML +unicode_c2b(Characters) -> + unicode:characters_to_binary(Characters). diff --git a/lib/common_test/test/ct_surefire_SUITE.erl b/lib/common_test/test/ct_surefire_SUITE.erl index 69e98cef48..b86b47f0a2 100644 --- a/lib/common_test/test/ct_surefire_SUITE.erl +++ b/lib/common_test/test/ct_surefire_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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 @@ -32,6 +32,7 @@ -include_lib("common_test/include/ct_event.hrl"). -include_lib("xmerl/include/xmerl.hrl"). +-include_lib("kernel/include/file.hrl"). -define(eh, ct_test_support_eh). @@ -77,53 +78,52 @@ all() -> %%%----------------------------------------------------------------- %%% default(Config) when is_list(Config) -> - run(default,[cth_surefire],Config), - PrivDir = ?config(priv_dir,Config), - XmlRe = filename:join([PrivDir,"*","junit_report.xml"]), - check_xml(default,XmlRe). + run(default,[cth_surefire],"junit_report.xml",Config). absolute_path(Config) when is_list(Config) -> PrivDir = ?config(priv_dir,Config), Path = filename:join(PrivDir,"abspath.xml"), - run(absolute_path,[{cth_surefire,[{path,Path}]}],Config), - check_xml(absolute_path,Path). + run(absolute_path,[{cth_surefire,[{path,Path}]}],Path,Config). relative_path(Config) when is_list(Config) -> Path = "relpath.xml", - run(relative_path,[{cth_surefire,[{path,Path}]}],Config), - PrivDir = ?config(priv_dir,Config), - XmlRe = filename:join([PrivDir,"*",Path]), - check_xml(relative_path,XmlRe). + run(relative_path,[{cth_surefire,[{path,Path}]}],Path,Config). url(Config) when is_list(Config) -> Path = "url.xml", - run(url,[{cth_surefire,[{url_base,?url_base}, - {path,Path}]}],Config), - PrivDir = ?config(priv_dir,Config), - XmlRe = filename:join([PrivDir,"*",Path]), - check_xml(url,XmlRe). + run(url,[{cth_surefire,[{url_base,?url_base},{path,Path}]}], + Path,Config). logdir(Config) when is_list(Config) -> - PrivDir = ?config(priv_dir,Config), - LogDir = filename:join(PrivDir,"specific_logdir"), - file:make_dir(LogDir), + Opts = ct_test_support:get_opts(Config), + LogDir = + case lists:keyfind(logdir,1,Opts) of + {logdir,LD} -> LD; + false -> ?config(priv_dir,Config) + end, + MyLogDir = filename:join(LogDir,"specific_logdir"), + ensure_exists_empty(MyLogDir), Path = "logdir.xml", - run(logdir,[{cth_surefire,[{path,Path}]}],Config,[{logdir,LogDir}]), - PrivDir = ?config(priv_dir,Config), - XmlRe = filename:join([LogDir,"*",Path]), - check_xml(logdir,XmlRe). + run(logdir,[{cth_surefire,[{path,Path}]}],Path,Config,[{logdir,MyLogDir}]). %%%----------------------------------------------------------------- %%% HELP FUNCTIONS %%%----------------------------------------------------------------- -run(Case,CTHs,Config) -> - run(Case,CTHs,Config,[]). -run(Case,CTHs,Config,ExtraOpts) -> +run(Case,CTHs,Report,Config) -> + run(Case,CTHs,Report,Config,[]). +run(Case,CTHs,Report,Config,ExtraOpts) -> DataDir = ?config(data_dir, Config), Suite = filename:join(DataDir, "surefire_SUITE"), {Opts,ERPid} = setup([{suite,Suite},{ct_hooks,CTHs},{label,Case}|ExtraOpts], Config), - ok = execute(Case, Opts, ERPid, Config). + ok = execute(Case, Opts, ERPid, Config), + LogDir = + case lists:keyfind(logdir,1,Opts) of + {logdir,LD} -> LD; + false -> ?config(priv_dir,Config) + end, + Re = filename:join([LogDir,"*",Report]), + check_xml(Case,Re). setup(Test, Config) -> Opts0 = ct_test_support:get_opts(Config), @@ -349,3 +349,26 @@ get_numbers_from_attrs([_|A],T,E,F,S) -> get_numbers_from_attrs(A,T,E,F,S); get_numbers_from_attrs([],T,E,F,S) -> {T,E,F,S}. + +ensure_exists_empty(Dir) -> + case file:list_dir(Dir) of + {error,enoent} -> + file:make_dir(Dir); + {ok,Files} -> + del_files(Dir,Files) + end. + +del_files(Dir,[F0|Fs] ) -> + F = filename:join(Dir,F0), + case file:read_file_info(F) of + {ok,#file_info{type=directory}} -> + {ok,Files} = file:list_dir(F), + del_files(F,Files), + file:del_dir(F), + del_files(Dir,Fs); + _ -> + file:delete(F), + del_files(Dir,Fs) + end; +del_files(_,[]) -> + ok. diff --git a/lib/common_test/test/ct_test_support.erl b/lib/common_test/test/ct_test_support.erl index 8814570e99..7c33fd404d 100644 --- a/lib/common_test/test/ct_test_support.erl +++ b/lib/common_test/test/ct_test_support.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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 @@ -1132,6 +1132,8 @@ reformat([{_EH,#event{name=test_start,data=_}} | Events], EH) -> [{EH,test_start,{'DEF',{'START_TIME','LOGDIR'}}} | reformat(Events, EH)]; reformat([{_EH,#event{name=test_done,data=_}} | Events], EH) -> [{EH,test_done,{'DEF','STOP_TIME'}} | reformat(Events, EH)]; +reformat([{_EH,#event{name=tc_logfile,data=_}} | Events], EH) -> + reformat(Events, EH); reformat([{_EH,#event{name=test_stats,data=Data}} | Events], EH) -> [{EH,test_stats,Data} | reformat(Events, EH)]; %% use this to only print the last test_stats event: diff --git a/lib/common_test/test/ct_testspec_2_SUITE.erl b/lib/common_test/test/ct_testspec_2_SUITE.erl index 9d2dc84ad3..beaba0eaac 100644 --- a/lib/common_test/test/ct_testspec_2_SUITE.erl +++ b/lib/common_test/test/ct_testspec_2_SUITE.erl @@ -479,7 +479,7 @@ multiple_specs(_Config) -> "multiple_specs.1.spec"), SpecFile2 = ct_test_support:write_testspec(Spec2,SpecDir, "multiple_specs.2.spec"), - FileResult = ct_testspec:collect_tests_from_file([SpecFile1,SpecFile2], + FileResult = ct_testspec:collect_tests_from_file([[SpecFile1,SpecFile2]], false), ct:pal("TESTSPEC RECORD FROM FILE:~n~p~n", [rec2proplist(FileResult)]), @@ -490,7 +490,7 @@ multiple_specs(_Config) -> [{Node2,get_absdir(filename:join(SpecDir,CfgDir))} || CfgDir <- CfgDir2]], LogDirV = get_absdir(filename:join(SpecDir,"../logs")), - Verify = #testspec{merge_tests = false, + Verify = #testspec{merge_tests = true, spec_dir = SpecDir, nodes = [{undefined,Node},{n1,Node1},{n2,Node2}], alias = [{to1,TO1V},{to2,TO2V}], @@ -500,22 +500,13 @@ multiple_specs(_Config) -> logdir = [{Node,LogDirV},{Node1,LogDirV},{Node2,LogDirV},"."], config = CFGs, tests = [{{Node1,TO1V}, - [{x_SUITE,[all]}]}, - {{Node1,TO1V}, - [{y_SUITE,[{g1,all},{g2,all}]}]}, - {{Node1,TO1V}, - [{y_SUITE,[tc1,tc2]}]}, - {{Node1,TO1V}, - [{z_SUITE,[{all,{skip,"skipped"}}]}]}, - {{Node2,TO2V}, - [{x_SUITE,[all]}]}, - {{Node2,TO2V}, - [{y_SUITE,[all]}]}, - {{Node2,TO2V}, - [{x_SUITE,[{{g1,all},{skip,"skipped"}}, - {{g2,all},{skip,"skipped"}}]}]}, + [{x_SUITE,[all]}, + {y_SUITE,[{g1,all},{g2,all},tc1,tc2]}, + {z_SUITE,[{all,{skip,"skipped"}}]}]}, {{Node2,TO2V}, - [{y_SUITE,[{tc1,{skip,"skipped"}}, + [{x_SUITE,[all,{{g1,all},{skip,"skipped"}}, + {{g2,all},{skip,"skipped"}}]}, + {y_SUITE,[all,{tc1,{skip,"skipped"}}, {tc2,{skip,"skipped"}}]}]}]}, verify_result(Verify,FileResult,FileResult). @@ -524,7 +515,7 @@ multiple_specs(_Config) -> %%% misc_config_terms(_Config) -> CfgDir = "../cfgs/to1", - + TODir = "../tests/to1", Spec = [{node,x,n1@h1},{node,y,n2@h2}, @@ -554,7 +545,9 @@ misc_config_terms(_Config) -> {create_priv_dir,[auto_per_tc]}, {create_priv_dir,n1@h1,[manual_per_tc]}, - {create_priv_dir,n2@h2,[auto_per_run]} + {create_priv_dir,n2@h2,[auto_per_run]}, + + {suites,n1@h1,TODir,[x_SUITE]} ], {ok,SpecDir} = file:get_cwd(), @@ -599,7 +592,9 @@ misc_config_terms(_Config) -> {n2@h2,CSS2}], create_priv_dir = [{Node,[auto_per_tc]}, {n1@h1,[manual_per_tc]}, - {n2@h2,[auto_per_run]}] + {n2@h2,[auto_per_run]}], + tests = [{{n1@h1,get_absdir(filename:join(SpecDir,TODir))}, + [{x_SUITE,[all]}]}] }, verify_result(Verify,ListResult,FileResult). @@ -688,10 +683,10 @@ define_names_1(_Config) -> %%% HELP FUNCTIONS %%%----------------------------------------------------------------- -verify_result(Verify,ListResult,FileResult) -> +verify_result(VerificationRec,ListResult,FileResult) -> {_,TSLTuples} = rec2proplist(ListResult), {_,TSFTuples} = rec2proplist(FileResult), - {_,VTuples} = rec2proplist(Verify), + {_,VTuples} = rec2proplist(VerificationRec), VResult = (catch lists:foldl(fun({Tag,Val},{[{Tag,Val}|TSL],[{Tag,Val}|TSF]}) -> {TSL,TSF}; @@ -720,6 +715,8 @@ read_config(S) -> rec2proplist(E={error,_What}) -> exit({invalid_testspec_record,E}); +rec2proplist([{Specs,Rec}]) when is_list(Specs) -> + rec2proplist(Rec); rec2proplist(Rec) -> [RecName|RecList] = tuple_to_list(Rec), FieldNames = diff --git a/lib/common_test/test/ct_testspec_3_SUITE.erl b/lib/common_test/test/ct_testspec_3_SUITE.erl new file mode 100644 index 0000000000..e2f57c2c64 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE.erl @@ -0,0 +1,745 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2009-2012. 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: ct_testspec_1_SUITE +%%% +%%% Description: +%%% Test test specifications +%%% +%%% The suites used for the test are located in the data directory. +%%%------------------------------------------------------------------- +-module(ct_testspec_3_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). +-include_lib("common_test/include/ct_event.hrl"). + +-define(eh, ct_test_support_eh). + +%%-------------------------------------------------------------------- +%% TEST SERVER CALLBACK FUNCTIONS +%%-------------------------------------------------------------------- + +%%-------------------------------------------------------------------- +%% Description: Since Common Test starts another Test Server +%% instance, the tests need to be performed on a separate node (or +%% there will be clashes with logging processes etc). +%%-------------------------------------------------------------------- +init_per_suite(Config) -> + DataDir = ?config(data_dir, Config), + Config1 = ct_test_support:init_per_suite(Config), + SpecsDir1 = filename:join(DataDir, "specs1"), + SpecsDir2 = filename:join(DataDir, "specs2"), + [{specs_dir1,SpecsDir1},{specs_dir2,SpecsDir2} | Config1]. + +end_per_suite(Config) -> + ct_test_support:end_per_suite(Config). + +init_per_testcase(TestCase, Config) -> + ct_test_support:init_per_testcase(TestCase, Config). + +end_per_testcase(TestCase, Config) -> + ct_test_support:end_per_testcase(TestCase, Config). + +suite() -> [{ct_hooks,[ts_install_cth]}]. + +all() -> + [start_separate, + start_join, + incl_separate1, + incl_separate2, + incl_join1, + incl_join2, + incl_both1, + incl_both2, + incl_both_and_join1, + incl_both_and_join2, + rec_incl_separate1, + rec_incl_separate2, + rec_incl_join1, + rec_incl_join2, + rec_incl_separate_join1, + rec_incl_separate_join2, + rec_incl_join_separate1, + rec_incl_join_separate2 + ]. + +groups() -> + []. + +init_per_group(_GroupName, Config) -> + Config. + +end_per_group(_GroupName, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% TEST CASES +%%-------------------------------------------------------------------- + +%%%----------------------------------------------------------------- +%%% + +start_separate(Config) -> + Specs = [fname(specs_dir1, "flat_spec1", Config), + fname(specs_dir2, "flat_spec2", Config)], + setup_and_execute(start_separate, Specs, [], Config). + +%%%----------------------------------------------------------------- +%%% + +start_join(Config) -> + Specs = [fname(specs_dir1, "flat_spec1", Config), + fname(specs_dir2, "flat_spec2", Config)], + setup_and_execute(start_join, Specs, [{join_specs,true}], Config). + +%%%----------------------------------------------------------------- +%%% + +incl_separate1(Config) -> + Specs = [fname(specs_dir1, "spec_sep1", Config), + fname(specs_dir2, "spec_sep2", Config)], + setup_and_execute(incl_separate1, Specs, [], Config). + +incl_separate2(Config) -> + Specs = [fname(specs_dir1, "spec_sep1", Config), + fname(specs_dir2, "spec_sep2", Config)], + setup_and_execute(incl_separate2, Specs, [{join_specs,true}], Config). + +%%%----------------------------------------------------------------- +%%% + +incl_join1(Config) -> + Specs = [fname(specs_dir1, "spec_join1", Config), + fname(specs_dir2, "spec_join2", Config)], + setup_and_execute(incl_join1, Specs, [], Config). + +incl_join2(Config) -> + Specs = [fname(specs_dir1, "spec_join1", Config), + fname(specs_dir2, "spec_join2", Config)], + setup_and_execute(incl_join2, Specs, [{join_specs,true}], Config). + +%%%----------------------------------------------------------------- +%%% + +incl_both1(Config) -> + Specs = [fname(specs_dir1, "spec_both1", Config), + fname(specs_dir2, "spec_both2", Config)], + setup_and_execute(incl_both1, Specs, [], Config). + +incl_both2(Config) -> + Specs = [fname(specs_dir1, "spec_both1", Config), + fname(specs_dir2, "spec_both2", Config)], + setup_and_execute(incl_both2, Specs, [{join_specs,true}], Config). + +%%%----------------------------------------------------------------- +%%% + +incl_both_and_join1(Config) -> + Specs = [fname(specs_dir1, "spec_both_join1", Config), + fname(specs_dir2, "spec_both_join2", Config)], + setup_and_execute(incl_both_and_join1, Specs, [], Config). + +incl_both_and_join2(Config) -> + Specs = [fname(specs_dir1, "spec_both_join1", Config), + fname(specs_dir2, "spec_both_join2", Config)], + setup_and_execute(incl_both_and_join2, Specs, [{join_specs,true}], Config). + +%%%----------------------------------------------------------------- +%%% + +rec_incl_separate1(Config) -> + Specs = [fname(specs_dir1, "rec_spec_sep1", Config), + fname(specs_dir2, "rec_spec_sep2", Config)], + setup_and_execute(rec_incl_separate1, Specs, [], Config). + +rec_incl_separate2(Config) -> + Specs = [fname(specs_dir1, "rec_spec_sep1", Config), + fname(specs_dir2, "rec_spec_sep2", Config)], + setup_and_execute(rec_incl_separate2, Specs, [{join_specs,true}], Config). + +%%%----------------------------------------------------------------- +%%% + +rec_incl_join1(Config) -> + Specs = [fname(specs_dir1, "rec_spec_join1", Config), + fname(specs_dir2, "rec_spec_join2", Config)], + setup_and_execute(rec_incl_join1, Specs, [], Config). + +rec_incl_join2(Config) -> + Specs = [fname(specs_dir1, "rec_spec_join1", Config), + fname(specs_dir2, "rec_spec_join2", Config)], + setup_and_execute(rec_incl_join2, Specs, [{join_specs,true}], Config). + + +%%%----------------------------------------------------------------- +%%% + +rec_incl_separate_join1(Config) -> + Specs = [fname(specs_dir1, "rec_spec_sep_join1", Config), + fname(specs_dir2, "rec_spec_sep_join2", Config)], + setup_and_execute(rec_incl_separate_join1, Specs, [], Config). + +rec_incl_separate_join2(Config) -> + Specs = [fname(specs_dir1, "rec_spec_sep_join1", Config), + fname(specs_dir2, "rec_spec_sep_join2", Config)], + setup_and_execute(rec_incl_separate_join2, Specs, + [{join_specs,true}], Config). + +%%%----------------------------------------------------------------- +%%% + +rec_incl_join_separate1(Config) -> + Specs = [fname(specs_dir1, "rec_spec_join_sep1", Config), + fname(specs_dir2, "rec_spec_join_sep2", Config)], + setup_and_execute(rec_incl_join_separate1, Specs, [], Config). + +rec_incl_join_separate2(Config) -> + Specs = [fname(specs_dir1, "rec_spec_join_sep1", Config), + fname(specs_dir2, "rec_spec_join_sep2", Config)], + setup_and_execute(rec_incl_join_separate2, Specs, + [{join_specs,true}], Config). + + +%%%----------------------------------------------------------------- +%%% HELP FUNCTIONS +%%%----------------------------------------------------------------- + +fname(Tag, File, Config) -> + filename:join(?config(Tag, Config), File). + +check_parameter(TCID) -> + {ok,{config,TCID}}. + +read_config(TCID) -> + {ok,[{tcname,list_to_atom(TCID)}]}. + +setup_and_execute(TCName, Specs, TestOpts, Config) -> + + TestID = {userconfig,{?MODULE,atom_to_list(TCName)}}, + TestTerms = [TestID,{spec,Specs},{label,TCName}] ++ TestOpts, + + {Opts,ERPid} = setup(TestTerms, Config), + + case ct_test_support:run(Opts, Config) of + ok -> + ok; + Error -> + ct:pal("Error executing with opts: ~p", [Opts]), + exit(Error) + end, + + Events = ct_test_support:get_events(ERPid, Config), + + ct_test_support:log_events(TCName, + reformat(Events, ?eh), + ?config(priv_dir, Config), + Opts), + + TestEvents = events_to_check(TCName), + ok = ct_test_support:verify_events(TestEvents, Events, Config). + +setup(Test, Config) when is_tuple(Test) -> + setup([Test], Config); +setup(Tests, Config) -> + Opts0 = ct_test_support:get_opts(Config), + Level = ?config(trace_level, Config), + EvHArgs = [{cbm,ct_test_support},{trace_level,Level}], + Opts = Opts0 ++ Tests ++ [{event_handler,{?eh,EvHArgs}}], + ERPid = ct_test_support:start_event_receiver(Config), + {Opts,ERPid}. + +reformat(Events, EH) -> + ct_test_support:reformat(Events, EH). +%reformat(Events, _EH) -> +% Events. + +%%%----------------------------------------------------------------- +%%% TEST EVENTS +%%%----------------------------------------------------------------- +events_to_check(Test) -> + %% 2 tests (ct:run_test + script_start) is default + events_to_check(Test, 2). + +events_to_check(_, 0) -> + []; +events_to_check(Test, N) -> + test_events(Test) ++ events_to_check(Test, N-1). + +test_events(start_separate) -> + [{?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{3,2,15}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + +test_events(start_join) -> + [ + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{4,4,20}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{4,8,{4,4}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + +test_events(incl_separate1) -> + [ + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{3,2,15}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{1,1,5}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{3,2,15}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + +test_events(incl_separate2) -> + [ + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{1,1,5}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{3,2,15}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{3,2,15}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + +test_events(incl_join1) -> + [{?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{4,4,20}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{4,8,{4,4}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{4,4,20}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{4,8,{4,4}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + +test_events(incl_join2) -> + [{?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{4,4,20}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{4,8,{4,4}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + +test_events(incl_both1) -> + [{?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{3,2,15}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + +test_events(incl_both2) -> + [{?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{4,4,20}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,ok_tc}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{4,8,{4,4}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{3,2,15}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t12_SUITE,init_per_suite}}, + {?eh,tc_done,{t12_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t12_SUITE,end_per_suite}}, + {?eh,tc_done,{t12_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t22_SUITE,init_per_suite}}, + {?eh,tc_done,{t22_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{3,6,{3,3}}}, + {?eh,tc_start,{t22_SUITE,end_per_suite}}, + {?eh,tc_done,{t22_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}, + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{2,2,10}}, + {?eh,tc_start,{t11_SUITE,init_per_suite}}, + {?eh,tc_done,{t11_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{1,2,{1,1}}}, + {?eh,tc_start,{t11_SUITE,end_per_suite}}, + {?eh,tc_done,{t11_SUITE,end_per_suite,ok}}, + {?eh,tc_start,{t21_SUITE,init_per_suite}}, + {?eh,tc_done,{t21_SUITE,init_per_suite,ok}}, + {?eh,test_stats,{2,4,{2,2}}}, + {?eh,tc_start,{t21_SUITE,end_per_suite}}, + {?eh,tc_done,{t21_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]}]; + +test_events(incl_both_and_join1) -> []; +test_events(incl_both_and_join2) -> []; +test_events(rec_incl_separate1) -> []; +test_events(rec_incl_separate2) -> []; +test_events(rec_incl_join1) -> []; +test_events(rec_incl_join2) -> []; +test_events(rec_incl_separate_join1) -> []; +test_events(rec_incl_separate_join2) -> []; +test_events(rec_incl_join_separate1) -> []; +test_events(rec_incl_join_separate2) -> []; + +test_events(_) -> + []. + + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg11 b/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg11 new file mode 100644 index 0000000000..bc672568da --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg11 @@ -0,0 +1 @@ +{file, cfg11}.
\ No newline at end of file diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg12 b/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg12 new file mode 100644 index 0000000000..30f2cf6857 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg12 @@ -0,0 +1 @@ +{file, cfg12}.
\ No newline at end of file diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg13 b/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg13 new file mode 100644 index 0000000000..1860ec78e5 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/config1/cfg13 @@ -0,0 +1 @@ +{file, cfg13}.
\ No newline at end of file diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/config2/cfg21 b/lib/common_test/test/ct_testspec_3_SUITE_data/config2/cfg21 new file mode 100644 index 0000000000..b18d35443e --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/config2/cfg21 @@ -0,0 +1 @@ +{file, cfg21}.
\ No newline at end of file diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/flat_spec1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/flat_spec1 new file mode 100644 index 0000000000..eff87222ea --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/flat_spec1 @@ -0,0 +1,4 @@ +{config, "../config1/cfg11"}. +{suites, "../tests1", t11_SUITE}. +{suites, "../tests1", t11_SUITE}. +{suites, "../tests2", t21_SUITE}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_join1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_join1 new file mode 100644 index 0000000000..a3387f48a3 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_join1 @@ -0,0 +1,2 @@ +{specs,join,"spec_join1"}. +{specs,join,"../specs2/spec_join2"}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_join_sep1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_join_sep1 new file mode 100644 index 0000000000..fe127eb4b9 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_join_sep1 @@ -0,0 +1,5 @@ +{specs,join,"spec_sep1"}. +{specs,join,"../specs2/spec_sep2"}. + +{config, "../config1/cfg13"}. +{suites, "../tests2", t23_SUITE}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_sep1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_sep1 new file mode 100644 index 0000000000..c778aa68a6 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_sep1 @@ -0,0 +1,2 @@ +{specs,separate,"spec_sep1"}. +{specs,separate,"../specs2/spec_sep2"}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_sep_join1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_sep_join1 new file mode 100644 index 0000000000..7cb5a05fff --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/rec_spec_sep_join1 @@ -0,0 +1,2 @@ +{specs,separate,"spec_join1"}. +{specs,separate,"../specs2/spec_join2"}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_both1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_both1 new file mode 100644 index 0000000000..46111614dc --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_both1 @@ -0,0 +1,2 @@ +{specs, join, "../specs1/flat_spec1"}. +{specs, separate, "../specs2/flat_spec2"}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_both_join1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_both_join1 new file mode 100644 index 0000000000..f52b3ed030 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_both_join1 @@ -0,0 +1,6 @@ +{specs, join, "../specs1/flat_spec1"}. +{specs, separate, "../specs2/flat_spec2"}. +{merge_tests,false}. +{config, "../config1/cfg12"}. +{suites, "../tests1", t11_SUITE}. +{suites, "../tests2", t21_SUITE}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_join1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_join1 new file mode 100644 index 0000000000..baaaf35be4 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_join1 @@ -0,0 +1 @@ +{specs, join, ["../specs2/flat_spec2", "flat_spec1"]}.
\ No newline at end of file diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_sep1 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_sep1 new file mode 100644 index 0000000000..89456c35e0 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs1/spec_sep1 @@ -0,0 +1,3 @@ +{specs, separate, "../specs2/flat_spec2"}. +{specs, separate, "flat_spec1"}. + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/flat_spec2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/flat_spec2 new file mode 100644 index 0000000000..758d1e2514 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/flat_spec2 @@ -0,0 +1,5 @@ +{merge_tests, false}. +{config, "../config2/cfg21"}. +{suites, "../tests1", t12_SUITE}. +{suites, "../tests1", t12_SUITE}. +{suites, "../tests2", t22_SUITE}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_join2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_join2 new file mode 100644 index 0000000000..19d3a3d8e2 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_join2 @@ -0,0 +1,5 @@ +{specs,join,"spec_join2"}. +{specs,join,"../specs1/spec_join1"}. + +{config, "../config1/cfg13"}. +{suites, "../tests2", t23_SUITE}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_join_sep2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_join_sep2 new file mode 100644 index 0000000000..930e68c847 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_join_sep2 @@ -0,0 +1,5 @@ +{specs,join,"spec_sep2"}. +{specs,join,"../specs1/spec_sep1"}. + +{config, "../config1/cfg13"}. +{suites, "../tests2", t23_SUITE}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_sep2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_sep2 new file mode 100644 index 0000000000..5026f329a7 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_sep2 @@ -0,0 +1,5 @@ +{specs,separate,"spec_sep2"}. +{specs,separate,"../specs1/spec_sep1"}. + +{config, "../config1/cfg13"}. +{suites, "../tests2", t23_SUITE}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_sep_join2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_sep_join2 new file mode 100644 index 0000000000..17057088b4 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/rec_spec_sep_join2 @@ -0,0 +1,5 @@ +{specs,separate,"spec_join2"}. +{specs,separate,"../specs1/spec_join1"}. + +{config, "../config1/cfg13"}. +{suites, "../tests2", t23_SUITE}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_both2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_both2 new file mode 100644 index 0000000000..4c83115d23 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_both2 @@ -0,0 +1,4 @@ +{specs, separate, "../specs1/flat_spec1"}. +{specs, join, "../specs2/flat_spec2"}. +{config, "../config1/cfg12"}. + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_both_join2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_both_join2 new file mode 100644 index 0000000000..ad81bfb4cc --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_both_join2 @@ -0,0 +1,9 @@ +{merge_tests,true}. +{config, "../config1/cfg12"}. +{suites, "../tests1", t11_SUITE}. +{suites, "../tests2", t21_SUITE}. +{suites, "../tests1", t12_SUITE}. +{suites, "../tests2", t22_SUITE}. + +{specs, separate, "../specs1/flat_spec1"}. +{specs, join, "../specs2/flat_spec2"}. diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_join2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_join2 new file mode 100644 index 0000000000..d652dbd78f --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_join2 @@ -0,0 +1,5 @@ +{specs, join, ["../specs1/flat_spec1"]}. +{specs, join, ["flat_spec2"]}. +{config, "../config1/cfg12"}. +{suites, "../tests2", t22_SUITE}. + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_sep2 b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_sep2 new file mode 100644 index 0000000000..8d37f508b8 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/specs2/spec_sep2 @@ -0,0 +1,5 @@ +{specs, separate, "../specs1/flat_spec1"}. +{specs, separate, "flat_spec2"}. +{config, "../config1/cfg12"}. +{suites, "../tests2", t22_SUITE}. + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/tests1/t11_SUITE.erl b/lib/common_test/test/ct_testspec_3_SUITE_data/tests1/t11_SUITE.erl new file mode 100644 index 0000000000..bbe79ed3fe --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/tests1/t11_SUITE.erl @@ -0,0 +1,175 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-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% +%% + +-module(t11_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). + +%%-------------------------------------------------------------------- +%% @spec suite() -> Info +%% Info = [tuple()] +%% @end +%%-------------------------------------------------------------------- +suite() -> + [{require,file}, + {require,tcname}, + {timetrap,{seconds,1}}]. + +%%-------------------------------------------------------------------- +%% @spec init_per_suite(Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_suite(Config) -> + %% verify that expected config file can be read + case {ct:get_config(tcname),ct:get_config(file,undefined,[all])} of + {start_separate,[cfg11]} -> ok; + {start_join,[cfg11,cfg21]} -> ok; + {incl_separate1,[cfg11]} -> ok; + {incl_separate2,[cfg11]} -> ok; + {incl_join1,[cfg21,cfg11]} -> ok; + {incl_join1,[cfg12,cfg11,cfg21]} -> ok; + {incl_join2,[cfg21,cfg11,cfg12]} -> ok; + {incl_both1,[cfg11]} -> ok; + {incl_both2,[cfg11,cfg12,cfg21]} -> ok; + {incl_both2,[cfg11]} -> ok; + _ -> ok + + end, + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_suite(Config0) -> void() | {save_config,Config1} +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_suite(_Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_group(GroupName, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_group(_GroupName, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_group(GroupName, Config0) -> +%% void() | {save_config,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_group(_GroupName, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_testcase(TestCase, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_testcase(autoskip_tc, Config) -> + exit(kaboom), + Config; + +init_per_testcase(userskip_tc, Config) -> + {skip,"user skipped"}; + +init_per_testcase(_TestCase, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_testcase(TestCase, Config0) -> +%% void() | {save_config,Config1} | {fail,Reason} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +end_per_testcase(_TestCase, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec groups() -> [Group] +%% Group = {GroupName,Properties,GroupsAndTestCases} +%% GroupName = atom() +%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}] +%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase] +%% TestCase = atom() +%% Shuffle = shuffle | {shuffle,{integer(),integer(),integer()}} +%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail | +%% repeat_until_any_ok | repeat_until_any_fail +%% N = integer() | forever +%% @end +%%-------------------------------------------------------------------- +groups() -> + []. + +%%-------------------------------------------------------------------- +%% @spec all() -> GroupsAndTestCases | {skip,Reason} +%% GroupsAndTestCases = [{group,GroupName} | TestCase] +%% GroupName = atom() +%% TestCase = atom() +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +all() -> + [ok_tc, exit_tc, to_tc, autoskip_tc, userskip_tc]. + +%%-------------------------------------------------------------------- +%% @spec TestCase(Config0) -> +%% ok | exit() | {skip,Reason} | {comment,Comment} | +%% {save_config,Config1} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% Comment = term() +%% @end +%%-------------------------------------------------------------------- +ok_tc(_) -> + ok. + +exit_tc(_) -> + exit(kaboom), + ok. + +to_tc(_) -> + ct:timetrap(1), + ct:sleep(100), + ok. + +autoskip_tc(_) -> + ok. + +userskip_tc(_) -> + ok. + + + + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/tests1/t12_SUITE.erl b/lib/common_test/test/ct_testspec_3_SUITE_data/tests1/t12_SUITE.erl new file mode 100644 index 0000000000..810298d348 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/tests1/t12_SUITE.erl @@ -0,0 +1,175 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-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% +%% + +-module(t12_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). + +%%-------------------------------------------------------------------- +%% @spec suite() -> Info +%% Info = [tuple()] +%% @end +%%-------------------------------------------------------------------- +suite() -> + [{require,file}, + {require,tcname}, + {timetrap,{seconds,30}}]. + +%%-------------------------------------------------------------------- +%% @spec init_per_suite(Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_suite(Config) -> + %% verify that expected config file can be read + case {ct:get_config(tcname),ct:get_config(file,undefined,[all])} of + {start_separate,[cfg21]} -> ok; + {start_join,[cfg11,cfg21]} -> ok; + {incl_separate1,[cfg21]} -> ok; + {incl_separate2,[cfg21]} -> ok; + {incl_join1,[cfg21,cfg11]} -> ok; + {incl_join1,[cfg12,cfg11,cfg21]} -> ok; + {incl_join2,[cfg21,cfg11,cfg12]} -> ok; + {incl_both1,[cfg21]} -> ok; + {incl_both1,[cfg12,cfg21]} -> ok; + {incl_both2,[cfg11,cfg12,cfg21]} -> ok; + {incl_both2,[cfg21]} -> ok; + _ -> ok + end, + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_suite(Config0) -> void() | {save_config,Config1} +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_suite(_Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_group(GroupName, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_group(_GroupName, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_group(GroupName, Config0) -> +%% void() | {save_config,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_group(_GroupName, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_testcase(TestCase, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_testcase(autoskip_tc, Config) -> + exit(kaboom), + Config; + +init_per_testcase(userskip_tc, Config) -> + {skip,"user skipped"}; + +init_per_testcase(_TestCase, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_testcase(TestCase, Config0) -> +%% void() | {save_config,Config1} | {fail,Reason} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +end_per_testcase(_TestCase, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec groups() -> [Group] +%% Group = {GroupName,Properties,GroupsAndTestCases} +%% GroupName = atom() +%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}] +%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase] +%% TestCase = atom() +%% Shuffle = shuffle | {shuffle,{integer(),integer(),integer()}} +%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail | +%% repeat_until_any_ok | repeat_until_any_fail +%% N = integer() | forever +%% @end +%%-------------------------------------------------------------------- +groups() -> + []. + +%%-------------------------------------------------------------------- +%% @spec all() -> GroupsAndTestCases | {skip,Reason} +%% GroupsAndTestCases = [{group,GroupName} | TestCase] +%% GroupName = atom() +%% TestCase = atom() +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +all() -> + [ok_tc, exit_tc, to_tc, autoskip_tc, userskip_tc]. + +%%-------------------------------------------------------------------- +%% @spec TestCase(Config0) -> +%% ok | exit() | {skip,Reason} | {comment,Comment} | +%% {save_config,Config1} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% Comment = term() +%% @end +%%-------------------------------------------------------------------- +ok_tc(_) -> + ok. + +exit_tc(_) -> + exit(kaboom), + ok. + +to_tc(_) -> + ct:timetrap(1), + ct:sleep(100), + ok. + +autoskip_tc(_) -> + ok. + +userskip_tc(_) -> + ok. + + + + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t21_SUITE.erl b/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t21_SUITE.erl new file mode 100644 index 0000000000..9348cd8caf --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t21_SUITE.erl @@ -0,0 +1,174 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-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% +%% + +-module(t21_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). + +%%-------------------------------------------------------------------- +%% @spec suite() -> Info +%% Info = [tuple()] +%% @end +%%-------------------------------------------------------------------- +suite() -> + [{require,file}, + {require,tcname}, + {timetrap,{seconds,1}}]. + +%%-------------------------------------------------------------------- +%% @spec init_per_suite(Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_suite(Config) -> + %% verify that expected config file can be read + case {ct:get_config(tcname),ct:get_config(file,undefined,[all])} of + {start_separate,[cfg11]} -> ok; + {start_join,[cfg11,cfg21]} -> ok; + {incl_separate1,[cfg11]} -> ok; + {incl_separate2,[cfg11]} -> ok; + {incl_join1,[cfg21,cfg11]} -> ok; + {incl_join1,[cfg12,cfg11,cfg21]} -> ok; + {incl_join2,[cfg21,cfg11,cfg12]} -> ok; + {incl_both1,[cfg11]} -> ok; + {incl_both2,[cfg11,cfg12,cfg21]} -> ok; + {incl_both2,[cfg11]} -> ok; + _ -> ok + end, + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_suite(Config0) -> void() | {save_config,Config1} +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_suite(_Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_group(GroupName, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_group(_GroupName, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_group(GroupName, Config0) -> +%% void() | {save_config,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_group(_GroupName, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_testcase(TestCase, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_testcase(autoskip_tc, Config) -> + exit(kaboom), + Config; + +init_per_testcase(userskip_tc, Config) -> + {skip,"user skipped"}; + +init_per_testcase(_TestCase, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_testcase(TestCase, Config0) -> +%% void() | {save_config,Config1} | {fail,Reason} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +end_per_testcase(_TestCase, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec groups() -> [Group] +%% Group = {GroupName,Properties,GroupsAndTestCases} +%% GroupName = atom() +%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}] +%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase] +%% TestCase = atom() +%% Shuffle = shuffle | {shuffle,{integer(),integer(),integer()}} +%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail | +%% repeat_until_any_ok | repeat_until_any_fail +%% N = integer() | forever +%% @end +%%-------------------------------------------------------------------- +groups() -> + []. + +%%-------------------------------------------------------------------- +%% @spec all() -> GroupsAndTestCases | {skip,Reason} +%% GroupsAndTestCases = [{group,GroupName} | TestCase] +%% GroupName = atom() +%% TestCase = atom() +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +all() -> + [ok_tc, exit_tc, to_tc, autoskip_tc, userskip_tc]. + +%%-------------------------------------------------------------------- +%% @spec TestCase(Config0) -> +%% ok | exit() | {skip,Reason} | {comment,Comment} | +%% {save_config,Config1} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% Comment = term() +%% @end +%%-------------------------------------------------------------------- +ok_tc(_) -> + ok. + +exit_tc(_) -> + exit(kaboom), + ok. + +to_tc(_) -> + ct:timetrap(1), + ct:sleep(100), + ok. + +autoskip_tc(_) -> + ok. + +userskip_tc(_) -> + ok. + + + + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t22_SUITE.erl b/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t22_SUITE.erl new file mode 100644 index 0000000000..a92018ec70 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t22_SUITE.erl @@ -0,0 +1,177 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-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% +%% + +-module(t22_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). + +%%-------------------------------------------------------------------- +%% @spec suite() -> Info +%% Info = [tuple()] +%% @end +%%-------------------------------------------------------------------- +suite() -> + [{require,file}, + {require,tcname}, + {timetrap,{seconds,30}}]. + +%%-------------------------------------------------------------------- +%% @spec init_per_suite(Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_suite(Config) -> + %% verify that expected config file can be read + case {ct:get_config(tcname),ct:get_config(file,undefined,[all])} of + {start_separate,[cfg21]} -> ok; + {start_join,[cfg11,cfg21]} -> ok; + {incl_separate1,[cfg12]} -> ok; + {incl_separate1,[cfg21]} -> ok; + {incl_separate2,[cfg12]} -> ok; + {incl_separate2,[cfg21]} -> ok; + {incl_join1,[cfg21,cfg11]} -> ok; + {incl_join1,[cfg12,cfg11,cfg21]} -> ok; + {incl_join2,[cfg21,cfg11,cfg12]} -> ok; + {incl_both1,[cfg21]} -> ok; + {incl_both1,[cfg12,cfg21]} -> ok; + {incl_both2,[cfg11,cfg12,cfg21]} -> ok; + {incl_both2,[cfg21]} -> ok; + _ -> ok + end, + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_suite(Config0) -> void() | {save_config,Config1} +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_suite(_Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_group(GroupName, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_group(_GroupName, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_group(GroupName, Config0) -> +%% void() | {save_config,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_group(_GroupName, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_testcase(TestCase, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_testcase(autoskip_tc, Config) -> + exit(kaboom), + Config; + +init_per_testcase(userskip_tc, Config) -> + {skip,"user skipped"}; + +init_per_testcase(_TestCase, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_testcase(TestCase, Config0) -> +%% void() | {save_config,Config1} | {fail,Reason} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +end_per_testcase(_TestCase, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec groups() -> [Group] +%% Group = {GroupName,Properties,GroupsAndTestCases} +%% GroupName = atom() +%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}] +%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase] +%% TestCase = atom() +%% Shuffle = shuffle | {shuffle,{integer(),integer(),integer()}} +%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail | +%% repeat_until_any_ok | repeat_until_any_fail +%% N = integer() | forever +%% @end +%%-------------------------------------------------------------------- +groups() -> + []. + +%%-------------------------------------------------------------------- +%% @spec all() -> GroupsAndTestCases | {skip,Reason} +%% GroupsAndTestCases = [{group,GroupName} | TestCase] +%% GroupName = atom() +%% TestCase = atom() +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +all() -> + [ok_tc, exit_tc, to_tc, autoskip_tc, userskip_tc]. + +%%-------------------------------------------------------------------- +%% @spec TestCase(Config0) -> +%% ok | exit() | {skip,Reason} | {comment,Comment} | +%% {save_config,Config1} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% Comment = term() +%% @end +%%-------------------------------------------------------------------- +ok_tc(_) -> + ok. + +exit_tc(_) -> + exit(kaboom), + ok. + +to_tc(_) -> + ct:timetrap(1), + ct:sleep(100), + ok. + +autoskip_tc(_) -> + ok. + +userskip_tc(_) -> + ok. + + + + diff --git a/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t23_SUITE.erl b/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t23_SUITE.erl new file mode 100644 index 0000000000..d01fac3144 --- /dev/null +++ b/lib/common_test/test/ct_testspec_3_SUITE_data/tests2/t23_SUITE.erl @@ -0,0 +1,158 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-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% +%% + +-module(t23_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). + +%%-------------------------------------------------------------------- +%% @spec suite() -> Info +%% Info = [tuple()] +%% @end +%%-------------------------------------------------------------------- +suite() -> + [{timetrap,{seconds,30}}]. + +%%-------------------------------------------------------------------- +%% @spec init_per_suite(Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_suite(Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_suite(Config0) -> void() | {save_config,Config1} +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_suite(_Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_group(GroupName, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_group(_GroupName, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_group(GroupName, Config0) -> +%% void() | {save_config,Config1} +%% GroupName = atom() +%% Config0 = Config1 = [tuple()] +%% @end +%%-------------------------------------------------------------------- +end_per_group(_GroupName, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec init_per_testcase(TestCase, Config0) -> +%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +init_per_testcase(autoskip_tc, Config) -> + exit(kaboom), + Config; + +init_per_testcase(userskip_tc, Config) -> + {skip,"user skipped"}; + +init_per_testcase(_TestCase, Config) -> + Config. + +%%-------------------------------------------------------------------- +%% @spec end_per_testcase(TestCase, Config0) -> +%% void() | {save_config,Config1} | {fail,Reason} +%% TestCase = atom() +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +end_per_testcase(_TestCase, _Config) -> + ok. + +%%-------------------------------------------------------------------- +%% @spec groups() -> [Group] +%% Group = {GroupName,Properties,GroupsAndTestCases} +%% GroupName = atom() +%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}] +%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase] +%% TestCase = atom() +%% Shuffle = shuffle | {shuffle,{integer(),integer(),integer()}} +%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail | +%% repeat_until_any_ok | repeat_until_any_fail +%% N = integer() | forever +%% @end +%%-------------------------------------------------------------------- +groups() -> + []. + +%%-------------------------------------------------------------------- +%% @spec all() -> GroupsAndTestCases | {skip,Reason} +%% GroupsAndTestCases = [{group,GroupName} | TestCase] +%% GroupName = atom() +%% TestCase = atom() +%% Reason = term() +%% @end +%%-------------------------------------------------------------------- +all() -> + [ok_tc, exit_tc, to_tc, autoskip_tc, userskip_tc]. + +%%-------------------------------------------------------------------- +%% @spec TestCase(Config0) -> +%% ok | exit() | {skip,Reason} | {comment,Comment} | +%% {save_config,Config1} | {skip_and_save,Reason,Config1} +%% Config0 = Config1 = [tuple()] +%% Reason = term() +%% Comment = term() +%% @end +%%-------------------------------------------------------------------- +ok_tc(_) -> + ok. + +exit_tc(_) -> + exit(kaboom), + ok. + +to_tc(_) -> + ct:timetrap(1), + ct:sleep(100), + ok. + +autoskip_tc(_) -> + ok. + +userskip_tc(_) -> + ok. + + + + diff --git a/lib/compiler/doc/src/notes.xml b/lib/compiler/doc/src/notes.xml index 6d51074d4a..a9579445bc 100644 --- a/lib/compiler/doc/src/notes.xml +++ b/lib/compiler/doc/src/notes.xml @@ -31,6 +31,57 @@ <p>This document describes the changes made to the Compiler application.</p> +<section><title>Compiler 4.9</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + The compiler optimizations have been polished, so that + the code quality will be slightly better in some cases.</p> + <p> + Own Id: OTP-10193</p> + </item> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> + Fix some wrong warnings triggered by the option + inline_list_funcs. Thanks to Anthony Ramine.</p> + <p> + Own Id: OTP-10690</p> + </item> + <item> + <p> + Forbid local fun variables in Core Erlang guards. Thanks + to Anthony Ramine.</p> + <p> + Own Id: OTP-10706</p> + </item> + <item> + <p> + Binary syntax matches could cause an internal consistency + error in in the compiler. (Thanks to Viktor Sovietov for + reporting this bug.)</p> + <p> + Own Id: OTP-10724</p> + </item> + </list> + </section> + +</section> + <section><title>Compiler 4.8.2</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/compiler/src/Makefile b/lib/compiler/src/Makefile index 5fbc41b0f7..c6d09d85eb 100644 --- a/lib/compiler/src/Makefile +++ b/lib/compiler/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/compiler/src/beam_asm.erl b/lib/compiler/src/beam_asm.erl index a7c8508321..98967e651f 100644 --- a/lib/compiler/src/beam_asm.erl +++ b/lib/compiler/src/beam_asm.erl @@ -387,7 +387,7 @@ encode_arg({list, List}, Dict0) -> {L, Dict} = encode_list(List, Dict0, []), {[encode(?tag_z, 1), encode(?tag_u, length(List))|L], Dict}; encode_arg({float, Float}, Dict) when is_float(Float) -> - {[encode(?tag_z, 0),<<Float:64/float>>], Dict}; + encode_arg({literal,Float}, Dict); encode_arg({fr,Fr}, Dict) -> {[encode(?tag_z, 2),encode(?tag_u, Fr)], Dict}; encode_arg({field_flags,Flags0}, Dict) -> diff --git a/lib/compiler/src/beam_block.erl b/lib/compiler/src/beam_block.erl index 3e0050382c..cf5244e1ce 100644 --- a/lib/compiler/src/beam_block.erl +++ b/lib/compiler/src/beam_block.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2011. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/compiler/src/beam_bool.erl b/lib/compiler/src/beam_bool.erl index 81be262d6d..cf5455dfde 100644 --- a/lib/compiler/src/beam_bool.erl +++ b/lib/compiler/src/beam_bool.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2010. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/compiler/src/beam_bsm.erl b/lib/compiler/src/beam_bsm.erl index 02794a8e18..fdfcb08125 100644 --- a/lib/compiler/src/beam_bsm.erl +++ b/lib/compiler/src/beam_bsm.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2011. All Rights Reserved. +%% Copyright Ericsson AB 2007-2013. 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/compiler/src/beam_clean.erl b/lib/compiler/src/beam_clean.erl index 26ba93b91c..e208ffec1f 100644 --- a/lib/compiler/src/beam_clean.erl +++ b/lib/compiler/src/beam_clean.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2011. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/compiler/src/beam_dead.erl b/lib/compiler/src/beam_dead.erl index 92d8e5acb3..b15adfa889 100644 --- a/lib/compiler/src/beam_dead.erl +++ b/lib/compiler/src/beam_dead.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2011. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/compiler/src/beam_dict.erl b/lib/compiler/src/beam_dict.erl index 531968b3c8..212b9fb03a 100644 --- a/lib/compiler/src/beam_dict.erl +++ b/lib/compiler/src/beam_dict.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2011. All Rights Reserved. +%% Copyright Ericsson AB 1998-2013. 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/compiler/src/beam_disasm.erl b/lib/compiler/src/beam_disasm.erl index 62bdc74cc8..67d756c45c 100644 --- a/lib/compiler/src/beam_disasm.erl +++ b/lib/compiler/src/beam_disasm.erl @@ -512,7 +512,12 @@ decode_z_tagged(Tag,B,Bs,Literals) when (B band 16#08) =:= 0 -> decode_alloc_list(Bs, Literals); 4 -> % literal {{u,LitIndex},RestBs} = decode_arg(Bs), - {{literal,gb_trees:get(LitIndex, Literals)},RestBs}; + case gb_trees:get(LitIndex, Literals) of + Float when is_float(Float) -> + {{float,Float},RestBs}; + Literal -> + {{literal,Literal},RestBs} + end; _ -> ?exit({decode_z_tagged,{invalid_extended_tag,N}}) end; diff --git a/lib/compiler/src/beam_except.erl b/lib/compiler/src/beam_except.erl index 14e9943f88..eddb41a358 100644 --- a/lib/compiler/src/beam_except.erl +++ b/lib/compiler/src/beam_except.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2011. All Rights Reserved. +%% Copyright Ericsson AB 2011-2013. 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/compiler/src/beam_flatten.erl b/lib/compiler/src/beam_flatten.erl index 04232d8fd2..25428c0c10 100644 --- a/lib/compiler/src/beam_flatten.erl +++ b/lib/compiler/src/beam_flatten.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2010. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/compiler/src/beam_jump.erl b/lib/compiler/src/beam_jump.erl index 636c299e47..b29a3565e4 100644 --- a/lib/compiler/src/beam_jump.erl +++ b/lib/compiler/src/beam_jump.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2011. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/compiler/src/beam_peep.erl b/lib/compiler/src/beam_peep.erl index a199aa50ed..97a8c7ba70 100644 --- a/lib/compiler/src/beam_peep.erl +++ b/lib/compiler/src/beam_peep.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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/compiler/src/beam_receive.erl b/lib/compiler/src/beam_receive.erl index fe95a7e35b..0bb527aeb9 100644 --- a/lib/compiler/src/beam_receive.erl +++ b/lib/compiler/src/beam_receive.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. 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/compiler/src/beam_trim.erl b/lib/compiler/src/beam_trim.erl index d95db1f681..fad9c42584 100644 --- a/lib/compiler/src/beam_trim.erl +++ b/lib/compiler/src/beam_trim.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2011. All Rights Reserved. +%% Copyright Ericsson AB 2007-2013. 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/compiler/src/beam_type.erl b/lib/compiler/src/beam_type.erl index 7392f99fb6..372923a5cf 100644 --- a/lib/compiler/src/beam_type.erl +++ b/lib/compiler/src/beam_type.erl @@ -142,9 +142,11 @@ simplify_float(Is0, Ts0) -> throw:not_possible -> not_possible end. -simplify_float_1([{set,[D0],[A],{alloc,_,{gc_bif,'-',{f,0}}}}=I|Is]=Is0, Ts0, Rs0, Acc0) -> - case tdb_find(A, Ts0) of +simplify_float_1([{set,[D0],[A0],{alloc,_,{gc_bif,'-',{f,0}}}}=I|Is]=Is0, + Ts0, Rs0, Acc0) -> + case tdb_find(A0, Ts0) of float -> + A = coerce_to_float(A0), {Rs1,Acc1} = load_reg(A, Ts0, Rs0, Acc0), {D,Rs} = find_dest(D0, Rs1), Areg = fetch_reg(A, Rs), @@ -156,13 +158,16 @@ simplify_float_1([{set,[D0],[A],{alloc,_,{gc_bif,'-',{f,0}}}}=I|Is]=Is0, Ts0, Rs {Rs,Acc} = flush(Rs0, Is0, Acc0), simplify_float_1(Is, Ts, Rs, [I|checkerror(Acc)]) end; -simplify_float_1([{set,[D0],[A,B],{alloc,_,{gc_bif,Op0,{f,0}}}}=I|Is]=Is0, Ts0, Rs0, Acc0) -> - case float_op(Op0, A, B, Ts0) of +simplify_float_1([{set,[D0],[A0,B0],{alloc,_,{gc_bif,Op0,{f,0}}}}=I|Is]=Is0, + Ts0, Rs0, Acc0) -> + case float_op(Op0, A0, B0, Ts0) of no -> Ts = update(I, Ts0), {Rs,Acc} = flush(Rs0, Is0, Acc0), simplify_float_1(Is, Ts, Rs, [I|checkerror(Acc)]); {yes,Op} -> + A = coerce_to_float(A0), + B = coerce_to_float(B0), {Rs1,Acc1} = load_reg(A, Ts0, Rs0, Acc0), {Rs2,Acc2} = load_reg(B, Ts0, Rs1, Acc1), {D,Rs} = find_dest(D0, Rs2), @@ -187,6 +192,16 @@ simplify_float_1([], Ts, Rs, Acc0) -> Is = opt_fmoves(Is0, []), {Is,Ts}. +coerce_to_float({integer,I}=Int) -> + try float(I) of + F -> + {float,F} + catch _:_ -> + %% Let the overflow happen at run-time. + Int + end; +coerce_to_float(Other) -> Other. + opt_fmoves([{set,[{x,_}=R],[{fr,_}]=Src,fmove}=I1, {set,[_]=Dst,[{x,_}=R],move}=I2|Is], Acc) -> case beam_utils:is_killed_block(R, Is) of diff --git a/lib/compiler/src/beam_validator.erl b/lib/compiler/src/beam_validator.erl index c5a3883b2a..58aba0b9cc 100644 --- a/lib/compiler/src/beam_validator.erl +++ b/lib/compiler/src/beam_validator.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/compiler/src/compiler.app.src b/lib/compiler/src/compiler.app.src index 9a02121d8b..8775c84698 100644 --- a/lib/compiler/src/compiler.app.src +++ b/lib/compiler/src/compiler.app.src @@ -1,7 +1,7 @@ % This is an -*- erlang -*- file. %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/compiler/src/core_lint.erl b/lib/compiler/src/core_lint.erl index 21296a8b66..8b688df830 100644 --- a/lib/compiler/src/core_lint.erl +++ b/lib/compiler/src/core_lint.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2010. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/compiler/src/sys_core_fold.erl b/lib/compiler/src/sys_core_fold.erl index fbd7452301..07b054c5d7 100644 --- a/lib/compiler/src/sys_core_fold.erl +++ b/lib/compiler/src/sys_core_fold.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2012. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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 @@ -1272,6 +1272,8 @@ eval_element(Call, #c_literal{val=Pos}, #c_var{name=V}, Types) true -> eval_failure(Call, badarg) end; + {ok,_} -> + eval_failure(Call, badarg); error -> Call end; diff --git a/lib/compiler/src/v3_kernel.erl b/lib/compiler/src/v3_kernel.erl index 8ef71e1346..5f1c108f7c 100644 --- a/lib/compiler/src/v3_kernel.erl +++ b/lib/compiler/src/v3_kernel.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2012. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/compiler/test/andor_SUITE.erl b/lib/compiler/test/andor_SUITE.erl index fe69aeeb43..0d00769704 100644 --- a/lib/compiler/test/andor_SUITE.erl +++ b/lib/compiler/test/andor_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2011. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/compiler/test/beam_except_SUITE.erl b/lib/compiler/test/beam_except_SUITE.erl index 6b55224a42..bf67eedd5f 100644 --- a/lib/compiler/test/beam_except_SUITE.erl +++ b/lib/compiler/test/beam_except_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2011. All Rights Reserved. +%% Copyright Ericsson AB 2011-2013. 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/compiler/test/beam_validator_SUITE.erl b/lib/compiler/test/beam_validator_SUITE.erl index c84c83795a..bc1a9e2b3b 100644 --- a/lib/compiler/test/beam_validator_SUITE.erl +++ b/lib/compiler/test/beam_validator_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2011. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/compiler/test/bs_bit_binaries_SUITE.erl b/lib/compiler/test/bs_bit_binaries_SUITE.erl index 897b4769f1..8609a490f5 100644 --- a/lib/compiler/test/bs_bit_binaries_SUITE.erl +++ b/lib/compiler/test/bs_bit_binaries_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2011. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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/compiler/test/bs_match_SUITE.erl b/lib/compiler/test/bs_match_SUITE.erl index e8a92c509e..9f15845d33 100644 --- a/lib/compiler/test/bs_match_SUITE.erl +++ b/lib/compiler/test/bs_match_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2012. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/compiler/test/core_fold_SUITE.erl b/lib/compiler/test/core_fold_SUITE.erl index 2adc71c237..c2a592f699 100644 --- a/lib/compiler/test/core_fold_SUITE.erl +++ b/lib/compiler/test/core_fold_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2011. All Rights Reserved. +%% Copyright Ericsson AB 2007-2013. 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 @@ -69,6 +69,9 @@ t_element(Config) when is_list(Config) -> ?line {'EXIT',{badarg,_}} = (catch element(5, {a,b,c,d})), ?line {'EXIT',{badarg,_}} = (catch element(5, {a,b,X,d})), ?line {'EXIT',{badarg,_}} = (catch element(5.0, {a,b,X,d})), + {'EXIT',{badarg,_}} = (catch element(2, not_a_tuple)), + {'EXIT',{badarg,_}} = (catch element(2, [])), + {'EXIT',{badarg,_}} = (catch element(2, Tuple == 3)), case id({a,b,c}) of {_,_,_}=Tup -> ?line {'EXIT',{badarg,_}} = (catch element(4, Tup)) @@ -89,6 +92,9 @@ setelement(Config) when is_list(Config) -> ?line {'EXIT',{badarg,_}} = (catch setelement_crash({a,b,c,d,e,f})), ?line error = setelement_crash_2({a,b,c,d,e,f}, <<42>>), + + {'EXIT',{badarg,_}} = (catch setelement(1, not_a_tuple, New)), + ok. setelement_crash(Tuple) -> diff --git a/lib/compiler/test/guard_SUITE.erl b/lib/compiler/test/guard_SUITE.erl index 66c0b9a295..5656d23090 100644 --- a/lib/compiler/test/guard_SUITE.erl +++ b/lib/compiler/test/guard_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2011. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/compiler/test/inline_SUITE.erl b/lib/compiler/test/inline_SUITE.erl index 6dc7548437..d9b92766e4 100644 --- a/lib/compiler/test/inline_SUITE.erl +++ b/lib/compiler/test/inline_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2011. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/compiler/test/match_SUITE.erl b/lib/compiler/test/match_SUITE.erl index de44926d81..ae7d764535 100644 --- a/lib/compiler/test/match_SUITE.erl +++ b/lib/compiler/test/match_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2011. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/compiler/test/receive_SUITE.erl b/lib/compiler/test/receive_SUITE.erl index 82c823b789..b91f2922fb 100644 --- a/lib/compiler/test/receive_SUITE.erl +++ b/lib/compiler/test/receive_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2011. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/compiler/test/record_SUITE.erl b/lib/compiler/test/record_SUITE.erl index 96f3712be9..c9f5a2053e 100644 --- a/lib/compiler/test/record_SUITE.erl +++ b/lib/compiler/test/record_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2011. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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/compiler/test/test_lib.erl b/lib/compiler/test/test_lib.erl index 996c369705..a8befbecd9 100644 --- a/lib/compiler/test/test_lib.erl +++ b/lib/compiler/test/test_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2011. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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/compiler/test/warnings_SUITE.erl b/lib/compiler/test/warnings_SUITE.erl index 9ce0df5ec4..f00bfe663b 100644 --- a/lib/compiler/test/warnings_SUITE.erl +++ b/lib/compiler/test/warnings_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2011. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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/compiler/vsn.mk b/lib/compiler/vsn.mk index b77c82309f..8c60ce6489 100644 --- a/lib/compiler/vsn.mk +++ b/lib/compiler/vsn.mk @@ -1 +1 @@ -COMPILER_VSN = 4.8.2 +COMPILER_VSN = 4.9 diff --git a/lib/cosEvent/doc/src/notes.xml b/lib/cosEvent/doc/src/notes.xml index de98a44b6a..e8877c2078 100644 --- a/lib/cosEvent/doc/src/notes.xml +++ b/lib/cosEvent/doc/src/notes.xml @@ -32,7 +32,22 @@ <file>notes.xml</file> </header> - <section><title>cosEvent 2.1.12</title> + <section><title>cosEvent 2.1.13</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + +<section><title>cosEvent 2.1.12</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/cosEvent/vsn.mk b/lib/cosEvent/vsn.mk index 2cd943e4b2..85c5c6aadd 100644 --- a/lib/cosEvent/vsn.mk +++ b/lib/cosEvent/vsn.mk @@ -1,3 +1,3 @@ -COSEVENT_VSN = 2.1.12 +COSEVENT_VSN = 2.1.13 diff --git a/lib/cosEventDomain/doc/src/notes.xml b/lib/cosEventDomain/doc/src/notes.xml index fa96792c33..db7f024b23 100644 --- a/lib/cosEventDomain/doc/src/notes.xml +++ b/lib/cosEventDomain/doc/src/notes.xml @@ -31,7 +31,22 @@ <file>notes.xml</file> </header> - <section><title>cosEventDomain 1.1.12</title> + <section><title>cosEventDomain 1.1.13</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + +<section><title>cosEventDomain 1.1.12</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/cosEventDomain/vsn.mk b/lib/cosEventDomain/vsn.mk index 5ad421e319..e9cf92395a 100644 --- a/lib/cosEventDomain/vsn.mk +++ b/lib/cosEventDomain/vsn.mk @@ -1,3 +1,3 @@ -COSEVENTDOMAIN_VSN = 1.1.12 +COSEVENTDOMAIN_VSN = 1.1.13 diff --git a/lib/cosFileTransfer/doc/src/notes.xml b/lib/cosFileTransfer/doc/src/notes.xml index f38597db10..995aabfdee 100644 --- a/lib/cosFileTransfer/doc/src/notes.xml +++ b/lib/cosFileTransfer/doc/src/notes.xml @@ -30,7 +30,22 @@ <file>notes.xml</file> </header> - <section><title>cosFileTransfer 1.1.13</title> + <section><title>cosFileTransfer 1.1.14</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + +<section><title>cosFileTransfer 1.1.13</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/cosFileTransfer/test/fileTransfer_SUITE.erl b/lib/cosFileTransfer/test/fileTransfer_SUITE.erl index 18a591a7af..dfe6fabfab 100644 --- a/lib/cosFileTransfer/test/fileTransfer_SUITE.erl +++ b/lib/cosFileTransfer/test/fileTransfer_SUITE.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2011. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/cosFileTransfer/vsn.mk b/lib/cosFileTransfer/vsn.mk index 6d0c6669a3..58545be931 100644 --- a/lib/cosFileTransfer/vsn.mk +++ b/lib/cosFileTransfer/vsn.mk @@ -1 +1 @@ -COSFILETRANSFER_VSN = 1.1.13 +COSFILETRANSFER_VSN = 1.1.14 diff --git a/lib/cosNotification/doc/src/notes.xml b/lib/cosNotification/doc/src/notes.xml index c79d040f9a..f1f70e566e 100644 --- a/lib/cosNotification/doc/src/notes.xml +++ b/lib/cosNotification/doc/src/notes.xml @@ -31,7 +31,22 @@ <file>notes.xml</file> </header> - <section><title>cosNotification 1.1.18</title> + <section><title>cosNotification 1.1.19</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + +<section><title>cosNotification 1.1.18</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/cosNotification/vsn.mk b/lib/cosNotification/vsn.mk index e7c5465fe4..20eb6167ac 100644 --- a/lib/cosNotification/vsn.mk +++ b/lib/cosNotification/vsn.mk @@ -1,2 +1,2 @@ -COSNOTIFICATION_VSN = 1.1.18 +COSNOTIFICATION_VSN = 1.1.19 diff --git a/lib/cosProperty/doc/src/notes.xml b/lib/cosProperty/doc/src/notes.xml index f5f737e2a3..22fab68cc3 100644 --- a/lib/cosProperty/doc/src/notes.xml +++ b/lib/cosProperty/doc/src/notes.xml @@ -31,7 +31,22 @@ <file>notes.xml</file> </header> - <section><title>cosProperty 1.1.15</title> + <section><title>cosProperty 1.1.16</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + +<section><title>cosProperty 1.1.15</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/cosProperty/vsn.mk b/lib/cosProperty/vsn.mk index a4b1a2c94e..ac7820216e 100644 --- a/lib/cosProperty/vsn.mk +++ b/lib/cosProperty/vsn.mk @@ -1,2 +1,2 @@ -COSPROPERTY_VSN = 1.1.15 +COSPROPERTY_VSN = 1.1.16 diff --git a/lib/cosTime/doc/src/notes.xml b/lib/cosTime/doc/src/notes.xml index c70978df2b..2a65e000ec 100644 --- a/lib/cosTime/doc/src/notes.xml +++ b/lib/cosTime/doc/src/notes.xml @@ -32,7 +32,22 @@ <file>notes.xml</file> </header> - <section><title>cosTime 1.1.12</title> + <section><title>cosTime 1.1.13</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + +<section><title>cosTime 1.1.12</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/cosTime/vsn.mk b/lib/cosTime/vsn.mk index 14d3b61bc6..02cd669222 100644 --- a/lib/cosTime/vsn.mk +++ b/lib/cosTime/vsn.mk @@ -1,2 +1,2 @@ -COSTIME_VSN = 1.1.12 +COSTIME_VSN = 1.1.13 diff --git a/lib/cosTransactions/doc/src/notes.xml b/lib/cosTransactions/doc/src/notes.xml index f3a7a83fb0..d74e9ca3a6 100644 --- a/lib/cosTransactions/doc/src/notes.xml +++ b/lib/cosTransactions/doc/src/notes.xml @@ -32,7 +32,22 @@ <file>notes.xml</file> </header> - <section><title>cosTransactions 1.2.12</title> + <section><title>cosTransactions 1.2.13</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + +<section><title>cosTransactions 1.2.12</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/cosTransactions/vsn.mk b/lib/cosTransactions/vsn.mk index 7ca604b589..5414270a3d 100644 --- a/lib/cosTransactions/vsn.mk +++ b/lib/cosTransactions/vsn.mk @@ -1 +1 @@ -COSTRANSACTIONS_VSN = 1.2.12 +COSTRANSACTIONS_VSN = 1.2.13 diff --git a/lib/crypto/doc/src/crypto.xml b/lib/crypto/doc/src/crypto.xml index 14c77c873f..6b9b2ef207 100755 --- a/lib/crypto/doc/src/crypto.xml +++ b/lib/crypto/doc/src/crypto.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1999</year><year>2012</year> + <year>1999</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/crypto/doc/src/crypto_app.xml b/lib/crypto/doc/src/crypto_app.xml index 6573a56f4c..8371db1ff2 100644 --- a/lib/crypto/doc/src/crypto_app.xml +++ b/lib/crypto/doc/src/crypto_app.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>1999</year> - <year>2011</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> diff --git a/lib/crypto/doc/src/notes.xml b/lib/crypto/doc/src/notes.xml index 4178ca2b08..4936cae8ca 100644 --- a/lib/crypto/doc/src/notes.xml +++ b/lib/crypto/doc/src/notes.xml @@ -30,6 +30,36 @@ </header> <p>This document describes the changes made to the Crypto application.</p> +<section><title>Crypto 2.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Enable runtime upgrade of crypto including the OpenSSL + library used by crypto.</p> + <p> + Own Id: OTP-10596</p> + </item> + <item> + <p> + Improve documentation and tests for hmac functions in + crypto. Thanks to Daniel White</p> + <p> + Own Id: OTP-10640</p> + </item> + <item> + <p> + Added ripemd160 support to crypto. Thanks to Michael + Loftis</p> + <p> + Own Id: OTP-10667</p> + </item> + </list> + </section> + +</section> + <section><title>Crypto 2.2</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/crypto/src/Makefile b/lib/crypto/src/Makefile index 5e09a09aa6..574c2076f2 100644 --- a/lib/crypto/src/Makefile +++ b/lib/crypto/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1999-2012. All Rights Reserved. +# Copyright Ericsson AB 1999-2013. 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/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index aa89f6cc61..1328a95e87 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2012. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/crypto/test/crypto_SUITE.erl b/lib/crypto/test/crypto_SUITE.erl index 142f06677a..6f2df0f07b 100644 --- a/lib/crypto/test/crypto_SUITE.erl +++ b/lib/crypto/test/crypto_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2012. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/crypto/vsn.mk b/lib/crypto/vsn.mk index ccfb1fd66e..2a0cb57aa9 100644 --- a/lib/crypto/vsn.mk +++ b/lib/crypto/vsn.mk @@ -1 +1 @@ -CRYPTO_VSN = 2.2 +CRYPTO_VSN = 2.3 diff --git a/lib/debugger/doc/src/notes.xml b/lib/debugger/doc/src/notes.xml index 66638a59f6..d38d51075f 100644 --- a/lib/debugger/doc/src/notes.xml +++ b/lib/debugger/doc/src/notes.xml @@ -32,6 +32,48 @@ <p>This document describes the changes made to the Debugger application.</p> +<section><title>Debugger 3.2.9</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix Debugger settings dialog due to changed behavior in + wxFileDialog (Thanks to H�kan Mattsson)</p> + <p> + Own Id: OTP-10621</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> + Integer lists and utf-8 binaries in variables are now + displayed as strings.</p> + <p> + Own Id: OTP-10679</p> + </item> + </list> + </section> + +</section> + <section><title>Debugger 3.2.8</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/debugger/src/Makefile b/lib/debugger/src/Makefile index 0b4b35412a..85754da219 100644 --- a/lib/debugger/src/Makefile +++ b/lib/debugger/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1997-2012. All Rights Reserved. +# Copyright Ericsson AB 1997-2013. 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/debugger/src/dbg_wx_settings.erl b/lib/debugger/src/dbg_wx_settings.erl index 94ecc5781d..20aac74c3d 100644 --- a/lib/debugger/src/dbg_wx_settings.erl +++ b/lib/debugger/src/dbg_wx_settings.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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/debugger/test/erl_eval_SUITE.erl b/lib/debugger/test/erl_eval_SUITE.erl index c675f704b4..bb2669f450 100644 --- a/lib/debugger/test/erl_eval_SUITE.erl +++ b/lib/debugger/test/erl_eval_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2011. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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/debugger/test/int_eval_SUITE_data/my_int_eval_module.erl b/lib/debugger/test/int_eval_SUITE_data/my_int_eval_module.erl index 0d7883f067..c5c6a56363 100644 --- a/lib/debugger/test/int_eval_SUITE_data/my_int_eval_module.erl +++ b/lib/debugger/test/int_eval_SUITE_data/my_int_eval_module.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2011. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/debugger/vsn.mk b/lib/debugger/vsn.mk index 5b572f5f20..b22b379cab 100644 --- a/lib/debugger/vsn.mk +++ b/lib/debugger/vsn.mk @@ -1 +1 @@ -DEBUGGER_VSN = 3.2.8 +DEBUGGER_VSN = 3.2.9 diff --git a/lib/dialyzer/doc/src/notes.xml b/lib/dialyzer/doc/src/notes.xml index f485e4d03b..3290a98795 100644 --- a/lib/dialyzer/doc/src/notes.xml +++ b/lib/dialyzer/doc/src/notes.xml @@ -31,6 +31,62 @@ <p>This document describes the changes made to the Dialyzer application.</p> +<section><title>Dialyzer 2.5.4</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p> Dialyzer no longer outputs warnings for unused + anonymous functions ("funs"). Warnings are still output + for unused functions. </p> + <p> + Own Id: OTP-10433</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + <item> + <p> + Fix precision of record creation violation warnings. + Thanks to Stavros Aronis</p> + <p> + Own Id: OTP-10681</p> + </item> + <item> + <p> + Report spec discrepancy on mismatching lists. Thanks to + Stavros Aronis.</p> + <p> + Own Id: OTP-10740</p> + </item> + <item> + <p> + Properly support functions with arbitrary arity in type + specs. Thanks to Stavros Aronis.</p> + <p> + Own Id: OTP-10772</p> + </item> + </list> + </section> + +</section> + <section><title>Dialyzer 2.5.3</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum b/lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum index 6eaf60b91d..6f189099ed 100644 --- a/lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum +++ b/lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum @@ -1,2 +1,2 @@ -empty_list_infimum.erl:38: Invalid type specification for function empty_list_infimum:list_vhost_permissions/1. The success typing is (_) -> [[{_,_}]]
\ No newline at end of file +empty_list_infimum.erl:38: Invalid type specification for function empty_list_infimum:list_vhost_permissions/1. The success typing is (_) -> [[{_,_}]] diff --git a/lib/dialyzer/vsn.mk b/lib/dialyzer/vsn.mk index f344fe0604..d4c45f3842 100644 --- a/lib/dialyzer/vsn.mk +++ b/lib/dialyzer/vsn.mk @@ -1 +1 @@ -DIALYZER_VSN = 2.5.3 +DIALYZER_VSN = 2.5.4 diff --git a/lib/diameter/doc/src/notes.xml b/lib/diameter/doc/src/notes.xml index d241e2bd19..6fe22492e4 100644 --- a/lib/diameter/doc/src/notes.xml +++ b/lib/diameter/doc/src/notes.xml @@ -11,7 +11,7 @@ <header> <copyright> <year>2011</year> -<year>2012</year> +<year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -42,6 +42,85 @@ first.</p> <!-- ===================================================================== --> +<section><title>Diameter 1.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Add registered server names to the app file.</p> + <p> + Own Id: OTP-10442</p> + </item> + <item> + <p> + Fix #diameter_header{} handling broken by OTP-10445.</p> + <p> + The fault caused the the header of a [Header | Avps] + request to be ignored if both end_to_end_id and + hop_by_hop_id were undefined.</p> + <p> + Own Id: OTP-10609</p> + </item> + <item> + <p> + Fix error handling for handle_request callback.</p> + <p> + A callback that returned a #diameter_packet{} would fail + if the incoming request had decode errors.</p> + <p> + Own Id: OTP-10614</p> + </item> + <item> + <p> + Fix timing of service start event.</p> + <p> + The event did not necessarily precede other events as + documented.</p> + <p> + Own Id: OTP-10618</p> + </item> + <item> + <p> + Fix setting of header T flag at peer failover.</p> + <p> + The flag is now set in the diameter_header record passed + to a prepare_retransmit callback.</p> + <p> + Own Id: OTP-10619</p> + </item> + <item> + <p> + Fix sending of CER/CEA timeout event at capx_timeout.</p> + <p> + The event was not sent as documented.</p> + <p> + Own Id: OTP-10628</p> + </item> + <item> + <p> + Fix improper setting of Application-ID in the Diameter + header of an answer message whose E flag is set.</p> + <p> + The value should be that of the request in question. The + fault caused it always to be 0.</p> + <p> + Own Id: OTP-10655</p> + </item> + <item> + <p> + Fix faulty handling of AVP length errors.</p> + <p> + An incorrect AVP length but no other errors caused an + incoming request to fail.</p> + <p> + Own Id: OTP-10693</p> + </item> + </list> + </section> + +</section> + <section><title>Diameter 1.3.1</title> <section><title>Known Bugs and Problems</title> diff --git a/lib/diameter/src/base/diameter.app.src b/lib/diameter/src/base/diameter.app.src index 7e17cd6c9f..ceefb9b398 100644 --- a/lib/diameter/src/base/diameter.app.src +++ b/lib/diameter/src/base/diameter.app.src @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. 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/edoc/doc/src/notes.xml b/lib/edoc/doc/src/notes.xml index 472b3bfc34..261cae016c 100644 --- a/lib/edoc/doc/src/notes.xml +++ b/lib/edoc/doc/src/notes.xml @@ -31,6 +31,42 @@ <p>This document describes the changes made to the EDoc application.</p> +<section><title>Edoc 0.7.11</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Since EDoc 0.7.7 (R14B02) separate values of union + types can be annotated. However, the parser has hitherto + chosen not to add the necessary parentheses due to + backwards compatibility. </p> <p> From this release on + code traversing the output of <c>edoc_parser</c> needs to + take care of parentheses around separate values of union + types. Examples of such code are layout modules and + doclet modules. </p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10195</p> + </item> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + </list> + </section> + +</section> + <section><title>Edoc 0.7.10</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/edoc/vsn.mk b/lib/edoc/vsn.mk index 2f403212c8..cfde80f0fa 100644 --- a/lib/edoc/vsn.mk +++ b/lib/edoc/vsn.mk @@ -1 +1 @@ -EDOC_VSN = 0.7.10 +EDOC_VSN = 0.7.11 diff --git a/lib/eldap/doc/src/eldap.xml b/lib/eldap/doc/src/eldap.xml index bd6f00af1f..30767abd7e 100644 --- a/lib/eldap/doc/src/eldap.xml +++ b/lib/eldap/doc/src/eldap.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2012</year> + <year>2012</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/eldap/doc/src/notes.xml b/lib/eldap/doc/src/notes.xml index d9b11875de..6dd3973c81 100644 --- a/lib/eldap/doc/src/notes.xml +++ b/lib/eldap/doc/src/notes.xml @@ -30,7 +30,28 @@ </header> <p>This document describes the changes made to the Eldap application.</p> - <section> + <section><title>Eldap 1.0.1</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Fixed various dialyzer warnings</p> + <p> + Own Id: OTP-10403 Aux Id: kunagi-258 [169] </p> + </item> + <item> + <p> + Configure the SSL options fully in eldap.</p> + <p> + Own Id: OTP-10728</p> + </item> + </list> + </section> + +</section> + +<section> <title>Eldap 1.0</title> <p>New application. </p> </section> diff --git a/lib/eldap/src/Makefile b/lib/eldap/src/Makefile index e7cbb776bd..ebb7967e11 100644 --- a/lib/eldap/src/Makefile +++ b/lib/eldap/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2012. All Rights Reserved. +# Copyright Ericsson AB 2012-2013. 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/erl_docgen/doc/src/notes.xml b/lib/erl_docgen/doc/src/notes.xml index 9775909d76..5b255efe31 100644 --- a/lib/erl_docgen/doc/src/notes.xml +++ b/lib/erl_docgen/doc/src/notes.xml @@ -30,7 +30,47 @@ </header> <p>This document describes the changes made to the <em>erl_docgen</em> application.</p> - <section><title>Erl_Docgen 0.3.3</title> + <section><title>Erl_Docgen 0.3.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> Correct a PDF indentation bug for tagged lists in + tagged lists and added some missing tags to the DTD. </p> + <p> + Own Id: OTP-10725</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + </list> + </section> + +</section> + +<section><title>Erl_Docgen 0.3.3</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/erl_docgen/priv/xsl/db_pdf.xsl b/lib/erl_docgen/priv/xsl/db_pdf.xsl index c846bdbf34..c15b16eb5b 100644 --- a/lib/erl_docgen/priv/xsl/db_pdf.xsl +++ b/lib/erl_docgen/priv/xsl/db_pdf.xsl @@ -3,7 +3,7 @@ # # %CopyrightBegin% # - # Copyright Ericsson AB 2009-2012. All Rights Reserved. + # Copyright Ericsson AB 2009-2013. 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/erl_interface/aclocal.m4 b/lib/erl_interface/aclocal.m4 index 918e30a886..25f40944e7 100644 --- a/lib/erl_interface/aclocal.m4 +++ b/lib/erl_interface/aclocal.m4 @@ -1,7 +1,7 @@ dnl dnl %CopyrightBegin% dnl -dnl Copyright Ericsson AB 1998-2012. All Rights Reserved. +dnl Copyright Ericsson AB 1998-2013. All Rights Reserved. dnl dnl The contents of this file are subject to the Erlang Public License, dnl Version 1.1, (the "License"); you may not use this file except in diff --git a/lib/erl_interface/doc/src/ei.xml b/lib/erl_interface/doc/src/ei.xml index 117c787da6..03eea49224 100644 --- a/lib/erl_interface/doc/src/ei.xml +++ b/lib/erl_interface/doc/src/ei.xml @@ -4,7 +4,7 @@ <cref> <header> <copyright> - <year>2001</year><year>2011</year> + <year>2001</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/erl_interface/doc/src/erl_eterm.xml b/lib/erl_interface/doc/src/erl_eterm.xml index c7840d7813..a7921ea9d2 100644 --- a/lib/erl_interface/doc/src/erl_eterm.xml +++ b/lib/erl_interface/doc/src/erl_eterm.xml @@ -4,7 +4,7 @@ <cref> <header> <copyright> - <year>1996</year><year>2009</year> + <year>1996</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/erl_interface/doc/src/notes.xml b/lib/erl_interface/doc/src/notes.xml index f0a9b336ff..7cf3d46d88 100644 --- a/lib/erl_interface/doc/src/notes.xml +++ b/lib/erl_interface/doc/src/notes.xml @@ -30,6 +30,33 @@ </header> <p>This document describes the changes made to the Erl_interface application.</p> +<section><title>Erl_Interface 3.7.10</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> + Limited support for unicode atoms in the external format + and in the internal representation of the vm. This is a + preparative feature in order to support communication + with future releases of Erlang/OTP that may create + unicode atoms.</p> + <p> + Own Id: OTP-10753</p> + </item> + </list> + </section> + +</section> + <section><title>Erl_Interface 3.7.9</title> <section><title>Improvements and New Features</title> diff --git a/lib/erl_interface/include/ei.h b/lib/erl_interface/include/ei.h index 2278a28adb..29d53ab3a2 100644 --- a/lib/erl_interface/include/ei.h +++ b/lib/erl_interface/include/ei.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2010. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/include/erl_interface.h b/lib/erl_interface/include/erl_interface.h index 98acc0d71d..7f44cb83bd 100644 --- a/lib/erl_interface/include/erl_interface.h +++ b/lib/erl_interface/include/erl_interface.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2009. All Rights Reserved. + * Copyright Ericsson AB 1996-2013. 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/erl_interface/src/Makefile b/lib/erl_interface/src/Makefile index 03e2ce14f0..a069aa07ab 100644 --- a/lib/erl_interface/src/Makefile +++ b/lib/erl_interface/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2009. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/erl_interface/src/connect/ei_connect.c b/lib/erl_interface/src/connect/ei_connect.c index 4421bbb7fe..c1361e169e 100644 --- a/lib/erl_interface/src/connect/ei_connect.c +++ b/lib/erl_interface/src/connect/ei_connect.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2000-2011. All Rights Reserved. + * Copyright Ericsson AB 2000-2013. 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/erl_interface/src/connect/ei_connect_int.h b/lib/erl_interface/src/connect/ei_connect_int.h index 81c384e38d..42ab9b58d7 100644 --- a/lib/erl_interface/src/connect/ei_connect_int.h +++ b/lib/erl_interface/src/connect/ei_connect_int.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2001-2010. All Rights Reserved. + * Copyright Ericsson AB 2001-2013. 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/erl_interface/src/connect/ei_resolve.c b/lib/erl_interface/src/connect/ei_resolve.c index 79d259b92d..2545c5f3de 100644 --- a/lib/erl_interface/src/connect/ei_resolve.c +++ b/lib/erl_interface/src/connect/ei_resolve.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1997-2011. All Rights Reserved. + * Copyright Ericsson AB 1997-2013. 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/erl_interface/src/connect/eirecv.c b/lib/erl_interface/src/connect/eirecv.c index 075f78e3d2..1821de3844 100644 --- a/lib/erl_interface/src/connect/eirecv.c +++ b/lib/erl_interface/src/connect/eirecv.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2010. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/decode/decode_atom.c b/lib/erl_interface/src/decode/decode_atom.c index 9779ad3f35..af4fc114d1 100644 --- a/lib/erl_interface/src/decode/decode_atom.c +++ b/lib/erl_interface/src/decode/decode_atom.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2011. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/decode/decode_boolean.c b/lib/erl_interface/src/decode/decode_boolean.c index f20690249b..8c44a1ccfc 100644 --- a/lib/erl_interface/src/decode/decode_boolean.c +++ b/lib/erl_interface/src/decode/decode_boolean.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2009. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/decode/decode_fun.c b/lib/erl_interface/src/decode/decode_fun.c index 7bbef5db44..c4667822e5 100644 --- a/lib/erl_interface/src/decode/decode_fun.c +++ b/lib/erl_interface/src/decode/decode_fun.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2001-2009. All Rights Reserved. + * Copyright Ericsson AB 2001-2013. 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/erl_interface/src/decode/decode_pid.c b/lib/erl_interface/src/decode/decode_pid.c index e79952195d..67ce7e05f9 100644 --- a/lib/erl_interface/src/decode/decode_pid.c +++ b/lib/erl_interface/src/decode/decode_pid.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2011. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/decode/decode_port.c b/lib/erl_interface/src/decode/decode_port.c index 5fd96b51a4..2d1b46e705 100644 --- a/lib/erl_interface/src/decode/decode_port.c +++ b/lib/erl_interface/src/decode/decode_port.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2011. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/decode/decode_ref.c b/lib/erl_interface/src/decode/decode_ref.c index 7294e5d239..579371ed7d 100644 --- a/lib/erl_interface/src/decode/decode_ref.c +++ b/lib/erl_interface/src/decode/decode_ref.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2011. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/encode/encode_atom.c b/lib/erl_interface/src/encode/encode_atom.c index 044f17cb60..32f5ae2af1 100644 --- a/lib/erl_interface/src/encode/encode_atom.c +++ b/lib/erl_interface/src/encode/encode_atom.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2011. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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 @@ -23,8 +23,8 @@ #include "putget.h" -static int copy_ascii_atom(char* dst, const char* src, int slen); -static int copy_utf8_atom(char* dst, const char* src, int slen); +static int verify_ascii_atom(const char* src, int slen); +static int verify_utf8_atom(const char* src, int slen); int ei_encode_atom(char *buf, int *index, const char *p) @@ -73,7 +73,8 @@ int ei_encode_atom_len_as(char *buf, int *index, const char *p, int len, if (len < 0) return -1; break; case ERLANG_ASCII: - if (copy_ascii_atom(s+2, p, len) < 0) return -1; + if (verify_ascii_atom(p, len) < 0) return -1; + memcpy(s+2, p, len); break; case ERLANG_LATIN1: memcpy(s+2, p, len); @@ -88,7 +89,8 @@ int ei_encode_atom_len_as(char *buf, int *index, const char *p, int len, if (from_enc == ERLANG_UTF8) { len = utf8_to_latin1(NULL, p, len, MAXATOMLEN-1, NULL); if (len < 0) return -1; - } + } else if (from_enc == ERLANG_ASCII) + if (verify_ascii_atom(p, len) < 0) return -1; } break; @@ -100,11 +102,13 @@ int ei_encode_atom_len_as(char *buf, int *index, const char *p, int len, len = latin1_to_utf8((buf ? s+offs : NULL), p, len, MAXATOMLEN_UTF8-1, NULL); break; case ERLANG_ASCII: - if (buf && copy_ascii_atom(s+offs, p, len) < 0) return -1; + if (verify_ascii_atom(p, len) < 0) return -1; + if (buf) memcpy(s+offs,p,len); break; case ERLANG_UTF8: if (len >= 256) offs++; - if (buf && copy_utf8_atom(s+offs, p, len) < 0) return -1; + if (verify_utf8_atom(p, len) < 0) return -1; + if (buf) memcpy(s+offs,p,len); break; default: return -1; @@ -144,17 +148,17 @@ ei_internal_put_atom(char** bufp, const char* p, int slen, } -int copy_ascii_atom(char* dst, const char* src, int slen) +int verify_ascii_atom(const char* src, int slen) { while (slen > 0) { if ((src[0] & 0x80) != 0) return -1; - *dst++ = *src++; + src++; slen--; } return 0; } -int copy_utf8_atom(char* dst, const char* src, int slen) +int verify_utf8_atom(const char* src, int slen) { int num_chars = 0; @@ -163,25 +167,22 @@ int copy_utf8_atom(char* dst, const char* src, int slen) if ((src[0] & 0x80) != 0) { if ((src[0] & 0xE0) == 0xC0) { if (slen < 2 || (src[1] & 0xC0) != 0x80) return -1; - *dst++ = *src++; + src++; slen--; } else if ((src[0] & 0xF0) == 0xE0) { if (slen < 3 || (src[1] & 0xC0) != 0x80 || (src[2] & 0xC0) != 0x80) return -1; - *dst++ = *src++; - *dst++ = *src++; + src += 2; slen -= 2; } else if ((src[0] & 0xF8) == 0xF0) { if (slen < 4 || (src[1] & 0xC0) != 0x80 || (src[2] & 0xC0) != 0x80 || (src[3] & 0xC0) != 0x80) return -1; - *dst++ = *src++; - *dst++ = *src++; - *dst++ = *src++; + src += 3; slen -= 3; } else return -1; } - *dst++ = *src++; + src++; slen--; } return 0; diff --git a/lib/erl_interface/src/encode/encode_fun.c b/lib/erl_interface/src/encode/encode_fun.c index 4daee32648..455d8a5a94 100644 --- a/lib/erl_interface/src/encode/encode_fun.c +++ b/lib/erl_interface/src/encode/encode_fun.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2001-2009. All Rights Reserved. + * Copyright Ericsson AB 2001-2013. 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/erl_interface/src/encode/encode_pid.c b/lib/erl_interface/src/encode/encode_pid.c index 0cf3ef4efb..903c9cce00 100644 --- a/lib/erl_interface/src/encode/encode_pid.c +++ b/lib/erl_interface/src/encode/encode_pid.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2009. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/encode/encode_port.c b/lib/erl_interface/src/encode/encode_port.c index 2bf9e26d78..c729aeb4eb 100644 --- a/lib/erl_interface/src/encode/encode_port.c +++ b/lib/erl_interface/src/encode/encode_port.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2009. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/encode/encode_ref.c b/lib/erl_interface/src/encode/encode_ref.c index e8b3173315..3511366bef 100644 --- a/lib/erl_interface/src/encode/encode_ref.c +++ b/lib/erl_interface/src/encode/encode_ref.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2009. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/legacy/erl_connect.c b/lib/erl_interface/src/legacy/erl_connect.c index f82704ea8b..eca16497dc 100644 --- a/lib/erl_interface/src/legacy/erl_connect.c +++ b/lib/erl_interface/src/legacy/erl_connect.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2011. All Rights Reserved. + * Copyright Ericsson AB 1996-2013. 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/erl_interface/src/legacy/erl_eterm.c b/lib/erl_interface/src/legacy/erl_eterm.c index aa0fd5ddcf..9e778a299e 100644 --- a/lib/erl_interface/src/legacy/erl_eterm.c +++ b/lib/erl_interface/src/legacy/erl_eterm.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2010. All Rights Reserved. + * Copyright Ericsson AB 1996-2013. 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/erl_interface/src/legacy/erl_eterm.h b/lib/erl_interface/src/legacy/erl_eterm.h index 2e8129d9cd..ca4ec7925a 100644 --- a/lib/erl_interface/src/legacy/erl_eterm.h +++ b/lib/erl_interface/src/legacy/erl_eterm.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2009. All Rights Reserved. + * Copyright Ericsson AB 1996-2013. 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/erl_interface/src/legacy/erl_format.c b/lib/erl_interface/src/legacy/erl_format.c index 533241e396..fda05cbdb8 100644 --- a/lib/erl_interface/src/legacy/erl_format.c +++ b/lib/erl_interface/src/legacy/erl_format.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2011. All Rights Reserved. + * Copyright Ericsson AB 1996-2013. 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/erl_interface/src/legacy/erl_malloc.c b/lib/erl_interface/src/legacy/erl_malloc.c index d09239e02d..c320a00bfe 100644 --- a/lib/erl_interface/src/legacy/erl_malloc.c +++ b/lib/erl_interface/src/legacy/erl_malloc.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2009. All Rights Reserved. + * Copyright Ericsson AB 1996-2013. 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/erl_interface/src/legacy/erl_marshal.c b/lib/erl_interface/src/legacy/erl_marshal.c index 4c45cebb02..c051c3a597 100644 --- a/lib/erl_interface/src/legacy/erl_marshal.c +++ b/lib/erl_interface/src/legacy/erl_marshal.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2011. All Rights Reserved. + * Copyright Ericsson AB 1996-2013. 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/erl_interface/src/legacy/global_whereis.c b/lib/erl_interface/src/legacy/global_whereis.c index e6c556d907..589c9d17de 100644 --- a/lib/erl_interface/src/legacy/global_whereis.c +++ b/lib/erl_interface/src/legacy/global_whereis.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2009. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/misc/ei_decode_term.c b/lib/erl_interface/src/misc/ei_decode_term.c index 65afee89cc..1423ec7ed7 100644 --- a/lib/erl_interface/src/misc/ei_decode_term.c +++ b/lib/erl_interface/src/misc/ei_decode_term.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2001-2011. All Rights Reserved. + * Copyright Ericsson AB 2001-2013. 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/erl_interface/src/misc/ei_format.c b/lib/erl_interface/src/misc/ei_format.c index b5f11e618e..07499213cd 100644 --- a/lib/erl_interface/src/misc/ei_format.c +++ b/lib/erl_interface/src/misc/ei_format.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2001-2012. All Rights Reserved. + * Copyright Ericsson AB 2001-2013. 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/erl_interface/src/misc/ei_printterm.c b/lib/erl_interface/src/misc/ei_printterm.c index f3003a6172..95369db15a 100644 --- a/lib/erl_interface/src/misc/ei_printterm.c +++ b/lib/erl_interface/src/misc/ei_printterm.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2001-2010. All Rights Reserved. + * Copyright Ericsson AB 2001-2013. 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/erl_interface/src/misc/ei_x_encode.c b/lib/erl_interface/src/misc/ei_x_encode.c index 44dcff7664..4e6f4a1d36 100644 --- a/lib/erl_interface/src/misc/ei_x_encode.c +++ b/lib/erl_interface/src/misc/ei_x_encode.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2001-2009. All Rights Reserved. + * Copyright Ericsson AB 2001-2013. 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 @@ -99,7 +99,8 @@ int ei_x_encode_string(ei_x_buff* x, const char* s) int ei_x_encode_string_len(ei_x_buff* x, const char* s, int len) { int i = x->index; - ei_encode_string_len(NULL, &i, s, len); + if (ei_encode_string_len(NULL, &i, s, len) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_string_len(x->buff, &x->index, s, len); @@ -108,7 +109,8 @@ int ei_x_encode_string_len(ei_x_buff* x, const char* s, int len) int ei_x_encode_binary(ei_x_buff* x, const void* p, int len) { int i = x->index; - ei_encode_binary(NULL, &i, p, len); + if (ei_encode_binary(NULL, &i, p, len) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_binary(x->buff, &x->index, p, len); @@ -117,7 +119,8 @@ int ei_x_encode_binary(ei_x_buff* x, const void* p, int len) int ei_x_encode_long(ei_x_buff* x, long n) { int i = x->index; - ei_encode_long(NULL, &i, n); + if (ei_encode_long(NULL, &i, n) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_long(x->buff, &x->index, n); @@ -126,7 +129,8 @@ int ei_x_encode_long(ei_x_buff* x, long n) int ei_x_encode_ulong(ei_x_buff* x, unsigned long n) { int i = x->index; - ei_encode_ulong(NULL, &i, n); + if (ei_encode_ulong(NULL, &i, n) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_ulong(x->buff, &x->index, n); @@ -135,7 +139,8 @@ int ei_x_encode_ulong(ei_x_buff* x, unsigned long n) int ei_x_encode_char(ei_x_buff* x, char p) { int i = x->index; - ei_encode_char(NULL, &i, p); + if (ei_encode_char(NULL, &i, p) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_char(x->buff, &x->index, p); @@ -144,7 +149,8 @@ int ei_x_encode_char(ei_x_buff* x, char p) int ei_x_encode_boolean(ei_x_buff* x, int p) { int i = x->index; - ei_encode_boolean(NULL, &i, p); + if (ei_encode_boolean(NULL, &i, p) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_boolean(x->buff, &x->index, p); @@ -153,7 +159,8 @@ int ei_x_encode_boolean(ei_x_buff* x, int p) int ei_x_encode_double(ei_x_buff* x, double dbl) { int i = x->index; - ei_encode_double(NULL, &i, dbl); + if (ei_encode_double(NULL, &i, dbl) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_double(x->buff, &x->index, dbl); @@ -162,7 +169,8 @@ int ei_x_encode_double(ei_x_buff* x, double dbl) int ei_x_encode_list_header(ei_x_buff* x, long n) { int i = x->index; - ei_encode_list_header(NULL, &i, n); + if (ei_encode_list_header(NULL, &i, n) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_list_header(x->buff, &x->index, n); @@ -171,7 +179,8 @@ int ei_x_encode_list_header(ei_x_buff* x, long n) int ei_x_encode_empty_list(ei_x_buff* x) { int i = x->index; - ei_encode_empty_list(NULL, &i); + if (ei_encode_empty_list(NULL, &i) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_empty_list(x->buff, &x->index); @@ -180,7 +189,8 @@ int ei_x_encode_empty_list(ei_x_buff* x) int ei_x_encode_version(ei_x_buff* x) { int i = x->index; - ei_encode_version(NULL, &i); + if (ei_encode_version(NULL, &i) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_version(x->buff, &x->index); @@ -189,7 +199,8 @@ int ei_x_encode_version(ei_x_buff* x) int ei_x_encode_tuple_header(ei_x_buff* x, long n) { int i = x->index; - ei_encode_tuple_header(NULL, &i, n); + if (ei_encode_tuple_header(NULL, &i, n) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_tuple_header(x->buff, &x->index, n); @@ -217,7 +228,8 @@ int ei_x_encode_atom_len_as(ei_x_buff* x, const char* s, int len, enum erlang_char_encoding to_enc) { int i = x->index; - ei_encode_atom_len_as(NULL, &i, s, len, from_enc, to_enc); + if (ei_encode_atom_len_as(NULL, &i, s, len, from_enc, to_enc) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_atom_len_as(x->buff, &x->index, s, len, from_enc, to_enc); @@ -227,7 +239,8 @@ int ei_x_encode_atom_len_as(ei_x_buff* x, const char* s, int len, int ei_x_encode_pid(ei_x_buff* x, const erlang_pid* pid) { int i = x->index; - ei_encode_pid(NULL, &i, pid); + if (ei_encode_pid(NULL, &i, pid) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_pid(x->buff, &x->index, pid); @@ -236,7 +249,8 @@ int ei_x_encode_pid(ei_x_buff* x, const erlang_pid* pid) int ei_x_encode_fun(ei_x_buff* x, const erlang_fun* fun) { int i = x->index; - ei_encode_fun(NULL, &i, fun); + if (ei_encode_fun(NULL, &i, fun) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_fun(x->buff, &x->index, fun); @@ -245,7 +259,8 @@ int ei_x_encode_fun(ei_x_buff* x, const erlang_fun* fun) int ei_x_encode_ref(ei_x_buff* x, const erlang_ref* ref) { int i = x->index; - ei_encode_ref(NULL, &i, ref); + if (ei_encode_ref(NULL, &i, ref) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_ref(x->buff, &x->index, ref); @@ -254,7 +269,8 @@ int ei_x_encode_ref(ei_x_buff* x, const erlang_ref* ref) int ei_x_encode_port(ei_x_buff* x, const erlang_port* port) { int i = x->index; - ei_encode_port(NULL, &i, port); + if (ei_encode_port(NULL, &i, port) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_port(x->buff, &x->index, port); @@ -263,7 +279,8 @@ int ei_x_encode_port(ei_x_buff* x, const erlang_port* port) int ei_x_encode_trace(ei_x_buff* x, const erlang_trace* trace) { int i = x->index; - ei_encode_trace(NULL, &i, trace); + if (ei_encode_trace(NULL, &i, trace) == -1) + return -1; if (!x_fix_buff(x, i)) return -1; return ei_encode_trace(x->buff, &x->index, trace); diff --git a/lib/erl_interface/src/misc/get_type.c b/lib/erl_interface/src/misc/get_type.c index 54465196b0..2bd992bd56 100644 --- a/lib/erl_interface/src/misc/get_type.c +++ b/lib/erl_interface/src/misc/get_type.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2010. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/misc/putget.h b/lib/erl_interface/src/misc/putget.h index 77ae168f8c..587bf1a0f8 100644 --- a/lib/erl_interface/src/misc/putget.h +++ b/lib/erl_interface/src/misc/putget.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2010. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/misc/show_msg.c b/lib/erl_interface/src/misc/show_msg.c index 33b09643ca..935a9a3287 100644 --- a/lib/erl_interface/src/misc/show_msg.c +++ b/lib/erl_interface/src/misc/show_msg.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2010. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/erl_interface/src/prog/ei_fake_prog.c b/lib/erl_interface/src/prog/ei_fake_prog.c index 34101a2851..52a46fc341 100644 --- a/lib/erl_interface/src/prog/ei_fake_prog.c +++ b/lib/erl_interface/src/prog/ei_fake_prog.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2002-2009. All Rights Reserved. + * Copyright Ericsson AB 2002-2013. 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/erl_interface/test/all_SUITE_data/init_tc.erl b/lib/erl_interface/test/all_SUITE_data/init_tc.erl index 7e370c566a..0f2ac215f9 100644 --- a/lib/erl_interface/test/all_SUITE_data/init_tc.erl +++ b/lib/erl_interface/test/all_SUITE_data/init_tc.erl @@ -40,7 +40,7 @@ run([]) -> run1(Name) -> CFile = Name ++ ".c", {ok, Bin} = file:read_file(CFile), - RE = "\nTESTCASE\\(([_a-zA-Z]*)\\)", + RE = "\nTESTCASE\\(([_a-zA-Z0-9]*)\\)", {match, Cases0} = re:run(Bin, RE, [{capture,all_but_first,list},global]), Cases = lists:concat(Cases0), generate(Name, Cases). diff --git a/lib/erl_interface/test/ei_decode_SUITE.erl b/lib/erl_interface/test/ei_decode_SUITE.erl index 2c4b6e5541..5a94994912 100644 --- a/lib/erl_interface/test/ei_decode_SUITE.erl +++ b/lib/erl_interface/test/ei_decode_SUITE.erl @@ -27,14 +27,16 @@ -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, init_per_testcase/2, + end_per_testcase/2, test_ei_decode_long/1, test_ei_decode_ulong/1, test_ei_decode_longlong/1, test_ei_decode_ulonglong/1, test_ei_decode_char/1, test_ei_decode_nonoptimal/1, - test_ei_decode_misc/1 + test_ei_decode_misc/1, + test_ei_decode_utf8_atom/1 ]). suite() -> [{ct_hooks,[ts_install_cth]}]. @@ -43,7 +45,7 @@ all() -> [test_ei_decode_long, test_ei_decode_ulong, test_ei_decode_longlong, test_ei_decode_ulonglong, test_ei_decode_char, test_ei_decode_nonoptimal, - test_ei_decode_misc]. + test_ei_decode_misc, test_ei_decode_utf8_atom]. groups() -> []. @@ -60,6 +62,11 @@ init_per_group(_GroupName, Config) -> end_per_group(_GroupName, Config) -> Config. +init_per_testcase(_TC, Config) -> + Config. + +end_per_testcase(_RC, Config) -> + Config. %% --------------------------------------------------------------------------- @@ -221,6 +228,29 @@ test_ei_decode_misc(Config) when is_list(Config) -> ?line runner:recv_eot(P), ok. +%% ######################################################################## %% + +test_ei_decode_utf8_atom(Config) -> + ?line P = runner:start(?test_ei_decode_utf8_atom), + + send_utf8_atom_as_binary(P,"å"), + send_utf8_atom_as_binary(P,"ä"), + send_term_as_binary(P,'ö'), + send_term_as_binary(P,'õ'), + + ?line send_utf8_atom_as_binary(P,[1758]), + ?line send_utf8_atom_as_binary(P,[1758,1758]), + ?line send_utf8_atom_as_binary(P,[1758,1758,1758]), + ?line send_utf8_atom_as_binary(P,[1758,1758,1758,1758]), + + send_utf8_atom_as_binary(P,"a"), + send_utf8_atom_as_binary(P,"b"), + send_term_as_binary(P,'c'), + send_term_as_binary(P,'d'), + + ?line runner:recv_eot(P), + ok. + %% ######################################################################## %% @@ -230,6 +260,8 @@ send_term_as_binary(Port, Term) when is_port(Port) -> send_raw(Port, Bin) when is_port(Port) -> Port ! {self(), {command, Bin}}. +send_utf8_atom_as_binary(Port, String) -> + Port ! {self(), {command, term_to_binary(uc_atup(String))}}. send_integers(P) -> ?line send_term_as_binary(P,0), % SMALL_INTEGER_EXT smallest @@ -304,3 +336,43 @@ send_integers2(P) -> ?line send_term_as_binary(P, 16#ffffffffffffffff), % largest u64 ?line send_term_as_binary(P, []), % illegal type ok. + +uc_atup(ATxt) -> + string_to_atom(ATxt). + +string_to_atom(String) -> + Utf8List = string_to_utf8_list(String), + Len = length(Utf8List), + TagLen = case Len < 256 of + true -> [119, Len]; + false -> [118, Len bsr 8, Len band 16#ff] + end, + binary_to_term(list_to_binary([131, TagLen, Utf8List])). + +string_to_utf8_list([]) -> + []; +string_to_utf8_list([CP|CPs]) when is_integer(CP), + 0 =< CP, + CP =< 16#7F -> + [CP | string_to_utf8_list(CPs)]; +string_to_utf8_list([CP|CPs]) when is_integer(CP), + 16#80 =< CP, + CP =< 16#7FF -> + [16#C0 bor (CP bsr 6), + 16#80 bor (16#3F band CP) + | string_to_utf8_list(CPs)]; +string_to_utf8_list([CP|CPs]) when is_integer(CP), + 16#800 =< CP, + CP =< 16#FFFF -> + [16#E0 bor (CP bsr 12), + 16#80 bor (16#3F band (CP bsr 6)), + 16#80 bor (16#3F band CP) + | string_to_utf8_list(CPs)]; +string_to_utf8_list([CP|CPs]) when is_integer(CP), + 16#10000 =< CP, + CP =< 16#10FFFF -> + [16#F0 bor (CP bsr 18), + 16#80 bor (16#3F band (CP bsr 12)), + 16#80 bor (16#3F band (CP bsr 6)), + 16#80 bor (16#3F band CP) + | string_to_utf8_list(CPs)]. diff --git a/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c b/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c index b349138ae9..6db04aa676 100644 --- a/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c +++ b/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c @@ -17,6 +17,8 @@ * %CopyrightEnd% */ +#include <string.h> + #ifdef VXWORKS #include "reclaim.h" #endif @@ -38,6 +40,22 @@ err, size1, SIZE, (EI_LONGLONG)p); #endif +struct my_atom { + enum erlang_char_encoding from; + enum erlang_char_encoding was_check; + enum erlang_char_encoding result_check; +}; + +/* Allow arrays constants to be part of macro arguments */ +#define P99(...) __VA_ARGS__ + +int ei_decode_my_atom_as(const char *buf, int *index, char *to, + struct my_atom *atom); +int ei_decode_my_atom(const char *buf, int *index, char *to, + struct my_atom *atom); +int ei_decode_my_string(const char *buf, int *index, char *to, + struct my_atom *atom); + #define EI_DECODE_2(FUNC,SIZE,TYPE,VAL) \ { \ TYPE p; \ @@ -129,17 +147,26 @@ } \ } \ -#define EI_DECODE_STRING(FUNC,SIZE,VAL) \ +#define dump(arr, num) { \ + int i; \ + message("Dumping " #arr ": "); \ + for (i = 0; i < num; i++) message("%u, ",(unsigned char)arr[i]); \ + message("\n"); \ + } + +#define EI_DECODE_STRING_4(FUNC,SIZE,VAL,ATOM) \ { \ char p[1024]; \ char *buf; \ + unsigned char val[] = VAL; \ int size1 = 0; \ int size2 = 0; \ int err; \ - message("ei_" #FUNC " should be " #VAL); \ + struct my_atom atom = ATOM; \ + message("ei_" #FUNC " should be " #VAL "\n"); \ buf = read_packet(NULL); \ \ - err = ei_ ## FUNC(buf+1, &size1, NULL); \ + err = ei_ ## FUNC(buf+1, &size1, NULL, &atom); \ message("err = %d, size = %d, expected size = %d\n",err,size1,SIZE); \ if (err != 0) { \ if (err != -1) { \ @@ -150,7 +177,7 @@ return; \ } \ \ - err = ei_ ## FUNC(buf+1, &size2, p); \ + err = ei_ ## FUNC(buf+1, &size2, p, &atom); \ message("err = %d, size = %d, expected size = %d\n",err,size2,SIZE); \ if (err != 0) { \ if (err != -1) { \ @@ -161,7 +188,7 @@ return; \ } \ \ - if (strcmp(p,VAL) != 0) { \ + if (strcmp(p,val) != 0) { \ fail("value is not correct"); \ return; \ } \ @@ -177,6 +204,51 @@ } \ } \ +#define EI_DECODE_STRING(FUNC,SIZE,VAL) \ + EI_DECODE_STRING_4(FUNC,SIZE,VAL, \ + P99({ERLANG_ANY,ERLANG_ANY,ERLANG_ANY})) + +#define EI_DECODE_STRING_FAIL(FUNC,ATOM) \ + { \ + char p[1024]; \ + char *buf; \ + int size1 = 0; \ + int size2 = 0; \ + int err; \ + struct my_atom atom = ATOM;\ + message("ei_" #FUNC " should fail\n"); \ + p[0] = 0; \ + message("p[0] is %d\n",p[0]); \ + buf = read_packet(NULL); \ +\ + err = ei_ ## FUNC(buf+1, &size1, NULL, &atom); \ + if (err != -1) { \ + fail("should return -1 if NULL pointer"); \ + return; \ + } \ +\ + err = ei_ ## FUNC(buf+1, &size2, p, &atom); \ + if (err != -1) { \ + fail("should return -1"); \ + return; \ + } \ + if (p[0] != 0) { \ + message("p[0] argument was modified to %u\n",(unsigned char)p[0]); \ + } \ +\ + if (size1 != 0) { \ + fail("size of encoded data should be 0 if NULL"); \ + return; \ + } \ +\ + if (size2 != 0) { \ + fail("size of encoded data should be 0"); \ + return; \ + } \ + } \ + +//#define EI_DECODE_UTF8_STRING(FUNC,SIZE,VAL) + #define EI_DECODE_BIN(FUNC,SIZE,VAL,LEN) \ { \ char p[1024]; \ @@ -536,13 +608,13 @@ TESTCASE(test_ei_decode_misc) EI_DECODE_2(decode_boolean, 8, int, 0); EI_DECODE_2(decode_boolean, 7, int, 1); - EI_DECODE_STRING(decode_atom, 6, "foo"); - EI_DECODE_STRING(decode_atom, 3, ""); - EI_DECODE_STRING(decode_atom, 9, "������"); + EI_DECODE_STRING(decode_my_atom, 6, "foo"); + EI_DECODE_STRING(decode_my_atom, 3, ""); + EI_DECODE_STRING(decode_my_atom, 9, "������"); - EI_DECODE_STRING(decode_string, 6, "foo"); - EI_DECODE_STRING(decode_string, 1, ""); - EI_DECODE_STRING(decode_string, 9, "������"); + EI_DECODE_STRING(decode_my_string, 6, "foo"); + EI_DECODE_STRING(decode_my_string, 1, ""); + EI_DECODE_STRING(decode_my_string, 9, "������"); EI_DECODE_BIN(decode_binary, 8, "foo", 3); EI_DECODE_BIN(decode_binary, 5, "", 0); @@ -559,3 +631,63 @@ TESTCASE(test_ei_decode_misc) /* ******************************************************************** */ +TESTCASE(test_ei_decode_utf8_atom) +{ + + EI_DECODE_STRING_4(decode_my_atom_as, 4, P99({229,0}), /* LATIN1 "�" */ + P99({ERLANG_ANY,ERLANG_LATIN1,ERLANG_LATIN1})); + EI_DECODE_STRING_4(decode_my_atom_as, 4, P99({195,164,0}), /* UTF8 "�" */ + P99({ERLANG_UTF8,ERLANG_LATIN1,ERLANG_UTF8})); + EI_DECODE_STRING_4(decode_my_atom_as, 4, P99({246,0}), /* LATIN1 "�" */ + P99({ERLANG_LATIN1,ERLANG_LATIN1,ERLANG_LATIN1})); + EI_DECODE_STRING_FAIL(decode_my_atom_as, + P99({ERLANG_ASCII,ERLANG_ANY,ERLANG_ANY})); + + EI_DECODE_STRING_4(decode_my_atom_as, 4, P99({219,158,0}), + P99({ERLANG_ANY,ERLANG_UTF8,ERLANG_UTF8})); + EI_DECODE_STRING_4(decode_my_atom_as, 6, P99({219,158,219,158,0}), + P99({ERLANG_UTF8,ERLANG_UTF8,ERLANG_UTF8})); + EI_DECODE_STRING_FAIL(decode_my_atom_as, + P99({ERLANG_LATIN1,ERLANG_ANY,ERLANG_ANY})); + EI_DECODE_STRING_FAIL(decode_my_atom_as, + P99({ERLANG_ASCII,ERLANG_ANY,ERLANG_ANY})); + + EI_DECODE_STRING_4(decode_my_atom_as, 4, "a", + P99({ERLANG_ANY,ERLANG_LATIN1,ERLANG_ASCII})); + EI_DECODE_STRING_4(decode_my_atom_as, 4, "b", + P99({ERLANG_UTF8,ERLANG_LATIN1,ERLANG_ASCII})); + EI_DECODE_STRING_4(decode_my_atom_as, 4, "c", + P99({ERLANG_LATIN1,ERLANG_LATIN1,ERLANG_ASCII})); + EI_DECODE_STRING_4(decode_my_atom_as, 4, "d", + P99({ERLANG_ASCII,ERLANG_LATIN1,ERLANG_ASCII})); + + report(1); +} + +/* ******************************************************************** */ + +int ei_decode_my_atom_as(const char *buf, int *index, char *to, + struct my_atom *atom) { + enum erlang_char_encoding was,result; + int res = ei_decode_atom_as(buf,index,to,1024,atom->from,&was,&result); + if (res != 0) + return res; + if (!(was & atom->was_check)) { + message("Original encoding was %d not %d\n",was,atom->was_check); + return -1; + } else if (!(result & atom->result_check)) { + message("Result encoding was %d not %d\n",result,atom->result_check); + return -1; + } + return res; +} + +int ei_decode_my_atom(const char *buf, int *index, char *to, + struct my_atom *atom) { + return ei_decode_atom(buf, index, to); +} + +int ei_decode_my_string(const char *buf, int *index, char *to, + struct my_atom *atom) { + return ei_decode_string(buf, index, to); +} diff --git a/lib/erl_interface/test/ei_decode_encode_SUITE.erl b/lib/erl_interface/test/ei_decode_encode_SUITE.erl index 0c98b494ec..2271278291 100644 --- a/lib/erl_interface/test/ei_decode_encode_SUITE.erl +++ b/lib/erl_interface/test/ei_decode_encode_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2011. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c b/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c index e57663f984..996d923ffc 100644 --- a/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c +++ b/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2004-2009. All Rights Reserved. + * Copyright Ericsson AB 2004-2013. 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/erl_interface/test/ei_encode_SUITE.erl b/lib/erl_interface/test/ei_encode_SUITE.erl index 537e9cb01c..e0ac4c0637 100644 --- a/lib/erl_interface/test/ei_encode_SUITE.erl +++ b/lib/erl_interface/test/ei_encode_SUITE.erl @@ -34,7 +34,9 @@ test_ei_encode_ulonglong/1, test_ei_encode_char/1, test_ei_encode_misc/1, - test_ei_encode_fails/1 + test_ei_encode_fails/1, + test_ei_encode_utf8_atom/1, + test_ei_encode_utf8_atom_len/1 ]). suite() -> [{ct_hooks,[ts_install_cth]}]. @@ -43,7 +45,8 @@ all() -> [test_ei_encode_long, test_ei_encode_ulong, test_ei_encode_longlong, test_ei_encode_ulonglong, test_ei_encode_char, test_ei_encode_misc, - test_ei_encode_fails]. + test_ei_encode_fails, test_ei_encode_utf8_atom, + test_ei_encode_utf8_atom_len]. groups() -> []. @@ -257,6 +260,38 @@ test_ei_encode_fails(Config) when is_list(Config) -> %% ######################################################################## %% +test_ei_encode_utf8_atom(Config) -> + ?line P = runner:start(?test_ei_encode_utf8_atom), + + ?line {<<119,2,195,133>>,'Å'} = get_buf_and_term(P), + ?line {<<100,0,1,197>>,'Å'} = get_buf_and_term(P), + ?line {<<100,0,1,197>>,'Å'} = get_buf_and_term(P), + ?line {<<119,2,195,133>>,'Å'} = get_buf_and_term(P), + + ?line {<<119,1,$A>>,'A'} = get_buf_and_term(P), + ?line {<<100,0,1,$A>>,'A'} = get_buf_and_term(P), + + ?line runner:recv_eot(P), + ok. + +%% ######################################################################## %% +test_ei_encode_utf8_atom_len(Config) -> + ?line P = runner:start(?test_ei_encode_utf8_atom_len), + + ?line {<<119,2,195,133>>,'Å'} = get_buf_and_term(P), + ?line {<<100,0,2,197,196>>,'ÅÄ'} = get_buf_and_term(P), + ?line {<<100,0,1,197>>,'Å'} = get_buf_and_term(P), + ?line {<<119,4,195,133,195,132>>,'ÅÄ'} = get_buf_and_term(P), + + ?line {<<119,1,$A>>,'A'} = get_buf_and_term(P), + ?line {<<100,0,2,$A,$B>>,'AB'} = get_buf_and_term(P), + ?line {<<100,0,255,_:(255*8)>>,_} = get_buf_and_term(P), + + ?line runner:recv_eot(P), + ok. + +%% ######################################################################## %% + % We read two packets for each test, the ei_encode and ei_x_encode version.... get_buf_and_term(P) -> diff --git a/lib/erl_interface/test/ei_encode_SUITE_data/ei_encode_test.c b/lib/erl_interface/test/ei_encode_SUITE_data/ei_encode_test.c index c373658152..e904375e9e 100644 --- a/lib/erl_interface/test/ei_encode_SUITE_data/ei_encode_test.c +++ b/lib/erl_interface/test/ei_encode_SUITE_data/ei_encode_test.c @@ -208,6 +208,196 @@ ei_x_free(&arg); \ } +#define EI_ENCODE_3(FUNC,ARG1,ARG2,ARG3) \ + { \ + char buf[1024]; \ + int size1 = 0; \ + int size2 = 0; \ + int err; \ + message("ei_" #FUNC " " #ARG1 " " #ARG2 " " #ARG3 " encoded as "); \ + err = ei_ ## FUNC(NULL, &size1, ARG1, ARG2, ARG3); \ + if (err != 0) { \ + if (err != -1) { \ + fail("size calculation returned non zero but not -1"); \ + return; \ + } else { \ + fail("size calculation returned non zero"); \ + return; \ + } \ + } \ + err = ei_ ## FUNC(buf, &size2, ARG1, ARG2, ARG3); \ + if (err != 0) { \ + if (err != -1) { \ + fail("returned non zero but not -1"); \ + } else { \ + fail("returned non zero"); \ + } \ + return; \ + } \ + if (size1 != size2) { \ + fail("size differs when arg is NULL or buf"); \ + return; \ + } \ + if (size1 < 1) { \ + fail("size is < 1"); \ + return; \ + } \ + send_buffer(buf, size1); \ + } \ + { \ + ei_x_buff arg; \ + int err; \ + message("ei_x_" #FUNC " " #ARG1 " " #ARG2 " " #ARG3 " encoded as "); \ + ei_x_new(&arg); \ + err = ei_x_ ## FUNC(&arg, ARG1, ARG2, ARG3); \ + if (err != 0) { \ + if (err != -1) { \ + fail("returned non zero but not -1"); \ + } else { \ + fail("returned non zero"); \ + } \ + ei_x_free(&arg); \ + return; \ + } \ + if (arg.index < 1) { \ + fail("size is < 1"); \ + ei_x_free(&arg); \ + return; \ + } \ + send_buffer(arg.buff, arg.index); \ + ei_x_free(&arg); \ + } + +#define EI_ENCODE_3_FAIL(FUNC,ARG1,ARG2,ARG3) \ + { \ + char buf[1024]; \ + int size1 = 0; \ + int size2 = 0; \ + int err; \ + message("ei_" #FUNC " " #ARG1 " " #ARG2 " " #ARG3 " encoded as "); \ + err = ei_ ## FUNC(NULL, &size1, ARG1, ARG2, ARG3); \ + if (err != -1) { \ + fail("size calculation returned non -1"); \ + return; \ + } \ + err = ei_ ## FUNC(buf, &size2, ARG1, ARG2, ARG3); \ + if (err != -1) { \ + fail("returned non -1"); \ + } \ + if (size1 != size2) { \ + fail("size differs when arg is NULL or buf"); \ + return; \ + } \ + } \ + { \ + ei_x_buff arg; \ + int err; \ + message("ei_x_" #FUNC " " #ARG1 " " #ARG2 " " #ARG3 " encoded as "); \ + ei_x_new(&arg); \ + err = ei_x_ ## FUNC(&arg, ARG1, ARG2, ARG3); \ + if (err != -1) { \ + fail("returned non -1"); \ + ei_x_free(&arg); \ + return; \ + } \ + ei_x_free(&arg); \ + } + +#define EI_ENCODE_4(FUNC,ARG1,ARG2,ARG3,ARG4) \ + { \ + char buf[1024]; \ + int size1 = 0; \ + int size2 = 0; \ + int err; \ + message("ei_" #FUNC " " #ARG1 " " #ARG2 " " #ARG3 " " #ARG4 " encoded as "); \ + err = ei_ ## FUNC(NULL, &size1, ARG1, ARG2, ARG3, ARG4); \ + if (err != 0) { \ + if (err != -1) { \ + fail("size calculation returned non zero but not -1"); \ + return; \ + } else { \ + fail("size calculation returned non zero"); \ + return; \ + } \ + } \ + err = ei_ ## FUNC(buf, &size2, ARG1, ARG2, ARG3, ARG4); \ + if (err != 0) { \ + if (err != -1) { \ + fail("returned non zero but not -1"); \ + } else { \ + fail("returned non zero"); \ + } \ + return; \ + } \ + if (size1 != size2) { \ + fail("size differs when arg is NULL or buf"); \ + return; \ + } \ + if (size1 < 1) { \ + fail("size is < 1"); \ + return; \ + } \ + send_buffer(buf, size1); \ + } \ + { \ + ei_x_buff arg; \ + int err; \ + message("ei_x_" #FUNC " " #ARG1 " " #ARG2 " " #ARG3 " " #ARG4 " encoded as "); \ + ei_x_new(&arg); \ + err = ei_x_ ## FUNC(&arg, ARG1, ARG2, ARG3, ARG4); \ + if (err != 0) { \ + if (err != -1) { \ + fail("returned non zero but not -1"); \ + } else { \ + fail("returned non zero"); \ + } \ + ei_x_free(&arg); \ + return; \ + } \ + if (arg.index < 1) { \ + fail("size is < 1"); \ + ei_x_free(&arg); \ + return; \ + } \ + send_buffer(arg.buff, arg.index); \ + ei_x_free(&arg); \ + } + +#define EI_ENCODE_4_FAIL(FUNC,ARG1,ARG2,ARG3,ARG4) \ + { \ + char buf[1024]; \ + int size1 = 0; \ + int size2 = 0; \ + int err; \ + message("ei_" #FUNC " " #ARG1 " " #ARG2 " " #ARG3 " " #ARG4 " encoded as "); \ + err = ei_ ## FUNC(NULL, &size1, ARG1, ARG2, ARG3, ARG4); \ + if (err != -1) { \ + fail("size calculation returned non -1"); \ + return; \ + } \ + err = ei_ ## FUNC(buf, &size2, ARG1, ARG2, ARG3, ARG4); \ + if (err != -1) { \ + fail("returned non -1"); \ + } \ + if (size1 != size2) { \ + fail("size differs when arg is NULL or buf"); \ + return; \ + } \ + } \ + { \ + ei_x_buff arg; \ + int err; \ + message("ei_x_" #FUNC " " #ARG1 " " #ARG2 " " #ARG3 " " #ARG4 " encoded as "); \ + ei_x_new(&arg); \ + err = ei_x_ ## FUNC(&arg, ARG1, ARG2, ARG3, ARG4); \ + if (err != -1) { \ + fail("returned non -1"); \ + ei_x_free(&arg); \ + return; \ + } \ + ei_x_free(&arg); \ + } + /* ******************************************************************** */ TESTCASE(test_ei_encode_long) @@ -464,3 +654,57 @@ TESTCASE(test_ei_encode_fails) report(1); } + +/* ******************************************************************** */ + +TESTCASE(test_ei_encode_utf8_atom) +{ + + EI_ENCODE_3(encode_atom_as, "�", ERLANG_LATIN1, ERLANG_UTF8); + EI_ENCODE_3(encode_atom_as, "�", ERLANG_LATIN1, ERLANG_LATIN1); + EI_ENCODE_3(encode_atom_as, "\303\205", + ERLANG_UTF8, ERLANG_LATIN1); + EI_ENCODE_3(encode_atom_as, "\303\205", + ERLANG_UTF8, ERLANG_UTF8); + + EI_ENCODE_3(encode_atom_as, "A", ERLANG_ASCII, ERLANG_UTF8); + EI_ENCODE_3(encode_atom_as, "A", ERLANG_ASCII, ERLANG_LATIN1); + + EI_ENCODE_3_FAIL(encode_atom_as, "�", ERLANG_UTF8, ERLANG_UTF8); + EI_ENCODE_3_FAIL(encode_atom_as, "�", ERLANG_UTF8, ERLANG_LATIN1); + EI_ENCODE_3_FAIL(encode_atom_as, "�", ERLANG_ASCII, ERLANG_UTF8); + EI_ENCODE_3_FAIL(encode_atom_as, "�", ERLANG_ASCII, ERLANG_LATIN1); + + EI_ENCODE_3_FAIL(encode_atom_as, "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", ERLANG_ASCII, ERLANG_LATIN1); + EI_ENCODE_3_FAIL(encode_atom_as, "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", ERLANG_LATIN1, ERLANG_LATIN1); + + EI_ENCODE_3_FAIL(encode_atom_as, "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", ERLANG_UTF8, ERLANG_LATIN1); + + report(1); +} + +TESTCASE(test_ei_encode_utf8_atom_len) +{ + + EI_ENCODE_4(encode_atom_len_as, "���", 1, ERLANG_LATIN1, ERLANG_UTF8); + EI_ENCODE_4(encode_atom_len_as, "���", 2, ERLANG_LATIN1, ERLANG_LATIN1); + EI_ENCODE_4(encode_atom_len_as, "\303\205\303\204\303\226", 2, + ERLANG_UTF8, ERLANG_LATIN1); + EI_ENCODE_4(encode_atom_len_as, "\303\205\303\204\303\226", 4, + ERLANG_UTF8, ERLANG_UTF8); + + EI_ENCODE_4(encode_atom_len_as, "ABC", 1, ERLANG_ASCII, ERLANG_UTF8); + EI_ENCODE_4(encode_atom_len_as, "ABC", 2, ERLANG_ASCII, ERLANG_LATIN1); + + EI_ENCODE_4_FAIL(encode_atom_len_as, "���", 1, ERLANG_UTF8, ERLANG_UTF8); + EI_ENCODE_4_FAIL(encode_atom_len_as, "���", 2, ERLANG_UTF8, ERLANG_LATIN1); + EI_ENCODE_4_FAIL(encode_atom_len_as, "���", 3, ERLANG_ASCII, ERLANG_UTF8); + EI_ENCODE_4_FAIL(encode_atom_len_as, "���", 4, ERLANG_ASCII, ERLANG_LATIN1); + + EI_ENCODE_4(encode_atom_len_as, "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", 255, ERLANG_ASCII, ERLANG_LATIN1); + + EI_ENCODE_4_FAIL(encode_atom_len_as, "\303\205\303\204\303\226", 1, + ERLANG_UTF8, ERLANG_LATIN1); + + report(1); +} diff --git a/lib/erl_interface/vsn.mk b/lib/erl_interface/vsn.mk index 1718f38069..2a3843bda6 100644 --- a/lib/erl_interface/vsn.mk +++ b/lib/erl_interface/vsn.mk @@ -1 +1 @@ -EI_VSN = 3.7.9 +EI_VSN = 3.7.10 diff --git a/lib/et/doc/src/notes.xml b/lib/et/doc/src/notes.xml index 0b1f3eddce..af2f761fc2 100644 --- a/lib/et/doc/src/notes.xml +++ b/lib/et/doc/src/notes.xml @@ -36,6 +36,23 @@ one section in this document. The title of each section is the version number of <c>Event Tracer (ET)</c>.</p> +<section><title>ET 1.4.4.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + </list> + </section> + +</section> + <section><title>ET 1.4.4.2</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/et/vsn.mk b/lib/et/vsn.mk index 167c9d9594..99532ee3f3 100644 --- a/lib/et/vsn.mk +++ b/lib/et/vsn.mk @@ -1 +1 @@ -ET_VSN = 1.4.4.2 +ET_VSN = 1.4.4.3 diff --git a/lib/eunit/doc/src/notes.xml b/lib/eunit/doc/src/notes.xml index b797be0ccb..8d10cc7548 100644 --- a/lib/eunit/doc/src/notes.xml +++ b/lib/eunit/doc/src/notes.xml @@ -32,6 +32,23 @@ </header> <p>This document describes the changes made to the EUnit application.</p> +<section><title>Eunit 2.2.4</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + </list> + </section> + +</section> + <section><title>Eunit 2.2.3</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/eunit/vsn.mk b/lib/eunit/vsn.mk index 174d197117..798196f8cf 100644 --- a/lib/eunit/vsn.mk +++ b/lib/eunit/vsn.mk @@ -1 +1 @@ -EUNIT_VSN = 2.2.3 +EUNIT_VSN = 2.2.4 diff --git a/lib/gs/doc/src/notes.xml b/lib/gs/doc/src/notes.xml index 69b1e90ba5..2d68665b06 100644 --- a/lib/gs/doc/src/notes.xml +++ b/lib/gs/doc/src/notes.xml @@ -30,7 +30,24 @@ </header> <p>This document describes the changes made to the GS application.</p> - <section><title>GS 1.5.15.1</title> + <section><title>GS 1.5.15.2</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + </list> + </section> + +</section> + +<section><title>GS 1.5.15.1</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/gs/vsn.mk b/lib/gs/vsn.mk index 48249cb3d0..5c18153c34 100644 --- a/lib/gs/vsn.mk +++ b/lib/gs/vsn.mk @@ -1,2 +1,2 @@ -GS_VSN = 1.5.15.1 +GS_VSN = 1.5.15.2 diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl index 0f88b32db1..532b2e43cd 100644 --- a/lib/hipe/cerl/erl_types.erl +++ b/lib/hipe/cerl/erl_types.erl @@ -3898,7 +3898,7 @@ t_form_to_string({type, _L, range, [From, To]} = Type) -> case {erl_eval:partial_eval(From), erl_eval:partial_eval(To)} of {{integer, _, FromVal}, {integer, _, ToVal}} -> io_lib:format("~w..~w", [FromVal, ToVal]); - _ -> io_lib:format("Bad formed type ~w",[Type]) + _ -> io_lib:format("Badly formed type ~w",[Type]) end; t_form_to_string({type, _L, record, [{atom, _, Name}]}) -> io_lib:format("#~w{}", [Name]); diff --git a/lib/hipe/doc/src/notes.xml b/lib/hipe/doc/src/notes.xml index cfd22a9d8d..4be1d451ff 100644 --- a/lib/hipe/doc/src/notes.xml +++ b/lib/hipe/doc/src/notes.xml @@ -30,6 +30,50 @@ </header> <p>This document describes the changes made to HiPE.</p> +<section><title>Hipe 3.10</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> The type <c>ascii_string()</c> in the <c>base64</c> + module has been corrected. The type + <c>file:file_info()</c> has been cleaned up. The type + <c>file:fd()</c> has been made opaque in the + documentation. </p> + <p> + Own Id: OTP-10624 Aux Id: kunagi-352 [263] </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> + Update .gitignore (lib/hipe/boot_ebin). Thanks to Tuncer + Ayaz.</p> + <p> + Own Id: OTP-10705</p> + </item> + </list> + </section> + +</section> + <section><title>Hipe 3.9.3</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/hipe/vsn.mk b/lib/hipe/vsn.mk index f3e2e695b5..d60492ac46 100644 --- a/lib/hipe/vsn.mk +++ b/lib/hipe/vsn.mk @@ -1 +1 @@ -HIPE_VSN = 3.9.3 +HIPE_VSN = 3.10 diff --git a/lib/ic/c_src/ic.c b/lib/ic/c_src/ic.c index 1ace9ea1af..796842f4f8 100644 --- a/lib/ic/c_src/ic.c +++ b/lib/ic/c_src/ic.c @@ -149,6 +149,7 @@ void ic_init_ref(CORBA_Environment *env, erlang_ref *ref) { strcpy(ref->node, erl_thisnodename()); + ref->node_org_enc = ERLANG_LATIN1; ref->len = 3; diff --git a/lib/ic/doc/src/notes.xml b/lib/ic/doc/src/notes.xml index 3ac35aa0e5..8c5634d440 100644 --- a/lib/ic/doc/src/notes.xml +++ b/lib/ic/doc/src/notes.xml @@ -30,7 +30,30 @@ <file>notes.xml</file> </header> - <section><title>IC 4.2.31</title> + <section><title>IC 4.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + <item> + <p> + Adapt ic for changes in erl_interface and jinterface due + to utf8 atom support. This change makes ic dependent on + erl_interface-3.7.10 (R16) or later in order to build.</p> + <p> + Own Id: OTP-10785</p> + </item> + </list> + </section> + +</section> + +<section><title>IC 4.2.31</title> <section><title>Fixed Bugs and Malfunctions</title> <list> diff --git a/lib/ic/examples/all-against-all/client.c b/lib/ic/examples/all-against-all/client.c index 5dece9cfa6..022b9fd1c0 100644 --- a/lib/ic/examples/all-against-all/client.c +++ b/lib/ic/examples/all-against-all/client.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1999-2009. All Rights Reserved. + * Copyright Ericsson AB 1999-2013. 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/ic/examples/c-client/client.c b/lib/ic/examples/c-client/client.c index 5b11510ce3..3e9678ae4d 100644 --- a/lib/ic/examples/c-client/client.c +++ b/lib/ic/examples/c-client/client.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2009. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/ic/examples/c-server/client.c b/lib/ic/examples/c-server/client.c index 605e41ddb1..b6c7ef6bce 100644 --- a/lib/ic/examples/c-server/client.c +++ b/lib/ic/examples/c-server/client.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1998-2009. All Rights Reserved. + * Copyright Ericsson AB 1998-2013. 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/ic/java_src/com/ericsson/otp/ic/Any.java b/lib/ic/java_src/com/ericsson/otp/ic/Any.java index 7337241908..c7ab6bad84 100644 --- a/lib/ic/java_src/com/ericsson/otp/ic/Any.java +++ b/lib/ic/java_src/com/ericsson/otp/ic/Any.java @@ -417,6 +417,8 @@ public class Any { switch (__tag) { case (com.ericsson.otp.erlang.OtpExternal.atomTag): + case (com.ericsson.otp.erlang.OtpExternal.atomUtf8Tag): + case (com.ericsson.otp.erlang.OtpExternal.smallAtomUtf8Tag): java.lang.String __elabel = _is.read_atom(); // Enumerant or Boolean os.write_atom(__elabel); diff --git a/lib/ic/java_src/com/ericsson/otp/ic/Environment.java b/lib/ic/java_src/com/ericsson/otp/ic/Environment.java index f0c66f0726..4c5315ee98 100644 --- a/lib/ic/java_src/com/ericsson/otp/ic/Environment.java +++ b/lib/ic/java_src/com/ericsson/otp/ic/Environment.java @@ -334,6 +334,8 @@ public class Environment { switch (tag) { case com.ericsson.otp.erlang.OtpExternal.atomTag: + case com.ericsson.otp.erlang.OtpExternal.atomUtf8Tag: + case com.ericsson.otp.erlang.OtpExternal.smallAtomUtf8Tag: operation = is.read_atom(); break; default: @@ -344,6 +346,8 @@ public class Environment { tag = is.peek(); switch (tag) { case com.ericsson.otp.erlang.OtpExternal.atomTag: + case com.ericsson.otp.erlang.OtpExternal.atomUtf8Tag: + case com.ericsson.otp.erlang.OtpExternal.smallAtomUtf8Tag: operation = is.read_atom(); break; default: diff --git a/lib/ic/java_src/com/ericsson/otp/ic/Term.java b/lib/ic/java_src/com/ericsson/otp/ic/Term.java index 9219cb7038..611f1f04d7 100644 --- a/lib/ic/java_src/com/ericsson/otp/ic/Term.java +++ b/lib/ic/java_src/com/ericsson/otp/ic/Term.java @@ -57,7 +57,10 @@ final public class Term extends Any { public boolean isAtom() { if (ObjV == null) { - if (tag == com.ericsson.otp.erlang.OtpExternal.atomTag) + if (tag == com.ericsson.otp.erlang.OtpExternal.atomTag || + tag == com.ericsson.otp.erlang.OtpExternal.atomUtf8Tag || + tag == com.ericsson.otp.erlang.OtpExternal.smallAtomUtf8Tag) + return true; return false; diff --git a/lib/ic/java_src/com/ericsson/otp/ic/TermHelper.java b/lib/ic/java_src/com/ericsson/otp/ic/TermHelper.java index 437d38743b..5675eee706 100644 --- a/lib/ic/java_src/com/ericsson/otp/ic/TermHelper.java +++ b/lib/ic/java_src/com/ericsson/otp/ic/TermHelper.java @@ -69,6 +69,8 @@ public class TermHelper { break; case com.ericsson.otp.erlang.OtpExternal.atomTag: + case com.ericsson.otp.erlang.OtpExternal.atomUtf8Tag: + case com.ericsson.otp.erlang.OtpExternal.smallAtomUtf8Tag: _in.reset(); _value.atomV = _in.read_atom(); break; diff --git a/lib/ic/java_src/com/ericsson/otp/ic/TypeCode.java b/lib/ic/java_src/com/ericsson/otp/ic/TypeCode.java index 6d049f75f7..327864320f 100644 --- a/lib/ic/java_src/com/ericsson/otp/ic/TypeCode.java +++ b/lib/ic/java_src/com/ericsson/otp/ic/TypeCode.java @@ -723,6 +723,8 @@ public class TypeCode { switch(__tag) { case (com.ericsson.otp.erlang.OtpExternal.atomTag): + case (com.ericsson.otp.erlang.OtpExternal.atomUtf8Tag): + case (com.ericsson.otp.erlang.OtpExternal.smallAtomUtf8Tag): __kind = TypeCode.kind(_is.read_atom()); switch(__kind.value()) { @@ -757,6 +759,8 @@ public class TypeCode { switch(__tag) { case (com.ericsson.otp.erlang.OtpExternal.atomTag): + case (com.ericsson.otp.erlang.OtpExternal.atomUtf8Tag): + case (com.ericsson.otp.erlang.OtpExternal.smallAtomUtf8Tag): __kind = TypeCode.kind(_is.read_atom()); _tc = new TypeCode(); @@ -814,6 +818,9 @@ public class TypeCode { __label.insert_string(__enum); break; case (com.ericsson.otp.erlang.OtpExternal.atomTag): + case (com.ericsson.otp.erlang.OtpExternal.atomUtf8Tag): + case (com.ericsson.otp.erlang.OtpExternal.smallAtomUtf8Tag): + java.lang.String __default = _is.read_atom(); __label.insert_atom(__default); break; diff --git a/lib/ic/test/c_client_erl_server_SUITE_data/c_client.c b/lib/ic/test/c_client_erl_server_SUITE_data/c_client.c index e4f9cfdece..98fcdcc60f 100644 --- a/lib/ic/test/c_client_erl_server_SUITE_data/c_client.c +++ b/lib/ic/test/c_client_erl_server_SUITE_data/c_client.c @@ -390,6 +390,7 @@ int main(int argc, char **argv) env->_from_pid = &pid; strcpy(pid.node, this_node); + pid.node_org_enc = ERLANG_LATIN1; pid.num = fd; pid.serial = 0; pid.creation = 0; @@ -1006,7 +1007,7 @@ static int string4_test(IC_Env *env) static int pid_test(IC_Env *env) { - erlang_pid pid = {"", 7, 0, 0}, pido, pidr; + erlang_pid pid = {"", ERLANG_LATIN1, 7, 0, 0}, pido, pidr; strcpy(pid.node, this_node), /* this currently running node */ fprintf(stdout, "\n======== m_i_pid test ======\n\n"); @@ -1030,7 +1031,7 @@ static int pid_test(IC_Env *env) static int port_test(IC_Env *env) { - erlang_port porti = {"node", 5, 1}, porto, portr; + erlang_port porti = {"node", ERLANG_LATIN1, 5, 1}, porto, portr; fprintf(stdout, "\n======== m_i_port test ======\n\n"); portr = m_i_port_test(NULL, &porti, &porto, env); @@ -1053,7 +1054,7 @@ static int port_test(IC_Env *env) static int ref_test(IC_Env *env) { - erlang_ref refi = { "node1", 3, {1, 2, 3}, 1}, + erlang_ref refi = { "node1", ERLANG_UTF8, 3, {1, 2, 3}, 1}, refo, refr; fprintf(stdout, "\n======== m_i_ref test ======\n\n"); @@ -1111,6 +1112,7 @@ static int typedef_test(IC_Env *env) long tl; strcpy(mbi.node,"node"); + mbi.node_org_enc = ERLANG_LATIN1; mbi.id = 15; mbi.creation = 1; diff --git a/lib/ic/test/c_client_erl_server_proto_SUITE_data/c_client.c b/lib/ic/test/c_client_erl_server_proto_SUITE_data/c_client.c index f352b91fd5..4ced4fb5e5 100644 --- a/lib/ic/test/c_client_erl_server_proto_SUITE_data/c_client.c +++ b/lib/ic/test/c_client_erl_server_proto_SUITE_data/c_client.c @@ -393,6 +393,7 @@ int main(int argc, char **argv) env->_from_pid = &pid; strcpy(pid.node, this_node); + pid.node_org_enc = ERLANG_LATIN1; pid.num = fd; pid.serial = 0; pid.creation = 0; @@ -1009,7 +1010,7 @@ static int string4_test(IC_Env *env) static int pid_test(IC_Env *env) { - erlang_pid pid = {"", 7, 0, 0}, pido, pidr; + erlang_pid pid = {"", ERLANG_LATIN1, 7, 0, 0}, pido, pidr; strcpy(pid.node, this_node), /* this currently running node */ fprintf(stdout, "\n======== m_i_pid test ======\n\n"); @@ -1033,7 +1034,7 @@ static int pid_test(IC_Env *env) static int port_test(IC_Env *env) { - erlang_port porti = {"node", 5, 1}, porto, portr; + erlang_port porti = {"node", ERLANG_LATIN1, 5, 1}, porto, portr; fprintf(stdout, "\n======== m_i_port test ======\n\n"); portr = m_i_port_test(NULL, &porti, &porto, env); @@ -1056,7 +1057,7 @@ static int port_test(IC_Env *env) static int ref_test(IC_Env *env) { - erlang_ref refi = { "node1", 3, {1, 2, 3}, 1}, + erlang_ref refi = { "node1", ERLANG_LATIN1, 3, {1, 2, 3}, 1}, refo, refr; fprintf(stdout, "\n======== m_i_ref test ======\n\n"); @@ -1114,6 +1115,7 @@ static int typedef_test(IC_Env *env) long tl; strcpy(mbi.node,"node"); + mbi.node_org_enc = ERLANG_LATIN1; mbi.id = 15; mbi.creation = 1; diff --git a/lib/ic/test/c_client_erl_server_proto_tmo_SUITE_data/c_client.c b/lib/ic/test/c_client_erl_server_proto_tmo_SUITE_data/c_client.c index b2c5b0c836..7d5abcc376 100644 --- a/lib/ic/test/c_client_erl_server_proto_tmo_SUITE_data/c_client.c +++ b/lib/ic/test/c_client_erl_server_proto_tmo_SUITE_data/c_client.c @@ -393,6 +393,7 @@ int main(int argc, char **argv) env->_from_pid = &pid; strcpy(pid.node, this_node); + pid.node_org_enc = ERLANG_LATIN1; pid.num = fd; pid.serial = 0; pid.creation = 0; @@ -1009,7 +1010,7 @@ static int string4_test(IC_Env *env) static int pid_test(IC_Env *env) { - erlang_pid pid = {"", 7, 0, 0}, pido, pidr; + erlang_pid pid = {"", ERLANG_LATIN1, 7, 0, 0}, pido, pidr; strcpy(pid.node, this_node), /* this currently running node */ fprintf(stdout, "\n======== m_i_pid test ======\n\n"); @@ -1033,7 +1034,7 @@ static int pid_test(IC_Env *env) static int port_test(IC_Env *env) { - erlang_port porti = {"node", 5, 1}, porto, portr; + erlang_port porti = {"node", ERLANG_LATIN1, 5, 1}, porto, portr; fprintf(stdout, "\n======== m_i_port test ======\n\n"); portr = m_i_port_test(NULL, &porti, &porto, env); @@ -1056,7 +1057,7 @@ static int port_test(IC_Env *env) static int ref_test(IC_Env *env) { - erlang_ref refi = { "node1", 3, {1, 2, 3}, 1}, + erlang_ref refi = { "node1", ERLANG_LATIN1, 3, {1, 2, 3}, 1}, refo, refr; fprintf(stdout, "\n======== m_i_ref test ======\n\n"); @@ -1114,6 +1115,7 @@ static int typedef_test(IC_Env *env) long tl; strcpy(mbi.node,"node"); + mbi.node_org_enc = ERLANG_LATIN1; mbi.id = 15; mbi.creation = 1; diff --git a/lib/ic/test/erl_client_c_server_SUITE_data/callbacks.c b/lib/ic/test/erl_client_c_server_SUITE_data/callbacks.c index 305017ae85..ed21ba7baf 100644 --- a/lib/ic/test/erl_client_c_server_SUITE_data/callbacks.c +++ b/lib/ic/test/erl_client_c_server_SUITE_data/callbacks.c @@ -494,10 +494,12 @@ m_i_port_test__rs* m_i_port_test__cb(CORBA_Object oe_obj, m_i_port_test__rs* rs = NULL; strcpy((*a).node,(*b).node); + a->node_org_enc = b->node_org_enc; (*a).id = (*b).id; (*a).creation = 0; strcpy((*c).node,(*b).node); + c->node_org_enc = b->node_org_enc; (*c).id = (*b).id; (*c).creation = 0; return rs; @@ -514,6 +516,7 @@ m_i_ref_test__rs* m_i_ref_test__cb(CORBA_Object oe_obj, m_i_ref_test__rs* rs = NULL; strcpy((*a).node,(*b).node); + a->node_org_enc = b->node_org_enc; /*(*a).id = (*b).id;*/ (*a).len = (*b).len; (*a).n[0] = (*b).n[0]; @@ -522,6 +525,7 @@ m_i_ref_test__rs* m_i_ref_test__cb(CORBA_Object oe_obj, (*a).creation = 0; strcpy((*c).node,(*b).node); + c->node_org_enc = b->node_org_enc; /*(*c).id = (*b).id;*/ (*c).len = (*b).len; (*c).n[0] = (*b).n[0]; @@ -557,6 +561,7 @@ m_i_typedef_test__rs* m_i_typedef_test__cb(CORBA_Object oe_obj, *d = *b; strcpy((*e).node,(*c).node); + e->node_org_enc = c->node_org_enc; (*e).id = (*c).id; (*e).creation = 0; *a = 4711; diff --git a/lib/ic/test/erl_client_c_server_proto_SUITE_data/callbacks.c b/lib/ic/test/erl_client_c_server_proto_SUITE_data/callbacks.c index c423a9e51c..d813cae45a 100644 --- a/lib/ic/test/erl_client_c_server_proto_SUITE_data/callbacks.c +++ b/lib/ic/test/erl_client_c_server_proto_SUITE_data/callbacks.c @@ -494,10 +494,12 @@ m_i_port_test__rs* m_i_port_test__cb(CORBA_Object oe_obj, m_i_port_test__rs* rs = NULL; strcpy((*a).node,(*b).node); + a->node_org_enc = b->node_org_enc; (*a).id = (*b).id; (*a).creation = 0; strcpy((*c).node,(*b).node); + c->node_org_enc = b->node_org_enc; (*c).id = (*b).id; (*c).creation = 0; return rs; @@ -514,6 +516,7 @@ m_i_ref_test__rs* m_i_ref_test__cb(CORBA_Object oe_obj, m_i_ref_test__rs* rs = NULL; strcpy((*a).node,(*b).node); + a->node_org_enc = b->node_org_enc; /*(*a).id = (*b).id;*/ (*a).len = (*b).len; (*a).n[0] = (*b).n[0]; @@ -522,6 +525,7 @@ m_i_ref_test__rs* m_i_ref_test__cb(CORBA_Object oe_obj, (*a).creation = 0; strcpy((*c).node,(*b).node); + c->node_org_enc = b->node_org_enc; /*(*c).id = (*b).id;*/ (*c).len = (*b).len; (*c).n[0] = (*b).n[0]; @@ -557,6 +561,7 @@ m_i_typedef_test__rs* m_i_typedef_test__cb(CORBA_Object oe_obj, *d = *b; strcpy((*e).node,(*c).node); + e->node_org_enc = c->node_org_enc; (*e).id = (*c).id; (*e).creation = 0; *a = 4711; diff --git a/lib/ic/test/java_client_erl_server_SUITE_data/Makefile.src b/lib/ic/test/java_client_erl_server_SUITE_data/Makefile.src index a2440adc92..3143ab427b 100644 --- a/lib/ic/test/java_client_erl_server_SUITE_data/Makefile.src +++ b/lib/ic/test/java_client_erl_server_SUITE_data/Makefile.src @@ -86,15 +86,15 @@ clean: java_erl_test.built_erl java_erl_test.built_java java_erl_test.built_java: java_erl_test.idl - $(gen_verbose)$(ERLC) -I $(IC_INCLUDE_PATH) "+{be,java}" java_erl_test.idl - $(V_at)echo done > java_erl_test.built_java + $(ERLC) -I $(IC_INCLUDE_PATH) "+{be,java}" java_erl_test.idl + echo done > java_erl_test.built_java $(CLASS_FILES) : $(JAVA_FILES) - $(V_JAVAC) -classpath $(CLASSPATH) $(JAVA_FILES) + $(JAVAC) -classpath $(CLASSPATH) $(JAVA_FILES) java_erl_test.built_erl: java_erl_test.idl - $(gen_verbose)$(ERLC) -I $(IC_INCLUDE_PATH) "+{be,erl_genserv}" java_erl_test.idl - $(V_at)echo done > java_erl_test.built_erl + $(ERLC) -I $(IC_INCLUDE_PATH) "+{be,erl_genserv}" java_erl_test.idl + echo done > java_erl_test.built_erl .erl.@EMULATOR@: - $(V_ERLC) -I $(IC_INCLUDE_PATH) $< + $(ERLC) -I $(IC_INCLUDE_PATH) $< diff --git a/lib/ic/vsn.mk b/lib/ic/vsn.mk index 0dbf5a1f52..dcaf81d26f 100644 --- a/lib/ic/vsn.mk +++ b/lib/ic/vsn.mk @@ -1 +1 @@ -IC_VSN = 4.2.31 +IC_VSN = 4.3 diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml index e0d6ae3454..0236a0bf51 100644 --- a/lib/inets/doc/src/notes.xml +++ b/lib/inets/doc/src/notes.xml @@ -33,7 +33,36 @@ </header> - <section><title>Inets 5.9.2</title> + <section><title>Inets 5.9.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + httpc: The HTTP client now supports HTTPS through proxies</p> + <p> + Own Id: OTP-10256 Aux Id: kunagi-2 + [ce2e800e-c99f-4050-a1c4-f47023d9c7aa-1] </p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + <item> + <p> + Fix autoredirect for POST requests responding 303. Thanks + to Hans Svensson.</p> + <p> + Own Id: OTP-10765</p> + </item> + </list> + </section> + +</section> + +<section><title>Inets 5.9.2</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/inets/src/http_client/httpc_response.erl b/lib/inets/src/http_client/httpc_response.erl index 37f5f2ce6d..f177aac8f2 100644 --- a/lib/inets/src/http_client/httpc_response.erl +++ b/lib/inets/src/http_client/httpc_response.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/inets/src/inets_app/inets.appup.src b/lib/inets/src/inets_app/inets.appup.src index ffd0ed622f..c63dcafa6c 100644 --- a/lib/inets/src/inets_app/inets.appup.src +++ b/lib/inets/src/inets_app/inets.appup.src @@ -1,7 +1,7 @@ %% This is an -*- erlang -*- file. %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2012. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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 @@ -18,109 +18,8 @@ {"%VSN%", [ - {"5.9.1", - [ - {load_module, httpd_request_handler, soft_purge, soft_purge, []} - ] - }, - {"5.9", - [ - {load_module, httpd_request_handler, soft_purge, soft_purge, []}, - {load_module, tftp, soft_purge, soft_purge, [inets_service]}, - {load_module, inets_service, soft_purge, soft_purge, []}, - {load_module, httpc, soft_purge, soft_purge, [httpc_manager]}, - {update, httpc_handler, soft, soft_purge, soft_purge, [httpc_manager]}, - {update, httpc_manager, soft, soft_purge, soft_purge, []} - ] - }, - {"5.8.1", - [ - {load_module, httpd_request_handler, soft_purge, soft_purge, []}, - {load_module, tftp, soft_purge, soft_purge, [inets_service]}, - {load_module, inets_service, soft_purge, soft_purge, []}, - - {load_module, http_uri, soft_purge, soft_purge, []}, - {load_module, httpc_response, soft_purge, soft_purge, [http_uri]}, - - {load_module, httpc, soft_purge, soft_purge, - [http_uri, httpc_manager]}, - - {load_module, inets_app, soft_purge, soft_purge, [inets_sup]}, - {update, inets_sup, soft, soft_purge, soft_purge, []}, - - {load_module, httpd_conf, soft_purge, soft_purge, []}, - {load_module, httpd_response, soft_purge, soft_purge, []}, - {load_module, httpd_script_env, soft_purge, soft_purge, []}, - - {load_module, inets, soft_purge, soft_purge, [inets_trace]}, - {update, httpc_manager, soft, soft_purge, soft_purge, [http_uri]}, - {update, httpc_handler, soft, soft_purge, soft_purge, [httpc_manager]}, - {update, httpd_sup, soft, soft_purge, soft_purge, []}, - {add_module, inets_trace} - ] - }, - {"5.8", - [ - {restart_application, inets} - ] - }, - {"5.7.2", - [ - {restart_application, inets} - ] - } - ], + {<<"5\\.*">>, [{restart_application, inets}]} + ], [ - {"5.9.1", - [ - {load_module, httpd_request_handler, soft_purge, soft_purge, []} - ] - }, - {"5.9", - [ - {load_module, httpd_request_handler, soft_purge, soft_purge, []}, - {load_module, tftp, soft_purge, soft_purge, [inets_service]}, - {load_module, inets_service, soft_purge, soft_purge, []}, - {load_module, httpc, soft_purge, soft_purge, [httpc_manager]}, - {update, httpc_handler, soft, soft_purge, soft_purge, [httpc_manager]}, - {update, httpc_manager, soft, soft_purge, soft_purge, []} - ] - }, - {"5.8.1", - [ - {load_module, httpd_request_handler, soft_purge, soft_purge, []}, - {load_module, tftp, soft_purge, soft_purge, [inets_service]}, - {load_module, inets_service, soft_purge, soft_purge, []}, - - {load_module, http_uri, soft_purge, soft_purge, []}, - {load_module, httpc_response, soft_purge, soft_purge, [http_uri]}, - - {load_module, httpc, soft_purge, soft_purge, - [http_uri, httpc_manager]}, - - {load_module, inets_app, soft_purge, soft_purge, [inets_sup]}, - {update, inets_sup, soft, soft_purge, soft_purge, []}, - - {load_module, httpd_conf, soft_purge, soft_purge, []}, - {load_module, httpd_response, soft_purge, soft_purge, []}, - {load_module, httpd_script_env, soft_purge, soft_purge, []}, - - {load_module, inets, soft_purge, soft_purge, []}, - {update, httpc_manager, soft, soft_purge, soft_purge, [http_uri]}, - {update, httpc_handler, soft, soft_purge, soft_purge, [httpc_manager]}, - {update, httpd_sup, soft, soft_purge, soft_purge, []}, - {remove, {inets_trace, soft_purge, brutal_purge}} - ] - }, - {"5.8", - [ - {restart_application, inets} - ] - }, - {"5.7.2", - [ - {restart_application, inets} - ] - } - ] -}. + {<<"5\\.*">>, [{restart_application, inets}]} +]}. diff --git a/lib/inets/test/erl_make_certs.erl b/lib/inets/test/erl_make_certs.erl index d6bdd05d01..5b92e551a5 100644 --- a/lib/inets/test/erl_make_certs.erl +++ b/lib/inets/test/erl_make_certs.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2011. All Rights Reserved. +%% Copyright Ericsson AB 2011-2013. 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/inets/test/ftp_suite_lib.erl b/lib/inets/test/ftp_suite_lib.erl index 211c9b5bee..35f21cc74d 100644 --- a/lib/inets/test/ftp_suite_lib.erl +++ b/lib/inets/test/ftp_suite_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/inets/test/httpc_SUITE.erl b/lib/inets/test/httpc_SUITE.erl index fbd1b3d38a..5a3bdaefcf 100644 --- a/lib/inets/test/httpc_SUITE.erl +++ b/lib/inets/test/httpc_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/inets/test/httpc_cookie_SUITE.erl b/lib/inets/test/httpc_cookie_SUITE.erl index 3862bf7a20..80f43ec236 100644 --- a/lib/inets/test/httpc_cookie_SUITE.erl +++ b/lib/inets/test/httpc_cookie_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/inets/test/inets_SUITE.erl b/lib/inets/test/inets_SUITE.erl index 069c68fa1e..6510c70d08 100644 --- a/lib/inets/test/inets_SUITE.erl +++ b/lib/inets/test/inets_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/inets/test/inets_appup_test.erl b/lib/inets/test/inets_appup_test.erl index 7ed237243e..648e373312 100644 --- a/lib/inets/test/inets_appup_test.erl +++ b/lib/inets/test/inets_appup_test.erl @@ -257,6 +257,21 @@ check_instruction(_, Instr, _AllInstr, _Modules) -> check_version(V) when is_list(V) -> ok; +check_version(REBin) when is_binary(REBin) -> + try + begin + RE = binary_to_list(REBin), + case re:compile(RE) of + {ok, _} -> + ok; + {error, _} -> + error({bad_version, REBin}) + end + end + catch + _T:_E -> + error({bad_version, REBin}) + end; check_version(V) -> error({bad_version, V}). diff --git a/lib/inets/test/inets_sup_SUITE.erl b/lib/inets/test/inets_sup_SUITE.erl index 65f0f0e09a..0ac940fd3e 100644 --- a/lib/inets/test/inets_sup_SUITE.erl +++ b/lib/inets/test/inets_sup_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2011. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/inets/vsn.mk b/lib/inets/vsn.mk index 0c7cb5e7c2..394dccab48 100644 --- a/lib/inets/vsn.mk +++ b/lib/inets/vsn.mk @@ -2,7 +2,7 @@ # %CopyrightBegin% # -# Copyright Ericsson AB 2001-2012. All Rights Reserved. +# Copyright Ericsson AB 2001-2013. 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 @@ -18,7 +18,7 @@ # %CopyrightEnd% APPLICATION = inets -INETS_VSN = 5.9.2 +INETS_VSN = 5.9.3 PRE_VSN = APP_VSN = "$(APPLICATION)-$(INETS_VSN)$(PRE_VSN)" diff --git a/lib/jinterface/doc/src/notes.xml b/lib/jinterface/doc/src/notes.xml index 19f25e3681..f0444ac879 100644 --- a/lib/jinterface/doc/src/notes.xml +++ b/lib/jinterface/doc/src/notes.xml @@ -30,6 +30,53 @@ </header> <p>This document describes the changes made to the Jinterface application.</p> +<section><title>Jinterface 1.5.7</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + fix reading compressed binary terms from Java (Thanks to + Nico Kruber)</p> + <p> + Own Id: OTP-10505</p> + </item> + <item> + <p> + OtpEpmd.lokupNames() no longer hangs when badly + configured (Thanks to Vlad Dumitrescu)</p> + <p> + Own Id: OTP-10579</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> + Limited support for unicode atoms in the external format + and in the internal representation of the vm. This is a + preparative feature in order to support communication + with future releases of Erlang/OTP that may create + unicode atoms.</p> + <p> + Own Id: OTP-10753</p> + </item> + </list> + </section> + +</section> + <section><title>Jinterface 1.5.6</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/jinterface/java_src/Makefile b/lib/jinterface/java_src/Makefile index 0aa9c09548..dafb634eac 100644 --- a/lib/jinterface/java_src/Makefile +++ b/lib/jinterface/java_src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2000-2011. All Rights Reserved. +# Copyright Ericsson AB 2000-2013. 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/jinterface/java_src/com/ericsson/otp/erlang/AbstractNode.java b/lib/jinterface/java_src/com/ericsson/otp/erlang/AbstractNode.java index c76fad5e45..cea5080607 100644 --- a/lib/jinterface/java_src/com/ericsson/otp/erlang/AbstractNode.java +++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/AbstractNode.java @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2000-2009. All Rights Reserved. + * Copyright Ericsson AB 2000-2013. 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/jinterface/java_src/com/ericsson/otp/erlang/OtpEpmd.java b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpEpmd.java index b985f8aa50..1868dc7740 100644 --- a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpEpmd.java +++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpEpmd.java @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2000-2010. All Rights Reserved. + * Copyright Ericsson AB 2000-2013. 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/jinterface/java_src/com/ericsson/otp/erlang/OtpErlangAtom.java b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpErlangAtom.java index 2768edc6fa..0371740b26 100644 --- a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpErlangAtom.java +++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpErlangAtom.java @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2000-2012. All Rights Reserved. + * Copyright Ericsson AB 2000-2013. 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/jinterface/java_src/com/ericsson/otp/erlang/OtpExternal.java b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpExternal.java index 2a4cd4fa2d..45a82d6c94 100644 --- a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpExternal.java +++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpExternal.java @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2000-2009. All Rights Reserved. + * Copyright Ericsson AB 2000-2013. 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/jinterface/java_src/com/ericsson/otp/erlang/OtpInputStream.java b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpInputStream.java index c2a79af841..9dc1728346 100644 --- a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpInputStream.java +++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpInputStream.java @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2000-2009. All Rights Reserved. + * Copyright Ericsson AB 2000-2013. 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/jinterface/java_src/com/ericsson/otp/erlang/OtpOutputStream.java b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpOutputStream.java index 10bdf389cd..47ec3cc052 100644 --- a/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpOutputStream.java +++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/OtpOutputStream.java @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2000-2011. All Rights Reserved. + * Copyright Ericsson AB 2000-2013. 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/jinterface/test/nc_SUITE.erl b/lib/jinterface/test/nc_SUITE.erl index 546c600116..1f66366731 100644 --- a/lib/jinterface/test/nc_SUITE.erl +++ b/lib/jinterface/test/nc_SUITE.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/jinterface/vsn.mk b/lib/jinterface/vsn.mk index 15423e5658..09fc7d0839 100644 --- a/lib/jinterface/vsn.mk +++ b/lib/jinterface/vsn.mk @@ -1 +1 @@ -JINTERFACE_VSN = 1.5.6 +JINTERFACE_VSN = 1.5.7 diff --git a/lib/kernel/doc/src/application.xml b/lib/kernel/doc/src/application.xml index 9f19efc793..697de6681f 100644 --- a/lib/kernel/doc/src/application.xml +++ b/lib/kernel/doc/src/application.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1996</year><year>2011</year> + <year>1996</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/kernel/doc/src/error_handler.xml b/lib/kernel/doc/src/error_handler.xml index 769a869ffa..84ec3927c8 100644 --- a/lib/kernel/doc/src/error_handler.xml +++ b/lib/kernel/doc/src/error_handler.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>1996</year> - <year>2011</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> diff --git a/lib/kernel/doc/src/global.xml b/lib/kernel/doc/src/global.xml index 9c50049503..53958c47c2 100644 --- a/lib/kernel/doc/src/global.xml +++ b/lib/kernel/doc/src/global.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1996</year><year>2011</year> + <year>1996</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index 3d929a772e..541500a300 100644 --- a/lib/kernel/doc/src/inet.xml +++ b/lib/kernel/doc/src/inet.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>1997</year><year>2012</year> + <year>1997</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/kernel/doc/src/notes.xml b/lib/kernel/doc/src/notes.xml index 78bc533464..6968b36eac 100644 --- a/lib/kernel/doc/src/notes.xml +++ b/lib/kernel/doc/src/notes.xml @@ -30,6 +30,161 @@ </header> <p>This document describes the changes made to the Kernel application.</p> +<section><title>Kernel 2.16</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + It is no longer possible to have <c>{Mod,Vsn}</c> in the + 'modules' list in a .app file.</p> + <p> + This was earlier possible, although never documented in + the .app file reference manual. It was however visible in + the documentation of <c>application:load/[1,2]</c>, where + the same term as in a .app file can be used as the first + argument.</p> + <p> + The possibility has been removed since the <c>Vsn</c> + part was never used.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10417</p> + </item> + <item> + <p> The contract of <c>erl_ddll:format_error/1</c> has + been corrected. (Thanks to Joseph Wayne Norton.) </p> + <p> + Own Id: OTP-10473</p> + </item> + <item> + <p> + Change printout of application crash message on startup + to formated strings (Thanks to Serge Aleynikov)</p> + <p> + Own Id: OTP-10620</p> + </item> + <item> + <p> The type <c>ascii_string()</c> in the <c>base64</c> + module has been corrected. The type + <c>file:file_info()</c> has been cleaned up. The type + <c>file:fd()</c> has been made opaque in the + documentation. </p> + <p> + Own Id: OTP-10624 Aux Id: kunagi-352 [263] </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Inet exported functionality</p> + <p> + inet:parse_ipv4_address/1, + inet:parse_ipv4strict_address/1, + inet:parse_ipv6_address/1, + inet:parse_ipv6strict_address/1, inet:parse_address/1 and + inet:parse_strict_address is now exported from the inet + module.</p> + <p> + Own Id: OTP-8067 Aux Id: kunagi-274 [185] </p> + </item> + <item> + <p> + A boolean socket option 'ipv6_v6only' for IPv6 sockets + has been added. The default value of the option is OS + dependent, so applications aiming to be portable should + consider using <c>{ipv6_v6only,true}</c> when creating an + <c>inet6</c> listening/destination socket, and if + neccesary also create an <c>inet</c> socket on the same + port for IPv4 traffic. See the documentation.</p> + <p> + Own Id: OTP-8928 Aux Id: kunagi-193 [104] </p> + </item> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p> + The documentation for <c>global:register_name/3</c> has + been updated to mention that the use of + <c>{Module,Function}</c> as the method argument (resolve + function) is deprecated.</p> + <p> + Own Id: OTP-10419</p> + </item> + <item> + <p> + Fixed bug where sendfile on oracle solaris would return + an error when a partial send was done.</p> + <p> + Own Id: OTP-10549</p> + </item> + <item> + <p> + The <c>error_handler</c> module will now call + <c>'$handle_undefined_function'/2</c> if an attempt is + made to call a non-existing function in a module that + exists. See the documentation for <c>error_handler</c> + module for details.</p> + <p> + Own Id: OTP-10617 Aux Id: kunagi-340 [251] </p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> + Do not return wrong terms unnecessarily. (Thanks to + Kostis Sagonas.)</p> + <p> + Own Id: OTP-10662</p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + <item> + <p>Add file:allocate/3 operation</p> + <p>This operation allows pre-allocation of space for + files. It succeeds only on systems that support such + operation. (Thanks to Filipe David Manana)</p> + <p> + Own Id: OTP-10680</p> + </item> + <item> + <p> + Add application:get_key/3. The new function provides a + default value for a configuration parameter. Thanks to + Serge Aleynikov.</p> + <p> + Own Id: OTP-10694</p> + </item> + <item> + <p> + Add search to Erlang shell's history. Thanks to Fred + Herbert.</p> + <p> + Own Id: OTP-10739</p> + </item> + </list> + </section> + +</section> + <section><title>Kernel 2.15.3</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/kernel/doc/src/ref_man.xml b/lib/kernel/doc/src/ref_man.xml index 67d91ba585..96604a2fa2 100644 --- a/lib/kernel/doc/src/ref_man.xml +++ b/lib/kernel/doc/src/ref_man.xml @@ -4,7 +4,7 @@ <application xmlns:xi="http://www.w3.org/2001/XInclude"> <header> <copyright> - <year>1996</year><year>2009</year> + <year>1996</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/kernel/doc/src/specs.xml b/lib/kernel/doc/src/specs.xml index b41addaa0c..813bb06e1f 100644 --- a/lib/kernel/doc/src/specs.xml +++ b/lib/kernel/doc/src/specs.xml @@ -29,5 +29,4 @@ <xi:include href="../specs/specs_user.xml"/> <xi:include href="../specs/specs_wrap_log_reader.xml"/> <xi:include href="../specs/specs_zlib_stub.xml"/> - <xi:include href="../specs/specs_packages.xml"/> </specs> diff --git a/lib/kernel/include/dist.hrl b/lib/kernel/include/dist.hrl index 91e13d99a9..e32c112e63 100644 --- a/lib/kernel/include/dist.hrl +++ b/lib/kernel/include/dist.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2011. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/kernel/src/Makefile b/lib/kernel/src/Makefile index 2b529a85b0..cb3c0a49f4 100644 --- a/lib/kernel/src/Makefile +++ b/lib/kernel/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/kernel/src/application.erl b/lib/kernel/src/application.erl index 4e65883be7..6efc1b4499 100644 --- a/lib/kernel/src/application.erl +++ b/lib/kernel/src/application.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/src/auth.erl b/lib/kernel/src/auth.erl index 165a0f0dc0..1e12a647d7 100644 --- a/lib/kernel/src/auth.erl +++ b/lib/kernel/src/auth.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/src/code.erl b/lib/kernel/src/code.erl index 2908b747d1..8a543abd6f 100644 --- a/lib/kernel/src/code.erl +++ b/lib/kernel/src/code.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/src/code_server.erl b/lib/kernel/src/code_server.erl index 2de175d5db..b770fce887 100644 --- a/lib/kernel/src/code_server.erl +++ b/lib/kernel/src/code_server.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2012. All Rights Reserved. +%% Copyright Ericsson AB 1998-2013. 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/kernel/src/disk_log.erl b/lib/kernel/src/disk_log.erl index 9483640a30..0c5af2857e 100644 --- a/lib/kernel/src/disk_log.erl +++ b/lib/kernel/src/disk_log.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/kernel/src/disk_log_1.erl b/lib/kernel/src/disk_log_1.erl index cbf7e1c085..9d431bdd30 100644 --- a/lib/kernel/src/disk_log_1.erl +++ b/lib/kernel/src/disk_log_1.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/kernel/src/dist_util.erl b/lib/kernel/src/dist_util.erl index bbb212cebe..fc50ec6717 100644 --- a/lib/kernel/src/dist_util.erl +++ b/lib/kernel/src/dist_util.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2010. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/kernel/src/error_handler.erl b/lib/kernel/src/error_handler.erl index a3aa1f1dcf..40aabba803 100644 --- a/lib/kernel/src/error_handler.erl +++ b/lib/kernel/src/error_handler.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/src/inet_config.erl b/lib/kernel/src/inet_config.erl index aa19bd4779..2461f3ff25 100644 --- a/lib/kernel/src/inet_config.erl +++ b/lib/kernel/src/inet_config.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/kernel/src/inet_parse.erl b/lib/kernel/src/inet_parse.erl index a7ac6ce040..619c78a6ca 100644 --- a/lib/kernel/src/inet_parse.erl +++ b/lib/kernel/src/inet_parse.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/kernel/src/kernel.app.src b/lib/kernel/src/kernel.app.src index 9a20baf8d0..cb8c98ab06 100644 --- a/lib/kernel/src/kernel.app.src +++ b/lib/kernel/src/kernel.app.src @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/src/kernel_config.erl b/lib/kernel/src/kernel_config.erl index 1649901ba7..48141cfa03 100644 --- a/lib/kernel/src/kernel_config.erl +++ b/lib/kernel/src/kernel_config.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/src/net_kernel.erl b/lib/kernel/src/net_kernel.erl index fd59205582..dd0071b914 100644 --- a/lib/kernel/src/net_kernel.erl +++ b/lib/kernel/src/net_kernel.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/src/os.erl b/lib/kernel/src/os.erl index c08f5af35a..742c000cc1 100644 --- a/lib/kernel/src/os.erl +++ b/lib/kernel/src/os.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/kernel/src/user_drv.erl b/lib/kernel/src/user_drv.erl index 47ece5d39e..bb654495d3 100644 --- a/lib/kernel/src/user_drv.erl +++ b/lib/kernel/src/user_drv.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/test/Makefile b/lib/kernel/test/Makefile index 8d2d55777b..cb11d4e899 100644 --- a/lib/kernel/test/Makefile +++ b/lib/kernel/test/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1997-2012. All Rights Reserved. +# Copyright Ericsson AB 1997-2013. 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/kernel/test/application_SUITE.erl b/lib/kernel/test/application_SUITE.erl index 2ca8840e1f..0452202467 100644 --- a/lib/kernel/test/application_SUITE.erl +++ b/lib/kernel/test/application_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/kernel/test/gen_tcp_echo_SUITE.erl b/lib/kernel/test/gen_tcp_echo_SUITE.erl index 94f95798a0..9bc66dbae0 100644 --- a/lib/kernel/test/gen_tcp_echo_SUITE.erl +++ b/lib/kernel/test/gen_tcp_echo_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/kernel/test/ignore_cores.erl b/lib/kernel/test/ignore_cores.erl index 8b1ac0fe6c..d4bb02df3f 100644 --- a/lib/kernel/test/ignore_cores.erl +++ b/lib/kernel/test/ignore_cores.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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/kernel/test/inet_SUITE.erl b/lib/kernel/test/inet_SUITE.erl index e5e1794514..1f7724d0dc 100644 --- a/lib/kernel/test/inet_SUITE.erl +++ b/lib/kernel/test/inet_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/kernel/test/os_SUITE.erl b/lib/kernel/test/os_SUITE.erl index 3f2195b609..382fd6f6a9 100644 --- a/lib/kernel/test/os_SUITE.erl +++ b/lib/kernel/test/os_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/kernel/test/pdict_SUITE.erl b/lib/kernel/test/pdict_SUITE.erl index 60b818cbe3..98cff0222e 100644 --- a/lib/kernel/test/pdict_SUITE.erl +++ b/lib/kernel/test/pdict_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2011. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/kernel/vsn.mk b/lib/kernel/vsn.mk index 46a991eb38..b6cf4407d2 100644 --- a/lib/kernel/vsn.mk +++ b/lib/kernel/vsn.mk @@ -1 +1 @@ -KERNEL_VSN = 2.16 +KERNEL_VSN = 2.16.1 diff --git a/lib/megaco/aclocal.m4 b/lib/megaco/aclocal.m4 index 918e30a886..25f40944e7 100644 --- a/lib/megaco/aclocal.m4 +++ b/lib/megaco/aclocal.m4 @@ -1,7 +1,7 @@ dnl dnl %CopyrightBegin% dnl -dnl Copyright Ericsson AB 1998-2012. All Rights Reserved. +dnl Copyright Ericsson AB 1998-2013. All Rights Reserved. dnl dnl The contents of this file are subject to the Erlang Public License, dnl Version 1.1, (the "License"); you may not use this file except in diff --git a/lib/megaco/configure.in b/lib/megaco/configure.in index 643267a154..64daa959b5 100644 --- a/lib/megaco/configure.in +++ b/lib/megaco/configure.in @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. -*-m4-*- dnl dnl %CopyrightBegin% dnl -dnl Copyright Ericsson AB 2001-2011. All Rights Reserved. +dnl Copyright Ericsson AB 2001-2013. All Rights Reserved. dnl dnl The contents of this file are subject to the Erlang Public License, dnl Version 1.1, (the "License"); you may not use this file except in diff --git a/lib/megaco/doc/src/megaco_encode.xml b/lib/megaco/doc/src/megaco_encode.xml index 4a9d63c2e3..4b5adab262 100644 --- a/lib/megaco/doc/src/megaco_encode.xml +++ b/lib/megaco/doc/src/megaco_encode.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2000</year><year>2009</year> + <year>2000</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/megaco/doc/src/notes.xml b/lib/megaco/doc/src/notes.xml index 928e3bea82..a092946fef 100644 --- a/lib/megaco/doc/src/notes.xml +++ b/lib/megaco/doc/src/notes.xml @@ -36,7 +36,24 @@ section is the version number of Megaco.</p> - <section><title>Megaco 3.16.0.2</title> + <section><title>Megaco 3.16.0.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + </list> + </section> + +</section> + +<section><title>Megaco 3.16.0.2</title> <p>Version 3.16.0.2 supports code replacement in runtime from/to version 3.16.0.1, 3.16, 3.15.1.1, 3.15.1 and 3.15.</p> diff --git a/lib/megaco/examples/meas/megaco_codec_meas.erl b/lib/megaco/examples/meas/megaco_codec_meas.erl index 65b986ccd1..5af40eea7d 100644 --- a/lib/megaco/examples/meas/megaco_codec_meas.erl +++ b/lib/megaco/examples/meas/megaco_codec_meas.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2010. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/megaco/examples/meas/megaco_codec_transform.erl b/lib/megaco/examples/meas/megaco_codec_transform.erl index 15db165566..7825e7856f 100644 --- a/lib/megaco/examples/meas/megaco_codec_transform.erl +++ b/lib/megaco/examples/meas/megaco_codec_transform.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2009. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/megaco/src/app/megaco.app.src b/lib/megaco/src/app/megaco.app.src index 0ba2a866f9..40265166ae 100644 --- a/lib/megaco/src/app/megaco.app.src +++ b/lib/megaco/src/app/megaco.app.src @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2011. All Rights Reserved. +%% Copyright Ericsson AB 1999-2013. 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/megaco/src/binary/depend.mk b/lib/megaco/src/binary/depend.mk index 2dce45981f..b9b86d3183 100644 --- a/lib/megaco/src/binary/depend.mk +++ b/lib/megaco/src/binary/depend.mk @@ -2,7 +2,7 @@ # %CopyrightBegin% # -# Copyright Ericsson AB 2001-2011. All Rights Reserved. +# Copyright Ericsson AB 2001-2013. 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/megaco/src/binary/megaco_binary_encoder.erl b/lib/megaco/src/binary/megaco_binary_encoder.erl index 51e167590d..abb496c173 100644 --- a/lib/megaco/src/binary/megaco_binary_encoder.erl +++ b/lib/megaco/src/binary/megaco_binary_encoder.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2009. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/megaco/src/binary/megaco_binary_encoder_lib.erl b/lib/megaco/src/binary/megaco_binary_encoder_lib.erl index 262889db39..8a4f4e7509 100644 --- a/lib/megaco/src/binary/megaco_binary_encoder_lib.erl +++ b/lib/megaco/src/binary/megaco_binary_encoder_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/megaco/src/binary/modules.mk b/lib/megaco/src/binary/modules.mk index bbaf087ceb..d0765b7a6b 100644 --- a/lib/megaco/src/binary/modules.mk +++ b/lib/megaco/src/binary/modules.mk @@ -2,7 +2,7 @@ # %CopyrightBegin% # -# Copyright Ericsson AB 2001-2009. All Rights Reserved. +# Copyright Ericsson AB 2001-2013. 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/megaco/src/flex/megaco_flex_scanner_drv.flex.src b/lib/megaco/src/flex/megaco_flex_scanner_drv.flex.src index 5faddb08c5..3914a81b8c 100644 --- a/lib/megaco/src/flex/megaco_flex_scanner_drv.flex.src +++ b/lib/megaco/src/flex/megaco_flex_scanner_drv.flex.src @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2001-2011. All Rights Reserved. + * Copyright Ericsson AB 2001-2013. 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/megaco/src/rules.mk b/lib/megaco/src/rules.mk index a59060032d..d9473af26e 100644 --- a/lib/megaco/src/rules.mk +++ b/lib/megaco/src/rules.mk @@ -2,7 +2,7 @@ # %CopyrightBegin% # -# Copyright Ericsson AB 1999-2009. All Rights Reserved. +# Copyright Ericsson AB 1999-2013. 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/megaco/test/megaco_actions_test.erl b/lib/megaco/test/megaco_actions_test.erl index 6d0e80281d..cdf11f09cc 100644 --- a/lib/megaco/test/megaco_actions_test.erl +++ b/lib/megaco/test/megaco_actions_test.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2010. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/megaco/test/megaco_call_flow_test.erl b/lib/megaco/test/megaco_call_flow_test.erl index d5888018cd..8ad1cf6445 100644 --- a/lib/megaco/test/megaco_call_flow_test.erl +++ b/lib/megaco/test/megaco_call_flow_test.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2010. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/megaco/test/megaco_mib_test.erl b/lib/megaco/test/megaco_mib_test.erl index ddc74ab741..96d7248726 100644 --- a/lib/megaco/test/megaco_mib_test.erl +++ b/lib/megaco/test/megaco_mib_test.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2010. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/megaco/test/megaco_test_mg.erl b/lib/megaco/test/megaco_test_mg.erl index 947f0eebbb..cc1d2dd1b9 100644 --- a/lib/megaco/test/megaco_test_mg.erl +++ b/lib/megaco/test/megaco_test_mg.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2010. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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/megaco/test/megaco_test_mgc.erl b/lib/megaco/test/megaco_test_mgc.erl index a964983861..d9183f847e 100644 --- a/lib/megaco/test/megaco_test_mgc.erl +++ b/lib/megaco/test/megaco_test_mgc.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2010. All Rights Reserved. +%% Copyright Ericsson AB 2003-2013. 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/megaco/vsn.mk b/lib/megaco/vsn.mk index 5e72ade769..a8f9c5917a 100644 --- a/lib/megaco/vsn.mk +++ b/lib/megaco/vsn.mk @@ -18,6 +18,6 @@ # %CopyrightEnd% APPLICATION = megaco -MEGACO_VSN = 3.16.0.2 +MEGACO_VSN = 3.16.0.3 PRE_VSN = APP_VSN = "$(APPLICATION)-$(MEGACO_VSN)$(PRE_VSN)" diff --git a/lib/mnesia/doc/src/notes.xml b/lib/mnesia/doc/src/notes.xml index 04b8c106fd..6e13331508 100644 --- a/lib/mnesia/doc/src/notes.xml +++ b/lib/mnesia/doc/src/notes.xml @@ -38,7 +38,63 @@ thus constitutes one section in this document. The title of each section is the version number of Mnesia.</p> - <section><title>Mnesia 4.7.1</title> + <section><title>Mnesia 4.8</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Use chained send_after instead of send_interval, to make + decrease the number of messages sent after a sleep + (Thanks to James Wheare)</p> + <p> + Own Id: OTP-10636</p> + </item> + <item> + <p> + Fix format of mnesia overload message (Thanks to Ahmed + Omar)</p> + <p> + Own Id: OTP-10639</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Added a general framework for executing benchmarks of + Erlang/OTP. Benchmarks for the Erlang VM and mnesia have + been incorporated in the framework. </p> + <p> + For details about how to add more benchmarks see + $ERL_TOP/HOWTO/BENCHMARKS.md in the source distribution.</p> + <p> + Own Id: OTP-10156</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> + Remove support for the query keyword and query + expressions. Thanks to Lo�c Hoguin.</p> + <p> + Own Id: OTP-10729</p> + </item> + </list> + </section> + +</section> + +<section><title>Mnesia 4.7.1</title> <section><title>Fixed Bugs and Malfunctions</title> <list> diff --git a/lib/mnesia/examples/mnesia_tpcb.erl b/lib/mnesia/examples/mnesia_tpcb.erl index f36b43a495..07ae73f0bd 100644 --- a/lib/mnesia/examples/mnesia_tpcb.erl +++ b/lib/mnesia/examples/mnesia_tpcb.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/mnesia/src/Makefile b/lib/mnesia/src/Makefile index 3a146c009a..ac38fa05ef 100644 --- a/lib/mnesia/src/Makefile +++ b/lib/mnesia/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/mnesia/src/mnesia.erl b/lib/mnesia/src/mnesia.erl index 3488d5c99b..70466d10d7 100644 --- a/lib/mnesia/src/mnesia.erl +++ b/lib/mnesia/src/mnesia.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/mnesia/src/mnesia_controller.erl b/lib/mnesia/src/mnesia_controller.erl index ec67d9ec12..78f7bfa325 100644 --- a/lib/mnesia/src/mnesia_controller.erl +++ b/lib/mnesia/src/mnesia_controller.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/mnesia/src/mnesia_event.erl b/lib/mnesia/src/mnesia_event.erl index 9fd0342d31..35fe2d4035 100644 --- a/lib/mnesia/src/mnesia_event.erl +++ b/lib/mnesia/src/mnesia_event.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/mnesia/src/mnesia_monitor.erl b/lib/mnesia/src/mnesia_monitor.erl index d940bd1cb7..7a788238fc 100644 --- a/lib/mnesia/src/mnesia_monitor.erl +++ b/lib/mnesia/src/mnesia_monitor.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/mnesia/src/mnesia_recover.erl b/lib/mnesia/src/mnesia_recover.erl index b64f428f15..7aa03bda37 100644 --- a/lib/mnesia/src/mnesia_recover.erl +++ b/lib/mnesia/src/mnesia_recover.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/mnesia/src/mnesia_sup.erl b/lib/mnesia/src/mnesia_sup.erl index ef858d2364..8443fefe7f 100644 --- a/lib/mnesia/src/mnesia_sup.erl +++ b/lib/mnesia/src/mnesia_sup.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/mnesia/src/mnesia_tm.erl b/lib/mnesia/src/mnesia_tm.erl index b5b14ac05b..e54e5c4e88 100644 --- a/lib/mnesia/src/mnesia_tm.erl +++ b/lib/mnesia/src/mnesia_tm.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/mnesia/test/mnesia_SUITE.erl b/lib/mnesia/test/mnesia_SUITE.erl index 5dbb80d4eb..e0004ecb51 100644 --- a/lib/mnesia/test/mnesia_SUITE.erl +++ b/lib/mnesia/test/mnesia_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/mnesia/test/mnesia_config_test.erl b/lib/mnesia/test/mnesia_config_test.erl index fd294780da..f0f3053ebf 100644 --- a/lib/mnesia/test/mnesia_config_test.erl +++ b/lib/mnesia/test/mnesia_config_test.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/mnesia/test/mnesia_measure_test.erl b/lib/mnesia/test/mnesia_measure_test.erl index dfed302814..8854854570 100644 --- a/lib/mnesia/test/mnesia_measure_test.erl +++ b/lib/mnesia/test/mnesia_measure_test.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/mnesia/test/mnesia_test_lib.erl b/lib/mnesia/test/mnesia_test_lib.erl index 57cbc61495..6a51aefdf0 100644 --- a/lib/mnesia/test/mnesia_test_lib.erl +++ b/lib/mnesia/test/mnesia_test_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/mnesia/vsn.mk b/lib/mnesia/vsn.mk index 6d5df448c9..8cd97342af 100644 --- a/lib/mnesia/vsn.mk +++ b/lib/mnesia/vsn.mk @@ -1 +1 @@ -MNESIA_VSN = 4.7.1 +MNESIA_VSN = 4.8 diff --git a/lib/observer/doc/src/notes.xml b/lib/observer/doc/src/notes.xml index 4ec03782a7..44fe2727bc 100644 --- a/lib/observer/doc/src/notes.xml +++ b/lib/observer/doc/src/notes.xml @@ -31,6 +31,23 @@ <p>This document describes the changes made to the Observer application.</p> +<section><title>Observer 1.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + </list> + </section> + +</section> + <section><title>Observer 1.2</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/observer/src/Makefile b/lib/observer/src/Makefile index 9069415e44..42f5c19935 100644 --- a/lib/observer/src/Makefile +++ b/lib/observer/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2002-2012. All Rights Reserved. +# Copyright Ericsson AB 2002-2013. 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/observer/vsn.mk b/lib/observer/vsn.mk index 32e13004b6..1ff1b3ec52 100644 --- a/lib/observer/vsn.mk +++ b/lib/observer/vsn.mk @@ -1 +1 @@ -OBSERVER_VSN = 1.2 +OBSERVER_VSN = 1.3 diff --git a/lib/odbc/aclocal.m4 b/lib/odbc/aclocal.m4 index 918e30a886..25f40944e7 100644 --- a/lib/odbc/aclocal.m4 +++ b/lib/odbc/aclocal.m4 @@ -1,7 +1,7 @@ dnl dnl %CopyrightBegin% dnl -dnl Copyright Ericsson AB 1998-2012. All Rights Reserved. +dnl Copyright Ericsson AB 1998-2013. All Rights Reserved. dnl dnl The contents of this file are subject to the Erlang Public License, dnl Version 1.1, (the "License"); you may not use this file except in diff --git a/lib/odbc/c_src/odbcserver.c b/lib/odbc/c_src/odbcserver.c index b4ee20c3ee..a6b3de6e48 100644 --- a/lib/odbc/c_src/odbcserver.c +++ b/lib/odbc/c_src/odbcserver.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1999-2011. All Rights Reserved. + * Copyright Ericsson AB 1999-2013. 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/odbc/c_src/odbcserver.h b/lib/odbc/c_src/odbcserver.h index 71760189e7..916a7cb31d 100644 --- a/lib/odbc/c_src/odbcserver.h +++ b/lib/odbc/c_src/odbcserver.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2002-2011. All Rights Reserved. + * Copyright Ericsson AB 2002-2013. 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/odbc/configure.in b/lib/odbc/configure.in index e6ba9f57f5..fd28830c0c 100644 --- a/lib/odbc/configure.in +++ b/lib/odbc/configure.in @@ -1,7 +1,7 @@ dnl dnl %CopyrightBegin% dnl -dnl Copyright Ericsson AB 2005-2011. All Rights Reserved. +dnl Copyright Ericsson AB 2005-2013. All Rights Reserved. dnl dnl The contents of this file are subject to the Erlang Public License, dnl Version 1.1, (the "License"); you may not use this file except in diff --git a/lib/odbc/doc/src/notes.xml b/lib/odbc/doc/src/notes.xml index 7ba0307a45..0110aa8e81 100644 --- a/lib/odbc/doc/src/notes.xml +++ b/lib/odbc/doc/src/notes.xml @@ -31,7 +31,58 @@ <p>This document describes the changes made to the odbc application. </p> - <section><title>ODBC 2.10.13</title> + <section><title>ODBC 2.10.14</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Under Unix enable TCP_NODELAY to disable Nagel's socket + algorithm. Thanks to Andy Richards</p> + <p> + Impact: Performance gain on Unix systems</p> + <p> + Own Id: OTP-10506</p> + </item> + <item> + <p> + Added extended_errors option to ODBC</p> + <p> + When enabled, this option alters the return code of ODBC + operations that produce errors to include the ODBC error + code as well as the native error code, in addition to the + ODBC reason field which is returned by default. Thanks to + Bernard Duggan.</p> + <p> + Own Id: OTP-10603</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + <item> + <p> + Fix aotocommit for Oracle ODBC driver in Linux. Thanks to + Danil Onishchenko.</p> + <p> + Own Id: OTP-10735</p> + </item> + </list> + </section> + +</section> + +<section><title>ODBC 2.10.13</title> <section><title>Fixed Bugs and Malfunctions</title> <list> diff --git a/lib/odbc/test/odbc_connect_SUITE.erl b/lib/odbc/test/odbc_connect_SUITE.erl index 7d732f20f7..b06384fc94 100644 --- a/lib/odbc/test/odbc_connect_SUITE.erl +++ b/lib/odbc/test/odbc_connect_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2011. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/orber/doc/src/notes.xml b/lib/orber/doc/src/notes.xml index d561199998..ceb25dd2c0 100644 --- a/lib/orber/doc/src/notes.xml +++ b/lib/orber/doc/src/notes.xml @@ -32,7 +32,35 @@ <file>notes.xml</file> </header> - <section><title>Orber 3.6.24</title> + <section><title>Orber 3.6.25</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + </list> + </section> + + + <section><title>Known Bugs and Problems</title> + <list> + <item> + <p> + <p> + </p></p> + <p> + Own Id: OTP-10675 Aux Id: seq12154 </p> + </item> + </list> + </section> + +</section> + +<section><title>Orber 3.6.24</title> <section><title>Fixed Bugs and Malfunctions</title> <list> diff --git a/lib/orber/src/orber_ifr_exceptiondef.erl b/lib/orber/src/orber_ifr_exceptiondef.erl index 94c25cc4a5..61b3051883 100644 --- a/lib/orber/src/orber_ifr_exceptiondef.erl +++ b/lib/orber/src/orber_ifr_exceptiondef.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/orber/test/csiv2_SUITE.erl b/lib/orber/test/csiv2_SUITE.erl index b89bf0a56c..da8c0d3738 100644 --- a/lib/orber/test/csiv2_SUITE.erl +++ b/lib/orber/test/csiv2_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/orber/vsn.mk b/lib/orber/vsn.mk index f891440600..10b19477e0 100644 --- a/lib/orber/vsn.mk +++ b/lib/orber/vsn.mk @@ -1,3 +1,3 @@ -ORBER_VSN = 3.6.24 +ORBER_VSN = 3.6.25 diff --git a/lib/os_mon/doc/src/notes.xml b/lib/os_mon/doc/src/notes.xml index 061183e51c..5bc6ce1406 100644 --- a/lib/os_mon/doc/src/notes.xml +++ b/lib/os_mon/doc/src/notes.xml @@ -30,6 +30,21 @@ </header> <p>This document describes the changes made to the OS_Mon application.</p> +<section><title>Os_Mon 2.2.11</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Removed deprecated function calls to snmp</p> + <p> + Own Id: OTP-10448</p> + </item> + </list> + </section> + +</section> + <section><title>Os_Mon 2.2.10</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/os_mon/src/Makefile b/lib/os_mon/src/Makefile index 06b9b9b8ae..cd2dadec30 100644 --- a/lib/os_mon/src/Makefile +++ b/lib/os_mon/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/os_mon/src/os_mon.erl b/lib/os_mon/src/os_mon.erl index 19acae9f0e..b5f71f3eed 100644 --- a/lib/os_mon/src/os_mon.erl +++ b/lib/os_mon/src/os_mon.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/os_mon/vsn.mk b/lib/os_mon/vsn.mk index 180906127c..7d6c5484a7 100644 --- a/lib/os_mon/vsn.mk +++ b/lib/os_mon/vsn.mk @@ -1 +1 @@ -OS_MON_VSN = 2.2.10 +OS_MON_VSN = 2.2.11 diff --git a/lib/otp_mibs/doc/src/notes.xml b/lib/otp_mibs/doc/src/notes.xml index 3d3a1272a4..04a13f47c2 100644 --- a/lib/otp_mibs/doc/src/notes.xml +++ b/lib/otp_mibs/doc/src/notes.xml @@ -31,6 +31,21 @@ <p>This document describes the changes made to the OTP_Mibs application.</p> +<section><title>Otp_Mibs 1.0.8</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + <section><title>Otp_Mibs 1.0.7</title> <section><title>Improvements and New Features</title> diff --git a/lib/otp_mibs/vsn.mk b/lib/otp_mibs/vsn.mk index f070288032..96d3088224 100644 --- a/lib/otp_mibs/vsn.mk +++ b/lib/otp_mibs/vsn.mk @@ -1,4 +1,4 @@ -OTP_MIBS_VSN = 1.0.7 +OTP_MIBS_VSN = 1.0.8 # Note: The branch 'otp_mibs' is defunct as of otp_mibs-1.0.4 and # should NOT be used again. diff --git a/lib/parsetools/doc/src/notes.xml b/lib/parsetools/doc/src/notes.xml index ac29cbb893..72b0280da1 100644 --- a/lib/parsetools/doc/src/notes.xml +++ b/lib/parsetools/doc/src/notes.xml @@ -30,6 +30,25 @@ </header> <p>This document describes the changes made to the Parsetools application.</p> +<section><title>Parsetools 2.0.8</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p> The file <c>esyntax.yrl</c> has been removed. </p> + <p> + Own Id: OTP-10660</p> + </item> + </list> + </section> + +</section> + <section><title>Parsetools 2.0.7</title> <section><title>Improvements and New Features</title> diff --git a/lib/parsetools/src/Makefile b/lib/parsetools/src/Makefile index 92bff00998..2ee2285eb3 100644 --- a/lib/parsetools/src/Makefile +++ b/lib/parsetools/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/parsetools/vsn.mk b/lib/parsetools/vsn.mk index e2594564cb..7874045c09 100644 --- a/lib/parsetools/vsn.mk +++ b/lib/parsetools/vsn.mk @@ -1 +1 @@ -PARSETOOLS_VSN = 2.0.7 +PARSETOOLS_VSN = 2.0.8 diff --git a/lib/percept/doc/src/notes.xml b/lib/percept/doc/src/notes.xml index dd70cfe994..82ce47c0ef 100644 --- a/lib/percept/doc/src/notes.xml +++ b/lib/percept/doc/src/notes.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2007</year> - <year>2011</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -32,6 +32,21 @@ </header> <p>This document describes the changes made to the Percept application.</p> +<section><title>Percept 0.8.8</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + <section><title>Percept 0.8.7</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/percept/vsn.mk b/lib/percept/vsn.mk index f868246f7b..07e9ac5085 100644 --- a/lib/percept/vsn.mk +++ b/lib/percept/vsn.mk @@ -1 +1 @@ -PERCEPT_VSN = 0.8.7 +PERCEPT_VSN = 0.8.8 diff --git a/lib/pman/doc/src/notes.xml b/lib/pman/doc/src/notes.xml index 778f960004..0cd46b0cee 100644 --- a/lib/pman/doc/src/notes.xml +++ b/lib/pman/doc/src/notes.xml @@ -30,6 +30,21 @@ </header> <p>This document describes the changes made to the Pman application.</p> +<section><title>Pman 2.7.1.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + <section><title>Pman 2.7.1.2</title> <section><title>Improvements and New Features</title> diff --git a/lib/pman/vsn.mk b/lib/pman/vsn.mk index 13dce1a7a5..12ee4b1669 100644 --- a/lib/pman/vsn.mk +++ b/lib/pman/vsn.mk @@ -1 +1 @@ -PMAN_VSN = 2.7.1.2 +PMAN_VSN = 2.7.1.3 diff --git a/lib/public_key/doc/src/notes.xml b/lib/public_key/doc/src/notes.xml index a5e8beedf0..09b6c79acd 100644 --- a/lib/public_key/doc/src/notes.xml +++ b/lib/public_key/doc/src/notes.xml @@ -34,6 +34,55 @@ <file>notes.xml</file> </header> +<section><title>Public_Key 0.18</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix subjectPublicKeyInfo type comment in public_key. + Thanks to Ryosuke Nakai.</p> + <p> + Own Id: OTP-10670</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + public_key now supports CRL validation and documents the + function public_key:pkix_path_validation/3</p> + <p> + Own Id: OTP-7045</p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + <item> + <p> + Fixed typo's in public_key spec.</p> + <p> + Own Id: OTP-10723</p> + </item> + <item> + <p> + Corrected PKCS-10 documentation and added some PKCS-9 + support that is fairly commonly used by PKCS-10. Full + support for PKCS-9 will be added later.</p> + <p> + Own Id: OTP-10767</p> + </item> + </list> + </section> + +</section> + <section><title>Public_Key 0.17</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/public_key/src/Makefile b/lib/public_key/src/Makefile index b8ad68ecc7..09393e8e50 100644 --- a/lib/public_key/src/Makefile +++ b/lib/public_key/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2008-2012. All Rights Reserved. +# Copyright Ericsson AB 2008-2013. 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/public_key/src/public_key.erl b/lib/public_key/src/public_key.erl index 9b7d98728f..e753cf3867 100644 --- a/lib/public_key/src/public_key.erl +++ b/lib/public_key/src/public_key.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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/reltool/doc/src/notes.xml b/lib/reltool/doc/src/notes.xml index 66ec7e9035..69e499723f 100644 --- a/lib/reltool/doc/src/notes.xml +++ b/lib/reltool/doc/src/notes.xml @@ -37,7 +37,64 @@ thus constitutes one section in this document. The title of each section is the version number of Reltool.</p> - <section><title>Reltool 0.6.1</title> + <section><title>Reltool 0.6.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + <list> <item> If <c>incl_cond</c> was set to + <c>derived</c> on module level, then reltool_server would + crash with a <c>case_clause</c>. This has been corrected. + <c>incl_cond</c> on module level now overwrites + <c>mod_cond</c> on app or sys level as described in the + documentation. </item> <item> If a <c>rel</c> spec in the + reltool config does not contain all applications that are + listed as <c>{applications,Applications}</c> in a + <c>.app</c> file, then these applications are + autmatically added when creating the <c>.rel</c> file. + For 'included_applications', the behaviour was not the + same. I.e. if a <c>rel</c> spec in the reltool config did + not contain all applications that are listed as + <c>{included_applications,InclApplications}</c> in a + <c>.app</c> file, then reltool would fail with reason + "Undefined applications" when creating the <c>.rel</c> + file. This has been corrected, so both + <c>applications</c> and <c>included_applications</c> are + now automatically added if not already in the <c>rel</c> + spec. </item> <item> The <c>rel</c> specification now + dictates the order in which included and used + applications (specified in the <c>.app</c> file as + <c>included_applications</c> and <c>applications</c> + respectively) are loaded/started by the boot file. If the + applications are not specified in the <c>rel</c> spec, + then the order from the <c>.app</c> file is used. This + was a bug earlier reported on systools, and is now also + implemented in reltool. </item> <item> Instead of only + looking at the directory name, reltool now first looks + for a <c>.app</c> file in order to figure out the name of + an application. </item> </list></p> + <p> + Own Id: OTP-10012 Aux Id: kunagi-171 [82] </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + </list> + </section> + +</section> + +<section><title>Reltool 0.6.1</title> <section><title>Improvements and New Features</title> <list> diff --git a/lib/reltool/src/Makefile b/lib/reltool/src/Makefile index 3c67bca1d6..b8387fff96 100644 --- a/lib/reltool/src/Makefile +++ b/lib/reltool/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2009-2012. All Rights Reserved. +# Copyright Ericsson AB 2009-2013. 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/reltool/vsn.mk b/lib/reltool/vsn.mk index 6872539b8c..b1edf770aa 100644 --- a/lib/reltool/vsn.mk +++ b/lib/reltool/vsn.mk @@ -1 +1 @@ -RELTOOL_VSN = 0.6.1 +RELTOOL_VSN = 0.6.2 diff --git a/lib/runtime_tools/doc/src/book.xml b/lib/runtime_tools/doc/src/book.xml index ad7d709644..62f145f0a5 100644 --- a/lib/runtime_tools/doc/src/book.xml +++ b/lib/runtime_tools/doc/src/book.xml @@ -4,7 +4,7 @@ <book xmlns:xi="http://www.w3.org/2001/XInclude"> <header titlestyle="normal"> <copyright> - <year>1999</year><year>2009</year> + <year>1999</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/runtime_tools/doc/src/notes.xml b/lib/runtime_tools/doc/src/notes.xml index 90641719c5..35cefb4b78 100644 --- a/lib/runtime_tools/doc/src/notes.xml +++ b/lib/runtime_tools/doc/src/notes.xml @@ -31,6 +31,59 @@ <p>This document describes the changes made to the Runtime_Tools application.</p> +<section><title>Runtime_Tools 1.8.10</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix Table Viewer refresh crash on no more existing ets + tables (Thanks to Peti G�mori)</p> + <p> + Own Id: OTP-10635</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + User Guides for the dynamic tracing tools dtrace and + systemtap have been added to the documentation.</p> + <p> + Own Id: OTP-10155</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + <item> + <p> + The backend module appmon_info.erl is moved from appmon + application to runtime_tools. This allows appmon to be + run from a remote erlang node towards a target node which + does not have appmon (and its dependencies) installed, as + long as runtime_tools is installed there.</p> + <p> + Own Id: OTP-10786</p> + </item> + </list> + </section> + +</section> + <section><title>Runtime_Tools 1.8.9</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/runtime_tools/src/Makefile b/lib/runtime_tools/src/Makefile index 9809004638..2347986c53 100644 --- a/lib/runtime_tools/src/Makefile +++ b/lib/runtime_tools/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1999-2012. All Rights Reserved. +# Copyright Ericsson AB 1999-2013. 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/runtime_tools/src/appmon_info.erl b/lib/runtime_tools/src/appmon_info.erl index 332140f69d..a728312c97 100644 --- a/lib/runtime_tools/src/appmon_info.erl +++ b/lib/runtime_tools/src/appmon_info.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/runtime_tools/src/dbg.erl b/lib/runtime_tools/src/dbg.erl index d35c8e781e..6e3bfe31c6 100644 --- a/lib/runtime_tools/src/dbg.erl +++ b/lib/runtime_tools/src/dbg.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/runtime_tools/src/runtime_tools_sup.erl b/lib/runtime_tools/src/runtime_tools_sup.erl index e8ea08ec97..ab9fa534d5 100644 --- a/lib/runtime_tools/src/runtime_tools_sup.erl +++ b/lib/runtime_tools/src/runtime_tools_sup.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2012. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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/runtime_tools/vsn.mk b/lib/runtime_tools/vsn.mk index 534c7508d8..d9c03b7e25 100644 --- a/lib/runtime_tools/vsn.mk +++ b/lib/runtime_tools/vsn.mk @@ -1 +1 @@ -RUNTIME_TOOLS_VSN = 1.8.9 +RUNTIME_TOOLS_VSN = 1.8.10 diff --git a/lib/sasl/doc/src/notes.xml b/lib/sasl/doc/src/notes.xml index 1333e375b1..1d6c45e64a 100644 --- a/lib/sasl/doc/src/notes.xml +++ b/lib/sasl/doc/src/notes.xml @@ -30,6 +30,65 @@ </header> <p>This document describes the changes made to the SASL application.</p> +<section><title>SASL 2.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + release_handler_SUITE:otp_9864 deleted parts of the + release_handler_SUITE_data directory so the test suite + could not be executed twice without re-installation. This + has been corrected.</p> + <p> + Own Id: OTP-10394 Aux Id: kunagi-187 [98] </p> + </item> + <item> + <p> + It is no longer possible to have <c>{Mod,Vsn}</c> in the + 'modules' list in a .app file.</p> + <p> + This was earlier possible, although never documented in + the .app file reference manual. It was however visible in + the documentation of <c>application:load/[1,2]</c>, where + the same term as in a .app file can be used as the first + argument.</p> + <p> + The possibility has been removed since the <c>Vsn</c> + part was never used.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10417</p> + </item> + <item> + <p> + release_handler:upgrade_script and + release_handler:downgrade_script could not read appup + files with regexps. This has been corrected. (Thanks to + Ulf Wiger)</p> + <p> + Own Id: OTP-10463</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + </list> + </section> + +</section> + <section><title>SASL 2.2.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/sasl/src/Makefile b/lib/sasl/src/Makefile index 4daa6e9861..ab2d3a3ecd 100644 --- a/lib/sasl/src/Makefile +++ b/lib/sasl/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/sasl/test/release_handler_SUITE.erl b/lib/sasl/test/release_handler_SUITE.erl index 94cffc988d..82b7a738bb 100644 --- a/lib/sasl/test/release_handler_SUITE.erl +++ b/lib/sasl/test/release_handler_SUITE.erl @@ -938,7 +938,7 @@ otp_9417(cleanup,_Conf) -> %% OTP-9395 - performance problems when there are MANY processes %% Test that the procedure of checking for old code before an upgrade -%% can be started is "very much faster" when there is no old code in +%% can be started is faster when there is no old code in %% the system. otp_9395_check_old_code(Conf) when is_list(Conf) -> @@ -978,8 +978,8 @@ otp_9395_check_old_code(Conf) when is_list(Conf) -> "\tAfter purge: ~.2f sec~n" "\tT1/T2: ~.2f", [NProcs,length(Modules),T1/1000000,T2/1000000,X]), - if X < 1000 -> - ct:fail({not_enough_improvement_after_purge,round(X)}); + if X < 1 -> + ct:fail({no_improvement_after_purge,X}); true -> ok end; diff --git a/lib/sasl/vsn.mk b/lib/sasl/vsn.mk index 6e9e2c9ff8..93ba34d448 100644 --- a/lib/sasl/vsn.mk +++ b/lib/sasl/vsn.mk @@ -1 +1 @@ -SASL_VSN = 2.2.1 +SASL_VSN = 2.3 diff --git a/lib/snmp/src/compile/depend.mk b/lib/snmp/src/compile/depend.mk index e6ba1ac810..2f8a07aba7 100644 --- a/lib/snmp/src/compile/depend.mk +++ b/lib/snmp/src/compile/depend.mk @@ -2,7 +2,7 @@ # %CopyrightBegin% # -# Copyright Ericsson AB 2004-2011. All Rights Reserved. +# Copyright Ericsson AB 2004-2013. 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/snmp/test/snmp_manager_user_old.erl b/lib/snmp/test/snmp_manager_user_old.erl index 9f951bf64d..d5ffabee0b 100644 --- a/lib/snmp/test/snmp_manager_user_old.erl +++ b/lib/snmp/test/snmp_manager_user_old.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. 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/snmp/test/snmp_manager_user_test.erl b/lib/snmp/test/snmp_manager_user_test.erl index 41d5c50b19..2633793bce 100644 --- a/lib/snmp/test/snmp_manager_user_test.erl +++ b/lib/snmp/test/snmp_manager_user_test.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2010. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/snmp/test/snmp_test_manager.erl b/lib/snmp/test/snmp_test_manager.erl index 0df2350d58..1f3383a7a8 100644 --- a/lib/snmp/test/snmp_test_manager.erl +++ b/lib/snmp/test/snmp_test_manager.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2010. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/ssh/doc/src/introduction.xml b/lib/ssh/doc/src/introduction.xml index aac8de0f76..e76aa20d64 100644 --- a/lib/ssh/doc/src/introduction.xml +++ b/lib/ssh/doc/src/introduction.xml @@ -5,6 +5,7 @@ <header> <copyright> <year>2012</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -47,7 +48,7 @@ <section> <title>Prerequisites</title> - <p>It is assumed that the reader is familiar with the concepts of <seealso marker="doc/design_principals:users_guide">OTP</seealso> + <p>It is assumed that the reader is familiar with the concepts of <seealso marker="doc/design_principles:des_princ">OTP</seealso> and has a basic understanding of <url href="http://en.wikipedia.org/wiki/Public-key_cryptography">public keys</url>.</p> </section> diff --git a/lib/ssh/doc/src/notes.xml b/lib/ssh/doc/src/notes.xml index e58d4e2c36..3c289cdc46 100644 --- a/lib/ssh/doc/src/notes.xml +++ b/lib/ssh/doc/src/notes.xml @@ -29,6 +29,111 @@ <file>notes.xml</file> </header> +<section><title>Ssh 2.1.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + It is now possible to send an empty binary using + ssh_connection:send/3, this corner case previously caused + ssh_connection:send to hang.</p> + <p> + Own Id: OTP-9478 Aux Id: kunagi-226 [137] </p> + </item> + <item> + <p> + Fix typo in keyboard-interactive string. Thanks to Daniel + Goertzen</p> + <p> + Own Id: OTP-10456</p> + </item> + <item> + <p> + ssh_connectino:send/3 will not return until all data has + been sent. Previously it could return too early, + resulting in things such premature close of the + connection. Also improved error handling of closed SSH + channels.</p> + <p> + Own Id: OTP-10467</p> + </item> + <item> + <p>Fixed ssh_cli.erl crashes because #state.buf is yet + 'undefined'.</p> <p>Fixed Client terminateing connections + due to channel_request message response is sent to the + wrong id.</p> <p>Affected SSH clients: - all clients + based on SSH-2.0-TrileadSSH2Java_213 (problem #1) - SSH + Term Pro (problem #2)</p> <p>Thanks to Stefan Zegenhagen + </p> + <p> + Own Id: OTP-10475</p> + </item> + <item> + <p> + Fixed various syntax errors in SSH appup file</p> + <p> + Own Id: OTP-10657</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + SSH_FX_FILE_IS_A_DIRECTORY message for sftp implemented</p> + <p> + Own Id: OTP-6406 Aux Id: kunagi-218 [129] </p> + </item> + <item> + <p> + SSH Rekeying fixed</p> + <p> + Own Id: OTP-7785 Aux Id: kunagi-220 [131] </p> + </item> + <item> + <p> + Added User Guide for the SSH application</p> + <p> + Own Id: OTP-7786 Aux Id: kunagi-221 [132] </p> + </item> + <item> + <p> + Documentation regarding failfun, connectfun and + disconnectfun provided</p> + <p> + Own Id: OTP-7792 Aux Id: kunagi-222 [133] </p> + </item> + <item> + <p> + SSH connection timer implementation</p> + <p> + New option, {idle_time, integer()}, sets a timeout on + connection when no channels are active, defaults to + infinity</p> + <p> + Own Id: OTP-10514 Aux Id: seq12020 </p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + <item> + <p> + Fixed internal error on when client and server can not + agree o which authmethod to use.</p> + <p> + Own Id: OTP-10731 Aux Id: seq12237 </p> + </item> + </list> + </section> + +</section> + <section><title>Ssh 2.1.2</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/ssh/doc/src/ssh.xml b/lib/ssh/doc/src/ssh.xml index 7f7d887d5e..f57ee13460 100644 --- a/lib/ssh/doc/src/ssh.xml +++ b/lib/ssh/doc/src/ssh.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2004</year><year>2012</year> + <year>2004</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/ssh/doc/src/ssh_channel.xml b/lib/ssh/doc/src/ssh_channel.xml index f0083ae8d1..66b3b8b656 100644 --- a/lib/ssh/doc/src/ssh_channel.xml +++ b/lib/ssh/doc/src/ssh_channel.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2009</year> - <year>2012</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -31,7 +31,7 @@ <p>SSH services (clients and servers) are implemented as channels that are multiplexed over an SSH connection and communicates via the <url href="http://www.ietf.org/rfc/rfc4254.txt"> SSH - Connection Protocol </url>. This module provides a callback API + Connection Protocol</url>. This module provides a callback API that takes care of generic channel aspects such as flow control and close messages and lets the callback functions take care of the service (application) specific parts. This behavior also ensures @@ -41,12 +41,12 @@ the SSH applications supervisor tree. </p> - <note> When implementing a SSH subsystem use the - <c>-behaviour(ssh_subsystem).</c> instead of <c>-behaviour(ssh_channel).</c> + <note> <p>When implementing a SSH subsystem use the + <c>-behaviour(ssh_daemon_channel).</c> instead of <c>-behaviour(ssh_channel).</c> as the only relevant callback functions for subsystems are - init/1, handle_ssh_msg/2, handle_msg/2 and terminate/2, so the ssh_subsystem + init/1, handle_ssh_msg/2, handle_msg/2 and terminate/2, so the ssh_daemon_channel behaviour is limited version of the ssh_channel behaviour. - </note> + </p> </note> </description> <section> @@ -83,7 +83,7 @@ <desc> <p>Makes a synchronous call to the channel process by sending a message and waiting until a reply arrives or a timeout - occurs. The channel will call <seealso mark = + occurs. The channel will call <seealso marker = "#Module:handle_call-3">Module:handle_call/3</seealso> to handle the message. If the channel process does not exist <c>{error, closed}</c> is returned. @@ -104,7 +104,7 @@ <p>Sends an asynchronous message to the channel process and returns ok immediately, ignoring if the destination node or channel process does not exist. The channel will call - <seealso mark = "#Module:handle_cast-3">Module:handle_cast/2</seealso> + <seealso marker = "#Module:handle_cast-2">Module:handle_cast/2</seealso> to handle the message. </p> </desc> @@ -114,7 +114,7 @@ <name>enter_loop(State) -> _ </name> <fsummary> Makes an existing process an ssh_channel process. </fsummary> <type> - <v> State = term() - as returned by <seealso mark = "#init-1">ssh_channel:init/1</seealso></v> + <v> State = term() - as returned by <seealso marker = "#init-1">ssh_channel:init/1</seealso></v> </type> <desc> <p> Makes an existing process an <c>ssh_channel</c> @@ -124,7 +124,7 @@ one of the start functions in proc_lib, see <seealso marker="stdlib:proc_lib">proc_lib(3)</seealso>. The user is responsible for any initialization of the process - and needs to call <seealso mark = "#init-1">ssh_channel:init/1</seealso> + and needs to call <seealso marker = "#init-1">ssh_channel:init/1</seealso> </p> </desc> </func> @@ -155,7 +155,7 @@ marker="ssh#connect-3">ssh:connect/3</seealso></item> <tag><c><![CDATA[{channel_id, channel_id()}]]></c></tag> - <item> Id of the ssh channel.</item> + <item> Id of the SSH channel.</item> </taglist> @@ -222,8 +222,8 @@ <title> CALLBACK TIMEOUTS</title> <p>The timeout values that may be returned by the callback functions - has the same semantics as in a <seealso marker="stdlib#gen_server">gen_server</seealso> - If the timeout occurs <seealso marker="#handle_msg">handle_msg/2</seealso> + has the same semantics as in a <seealso marker="stdlib:gen_server">gen_server</seealso> + If the timeout occurs <seealso marker="#Module:handle_msg-2">handle_msg/2</seealso> will be called as <c>handle_msg(timeout, State). </c></p> </section> @@ -334,7 +334,6 @@ </p> <p>For more detailed information on timeouts see the section <seealso marker="#cb_timeouts">CALLBACK TIMEOUTS</seealso>. </p> - <marker id="handle_msg"></marker> </desc> </func> @@ -342,10 +341,11 @@ <name>Module:handle_msg(Msg, State) -> {ok, State} | {stop, ChannelId, State}</name> - <fsummary> Handle other messages than ssh connection protocol, + <fsummary> Handle other messages than SSH connection protocol, call or cast messages sent to the channel.</fsummary> <type> <v>Msg = timeout | term()</v> + <v>ChannelId = ssh_channel_id()</v> <v>State = term() </v> </type> <desc> @@ -361,7 +361,7 @@ ssh_connection_ref()}]]></c></tag> <item>This is the first messages that will be received by the channel, it is sent just before the <seealso - marker="#init-2">ssh_channel:init/1</seealso> function + marker="#init-1">ssh_channel:init/1</seealso> function returns successfully. This is especially useful if the server wants to send a message to the client without first receiving a message from it. If the message is not @@ -374,19 +374,20 @@ <func> <name>Module:handle_ssh_msg(Msg, State) -> {ok, State} | {stop, - ssh_channel_id(), State}</name> + ChannelId, State}</name> <fsummary> Handles ssh connection protocol messages. </fsummary> <type> <v>Msg = <seealso marker="ssh_connection"> ssh_connection:event() </seealso> </v> + <v>ChannelId = ssh_channel_id()</v> <v>State = term()</v> </type> <desc> - <p> Handles ssh connection protocol messages that may need + <p> Handles SSH connection protocol messages that may need service specific attention. </p> <p> The following message is completely taken care of by the - ssh channel behavior</p> + SSH channel behavior</p> <taglist> <tag><c><![CDATA[{closed, ssh_channel_id()}]]></c></tag> diff --git a/lib/ssh/doc/src/ssh_client_key_api.xml b/lib/ssh/doc/src/ssh_client_key_api.xml index abc1070e78..b9b1ec4efa 100644 --- a/lib/ssh/doc/src/ssh_client_key_api.xml +++ b/lib/ssh/doc/src/ssh_client_key_api.xml @@ -5,6 +5,7 @@ <header> <copyright> <year>2012</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -62,7 +63,7 @@ <d> Normally an RSA or DSA public key but handling of other public keys can be added</d> <v>ConnectOptions = proplists:proplist() </v> - <d>Options provided to <seealso marker="ssh#daemon">ssh:connect/[3,4]</seealso></d> + <d>Options provided to <seealso marker="ssh#connect-3">ssh:connect/[3,4]</seealso></d> <v>Reason = term() </v> </type> <desc> @@ -85,7 +86,7 @@ can be handled.</d> <v> ConnectOptions = proplists:proplist() </v> - <d>Options provided to <seealso marker="ssh#daemon">ssh:connect/[3,4]</seealso></d> + <d>Options provided to <seealso marker="ssh#connect-3">ssh:connect/[3,4]</seealso></d> <v> Result = boolean()</v> </type> @@ -104,7 +105,7 @@ can be handled.</d> <v> ConnectOptions = proplists:proplist() </v> - <d>Options provided to <seealso marker="ssh#daemon">ssh:connect/[3,4]</seealso></d> + <d>Options provided to <seealso marker="ssh#connect-3">ssh:connect/[3,4]</seealso></d> <v> PrivateKey = private_key()</v> <d> The private key of the user matching the <c>Algorithm</c></d> @@ -114,7 +115,7 @@ <desc> <p>Fetches the users "public key" matching the <c>Algorithm</c>. - <note>The private key contains the public key</note> + <note><p>The private key contains the public key</p></note> </p> </desc> </func> diff --git a/lib/ssh/doc/src/ssh_connection.xml b/lib/ssh/doc/src/ssh_connection.xml index c66622307f..efd4865a6f 100644 --- a/lib/ssh/doc/src/ssh_connection.xml +++ b/lib/ssh/doc/src/ssh_connection.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2008</year> - <year>2012</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -42,7 +42,7 @@ marker="ssh_channel">ssh_channel</seealso> behavior is used to implement the channel process these will be handled by <seealso - marker="ssh_channel#CallbackModule:handled_ssh_msg-2">handle_ssh_msg/2 </seealso>.</p> + marker="ssh_channel#Module:handle_ssh_msg-2">handle_ssh_msg/2 </seealso>.</p> </description> <section> @@ -69,12 +69,12 @@ <taglist> <tag><c><![CDATA[{data, ssh_channel_id(), ssh_data_type_code(), binary() = Data}]]></c></tag> <item> Data has arrived on the channel. This event is sent as - result of calling <seealso marker="#send-3"> ssh_connection:send/[3,4,5] </seealso></item> + result of calling <seealso marker="ssh_connection#send-3"> ssh_connection:send/[3,4,5] </seealso></item> <tag><c><![CDATA[{eof, ssh_channel_id()}]]></c></tag> <item>Indicates that the other side will not send any more data. This event is sent as result of calling <seealso - marker="#send_eof-2"> ssh_connection:send_eof/2</seealso> + marker="ssh_connection#send_eof-2"> ssh_connection:send_eof/2</seealso> </item> </taglist> </item> @@ -104,12 +104,12 @@ following message can be sent to return the exit status of the command. A zero 'exit_status' usually means that the command terminated successfully. This event is sent as result of calling - <seealso marker="#exit_status"> + <seealso marker="ssh_connection#exit_status-3"> ssh_connection:exit_status/3</seealso></item> <tag><c><![CDATA[{closed, ssh_channel_id()}]]></c></tag> <item> This event is sent as result of calling - <seealso marker="#close">ssh_connection:close/2</seealso> Both the handling of this + <seealso marker="ssh_connection#close-2">ssh_connection:close/2</seealso> Both the handling of this event and sending of it will be taken care of by the <seealso marker="ssh_channel">ssh_channel</seealso> behavior.</item> @@ -122,17 +122,17 @@ <p> Channels implementing a shell and command execution on the server side should handle the following messages that may be sent by client channel processes. </p> - <p><note>Events that includes a <c> WantReply</c> expects the event handling - process to call <seealso marker="#reply_request">ssh_connection:reply_request/4</seealso> + <note> <p>Events that includes a <c> WantReply</c> expects the event handling + process to call <seealso marker="ssh_connection#reply_request-4">ssh_connection:reply_request/4</seealso> with the boolean value of <c> WantReply</c> as the second - argument. </note> </p> + argument. </p></note> <taglist> <tag><c><![CDATA[{env, ssh_channel_id(), boolean() = WantReply, string() = Var, string() = Value}]]></c></tag> <item> Environment variables may be passed to the shell/command to be started later. This event is sent as result of calling <seealso - marker="#setenv"> ssh_connection:setenv/5</seealso> + marker="ssh_connection#setenv-5"> ssh_connection:setenv/5</seealso> </item> <tag><c><![CDATA[{pty, ssh_channel_id(), @@ -157,7 +157,7 @@ <tag><c><![CDATA[{shell, boolean() = WantReply}]]></c></tag> <item> This message will request that the user's default shell be started at the other end. This event is sent as result of calling <seealso - marker="#shell"> ssh_connection:shell/2</seealso> + marker="ssh_connection#shell-2"> ssh_connection:shell/2</seealso> </item> <tag><c><![CDATA[{window_change, ssh_channel_id(), integer() = CharWidth, @@ -171,7 +171,7 @@ boolean() = WantReply, string() = Cmd}]]></c></tag> <item> This message will request that the server starts execution of the given command. This event is sent as result of calling <seealso - marker="#exec">ssh_connection:exec/4 </seealso> + marker="ssh_connection#exec-4">ssh_connection:exec/4 </seealso> </item> </taglist> </item> @@ -194,7 +194,7 @@ <note><p>Channels implemented with the <seealso marker="ssh_channel"> ssh_channel behavior</seealso> will normaly not need to call this function as flow control will be handled by the behavior. The behavior will adjust the window every time - the callback <seealso marker="ssh_channel#handled_ssh_msg-2"> + the callback <seealso marker="ssh_channel#Module:handle_ssh_msg-2"> handle_ssh_msg/2 </seealso> has returned after processing channel data</p> </note> </desc> </func> diff --git a/lib/ssh/doc/src/ssh_server_key_api.xml b/lib/ssh/doc/src/ssh_server_key_api.xml index 78ff105387..c4562e1211 100644 --- a/lib/ssh/doc/src/ssh_server_key_api.xml +++ b/lib/ssh/doc/src/ssh_server_key_api.xml @@ -5,6 +5,7 @@ <header> <copyright> <year>2012</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -58,7 +59,7 @@ <d> Host key algorithm. Should support 'ssh-rsa'| 'ssh-dss' but additional algorithms can be handled.</d> <v> DaemonOptions = proplists:proplist() </v> - <d>Options provided to <seealso marker="ssh#daemon">ssh:daemon/[2,3]</seealso></d> + <d>Options provided to <seealso marker="ssh#daemon-2">ssh:daemon/[2,3]</seealso></d> <v> Key = private_key()</v> <d> The private key of the host matching the <c>Algorithm</c></d> <v>Reason = term() </v> @@ -77,7 +78,7 @@ <v> User = string()</v> <d> The user owning the public key</d> <v> DaemonOptions = proplists:proplist() </v> - <d> Options provided to <seealso marker="ssh#daemon">ssh:daemon/[2,3]</seealso></d> + <d> Options provided to <seealso marker="ssh#daemon-2">ssh:daemon/[2,3]</seealso></d> <v> Result = boolean()</v> </type> <desc> diff --git a/lib/ssh/doc/src/ssh_sftpd.xml b/lib/ssh/doc/src/ssh_sftpd.xml index 3666bc7692..a73d6e52d4 100644 --- a/lib/ssh/doc/src/ssh_sftpd.xml +++ b/lib/ssh/doc/src/ssh_sftpd.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2005</year><year>2012</year> + <year>2005</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -61,7 +61,7 @@ <item> <p>Determines which module to call for accessing the file server. The default value is <c>ssh_sftpd_file</c> that uses the - <seealso marker="kernel#file">file</seealso> and <seealso marker="kernel#filelib">filelib</seealso> API:s to access the standard OTP file + <seealso marker="kernel:file">file</seealso> and <seealso marker="stdlib:filelib">filelib</seealso> API:s to access the standard OTP file server. This option may be used to plug in other file servers.</p> </item> diff --git a/lib/ssh/doc/src/using_ssh.xml b/lib/ssh/doc/src/using_ssh.xml index 87b811d591..c994c1c56c 100644 --- a/lib/ssh/doc/src/using_ssh.xml +++ b/lib/ssh/doc/src/using_ssh.xml @@ -29,7 +29,7 @@ <section> <title> General information</title> <p>The examples in the following sections use the utility function - <seealso marker="ssh#start"> ssh:start/0 </seealso> that starts + <seealso marker="ssh#start-0"> ssh:start/0 </seealso> that starts all needed applications (crypto, public_key and ssh). All examples are run in an Erlang shell, or in a bash shell using openssh to illustrate how the erlang ssh application can be used. The @@ -70,7 +70,7 @@ <p> The option system_dir must be a directory containing a host key file and it defaults to /etc/ssh. For details see section Configuration Files in <seealso - marker="ssh_app">ssh(6)</seealso>. + marker="SSH_app">ssh(6)</seealso>. </p> <note><p>Normally the /etc/ssh directory is only readable by root. </p> @@ -137,12 +137,13 @@ <title>One Time Execution</title> <p>In the following example the Erlang shell is the client process - that receives the channel replies. <note> If you run this example + that receives the channel replies. </p> + + <note><p> If you run this example in your environment you may get fewer or more messages back as this depends on the OS and shell on the machine running the ssh daemon. See also <seealso marker="ssh_connection#exec-4">ssh_connection:exec/4</seealso> - </note> - </p> + </p></note> <code type="erl" > 1> ssh:start(). diff --git a/lib/ssh/src/Makefile b/lib/ssh/src/Makefile index 27e43a88ed..93d0b54f57 100644 --- a/lib/ssh/src/Makefile +++ b/lib/ssh/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2004-2012. All Rights Reserved. +# Copyright Ericsson AB 2004-2013. 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 @@ -41,7 +41,7 @@ RELSYSDIR = $(RELEASE_PATH)/lib/ssh-$(VSN) BEHAVIOUR_MODULES= \ ssh_sftpd_file_api \ ssh_channel \ - ssh_subsystem \ + ssh_daemon_channel \ ssh_client_key_api \ ssh_server_key_api diff --git a/lib/ssh/src/ssh.app.src b/lib/ssh/src/ssh.app.src index a0ba7cf7d9..49707f3378 100644 --- a/lib/ssh/src/ssh.app.src +++ b/lib/ssh/src/ssh.app.src @@ -17,6 +17,7 @@ ssh_connection_handler, ssh_connection_manager, ssh_connection_sup, + ssh_daemon_channel, ssh_shell, sshc_sup, sshd_sup, @@ -29,7 +30,6 @@ ssh_sftpd, ssh_sftpd_file, ssh_sftpd_file_api, - ssh_subsystem, ssh_subsystem_sup, ssh_sup, ssh_system_sup, diff --git a/lib/ssh/src/ssh.appup.src b/lib/ssh/src/ssh.appup.src index cbd8166bb9..5ba3742de7 100644 --- a/lib/ssh/src/ssh.appup.src +++ b/lib/ssh/src/ssh.appup.src @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/ssh/src/ssh.erl b/lib/ssh/src/ssh.erl index 193f877b98..3a7aa79d16 100644 --- a/lib/ssh/src/ssh.erl +++ b/lib/ssh/src/ssh.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/ssh/src/ssh_channel.erl b/lib/ssh/src/ssh_channel.erl index 4e8f8538c2..062ed764ca 100644 --- a/lib/ssh/src/ssh_channel.erl +++ b/lib/ssh/src/ssh_channel.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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,10 +48,7 @@ {ok, NewState :: term()} | {error, Reason :: term()}. -callback handle_msg(Msg ::term(), State :: term()) -> - {noreply, NewState :: term()} | - {noreply, NewState :: term(), timeout() | hibernate} | - {stop, Reason :: term(), NewState :: term()}. - + {ok, State::term()} | {stop, ChannelId::integer(), State::term()}. -callback handle_ssh_msg({ssh_cm, ConnectionRef::term(), SshMsg::term()}, State::term()) -> {ok, State::term()} | diff --git a/lib/ssh/src/ssh_cli.erl b/lib/ssh/src/ssh_cli.erl index c8c610f8ef..7232cc482c 100644 --- a/lib/ssh/src/ssh_cli.erl +++ b/lib/ssh/src/ssh_cli.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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 @@ -module(ssh_cli). --behaviour(ssh_channel). +-behaviour(ssh_daemon_channel). -include("ssh.hrl"). -include("ssh_connect.hrl"). diff --git a/lib/ssh/src/ssh_client_key_api.erl b/lib/ssh/src/ssh_client_key_api.erl index 58054a9fc5..a17c7cbc77 100644 --- a/lib/ssh/src/ssh_client_key_api.erl +++ b/lib/ssh/src/ssh_client_key_api.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2011-2012. All Rights Reserved. +%% Copyright Ericsson AB 2011-2013. 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/ssh/src/ssh_connection_handler.erl b/lib/ssh/src/ssh_connection_handler.erl index 9378686242..787d82c4db 100644 --- a/lib/ssh/src/ssh_connection_handler.erl +++ b/lib/ssh/src/ssh_connection_handler.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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/ssh/src/ssh_subsystem.erl b/lib/ssh/src/ssh_daemon_channel.erl index 5a9fa32668..ab3efbcaff 100644 --- a/lib/ssh/src/ssh_subsystem.erl +++ b/lib/ssh/src/ssh_daemon_channel.erl @@ -1,4 +1,28 @@ --module(ssh_subsystem). +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2013. 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% +%% + +%% +%% Description: a gen_server implementing a simple +%% terminal (using the group module) for a CLI +%% over SSH + +-module(ssh_daemon_channel). %% API to special server side channel that can be pluged into the erlang ssh daemeon -callback init(Args :: term()) -> @@ -11,10 +35,7 @@ term(). -callback handle_msg(Msg ::term(), State :: term()) -> - {noreply, NewState :: term()} | - {noreply, NewState :: term(), timeout() | hibernate} | - {stop, Reason :: term(), NewState :: term()}. - + {ok, State::term()} | {stop, ChannelId::integer(), State::term()}. -callback handle_ssh_msg({ssh_cm, ConnectionRef::term(), SshMsg::term()}, State::term()) -> {ok, State::term()} | {stop, ChannelId::integer(), diff --git a/lib/ssh/src/ssh_sftp.erl b/lib/ssh/src/ssh_sftp.erl index f000558100..f3afbe01bf 100644 --- a/lib/ssh/src/ssh_sftp.erl +++ b/lib/ssh/src/ssh_sftp.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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 @@ -47,7 +47,7 @@ recv_window/2, list_dir/3, read_file/3, write_file/4]). %% ssh_channel callbacks --export([init/1, handle_call/3, handle_msg/2, handle_ssh_msg/2, terminate/2]). +-export([init/1, handle_call/3, handle_cast/2, code_change/3, handle_msg/2, handle_ssh_msg/2, terminate/2]). %% TODO: Should be placed elsewhere ssh_sftpd should not call functions in ssh_sftp! -export([info_to_attr/1, attr_to_info/1]). @@ -436,6 +436,12 @@ handle_call({{timeout, Timeout}, Msg}, From, #state{req_id = Id} = State) -> timer:send_after(Timeout, {timeout, Id, From}), do_handle_call(Msg, From, State). +handle_cast(_,State) -> + {noreply, State}. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + do_handle_call({open, Async,FileName,Mode}, From, #state{xf = XF} = State) -> {Access,Flags,Attrs} = open_mode(XF#ssh_xfer.vsn, Mode), ReqID = State#state.req_id, diff --git a/lib/ssh/src/ssh_sftpd.erl b/lib/ssh/src/ssh_sftpd.erl index c7e8373840..3d469d3c6e 100644 --- a/lib/ssh/src/ssh_sftpd.erl +++ b/lib/ssh/src/ssh_sftpd.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2012. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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 @@ -23,8 +23,7 @@ -module(ssh_sftpd). -%%-behaviour(gen_server). --behaviour(ssh_subsystem). +-behaviour(ssh_daemon_channel). -include_lib("kernel/include/file.hrl"). @@ -159,7 +158,7 @@ handle_ssh_msg({ssh_cm, _, {exit_status, ChannelId, Status}}, State) -> {stop, ChannelId, State}. %%-------------------------------------------------------------------- -%% Function: handle_ssh_msg(Args) -> {ok, State} | {stop, ChannelId, State} +%% Function: handle_msg(Args) -> {ok, State} | {stop, ChannelId, State} %% %% Description: Handles other messages %%-------------------------------------------------------------------- diff --git a/lib/ssh/src/ssh_shell.erl b/lib/ssh/src/ssh_shell.erl index 6590486a4c..8031450617 100644 --- a/lib/ssh/src/ssh_shell.erl +++ b/lib/ssh/src/ssh_shell.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2010. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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 @@ -23,7 +23,9 @@ -include("ssh_connect.hrl"). --behaviour(ssh_channel). +%%% As this is an user interactive client it behaves like a daemon +%%% channel inspite of it being a client. +-behaviour(ssh_daemon_channel). %% ssh_channel callbacks -export([init/1, handle_msg/2, handle_ssh_msg/2, terminate/2]). @@ -123,7 +125,7 @@ handle_ssh_msg({ssh_cm, _, {exit_status, ChannelId, Status}}, State) -> {stop, ChannelId, State}. %%-------------------------------------------------------------------- -%% Function: handle_ssh_msg(Args) -> {ok, State} | {stop, ChannelId, State} +%% Function: handle_msg(Args) -> {ok, State} | {stop, ChannelId, State} %% %% Description: Handles other channel messages %%-------------------------------------------------------------------- diff --git a/lib/ssh/src/ssh_xfer.hrl b/lib/ssh/src/ssh_xfer.hrl index 0d85cf2094..8dc9a40f92 100644 --- a/lib/ssh/src/ssh_xfer.hrl +++ b/lib/ssh/src/ssh_xfer.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/ssh/test/ssh_sftpd_erlclient_SUITE_data/ssh_sftpd_file_alt.erl b/lib/ssh/test/ssh_sftpd_erlclient_SUITE_data/ssh_sftpd_file_alt.erl index 9f8a7c496c..8ad383d8c9 100644 --- a/lib/ssh/test/ssh_sftpd_erlclient_SUITE_data/ssh_sftpd_file_alt.erl +++ b/lib/ssh/test/ssh_sftpd_erlclient_SUITE_data/ssh_sftpd_file_alt.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2010. All Rights Reserved. +%% Copyright Ericsson AB 2007-2013. 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/ssl/doc/src/notes.xml b/lib/ssl/doc/src/notes.xml index 73cda03b2f..299850333d 100644 --- a/lib/ssl/doc/src/notes.xml +++ b/lib/ssl/doc/src/notes.xml @@ -26,7 +26,117 @@ </header> <p>This document describes the changes made to the SSL application.</p> - <section><title>SSL 5.1.2</title> + <section><title>SSL 5.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + SSL: TLS 1.2, advertise sha224 support, thanks to Andreas + Schultz.</p> + <p> + Own Id: OTP-10586</p> + </item> + <item> + <p> + If an ssl server is restarted with new options and a + client tries to reuse a session the server must make sure + that it complies to the new options before agreeing to + reuse it.</p> + <p> + Own Id: OTP-10595</p> + </item> + <item> + <p> + Now handles cleaning of CA-certificate database correctly + so that there will be no memory leek, bug was introduced + in ssl- 5.1 when changing implementation to increase + parallel execution.</p> + <p> + Impact: Improved memory usage, especially if you have + many different certificates and upgrade tcp-connections + to TLS-connections.</p> + <p> + Own Id: OTP-10710</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Support Next Protocol Negotiation in TLS, thanks to Ben + Murphy for the contribution.</p> + <p> + Impact: Could give performance benefit if used as it + saves a round trip.</p> + <p> + Own Id: OTP-10361 Aux Id: kunagi-214 [125] </p> + </item> + <item> + <p> + TLS 1.2 will now be the default TLS version if sufficient + crypto support is available otherwise TLS 1.1 will be + default.</p> + <p> + Impact: A default TLS connection will have higher + security and hence it may be perceived as slower then + before.</p> + <p> + Own Id: OTP-10425 Aux Id: kunagi-275 [186] </p> + </item> + <item> + <p> + It is now possible to call controlling_process on a + listen socket, same as in gen_tcp.</p> + <p> + Own Id: OTP-10447</p> + </item> + <item> + <p> + Remove filter mechanisms that made error messages + backwards compatible with old ssl but hid information + about what actually happened.</p> + <p> + This does not break the documented API however other + reason terms may be returned, so code that matches on the + reason part of {error, Reason} may fail.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10451 Aux Id: kunagi-270 [181] </p> + </item> + <item> + <p> + Added missing dependencies to Makefile</p> + <p> + Own Id: OTP-10594</p> + </item> + <item> + <p> + Removed deprecated function ssl:pid/0, it has been + pointless since R14 but has been keep for backwards + compatibility.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10613 Aux Id: kunagi-331 [242] </p> + </item> + <item> + <p> + Refactor to simplify addition of key exchange methods, + thanks to Andreas Schultz.</p> + <p> + Own Id: OTP-10709</p> + </item> + </list> + </section> + +</section> + +<section><title>SSL 5.1.2</title> <section><title>Fixed Bugs and Malfunctions</title> <list> diff --git a/lib/ssl/doc/src/ssl_app.xml b/lib/ssl/doc/src/ssl_app.xml index 178bbcaebb..84ad483617 100644 --- a/lib/ssl/doc/src/ssl_app.xml +++ b/lib/ssl/doc/src/ssl_app.xml @@ -4,7 +4,7 @@ <appref> <header> <copyright> - <year>1999</year><year>2010</year> + <year>1999</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/ssl/test/erl_make_certs.erl b/lib/ssl/test/erl_make_certs.erl index d6bdd05d01..5b92e551a5 100644 --- a/lib/ssl/test/erl_make_certs.erl +++ b/lib/ssl/test/erl_make_certs.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2011. All Rights Reserved. +%% Copyright Ericsson AB 2011-2013. 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/stdlib/doc/src/base64.xml b/lib/stdlib/doc/src/base64.xml index e4ce841a8a..f90a82187d 100644 --- a/lib/stdlib/doc/src/base64.xml +++ b/lib/stdlib/doc/src/base64.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2007</year><year>2011</year> + <year>2007</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/stdlib/doc/src/ets.xml b/lib/stdlib/doc/src/ets.xml index abaf64fb91..44c050a0d3 100644 --- a/lib/stdlib/doc/src/ets.xml +++ b/lib/stdlib/doc/src/ets.xml @@ -932,7 +932,8 @@ ets:select(Table,MatchSpec),</code> If set to <c>true</c>, the table is optimized towards concurrent write access. Different objects of the same table can be mutated (and read) by concurrent processes. This is achieved to some degree - at the expense of sequential access and concurrent reader performance. + at the expense of memory consumption and the performance of + sequential access and concurrent reading. The <c>write_concurrency</c> option can be combined with the <seealso marker="#new_2_read_concurrency">read_concurrency</seealso> option. You typically want to combine these when large concurrent @@ -944,8 +945,11 @@ ets:select(Table,MatchSpec),</code> <seealso marker="#concurrency">atomicy and isolation</seealso>. Functions that makes such promises over several objects (like <c>insert/2</c>) will gain less (or nothing) from this option.</p> - <p>Table type <c>ordered_set</c> is not affected by this option in current - implementation.</p> + <p>In current implementation, table type <c>ordered_set</c> is not + affected by this option. Also, the memory consumption inflicted by + both <c>write_concurrency</c> and <c>read_concurrency</c> is a + constant overhead per table. This overhead can be especially large + when both options are combined.</p> </item> <item> <marker id="new_2_read_concurrency"></marker> diff --git a/lib/stdlib/doc/src/filelib.xml b/lib/stdlib/doc/src/filelib.xml index cec20aee8e..ac67596f3c 100644 --- a/lib/stdlib/doc/src/filelib.xml +++ b/lib/stdlib/doc/src/filelib.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2003</year><year>2011</year> + <year>2003</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml index 2a308cbe09..13575588fd 100644 --- a/lib/stdlib/doc/src/notes.xml +++ b/lib/stdlib/doc/src/notes.xml @@ -30,6 +30,212 @@ </header> <p>This document describes the changes made to the STDLIB application.</p> +<section><title>STDLIB 1.19</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Wildcards such as "some/path/*" passed to + <c>filelib:wildcard/2</c> would fail to match any file. + (Thanks to Samuel Rivas for reporting this bug.)</p> + <p> + Own Id: OTP-6874 Aux Id: kunagi-190 [101] </p> + </item> + <item> + <p> + Fixed error handling in proc_lib:start which could hang + if the spawned process died in init.</p> + <p> + Own Id: OTP-9803 Aux Id: kunagi-209 [120] </p> + </item> + <item> + <p> + Allow ** in filelib:wildcard</p> + <p> + Two adjacent * used as a single pattern will match all + files and zero or more directories and subdirectories. + (Thanks to Jos� Valim)</p> + <p> + Own Id: OTP-10431</p> + </item> + <item> + <p> + Add the \gN and \g{N} syntax for back references in + re:replace/3,4 to allow use with numeric replacement + strings. (Thanks to Vance Shipley)</p> + <p> + Own Id: OTP-10455</p> + </item> + <item> + <p> + Export ets:match_pattern/0 type (Thanks to Joseph Wayne + Norton)</p> + <p> + Own Id: OTP-10472</p> + </item> + <item> + <p> + Fix printing the empty binary at depth 1 with ~W (Thanks + to Andrew Thompson)</p> + <p> + Own Id: OTP-10504</p> + </item> + <item> + <p> The type <c>ascii_string()</c> in the <c>base64</c> + module has been corrected. The type + <c>file:file_info()</c> has been cleaned up. The type + <c>file:fd()</c> has been made opaque in the + documentation. </p> + <p> + Own Id: OTP-10624 Aux Id: kunagi-352 [263] </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Dets tables are no longer fixed while traversing with + a bound key (when only the objects with the right key are + matched). This optimization affects the functions + <c>match/2</c>, <c>match_object/2</c>, <c>select/2</c>, + <c>match_delete/2</c>, and <c>select_delete/2</c>. </p> + <p> + Own Id: OTP-10097</p> + </item> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p> The linter now warns for opaque types that are not + exported, as well as for under-specified opaque types. + </p> + <p> + Own Id: OTP-10436</p> + </item> + <item> + <p> The type <c>file:name()</c> has been substituted for + the type <c>file:filename()</c> in the following + functions in the <c>filename</c> module: + <c>absname/2</c>, <c>absname_join/2</c>, <c>join/1,2</c>, + and <c>split/1</c>. </p> + <p> + Own Id: OTP-10474</p> + </item> + <item> + <p> + If a child process fails in its start function, then the + error reason was earlier only reported as an error report + from the error_handler, and supervisor:start_link would + only return <c>{error,shutdown}</c>. This has been + changed so the supervisor will now return + <c>{error,{shutdown,Reason}}</c>, where <c>Reason</c> + identifies the failing child and its error reason. + (Thanks to Tomas Pihl)</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10490</p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> The contracts and types of the modules + <c>erl_scan</c> and <c>sys</c> have been corrected and + improved. (Thanks to Kostis Sagonas.) </p> + <p> + Own Id: OTP-10658</p> + </item> + <item> + <p> The Erlang shell now skips the rest of the line when + it encounters an Erlang scanner error. </p> + <p> + Own Id: OTP-10659</p> + </item> + <item> + <p> + Clean up some specs in the proplists module. (Thanks to + Kostis Sagonas.)</p> + <p> + Own Id: OTP-10663</p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + <item> + <p> + Enable escript to accept emulator arguments when script + file has no shebang. Thanks to Magnus Henoch</p> + <p> + Own Id: OTP-10691</p> + </item> + <item> + <p> + Fix bug in queue:out/1, queue:out_r/1 that makes it + O(N^2) in worst case. Thanks to Aleksandr Erofeev.</p> + <p> + Own Id: OTP-10722</p> + </item> + <item> + <p> There are new functions in the <c>epp</c> module + which read the character encoding from files. See + <c>epp(3)</c> for more information. </p> + <p> + Own Id: OTP-10742 Aux Id: OTP-10302 </p> + </item> + <item> + <p> The functions in <c>io_lib</c> have been adjusted for + Unicode. The existing functions <c>write_string()</c> and + so on now take Unicode strings, while the old behavior + has been taken over by new functions + <c>write_latin1_string()</c> and so on. There are also + new functions to write Unicode strings as Latin-1 + strings, mainly targetted towards the Erlang pretty + printer (<c>erl_pp</c>). </p> + <p> + Own Id: OTP-10745 Aux Id: OTP-10302 </p> + </item> + <item> + <p> The new functions <c>proc_lib:format/2</c> and + <c>erl_parse:abstract/2</c> accept an encoding as second + argument. </p> + <p> + Own Id: OTP-10749 Aux Id: OTP-10302 </p> + </item> + <item> + <p> + Increased potential concurrency in ETS for + <c>write_concurrency</c> option. The number of internal + table locks has increased from 16 to 64. This makes it + four times less likely that two concurrent processes + writing to the same table would collide and thereby + serialized. The cost is an increased constant memory + footprint for tables using write_concurrency. The memory + consumption per inserted record is not affected. The + increased footprint can be particularly large if + <c>write_concurrency</c> is combined with + <c>read_concurrency</c>.</p> + <p> + Own Id: OTP-10787</p> + </item> + </list> + </section> + +</section> + <section><title>STDLIB 1.18.3</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/stdlib/doc/src/proplists.xml b/lib/stdlib/doc/src/proplists.xml index 8d64319344..a0063a58d3 100644 --- a/lib/stdlib/doc/src/proplists.xml +++ b/lib/stdlib/doc/src/proplists.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2002</year><year>2011</year> + <year>2002</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/stdlib/doc/src/zip.xml b/lib/stdlib/doc/src/zip.xml index 61f49f5940..484bf0e080 100644 --- a/lib/stdlib/doc/src/zip.xml +++ b/lib/stdlib/doc/src/zip.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2006</year><year>2011</year> + <year>2006</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/stdlib/src/Makefile b/lib/stdlib/src/Makefile index 30bff3bf96..f3387d669b 100644 --- a/lib/stdlib/src/Makefile +++ b/lib/stdlib/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/stdlib/src/beam_lib.erl b/lib/stdlib/src/beam_lib.erl index 742fda0815..fe7e0f8e60 100644 --- a/lib/stdlib/src/beam_lib.erl +++ b/lib/stdlib/src/beam_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2011. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/stdlib/src/c.erl b/lib/stdlib/src/c.erl index 7ef2334106..535f2d5174 100644 --- a/lib/stdlib/src/c.erl +++ b/lib/stdlib/src/c.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/src/dets.erl b/lib/stdlib/src/dets.erl index 285a7bf587..ecb509f4b5 100644 --- a/lib/stdlib/src/dets.erl +++ b/lib/stdlib/src/dets.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/src/dets_utils.erl b/lib/stdlib/src/dets_utils.erl index aab7f934c3..7bbb34dd15 100644 --- a/lib/stdlib/src/dets_utils.erl +++ b/lib/stdlib/src/dets_utils.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2009. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/stdlib/src/dets_v8.erl b/lib/stdlib/src/dets_v8.erl index 44829211f7..24d6e06ec8 100644 --- a/lib/stdlib/src/dets_v8.erl +++ b/lib/stdlib/src/dets_v8.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2011. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/stdlib/src/dets_v9.erl b/lib/stdlib/src/dets_v9.erl index 6d44c3924e..308f81c23b 100644 --- a/lib/stdlib/src/dets_v9.erl +++ b/lib/stdlib/src/dets_v9.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2011. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/stdlib/src/erl_compile.erl b/lib/stdlib/src/erl_compile.erl index ec106ecc9d..8c3d59467b 100644 --- a/lib/stdlib/src/erl_compile.erl +++ b/lib/stdlib/src/erl_compile.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/stdlib/src/erl_eval.erl b/lib/stdlib/src/erl_eval.erl index 8471ae6b64..1c3f91cbfc 100644 --- a/lib/stdlib/src/erl_eval.erl +++ b/lib/stdlib/src/erl_eval.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/src/erl_internal.erl b/lib/stdlib/src/erl_internal.erl index bf2fffbd97..254384e877 100644 --- a/lib/stdlib/src/erl_internal.erl +++ b/lib/stdlib/src/erl_internal.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2012. All Rights Reserved. +%% Copyright Ericsson AB 1998-2013. 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/stdlib/src/erl_lint.erl b/lib/stdlib/src/erl_lint.erl index dd5480838f..deae9640f5 100644 --- a/lib/stdlib/src/erl_lint.erl +++ b/lib/stdlib/src/erl_lint.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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 @@ -136,8 +136,6 @@ value_option(Flag, Default, On, OnVal, Off, OffVal, Opts) -> format_error(undefined_module) -> "no module definition"; -format_error({bad_module_name, M}) -> - io_lib:format("bad module name '~s'", [M]); format_error(redefine_module) -> "redefining module"; format_error(pmod_unsupported) -> @@ -238,8 +236,6 @@ format_error({illegal_guard_local_call, {F,A}}) -> io_lib:format("call to local/imported function ~w/~w is illegal in guard", [F,A]); format_error(illegal_guard_expr) -> "illegal guard expression"; -format_error(deprecated_tuple_fun) -> - "tuple funs are deprecated and will be removed in R16"; %% --- exports --- format_error({explicit_export,F,A}) -> io_lib:format("in this release, the call to ~w/~w must be written " diff --git a/lib/stdlib/src/erl_tar.erl b/lib/stdlib/src/erl_tar.erl index 9d32e0ad8b..4b654833ed 100644 --- a/lib/stdlib/src/erl_tar.erl +++ b/lib/stdlib/src/erl_tar.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2011. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/stdlib/src/escript.erl b/lib/stdlib/src/escript.erl index cab5973d0c..32742e419b 100644 --- a/lib/stdlib/src/escript.erl +++ b/lib/stdlib/src/escript.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2012. All Rights Reserved. +%% Copyright Ericsson AB 2007-2013. 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/stdlib/src/ets.erl b/lib/stdlib/src/ets.erl index 06f21c1d2c..77c8029f59 100644 --- a/lib/stdlib/src/ets.erl +++ b/lib/stdlib/src/ets.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/src/file_sorter.erl b/lib/stdlib/src/file_sorter.erl index 83782834cc..2bf88959b7 100644 --- a/lib/stdlib/src/file_sorter.erl +++ b/lib/stdlib/src/file_sorter.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2011. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/stdlib/src/ms_transform.erl b/lib/stdlib/src/ms_transform.erl index 4868024eed..4e2ce39ec2 100644 --- a/lib/stdlib/src/ms_transform.erl +++ b/lib/stdlib/src/ms_transform.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2011. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/stdlib/src/proplists.erl b/lib/stdlib/src/proplists.erl index 204f8e128c..634724019f 100644 --- a/lib/stdlib/src/proplists.erl +++ b/lib/stdlib/src/proplists.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2011. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. 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/stdlib/src/qlc.erl b/lib/stdlib/src/qlc.erl index 9351674e00..6a27cff589 100644 --- a/lib/stdlib/src/qlc.erl +++ b/lib/stdlib/src/qlc.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/stdlib/src/qlc_pt.erl b/lib/stdlib/src/qlc_pt.erl index 0744a5ffb9..26bc4d1bdf 100644 --- a/lib/stdlib/src/qlc_pt.erl +++ b/lib/stdlib/src/qlc_pt.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2012. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/stdlib/src/queue.erl b/lib/stdlib/src/queue.erl index bc1bd06534..4bbf5de8a5 100644 --- a/lib/stdlib/src/queue.erl +++ b/lib/stdlib/src/queue.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl index bb90353e76..203d2a4f76 100644 --- a/lib/stdlib/src/shell.erl +++ b/lib/stdlib/src/shell.erl @@ -836,16 +836,6 @@ not_restricted(h, []) -> true; not_restricted(b, []) -> true; -not_restricted(which, [_]) -> - true; -not_restricted(import, [_]) -> - true; -not_restricted(import_all, [_]) -> - true; -not_restricted(use, [_]) -> - true; -not_restricted(use_all, [_]) -> - true; not_restricted(history, [_]) -> true; not_restricted(results, [_]) -> @@ -1005,15 +995,6 @@ local_func(rr, [_,_]=As0, Bs0, _Shell, RT, Lf, Ef) -> local_func(rr, [_,_,_]=As0, Bs0, _Shell, RT, Lf, Ef) -> {[File,Sel,Options],Bs} = expr_list(As0, Bs0, Lf, Ef), {value,read_and_add_records(File, Sel, Options, Bs, RT),Bs}; -local_func(which, [{atom,_,M}], Bs, _Shell, _RT, _Lf, _Ef) -> - case erl_eval:binding({module,M}, Bs) of - {value, M1} -> - {value,M1,Bs}; - unbound -> - {value,M,Bs} - end; -local_func(which, [_Other], _Bs, _Shell, _RT, _Lf, _Ef) -> - erlang:raise(error, function_clause, [{shell,which,1}]); local_func(history, [{integer,_,N}], Bs, _Shell, _RT, _Lf, _Ef) -> {value,history(N),Bs}; local_func(history, [_Other], _Bs, _Shell, _RT, _Lf, _Ef) -> @@ -1149,18 +1130,13 @@ listify(E) -> [E]. check_command(Es, Bs) -> - erl_eval:check_command(Es, strip_bindings(Bs)). + erl_eval:check_command(Es, Bs). expr(E, Bs, Lf, Ef) -> - erl_eval:expr(E, strip_bindings(Bs), Lf, Ef). + erl_eval:expr(E, Bs, Lf, Ef). expr_list(Es, Bs, Lf, Ef) -> - erl_eval:expr_list(Es, strip_bindings(Bs), Lf, Ef). - --spec strip_bindings(erl_eval:binding_struct()) -> erl_eval:binding_struct(). - -strip_bindings(Bs) -> - Bs -- [B || {{module,_},_}=B <- Bs]. + erl_eval:expr_list(Es, Bs, Lf, Ef). %% Note that a sequence number is used here to make sure that if a %% record is used by another record, then the first record is parsed @@ -1321,9 +1297,6 @@ list_commands([_D|Ds], RT) -> list_commands(Ds, RT); list_commands([], _RT) -> ok. -list_bindings([{{module,M},Val}|Bs], RT) -> - io:fwrite(<<"~w is ~w\n">>, [M,Val]), - list_bindings(Bs, RT); list_bindings([{Name,Val}|Bs], RT) -> case erl_eval:fun_data(Val) of {fun_data,_FBs,FCs0} -> diff --git a/lib/stdlib/src/slave.erl b/lib/stdlib/src/slave.erl index 317d06a44b..9c74041f56 100644 --- a/lib/stdlib/src/slave.erl +++ b/lib/stdlib/src/slave.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/src/string.erl b/lib/stdlib/src/string.erl index aeaf9cb5c1..4ed27ff4eb 100644 --- a/lib/stdlib/src/string.erl +++ b/lib/stdlib/src/string.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/src/zip.erl b/lib/stdlib/src/zip.erl index 489406c023..c40ce8e203 100644 --- a/lib/stdlib/src/zip.erl +++ b/lib/stdlib/src/zip.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2012. All Rights Reserved. +%% Copyright Ericsson AB 2006-2013. 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/stdlib/test/dict_SUITE.erl b/lib/stdlib/test/dict_SUITE.erl index df9c769c67..0223240479 100644 --- a/lib/stdlib/test/dict_SUITE.erl +++ b/lib/stdlib/test/dict_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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/stdlib/test/dict_test_lib.erl b/lib/stdlib/test/dict_test_lib.erl index 7167014310..e308fd0721 100644 --- a/lib/stdlib/test/dict_test_lib.erl +++ b/lib/stdlib/test/dict_test_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2010. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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/stdlib/test/escript_SUITE.erl b/lib/stdlib/test/escript_SUITE.erl index 3749d594f2..be8fb1b37a 100644 --- a/lib/stdlib/test/escript_SUITE.erl +++ b/lib/stdlib/test/escript_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2012. All Rights Reserved. +%% Copyright Ericsson AB 2007-2013. 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/stdlib/test/filelib_SUITE.erl b/lib/stdlib/test/filelib_SUITE.erl index 1fd7518519..27078f0914 100644 --- a/lib/stdlib/test/filelib_SUITE.erl +++ b/lib/stdlib/test/filelib_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/stdlib/test/gen_fsm_SUITE.erl b/lib/stdlib/test/gen_fsm_SUITE.erl index 22f66a6c14..a637a8543b 100644 --- a/lib/stdlib/test/gen_fsm_SUITE.erl +++ b/lib/stdlib/test/gen_fsm_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/test/sets_SUITE.erl b/lib/stdlib/test/sets_SUITE.erl index e2bcdd18ce..c0cf1fc7e8 100644 --- a/lib/stdlib/test/sets_SUITE.erl +++ b/lib/stdlib/test/sets_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2011. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/stdlib/test/sets_test_lib.erl b/lib/stdlib/test/sets_test_lib.erl index fd4ec2bac3..86f009a8f9 100644 --- a/lib/stdlib/test/sets_test_lib.erl +++ b/lib/stdlib/test/sets_test_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2010. All Rights Reserved. +%% Copyright Ericsson AB 2004-2013. 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/stdlib/test/sys_SUITE.erl b/lib/stdlib/test/sys_SUITE.erl index b2e1d12b2a..c06ba545e7 100644 --- a/lib/stdlib/test/sys_SUITE.erl +++ b/lib/stdlib/test/sys_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/test/timer_SUITE.erl b/lib/stdlib/test/timer_SUITE.erl index 1110891ab8..bea2b3fb2a 100644 --- a/lib/stdlib/test/timer_SUITE.erl +++ b/lib/stdlib/test/timer_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/stdlib/vsn.mk b/lib/stdlib/vsn.mk index 33d7a57cc3..c1467697e3 100644 --- a/lib/stdlib/vsn.mk +++ b/lib/stdlib/vsn.mk @@ -1 +1 @@ -STDLIB_VSN = 1.19 +STDLIB_VSN = 1.19.1 diff --git a/lib/syntax_tools/doc/src/notes.xml b/lib/syntax_tools/doc/src/notes.xml index fdfa414ad2..f5afcfa413 100644 --- a/lib/syntax_tools/doc/src/notes.xml +++ b/lib/syntax_tools/doc/src/notes.xml @@ -31,6 +31,20 @@ <p>This document describes the changes made to the Syntax_Tools application.</p> +<section><title>Syntax_Tools 1.6.10</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + </list> + </section> + +</section> + <section><title>Syntax_Tools 1.6.9</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/syntax_tools/vsn.mk b/lib/syntax_tools/vsn.mk index 8f774c5d75..7fcd22e455 100644 --- a/lib/syntax_tools/vsn.mk +++ b/lib/syntax_tools/vsn.mk @@ -1 +1 @@ -SYNTAX_TOOLS_VSN = 1.6.9 +SYNTAX_TOOLS_VSN = 1.6.10 diff --git a/lib/test_server/doc/src/notes.xml b/lib/test_server/doc/src/notes.xml index 6a9add044a..59fb789e35 100644 --- a/lib/test_server/doc/src/notes.xml +++ b/lib/test_server/doc/src/notes.xml @@ -32,6 +32,152 @@ <file>notes.xml</file> </header> +<section><title>Test_Server 3.6</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Line numbering of erlang files that were not correctly + indented could be wrong after coverting to html with + erl2html2:convert/[2,3] (the source code pointed to from + the test case). This has been corrected.</p> + <p> + Also, there are now link targets for each line and not + only for each 10th line, and link targets for functions + now include the arity and not only the function name + (e.g. func/1 has a link target "func-1").</p> + <p> + Own Id: OTP-9710 Aux Id: seq11945, kunagi-201 [112] </p> + </item> + <item> + <p> + Severe errors detected by <c>test_server</c> (e.g. if log + files directories cannot be created) will now be reported + to <c>common_test</c> and noted in the <c>common_test</c> + logs.</p> + <p> + Own Id: OTP-9769 Aux Id: kunagi-202 [113] </p> + </item> + <item> + <p> + The earlier undocumented cross cover feature for + accumulating cover data over multiple tests has now been + fixed and documented.</p> + <p> + Own Id: OTP-9870 Aux Id: kunagi-206 [117] </p> + </item> + <item> + <p> + If the test suite itself was included in code coverage + analysis, then the test_server would not manage to set + data_dir correctly for the test. This has been corrected.</p> + <p> + Own Id: OTP-9956 Aux Id: kunagi-207 [118] </p> + </item> + <item> + <p> + Any call to test_server:break/1 should cancel all active + timetramps. However, in some cases + Suite:end_per_testcase/2 is executed on a different + process than the test case itself, and if + test_server:break/1 was called from there, the timetraps + were not cancelled. This has been corrected.</p> + <p> + Own Id: OTP-10046 Aux Id: kunagi-174 [85] </p> + </item> + <item> + <p>When a test case failed because of a timetrap time + out, the <c>Config</c> data for the case was lost in the + following call to <c>end_per_testcase/2</c>, and also in + calls to the CT Hook function + <c>post_end_per_testcase/4</c>. This problem has been + solved and the <c>Config</c> data is now correctly passed + to the above functions after a timetrap timeout + failure.</p> + <p> + Own Id: OTP-10070 Aux Id: kunagi-175 [86] </p> + </item> + <item> + <p>In test_server, the same process would supervise the + currently running test case and be group leader (and IO + server) for the test case. Furthermore, when running + parallel test cases, new temporary supervisor/group + leader processes were spawned and the process that was + group leader for sequential test cases would not be + active. That would lead to several problems:</p> + <p>* Processes started by init_per_suite will inherit the + group leader of the init_per_suite process (and that + group leader would not process IO requests when parallel + test cases was running). If later a parallel test case + caused such a processto print using (for example) + io:format/2, the calling would hang.</p> + <p>* Similarly, if a process was spawned from a parallel + test case, it would inherit the temporary group leader + for that parallel test case. If that spawned process + later - when the group of parallel tests have finished - + attempted to print something, its group leader would be + dead and there would be <c>badarg</c> exception.</p> + <p>Those problems have been solved by having group + leaders separate from the processes that supervises the + test cases, and keeping temporary group leader process + for parallel test cases alive until no more process in + the system use them as group leaders.</p> + <p>Also, a new <c>unexpected_io.log</c> log file + (reachable from the summary page of each test suite) has + been introduced. All unexpected IO will be printed into + it(for example, IO to a group leader for a parallel test + case that has finished).</p> + <p> + Own Id: OTP-10101 Aux Id: OTP-10125 </p> + </item> + <item> + <p> + The stability of <c>common_test</c> and + <c>test_server</c> when running test cases in parallel + has been improved.</p> + <p> + Own Id: OTP-10480 Aux Id: kunagi-318 [229] </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Added a general framework for executing benchmarks of + Erlang/OTP. Benchmarks for the Erlang VM and mnesia have + been incorporated in the framework. </p> + <p> + For details about how to add more benchmarks see + $ERL_TOP/HOWTO/BENCHMARKS.md in the source distribution.</p> + <p> + Own Id: OTP-10156</p> + </item> + <item> + <p> + Update common test modules to handle unicode <list> + <item> Use UTF-8 encoding for all HTML files, except the + HTML version of the test suite generated with + erl2html2:convert, which will have the same encoding as + the original test suite (.erl) file. </item> <item> + Encode link targets in HTML files with + test_server_ctrl:uri_encode/1. </item> <item> Use unicode + modifier 't' with ~s when appropriate. </item> <item> Use + unicode:characters_to_list and + unicode:characters_to_binary for conversion between + binaries and strings instead of binary_to_list and + list_to_binary. </item> </list></p> + <p> + Own Id: OTP-10783</p> + </item> + </list> + </section> + +</section> + <section><title>Test_Server 3.5.3</title> <section><title>Improvements and New Features</title> diff --git a/lib/test_server/src/Makefile b/lib/test_server/src/Makefile index 7251acd20b..ebc5f5b71b 100644 --- a/lib/test_server/src/Makefile +++ b/lib/test_server/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/test_server/src/erl2html2.erl b/lib/test_server/src/erl2html2.erl index 1729257809..9c0ca64173 100644 --- a/lib/test_server/src/erl2html2.erl +++ b/lib/test_server/src/erl2html2.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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,16 +34,17 @@ convert(File, Dest) -> %% %% FIXME: The colours should *really* be set with %% stylesheets... + %% + %% The html file is written with the same encoding as the input file. Encoding = encoding(File), Header = ["<!DOCTYPE HTML PUBLIC " "\"-//W3C//DTD HTML 3.2 Final//EN\">\n" - "<!-- autogenerated by '"++atom_to_list(?MODULE)++"'. -->\n" + "<!-- autogenerated by '",atom_to_list(?MODULE),"'. -->\n" "<html>\n" "<head>\n" "<meta http-equiv=\"Content-Type\" content=\"text/html;" - "charset=", - Encoding,"\"/>\n" - "<title>", File, "</title>\n" + "charset=",html_encoding(Encoding),"\"/>\n" + "<title>", to_raw_list(File,Encoding), "</title>\n" "</head>\n\n" "<body bgcolor=\"white\" text=\"black\"" " link=\"blue\" vlink=\"purple\" alink=\"red\">\n"], @@ -61,7 +62,7 @@ convert(File, Dest, Header) -> case file:open(Dest,[write,raw]) of {ok,DFd} -> file:write(DFd,[Header,"<pre>\n"]), - _Lines = build_html(SFd,DFd,Functions), + _Lines = build_html(SFd,DFd,encoding(File),Functions), file:write(DFd,["</pre>\n",footer(), "</body>\n</html>\n"]), %% {_, Time2} = statistics(runtime), @@ -121,21 +122,21 @@ parse_file(Epp,File,InCorrectFile) -> %%%----------------------------------------------------------------- %%% Add a link target for each line and one for each function definition. -build_html(SFd,DFd,Functions) -> - build_html(SFd,DFd,file:read_line(SFd),1,Functions,false). +build_html(SFd,DFd,Encoding,Functions) -> + build_html(SFd,DFd,Encoding,file:read_line(SFd),1,Functions,false). -build_html(SFd,DFd,{ok,Str},L,[{F,A,L}|Functions],_IsFuncDef) -> +build_html(SFd,DFd,Encoding,{ok,Str},L,[{F,A,L}|Functions],_IsFuncDef) -> FALink = http_uri:encode(F++"-"++integer_to_list(A)), - file:write(DFd,["<a name=\"",FALink,"\"/>"]), - build_html(SFd,DFd,{ok,Str},L,Functions,true); -build_html(SFd,DFd,{ok,Str},L,[{clause,L}|Functions],_IsFuncDef) -> - build_html(SFd,DFd,{ok,Str},L,Functions,true); -build_html(SFd,DFd,{ok,Str},L,Functions,IsFuncDef) -> + file:write(DFd,["<a name=\"",to_raw_list(FALink,Encoding),"\"/>"]), + build_html(SFd,DFd,Encoding,{ok,Str},L,Functions,true); +build_html(SFd,DFd,Encoding,{ok,Str},L,[{clause,L}|Functions],_IsFuncDef) -> + build_html(SFd,DFd,Encoding,{ok,Str},L,Functions,true); +build_html(SFd,DFd,Encoding,{ok,Str},L,Functions,IsFuncDef) -> LStr = line_number(L), Str1 = line(Str,IsFuncDef), file:write(DFd,[LStr,Str1]), - build_html(SFd,DFd,file:read_line(SFd),L+1,Functions,false); -build_html(_SFd,_DFd,eof,L,_Functions,_IsFuncDef) -> + build_html(SFd,DFd,Encoding,file:read_line(SFd),L+1,Functions,false); +build_html(_SFd,_DFd,_Encoding,eof,L,_Functions,_IsFuncDef) -> L. line_number(L) -> @@ -190,16 +191,35 @@ footer() -> %%%----------------------------------------------------------------- %%% Read encoding from source file encoding(File) -> - Encoding = - case epp:read_encoding(File) of - none -> - epp:default_encoding(); - E -> - E - end, - html_encoding(Encoding). + case epp:read_encoding(File) of + none -> + epp:default_encoding(); + E -> + E + end. +%%%----------------------------------------------------------------- +%%% Covert encoding atom to string for use in HTML header html_encoding(latin1) -> "iso-8859-1"; html_encoding(utf8) -> "utf-8". + +%%%----------------------------------------------------------------- +%%% Convert a string to a list of raw printable characters in the +%%% given encoding. This is necessary since the files (source and +%%% destination) are both opened in raw mode (default encoding). Byte +%%% by byte is read from source and written to the destination. This +%%% conversion is needed when printing data that is not first read +%%% from the source. +%%% +%%% Example: if the encoding of the file is utf8, and we have a string +%%% containing "�" = [229], then we need to convert this to [195,165] +%%% before writing. Note that this conversion is only necessary +%%% because the destination file is not (necessarily) opened with utf8 +%%% encoding - it is opened with default encoding in order to allow +%%% raw file mode and byte by byte copying from source. +to_raw_list(X,latin1) when is_list(X) -> + X; +to_raw_list(X,utf8) when is_list(X) -> + binary_to_list(unicode:characters_to_binary(X)). diff --git a/lib/test_server/src/test_server.app.src b/lib/test_server/src/test_server.app.src index 26330f9695..163f370a47 100644 --- a/lib/test_server/src/test_server.app.src +++ b/lib/test_server/src/test_server.app.src @@ -1,7 +1,7 @@ % This is an -*- erlang -*- file. %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/test_server/src/test_server.erl b/lib/test_server/src/test_server.erl index 37cd8fac99..43330d2c91 100644 --- a/lib/test_server/src/test_server.erl +++ b/lib/test_server/src/test_server.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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 @@ -123,7 +123,7 @@ cover_compile({App,all,Include,Cross}) -> io:format("\nWARNING: All modules in \'~w\' are excluded\n" "Only cover compiling modules in include list " "and the modules\nin the cross cover file:\n" - "~p\n", [App,CompileMods]), + "~tp\n", [App,CompileMods]), do_cover_compile(CompileMods), io:fwrite("done\n\n",[]), {ok,Include} @@ -143,7 +143,7 @@ cover_compile({App,Exclude,Include,Cross}) -> [App,length(CompileMods)]), io:format("\nWARNING: Can't find lib_dir for \'~w\'\n" "Only cover compiling modules in include list: " - "~p\n", [App,Include]), + "~tp\n", [App,Include]), do_cover_compile(CompileMods), io:fwrite("done\n\n",[]), {ok,Include} @@ -186,7 +186,7 @@ do_cover_compile1([M|Rest]) -> {ok,_} -> ok; Error -> - io:fwrite("\nWARNING: Could not cover compile ~w: ~p\n", + io:fwrite("\nWARNING: Could not cover compile ~w: ~tp\n", [M,Error]) end, code:stick_mod(M), @@ -196,7 +196,7 @@ do_cover_compile1([M|Rest]) -> {module,_} -> do_cover_compile1([M|Rest]); Error -> - io:fwrite("\nWARNING: Could not load ~w: ~p\n",[M,Error]), + io:fwrite("\nWARNING: Could not load ~w: ~tp\n",[M,Error]), do_cover_compile1(Rest) end; {false,_} -> @@ -204,7 +204,7 @@ do_cover_compile1([M|Rest]) -> {ok,_} -> ok; Error -> - io:fwrite("\nWARNING: Could not cover compile ~w: ~p\n", + io:fwrite("\nWARNING: Could not cover compile ~w: ~tp\n", [M,Error]) end, do_cover_compile1(Rest) @@ -286,7 +286,7 @@ cover_analyse(Analyse,Modules,Stop) -> {ok,{M,{Cov,NotCov}}} -> {M,{Cov,NotCov,DetailsFun(M)}}; Err -> - io:fwrite("WARNING: Analysis failed for ~w. Reason: ~p\n", + io:fwrite("WARNING: Analysis failed for ~w. Reason: ~tp\n", [M,Err]), {M,Err} end @@ -436,8 +436,8 @@ run_test_case_apply(Mod, Func, Args, Name, RunInit, TimetrapData) -> _ -> Args end, - print(minor, "Test case started with:\n~s:~s(~p)\n", [Mod,Func,Args2Print]), - print(minor, "Current directory is ~p\n", [Cwd]), + print(minor, "Test case started with:\n~w:~w(~tp)\n", [Mod,Func,Args2Print]), + print(minor, "Current directory is ~tp\n", [Cwd]), print_timestamp(minor,"Started at "), print(minor, "", [], internal_raw), TCCallback = get(test_server_testcase_callback), @@ -498,7 +498,7 @@ run_test_case_msgloop(#st{ref=Ref,pid=Pid,end_conf_pid=EndConfPid0}=St0) -> exit(Pid, kill), %% here's the only place we know Reason, so we save %% it as a comment, potentially replacing user data - Error = lists:flatten(io_lib:format("Aborted: ~p", + Error = lists:flatten(io_lib:format("Aborted: ~tp", [Reason])), Error1 = lists:flatten([string:strip(S,left) || S <- string:tokens(Error, @@ -742,8 +742,8 @@ call_end_conf(Mod,Func,TCPid,TCExitReason,Loc,Conf,TVal) -> timer:sleep(1), group_leader() ! {printout,12, "WARNING! " - "~p:end_per_testcase(~p, ~p)" - " crashed!\n\tReason: ~p\n", + "~w:end_per_testcase(~w, ~tp)" + " crashed!\n\tReason: ~tp\n", [Mod,Func,Conf,Why]}; _ -> ok @@ -756,8 +756,8 @@ call_end_conf(Mod,Func,TCPid,TCExitReason,Loc,Conf,TVal) -> Starter ! {self(),{call_end_conf,Data,ok}}; {'EXIT',Pid,Reason} -> group_leader() ! {printout,12, - "WARNING! ~p:end_per_testcase(~p, ~p)" - " failed!\n\tReason: ~p\n", + "WARNING! ~w:end_per_testcase(~w, ~tp)" + " failed!\n\tReason: ~tp\n", [Mod,Func,Conf,Reason]}, Starter ! {self(),{call_end_conf,Data,{error,Reason}}}; {'EXIT',_OtherPid,Reason} -> @@ -802,7 +802,7 @@ spawn_fw_call(Mod,{end_per_testcase,Func},EndConf,Pid, {Result,E} end, group_leader() ! {printout,12, - "WARNING! ~p:end_per_testcase(~p, ~p)" + "WARNING! ~w:end_per_testcase(~w, ~tp)" " failed!\n\tReason: timetrap timeout" " after ~w ms!\n", [Mod,Func,EndConf,TVal]}, FailLoc = proplists:get_value(tc_fail_loc, EndConf), @@ -1180,7 +1180,7 @@ do_init_per_testcase(Mod, Args) -> Bad -> group_leader() ! {printout,12, "ERROR! init_per_testcase has returned " - "bad elements in Config: ~p\n",[Bad]}, + "bad elements in Config: ~tp\n",[Bad]}, {skip,{failed,{Mod,init_per_testcase,bad_return}}} end; {fail,_Reason}=Res -> @@ -1197,7 +1197,7 @@ do_init_per_testcase(Mod, Args) -> FormattedLoc = test_server_sup:format_loc(Line), group_leader() ! {printout,12, "ERROR! init_per_testcase thrown!\n" - "\tLocation: ~s\n\tReason: ~p\n", + "\tLocation: ~ts\n\tReason: ~tp\n", [FormattedLoc, Other]}, {skip,{failed,{Mod,init_per_testcase,Other}}}; _:Reason0 -> @@ -1208,7 +1208,7 @@ do_init_per_testcase(Mod, Args) -> FormattedLoc = test_server_sup:format_loc(Line), group_leader() ! {printout,12, "ERROR! init_per_testcase crashed!\n" - "\tLocation: ~s\n\tReason: ~p\n", + "\tLocation: ~ts\n\tReason: ~tp\n", [FormattedLoc,Reason]}, {skip,{failed,{Mod,init_per_testcase,Reason}}} end. @@ -1244,13 +1244,13 @@ do_end_per_testcase(Mod,EndFunc,Func,Conf) -> "<br />") end, set_loc(erlang:get_stacktrace()), - comment(io_lib:format("~s<font color=\"red\">" + comment(io_lib:format("~ts<font color=\"red\">" "WARNING: ~w thrown!" "</font>\n",[Comment0,EndFunc])), group_leader() ! {printout,12, "WARNING: ~w thrown!\n" - "Reason: ~p\n" - "Line: ~s\n", + "Reason: ~tp\n" + "Line: ~ts\n", [EndFunc, Other, test_server_sup:format_loc(get_loc())]}, {failed,{Mod,end_per_testcase,Other}}; @@ -1266,13 +1266,13 @@ do_end_per_testcase(Mod,EndFunc,Func,Conf) -> Cmt -> Cmt ++ test_server_ctrl:xhtml("<br>", "<br />") end, - comment(io_lib:format("~s<font color=\"red\">" + comment(io_lib:format("~ts<font color=\"red\">" "WARNING: ~w crashed!" "</font>\n",[Comment0,EndFunc])), group_leader() ! {printout,12, "WARNING: ~w crashed!\n" - "Reason: ~p\n" - "Line: ~s\n", + "Reason: ~tp\n" + "Line: ~ts\n", [EndFunc, Reason, test_server_sup:format_loc(get_loc())]}, {failed,{Mod,end_per_testcase,Why}} @@ -1351,7 +1351,7 @@ lookup_config(Key,Config) -> {value,{Key,Val}} -> Val; _ -> - io:format("Could not find element ~p in Config.~n",[Key]), + io:format("Could not find element ~tp in Config.~n",[Key]), undefined end. @@ -1433,7 +1433,7 @@ format(Detail, Format, Args) -> Str = case catch io_lib:format(Format,Args) of {'EXIT',_} -> - io_lib:format("illegal format; ~p with args ~p.\n", + io_lib:format("illegal format; ~tp with args ~tp.\n", [Format,Args]); Valid -> Valid end, @@ -1564,7 +1564,7 @@ fail(Reason) -> cast_to_list(X) when is_list(X) -> X; cast_to_list(X) when is_atom(X) -> atom_to_list(X); -cast_to_list(X) -> lists:flatten(io_lib:format("~p", [X])). +cast_to_list(X) -> lists:flatten(io_lib:format("~tp", [X])). @@ -1608,10 +1608,10 @@ break(CBM, TestCase, Comment) -> end, io:format(user, "\n\n\n--- SEMIAUTOMATIC TESTING ---" - "\nThe test case~s executes on process ~w" - "\n\n\n~s" + "\nThe test case~ts executes on process ~w" + "\n\n\n~ts" "\n\n\n-----------------------------\n\n" - "Continue with --> ~w:continue(~s).\n", + "Continue with --> ~w:continue(~ts).\n", [TCName,self(),Comment,CBM,CntArg]), case whereis(PName) of undefined -> @@ -1735,7 +1735,7 @@ ensure_timetrap(Config) -> Garbage -> erase(test_server_default_timetrap), format("=== WARNING: garbage in " - "test_server_default_timetrap: ~p~n", + "test_server_default_timetrap: ~tp~n", [Garbage]) end, DTmo = case lists:keysearch(default_timeout,1,Config) of @@ -1743,7 +1743,7 @@ ensure_timetrap(Config) -> _ -> ?DEFAULT_TIMETRAP_SECS end, format("=== test_server setting default " - "timetrap of ~p seconds~n", + "timetrap of ~tp seconds~n", [DTmo]), put(test_server_default_timetrap, timetrap(seconds(DTmo))) end. @@ -1764,7 +1764,7 @@ cancel_default_timetrap(true) -> Garbage -> erase(test_server_default_timetrap), format("=== WARNING: garbage in " - "test_server_default_timetrap: ~p~n", + "test_server_default_timetrap: ~tp~n", [Garbage]), error end. @@ -1773,7 +1773,7 @@ time_ms({hours,N}, _, _) -> hours(N); time_ms({minutes,N}, _, _) -> minutes(N); time_ms({seconds,N}, _, _) -> seconds(N); time_ms({Other,_N}, _, _) -> - format("=== ERROR: Invalid time specification: ~p. " + format("=== ERROR: Invalid time specification: ~tp. " "Should be seconds, minutes, or hours.~n", [Other]), exit({invalid_time_format,Other}); time_ms(Ms, _, _) when is_integer(Ms) -> Ms; @@ -2266,14 +2266,14 @@ stop_node(Slave) -> slave:stop(Slave), receive {nodedown, Slave} -> - format(minor, "Stopped slave node: ~p", [Slave]), - format(major, "=node_stop ~p", [Slave]), + format(minor, "Stopped slave node: ~w", [Slave]), + format(major, "=node_stop ~w", [Slave]), if Cover -> do_cover_for_node(Slave,stop,false); true -> ok end, true after 30000 -> - format("=== WARNING: Node ~p does not seem to terminate.", + format("=== WARNING: Node ~w does not seem to terminate.", [Slave]), erlang:monitor_node(Slave, false), receive {nodedown, Slave} -> ok after 0 -> ok end, @@ -2283,7 +2283,7 @@ stop_node(Slave) -> %% Either, the node is already dead or it was started %% with the {cleanup,false} option, or it was started %% in some other way than test_server:start_node/3 - format("=== WARNING: Attempt to stop a nonexisting slavenode (~p)~n" + format("=== WARNING: Attempt to stop a nonexisting slavenode (~w)~n" "=== Trying to kill it anyway!!!", [Slave]), case net_adm:ping(Slave)of @@ -2292,14 +2292,14 @@ stop_node(Slave) -> slave:stop(Slave), receive {nodedown, Slave} -> - format(minor, "Stopped slave node: ~p", [Slave]), - format(major, "=node_stop ~p", [Slave]), + format(minor, "Stopped slave node: ~w", [Slave]), + format(major, "=node_stop ~w", [Slave]), if Cover -> do_cover_for_node(Slave,stop,false); true -> ok end, true after 30000 -> - format("=== WARNING: Node ~p does not seem to terminate.", + format("=== WARNING: Node ~w does not seem to terminate.", [Slave]), erlang:monitor_node(Slave, false), receive {nodedown, Slave} -> ok after 0 -> ok end, diff --git a/lib/test_server/src/test_server_ctrl.erl b/lib/test_server/src/test_server_ctrl.erl index c5c57426b4..e5d75e43c9 100644 --- a/lib/test_server/src/test_server_ctrl.erl +++ b/lib/test_server/src/test_server_ctrl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2012. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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 @@ -17,7 +17,6 @@ %% %CopyrightEnd% %% -module(test_server_ctrl). - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% The Erlang Test Server %% @@ -65,6 +64,7 @@ -export([get_target_info/0]). -export([get_hosts/0]). -export([node_started/1]). +-export([uri_encode/1,uri_encode/2]). %%% DEBUGGER INTERFACE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -export([i/0, p/1, p/3, pi/2, pi/4, t/0, t/1]). @@ -229,12 +229,12 @@ parse_cmd_line(['SPEC',Spec|Cmds], SpecList, Names, Param, Trc, Cov, TCCB) -> parse_cmd_line(Cmds, TermList++SpecList, [Name|Names], Param, Trc, Cov, TCCB); {error,Reason} -> - io:format("Can't open ~s: ~p\n", - [cast_to_list(Spec), file:format_error(Reason)]), + io:format("Can't open ~w: ~tp\n",[Spec, file:format_error(Reason)]), parse_cmd_line(Cmds, SpecList, Names, Param, Trc, Cov, TCCB) end; parse_cmd_line(['NAME',Name|Cmds], SpecList, Names, Param, Trc, Cov, TCCB) -> - parse_cmd_line(Cmds, SpecList, [{name,Name}|Names], Param, Trc, Cov, TCCB); + parse_cmd_line(Cmds, SpecList, [{name,atom_to_list(Name)}|Names], + Param, Trc, Cov, TCCB); parse_cmd_line(['SKIPMOD',Mod|Cmds], SpecList, Names, Param, Trc, Cov, TCCB) -> parse_cmd_line(Cmds, [{skip,{Mod,"by command line"}}|SpecList], Names, Param, Trc, Cov, TCCB); @@ -242,14 +242,14 @@ parse_cmd_line(['SKIPCASE',Mod,Case|Cmds], SpecList, Names, Param, Trc, Cov, TCC parse_cmd_line(Cmds, [{skip,{Mod,Case,"by command line"}}|SpecList], Names, Param, Trc, Cov, TCCB); parse_cmd_line(['DIR',Dir|Cmds], SpecList, Names, Param, Trc, Cov, TCCB) -> - Name = cast_to_list(filename:basename(Dir)), + Name = filename:basename(Dir), parse_cmd_line(Cmds, [{topcase,{dir,Name}}|SpecList], [Name|Names], Param, Trc, Cov, TCCB); parse_cmd_line(['MODULE',Mod|Cmds], SpecList, Names, Param, Trc, Cov, TCCB) -> - parse_cmd_line(Cmds, [{topcase,{Mod,all}}|SpecList], [Mod|Names], + parse_cmd_line(Cmds,[{topcase,{Mod,all}}|SpecList],[atom_to_list(Mod)|Names], Param, Trc, Cov, TCCB); parse_cmd_line(['CASE',Mod,Case|Cmds], SpecList, Names, Param, Trc, Cov, TCCB) -> - parse_cmd_line(Cmds, [{topcase,{Mod,Case}}|SpecList], [Mod|Names], + parse_cmd_line(Cmds,[{topcase,{Mod,Case}}|SpecList],[atom_to_list(Mod)|Names], Param, Trc, Cov, TCCB); parse_cmd_line(['PARAMETERS',Param|Cmds], SpecList, Names, _Param, Trc, Cov, TCCB) -> parse_cmd_line(Cmds, SpecList, Names, Param, Trc, Cov, TCCB); @@ -260,17 +260,17 @@ parse_cmd_line(['COVER',App,CF,Analyse|Cmds], SpecList, Names, Param, Trc, _Cov, parse_cmd_line(['TESTCASE_CALLBACK',Mod,Func|Cmds], SpecList, Names, Param, Trc, Cov, _) -> parse_cmd_line(Cmds, SpecList, Names, Param, Trc, Cov, {Mod,Func}); parse_cmd_line([Obj|_Cmds], _SpecList, _Names, _Param, _Trc, _Cov, _TCCB) -> - io:format("~p: Bad argument: ~p\n", [?MODULE,Obj]), + io:format("~w: Bad argument: ~w\n", [?MODULE,Obj]), io:format(" Use the `ts' module to start tests.\n", []), io:format(" (If you ARE using `ts', there is a bug in `ts'.)\n", []), halt(1); parse_cmd_line([], SpecList, Names, Param, Trc, Cov, TCCB) -> - NameList = lists:reverse(Names, [suite]), + NameList = lists:reverse(Names, ["suite"]), Name = case lists:keysearch(name, 1, NameList) of {value,{name,N}} -> N; false -> hd(NameList) end, - {lists:reverse(SpecList), cast_to_list(Name), Param, Trc, Cov, TCCB}. + {lists:reverse(SpecList), Name, Param, Trc, Cov, TCCB}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% cast_to_list(X) -> string() @@ -1011,9 +1011,9 @@ handle_info({'EXIT',Pid,Reason}, State) -> normal -> fine; killed -> - io:format("Suite ~s was killed\n", [Name]); + io:format("Suite ~ts was killed\n", [Name]); _Other -> - io:format("Suite ~s was killed with reason ~p\n", + io:format("Suite ~ts was killed with reason ~tp\n", [Name,Reason]) end, State2 = State#state{jobs=NewJobs}, @@ -1057,8 +1057,8 @@ handle_info({tcp,_MainSock,<<1,Request/binary>>}, State) -> %% The local job proc will soon be killed by the closed socket or %% because the job is finished. Then the above clause ('EXIT') will %% handle the problem. - io:format("Suite ~s was killed on remote target with reason" - " ~p\n", [Name,Reason]); + io:format("Suite ~ts was killed on remote target with reason" + " ~tp\n", [Name,Reason]); _ -> ignore end, @@ -1192,10 +1192,10 @@ init_tester(Mod, Func, Args, Dir, Name, {_,_,MinLev}=Levels, {'EXIT',test_suites_done} -> ok; {'EXIT',_Pid,Reason} -> - print(1, "EXIT, reason ~p", [Reason]); + print(1, "EXIT, reason ~tp", [Reason]); {'EXIT',Reason} -> report_severe_error(Reason), - print(1, "EXIT, reason ~p", [Reason]) + print(1, "EXIT, reason ~tp", [Reason]) end, Time = TimeMy/1000000, SuccessStr = @@ -1206,13 +1206,13 @@ init_tester(Mod, Func, Args, Dir, Name, {_,_,MinLev}=Levels, {SkippedN,SkipStr} = case get(test_server_skipped) of {0,_} -> {0,""}; - {Skipped,_} -> {Skipped,io_lib:format(", ~p Skipped", [Skipped])} + {Skipped,_} -> {Skipped,io_lib:format(", ~w Skipped", [Skipped])} end, OkN = get(test_server_ok), FailedN = get(test_server_failed), print(html,"\n</tbody>\n<tfoot>\n" "<tr><td></td><td><b>TOTAL</b></td><td></td><td></td><td></td>" - "<td>~.3fs</td><td><b>~s</b></td><td>~p Ok, ~p Failed~s of ~p</td></tr>\n" + "<td>~.3fs</td><td><b>~ts</b></td><td>~w Ok, ~w Failed~ts of ~w</td></tr>\n" "</tfoot>\n", [Time,SuccessStr,OkN,FailedN,SkipStr,OkN+FailedN+SkippedN]), test_server_io:stop(). @@ -1285,7 +1285,7 @@ do_spec(SpecName, TimetrapSpec) when is_list(SpecName) -> {ok,TermList} -> do_spec_list(TermList,TimetrapSpec); {error,Reason} -> - io:format("Can't open ~s: ~p\n", [SpecName,Reason]), + io:format("Can't open ~ts: ~tp\n", [SpecName,Reason]), {error,{cant_open_spec,Reason}} end. @@ -1368,7 +1368,7 @@ do_spec_terms([{require_nodenames,NumNames}|Terms], TopCases, SkipList, Config) do_spec_terms(Terms, TopCases, SkipList, update_config(Config, {nodenames,NodeNames})); do_spec_terms([Other|Terms], TopCases, SkipList, Config) -> - io:format("** WARNING: Spec file contains unknown directive ~p\n", + io:format("** WARNING: Spec file contains unknown directive ~tp\n", [Other]), do_spec_terms(Terms, TopCases, SkipList, Config). @@ -1387,7 +1387,7 @@ generate_nodenames(Num) -> generate_nodenames2(0, _Hosts, Acc) -> Acc; generate_nodenames2(N, Hosts, Acc) -> - Host=cast_to_list(lists:nth((N rem (length(Hosts)))+1, Hosts)), + Host=lists:nth((N rem (length(Hosts)))+1, Hosts), Name=list_to_atom(temp_nodename("nod", []) ++ "@" ++ Host), generate_nodenames2(N-1, Hosts, [Name|Acc]). @@ -1507,7 +1507,7 @@ do_test_cases(TopCases, SkipCases, FwMod = get_fw_mod(?MODULE), case collect_all_cases(TopCases, SkipCases) of {error,Why} -> - print(1, "Error starting: ~p", [Why]), + print(1, "Error starting: ~tp", [Why]), exit(test_suites_done); TestSpec0 -> N = case remove_conf(TestSpec0) of @@ -1519,32 +1519,25 @@ do_test_cases(TopCases, SkipCases, TestSpec = add_init_and_end_per_suite(TestSpec0, undefined, undefined, FwMod), TI = get_target_info(), - print(1, "Starting test~s", + print(1, "Starting test~ts", [print_if_known(N, {", ~w test cases",[N]}, {" (with repeated test cases)",[]})]), Test = get(test_server_name), TestName = if is_list(Test) -> - lists:flatten(io_lib:format("~s", [Test])); + lists:flatten(io_lib:format("~ts", [Test])); true -> - lists:flatten(io_lib:format("~p", [Test])) + lists:flatten(io_lib:format("~tp", [Test])) end, TestDescr = "Test " ++ TestName ++ " results", test_server_sup:framework_call(report, [tests_start,{Test,N}]), {Header,Footer} = - case test_server_sup:framework_call(get_html_wrapper, + case test_server_sup:framework_call(get_html_wrapper, [TestDescr,true,TestDir, {[],[2,3,4,7,8],[1,6]}], "") of Empty when (Empty == "") ; (element(2,Empty) == "") -> put(basic_html, true), - {["<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n", - "<!-- autogenerated by '", atom_to_list(?MODULE), "'. -->\n", - "<html>\n", - "<head><title>", TestDescr, "</title>\n", - "<meta http-equiv=\"cache-control\" content=\"no-cache\">\n", - "</head>\n", - "<body bgcolor=\"white\" text=\"black\" ", - "link=\"blue\" vlink=\"purple\" alink=\"red\">", + {[html_header(TestDescr), "<h2>Results for test ", TestName, "</h2>\n"], "\n</body>\n</html>\n"}; {basic_html,Html0,Html1} -> @@ -1566,16 +1559,16 @@ do_test_cases(TopCases, SkipCases, print(html, xhtml("\n<p><b>Host info:</b><br>\n", "\n<p><b>Host info:</b><br />\n")), print_who(test_server_sup:hoststr(), test_server_sup:get_username()), - print(html, xhtml("<br>Used Erlang v~s in <tt>~s</tt></p>\n", - "<br />Used Erlang v~s in \"~s\"</p>\n"), + print(html, xhtml("<br>Used Erlang v~ts in <tt>~ts</tt></p>\n", + "<br />Used Erlang v~ts in \"~ts\"</p>\n"), [erlang:system_info(version), code:root_dir()]), if FwMod == ?MODULE -> print(html, xhtml("\n<p><b>Target Info:</b><br>\n", "\n<p><b>Target Info:</b><br />\n")), print_who(TI#target_info.host, TI#target_info.username), - print(html, xhtml("<br>Used Erlang v~s in <tt>~s</tt></p>\n", - "<br />Used Erlang v~s in \"~s\"</p>\n"), + print(html,xhtml("<br>Used Erlang v~ts in <tt>~ts</tt></p>\n", + "<br />Used Erlang v~ts in \"~ts\"</p>\n"), [TI#target_info.version, TI#target_info.root_dir]); true -> case test_server_sup:framework_call(target_info, []) of @@ -1583,7 +1576,7 @@ do_test_cases(TopCases, SkipCases, length(TargetInfo) > 0 -> print(html, xhtml("\n<p><b>Target info:</b><br>\n", "\n<p><b>Target info:</b><br />\n")), - print(html, "~s</p>\n", [TargetInfo]); + print(html, "~ts</p>\n", [TargetInfo]); _ -> ok end @@ -1591,39 +1584,39 @@ do_test_cases(TopCases, SkipCases, print(html, "<p><ul>\n" - "<li><a href=\"~s\">Full textual log</a></li>\n" - "<li><a href=\"~s\">Coverage log</a></li>\n" - "<li><a href=\"~s\">Unexpected I/O log</a></li>\n</ul></p>\n", + "<li><a href=\"~ts\">Full textual log</a></li>\n" + "<li><a href=\"~ts\">Coverage log</a></li>\n" + "<li><a href=\"~ts\">Unexpected I/O log</a></li>\n</ul></p>\n", [?suitelog_name,?coverlog_name,?unexpected_io_log]), print(html, - "<p>~s</p>\n" ++ + "<p>~ts</p>\n" ++ xhtml("<table bgcolor=\"white\" border=\"3\" cellpadding=\"5\">", ["<table id=\"",?sortable_table_name,"\">\n", "<thead>\n"]) ++ "<tr><th>Num</th><th>Module</th><th>Group</th>" ++ "<th>Case</th><th>Log</th><th>Time</th><th>Result</th>" ++ "<th>Comment</th></tr>\n</thead>\n<tbody>\n", - [print_if_known(N, {"<i>Executing <b>~p</b> test cases...</i>" ++ - xhtml("\n<br>\n", "\n<br />\n"),[N]}, + [print_if_known(N, {"<i>Executing <b>~w</b> test cases...</i>" + ++ xhtml("\n<br>\n", "\n<br />\n"),[N]}, {"",[]})]), - print(major, "=cases ~p", [get(test_server_cases)]), - print(major, "=user ~s", [TI#target_info.username]), - print(major, "=host ~s", [TI#target_info.host]), + print(major, "=cases ~w", [get(test_server_cases)]), + print(major, "=user ~ts", [TI#target_info.username]), + print(major, "=host ~ts", [TI#target_info.host]), %% If there are no hosts specified,use only the local host case controller_call(get_hosts) of [] -> - print(major, "=hosts ~s", [TI#target_info.host]), + print(major, "=hosts ~ts", [TI#target_info.host]), controller_call({set_hosts, [TI#target_info.host]}); Hosts -> Str = lists:flatten(lists:map(fun(X) -> [X," "] end, Hosts)), - print(major, "=hosts ~s", [Str]) + print(major, "=hosts ~ts", [Str]) end, - print(major, "=emulator_vsn ~s", [TI#target_info.version]), - print(major, "=emulator ~s", [TI#target_info.emulator]), - print(major, "=otp_release ~s", [TI#target_info.otp_release]), - print(major, "=started ~s", + print(major, "=emulator_vsn ~ts", [TI#target_info.version]), + print(major, "=emulator ~ts", [TI#target_info.emulator]), + print(major, "=otp_release ~ts", [TI#target_info.otp_release]), + print(major, "=started ~ts", [lists:flatten(timestamp_get(""))]), put(test_server_html_footer, Footer), @@ -1674,21 +1667,18 @@ start_log_file() -> MkDirError2 -> log_file_error(MkDirError2, TestDir) end, - ok = file:write_file(filename:join(Dir, ?last_file), TestDir1 ++ "\n"), - ok = file:write_file(?last_file, TestDir1 ++ "\n"), + ok = write_file(filename:join(Dir, ?last_file), TestDir1 ++ "\n"), + ok = write_file(?last_file, TestDir1 ++ "\n"), put(test_server_log_dir_base,TestDir1), MajorName = filename:join(TestDir1, ?suitelog_name), HtmlName = MajorName ++ ?html_ext, UnexpectedName = filename:join(TestDir1, ?unexpected_io_log), - {ok,Major} = file:open(MajorName, [write]), - {ok,Html} = file:open(HtmlName, [write]), - {ok,Unexpected} = file:open(UnexpectedName, [write]), + {ok,Major} = open_file(MajorName), + {ok,Html} = open_html_file(HtmlName), + {ok,Unexpected} = open_file(UnexpectedName), test_server_io:set_fd(major, Major), test_server_io:set_fd(html, Html), test_server_io:set_fd(unexpected_io, Unexpected), - put(test_server_major_fd,Major), - put(test_server_html_fd,Html), - put(test_server_unexpected_io, Unexpected), make_html_link(filename:absname(?last_test ++ ?html_ext), HtmlName, filename:basename(Dir)), @@ -1714,21 +1704,15 @@ make_html_link(LinkName, Target, Explanation) -> PwdL = filename:split(filename:dirname(LinkName)), Href = case lists:prefix(PwdL, TargetL) of true -> - filename:join(lists:nthtail(length(PwdL), TargetL)); + uri_encode(filename:join(lists:nthtail(length(PwdL),TargetL))); false -> - "file:" ++ Target + "file:" ++ uri_encode(Target) end, - H = io_lib:format("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n" - "<!-- autogenerated by '"++atom_to_list(?MODULE)++"'. -->\n" - "<html>\n" - "<head><title>~s</title></head>\n" - "<body bgcolor=\"white\" text=\"black\"" - " link=\"blue\" vlink=\"purple\" alink=\"red\">\n" - "<h1>Last test</h1>\n" - "<a href=\"~s\">~s</a>~n" - "</body>\n</html>\n", - [Explanation,Href,Explanation]), - ok = file:write_file(LinkName, H). + H = [html_header(Explanation), + "<h1>Last test</h1>\n" + "<a href=\"",Href,"\">",Explanation,"</a>\n" + "</body>\n</html>\n"], + ok = write_html_file(LinkName, H). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% start_minor_log_file(Mod, Func) -> AbsName @@ -1743,7 +1727,7 @@ make_html_link(LinkName, Target, Explanation) -> start_minor_log_file(Mod, Func) -> MFA = {Mod,Func,1}, LogDir = get(test_server_log_dir_base), - Name0 = lists:flatten(io_lib:format("~s.~s~s", [Mod,Func,?html_ext])), + Name0 = lists:flatten(io_lib:format("~w.~w~ts", [Mod,Func,?html_ext])), Name = downcase(Name0), AbsName = filename:join(LogDir, Name), case file:read_file_info(AbsName) of @@ -1752,37 +1736,29 @@ start_minor_log_file(Mod, Func) -> {ok,_} -> %% special case, duplicate names {_,S,Us} = now(), Name1_0 = - lists:flatten(io_lib:format("~s.~s.~w.~w~s", [Mod,Func,S, - trunc(Us/1000), - ?html_ext])), + lists:flatten(io_lib:format("~w.~w.~w.~w~ts", [Mod,Func,S, + trunc(Us/1000), + ?html_ext])), Name1 = downcase(Name1_0), AbsName1 = filename:join(LogDir, Name1), start_minor_log_file1(Mod, Func, LogDir, AbsName1, MFA) end. start_minor_log_file1(Mod, Func, LogDir, AbsName, MFA) -> - {ok,Fd} = file:open(AbsName, [write]), + {ok,Fd} = open_html_file(AbsName), Lev = get(test_server_minor_level)+1000, %% far down in the minor levels put(test_server_minor_fd, Fd), test_server_gl:set_minor_fd(group_leader(), Fd, MFA), - TestDescr = io_lib:format("Test ~p:~p result", [Mod,Func]), + TestDescr = io_lib:format("Test ~w:~w result", [Mod,Func]), {Header,Footer} = - case test_server_sup:framework_call(get_html_wrapper, + case test_server_sup:framework_call(get_html_wrapper, [TestDescr,false, filename:dirname(AbsName), undefined], "") of Empty when (Empty == "") ; (element(2,Empty) == "") -> put(basic_html, true), - {["<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n", - "<!-- autogenerated by '", atom_to_list(?MODULE), "'. -->\n", - "<html>\n", - "<head><title>", TestDescr, "</title>\n", - "<meta http-equiv=\"cache-control\" content=\"no-cache\">\n", - "</head>\n", - "<body bgcolor=\"white\" text=\"black\" ", - "link=\"blue\" vlink=\"purple\" alink=\"red\">\n"], - "\n</body>\n</html>\n"}; + {html_header(TestDescr), "\n</body>\n</html>\n"}; {basic_html,Html0,Html1} -> put(basic_html, true), {Html0,Html1}; @@ -1791,24 +1767,21 @@ start_minor_log_file1(Mod, Func, LogDir, AbsName, MFA) -> {Html0,Html1} end, put(test_server_minor_footer, Footer), - io:fwrite(Fd, Header, []), + io:put_chars(Fd, Header), - SrcListing = downcase(cast_to_list(Mod)) ++ ?src_listing_ext, + SrcListing = downcase(atom_to_list(Mod)) ++ ?src_listing_ext, case {filelib:is_file(filename:join(LogDir, SrcListing)), lists:member(no_src, get(test_server_logopts))} of {true,false} -> - print(Lev, "<a href=\"~s#~s\">source code for ~p:~p/1</a>\n", - [SrcListing,atom_to_list(Func)++"-1",Mod,Func]); - _ -> ok + print(Lev, "<a href=\"~ts#~ts\">source code for ~w:~w/1</a>\n", + [uri_encode(SrcListing), + uri_encode(atom_to_list(Func)++"-1",utf8), + Mod,Func]); + _ -> + ok end, - io:fwrite(Fd, "<pre>\n", []), - -% Stupid BUG! -% case catch apply(Mod, Func, [doc]) of -% {'EXIT', _Why} -> ok; -% Comment -> print(Lev, "Comment: ~s~n<br>", [Comment]) -% end, + io:put_chars(Fd, "<pre>\n"), AbsName. @@ -1816,8 +1789,8 @@ stop_minor_log_file() -> test_server_gl:unset_minor_fd(group_leader()), Fd = get(test_server_minor_fd), Footer = get(test_server_minor_footer), - io:fwrite(Fd, "</pre>\n" ++ Footer, []), - file:close(Fd), + io:put_chars(Fd, "</pre>\n" ++ Footer), + ok = file:close(Fd), put(test_server_minor_fd, undefined). downcase(S) -> downcase(S, []). @@ -1899,25 +1872,15 @@ html_possibly_convert(Src, SrcInfo, Dest) -> ok; % dest file up to date _ -> OutDir = get(test_server_log_dir_base), - Header = - case test_server_sup:framework_call(get_html_wrapper, - ["Module "++Src,false, - OutDir,undefined], "") of - Empty when (Empty == "") ; (element(2,Empty) == "") -> - ["<!DOCTYPE HTML PUBLIC", - "\"-//W3C//DTD HTML 3.2 Final//EN\">\n", - "<!-- autogenerated by 'erl2html2' -->\n", - "<html>\n", - "<head><title>Module ", Src, "</title>\n", - "<meta http-equiv=\"cache-control\" ", - "content=\"no-cache\">\n", - "</head>\n", - "<body bgcolor=\"white\" text=\"black\" ", - "link=\"blue\" vlink=\"purple\" alink=\"red\">\n"]; - {_,Html,_} -> - Html - end, - erl2html2:convert(Src, Dest, Header) + case test_server_sup:framework_call(get_html_wrapper, + ["Module "++Src,false, + OutDir,undefined, + encoding(Src)], "") of + Empty when (Empty == "") ; (element(2,Empty) == "") -> + erl2html2:convert(Src, Dest); + {_,Header,_} -> + erl2html2:convert(Src, Dest, Header) + end end. %% Copy all HTML files in InDir to OutDir. @@ -1929,9 +1892,9 @@ copy_html_file(Src, DestDir) -> Dest = filename:join(DestDir, filename:basename(Src)), case file:read_file(Src) of {ok,Bin} -> - ok = file:write_file(Dest, Bin); + ok = write_file(Dest, Bin); {error,_Reason} -> - io:format("File ~p: read failed\n", [Src]) + io:format("File ~tp: read failed\n", [Src]) end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2106,15 +2069,15 @@ run_test_cases(TestSpec, Config, TimetrapData) -> end, OkN = get(test_server_ok), FailedN = get(test_server_failed), - print(1, "TEST COMPLETE, ~w ok, ~w failed~s of ~w test cases\n", + print(1, "TEST COMPLETE, ~w ok, ~w failed~ts of ~w test cases\n", [OkN,FailedN,SkipStr,OkN+FailedN+AllSkippedN]), test_server_sup:framework_call(report, [tests_done, {OkN,FailedN,{UserSkipN,AutoSkipN}}]), - print(major, "=finished ~s", [lists:flatten(timestamp_get(""))]), - print(major, "=failed ~p", [FailedN]), - print(major, "=successful ~p", [OkN]), - print(major, "=user_skipped ~p", [UserSkipN]), - print(major, "=auto_skipped ~p", [AutoSkipN]), + print(major, "=finished ~ts", [lists:flatten(timestamp_get(""))]), + print(major, "=failed ~w", [FailedN]), + print(major, "=successful ~w", [OkN]), + print(major, "=user_skipped ~w", [UserSkipN]), + print(major, "=auto_skipped ~w", [AutoSkipN]), exit(test_suites_done). @@ -2645,7 +2608,8 @@ run_test_cases_loop([{conf,Ref,Props,{Mod,Func}}|_Cases]=Cs0, run_test_cases_loop(Cases, [NewCfg|Config], TimetrapData, Mode, Status2); Bad -> - print(minor, "~n*** ~p returned bad elements in Config: ~p.~n", + print(minor, + "~n*** ~w returned bad elements in Config: ~tp.~n", [Func,Bad]), Reason = {failed,{Mod,init_per_suite,bad_return}}, Cases2 = skip_cases_upto(Ref, Cases, Reason, conf, CurrMode), @@ -2660,8 +2624,9 @@ run_test_cases_loop([{conf,Ref,Props,{Mod,Func}}|_Cases]=Cs0, stop_minor_log_file(), run_test_cases_loop(Cases, [NewCfg|Config], TimetrapData, Mode, Status2); {_,{framework_error,{FwMod,FwFunc},Reason},_} -> - print(minor, "~n*** ~p failed in ~p. Reason: ~p~n", [FwMod,FwFunc,Reason]), - print(1, "~p failed in ~p. Reason: ~p~n", [FwMod,FwFunc,Reason]), + print(minor, "~n*** ~w failed in ~w. Reason: ~tp~n", + [FwMod,FwFunc,Reason]), + print(1, "~w failed in ~w. Reason: ~tp~n", [FwMod,FwFunc,Reason]), exit(framework_error); {_,Fail,_} when element(1,Fail) == 'EXIT'; element(1,Fail) == timetrap_timeout; @@ -2670,7 +2635,7 @@ run_test_cases_loop([{conf,Ref,Props,{Mod,Func}}|_Cases]=Cs0, {Cases2,Config1,Status3} = if StartConf -> ReportAbortRepeat(failed), - print(minor, "~n*** ~p failed.~n" + print(minor, "~n*** ~w failed.~n" " Skipping all cases.", [Func]), Reason = {failed,{Mod,Func,Fail}}, {skip_cases_upto(Ref, Cases, Reason, conf, CurrMode), @@ -2687,7 +2652,7 @@ run_test_cases_loop([{conf,Ref,Props,{Mod,Func}}|_Cases]=Cs0, run_test_cases_loop(Cases2, Config1, TimetrapData, Mode, Status3); {_,{Skip,Reason},_} when StartConf and ((Skip==skip) or (Skip==skipped)) -> ReportAbortRepeat(skipped), - print(minor, "~n*** ~p skipped.~n" + print(minor, "~n*** ~w skipped.~n" " Skipping all cases.", [Func]), set_io_buffering(IOHandler), stop_minor_log_file(), @@ -2696,7 +2661,7 @@ run_test_cases_loop([{conf,Ref,Props,{Mod,Func}}|_Cases]=Cs0, delete_status(Ref, Status2)); {_,{skip_and_save,Reason,_SavedConfig},_} when StartConf -> ReportAbortRepeat(skipped), - print(minor, "~n*** ~p skipped.~n" + print(minor, "~n*** ~w skipped.~n" " Skipping all cases.", [Func]), set_io_buffering(IOHandler), stop_minor_log_file(), @@ -2757,7 +2722,7 @@ run_test_cases_loop([{conf,Ref,Props,{Mod,Func}}|_Cases]=Cs0, run_test_cases_loop([{make,Ref,{Mod,Func,Args}}|Cases0], Config, TimetrapData, Mode, Status) -> case run_test_case(Ref, 0, Mod, Func, Args, skip_init, TimetrapData) of {_,Why={'EXIT',_},_} -> - print(minor, "~n*** ~p failed.~n" + print(minor, "~n*** ~w failed.~n" " Skipping all cases.", [Func]), Reason = {failed,{Mod,Func,Why}}, Cases = skip_cases_upto(Ref, Cases0, Reason, conf, Mode), @@ -2803,8 +2768,9 @@ run_test_cases_loop([{Mod,Func,Args}|Cases], Config, TimetrapData, Mode, Status) run_init, TimetrapData, Mode) of %% callback to framework module failed, exit immediately {_,{framework_error,{FwMod,FwFunc},Reason},_} -> - print(minor, "~n*** ~p failed in ~p. Reason: ~p~n", [FwMod,FwFunc,Reason]), - print(1, "~p failed in ~p. Reason: ~p~n", [FwMod,FwFunc,Reason]), + print(minor, "~n*** ~w failed in ~w. Reason: ~tp~n", + [FwMod,FwFunc,Reason]), + print(1, "~w failed in ~w. Reason: ~tp~n", [FwMod,FwFunc,Reason]), stop_minor_log_file(), exit(framework_error); %% sequential execution of test case finished @@ -2836,8 +2802,9 @@ run_test_cases_loop([{Mod,Func,Args}|Cases], Config, TimetrapData, Mode, Status) stop_minor_log_file(), run_test_cases_loop(Cases, Config, TimetrapData, Mode, Status1); true -> % skip rest of cases in sequence - print(minor, "~n*** ~p failed.~n" - " Skipping all other cases in sequence.", [Func]), + print(minor, "~n*** ~w failed.~n" + " Skipping all other cases in sequence.", + [Func]), Reason = {failed,{Mod,Func}}, Cases2 = skip_cases_upto(Ref, Cases, Reason, tc, Mode), stop_minor_log_file(), @@ -2953,7 +2920,7 @@ get_data_dir(Mod, Suite) -> end, case code:which(UseMod) of non_existing -> - print(12, "The module ~p is not loaded", [Mod]), + print(12, "The module ~w is not loaded", [Mod]), []; cover_compiled -> MainCoverNode = cover:get_main_node(), @@ -2964,7 +2931,7 @@ get_data_dir(Mod, Suite) -> end. do_get_data_dir(Mod,File) -> - filename:dirname(File) ++ "/" ++ cast_to_list(Mod) ++ ?data_dir_suffix. + filename:dirname(File) ++ "/" ++ atom_to_list(Mod) ++ ?data_dir_suffix. print_conf_time(0) -> ok; @@ -2975,8 +2942,8 @@ print_conf_time(ConfTime) -> print_props(_, []) -> ok; print_props(true, Props) -> - print(major, "=group_props ~p", [Props]), - print(minor, "Group properties: ~p~n", [Props]); + print(major, "=group_props ~tp", [Props]), + print(minor, "Group properties: ~tp~n", [Props]); print_props(_, _) -> ok. @@ -3126,24 +3093,24 @@ skip_case1(Type, CaseNum, Mod, Func, Comment, Mode) -> Comment1 = reason_to_string(Comment), - print(major, "~n=case ~p:~p", [Mod,Func]), - print(major, "=started ~s", [lists:flatten(timestamp_get(""))]), - print(major, "=result skipped: ~s", [Comment1]), - print(2,"*** Skipping test case #~w ~p ***", [CaseNum,{Mod,Func}]), + print(major, "~n=case ~w:~w", [Mod,Func]), + print(major, "=started ~ts", [lists:flatten(timestamp_get(""))]), + print(major, "=result skipped: ~ts", [Comment1]), + print(2,"*** Skipping test case #~w ~w ***", [CaseNum,{Mod,Func}]), TR = xhtml("<tr valign=\"top\">", ["<tr class=\"",odd_or_even(),"\">"]), GroupName = case get_name(Mode) of undefined -> ""; Name -> cast_to_list(Name) end, print(html, - TR ++ "<td>" ++ Col0 ++ "~s" ++ Col1 ++ "</td>" - "<td>" ++ Col0 ++ "~p" ++ Col1 ++ "</td>" - "<td>" ++ Col0 ++ "~s" ++ Col1 ++ "</td>" - "<td>" ++ Col0 ++ "~p" ++ Col1 ++ "</td>" + TR ++ "<td>" ++ Col0 ++ "~ts" ++ Col1 ++ "</td>" + "<td>" ++ Col0 ++ "~w" ++ Col1 ++ "</td>" + "<td>" ++ Col0 ++ "~ts" ++ Col1 ++ "</td>" + "<td>" ++ Col0 ++ "~w" ++ Col1 ++ "</td>" "<td>" ++ Col0 ++ "< >" ++ Col1 ++ "</td>" "<td>" ++ Col0 ++ "0.000s" ++ Col1 ++ "</td>" - "<td><font color=\"~s\">SKIPPED</font></td>" - "<td>~s</td></tr>\n", + "<td><font color=\"~ts\">SKIPPED</font></td>" + "<td>~ts</td></tr>\n", [num2str(CaseNum),fw_name(Mod),GroupName,Func,ResultCol,Comment1]), if CaseNum > 0 -> {US,AS} = get(test_server_skipped), @@ -3325,7 +3292,7 @@ wait_and_resend(Ref, [{_,CurrPid,CaseNum,Mod,Func}|Ps] = Cases, Ok,Skip,Fail) -> {'EXIT',CurrPid,Reason} when Reason /= normal -> %% unexpected termination of test case process {value,{_,_,CaseNum,Mod,Func}} = lists:keysearch(CurrPid, 2, Cases), - print(1, "Error! Process for test case #~p (~p:~p) died! Reason: ~p", + print(1, "Error! Process for test case #~w (~w:~w) died! Reason: ~tp", [CaseNum, Mod, Func, Reason]), exit({unexpected_termination,{CaseNum,Mod,Func},{CurrPid,Reason}}) end; @@ -3464,7 +3431,7 @@ handle_io_and_exits(Main, CurrPid, CaseNum, Mod, Func, Cases) -> {'EXIT',TCPid,Reason} when Reason /= normal -> test_server_io:print_buffered(CurrPid), {value,{_,_,Num,M,F}} = lists:keysearch(TCPid, 2, Cases), - print(1, "Error! Process for test case #~p (~p:~p) died! Reason: ~p", + print(1, "Error! Process for test case #~w (~w:~w) died! Reason: ~tp", [Num, M, F, Reason]), exit({unexpected_termination,{Num,M,F},{TCPid,Reason}}) end. @@ -3540,11 +3507,11 @@ run_test_case1(Ref, Num, Mod, Func, Args, RunInit, end, TSDir = get(test_server_dir), - print(major, "=case ~p:~p", [Mod, Func]), + print(major, "=case ~w:~w", [Mod, Func]), MinorName = start_minor_log_file(Mod, Func), print(minor, "<a name=\"top\"></a>", [], internal_raw), MinorBase = filename:basename(MinorName), - print(major, "=logfile ~s", [filename:basename(MinorName)]), + print(major, "=logfile ~ts", [filename:basename(MinorName)]), UpdatedArgs = %% maybe create unique private directory for test case or config func @@ -3552,14 +3519,13 @@ run_test_case1(Ref, Num, Mod, Func, Args, RunInit, auto_per_run -> update_config(hd(Args), [{tc_logfile,MinorName}]); PrivDirMode -> + %% create unique private directory for test case RunDir = filename:dirname(MinorName), Ext = if Num == 0 -> {_,S,Us} = now(), lists:flatten(io_lib:format(".~w.~w", [S,Us])); true -> - %% create unique private directory for test case - RunDir = filename:dirname(MinorName), lists:flatten(io_lib:format(".~w", [Num])) end, PrivDir = filename:join(RunDir, ?priv_dir) ++ Ext, @@ -3580,16 +3546,17 @@ run_test_case1(Ref, Num, Mod, Func, Args, RunInit, undefined -> ""; Name -> cast_to_list(Name) end, - print(major, "=started ~s", [lists:flatten(timestamp_get(""))]), + print(major, "=started ~ts", [lists:flatten(timestamp_get(""))]), {{Col0,Col1},Style} = get_font_style((RunInit==run_init), Mode), TR = xhtml("<tr valign=\"top\">", ["<tr class=\"",odd_or_even(),"\">"]), - print(html, TR ++ "<td>" ++ Col0 ++ "~s" ++ Col1 ++ "</td>" - "<td>" ++ Col0 ++ "~p" ++ Col1 ++ "</td>" - "<td>" ++ Col0 ++ "~s" ++ Col1 ++ "</td>" - "<td><a href=\"~s\">~p</a></td>" - "<td><a href=\"~s#top\"><</a> <a href=\"~s#end\">></a></td>", - [num2str(Num),fw_name(Mod),GroupName,MinorBase,Func, - MinorBase,MinorBase]), + EncMinorBase = uri_encode(MinorBase), + print(html, TR ++ "<td>" ++ Col0 ++ "~ts" ++ Col1 ++ "</td>" + "<td>" ++ Col0 ++ "~w" ++ Col1 ++ "</td>" + "<td>" ++ Col0 ++ "~ts" ++ Col1 ++ "</td>" + "<td><a href=\"~ts\">~w</a></td>" + "<td><a href=\"~ts#top\"><</a> <a href=\"~ts#end\">></a></td>", + [num2str(Num),fw_name(Mod),GroupName,EncMinorBase,Func, + EncMinorBase,EncMinorBase]), do_unless_parallel(Main, fun erlang:yield/0), @@ -3606,7 +3573,7 @@ run_test_case1(Ref, Num, Mod, Func, Args, RunInit, print(minor, "<a name=\"end\"></a>", [], internal_raw), print(minor, "\n", [], internal_raw), print_timestamp(minor, "Ended at "), - print(major, "=ended ~s", [lists:flatten(timestamp_get(""))]), + print(major, "=ended ~ts", [lists:flatten(timestamp_get(""))]), do_unless_parallel(Main, fun() -> file:set_cwd(filename:dirname(TSDir)) end), @@ -3690,13 +3657,13 @@ run_test_case1(Ref, Num, Mod, Func, Args, RunInit, {'EXIT',_} = Exit -> print(minor, "WARNING: There might be slavenodes left in the" - " system. I tried to kill them, but I failed: ~p\n", + " system. I tried to kill them, but I failed: ~tp\n", [Exit]); [] -> ok; List -> print(minor, "WARNING: ~w slave nodes in system after test"++ "case. Tried to killed them.~n"++ - " Names:~p", + " Names:~tp", [length(List),List]) end; false -> @@ -3756,7 +3723,7 @@ progress(skip, CaseNum, Mod, Func, Loc, Reason, Time, fun() -> {?auto_skip_color,auto_skip} end, fun() -> {?user_skip_color,skip} end), print(major, "=result skipped", []), - print(1, "*** SKIPPED *** ~s", + print(1, "*** SKIPPED *** ~ts", [get_info_str(Func, CaseNum, get(test_server_cases))]), test_server_sup:framework_call(report, [tc_done,{Mod,Func, {skipped,Reason1}}]), @@ -3775,24 +3742,24 @@ progress(skip, CaseNum, Mod, Func, Loc, Reason, Time, end, print(html, "<td>" ++ St0 ++ "~.3fs" ++ St1 ++ "</td>" - "<td><font color=\"~s\">SKIPPED</font></td>" - "<td>~s~s</td></tr>\n", + "<td><font color=\"~ts\">SKIPPED</font></td>" + "<td>~ts~ts</td></tr>\n", [Time,Color,ReasonStr2,Comment1]), FormatLoc = test_server_sup:format_loc(Loc), - print(minor, "=== location ~s", [FormatLoc]), - print(minor, "=== reason = ~s", [ReasonStr1]), + print(minor, "=== location ~ts", [FormatLoc]), + print(minor, "=== reason = ~ts", [ReasonStr1]), Ret; progress(failed, CaseNum, Mod, Func, Loc, timetrap_timeout, T, Comment0, {St0,St1}) -> - print(major, "=result failed: timeout, ~p", [Loc]), - print(1, "*** FAILED *** ~s", + print(major, "=result failed: timeout, ~tp", [Loc]), + print(1, "*** FAILED *** ~ts", [get_info_str(Func, CaseNum, get(test_server_cases))]), test_server_sup:framework_call(report, [tc_done,{Mod,Func, {failed,timetrap_timeout}}]), FormatLastLoc = test_server_sup:format_loc(get_last_loc(Loc)), - ErrorReason = io_lib:format("{timetrap_timeout,~s}", [FormatLastLoc]), + ErrorReason = io_lib:format("{timetrap_timeout,~ts}", [FormatLastLoc]), Comment = case Comment0 of "" -> "<font color=\"red\">" ++ ErrorReason ++ "</font>"; @@ -3802,23 +3769,23 @@ progress(failed, CaseNum, Mod, Func, Loc, timetrap_timeout, T, print(html, "<td>" ++ St0 ++ "~.3fs" ++ St1 ++ "</td>" "<td><font color=\"red\">FAILED</font></td>" - "<td>~s</td></tr>\n", + "<td>~ts</td></tr>\n", [T/1000,Comment]), FormatLoc = test_server_sup:format_loc(Loc), - print(minor, "=== location ~s", [FormatLoc]), + print(minor, "=== location ~ts", [FormatLoc]), print(minor, "=== reason = timetrap timeout", []), failed; progress(failed, CaseNum, Mod, Func, Loc, {testcase_aborted,Reason}, _T, Comment0, {St0,St1}) -> - print(major, "=result failed: testcase_aborted, ~p", [Loc]), - print(1, "*** FAILED *** ~s", + print(major, "=result failed: testcase_aborted, ~tp", [Loc]), + print(1, "*** FAILED *** ~ts", [get_info_str(Func, CaseNum, get(test_server_cases))]), test_server_sup:framework_call(report, [tc_done,{Mod,Func, {failed,testcase_aborted}}]), FormatLastLoc = test_server_sup:format_loc(get_last_loc(Loc)), - ErrorReason = io_lib:format("{testcase_aborted,~s}", [FormatLastLoc]), + ErrorReason = io_lib:format("{testcase_aborted,~ts}", [FormatLastLoc]), Comment = case Comment0 of "" -> "<font color=\"red\">" ++ ErrorReason ++ "</font>"; @@ -3828,24 +3795,24 @@ progress(failed, CaseNum, Mod, Func, Loc, {testcase_aborted,Reason}, _T, print(html, "<td>" ++ St0 ++ "died" ++ St1 ++ "</td>" "<td><font color=\"red\">FAILED</font></td>" - "<td>~s</td></tr>\n", + "<td>~ts</td></tr>\n", [Comment]), FormatLoc = test_server_sup:format_loc(Loc), - print(minor, "=== location ~s", [FormatLoc]), - print(minor, "=== reason = {testcase_aborted,~p}", [Reason]), + print(minor, "=== location ~ts", [FormatLoc]), + print(minor, "=== reason = {testcase_aborted,~tp}", [Reason]), failed; progress(failed, CaseNum, Mod, Func, unknown, Reason, Time, Comment0, {St0,St1}) -> - print(major, "=result failed: ~p, ~p", [Reason,unknown]), - print(1, "*** FAILED *** ~s", + print(major, "=result failed: ~tp, ~w", [Reason,unknown]), + print(1, "*** FAILED *** ~ts", [get_info_str(Func, CaseNum, get(test_server_cases))]), test_server_sup:framework_call(report, [tc_done,{Mod,Func, {failed,Reason}}]), TimeStr = io_lib:format(if is_float(Time) -> "~.3fs"; true -> "~w" end, [Time]), - ErrorReason = lists:flatten(io_lib:format("~p", [Reason])), + ErrorReason = lists:flatten(io_lib:format("~tp", [Reason])), ErrorReason1 = lists:flatten([string:strip(S,left) || S <- string:tokens(ErrorReason,[$\n])]), ErrorReason2 = @@ -3862,19 +3829,19 @@ progress(failed, CaseNum, Mod, Func, unknown, Reason, Time, to_string(Comment0) end, print(html, - "<td>" ++ St0 ++ "~s" ++ St1 ++ "</td>" + "<td>" ++ St0 ++ "~ts" ++ St1 ++ "</td>" "<td><font color=\"red\">FAILED</font></td>" - "<td>~s</td></tr>\n", + "<td>~ts</td></tr>\n", [TimeStr,Comment]), - print(minor, "=== location ~s", [unknown]), + print(minor, "=== location ~w", [unknown]), {FStr,FormattedReason} = format_exception(Reason), print(minor, "=== reason = " ++ FStr, [FormattedReason]), failed; progress(failed, CaseNum, Mod, Func, Loc, Reason, Time, Comment0, {St0,St1}) -> - print(major, "=result failed: ~p, ~p", [Reason,Loc]), - print(1, "*** FAILED *** ~s", + print(major, "=result failed: ~tp, ~tp", [Reason,Loc]), + print(1, "*** FAILED *** ~ts", [get_info_str(Func, CaseNum, get(test_server_cases))]), test_server_sup:framework_call(report, [tc_done,{Mod,Func, {failed,Reason}}]), @@ -3888,12 +3855,12 @@ progress(failed, CaseNum, Mod, Func, Loc, Reason, Time, end, FormatLastLoc = test_server_sup:format_loc(get_last_loc(Loc)), print(html, - "<td>" ++ St0 ++ "~s" ++ St1 ++ "</td>" + "<td>" ++ St0 ++ "~ts" ++ St1 ++ "</td>" "<td><font color=\"red\">FAILED</font></td>" - "<td><font color=\"red\">~s</font>~s</td></tr>\n", + "<td><font color=\"red\">~ts</font>~ts</td></tr>\n", [TimeStr,FormatLastLoc,Comment]), FormatLoc = test_server_sup:format_loc(Loc), - print(minor, "=== location ~s", [FormatLoc]), + print(minor, "=== location ~ts", [FormatLoc]), {FStr,FormattedReason} = format_exception(Reason), print(minor, "=== reason = " ++ FStr, [FormattedReason]), failed; @@ -3909,7 +3876,7 @@ progress(ok, _CaseNum, Mod, Func, _Loc, RetVal, Time, HtmlCmt = test_server_sup:framework_call(format_comment, [String], String), - print(major, "=result ok: ~s", [String]), + print(major, "=result ok: ~ts", [String]), "<td>" ++ HtmlCmt ++ "</td>"; _ -> print(major, "=result ok", []), @@ -3918,13 +3885,13 @@ progress(ok, _CaseNum, Mod, Func, _Loc, RetVal, Time, _ -> "<td>" ++ to_string(Comment0) ++ "</td>" end end, - print(major, "=elapsed ~p", [Time]), + print(major, "=elapsed ~tp", [Time]), print(html, "<td>" ++ St0 ++ "~.3fs" ++ St1 ++ "</td>" "<td><font color=\"green\">Ok</font></td>" - "~s</tr>\n", + "~ts</tr>\n", [Time,Comment]), - print(minor, "=== returned value = ~p", [RetVal]), + print(minor, "=== returned value = ~tp", [RetVal]), ok. %%-------------------------------------------------------------------- @@ -4000,12 +3967,12 @@ print_if_known(Known, {SK,AK}, {SU,AU}) -> io_lib:format(S, A). to_string(Term) when is_list(Term) -> - case (catch io_lib:format("~s", [Term])) of - {'EXIT',_} -> io_lib:format("~p", [Term]); + case (catch io_lib:format("~ts", [Term])) of + {'EXIT',_} -> lists:flatten(io_lib:format("~tp", [Term])); String -> lists:flatten(String) end; to_string(Term) -> - lists:flatten(io_lib:format("~p", [Term])). + lists:flatten(io_lib:format("~tp", [Term])). get_last_loc(Loc) when is_tuple(Loc) -> Loc; @@ -4077,14 +4044,14 @@ format_exception(Reason={_Error,Stack}) when is_list(Stack) -> undefined -> case application:get_env(test_server, format_exception) of {ok,false} -> - {"~p",Reason}; + {"~tp",Reason}; _ -> do_format_exception(Reason) end; FW -> case application:get_env(FW, format_exception) of {ok,false} -> - {"~p",Reason}; + {"~tp",Reason}; _ -> do_format_exception(Reason) end @@ -4099,10 +4066,10 @@ do_format_exception(Reason={Error,Stack}) -> end, case catch lib:format_exception(1, error, Error, Stack, StackFun, PF) of {'EXIT',_} -> - {"~p",Reason}; + {"~tp",Reason}; Formatted -> Formatted1 = re:replace(Formatted, "exception error: ", "", [{return,list}]), - {"~s",lists:flatten(Formatted1)} + {"~ts",lists:flatten(Formatted1)} end. @@ -4173,7 +4140,7 @@ print_who(Host, User) -> "" -> ""; _ -> " by " ++ User end, - print(html, "Run~s on ~s", [UserStr,Host]). + print(html, "Run~ts on ~ts", [UserStr,Host]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% format(Format) -> IoLibReturn @@ -4208,7 +4175,7 @@ format(Detail, Format, Args) -> Str = case catch io_lib:format(Format, Args) of {'EXIT',_} -> - io_lib:format("illegal format; ~p with args ~p.\n", + io_lib:format("illegal format; ~tp with args ~tp.\n", [Format,Args]); Valid -> Valid end, @@ -4244,7 +4211,7 @@ odd_or_even() -> %% date and time. The resulting string is suitable as a filename. timestamp_filename_get(Leader) -> timestamp_get_internal(Leader, - "~s~w-~2.2.0w-~2.2.0w_~2.2.0w.~2.2.0w.~2.2.0w"). + "~ts~w-~2.2.0w-~2.2.0w_~2.2.0w.~2.2.0w.~2.2.0w"). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% timestamp_get(Leader) -> string() @@ -4254,7 +4221,7 @@ timestamp_filename_get(Leader) -> %% date and time. The resulting string is suitable for display. timestamp_get(Leader) -> timestamp_get_internal(Leader, - "~s~w-~2.2.0w-~2.2.0w ~2.2.0w:~2.2.0w:~2.2.0w"). + "~ts~w-~2.2.0w-~2.2.0w ~2.2.0w:~2.2.0w:~2.2.0w"). timestamp_get_internal(Leader, Format) -> {YY,MM,DD,H,M,S} = time_get(), @@ -4588,14 +4555,18 @@ collect_files(Dir, Pattern, St) -> Wc = filename:join([Dir1,Pattern++code:objfile_extension()]), case catch filelib:wildcard(Wc) of {'EXIT', Reason} -> - io:format("Could not collect files: ~p~n", [Reason]), + io:format("Could not collect files: ~tp~n", [Reason]), {error,{collect_fail,Dir,Pattern}}; Mods0 -> Mods = [{path_to_module(Mod),all} || Mod <- lists:sort(Mods0)], collect_cases(Mods, St) end. -path_to_module(Path) -> +path_to_module(Path) when is_list(Path) -> + %% If this is called with a binary, then we are probably in +fnu + %% mode and have found a beam file with name encoded as latin1. We + %% will let this crash since it can not work to load such a module + %% anyway. It should be removed or renamed! list_to_atom(filename:rootname(filename:basename(Path))). collect_case_deny(Mod, Case, MFA, ReqList, SubCases, St) -> @@ -4617,16 +4588,16 @@ check_deny([], _DenyList) -> granted; check_deny(Req, DenyList) -> check_deny([Req], DenyList). check_deny_req({Req,Val}, DenyList) -> - %%io:format("ValCheck ~p=~p in ~p\n", [Req,Val,DenyList]), + %%io:format("ValCheck ~tp=~tp in ~tp\n", [Req,Val,DenyList]), case lists:keysearch(Req, 1, DenyList) of {value,{_Req,DenyVal}} when Val >= DenyVal -> - {denied,io_lib:format("Requirement ~p=~p", [Req,Val])}; + {denied,io_lib:format("Requirement ~tp=~tp", [Req,Val])}; _ -> check_deny_req(Req, DenyList) end; check_deny_req(Req, DenyList) -> case lists:member(Req, DenyList) of - true -> {denied,io_lib:format("Requirement ~p", [Req])}; + true -> {denied,io_lib:format("Requirement ~tp", [Req])}; false -> granted end. @@ -4727,14 +4698,14 @@ get_target_info() -> start_node(Name, Type, Options) -> T = 10 * ?ACCEPT_TIMEOUT * test_server:timetrap_scale_factor(), - format(minor, "Attempt to start ~w node ~p with options ~p", + format(minor, "Attempt to start ~w node ~tp with options ~tp", [Type, Name, Options]), case controller_call({start_node,Name,Type,Options}, T) of {{ok,Nodename}, Host, Cmd, Info, Warning} -> format(minor, - "Successfully started node ~p on ~p with command: ~p", + "Successfully started node ~w on ~tp with command: ~tp", [Nodename, Host, Cmd]), - format(major, "=node_start ~p", [Nodename]), + format(major, "=node_start ~w", [Nodename]), case Info of [] -> ok; _ -> format(minor, Info) @@ -4748,17 +4719,17 @@ start_node(Name, Type, Options) -> {ok, Nodename}; {fail,{Ret, Host, Cmd}} -> format(minor, - "Failed to start node ~p on ~p with command: ~p~n" - "Reason: ~p", + "Failed to start node ~tp on ~tp with command: ~tp~n" + "Reason: ~tp", [Name, Host, Cmd, Ret]), {fail,Ret}; {Ret, undefined, undefined} -> - format(minor, "Failed to start node ~p: ~p", [Name,Ret]), + format(minor, "Failed to start node ~tp: ~tp", [Name,Ret]), Ret; {Ret, Host, Cmd} -> format(minor, - "Failed to start node ~p on ~p with command: ~p~n" - "Reason: ~p", + "Failed to start node ~tp on ~tp with command: ~tp~n" + "Reason: ~tp", [Name, Host, Cmd, Ret]), Ret end. @@ -4972,11 +4943,11 @@ read_cover_file(CoverFile) -> case check_cover_file(List, [], [], []) of {ok,Exclude,Include,Cross} -> {Exclude,Include,Cross}; error -> - io:fwrite("Faulty format of CoverFile ~p\n", [CoverFile]), + io:fwrite("Faulty format of CoverFile ~tp\n", [CoverFile]), {[],[],[]} end; {error,Reason} -> - io:fwrite("Can't read CoverFile ~p\nReason: ~p\n", + io:fwrite("Can't read CoverFile ~ts\nReason: ~tp\n", [CoverFile,Reason]), {[],[],[]} end. @@ -5029,11 +5000,11 @@ check_cross([]) -> cover_analyse({App,CoverInfo}, Analyse, AnalyseMods, Stop, TestDir) -> write_default_cross_coverlog(TestDir), - {ok,CoverLog} = file:open(filename:join(TestDir, ?coverlog_name), [write]), + {ok,CoverLog} = open_html_file(filename:join(TestDir, ?coverlog_name)), write_coverlog_header(CoverLog), io:fwrite(CoverLog, "<h1>Coverage for application '~w'</h1>\n", [App]), io:fwrite(CoverLog, - "<p><a href=\"~s\">Coverdata collected over all tests</a></p>", + "<p><a href=\"~ts\">Coverdata collected over all tests</a></p>", [?cross_coverlog_name]), {CoverFile,_Included,Excluded,Cross} = @@ -5045,7 +5016,7 @@ cover_analyse({App,CoverInfo}, Analyse, AnalyseMods, Stop, TestDir) -> {Excl,Incl,Cr} = read_cover_file(File), {File,Incl,Excl,Cr} end, - io:fwrite(CoverLog, "<p>CoverFile: <code>~p</code>\n", [CoverFile]), + io:fwrite(CoverLog, "<p>CoverFile: <code>~tp</code>\n", [CoverFile]), write_cross_cover_info(TestDir,Cross), case length(cover:imported_modules()) of @@ -5056,11 +5027,11 @@ cover_analyse({App,CoverInfo}, Analyse, AnalyseMods, Stop, TestDir) -> ok end, - io:fwrite(CoverLog, "<p>Excluded module(s): <code>~p</code>\n", [Excluded]), + io:fwrite(CoverLog, "<p>Excluded module(s): <code>~tp</code>\n", [Excluded]), Coverage = cover_analyse(Analyse, AnalyseMods, Stop), - file:write_file(filename:join(TestDir,?raw_coverlog_name), - term_to_binary(Coverage)), + write_file(filename:join(TestDir,?raw_coverlog_name), + term_to_binary(Coverage)), case lists:filter(fun({_M,{_,_,_}}) -> false; (_) -> true @@ -5074,8 +5045,7 @@ cover_analyse({App,CoverInfo}, Analyse, AnalyseMods, Stop, TestDir) -> end, TotPercent = write_cover_result_table(CoverLog, Coverage), - file:write_file(filename:join(TestDir, ?cover_total), - term_to_binary(TotPercent)). + write_file(filename:join(TestDir, ?cover_total),term_to_binary(TotPercent)). cover_analyse(Analyse, AnalyseMods, Stop) -> TestDir = get(test_server_log_dir_base), @@ -5122,25 +5092,25 @@ cross_cover_analyse(Analyse, TagDirs0) -> write_cross_cover_info(_Dir,[]) -> ok; write_cross_cover_info(Dir,Cross) -> - {ok,Fd} = file:open(filename:join(Dir,?cross_cover_info),[write]), - lists:foreach(fun(C) -> io:format(Fd,"~p.~n",[C]) end, Cross), - file:close(Fd). + {ok,Fd} = open_file(filename:join(Dir,?cross_cover_info)), + lists:foreach(fun(C) -> io:format(Fd,"~tp.~n",[C]) end, Cross), + ok = file:close(Fd). %% For each test from which there are cross cover analysed %% modules, write a cross cover log (cross_cover.html). write_cross_cover_logs([{Tag,Coverage}|T],TagDirMods) -> case lists:keyfind(Tag,1,TagDirMods) of {_,Dir,Mods} when Mods=/=[] -> - file:write_file(filename:join(Dir,?raw_cross_coverlog_name), - term_to_binary(Coverage)), + write_file(filename:join(Dir,?raw_cross_coverlog_name), + term_to_binary(Coverage)), CoverLogName = filename:join(Dir,?cross_coverlog_name), - {ok,CoverLog} = file:open(CoverLogName, [write]), + {ok,CoverLog} = open_html_file(CoverLogName), write_coverlog_header(CoverLog), io:fwrite(CoverLog, "<h1>Coverage results for \'~w\' from all tests</h1>\n", [Tag]), write_cover_result_table(CoverLog, Coverage), - io:fwrite("Written file ~p\n", [CoverLogName]); + io:fwrite("Written file ~tp\n", [CoverLogName]); _ -> ok end, @@ -5224,19 +5194,11 @@ analyse_modules(_Dir, [], _DetailsFun, Acc) -> %% Support functions for writing the cover logs (both cross and normal) write_coverlog_header(CoverLog) -> - case catch - io:fwrite(CoverLog, - "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n" - "<!-- autogenerated by '~w'. -->\n" - "<html>\n" - "<head><title>Coverage results</title></head>\n" - "<body bgcolor=\"white\" text=\"black\" " - "link=\"blue\" vlink=\"purple\" alink=\"red\">", - [?MODULE]) of + case catch io:put_chars(CoverLog,html_header("Coverage results")) of {'EXIT',Reason} -> io:format("\n\nERROR: Could not write normal heading in coverlog.\n" "CoverLog: ~w\n" - "Reason: ~p\n", + "Reason: ~tp\n", [CoverLog,Reason]), io:format(CoverLog,"<html><body>\n", []); _ -> @@ -5251,20 +5213,22 @@ format_analyse(M,Cov,NotCov,undefined) -> "<td align=right>~w</td></tr>\n", [M,pc(Cov,NotCov),Cov,NotCov]); format_analyse(M,Cov,NotCov,{file,File}) -> - io_lib:fwrite("<tr><td><a href=\"~s\">~w</a></td>" + io_lib:fwrite("<tr><td><a href=\"~ts\">~w</a></td>" "<td align=right>~w %</td>" "<td align=right>~w</td>" "<td align=right>~w</td></tr>\n", - [filename:basename(File),M,pc(Cov,NotCov),Cov,NotCov]); + [uri_encode(filename:basename(File)), + M,pc(Cov,NotCov),Cov,NotCov]); format_analyse(M,Cov,NotCov,{lines,Lines}) -> CoverOutName = atom_to_list(M)++".COVER.html", - {ok,CoverOut} = file:open(CoverOutName, [write]), + {ok,CoverOut} = open_html_file(CoverOutName), write_not_covered(CoverOut,M,Lines), - io_lib:fwrite("<tr><td><a href=\"~s\">~w</a></td>" + ok = file:close(CoverOut), + io_lib:fwrite("<tr><td><a href=\"~ts\">~w</a></td>" "<td align=right>~w %</td>" "<td align=right>~w</td>" "<td align=right>~w</td></tr>\n", - [CoverOutName,M,pc(Cov,NotCov),Cov,NotCov]); + [uri_encode(CoverOutName),M,pc(Cov,NotCov),Cov,NotCov]); format_analyse(M,Cov,NotCov,{error,_}) -> io_lib:fwrite("<tr><td>~w</td>" "<td align=right>~w %</td>" @@ -5280,8 +5244,8 @@ pc(Cov,NotCov) -> write_not_covered(CoverOut,M,Lines) -> + io:put_chars(CoverOut,html_header("Coverage results for "++atom_to_list(M))), io:fwrite(CoverOut, - "<html>\n" "The following lines in module ~w are not covered:\n" "<table border=3 cellpadding=5>\n" "<th>Line Number</th>\n", @@ -5292,25 +5256,25 @@ write_not_covered(CoverOut,M,Lines) -> ok end, Lines), - io:fwrite(CoverOut,"</table>\n</html>\n", []). + io:put_chars(CoverOut,"</table>\n</body>\n</html>\n"). write_default_coverlog(TestDir) -> - {ok,CoverLog} = file:open(filename:join(TestDir,?coverlog_name), [write]), + {ok,CoverLog} = open_html_file(filename:join(TestDir,?coverlog_name)), write_coverlog_header(CoverLog), - io:fwrite(CoverLog,"Cover tool is not used\n</body></html>\n", []), - file:close(CoverLog). + io:put_chars(CoverLog,"Cover tool is not used\n</body></html>\n"), + ok = file:close(CoverLog). write_default_cross_coverlog(TestDir) -> {ok,CrossCoverLog} = - file:open(filename:join(TestDir,?cross_coverlog_name), [write]), + open_html_file(filename:join(TestDir,?cross_coverlog_name)), write_coverlog_header(CrossCoverLog), io:put_chars(CrossCoverLog, ["No cross cover modules exist for this application,", xhtml("<br>","<br />"), "or cross cover analysis is not completed.\n" "</body></html>\n"]), - file:close(CrossCoverLog). + ok = file:close(CrossCoverLog). write_cover_result_table(CoverLog,Coverage) -> io:fwrite(CoverLog, @@ -5321,7 +5285,7 @@ write_cover_result_table(CoverLog,Coverage) -> {TotCov,TotNotCov} = lists:foldl(fun({M,{Cov,NotCov,Details}},{AccCov,AccNotCov}) -> Str = format_analyse(M,Cov,NotCov,Details), - io:fwrite(CoverLog,"~s", [Str]), + io:fwrite(CoverLog,"~ts", [Str]), {AccCov+Cov,AccNotCov+NotCov}; ({_M,{error,_Reason}},{AccCov,AccNotCov}) -> {AccCov,AccNotCov} @@ -5336,5 +5300,81 @@ write_cover_result_table(CoverLog,Coverage) -> "</body>\n" "</html>\n", [TotPercent,TotCov,TotNotCov]), - file:close(CoverLog), + ok = file:close(CoverLog), TotPercent. + + +%%%----------------------------------------------------------------- +%%% Support functions for writing files + +%% HTML files are always written with utf8 encoding +html_header(Title) -> + ["<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n" + "<!-- autogenerated by '", atom_to_list(?MODULE), "'. -->\n" + "<html>\n" + "<head>\n" + "<title>", Title, "</title>\n" + "<meta http-equiv=\"cache-control\" content=\"no-cache\">\n" + "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n" + "</head>\n" + "<body bgcolor=\"white\" text=\"black\" " + "link=\"blue\" vlink=\"purple\" alink=\"red\">\n"]. + +open_html_file(File) -> + file:open(File,[write,{encoding,utf8}]). + +write_html_file(File,Content) -> + file:write_file(File,unicode:characters_to_binary(Content)). + + +%% Text files are written with default encoding +open_file(File) -> + file:open(File,[write]). + +write_file(File,Content) -> + file:write_file(File,Content). + +%% Encoding of hyperlinks in HTML files +uri_encode(File) -> + Encoding = file:native_name_encoding(), + uri_encode(File,Encoding). + +uri_encode(File,Encoding) -> + Components = filename:split(File), + filename:join([uri_encode_comp(C,Encoding) || C <- Components]). + +uri_encode_comp("/",_) -> + "/"; +uri_encode_comp(Chars,utf8) -> + http_uri:encode(Chars); +uri_encode_comp(Chars,latin1) -> + do_uri_encode(Chars). + +%% Encode a file reference to a latin1 filename so it can be inserted +%% in a utf8 encoded HTML file. +%% This does the same as http_uri:encode/1, except it also encodes all +%% characters >127 - i.e. latin1 but not ASCII. +do_uri_encode([Char|Chars]) -> + case Char>127 orelse sets:is_element(Char, reserved()) of + true -> + [ $% | http_util:integer_to_hexlist(Char)] ++ do_uri_encode(Chars); + false -> + [Char | do_uri_encode(Chars)] + end; +do_uri_encode([]) -> + []. + +%% Copied from http_uri.erl, but slightly modified +%% (not converting @ and :) +reserved() -> + sets:from_list([$;, $&, $=, $+, $,, $/, $?, + $#, $[, $], $<, $>, $\", ${, $}, $|, + $\\, $', $^, $%, $ ]). + +encoding(File) -> + case epp:read_encoding(File) of + none -> + epp:default_encoding(); + E -> + E + end. diff --git a/lib/test_server/src/test_server_gl.erl b/lib/test_server/src/test_server_gl.erl index d32c7c07dc..0ab0d58040 100644 --- a/lib/test_server/src/test_server_gl.erl +++ b/lib/test_server/src/test_server_gl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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 @@ -223,20 +223,12 @@ do_set_props([{reject_io_reqs,Bool}|Ps], St) -> do_set_props([], St) -> St. io_req({put_chars,Enc,Bytes}, _, _) when Enc =:= latin1; Enc =:= unicode -> - to_latin1(Enc, Bytes); + unicode:characters_to_list(Bytes, Enc); io_req({put_chars,Encoding,Mod,Func,[Format,Args]}, _, _) -> Str = Mod:Func(Format, Args), - to_latin1(Encoding, Str); + unicode:characters_to_list(Str, Encoding); io_req(_, _, _) -> passthrough. -to_latin1(unicode, Str) -> - [if C > 255 -> - io_lib:format("\\{~.8B}", [C]); - true -> - C - end || C <- unicode:characters_to_list(Str, unicode)]; -to_latin1(latin1, Str) -> Str. - output(Level, Str, Sender, From, St) when is_integer(Level) -> case selected_by_level(Level, stdout, St) of true -> output(stdout, Str, Sender, From, St); @@ -258,7 +250,7 @@ output(Level, Str, Sender, From, St) when is_atom(Level) -> output_to_file(Level, dress_output(Str, Sender, St), From, St). output_to_file(minor, Data0, From, #st{tc={M,F,A},minor=none}) -> - Data = [io_lib:format("=== ~p:~p/~p\n", [M,F,A]),Data0], + Data = [io_lib:format("=== ~w:~w/~w\n", [M,F,A]),Data0], test_server_io:print(From, unexpected_io, Data), ok; output_to_file(minor, Data, From, #st{minor=Fd}) -> diff --git a/lib/test_server/src/test_server_h.erl b/lib/test_server/src/test_server_h.erl index 78daba855d..c624947306 100644 --- a/lib/test_server/src/test_server_h.erl +++ b/lib/test_server/src/test_server_h.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2012. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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 @@ -140,9 +140,9 @@ report_receiver(info_report, _) -> kernel; report_receiver(_, _) -> none. tag({M,F,A}) when is_atom(M), is_atom(F), is_integer(A) -> - io:format(user, "~n=TESTCASE: ~p:~p/~p", [M,F,A]); + io:format(user, "~n=TESTCASE: ~w:~w/~w", [M,F,A]); tag(Testcase) -> - io:format(user, "~n=TESTCASE: ~p", [Testcase]). + io:format(user, "~n=TESTCASE: ~tp", [Testcase]). tag_event(Event) -> {calendar:local_time(), Event}. diff --git a/lib/test_server/src/test_server_internal.hrl b/lib/test_server/src/test_server_internal.hrl index d204c35293..9a11182725 100644 --- a/lib/test_server/src/test_server_internal.hrl +++ b/lib/test_server/src/test_server_internal.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2010. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/test_server/src/test_server_io.erl b/lib/test_server/src/test_server_io.erl index 777b377201..662ee11515 100644 --- a/lib/test_server/src/test_server_io.erl +++ b/lib/test_server/src/test_server_io.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2012. All Rights Reserved. +%% Copyright Ericsson AB 2012-2013. 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 @@ -235,7 +235,7 @@ handle_info(kill_group_leaders, #st{gls=Gls,stopping=From}=St) -> gen_server:reply(From, ok), {stop,normal,St}; handle_info(Other, St) -> - io:format("Ignoring: ~p\n", [Other]), + io:format("Ignoring: ~tp\n", [Other]), {noreply,St}. terminate(_, _) -> @@ -256,12 +256,12 @@ output(From, Tag, Str, #st{io_buffering=Buffered,buffered=Buf0}=St) -> do_output(stdout, Str, #st{job_name=undefined}) -> io:put_chars(Str); do_output(stdout, Str0, #st{job_name=Name}) -> - Str = io_lib:format("Testing ~s: ~s\n", [Name,Str0]), + Str = io_lib:format("Testing ~ts: ~ts\n", [Name,Str0]), io:put_chars(Str); do_output(Tag, Str, #st{fds=Fds}=St) -> case gb_trees:lookup(Tag, Fds) of none -> - S = io_lib:format("\n*** ERROR: ~p, line ~p: No known '~p' log file\n", + S = io_lib:format("\n*** ERROR: ~w, line ~w: No known '~tp' log file\n", [?MODULE,?LINE,Tag]), do_output(stdout, [S,Str], St); {value,Fd} -> @@ -272,8 +272,8 @@ do_output(Tag, Str, #st{fds=Fds}=St) -> _ -> ok end catch _:Error -> - S = io_lib:format("\n*** ERROR: ~p, line ~p: Error writing to " - "log file '~p': ~p\n", + S = io_lib:format("\n*** ERROR: ~w, line ~w: Error writing to " + "log file '~tp': ~tp\n", [?MODULE,?LINE,Tag,Error]), do_output(stdout, [S,Str], St) end diff --git a/lib/test_server/src/test_server_node.erl b/lib/test_server/src/test_server_node.erl index b307d93c7d..62248af4db 100644 --- a/lib/test_server/src/test_server_node.erl +++ b/lib/test_server/src/test_server_node.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2012. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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 @@ -249,7 +249,7 @@ print_trc(Out,{trace_ts,P,call,{M,F,A},C,Ts},N) -> "~w: ~s~n" "Process : ~w~n" "Call : ~w:~w/~w~n" - "Arguments : ~p~n" + "Arguments : ~tp~n" "Caller : ~w~n~n", [N,ts(Ts),P,M,F,length(A),A,C]); print_trc(Out,{trace_ts,P,call,{M,F,A},Ts},N) -> @@ -257,14 +257,14 @@ print_trc(Out,{trace_ts,P,call,{M,F,A},Ts},N) -> "~w: ~s~n" "Process : ~w~n" "Call : ~w:~w/~w~n" - "Arguments : ~p~n~n", + "Arguments : ~tp~n~n", [N,ts(Ts),P,M,F,length(A),A]); print_trc(Out,{trace_ts,P,return_from,{M,F,A},R,Ts},N) -> io:format(Out, "~w: ~s~n" "Process : ~w~n" "Return from : ~w:~w/~w~n" - "Return value : ~p~n~n", + "Return value : ~tp~n~n", [N,ts(Ts),P,M,F,A,R]); print_trc(Out,{drop,X},N) -> io:format(Out, @@ -274,7 +274,7 @@ print_trc(Out,Trace,N) -> Ts = element(size(Trace),Trace), io:format(Out, "~w: ~s~n" - "Trace : ~p~n~n", + "Trace : ~tp~n~n", [N,ts(Ts),Trace]). ts({_, _, Micro} = Now) -> {{Y,M,D},{H,Min,S}} = calendar:now_to_local_time(Now), @@ -465,8 +465,8 @@ handle_start_node_return(Version,VsnStr,{started, Node, OVersion, OVsnStr}) -> Str = io_lib:format("WARNING: Started node " "reports different system " "version than current node! " - "Current node version: ~p, ~p " - "Started node version: ~p, ~p", + "Current node version: ~tp, ~tp " + "Started node version: ~tp, ~tp", [Version, VsnStr, OVersion, OVsnStr]), Str1 = lists:flatten(Str), diff --git a/lib/test_server/src/test_server_sup.erl b/lib/test_server/src/test_server_sup.erl index a6d426887e..cd96568970 100644 --- a/lib/test_server/src/test_server_sup.erl +++ b/lib/test_server/src/test_server_sup.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2012. All Rights Reserved. +%% Copyright Ericsson AB 1998-2013. 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 @@ -72,10 +72,10 @@ timetrap(Timeout0, ReportTVal, Scale, Pid) -> after 10000 -> %% Pid is probably trapping exits, hit it harder... catch error_logger:warning_msg( - "Testcase process ~p not " + "Testcase process ~w not " "responding to timetrap " "timeout:~n" - " ~p.~n" + " ~tp.~n" "Killing testcase...~n", [Pid, Trap]), exit(Pid, kill) @@ -142,11 +142,11 @@ call_crash(Time,Crash,M,F,A) -> {'EXIT',Pid,_Reason} when Crash==any -> ok; {'EXIT',Reason} -> - test_server:format(12, "Wrong crash reason. Wanted ~p, got ~p.", + test_server:format(12, "Wrong crash reason. Wanted ~tp, got ~tp.", [Crash, Reason]), exit({wrong_crash_reason,Reason}); {'EXIT',Pid,Reason} -> - test_server:format(12, "Wrong crash reason. Wanted ~p, got ~p.", + test_server:format(12, "Wrong crash reason. Wanted ~tp, got ~tp.", [Crash, Reason]), exit({wrong_crash_reason,Reason}); {'EXIT',OtherPid,Reason} when OldTrapExit == false -> @@ -312,7 +312,7 @@ check_dict(Dict, Reason) -> [] -> 1; % All ok. List -> - io:format("** ~s (~s) ->~n~p~n",[Reason, Dict, List]), + io:format("** ~ts (~ts) ->~n~tp~n",[Reason, Dict, List]), 0 end. @@ -321,7 +321,7 @@ check_dict_tolerant(Dict, Reason, Mode) -> [] -> 1; % All ok. List -> - io:format("** ~s (~s) ->~n~p~n",[Reason, Dict, List]), + io:format("** ~ts (~ts) ->~n~tp~n",[Reason, Dict, List]), case Mode of pedantic -> 0; @@ -377,7 +377,7 @@ check_new_crash_dumps() -> ok; Num -> test_server_ctrl:format(minor, - "Found ~p crash dumps:~n", [Num]), + "Found ~w crash dumps:~n", [Num]), append_files_to_logfile(Dumps), delete_files(Dumps) end. @@ -385,7 +385,7 @@ check_new_crash_dumps() -> append_files_to_logfile([]) -> ok; append_files_to_logfile([File|Files]) -> NodeName=from($., File), - test_server_ctrl:format(minor, "Crash dump from node ~p:~n",[NodeName]), + test_server_ctrl:format(minor, "Crash dump from node ~tp:~n",[NodeName]), Fd=get(test_server_minor_fd), case file:read_file(File) of {ok, Bin} -> @@ -397,22 +397,22 @@ append_files_to_logfile([File|Files]) -> %% fail, but in that case it will throw an exception so that %% we will be aware of the problem. io:format(Fd, "Unable to write the crash dump " - "to this file: ~p~n", [file:format_error(Error)]) + "to this file: ~tp~n", [file:format_error(Error)]) end; _Error -> - io:format(Fd, "Failed to read: ~s\n", [File]) + io:format(Fd, "Failed to read: ~ts\n", [File]) end, append_files_to_logfile(Files). delete_files([]) -> ok; delete_files([File|Files]) -> - io:format("Deleting file: ~s~n", [File]), + io:format("Deleting file: ~ts~n", [File]), case file:delete(File) of {error, _} -> case file:rename(File, File++".old") of {error, Error} -> io:format("Could neither delete nor rename file " - "~s: ~s.~n", [File, Error]); + "~ts: ~ts.~n", [File, Error]); _ -> ok end; @@ -555,7 +555,7 @@ format_loc([{Mod,LineOrFunc}]) -> format_loc({Mod,Func}) when is_atom(Func) -> io_lib:format("{~w,~w}",[Mod,Func]); format_loc(Loc) -> - io_lib:format("~p",[Loc]). + io_lib:format("~tp",[Loc]). format_loc1([{Mod,Func,Line}]) -> [" ",format_loc1({Mod,Func,Line}),"]"]; @@ -566,9 +566,10 @@ format_loc1({Mod,Func,Line}) -> case {lists:member(no_src, get(test_server_logopts)), lists:reverse(ModStr)} of {false,[$E,$T,$I,$U,$S,$_|_]} -> - io_lib:format("{~w,~w,<a href=\"~s~s#~w\">~w</a>}", - [Mod,Func,downcase(ModStr),?src_listing_ext, - Line,Line]); + io_lib:format("{~w,~w,<a href=\"~ts~ts#~w\">~w</a>}", + [Mod,Func, + test_server_ctrl:uri_encode(downcase(ModStr)), + ?src_listing_ext,Line,Line]); _ -> io_lib:format("{~w,~w,~w}",[Mod,Func,Line]) end. diff --git a/lib/test_server/src/ts.erl b/lib/test_server/src/ts.erl index cfd7161dbd..4e5dc1b759 100644 --- a/lib/test_server/src/ts.erl +++ b/lib/test_server/src/ts.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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/test_server/src/ts_install.erl b/lib/test_server/src/ts_install.erl index ba8952f10f..e9e559df5d 100644 --- a/lib/test_server/src/ts_install.erl +++ b/lib/test_server/src/ts_install.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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 @@ -93,7 +93,7 @@ autoconf1(_,_) -> throw(cross_installation_failed). autoconf2({ok, Bin}) -> - get_vars(binary_to_list(Bin), name, [], []); + get_vars(ts_lib:b2s(Bin), name, [], []); autoconf2(Error) -> Error. @@ -170,12 +170,12 @@ parse_xcomp_file(Filepath) -> parse_xcomp_file([<<A:8,_/binary>> = Line|R],Envs,Flags) when $A =< A, A =< $Z -> [Var,Value] = binary:split(Line,<<"=">>), - parse_xcomp_file(R,[{binary_to_list(Var), - binary_to_list(Value)}|Envs],Flags); + parse_xcomp_file(R,[{ts_lib:b2s(Var), + ts_lib:b2s(Value)}|Envs],Flags); parse_xcomp_file([<<"erl_xcomp_",Line/binary>>|R],Envs,Flags) -> [Var,Value] = binary:split(Line,<<"=">>), - parse_xcomp_file(R,Envs,[{binary_to_list(Var), - binary_to_list(Value)}|Flags]); + parse_xcomp_file(R,Envs,[{ts_lib:b2s(Var), + ts_lib:b2s(Value)}|Flags]); parse_xcomp_file([_|R],Envs,Flags) -> parse_xcomp_file(R,Envs,Flags); parse_xcomp_file([],Envs,Flags) -> @@ -407,4 +407,3 @@ extra_platform_label() -> [_|_]=Label -> "/" ++ Label; false -> "" end. - diff --git a/lib/test_server/src/ts_lib.erl b/lib/test_server/src/ts_lib.erl index c0200ab67c..a00f607fc1 100644 --- a/lib/test_server/src/ts_lib.erl +++ b/lib/test_server/src/ts_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. 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,7 +29,8 @@ specs/1, suites/2, subst_file/3, subst/2, print_data/1, make_non_erlang/2, - maybe_atom_to_list/1, progress/4 + maybe_atom_to_list/1, progress/4, + b2s/1 ]). error(Reason) -> @@ -155,7 +156,7 @@ suite_order(_) -> 200. subst_file(In, Out, Vars) -> case file:read_file(In) of {ok, Bin} -> - Subst = subst(binary_to_list(Bin), Vars, []), + Subst = subst(b2s(Bin), Vars, []), case file:write_file(Out, Subst) of ok -> ok; @@ -334,3 +335,11 @@ make_non_erlang_do(DataDir, Variables) -> after timer:sleep(100) %% maybe unnecessary now when we don't do set_cwd anymore end. + +b2s(Bin) -> + unicode:characters_to_list(Bin,default_encoding()). + +default_encoding() -> + try epp:default_encoding() + catch error:undef -> latin1 + end. diff --git a/lib/test_server/test/erl2html2_SUITE.erl b/lib/test_server/test/erl2html2_SUITE.erl index 96175413a1..37c2b74d8e 100644 --- a/lib/test_server/test/erl2html2_SUITE.erl +++ b/lib/test_server/test/erl2html2_SUITE.erl @@ -1,11 +1,21 @@ -%%%------------------------------------------------------------------- -%%% @author Siri Hansen <[email protected]> -%%% @copyright (C) 2012, Siri Hansen -%%% @doc -%%% -%%% @end -%%% Created : 15 Nov 2012 by Siri Hansen <[email protected]> -%%%------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2012. 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(erl2html2_SUITE). -compile(export_all). diff --git a/lib/test_server/test/test_server_SUITE.erl b/lib/test_server/test/test_server_SUITE.erl index fb82a87fd0..bea2c0dc49 100644 --- a/lib/test_server/test/test_server_SUITE.erl +++ b/lib/test_server/test/test_server_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. 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 @@ -31,6 +31,7 @@ -include_lib("common_test/include/ct.hrl"). -include("test_server_test_lib.hrl"). +-include_lib("kernel/include/file.hrl"). %%-------------------------------------------------------------------- %% COMMON TEST CALLBACK FUNCTIONS @@ -68,6 +69,13 @@ init_per_testcase(_TestCase, Config) -> %% @spec end_per_testcase(TestCase, Config0) -> %% void() | {save_config,Config1} | {fail,Reason} +end_per_testcase(test_server_unicode, _Config) -> + [_,Host] = string:tokens(atom_to_list(node()), "@"), + N1 = list_to_atom("test_server_tester_latin1" ++ "@" ++ Host), + N2 = list_to_atom("test_server_tester_utf8" ++ "@" ++ Host), + test_server:stop_node(N1), + test_server:stop_node(N2), + ok; end_per_testcase(_TestCase, _Config) -> ok. @@ -80,7 +88,8 @@ all() -> [test_server_SUITE, test_server_parallel01_SUITE, test_server_conf02_SUITE, test_server_conf01_SUITE, test_server_skip_SUITE, test_server_shuffle01_SUITE, - test_server_break_SUITE, test_server_cover_SUITE]. + test_server_break_SUITE, test_server_cover_SUITE, + test_server_unicode]. %%-------------------------------------------------------------------- @@ -171,7 +180,24 @@ test_server_cover_SUITE(Config) -> ok end. +test_server_unicode(Config) -> + run_test_server_tests("test_server_unicode_SUITE", [], + 5, 0, 3, 3, 0, 0, 0, 0, 5, Config), + + %% Create and run two test suites - one with filename and content + %% in latin1 (if the default filename mode is latin1) and one with + %% filename and content in utf8. Both have name and content + %% including letters ���. Check that all logs are generated with + %% utf8 encoded filenames. + case file:native_name_encoding() of + utf8 -> + ok; + latin1 -> + generate_and_run_unicode_test(Config,latin1) + end, + generate_and_run_unicode_test(Config,utf8). +%%%----------------------------------------------------------------- run_test_server_tests(SuiteName, Skip, NCases, NFail, NExpected, NSucc, NUsrSkip, NAutoSkip, NActualSkip, NActualFail, NActualSucc, Config) -> @@ -182,12 +208,13 @@ run_test_server_tests(SuiteName, Skip, NCases, NFail, NExpected, NSucc, run_test_server_tests(SuiteName, Skip, NCases, NFail, NExpected, NSucc, NUsrSkip, NAutoSkip, NActualSkip, NActualFail, NActualSucc, Cover, Config) -> - + Node = proplists:get_value(node, Config), + Encoding = rpc:call(Node,file,native_name_encoding,[]), WorkDir = proplists:get_value(work_dir, Config), - ct:log("<a href=\"file://~s\">Test case log files</a>\n", - [filename:join(WorkDir, SuiteName++".logs")]), + LogDir = filename:join(WorkDir, SuiteName++".logs"), + LogDirUri = test_server_ctrl:uri_encode(LogDir, Encoding), + ct:log("<a href=\"file://~s\">Test case log files</a>\n", [LogDirUri]), - Node = proplists:get_value(node, Config), {ok,_Pid} = rpc:call(Node,test_server_ctrl, start, []), case Cover of false -> @@ -207,12 +234,10 @@ run_test_server_tests(SuiteName, Skip, NCases, NFail, NExpected, NSucc, rpc:call(Node,test_server_ctrl, stop, []), - {ok,Data} = test_server_test_lib:parse_suite( - lists:last( - lists:sort( - filelib:wildcard( - filename:join([WorkDir,SuiteName++".logs", - "run*","suite.log"]))))), + LogDir1 = translate_filename(LogDir,Encoding), + LastRunDir = get_latest_run_dir(LogDir1), + LastSuiteLog = filename:join(LastRunDir,"suite.log"), + {ok,Data} = test_server_test_lib:parse_suite(LastSuiteLog), check([{"Number of cases",NCases,Data#suite.n_cases}, {"Number failed",NFail,Data#suite.n_cases_failed}, {"Number expected",NExpected,Data#suite.n_cases_expected}, @@ -229,6 +254,47 @@ run_test_server_tests(SuiteName, Skip, NCases, NFail, NExpected, NSucc, end,{0,0,0},Data#suite.cases), Data. +translate_filename(Filename,EncodingOnTestNode) -> + case {file:native_name_encoding(),EncodingOnTestNode} of + {X,X} -> Filename; + {utf8,latin1} -> list_to_binary(Filename); + {latin1,utf8} -> unicode:characters_to_binary(Filename) + end. + +get_latest_run_dir(Dir) -> + %% For the time being, filelib:wildcard can not take a binary + %% argument, so we avoid using this here. + case file:list_dir(Dir) of + {ok,Files} -> + {ok,RE} = re:compile(<<"^run.[1-2][-_\.0-9]*$">>), + RunDirs = lists:filter( + fun(F) -> + L = l(F), + case re:run(F,RE) of + {match,[{0,L}]} -> true; + _ -> false + end + end, Files), + case RunDirs of + [] -> + Dir; + [H|T] -> + filename:join(Dir,get_latest_dir(T,H)) + end; + _ -> + Dir + end. + +l(X) when is_binary(X) -> size(X); +l(X) when is_list(X) -> length(X). + +get_latest_dir([H|T],Latest) when H>Latest -> + get_latest_dir(T,H); +get_latest_dir([_|T],Latest) -> + get_latest_dir(T,Latest); +get_latest_dir([],Latest) -> + Latest. + check([{Str,Same,Same}|T], Status) -> io:format("~s: ~p\n", [Str,Same]), check(T, Status); @@ -246,4 +312,139 @@ until(Fun) -> timer:sleep(100), until(Fun) end. - + +generate_and_run_unicode_test(Config0,Encoding) -> + DataDir = ?config(data_dir,Config0), + Suite = create_unicode_test_suite(DataDir,Encoding), + + %% We can not run this test on default node since it must be + %% started with correct file name mode (+fnu/+fnl). + %% OBS: the node are stopped by end_per_testcase/2 + Config1 = lists:keydelete(node,1,Config0), + Config2 = lists:keydelete(work_dir,1,Config1), + NodeName = list_to_atom("test_server_tester_" ++ atom_to_list(Encoding)), + ErtsSwitch = case Encoding of + latin1 -> "+fnl"; + utf8 -> "+fnu" + end, + Config = start_node(Config2,NodeName,ErtsSwitch), + + %% Compile the suite + Node = proplists:get_value(node,Config), + {ok,Mod} = rpc:call(Node,compile,file,[Suite,[{outdir,DataDir}]]), + ModStr = atom_to_list(Mod), + + %% Clean logdir + LogDir0 = filename:join(DataDir,ModStr++".logs"), + LogDir = translate_filename(LogDir0,Encoding), + rm_dir(LogDir), + + %% Run the test + run_test_server_tests(ModStr, [], 3, 0, 1, 1, 0, 0, 0, 0, 3, Config), + + %% Check that all logs are created with utf8 encoded filenames + true = filelib:is_dir(LogDir), + + RunDir = get_latest_run_dir(LogDir), + true = filelib:is_dir(RunDir), + + LowerModStr = string:to_lower(ModStr), + SuiteHtml = translate_filename(LowerModStr++".src.html",Encoding), + true = filelib:is_regular(filename:join(RunDir,SuiteHtml)), + + TCLog = translate_filename(LowerModStr++".tc_���.html",Encoding), + true = filelib:is_regular(filename:join(RunDir,TCLog)), + ok. + +%% Same as test_server_test_lib:start_slave, but starts a peer with +%% additional arguments. +%% The reason for this is that we need to start nodes with +fnu/+fnl, +%% and that will not work well with a slave node since slave nodes run +%% remote file system on master - i.e. they will use same file name +%% mode as the master. +start_node(Config,Name,Args) -> + [_,Host] = string:tokens(atom_to_list(node()), "@"), + ct:log("Trying to start ~w@~s~n",[Name,Host]), + case test_server:start_node(Name, peer, [{args,Args}]) of + {error,Reason} -> + test_server:fail(Reason); + {ok,Node} -> + ct:log("Node ~p started~n", [Node]), + test_server_test_lib:prepare_tester_node(Node,Config) + end. + +create_unicode_test_suite(Dir,Encoding) -> + ModStr = "test_server_"++atom_to_list(Encoding)++"_���_SUITE", + File = filename:join(Dir,ModStr++".erl"), + Suite = + ["%% -*- ",epp:encoding_to_string(Encoding)," -*-\n", + "-module(",ModStr,").\n" + "\n" + "-export([all/1, init_per_suite/1, end_per_suite/1]).\n" + "-export([init_per_testcase/2, end_per_testcase/2]).\n" + "-export([tc_���/1]).\n" + "\n" + "-include_lib(\"test_server/include/test_server.hrl\").\n" + "\n" + "all(suite) ->\n" + " [tc_���].\n" + "\n" + "init_per_suite(Config) ->\n" + " Config.\n" + "\n" + "end_per_suite(_Config) ->\n" + " ok.\n" + "\n" + "init_per_testcase(_Case,Config) ->\n" + " init_timetrap(500,Config).\n" + "\n" + "init_timetrap(T,Config) ->\n" + " Dog = ?t:timetrap(T),\n" + " [{watchdog, Dog}|Config].\n" + "\n" + "end_per_testcase(_Case,Config) ->\n" + " cancel_timetrap(Config).\n" + "\n" + "cancel_timetrap(Config) ->\n" + " Dog=?config(watchdog, Config),\n" + " ?t:timetrap_cancel(Dog),\n" + " ok.\n" + "\n" + "tc_���(Config) when is_list(Config) ->\n" + " true = filelib:is_dir(?config(priv_dir,Config)),\n" + " ok.\n"], + {ok,Fd} = file:open(raw_filename(File,Encoding),[write,{encoding,Encoding}]), + io:put_chars(Fd,Suite), + ok = file:close(Fd), + File. + +raw_filename(Name,latin1) -> list_to_binary(Name); +raw_filename(Name,utf8) -> unicode:characters_to_binary(Name). + +rm_dir(Dir) -> + case file:list_dir(Dir) of + {error,enoent} -> + ok; + {ok,Files} -> + rm_files([filename:join(Dir, F) || F <- Files]), + file:del_dir(Dir) + end. + +rm_files([F | Fs]) -> + case file:read_file_info(F) of + {ok,#file_info{type=directory}} -> + rm_dir(F), + rm_files(Fs); + {ok,_Regular} -> + case file:delete(F) of + ok -> + rm_files(Fs); + {error,Errno} -> + exit({del_failed,F,Errno}) + end + end; +rm_files([]) -> + ok. + +erts_switch(latin1) -> "+fnl"; +erts_switch(utf8) -> "+fnu". diff --git a/lib/test_server/test/test_server_SUITE_data/Makefile.src b/lib/test_server/test/test_server_SUITE_data/Makefile.src index c770627f04..5aeb035572 100644 --- a/lib/test_server/test/test_server_SUITE_data/Makefile.src +++ b/lib/test_server/test/test_server_SUITE_data/Makefile.src @@ -7,4 +7,5 @@ all: erlc test_server_skip_SUITE.erl erlc test_server_break_SUITE.erl erlc test_server_cover_SUITE.erl - erlc +debug_info test_server_cover_SUITE_data/cover_helper.erl
\ No newline at end of file + erlc +debug_info test_server_cover_SUITE_data/cover_helper.erl + erlc test_server_unicode_SUITE.erl diff --git a/lib/test_server/test/test_server_SUITE_data/test_server_unicode_SUITE.erl b/lib/test_server/test/test_server_SUITE_data/test_server_unicode_SUITE.erl new file mode 100644 index 0000000000..662adedd4c --- /dev/null +++ b/lib/test_server/test/test_server_SUITE_data/test_server_unicode_SUITE.erl @@ -0,0 +1,82 @@ +%% -*- coding: utf-8 -*- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2013. 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(test_server_unicode_SUITE). + +-export([all/1, init_per_suite/1, end_per_suite/1]). +-export([init_per_testcase/2, end_per_testcase/2]). +-export([':#"|@\\ difficult_case_name_äöå'/1, + print_and_log_unicode/1, + print_and_log_latin1/1]). + +-include_lib("test_server/include/test_server.hrl"). + +all(suite) -> + [':#"|@\\ difficult_case_name_äöå', + print_and_log_unicode, + print_and_log_latin1]. + +init_per_suite(Config) -> + Config. + +end_per_suite(_Config) -> + ok. + +init_per_testcase(_Case,Config) -> + init_timetrap(500,Config). + +init_timetrap(T,Config) -> + Dog = ?t:timetrap(T), + [{watchdog, Dog}|Config]. + +end_per_testcase(_Case,Config) -> + cancel_timetrap(Config). + +cancel_timetrap(Config) -> + Dog=?config(watchdog, Config), + ?t:timetrap_cancel(Dog), + ok. + + +%%%----------------------------------------------------------------- +%%% Test cases + +':#"|@\\ difficult_case_name_äöå'(Config) when is_list(Config) -> + ok. + +print_and_log_unicode(Config) when is_list(Config) -> + String = "שלום-שלום+של 日本語", + test_server:comment(String), + test_server:capture_start(), + io:format("String with ts: ~ts",[String]), + test_server:capture_stop(), + "String with ts: "++String = lists:flatten(test_server:capture_get()), + ok. + +print_and_log_latin1(Config) when is_list(Config) -> + String = "æøå", + test_server:comment(String), + test_server:capture_start(), + io:format("String with s: ~s",[String]), + io:format("String with ts: ~ts",[String]), + test_server:capture_stop(), + ["String with s: "++String, + "String with ts: "++String] = + [lists:flatten(L) || L<- test_server:capture_get()], + ok. diff --git a/lib/test_server/test/test_server_test_lib.erl b/lib/test_server/test/test_server_test_lib.erl index d466aa0110..cd6804f7ad 100644 --- a/lib/test_server/test/test_server_test_lib.erl +++ b/lib/test_server/test/test_server_test_lib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2012. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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 @@ -20,6 +20,9 @@ -export([parse_suite/1]). -export([init/2, pre_init_per_testcase/3, post_end_per_testcase/4]). +%% for test_server_SUITE when node can not be started as slave +-export([prepare_tester_node/2]). + -include("test_server_test_lib.hrl"). %% The CTH hooks all tests @@ -49,38 +52,41 @@ start_slave(Config,_Level) -> ct:log("Node ~p started~n", [Node]), IsCover = test_server:is_cover(), if IsCover -> - cover:start(Node); - true-> - ok + cover:start(Node); + true-> + ok end, - DataDir = proplists:get_value(data_dir, Config), - %% We would normally use priv_dir for temporary data, - %% but the pathnames gets too long on Windows. - %% Until the run-time system can support long pathnames, - %% use the data dir. - WorkDir = DataDir, - - %% WorkDir as well as directory of Test Server suites - %% have to be in code path on Test Server node. - [_ | Parts] = lists:reverse(filename:split(DataDir)), - TSDir = filename:join(lists:reverse(Parts)), - AddPathDirs = case proplists:get_value(path_dirs, Config) of - undefined -> []; - Ds -> Ds - end, - PathDirs = [WorkDir,TSDir | AddPathDirs], - [true = rpc:call(Node, code, add_patha, [D]) || D <- PathDirs], - io:format("Dirs added to code path (on ~w):~n", - [Node]), - [io:format("~s~n", [D]) || D <- PathDirs], - - true = rpc:call(Node, os, putenv, - ["TEST_SERVER_FRAMEWORK", "undefined"]), - - ok = rpc:call(Node, file, set_cwd, [WorkDir]), - [{node,Node}, {work_dir,WorkDir} | Config] + prepare_tester_node(Node,Config) end. +prepare_tester_node(Node,Config) -> + DataDir = proplists:get_value(data_dir, Config), + %% We would normally use priv_dir for temporary data, + %% but the pathnames gets too long on Windows. + %% Until the run-time system can support long pathnames, + %% use the data dir. + WorkDir = DataDir, + + %% WorkDir as well as directory of Test Server suites + %% have to be in code path on Test Server node. + [_ | Parts] = lists:reverse(filename:split(DataDir)), + TSDir = filename:join(lists:reverse(Parts)), + AddPathDirs = case proplists:get_value(path_dirs, Config) of + undefined -> []; + Ds -> Ds + end, + PathDirs = [WorkDir,TSDir | AddPathDirs], + [true = rpc:call(Node, code, add_patha, [D]) || D <- PathDirs], + io:format("Dirs added to code path (on ~w):~n", + [Node]), + [io:format("~s~n", [D]) || D <- PathDirs], + + true = rpc:call(Node, os, putenv, + ["TEST_SERVER_FRAMEWORK", "undefined"]), + + ok = rpc:call(Node, file, set_cwd, [WorkDir]), + [{node,Node}, {work_dir,WorkDir} | Config]. + post_end_per_testcase(_TC, Config, Return, State) -> Node = proplists:get_value(node, Config), Cover = test_server:is_cover(), diff --git a/lib/test_server/vsn.mk b/lib/test_server/vsn.mk index b956ebb2b3..8949f13b2f 100644 --- a/lib/test_server/vsn.mk +++ b/lib/test_server/vsn.mk @@ -1 +1 @@ -TEST_SERVER_VSN = 3.5.3 +TEST_SERVER_VSN = 3.6 diff --git a/lib/toolbar/doc/src/notes.xml b/lib/toolbar/doc/src/notes.xml index f3ed41bd82..925c9c259c 100644 --- a/lib/toolbar/doc/src/notes.xml +++ b/lib/toolbar/doc/src/notes.xml @@ -31,6 +31,21 @@ <p>This document describes the changes made to the Toolbar application.</p> +<section><title>Toolbar 1.4.2.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + <section><title>Toolbar 1.4.2.2</title> <section><title>Improvements and New Features</title> diff --git a/lib/toolbar/vsn.mk b/lib/toolbar/vsn.mk index 9fbfec871f..e84fb4e37b 100644 --- a/lib/toolbar/vsn.mk +++ b/lib/toolbar/vsn.mk @@ -1,4 +1,4 @@ -TOOLBAR_VSN = 1.4.2.2 +TOOLBAR_VSN = 1.4.2.3 diff --git a/lib/tools/doc/src/notes.xml b/lib/tools/doc/src/notes.xml index 5d7bd464ce..7f2fe34666 100644 --- a/lib/tools/doc/src/notes.xml +++ b/lib/tools/doc/src/notes.xml @@ -30,6 +30,98 @@ </header> <p>This document describes the changes made to the Tools application.</p> +<section><title>Tools 2.6.9</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Add missing modules in app-file</p> + <p> + Own Id: OTP-10439</p> + </item> + <item> + <p> + Make erlang-mode more compatible with package.el (Thanks + to Gleb Peregud)</p> + <p> + Own Id: OTP-10465</p> + </item> + <item> + <p> + Fix various typos (thanks to Tuncer Ayaz)</p> + <p> + Own Id: OTP-10611</p> + </item> + <item> + <p> + Add separate face for exported functions (Thanks to + Thomas J�rvstrand)</p> + <p> + Own Id: OTP-10637</p> + </item> + <item> + <p> + The BIF highlighting in the emacs mode has been updated + to correspond with the correct BIFs.</p> + <p> + Own Id: OTP-10774</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> Support for Unicode has been implemented. </p> + <p> + Own Id: OTP-10302</p> + </item> + <item> + <p> + A new function, cover:flush(Nodes), is added which will + fetch data from remote nodes without stopping cover on + those nodes. This is used by test_server and common_test + when it is safe to assume that the node will be + terminated after the test anyway. The purpose is to avoid + processes crashing when re-loading the original beam if + the processes is still running old code.</p> + <p> + Remote nodes will now continue to count code coverage if + the connection to the main node is broken. Earlier, a + broken connection would cause the cover_server on the + remote node to die and thus any still cover compiled + modules would cause process crash when trying to insert + cover data in ets tables that used to exist on the + cover_server. The new functionality also involves + synchronization with the main node if the nodes are + reconnected.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-10523 Aux Id: OTP-10427 </p> + </item> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> + Fix syntax highlighting of $\' in Emacs mode. Thanks to + Magnus Henoch.</p> + <p> + Own Id: OTP-10766</p> + </item> + </list> + </section> + +</section> + <section><title>Tools 2.6.8</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/tools/doc/src/xref.xml b/lib/tools/doc/src/xref.xml index 9706ae6746..891a81639a 100644 --- a/lib/tools/doc/src/xref.xml +++ b/lib/tools/doc/src/xref.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2000</year><year>2011</year> + <year>2000</year><year>2013</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> diff --git a/lib/tools/emacs/erlang.el b/lib/tools/emacs/erlang.el index 21615f4cd9..d6d4457920 100644 --- a/lib/tools/emacs/erlang.el +++ b/lib/tools/emacs/erlang.el @@ -7,7 +7,7 @@ ;; %CopyrightBegin% ;; -;; Copyright Ericsson AB 1996-2012. All Rights Reserved. +;; Copyright Ericsson AB 1996-2013. 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/tools/src/Makefile b/lib/tools/src/Makefile index f11589d82b..e606b97a48 100644 --- a/lib/tools/src/Makefile +++ b/lib/tools/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1996-2012. All Rights Reserved. +# Copyright Ericsson AB 1996-2013. 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/tools/src/cover.erl b/lib/tools/src/cover.erl index 468225dc13..2579711dc7 100644 --- a/lib/tools/src/cover.erl +++ b/lib/tools/src/cover.erl @@ -1372,10 +1372,15 @@ do_compile_beam(Module,Beam,UserOptions) -> Forms0 = epp:interpret_file_attribute(Code), {Forms,Vars} = transform(Vsn, Forms0, Module, Beam), + %% We need to recover the source from the compilation + %% info otherwise the newly compiled module will have + %% source pointing to the current directory + SourceInfo = get_source_info(Module, Beam), + %% Compile and load the result %% It's necessary to check the result of loading since it may %% fail, for example if Module resides in a sticky directory - {ok, Module, Binary} = compile:forms(Forms, UserOptions), + {ok, Module, Binary} = compile:forms(Forms, SourceInfo ++ UserOptions), case code:load_binary(Module, ?TAG, Binary) of {module, Module} -> @@ -1403,6 +1408,17 @@ get_abstract_code(Module, Beam) -> Error -> Error end. +get_source_info(Module, Beam) -> + case beam_lib:chunks(Beam, [compile_info]) of + {ok, {Module, [{compile_info, Compile}]}} -> + case lists:keyfind(source, 1, Compile) of + { source, _ } = Tuple -> [Tuple]; + false -> [] + end; + _ -> + [] + end. + transform(Vsn, Code, Module, Beam) when Vsn=:=abstract_v1; Vsn=:=abstract_v2 -> Vars0 = #vars{module=Module, vsn=Vsn}, MainFile=find_main_filename(Code), @@ -1783,17 +1799,11 @@ munge_expr({'catch',Line,Expr}, Vars) -> {MungedExpr, Vars2} = munge_expr(Expr, Vars), {{'catch',Line,MungedExpr}, Vars2}; munge_expr({call,Line1,{remote,Line2,ExprM,ExprF},Exprs}, - Vars) when Vars#vars.is_guard=:=false-> + Vars) -> {MungedExprM, Vars2} = munge_expr(ExprM, Vars), {MungedExprF, Vars3} = munge_expr(ExprF, Vars2), {MungedExprs, Vars4} = munge_exprs(Exprs, Vars3, []), {{call,Line1,{remote,Line2,MungedExprM,MungedExprF},MungedExprs}, Vars4}; -munge_expr({call,Line1,{remote,_Line2,_ExprM,ExprF},Exprs}, - Vars) when Vars#vars.is_guard=:=true -> - %% Difference in abstract format after preprocessing: BIF calls in guards - %% are translated to {remote,...} (which is not allowed as source form) - %% NOT NECESSARY FOR Vsn=raw_abstract_v1 - munge_expr({call,Line1,ExprF,Exprs}, Vars); munge_expr({call,Line,Expr,Exprs}, Vars) -> {MungedExpr, Vars2} = munge_expr(Expr, Vars), {MungedExprs, Vars3} = munge_exprs(Exprs, Vars2, []), @@ -1945,7 +1955,7 @@ move_clauses([]) -> %% Given a .beam file, find the .erl file. Look first in same directory as %% the .beam file, then in <beamdir>/../src -find_source(File0) -> +find_source(Module, File0) -> case filename:rootname(File0,".beam") of File0 -> File0; @@ -1962,11 +1972,27 @@ find_source(File0) -> true -> InDotDotSrc; false -> - {beam,File0} + find_source_from_module(Module, File0) end end end. +%% In case we can't find the file from the given .beam, +%% we try to get the information directly from the module source +find_source_from_module(Module, File) -> + Compile = Module:module_info(compile), + case lists:keyfind(source, 1, Compile) of + {source, Path} -> + case filelib:is_file(Path) of + true -> + Path; + false -> + {beam, File} + end; + false -> + {beam, File} + end. + do_parallel_analysis(Module, Analysis, Level, Loaded, From, State) -> analyse_info(Module,State#main_state.imported), C = case Loaded of @@ -2070,7 +2096,7 @@ do_parallel_analysis_to_file(Module, OutFile, Opts, Loaded, From, State) -> {imported, File0, _} -> File0 end, - case find_source(File) of + case find_source(Module, File) of {beam,_BeamFile} -> reply(From, {error,no_source_code_found}); ErlFile -> diff --git a/lib/tools/src/lcnt.erl b/lib/tools/src/lcnt.erl index 0694a47318..f13a297ecf 100644 --- a/lib/tools/src/lcnt.erl +++ b/lib/tools/src/lcnt.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. 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/tools/src/make.erl b/lib/tools/src/make.erl index 3b4f7fcc36..c8ef0a04a5 100644 --- a/lib/tools/src/make.erl +++ b/lib/tools/src/make.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/tools/src/tags.erl b/lib/tools/src/tags.erl index 6ce35e4f05..1c72ef8db5 100644 --- a/lib/tools/src/tags.erl +++ b/lib/tools/src/tags.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. 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/tools/src/xref.erl b/lib/tools/src/xref.erl index 912c320857..abc184c84d 100644 --- a/lib/tools/src/xref.erl +++ b/lib/tools/src/xref.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2009. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/tools/src/xref_base.erl b/lib/tools/src/xref_base.erl index af063f3971..30c5f3d12d 100644 --- a/lib/tools/src/xref_base.erl +++ b/lib/tools/src/xref_base.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2010. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/tools/src/xref_compiler.erl b/lib/tools/src/xref_compiler.erl index 303132d53f..f0fed502a5 100644 --- a/lib/tools/src/xref_compiler.erl +++ b/lib/tools/src/xref_compiler.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2011. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/tools/src/xref_reader.erl b/lib/tools/src/xref_reader.erl index 2fcc2c503c..d3601c6ea0 100644 --- a/lib/tools/src/xref_reader.erl +++ b/lib/tools/src/xref_reader.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2010. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/tools/src/xref_utils.erl b/lib/tools/src/xref_utils.erl index 184b81402d..7b72165e6f 100644 --- a/lib/tools/src/xref_utils.erl +++ b/lib/tools/src/xref_utils.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2012. All Rights Reserved. +%% Copyright Ericsson AB 2000-2013. 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/tools/test/cover_SUITE.erl b/lib/tools/test/cover_SUITE.erl index 57260a3869..5abc5c41b1 100644 --- a/lib/tools/test/cover_SUITE.erl +++ b/lib/tools/test/cover_SUITE.erl @@ -149,7 +149,9 @@ compile(Config) when is_list(Config) -> ok = beam_lib:crypto_key_fun(simple_crypto_fun(Key)), {ok,crypt} = cover:compile_beam("crypt.beam") end, + Path = filename:join([?config(data_dir, Config), "compile_beam", "v.erl"]), ?line {ok,v} = cover:compile_beam(v), + {source,Path} = lists:keyfind(source, 1, v:module_info(compile)), ?line {ok,w} = cover:compile_beam("w.beam"), ?line {error,{no_abstract_code,"./x.beam"}} = cover:compile_beam(x), ?line {error,{already_cover_compiled,no_beam_found,a}}=cover:compile_beam(a), @@ -277,12 +279,23 @@ analyse(Config) when is_list(Config) -> ?line f:f2(), ?line {ok, "f.COVER.out"} = cover:analyse_to_file(f), - %% Source code cannot be found by analyse_to_file + %% Source code can be found via source ?line {ok,v} = compile:file("compile_beam/v",[debug_info]), ?line code:purge(v), ?line {module,v} = code:load_file(v), ?line {ok,v} = cover:compile_beam(v), - ?line {error,no_source_code_found} = cover:analyse_to_file(v), + {ok,"v.COVER.out"} = cover:analyse_to_file(v), + + %% Source code cannot be found + {ok,_} = file:copy("compile_beam/z.erl", "z.erl"), + {ok,z} = compile:file(z,[debug_info]), + code:purge(z), + {module,z} = code:load_file(z), + {ok,z} = cover:compile_beam(z), + ok = file:delete("z.erl"), + {error,no_source_code_found} = cover:analyse_to_file(z), + code:purge(z), + code:delete(z), ?line {error,{not_cover_compiled,b}} = cover:analyse(b), ?line {error,{not_cover_compiled,g}} = cover:analyse(g), diff --git a/lib/tools/test/cover_SUITE_data/compile_beam/v.erl b/lib/tools/test/cover_SUITE_data/compile_beam/v.erl index 007957297a..7fb0b08d40 100644 --- a/lib/tools/test/cover_SUITE_data/compile_beam/v.erl +++ b/lib/tools/test/cover_SUITE_data/compile_beam/v.erl @@ -1,6 +1,9 @@ -module(v). - --export([f/0]). +-compile({ no_auto_import, [is_integer/1] }). +-export([f/0,f/1]). f() -> ok. + +f(Number) when erlang:is_integer(Number) -> + Number. diff --git a/lib/tools/test/cover_SUITE_data/compile_beam/z.erl b/lib/tools/test/cover_SUITE_data/compile_beam/z.erl new file mode 100644 index 0000000000..7a2b143dde --- /dev/null +++ b/lib/tools/test/cover_SUITE_data/compile_beam/z.erl @@ -0,0 +1 @@ +-module(z). diff --git a/lib/tools/test/cprof_SUITE.erl b/lib/tools/test/cprof_SUITE.erl index ce5cf66a14..fa4068dade 100644 --- a/lib/tools/test/cprof_SUITE.erl +++ b/lib/tools/test/cprof_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2002-2011. All Rights Reserved. +%% Copyright Ericsson AB 2002-2013. 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/tools/test/emacs_SUITE.erl b/lib/tools/test/emacs_SUITE.erl index 369b8c3ab5..657a3002a3 100644 --- a/lib/tools/test/emacs_SUITE.erl +++ b/lib/tools/test/emacs_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2013. 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/tools/vsn.mk b/lib/tools/vsn.mk index 788ee12900..4fb2f30e4f 100644 --- a/lib/tools/vsn.mk +++ b/lib/tools/vsn.mk @@ -1 +1 @@ -TOOLS_VSN = 2.6.8 +TOOLS_VSN = 2.6.10 diff --git a/lib/tv/doc/src/notes.xml b/lib/tv/doc/src/notes.xml index fa72dd23a9..a80f8080b0 100644 --- a/lib/tv/doc/src/notes.xml +++ b/lib/tv/doc/src/notes.xml @@ -30,6 +30,21 @@ </header> <p>This document describes the changes made to the TV application.</p> +<section><title>TV 2.1.4.10</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + <section><title>TV 2.1.4.9</title> <section><title>Improvements and New Features</title> diff --git a/lib/tv/src/tv_main.hrl b/lib/tv/src/tv_main.hrl index 06b405ac1f..c9db1d9484 100644 --- a/lib/tv/src/tv_main.hrl +++ b/lib/tv/src/tv_main.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2009. All Rights Reserved. +%% Copyright Ericsson AB 1998-2013. 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/tv/vsn.mk b/lib/tv/vsn.mk index 1bb8ca30f8..59d124a3b7 100644 --- a/lib/tv/vsn.mk +++ b/lib/tv/vsn.mk @@ -1 +1 @@ -TV_VSN = 2.1.4.9 +TV_VSN = 2.1.4.10 diff --git a/lib/typer/vsn.mk b/lib/typer/vsn.mk index 18e328afc1..5ac145d9ff 100644 --- a/lib/typer/vsn.mk +++ b/lib/typer/vsn.mk @@ -1 +1 @@ -TYPER_VSN = 0.9.4 +TYPER_VSN = 0.9.5 diff --git a/lib/webtool/doc/src/notes.xml b/lib/webtool/doc/src/notes.xml index a56fdd7b6f..c5fd340b50 100644 --- a/lib/webtool/doc/src/notes.xml +++ b/lib/webtool/doc/src/notes.xml @@ -31,6 +31,21 @@ <p>This document describes the changes made to the Webtool application.</p> +<section><title>WebTool 0.8.9.2</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Misc build updates</p> + <p> + Own Id: OTP-10784</p> + </item> + </list> + </section> + +</section> + <section><title>WebTool 0.8.9.1</title> <section><title>Improvements and New Features</title> diff --git a/lib/webtool/vsn.mk b/lib/webtool/vsn.mk index 690f9a22cf..d356a8954d 100644 --- a/lib/webtool/vsn.mk +++ b/lib/webtool/vsn.mk @@ -1 +1 @@ -WEBTOOL_VSN=0.8.9.1 +WEBTOOL_VSN=0.8.9.2 diff --git a/lib/wx/aclocal.m4 b/lib/wx/aclocal.m4 index 918e30a886..25f40944e7 100644 --- a/lib/wx/aclocal.m4 +++ b/lib/wx/aclocal.m4 @@ -1,7 +1,7 @@ dnl dnl %CopyrightBegin% dnl -dnl Copyright Ericsson AB 1998-2012. All Rights Reserved. +dnl Copyright Ericsson AB 1998-2013. All Rights Reserved. dnl dnl The contents of this file are subject to the Erlang Public License, dnl Version 1.1, (the "License"); you may not use this file except in diff --git a/lib/wx/api_gen/wx_extra/bugs.h b/lib/wx/api_gen/wx_extra/bugs.h index b8f3dfcb00..e3a4fa200b 100644 --- a/lib/wx/api_gen/wx_extra/bugs.h +++ b/lib/wx/api_gen/wx_extra/bugs.h @@ -34,3 +34,9 @@ class WXDLLIMPEXP_ADV wxGridCellNumberRenderer : public wxGridCellStringRenderer wxGridCellNumberRenderer(); }; +// Enable test for valid wxTreeItemId's +class WXDLLIMPEXP_ADV wxTreeCtrlBase : public wxControl +{ + public: + static bool IsTreeItemIdOk(wxTreeItemId id); +} diff --git a/lib/wx/api_gen/wx_extra/wxListCtrl.c_src b/lib/wx/api_gen/wx_extra/wxListCtrl.c_src index 54d6fafd01..8fa31e512e 100644 --- a/lib/wx/api_gen/wx_extra/wxListCtrl.c_src +++ b/lib/wx/api_gen/wx_extra/wxListCtrl.c_src @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2011. All Rights Reserved. +%% Copyright Ericsson AB 2011-2013. 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,7 @@ class EwxListCtrl : public wxListCtrl { int onGetItemText; int onGetItemAttr; int onGetItemColumnImage; - ErlDrvPort port; + ErlDrvTermData port; private: virtual wxString OnGetItemText(long item, long col) const; diff --git a/lib/wx/api_gen/wx_extra/wxTreeCtrl.c_src b/lib/wx/api_gen/wx_extra/wxTreeCtrl.c_src new file mode 100644 index 0000000000..50dca4e2bb --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxTreeCtrl.c_src @@ -0,0 +1,28 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2013. 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% +%% + + +<<wxTreeCtrl_IsTreeItemIdOk +case ~s: { // wxTreeCtrl::IsTreeItemIdOk + wxTreeItemId item = wxTreeItemId((void *) *(wxUint64 *) bp); bp += 8; + bool Result = item.IsOk(); + rt.addBool(Result); + break; +} +wxTreeCtrl_IsTreeItemIdOk>> diff --git a/lib/wx/api_gen/wx_gen_cpp.erl b/lib/wx/api_gen/wx_gen_cpp.erl index 293c97507e..f00fc0c720 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-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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 @@ -1210,7 +1210,7 @@ encode_events(Evs) -> " WxeApp * app = (WxeApp *) wxTheApp;~n" " return app->getRef(ptr,memenv);~n" "}~n~n"), - w("bool sendevent(wxEvent *event, ErlDrvPort port)~n{~n" + w("bool sendevent(wxEvent *event, ErlDrvTermData port)~n{~n" " int send_res ;~n" " char * evClass = NULL;~n" " wxMBConvUTF32 UTFconverter;~n" @@ -1239,7 +1239,7 @@ encode_events(Evs) -> w(" rt.addTupleCount(3);~n"), w(" pre_callback();~n"), w(" send_res = rt.send();~n"), - w(" if(send_res) handle_event_callback(port, cb->listener);~n"), + w(" if(send_res) handle_event_callback(WXE_DRV_PORT_HANDLE, cb->listener);~n"), w(" app->clearPtr((void *) event);~n"), w(" } else {~n"), w(" send_res = rt.send();~n"), diff --git a/lib/wx/api_gen/wx_gen_erl.erl b/lib/wx/api_gen/wx_gen_erl.erl index a999a869e6..2e1a0d617a 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-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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 @@ -218,33 +218,37 @@ check_class(#type{base={class,Name},xml=Xml}) -> gen_export(#class{name=Class,abstract=Abs},Ms0) -> RemoveC = fun(#method{where=merged_c}) -> false;(_Other) -> true end, Res = filter(RemoveC, Ms0), + GetF = fun(M=#method{method_type=constructor,where=W,params=Ps}) -> + {Args,Opts} = split_optional(Ps), + OptLen = case Opts of + [] -> 0; + _ when W =:= erl_no_opt -> 0; + _ -> 1 + end, + deprecated(M, "new" ++ "/" ++ integer_to_list(length(Args)+OptLen)); + (M=#method{method_type=destructor}) -> + case Abs of + true -> []; + _ -> deprecated(M, "destroy/1") + end; + (M=#method{name=N,alias=A,where=W, params=Ps}) -> + {Args,Opts} = split_optional(Ps), + OptLen = case Opts of + [] -> 0; + _ when W =:= erl_no_opt -> 0; + _ -> 1 + end, + deprecated(M, erl_func_name(N,A) ++ "/" ++ integer_to_list(length(Args) + OptLen)) + end, case Res of [] -> []; [M=#method{where=taylormade}|_] -> - [deprecated(M, taylormade_export(Class, M))]; + try + [deprecated(M, taylormade_export(Class, M))] + catch error:{badmatch, {error, enoent}} -> + lists:map(GetF, Res) + end; Ms -> - GetF = fun(M=#method{method_type=constructor,where=W,params=Ps}) -> - {Args,Opts} = split_optional(Ps), - OptLen = case Opts of - [] -> 0; - _ when W =:= erl_no_opt -> 0; - _ -> 1 - end, - deprecated(M, "new" ++ "/" ++ integer_to_list(length(Args)+OptLen)); - (M=#method{method_type=destructor}) -> - case Abs of - true -> []; - _ -> deprecated(M, "destroy/1") - end; - (M=#method{name=N,alias=A,where=W, params=Ps}) -> - {Args,Opts} = split_optional(Ps), - OptLen = case Opts of - [] -> 0; - _ when W =:= erl_no_opt -> 0; - _ -> 1 - end, - deprecated(M, erl_func_name(N,A) ++ "/" ++ integer_to_list(length(Args) + OptLen)) - end, lists:map(GetF, Ms) end. @@ -262,7 +266,12 @@ gen_method(Class,Ms0) -> case Res of [] -> Ms0; [#method{where=taylormade}|_] -> - taylormade_func(Class, Res), + try + taylormade_func(Class, Res) + catch error:{badmatch, {error, enoent}} -> + gen_doc(Class,Res), + gen_method1(Res) + end, Ms0; Ms -> gen_doc(Class,Ms), diff --git a/lib/wx/api_gen/wxapi.conf b/lib/wx/api_gen/wxapi.conf index 94142ff6ba..81f2a389ab 100644 --- a/lib/wx/api_gen/wxapi.conf +++ b/lib/wx/api_gen/wxapi.conf @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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 @@ -975,7 +975,7 @@ 'AssignImageList','AssignStateImageList','Collapse','CollapseAndReset', 'Create','Delete','DeleteAllItems','DeleteChildren', {'EditLabel', [{"textCtrlClass", [nowhere]}]}, %'EndEditLabel', - 'EnsureVisible','Expand','GetBoundingRect', + 'EnsureVisible','Expand',{'GetBoundingRect', [{"rect", [out]}]}, 'GetChildrenCount','GetCount','GetEditControl', {'GetFirstChild',[{"cookie", out}]}, {'GetNextChild',[{"cookie", [both]}]}, 'GetFirstVisibleItem',{'GetImageList',0},'GetIndent', @@ -984,9 +984,10 @@ 'GetNextSibling','GetNextVisible','GetItemParent',%'GetParent', 'GetPrevSibling','GetPrevVisible','GetRootItem', 'GetSelection',{'GetSelections', [{return, nowhere},{"val",out}]}, - 'GetStateImageList',{'HitTest', 1}, + 'GetStateImageList', {{'HitTest', 2}, [{"flags", out}]}, {'InsertItem',[{"insertAfter", skip_member}]}, 'IsBold','IsExpanded','IsSelected','IsVisible','ItemHasChildren', + {'IsTreeItemIdOk', [{where, taylormade}]}, %%'OnCompareItems', 'PrependItem','ScrollTo','SelectItem', 'SetIndent',{'SetImageList',1},'SetItemBackgroundColour', diff --git a/lib/wx/c_src/egl_impl.cpp b/lib/wx/c_src/egl_impl.cpp index 1379f07523..a55a145934 100644 --- a/lib/wx/c_src/egl_impl.cpp +++ b/lib/wx/c_src/egl_impl.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2011. All Rights Reserved. + * Copyright Ericsson AB 2011-2013. 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 @@ -169,33 +169,34 @@ void gl_error() { * ******************************************************************************/ static GLUtesselator* tess; -static GLdouble* tess_coords; -static GLdouble* tess_alloc_vertex; -static int* tess_vertices; -void CALLBACK -egl_ogla_vertex(GLdouble* coords) -{ - /* fprintf(stderr, "%d\r\n", (int) (coords - tess_coords) / 3); */ +typedef struct { + GLdouble * tess_coords; + int alloc_n; + int alloc_max; - *tess_vertices++ = (int) (coords - tess_coords) / 3; -} + int * tess_index_list; + int index_n; + int index_max; -void CALLBACK -egl_ogla_edge_flag(GLboolean flag) -{ -} + int error; +} egl_tess_data; + +#define NEED_MORE_ALLOC 1 +#define NEED_MORE_INDEX 2 + +static egl_tess_data egl_tess; void CALLBACK -egl_ogla_error(GLenum errorCode) +egl_ogla_vertex(GLdouble* coords) { - const GLubyte *err; - err = gluErrorString(errorCode); - // wxString msg; - // msg.Printf(wxT("Tesselation error: %d: "), (int)errorCode); - // msg += wxString::FromAscii((char *) err); - // send_msg("error", &msg); - fprintf(stderr, "Tesselation error: %d: %s\r\n", (int) errorCode, err); + /* fprintf(stderr, "%d\r\n", (int) (coords - tess_coords) / 3); */ + if(egl_tess.index_n < egl_tess.index_max) { + egl_tess.tess_index_list[egl_tess.index_n] = (int) (coords - egl_tess.tess_coords) / 3; + egl_tess.index_n++; + } + else + egl_tess.error = NEED_MORE_INDEX; } void CALLBACK @@ -204,26 +205,43 @@ egl_ogla_combine(GLdouble coords[3], GLfloat w[4], void **dataOut) { - GLdouble* vertex = tess_alloc_vertex; - - tess_alloc_vertex += 3; + GLdouble* vertex = &egl_tess.tess_coords[egl_tess.alloc_n]; + if(egl_tess.alloc_n < egl_tess.alloc_max) { + egl_tess.alloc_n += 3; + vertex[0] = coords[0]; + vertex[1] = coords[1]; + vertex[2] = coords[2]; + *dataOut = vertex; #if 0 - fprintf(stderr, "combine: "); - int i; - for (i = 0; i < 4; i++) { - if (w[i] > 0.0) { - fprintf(stderr, "%d(%g) ", (int) vertex_data[i], w[i]); + fprintf(stderr, "combine: "); + int i; + for (i = 0; i < 4; i++) { + if (w[i] > 0.0) { + fprintf(stderr, "%d(%g) ", (int) vertex_data[i], w[i]); + } } - } - fprintf(stderr, "\r\n"); - fprintf(stderr, "%g %g %g\r\n", vertex[0], vertex[1], vertex[2]); + fprintf(stderr, "\r\n"); + fprintf(stderr, "%g %g %g\r\n", vertex[0], vertex[1], vertex[2]); #endif - vertex[0] = coords[0]; - vertex[1] = coords[1]; - vertex[2] = coords[2]; - *dataOut = vertex; + } else { + egl_tess.error = NEED_MORE_ALLOC; + *dataOut = NULL; + } +} + +void CALLBACK +egl_ogla_edge_flag(GLboolean flag) +{ +} + +void CALLBACK +egl_ogla_error(GLenum errorCode) +{ + // const GLubyte *err; + // err = gluErrorString(errorCode); + // fprintf(stderr, "Tesselation error: %d: %s\r\n", (int) errorCode, err); } void init_tess() @@ -246,49 +264,46 @@ int erl_tess_impl(char* buff, ErlDrvPort port, ErlDrvTermData caller) { ErlDrvBinary* bin; int i; - GLdouble* new_vertices; - int *vertices; int num_vertices; GLdouble *n; - int n_pos, AP; - + int AP; + int a_max = 2; + int i_max = 6; num_vertices = * (int *) buff; buff += 8; /* Align */ n = (double *) buff; buff += 8*3; - 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; + egl_tess.alloc_max = a_max*num_vertices*3; + bin = driver_alloc_binary(egl_tess.alloc_max*sizeof(GLdouble)); + egl_tess.error = 0; + egl_tess.tess_coords = (double *) bin->orig_bytes; + memcpy(egl_tess.tess_coords,buff,num_vertices*3*sizeof(GLdouble)); + egl_tess.index_max = i_max*3*num_vertices; + egl_tess.tess_index_list = (int *) driver_alloc(sizeof(int) * egl_tess.index_max); -#if 0 - fprintf(stderr, "n=%d\r\n", num_vertices); -#endif - vertices = (int *) driver_alloc(sizeof(int) * 16*num_vertices); - - tess_vertices = vertices; + egl_tess.tess_coords = (double *) bin->orig_bytes; + egl_tess.index_n = 0; + egl_tess.alloc_n = num_vertices*3; gluTessNormal(tess, n[0], n[1], n[2]); gluTessBeginPolygon(tess, 0); gluTessBeginContour(tess); for (i = 0; i < num_vertices; i++) { - gluTessVertex(tess, tess_coords+3*i, tess_coords+3*i); + gluTessVertex(tess, egl_tess.tess_coords+3*i, egl_tess.tess_coords+3*i); } gluTessEndContour(tess); gluTessEndPolygon(tess); - n_pos = (tess_vertices - vertices); - AP = 0; ErlDrvTermData *rt; - rt = (ErlDrvTermData *) driver_alloc(sizeof(ErlDrvTermData) * (13+n_pos*2)); + rt = (ErlDrvTermData *) driver_alloc(sizeof(ErlDrvTermData) * (13+egl_tess.index_n*2)); rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "_egl_result_"); - for(i=0; i < n_pos; i++) { - rt[AP++] = ERL_DRV_INT; rt[AP++] = (int) vertices[i]; + for(i=0; i < egl_tess.index_n; i++) { + rt[AP++] = ERL_DRV_INT; rt[AP++] = (int) egl_tess.tess_index_list[i]; }; - rt[AP++] = ERL_DRV_NIL; rt[AP++] = ERL_DRV_LIST; rt[AP++] = n_pos+1; + rt[AP++] = ERL_DRV_NIL; rt[AP++] = ERL_DRV_LIST; rt[AP++] = egl_tess.index_n+1; rt[AP++] = ERL_DRV_BINARY; rt[AP++] = (ErlDrvTermData) bin; - rt[AP++] = (tess_alloc_vertex-new_vertices)*sizeof(GLdouble); rt[AP++] = 0; + rt[AP++] = egl_tess.alloc_n*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 @@ -300,7 +315,7 @@ int erl_tess_impl(char* buff, ErlDrvPort port, ErlDrvTermData caller) /* (tess_alloc_vertex-new_vertices)*sizeof(GLdouble), */ /* num_vertices*6*sizeof(GLdouble)); */ driver_free_binary(bin); - driver_free(vertices); + driver_free(egl_tess.tess_index_list); driver_free(rt); return 0; } diff --git a/lib/wx/c_src/gen/wxe_derived_dest.h b/lib/wx/c_src/gen/wxe_derived_dest.h index 5fdce27d4b..8dcaf1c1ac 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-2012. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -391,7 +391,7 @@ class EwxListCtrl : public wxListCtrl { int onGetItemText; int onGetItemAttr; int onGetItemColumnImage; - ErlDrvPort port; + ErlDrvTermData port; private: virtual wxString OnGetItemText(long item, long col) const; diff --git a/lib/wx/c_src/gen/wxe_events.cpp b/lib/wx/c_src/gen/wxe_events.cpp index 7a3233a410..c9cdee3160 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-2012. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -328,7 +328,7 @@ int getRef(void* ptr, wxeMemEnv* memenv) return app->getRef(ptr,memenv); } -bool sendevent(wxEvent *event, ErlDrvPort port) +bool sendevent(wxEvent *event, ErlDrvTermData port) { int send_res ; char * evClass = NULL; @@ -815,7 +815,7 @@ case 226: {// wxTaskBarIconEvent rt.addTupleCount(3); pre_callback(); send_res = rt.send(); - if(send_res) handle_event_callback(port, cb->listener); + if(send_res) handle_event_callback(WXE_DRV_PORT_HANDLE, cb->listener); app->clearPtr((void *) event); } else { send_res = rt.send(); diff --git a/lib/wx/c_src/gen/wxe_funcs.cpp b/lib/wx/c_src/gen/wxe_funcs.cpp index 5fbe8a2a9e..2d55f34346 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-2012. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -18687,15 +18687,11 @@ case wxTreeCtrl_Expand: { // wxTreeCtrl::Expand break; } case wxTreeCtrl_GetBoundingRect: { // wxTreeCtrl::GetBoundingRect + wxRect rect; bool textOnly=false; wxTreeCtrl *This = (wxTreeCtrl *) getPtr(bp,memenv); bp += 4; bp += 4; /* Align */ wxTreeItemId item = wxTreeItemId((void *) *(wxUint64 *) bp); bp += 8; - int * rectX = (int *) bp; bp += 4; - int * rectY = (int *) bp; bp += 4; - int * rectW = (int *) bp; bp += 4; - int * rectH = (int *) bp; bp += 4; - wxRect rect = wxRect(*rectX,*rectY,*rectW,*rectH); while( * (int*) bp) { switch (* (int*) bp) { case 1: {bp += 4; textOnly = *(bool *) bp; bp += 4; @@ -18704,6 +18700,8 @@ case wxTreeCtrl_GetBoundingRect: { // wxTreeCtrl::GetBoundingRect if(!This) throw wxe_badarg(0); bool Result = This->GetBoundingRect(item,rect,textOnly); rt.addBool(Result); + rt.add(rect); + rt.addTupleCount(2); break; } case wxTreeCtrl_GetChildrenCount: { // wxTreeCtrl::GetChildrenCount @@ -18937,13 +18935,16 @@ case wxTreeCtrl_GetStateImageList: { // wxTreeCtrl::GetStateImageList break; } case wxTreeCtrl_HitTest: { // wxTreeCtrl::HitTest + int flags; wxTreeCtrl *This = (wxTreeCtrl *) getPtr(bp,memenv); bp += 4; int * pointX = (int *) bp; bp += 4; int * pointY = (int *) bp; bp += 4; wxPoint point = wxPoint(*pointX,*pointY); if(!This) throw wxe_badarg(0); - wxTreeItemId Result = This->HitTest(point); + wxTreeItemId Result = This->HitTest(point,flags); rt.add((wxUIntPtr *) Result.m_pItem); + rt.addInt(flags); + rt.addTupleCount(2); break; } case wxTreeCtrl_InsertItem: { // wxTreeCtrl::InsertItem @@ -19019,6 +19020,13 @@ case wxTreeCtrl_ItemHasChildren: { // wxTreeCtrl::ItemHasChildren rt.addBool(Result); break; } + +case wxTreeCtrl_IsTreeItemIdOk: { // wxTreeCtrl::IsTreeItemIdOk + wxTreeItemId item = wxTreeItemId((void *) *(wxUint64 *) bp); bp += 8; + bool Result = item.IsOk(); + rt.addBool(Result); + break; +} case wxTreeCtrl_PrependItem: { // wxTreeCtrl::PrependItem int image=-1; int selectedImage=-1; diff --git a/lib/wx/c_src/gen/wxe_macros.h b/lib/wx/c_src/gen/wxe_macros.h index 4b87c2340e..c341825d8d 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-2012. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -1931,1424 +1931,1425 @@ #define wxTreeCtrl_IsSelected 2058 #define wxTreeCtrl_IsVisible 2059 #define wxTreeCtrl_ItemHasChildren 2060 -#define wxTreeCtrl_PrependItem 2061 -#define wxTreeCtrl_ScrollTo 2062 -#define wxTreeCtrl_SelectItem_1 2063 -#define wxTreeCtrl_SelectItem_2 2064 -#define wxTreeCtrl_SetIndent 2065 -#define wxTreeCtrl_SetImageList 2066 -#define wxTreeCtrl_SetItemBackgroundColour 2067 -#define wxTreeCtrl_SetItemBold 2068 -#define wxTreeCtrl_SetItemData 2069 -#define wxTreeCtrl_SetItemDropHighlight 2070 -#define wxTreeCtrl_SetItemFont 2071 -#define wxTreeCtrl_SetItemHasChildren 2072 -#define wxTreeCtrl_SetItemImage_2 2073 -#define wxTreeCtrl_SetItemImage_3 2074 -#define wxTreeCtrl_SetItemText 2075 -#define wxTreeCtrl_SetItemTextColour 2076 -#define wxTreeCtrl_SetStateImageList 2077 -#define wxTreeCtrl_SetWindowStyle 2078 -#define wxTreeCtrl_SortChildren 2079 -#define wxTreeCtrl_Toggle 2080 -#define wxTreeCtrl_ToggleItemSelection 2081 -#define wxTreeCtrl_Unselect 2082 -#define wxTreeCtrl_UnselectAll 2083 -#define wxTreeCtrl_UnselectItem 2084 -#define wxScrollBar_new_0 2085 -#define wxScrollBar_new_3 2086 -#define wxScrollBar_destruct 2087 -#define wxScrollBar_Create 2088 -#define wxScrollBar_GetRange 2089 -#define wxScrollBar_GetPageSize 2090 -#define wxScrollBar_GetThumbPosition 2091 -#define wxScrollBar_GetThumbSize 2092 -#define wxScrollBar_SetThumbPosition 2093 -#define wxScrollBar_SetScrollbar 2094 -#define wxSpinButton_new_2 2096 -#define wxSpinButton_new_0 2097 -#define wxSpinButton_Create 2098 -#define wxSpinButton_GetMax 2099 -#define wxSpinButton_GetMin 2100 -#define wxSpinButton_GetValue 2101 -#define wxSpinButton_SetRange 2102 -#define wxSpinButton_SetValue 2103 -#define wxSpinButton_destroy 2104 -#define wxSpinCtrl_new_0 2105 -#define wxSpinCtrl_new_2 2106 -#define wxSpinCtrl_Create 2108 -#define wxSpinCtrl_SetValue_1_1 2111 -#define wxSpinCtrl_SetValue_1_0 2112 -#define wxSpinCtrl_GetValue 2114 -#define wxSpinCtrl_SetRange 2116 -#define wxSpinCtrl_SetSelection 2117 -#define wxSpinCtrl_GetMin 2119 -#define wxSpinCtrl_GetMax 2121 -#define wxSpinCtrl_destroy 2122 -#define wxStaticText_new_0 2123 -#define wxStaticText_new_4 2124 -#define wxStaticText_Create 2125 -#define wxStaticText_GetLabel 2126 -#define wxStaticText_SetLabel 2127 -#define wxStaticText_Wrap 2128 -#define wxStaticText_destroy 2129 -#define wxStaticBitmap_new_0 2130 -#define wxStaticBitmap_new_4 2131 -#define wxStaticBitmap_Create 2132 -#define wxStaticBitmap_GetBitmap 2133 -#define wxStaticBitmap_SetBitmap 2134 -#define wxStaticBitmap_destroy 2135 -#define wxRadioBox_new 2136 -#define wxRadioBox_destruct 2138 -#define wxRadioBox_Create 2139 -#define wxRadioBox_Enable_2 2140 -#define wxRadioBox_Enable_1 2141 -#define wxRadioBox_GetSelection 2142 -#define wxRadioBox_GetString 2143 -#define wxRadioBox_SetSelection 2144 -#define wxRadioBox_Show_2 2145 -#define wxRadioBox_Show_1 2146 -#define wxRadioBox_GetColumnCount 2147 -#define wxRadioBox_GetItemHelpText 2148 -#define wxRadioBox_GetItemToolTip 2149 -#define wxRadioBox_GetItemFromPoint 2151 -#define wxRadioBox_GetRowCount 2152 -#define wxRadioBox_IsItemEnabled 2153 -#define wxRadioBox_IsItemShown 2154 -#define wxRadioBox_SetItemHelpText 2155 -#define wxRadioBox_SetItemToolTip 2156 -#define wxRadioButton_new_0 2157 -#define wxRadioButton_new_4 2158 -#define wxRadioButton_Create 2159 -#define wxRadioButton_GetValue 2160 -#define wxRadioButton_SetValue 2161 -#define wxRadioButton_destroy 2162 -#define wxSlider_new_6 2164 -#define wxSlider_new_0 2165 -#define wxSlider_Create 2166 -#define wxSlider_GetLineSize 2167 -#define wxSlider_GetMax 2168 -#define wxSlider_GetMin 2169 -#define wxSlider_GetPageSize 2170 -#define wxSlider_GetThumbLength 2171 -#define wxSlider_GetValue 2172 -#define wxSlider_SetLineSize 2173 -#define wxSlider_SetPageSize 2174 -#define wxSlider_SetRange 2175 -#define wxSlider_SetThumbLength 2176 -#define wxSlider_SetValue 2177 -#define wxSlider_destroy 2178 -#define wxDialog_new_4 2180 -#define wxDialog_new_0 2181 -#define wxDialog_destruct 2183 -#define wxDialog_Create 2184 -#define wxDialog_CreateButtonSizer 2185 -#define wxDialog_CreateStdDialogButtonSizer 2186 -#define wxDialog_EndModal 2187 -#define wxDialog_GetAffirmativeId 2188 -#define wxDialog_GetReturnCode 2189 -#define wxDialog_IsModal 2190 -#define wxDialog_SetAffirmativeId 2191 -#define wxDialog_SetReturnCode 2192 -#define wxDialog_Show 2193 -#define wxDialog_ShowModal 2194 -#define wxColourDialog_new_0 2195 -#define wxColourDialog_new_2 2196 -#define wxColourDialog_destruct 2197 -#define wxColourDialog_Create 2198 -#define wxColourDialog_GetColourData 2199 -#define wxColourData_new_0 2200 -#define wxColourData_new_1 2201 -#define wxColourData_destruct 2202 -#define wxColourData_GetChooseFull 2203 -#define wxColourData_GetColour 2204 -#define wxColourData_GetCustomColour 2206 -#define wxColourData_SetChooseFull 2207 -#define wxColourData_SetColour 2208 -#define wxColourData_SetCustomColour 2209 -#define wxPalette_new_0 2210 -#define wxPalette_new_4 2211 -#define wxPalette_destruct 2213 -#define wxPalette_Create 2214 -#define wxPalette_GetColoursCount 2215 -#define wxPalette_GetPixel 2216 -#define wxPalette_GetRGB 2217 -#define wxPalette_IsOk 2218 -#define wxDirDialog_new 2222 -#define wxDirDialog_destruct 2223 -#define wxDirDialog_GetPath 2224 -#define wxDirDialog_GetMessage 2225 -#define wxDirDialog_SetMessage 2226 -#define wxDirDialog_SetPath 2227 -#define wxFileDialog_new 2231 -#define wxFileDialog_destruct 2232 -#define wxFileDialog_GetDirectory 2233 -#define wxFileDialog_GetFilename 2234 -#define wxFileDialog_GetFilenames 2235 -#define wxFileDialog_GetFilterIndex 2236 -#define wxFileDialog_GetMessage 2237 -#define wxFileDialog_GetPath 2238 -#define wxFileDialog_GetPaths 2239 -#define wxFileDialog_GetWildcard 2240 -#define wxFileDialog_SetDirectory 2241 -#define wxFileDialog_SetFilename 2242 -#define wxFileDialog_SetFilterIndex 2243 -#define wxFileDialog_SetMessage 2244 -#define wxFileDialog_SetPath 2245 -#define wxFileDialog_SetWildcard 2246 -#define wxPickerBase_SetInternalMargin 2247 -#define wxPickerBase_GetInternalMargin 2248 -#define wxPickerBase_SetTextCtrlProportion 2249 -#define wxPickerBase_SetPickerCtrlProportion 2250 -#define wxPickerBase_GetTextCtrlProportion 2251 -#define wxPickerBase_GetPickerCtrlProportion 2252 -#define wxPickerBase_HasTextCtrl 2253 -#define wxPickerBase_GetTextCtrl 2254 -#define wxPickerBase_IsTextCtrlGrowable 2255 -#define wxPickerBase_SetPickerCtrlGrowable 2256 -#define wxPickerBase_SetTextCtrlGrowable 2257 -#define wxPickerBase_IsPickerCtrlGrowable 2258 -#define wxFilePickerCtrl_new_0 2259 -#define wxFilePickerCtrl_new_3 2260 -#define wxFilePickerCtrl_Create 2261 -#define wxFilePickerCtrl_GetPath 2262 -#define wxFilePickerCtrl_SetPath 2263 -#define wxFilePickerCtrl_destroy 2264 -#define wxDirPickerCtrl_new_0 2265 -#define wxDirPickerCtrl_new_3 2266 -#define wxDirPickerCtrl_Create 2267 -#define wxDirPickerCtrl_GetPath 2268 -#define wxDirPickerCtrl_SetPath 2269 -#define wxDirPickerCtrl_destroy 2270 -#define wxColourPickerCtrl_new_0 2271 -#define wxColourPickerCtrl_new_3 2272 -#define wxColourPickerCtrl_Create 2273 -#define wxColourPickerCtrl_GetColour 2274 -#define wxColourPickerCtrl_SetColour_1_1 2275 -#define wxColourPickerCtrl_SetColour_1_0 2276 -#define wxColourPickerCtrl_destroy 2277 -#define wxDatePickerCtrl_new_0 2278 -#define wxDatePickerCtrl_new_3 2279 -#define wxDatePickerCtrl_GetRange 2280 -#define wxDatePickerCtrl_GetValue 2281 -#define wxDatePickerCtrl_SetRange 2282 -#define wxDatePickerCtrl_SetValue 2283 -#define wxDatePickerCtrl_destroy 2284 -#define wxFontPickerCtrl_new_0 2285 -#define wxFontPickerCtrl_new_3 2286 -#define wxFontPickerCtrl_Create 2287 -#define wxFontPickerCtrl_GetSelectedFont 2288 -#define wxFontPickerCtrl_SetSelectedFont 2289 -#define wxFontPickerCtrl_GetMaxPointSize 2290 -#define wxFontPickerCtrl_SetMaxPointSize 2291 -#define wxFontPickerCtrl_destroy 2292 -#define wxFindReplaceDialog_new_0 2295 -#define wxFindReplaceDialog_new_4 2296 -#define wxFindReplaceDialog_destruct 2297 -#define wxFindReplaceDialog_Create 2298 -#define wxFindReplaceDialog_GetData 2299 -#define wxFindReplaceData_new_0 2300 -#define wxFindReplaceData_new_1 2301 -#define wxFindReplaceData_GetFindString 2302 -#define wxFindReplaceData_GetReplaceString 2303 -#define wxFindReplaceData_GetFlags 2304 -#define wxFindReplaceData_SetFlags 2305 -#define wxFindReplaceData_SetFindString 2306 -#define wxFindReplaceData_SetReplaceString 2307 -#define wxFindReplaceData_destroy 2308 -#define wxMultiChoiceDialog_new_0 2309 -#define wxMultiChoiceDialog_new_5 2311 -#define wxMultiChoiceDialog_GetSelections 2312 -#define wxMultiChoiceDialog_SetSelections 2313 -#define wxMultiChoiceDialog_destroy 2314 -#define wxSingleChoiceDialog_new_0 2315 -#define wxSingleChoiceDialog_new_5 2317 -#define wxSingleChoiceDialog_GetSelection 2318 -#define wxSingleChoiceDialog_GetStringSelection 2319 -#define wxSingleChoiceDialog_SetSelection 2320 -#define wxSingleChoiceDialog_destroy 2321 -#define wxTextEntryDialog_new 2322 -#define wxTextEntryDialog_GetValue 2323 -#define wxTextEntryDialog_SetValue 2324 -#define wxTextEntryDialog_destroy 2325 -#define wxPasswordEntryDialog_new 2326 -#define wxPasswordEntryDialog_destroy 2327 -#define wxFontData_new_0 2328 -#define wxFontData_new_1 2329 -#define wxFontData_destruct 2330 -#define wxFontData_EnableEffects 2331 -#define wxFontData_GetAllowSymbols 2332 -#define wxFontData_GetColour 2333 -#define wxFontData_GetChosenFont 2334 -#define wxFontData_GetEnableEffects 2335 -#define wxFontData_GetInitialFont 2336 -#define wxFontData_GetShowHelp 2337 -#define wxFontData_SetAllowSymbols 2338 -#define wxFontData_SetChosenFont 2339 -#define wxFontData_SetColour 2340 -#define wxFontData_SetInitialFont 2341 -#define wxFontData_SetRange 2342 -#define wxFontData_SetShowHelp 2343 -#define wxFontDialog_new_0 2347 -#define wxFontDialog_new_2 2349 -#define wxFontDialog_Create 2351 -#define wxFontDialog_GetFontData 2352 -#define wxFontDialog_destroy 2354 -#define wxProgressDialog_new 2355 -#define wxProgressDialog_destruct 2356 -#define wxProgressDialog_Resume 2357 -#define wxProgressDialog_Update_2 2358 -#define wxProgressDialog_Update_0 2359 -#define wxMessageDialog_new 2360 -#define wxMessageDialog_destruct 2361 -#define wxPageSetupDialog_new 2362 -#define wxPageSetupDialog_destruct 2363 -#define wxPageSetupDialog_GetPageSetupData 2364 -#define wxPageSetupDialog_ShowModal 2365 -#define wxPageSetupDialogData_new_0 2366 -#define wxPageSetupDialogData_new_1_0 2367 -#define wxPageSetupDialogData_new_1_1 2368 -#define wxPageSetupDialogData_destruct 2369 -#define wxPageSetupDialogData_EnableHelp 2370 -#define wxPageSetupDialogData_EnableMargins 2371 -#define wxPageSetupDialogData_EnableOrientation 2372 -#define wxPageSetupDialogData_EnablePaper 2373 -#define wxPageSetupDialogData_EnablePrinter 2374 -#define wxPageSetupDialogData_GetDefaultMinMargins 2375 -#define wxPageSetupDialogData_GetEnableMargins 2376 -#define wxPageSetupDialogData_GetEnableOrientation 2377 -#define wxPageSetupDialogData_GetEnablePaper 2378 -#define wxPageSetupDialogData_GetEnablePrinter 2379 -#define wxPageSetupDialogData_GetEnableHelp 2380 -#define wxPageSetupDialogData_GetDefaultInfo 2381 -#define wxPageSetupDialogData_GetMarginTopLeft 2382 -#define wxPageSetupDialogData_GetMarginBottomRight 2383 -#define wxPageSetupDialogData_GetMinMarginTopLeft 2384 -#define wxPageSetupDialogData_GetMinMarginBottomRight 2385 -#define wxPageSetupDialogData_GetPaperId 2386 -#define wxPageSetupDialogData_GetPaperSize 2387 -#define wxPageSetupDialogData_GetPrintData 2389 -#define wxPageSetupDialogData_IsOk 2390 -#define wxPageSetupDialogData_SetDefaultInfo 2391 -#define wxPageSetupDialogData_SetDefaultMinMargins 2392 -#define wxPageSetupDialogData_SetMarginTopLeft 2393 -#define wxPageSetupDialogData_SetMarginBottomRight 2394 -#define wxPageSetupDialogData_SetMinMarginTopLeft 2395 -#define wxPageSetupDialogData_SetMinMarginBottomRight 2396 -#define wxPageSetupDialogData_SetPaperId 2397 -#define wxPageSetupDialogData_SetPaperSize_1_1 2398 -#define wxPageSetupDialogData_SetPaperSize_1_0 2399 -#define wxPageSetupDialogData_SetPrintData 2400 -#define wxPrintDialog_new_2_0 2401 -#define wxPrintDialog_new_2_1 2402 -#define wxPrintDialog_destruct 2403 -#define wxPrintDialog_GetPrintDialogData 2404 -#define wxPrintDialog_GetPrintDC 2405 -#define wxPrintDialogData_new_0 2406 -#define wxPrintDialogData_new_1_1 2407 -#define wxPrintDialogData_new_1_0 2408 -#define wxPrintDialogData_destruct 2409 -#define wxPrintDialogData_EnableHelp 2410 -#define wxPrintDialogData_EnablePageNumbers 2411 -#define wxPrintDialogData_EnablePrintToFile 2412 -#define wxPrintDialogData_EnableSelection 2413 -#define wxPrintDialogData_GetAllPages 2414 -#define wxPrintDialogData_GetCollate 2415 -#define wxPrintDialogData_GetFromPage 2416 -#define wxPrintDialogData_GetMaxPage 2417 -#define wxPrintDialogData_GetMinPage 2418 -#define wxPrintDialogData_GetNoCopies 2419 -#define wxPrintDialogData_GetPrintData 2420 -#define wxPrintDialogData_GetPrintToFile 2421 -#define wxPrintDialogData_GetSelection 2422 -#define wxPrintDialogData_GetToPage 2423 -#define wxPrintDialogData_IsOk 2424 -#define wxPrintDialogData_SetCollate 2425 -#define wxPrintDialogData_SetFromPage 2426 -#define wxPrintDialogData_SetMaxPage 2427 -#define wxPrintDialogData_SetMinPage 2428 -#define wxPrintDialogData_SetNoCopies 2429 -#define wxPrintDialogData_SetPrintData 2430 -#define wxPrintDialogData_SetPrintToFile 2431 -#define wxPrintDialogData_SetSelection 2432 -#define wxPrintDialogData_SetToPage 2433 -#define wxPrintData_new_0 2434 -#define wxPrintData_new_1 2435 -#define wxPrintData_destruct 2436 -#define wxPrintData_GetCollate 2437 -#define wxPrintData_GetBin 2438 -#define wxPrintData_GetColour 2439 -#define wxPrintData_GetDuplex 2440 -#define wxPrintData_GetNoCopies 2441 -#define wxPrintData_GetOrientation 2442 -#define wxPrintData_GetPaperId 2443 -#define wxPrintData_GetPrinterName 2444 -#define wxPrintData_GetQuality 2445 -#define wxPrintData_IsOk 2446 -#define wxPrintData_SetBin 2447 -#define wxPrintData_SetCollate 2448 -#define wxPrintData_SetColour 2449 -#define wxPrintData_SetDuplex 2450 -#define wxPrintData_SetNoCopies 2451 -#define wxPrintData_SetOrientation 2452 -#define wxPrintData_SetPaperId 2453 -#define wxPrintData_SetPrinterName 2454 -#define wxPrintData_SetQuality 2455 -#define wxPrintPreview_new_2 2458 -#define wxPrintPreview_new_3 2459 -#define wxPrintPreview_destruct 2461 -#define wxPrintPreview_GetCanvas 2462 -#define wxPrintPreview_GetCurrentPage 2463 -#define wxPrintPreview_GetFrame 2464 -#define wxPrintPreview_GetMaxPage 2465 -#define wxPrintPreview_GetMinPage 2466 -#define wxPrintPreview_GetPrintout 2467 -#define wxPrintPreview_GetPrintoutForPrinting 2468 -#define wxPrintPreview_IsOk 2469 -#define wxPrintPreview_PaintPage 2470 -#define wxPrintPreview_Print 2471 -#define wxPrintPreview_RenderPage 2472 -#define wxPrintPreview_SetCanvas 2473 -#define wxPrintPreview_SetCurrentPage 2474 -#define wxPrintPreview_SetFrame 2475 -#define wxPrintPreview_SetPrintout 2476 -#define wxPrintPreview_SetZoom 2477 -#define wxPreviewFrame_new 2478 -#define wxPreviewFrame_destruct 2479 -#define wxPreviewFrame_CreateControlBar 2480 -#define wxPreviewFrame_CreateCanvas 2481 -#define wxPreviewFrame_Initialize 2482 -#define wxPreviewFrame_OnCloseWindow 2483 -#define wxPreviewControlBar_new 2484 -#define wxPreviewControlBar_destruct 2485 -#define wxPreviewControlBar_CreateButtons 2486 -#define wxPreviewControlBar_GetPrintPreview 2487 -#define wxPreviewControlBar_GetZoomControl 2488 -#define wxPreviewControlBar_SetZoomControl 2489 -#define wxPrinter_new 2491 -#define wxPrinter_CreateAbortWindow 2492 -#define wxPrinter_GetAbort 2493 -#define wxPrinter_GetLastError 2494 -#define wxPrinter_GetPrintDialogData 2495 -#define wxPrinter_Print 2496 -#define wxPrinter_PrintDialog 2497 -#define wxPrinter_ReportError 2498 -#define wxPrinter_Setup 2499 -#define wxPrinter_destroy 2500 -#define wxXmlResource_new_1 2501 -#define wxXmlResource_new_2 2502 -#define wxXmlResource_destruct 2503 -#define wxXmlResource_AttachUnknownControl 2504 -#define wxXmlResource_ClearHandlers 2505 -#define wxXmlResource_CompareVersion 2506 -#define wxXmlResource_Get 2507 -#define wxXmlResource_GetFlags 2508 -#define wxXmlResource_GetVersion 2509 -#define wxXmlResource_GetXRCID 2510 -#define wxXmlResource_InitAllHandlers 2511 -#define wxXmlResource_Load 2512 -#define wxXmlResource_LoadBitmap 2513 -#define wxXmlResource_LoadDialog_2 2514 -#define wxXmlResource_LoadDialog_3 2515 -#define wxXmlResource_LoadFrame_2 2516 -#define wxXmlResource_LoadFrame_3 2517 -#define wxXmlResource_LoadIcon 2518 -#define wxXmlResource_LoadMenu 2519 -#define wxXmlResource_LoadMenuBar_2 2520 -#define wxXmlResource_LoadMenuBar_1 2521 -#define wxXmlResource_LoadPanel_2 2522 -#define wxXmlResource_LoadPanel_3 2523 -#define wxXmlResource_LoadToolBar 2524 -#define wxXmlResource_Set 2525 -#define wxXmlResource_SetFlags 2526 -#define wxXmlResource_Unload 2527 -#define wxXmlResource_xrcctrl 2528 -#define wxHtmlEasyPrinting_new 2529 -#define wxHtmlEasyPrinting_destruct 2530 -#define wxHtmlEasyPrinting_GetPrintData 2531 -#define wxHtmlEasyPrinting_GetPageSetupData 2532 -#define wxHtmlEasyPrinting_PreviewFile 2533 -#define wxHtmlEasyPrinting_PreviewText 2534 -#define wxHtmlEasyPrinting_PrintFile 2535 -#define wxHtmlEasyPrinting_PrintText 2536 -#define wxHtmlEasyPrinting_PageSetup 2537 -#define wxHtmlEasyPrinting_SetFonts 2538 -#define wxHtmlEasyPrinting_SetHeader 2539 -#define wxHtmlEasyPrinting_SetFooter 2540 -#define wxGLCanvas_new_2 2542 -#define wxGLCanvas_new_3_1 2543 -#define wxGLCanvas_new_3_0 2544 -#define wxGLCanvas_GetContext 2545 -#define wxGLCanvas_SetCurrent 2547 -#define wxGLCanvas_SwapBuffers 2548 -#define wxGLCanvas_destroy 2549 -#define wxAuiManager_new 2550 -#define wxAuiManager_destruct 2551 -#define wxAuiManager_AddPane_2_1 2552 -#define wxAuiManager_AddPane_3 2553 -#define wxAuiManager_AddPane_2_0 2554 -#define wxAuiManager_DetachPane 2555 -#define wxAuiManager_GetAllPanes 2556 -#define wxAuiManager_GetArtProvider 2557 -#define wxAuiManager_GetDockSizeConstraint 2558 -#define wxAuiManager_GetFlags 2559 -#define wxAuiManager_GetManagedWindow 2560 -#define wxAuiManager_GetManager 2561 -#define wxAuiManager_GetPane_1_1 2562 -#define wxAuiManager_GetPane_1_0 2563 -#define wxAuiManager_HideHint 2564 -#define wxAuiManager_InsertPane 2565 -#define wxAuiManager_LoadPaneInfo 2566 -#define wxAuiManager_LoadPerspective 2567 -#define wxAuiManager_SavePaneInfo 2568 -#define wxAuiManager_SavePerspective 2569 -#define wxAuiManager_SetArtProvider 2570 -#define wxAuiManager_SetDockSizeConstraint 2571 -#define wxAuiManager_SetFlags 2572 -#define wxAuiManager_SetManagedWindow 2573 -#define wxAuiManager_ShowHint 2574 -#define wxAuiManager_UnInit 2575 -#define wxAuiManager_Update 2576 -#define wxAuiPaneInfo_new_0 2577 -#define wxAuiPaneInfo_new_1 2578 -#define wxAuiPaneInfo_destruct 2579 -#define wxAuiPaneInfo_BestSize_1 2580 -#define wxAuiPaneInfo_BestSize_2 2581 -#define wxAuiPaneInfo_Bottom 2582 -#define wxAuiPaneInfo_BottomDockable 2583 -#define wxAuiPaneInfo_Caption 2584 -#define wxAuiPaneInfo_CaptionVisible 2585 -#define wxAuiPaneInfo_Centre 2586 -#define wxAuiPaneInfo_CentrePane 2587 -#define wxAuiPaneInfo_CloseButton 2588 -#define wxAuiPaneInfo_DefaultPane 2589 -#define wxAuiPaneInfo_DestroyOnClose 2590 -#define wxAuiPaneInfo_Direction 2591 -#define wxAuiPaneInfo_Dock 2592 -#define wxAuiPaneInfo_Dockable 2593 -#define wxAuiPaneInfo_Fixed 2594 -#define wxAuiPaneInfo_Float 2595 -#define wxAuiPaneInfo_Floatable 2596 -#define wxAuiPaneInfo_FloatingPosition_1 2597 -#define wxAuiPaneInfo_FloatingPosition_2 2598 -#define wxAuiPaneInfo_FloatingSize_1 2599 -#define wxAuiPaneInfo_FloatingSize_2 2600 -#define wxAuiPaneInfo_Gripper 2601 -#define wxAuiPaneInfo_GripperTop 2602 -#define wxAuiPaneInfo_HasBorder 2603 -#define wxAuiPaneInfo_HasCaption 2604 -#define wxAuiPaneInfo_HasCloseButton 2605 -#define wxAuiPaneInfo_HasFlag 2606 -#define wxAuiPaneInfo_HasGripper 2607 -#define wxAuiPaneInfo_HasGripperTop 2608 -#define wxAuiPaneInfo_HasMaximizeButton 2609 -#define wxAuiPaneInfo_HasMinimizeButton 2610 -#define wxAuiPaneInfo_HasPinButton 2611 -#define wxAuiPaneInfo_Hide 2612 -#define wxAuiPaneInfo_IsBottomDockable 2613 -#define wxAuiPaneInfo_IsDocked 2614 -#define wxAuiPaneInfo_IsFixed 2615 -#define wxAuiPaneInfo_IsFloatable 2616 -#define wxAuiPaneInfo_IsFloating 2617 -#define wxAuiPaneInfo_IsLeftDockable 2618 -#define wxAuiPaneInfo_IsMovable 2619 -#define wxAuiPaneInfo_IsOk 2620 -#define wxAuiPaneInfo_IsResizable 2621 -#define wxAuiPaneInfo_IsRightDockable 2622 -#define wxAuiPaneInfo_IsShown 2623 -#define wxAuiPaneInfo_IsToolbar 2624 -#define wxAuiPaneInfo_IsTopDockable 2625 -#define wxAuiPaneInfo_Layer 2626 -#define wxAuiPaneInfo_Left 2627 -#define wxAuiPaneInfo_LeftDockable 2628 -#define wxAuiPaneInfo_MaxSize_1 2629 -#define wxAuiPaneInfo_MaxSize_2 2630 -#define wxAuiPaneInfo_MaximizeButton 2631 -#define wxAuiPaneInfo_MinSize_1 2632 -#define wxAuiPaneInfo_MinSize_2 2633 -#define wxAuiPaneInfo_MinimizeButton 2634 -#define wxAuiPaneInfo_Movable 2635 -#define wxAuiPaneInfo_Name 2636 -#define wxAuiPaneInfo_PaneBorder 2637 -#define wxAuiPaneInfo_PinButton 2638 -#define wxAuiPaneInfo_Position 2639 -#define wxAuiPaneInfo_Resizable 2640 -#define wxAuiPaneInfo_Right 2641 -#define wxAuiPaneInfo_RightDockable 2642 -#define wxAuiPaneInfo_Row 2643 -#define wxAuiPaneInfo_SafeSet 2644 -#define wxAuiPaneInfo_SetFlag 2645 -#define wxAuiPaneInfo_Show 2646 -#define wxAuiPaneInfo_ToolbarPane 2647 -#define wxAuiPaneInfo_Top 2648 -#define wxAuiPaneInfo_TopDockable 2649 -#define wxAuiPaneInfo_Window 2650 -#define wxAuiNotebook_new_0 2651 -#define wxAuiNotebook_new_2 2652 -#define wxAuiNotebook_AddPage 2653 -#define wxAuiNotebook_Create 2654 -#define wxAuiNotebook_DeletePage 2655 -#define wxAuiNotebook_GetArtProvider 2656 -#define wxAuiNotebook_GetPage 2657 -#define wxAuiNotebook_GetPageBitmap 2658 -#define wxAuiNotebook_GetPageCount 2659 -#define wxAuiNotebook_GetPageIndex 2660 -#define wxAuiNotebook_GetPageText 2661 -#define wxAuiNotebook_GetSelection 2662 -#define wxAuiNotebook_InsertPage 2663 -#define wxAuiNotebook_RemovePage 2664 -#define wxAuiNotebook_SetArtProvider 2665 -#define wxAuiNotebook_SetFont 2666 -#define wxAuiNotebook_SetPageBitmap 2667 -#define wxAuiNotebook_SetPageText 2668 -#define wxAuiNotebook_SetSelection 2669 -#define wxAuiNotebook_SetTabCtrlHeight 2670 -#define wxAuiNotebook_SetUniformBitmapSize 2671 -#define wxAuiNotebook_destroy 2672 -#define wxMDIParentFrame_new_0 2673 -#define wxMDIParentFrame_new_4 2674 -#define wxMDIParentFrame_destruct 2675 -#define wxMDIParentFrame_ActivateNext 2676 -#define wxMDIParentFrame_ActivatePrevious 2677 -#define wxMDIParentFrame_ArrangeIcons 2678 -#define wxMDIParentFrame_Cascade 2679 -#define wxMDIParentFrame_Create 2680 -#define wxMDIParentFrame_GetActiveChild 2681 -#define wxMDIParentFrame_GetClientWindow 2682 -#define wxMDIParentFrame_Tile 2683 -#define wxMDIChildFrame_new_0 2684 -#define wxMDIChildFrame_new_4 2685 -#define wxMDIChildFrame_destruct 2686 -#define wxMDIChildFrame_Activate 2687 -#define wxMDIChildFrame_Create 2688 -#define wxMDIChildFrame_Maximize 2689 -#define wxMDIChildFrame_Restore 2690 -#define wxMDIClientWindow_new_0 2691 -#define wxMDIClientWindow_new_2 2692 -#define wxMDIClientWindow_destruct 2693 -#define wxMDIClientWindow_CreateClient 2694 -#define wxLayoutAlgorithm_new 2695 -#define wxLayoutAlgorithm_LayoutFrame 2696 -#define wxLayoutAlgorithm_LayoutMDIFrame 2697 -#define wxLayoutAlgorithm_LayoutWindow 2698 -#define wxLayoutAlgorithm_destroy 2699 -#define wxEvent_GetId 2700 -#define wxEvent_GetSkipped 2701 -#define wxEvent_GetTimestamp 2702 -#define wxEvent_IsCommandEvent 2703 -#define wxEvent_ResumePropagation 2704 -#define wxEvent_ShouldPropagate 2705 -#define wxEvent_Skip 2706 -#define wxEvent_StopPropagation 2707 -#define wxCommandEvent_getClientData 2708 -#define wxCommandEvent_GetExtraLong 2709 -#define wxCommandEvent_GetInt 2710 -#define wxCommandEvent_GetSelection 2711 -#define wxCommandEvent_GetString 2712 -#define wxCommandEvent_IsChecked 2713 -#define wxCommandEvent_IsSelection 2714 -#define wxCommandEvent_SetInt 2715 -#define wxCommandEvent_SetString 2716 -#define wxScrollEvent_GetOrientation 2717 -#define wxScrollEvent_GetPosition 2718 -#define wxScrollWinEvent_GetOrientation 2719 -#define wxScrollWinEvent_GetPosition 2720 -#define wxMouseEvent_AltDown 2721 -#define wxMouseEvent_Button 2722 -#define wxMouseEvent_ButtonDClick 2723 -#define wxMouseEvent_ButtonDown 2724 -#define wxMouseEvent_ButtonUp 2725 -#define wxMouseEvent_CmdDown 2726 -#define wxMouseEvent_ControlDown 2727 -#define wxMouseEvent_Dragging 2728 -#define wxMouseEvent_Entering 2729 -#define wxMouseEvent_GetButton 2730 -#define wxMouseEvent_GetPosition 2733 -#define wxMouseEvent_GetLogicalPosition 2734 -#define wxMouseEvent_GetLinesPerAction 2735 -#define wxMouseEvent_GetWheelRotation 2736 -#define wxMouseEvent_GetWheelDelta 2737 -#define wxMouseEvent_GetX 2738 -#define wxMouseEvent_GetY 2739 -#define wxMouseEvent_IsButton 2740 -#define wxMouseEvent_IsPageScroll 2741 -#define wxMouseEvent_Leaving 2742 -#define wxMouseEvent_LeftDClick 2743 -#define wxMouseEvent_LeftDown 2744 -#define wxMouseEvent_LeftIsDown 2745 -#define wxMouseEvent_LeftUp 2746 -#define wxMouseEvent_MetaDown 2747 -#define wxMouseEvent_MiddleDClick 2748 -#define wxMouseEvent_MiddleDown 2749 -#define wxMouseEvent_MiddleIsDown 2750 -#define wxMouseEvent_MiddleUp 2751 -#define wxMouseEvent_Moving 2752 -#define wxMouseEvent_RightDClick 2753 -#define wxMouseEvent_RightDown 2754 -#define wxMouseEvent_RightIsDown 2755 -#define wxMouseEvent_RightUp 2756 -#define wxMouseEvent_ShiftDown 2757 -#define wxSetCursorEvent_GetCursor 2758 -#define wxSetCursorEvent_GetX 2759 -#define wxSetCursorEvent_GetY 2760 -#define wxSetCursorEvent_HasCursor 2761 -#define wxSetCursorEvent_SetCursor 2762 -#define wxKeyEvent_AltDown 2763 -#define wxKeyEvent_CmdDown 2764 -#define wxKeyEvent_ControlDown 2765 -#define wxKeyEvent_GetKeyCode 2766 -#define wxKeyEvent_GetModifiers 2767 -#define wxKeyEvent_GetPosition 2770 -#define wxKeyEvent_GetRawKeyCode 2771 -#define wxKeyEvent_GetRawKeyFlags 2772 -#define wxKeyEvent_GetUnicodeKey 2773 -#define wxKeyEvent_GetX 2774 -#define wxKeyEvent_GetY 2775 -#define wxKeyEvent_HasModifiers 2776 -#define wxKeyEvent_MetaDown 2777 -#define wxKeyEvent_ShiftDown 2778 -#define wxSizeEvent_GetSize 2779 -#define wxMoveEvent_GetPosition 2780 -#define wxEraseEvent_GetDC 2781 -#define wxFocusEvent_GetWindow 2782 -#define wxChildFocusEvent_GetWindow 2783 -#define wxMenuEvent_GetMenu 2784 -#define wxMenuEvent_GetMenuId 2785 -#define wxMenuEvent_IsPopup 2786 -#define wxCloseEvent_CanVeto 2787 -#define wxCloseEvent_GetLoggingOff 2788 -#define wxCloseEvent_SetCanVeto 2789 -#define wxCloseEvent_SetLoggingOff 2790 -#define wxCloseEvent_Veto 2791 -#define wxShowEvent_SetShow 2792 -#define wxShowEvent_GetShow 2793 -#define wxIconizeEvent_Iconized 2794 -#define wxJoystickEvent_ButtonDown 2795 -#define wxJoystickEvent_ButtonIsDown 2796 -#define wxJoystickEvent_ButtonUp 2797 -#define wxJoystickEvent_GetButtonChange 2798 -#define wxJoystickEvent_GetButtonState 2799 -#define wxJoystickEvent_GetJoystick 2800 -#define wxJoystickEvent_GetPosition 2801 -#define wxJoystickEvent_GetZPosition 2802 -#define wxJoystickEvent_IsButton 2803 -#define wxJoystickEvent_IsMove 2804 -#define wxJoystickEvent_IsZMove 2805 -#define wxUpdateUIEvent_CanUpdate 2806 -#define wxUpdateUIEvent_Check 2807 -#define wxUpdateUIEvent_Enable 2808 -#define wxUpdateUIEvent_Show 2809 -#define wxUpdateUIEvent_GetChecked 2810 -#define wxUpdateUIEvent_GetEnabled 2811 -#define wxUpdateUIEvent_GetShown 2812 -#define wxUpdateUIEvent_GetSetChecked 2813 -#define wxUpdateUIEvent_GetSetEnabled 2814 -#define wxUpdateUIEvent_GetSetShown 2815 -#define wxUpdateUIEvent_GetSetText 2816 -#define wxUpdateUIEvent_GetText 2817 -#define wxUpdateUIEvent_GetMode 2818 -#define wxUpdateUIEvent_GetUpdateInterval 2819 -#define wxUpdateUIEvent_ResetUpdateTime 2820 -#define wxUpdateUIEvent_SetMode 2821 -#define wxUpdateUIEvent_SetText 2822 -#define wxUpdateUIEvent_SetUpdateInterval 2823 -#define wxMouseCaptureChangedEvent_GetCapturedWindow 2824 -#define wxPaletteChangedEvent_SetChangedWindow 2825 -#define wxPaletteChangedEvent_GetChangedWindow 2826 -#define wxQueryNewPaletteEvent_SetPaletteRealized 2827 -#define wxQueryNewPaletteEvent_GetPaletteRealized 2828 -#define wxNavigationKeyEvent_GetDirection 2829 -#define wxNavigationKeyEvent_SetDirection 2830 -#define wxNavigationKeyEvent_IsWindowChange 2831 -#define wxNavigationKeyEvent_SetWindowChange 2832 -#define wxNavigationKeyEvent_IsFromTab 2833 -#define wxNavigationKeyEvent_SetFromTab 2834 -#define wxNavigationKeyEvent_GetCurrentFocus 2835 -#define wxNavigationKeyEvent_SetCurrentFocus 2836 -#define wxHelpEvent_GetOrigin 2837 -#define wxHelpEvent_GetPosition 2838 -#define wxHelpEvent_SetOrigin 2839 -#define wxHelpEvent_SetPosition 2840 -#define wxContextMenuEvent_GetPosition 2841 -#define wxContextMenuEvent_SetPosition 2842 -#define wxIdleEvent_CanSend 2843 -#define wxIdleEvent_GetMode 2844 -#define wxIdleEvent_RequestMore 2845 -#define wxIdleEvent_MoreRequested 2846 -#define wxIdleEvent_SetMode 2847 -#define wxGridEvent_AltDown 2848 -#define wxGridEvent_ControlDown 2849 -#define wxGridEvent_GetCol 2850 -#define wxGridEvent_GetPosition 2851 -#define wxGridEvent_GetRow 2852 -#define wxGridEvent_MetaDown 2853 -#define wxGridEvent_Selecting 2854 -#define wxGridEvent_ShiftDown 2855 -#define wxNotifyEvent_Allow 2856 -#define wxNotifyEvent_IsAllowed 2857 -#define wxNotifyEvent_Veto 2858 -#define wxSashEvent_GetEdge 2859 -#define wxSashEvent_GetDragRect 2860 -#define wxSashEvent_GetDragStatus 2861 -#define wxListEvent_GetCacheFrom 2862 -#define wxListEvent_GetCacheTo 2863 -#define wxListEvent_GetKeyCode 2864 -#define wxListEvent_GetIndex 2865 -#define wxListEvent_GetColumn 2866 -#define wxListEvent_GetPoint 2867 -#define wxListEvent_GetLabel 2868 -#define wxListEvent_GetText 2869 -#define wxListEvent_GetImage 2870 -#define wxListEvent_GetData 2871 -#define wxListEvent_GetMask 2872 -#define wxListEvent_GetItem 2873 -#define wxListEvent_IsEditCancelled 2874 -#define wxDateEvent_GetDate 2875 -#define wxCalendarEvent_GetWeekDay 2876 -#define wxFileDirPickerEvent_GetPath 2877 -#define wxColourPickerEvent_GetColour 2878 -#define wxFontPickerEvent_GetFont 2879 -#define wxStyledTextEvent_GetPosition 2880 -#define wxStyledTextEvent_GetKey 2881 -#define wxStyledTextEvent_GetModifiers 2882 -#define wxStyledTextEvent_GetModificationType 2883 -#define wxStyledTextEvent_GetText 2884 -#define wxStyledTextEvent_GetLength 2885 -#define wxStyledTextEvent_GetLinesAdded 2886 -#define wxStyledTextEvent_GetLine 2887 -#define wxStyledTextEvent_GetFoldLevelNow 2888 -#define wxStyledTextEvent_GetFoldLevelPrev 2889 -#define wxStyledTextEvent_GetMargin 2890 -#define wxStyledTextEvent_GetMessage 2891 -#define wxStyledTextEvent_GetWParam 2892 -#define wxStyledTextEvent_GetLParam 2893 -#define wxStyledTextEvent_GetListType 2894 -#define wxStyledTextEvent_GetX 2895 -#define wxStyledTextEvent_GetY 2896 -#define wxStyledTextEvent_GetDragText 2897 -#define wxStyledTextEvent_GetDragAllowMove 2898 -#define wxStyledTextEvent_GetDragResult 2899 -#define wxStyledTextEvent_GetShift 2900 -#define wxStyledTextEvent_GetControl 2901 -#define wxStyledTextEvent_GetAlt 2902 -#define utils_wxGetKeyState 2903 -#define utils_wxGetMousePosition 2904 -#define utils_wxGetMouseState 2905 -#define utils_wxSetDetectableAutoRepeat 2906 -#define utils_wxBell 2907 -#define utils_wxFindMenuItemId 2908 -#define utils_wxGenericFindWindowAtPoint 2909 -#define utils_wxFindWindowAtPoint 2910 -#define utils_wxBeginBusyCursor 2911 -#define utils_wxEndBusyCursor 2912 -#define utils_wxIsBusy 2913 -#define utils_wxShutdown 2914 -#define utils_wxShell 2915 -#define utils_wxLaunchDefaultBrowser 2916 -#define utils_wxGetEmailAddress 2917 -#define utils_wxGetUserId 2918 -#define utils_wxGetHomeDir 2919 -#define utils_wxNewId 2920 -#define utils_wxRegisterId 2921 -#define utils_wxGetCurrentId 2922 -#define utils_wxGetOsDescription 2923 -#define utils_wxIsPlatformLittleEndian 2924 -#define utils_wxIsPlatform64Bit 2925 -#define wxPrintout_new 2926 -#define wxPrintout_destruct 2927 -#define wxPrintout_GetDC 2928 -#define wxPrintout_GetPageSizeMM 2929 -#define wxPrintout_GetPageSizePixels 2930 -#define wxPrintout_GetPaperRectPixels 2931 -#define wxPrintout_GetPPIPrinter 2932 -#define wxPrintout_GetPPIScreen 2933 -#define wxPrintout_GetTitle 2934 -#define wxPrintout_IsPreview 2935 -#define wxPrintout_FitThisSizeToPaper 2936 -#define wxPrintout_FitThisSizeToPage 2937 -#define wxPrintout_FitThisSizeToPageMargins 2938 -#define wxPrintout_MapScreenSizeToPaper 2939 -#define wxPrintout_MapScreenSizeToPage 2940 -#define wxPrintout_MapScreenSizeToPageMargins 2941 -#define wxPrintout_MapScreenSizeToDevice 2942 -#define wxPrintout_GetLogicalPaperRect 2943 -#define wxPrintout_GetLogicalPageRect 2944 -#define wxPrintout_GetLogicalPageMarginsRect 2945 -#define wxPrintout_SetLogicalOrigin 2946 -#define wxPrintout_OffsetLogicalOrigin 2947 -#define wxStyledTextCtrl_new_2 2948 -#define wxStyledTextCtrl_new_0 2949 -#define wxStyledTextCtrl_destruct 2950 -#define wxStyledTextCtrl_Create 2951 -#define wxStyledTextCtrl_AddText 2952 -#define wxStyledTextCtrl_AddStyledText 2953 -#define wxStyledTextCtrl_InsertText 2954 -#define wxStyledTextCtrl_ClearAll 2955 -#define wxStyledTextCtrl_ClearDocumentStyle 2956 -#define wxStyledTextCtrl_GetLength 2957 -#define wxStyledTextCtrl_GetCharAt 2958 -#define wxStyledTextCtrl_GetCurrentPos 2959 -#define wxStyledTextCtrl_GetAnchor 2960 -#define wxStyledTextCtrl_GetStyleAt 2961 -#define wxStyledTextCtrl_Redo 2962 -#define wxStyledTextCtrl_SetUndoCollection 2963 -#define wxStyledTextCtrl_SelectAll 2964 -#define wxStyledTextCtrl_SetSavePoint 2965 -#define wxStyledTextCtrl_GetStyledText 2966 -#define wxStyledTextCtrl_CanRedo 2967 -#define wxStyledTextCtrl_MarkerLineFromHandle 2968 -#define wxStyledTextCtrl_MarkerDeleteHandle 2969 -#define wxStyledTextCtrl_GetUndoCollection 2970 -#define wxStyledTextCtrl_GetViewWhiteSpace 2971 -#define wxStyledTextCtrl_SetViewWhiteSpace 2972 -#define wxStyledTextCtrl_PositionFromPoint 2973 -#define wxStyledTextCtrl_PositionFromPointClose 2974 -#define wxStyledTextCtrl_GotoLine 2975 -#define wxStyledTextCtrl_GotoPos 2976 -#define wxStyledTextCtrl_SetAnchor 2977 -#define wxStyledTextCtrl_GetCurLine 2978 -#define wxStyledTextCtrl_GetEndStyled 2979 -#define wxStyledTextCtrl_ConvertEOLs 2980 -#define wxStyledTextCtrl_GetEOLMode 2981 -#define wxStyledTextCtrl_SetEOLMode 2982 -#define wxStyledTextCtrl_StartStyling 2983 -#define wxStyledTextCtrl_SetStyling 2984 -#define wxStyledTextCtrl_GetBufferedDraw 2985 -#define wxStyledTextCtrl_SetBufferedDraw 2986 -#define wxStyledTextCtrl_SetTabWidth 2987 -#define wxStyledTextCtrl_GetTabWidth 2988 -#define wxStyledTextCtrl_SetCodePage 2989 -#define wxStyledTextCtrl_MarkerDefine 2990 -#define wxStyledTextCtrl_MarkerSetForeground 2991 -#define wxStyledTextCtrl_MarkerSetBackground 2992 -#define wxStyledTextCtrl_MarkerAdd 2993 -#define wxStyledTextCtrl_MarkerDelete 2994 -#define wxStyledTextCtrl_MarkerDeleteAll 2995 -#define wxStyledTextCtrl_MarkerGet 2996 -#define wxStyledTextCtrl_MarkerNext 2997 -#define wxStyledTextCtrl_MarkerPrevious 2998 -#define wxStyledTextCtrl_MarkerDefineBitmap 2999 -#define wxStyledTextCtrl_MarkerAddSet 3000 -#define wxStyledTextCtrl_MarkerSetAlpha 3001 -#define wxStyledTextCtrl_SetMarginType 3002 -#define wxStyledTextCtrl_GetMarginType 3003 -#define wxStyledTextCtrl_SetMarginWidth 3004 -#define wxStyledTextCtrl_GetMarginWidth 3005 -#define wxStyledTextCtrl_SetMarginMask 3006 -#define wxStyledTextCtrl_GetMarginMask 3007 -#define wxStyledTextCtrl_SetMarginSensitive 3008 -#define wxStyledTextCtrl_GetMarginSensitive 3009 -#define wxStyledTextCtrl_StyleClearAll 3010 -#define wxStyledTextCtrl_StyleSetForeground 3011 -#define wxStyledTextCtrl_StyleSetBackground 3012 -#define wxStyledTextCtrl_StyleSetBold 3013 -#define wxStyledTextCtrl_StyleSetItalic 3014 -#define wxStyledTextCtrl_StyleSetSize 3015 -#define wxStyledTextCtrl_StyleSetFaceName 3016 -#define wxStyledTextCtrl_StyleSetEOLFilled 3017 -#define wxStyledTextCtrl_StyleResetDefault 3018 -#define wxStyledTextCtrl_StyleSetUnderline 3019 -#define wxStyledTextCtrl_StyleSetCase 3020 -#define wxStyledTextCtrl_StyleSetHotSpot 3021 -#define wxStyledTextCtrl_SetSelForeground 3022 -#define wxStyledTextCtrl_SetSelBackground 3023 -#define wxStyledTextCtrl_GetSelAlpha 3024 -#define wxStyledTextCtrl_SetSelAlpha 3025 -#define wxStyledTextCtrl_SetCaretForeground 3026 -#define wxStyledTextCtrl_CmdKeyAssign 3027 -#define wxStyledTextCtrl_CmdKeyClear 3028 -#define wxStyledTextCtrl_CmdKeyClearAll 3029 -#define wxStyledTextCtrl_SetStyleBytes 3030 -#define wxStyledTextCtrl_StyleSetVisible 3031 -#define wxStyledTextCtrl_GetCaretPeriod 3032 -#define wxStyledTextCtrl_SetCaretPeriod 3033 -#define wxStyledTextCtrl_SetWordChars 3034 -#define wxStyledTextCtrl_BeginUndoAction 3035 -#define wxStyledTextCtrl_EndUndoAction 3036 -#define wxStyledTextCtrl_IndicatorSetStyle 3037 -#define wxStyledTextCtrl_IndicatorGetStyle 3038 -#define wxStyledTextCtrl_IndicatorSetForeground 3039 -#define wxStyledTextCtrl_IndicatorGetForeground 3040 -#define wxStyledTextCtrl_SetWhitespaceForeground 3041 -#define wxStyledTextCtrl_SetWhitespaceBackground 3042 -#define wxStyledTextCtrl_GetStyleBits 3043 -#define wxStyledTextCtrl_SetLineState 3044 -#define wxStyledTextCtrl_GetLineState 3045 -#define wxStyledTextCtrl_GetMaxLineState 3046 -#define wxStyledTextCtrl_GetCaretLineVisible 3047 -#define wxStyledTextCtrl_SetCaretLineVisible 3048 -#define wxStyledTextCtrl_GetCaretLineBackground 3049 -#define wxStyledTextCtrl_SetCaretLineBackground 3050 -#define wxStyledTextCtrl_AutoCompShow 3051 -#define wxStyledTextCtrl_AutoCompCancel 3052 -#define wxStyledTextCtrl_AutoCompActive 3053 -#define wxStyledTextCtrl_AutoCompPosStart 3054 -#define wxStyledTextCtrl_AutoCompComplete 3055 -#define wxStyledTextCtrl_AutoCompStops 3056 -#define wxStyledTextCtrl_AutoCompSetSeparator 3057 -#define wxStyledTextCtrl_AutoCompGetSeparator 3058 -#define wxStyledTextCtrl_AutoCompSelect 3059 -#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3060 -#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3061 -#define wxStyledTextCtrl_AutoCompSetFillUps 3062 -#define wxStyledTextCtrl_AutoCompSetChooseSingle 3063 -#define wxStyledTextCtrl_AutoCompGetChooseSingle 3064 -#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3065 -#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3066 -#define wxStyledTextCtrl_UserListShow 3067 -#define wxStyledTextCtrl_AutoCompSetAutoHide 3068 -#define wxStyledTextCtrl_AutoCompGetAutoHide 3069 -#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3070 -#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3071 -#define wxStyledTextCtrl_RegisterImage 3072 -#define wxStyledTextCtrl_ClearRegisteredImages 3073 -#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3074 -#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3075 -#define wxStyledTextCtrl_AutoCompSetMaxWidth 3076 -#define wxStyledTextCtrl_AutoCompGetMaxWidth 3077 -#define wxStyledTextCtrl_AutoCompSetMaxHeight 3078 -#define wxStyledTextCtrl_AutoCompGetMaxHeight 3079 -#define wxStyledTextCtrl_SetIndent 3080 -#define wxStyledTextCtrl_GetIndent 3081 -#define wxStyledTextCtrl_SetUseTabs 3082 -#define wxStyledTextCtrl_GetUseTabs 3083 -#define wxStyledTextCtrl_SetLineIndentation 3084 -#define wxStyledTextCtrl_GetLineIndentation 3085 -#define wxStyledTextCtrl_GetLineIndentPosition 3086 -#define wxStyledTextCtrl_GetColumn 3087 -#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3088 -#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3089 -#define wxStyledTextCtrl_SetIndentationGuides 3090 -#define wxStyledTextCtrl_GetIndentationGuides 3091 -#define wxStyledTextCtrl_SetHighlightGuide 3092 -#define wxStyledTextCtrl_GetHighlightGuide 3093 -#define wxStyledTextCtrl_GetLineEndPosition 3094 -#define wxStyledTextCtrl_GetCodePage 3095 -#define wxStyledTextCtrl_GetCaretForeground 3096 -#define wxStyledTextCtrl_GetReadOnly 3097 -#define wxStyledTextCtrl_SetCurrentPos 3098 -#define wxStyledTextCtrl_SetSelectionStart 3099 -#define wxStyledTextCtrl_GetSelectionStart 3100 -#define wxStyledTextCtrl_SetSelectionEnd 3101 -#define wxStyledTextCtrl_GetSelectionEnd 3102 -#define wxStyledTextCtrl_SetPrintMagnification 3103 -#define wxStyledTextCtrl_GetPrintMagnification 3104 -#define wxStyledTextCtrl_SetPrintColourMode 3105 -#define wxStyledTextCtrl_GetPrintColourMode 3106 -#define wxStyledTextCtrl_FindText 3107 -#define wxStyledTextCtrl_FormatRange 3108 -#define wxStyledTextCtrl_GetFirstVisibleLine 3109 -#define wxStyledTextCtrl_GetLine 3110 -#define wxStyledTextCtrl_GetLineCount 3111 -#define wxStyledTextCtrl_SetMarginLeft 3112 -#define wxStyledTextCtrl_GetMarginLeft 3113 -#define wxStyledTextCtrl_SetMarginRight 3114 -#define wxStyledTextCtrl_GetMarginRight 3115 -#define wxStyledTextCtrl_GetModify 3116 -#define wxStyledTextCtrl_SetSelection 3117 -#define wxStyledTextCtrl_GetSelectedText 3118 -#define wxStyledTextCtrl_GetTextRange 3119 -#define wxStyledTextCtrl_HideSelection 3120 -#define wxStyledTextCtrl_LineFromPosition 3121 -#define wxStyledTextCtrl_PositionFromLine 3122 -#define wxStyledTextCtrl_LineScroll 3123 -#define wxStyledTextCtrl_EnsureCaretVisible 3124 -#define wxStyledTextCtrl_ReplaceSelection 3125 -#define wxStyledTextCtrl_SetReadOnly 3126 -#define wxStyledTextCtrl_CanPaste 3127 -#define wxStyledTextCtrl_CanUndo 3128 -#define wxStyledTextCtrl_EmptyUndoBuffer 3129 -#define wxStyledTextCtrl_Undo 3130 -#define wxStyledTextCtrl_Cut 3131 -#define wxStyledTextCtrl_Copy 3132 -#define wxStyledTextCtrl_Paste 3133 -#define wxStyledTextCtrl_Clear 3134 -#define wxStyledTextCtrl_SetText 3135 -#define wxStyledTextCtrl_GetText 3136 -#define wxStyledTextCtrl_GetTextLength 3137 -#define wxStyledTextCtrl_GetOvertype 3138 -#define wxStyledTextCtrl_SetCaretWidth 3139 -#define wxStyledTextCtrl_GetCaretWidth 3140 -#define wxStyledTextCtrl_SetTargetStart 3141 -#define wxStyledTextCtrl_GetTargetStart 3142 -#define wxStyledTextCtrl_SetTargetEnd 3143 -#define wxStyledTextCtrl_GetTargetEnd 3144 -#define wxStyledTextCtrl_ReplaceTarget 3145 -#define wxStyledTextCtrl_SearchInTarget 3146 -#define wxStyledTextCtrl_SetSearchFlags 3147 -#define wxStyledTextCtrl_GetSearchFlags 3148 -#define wxStyledTextCtrl_CallTipShow 3149 -#define wxStyledTextCtrl_CallTipCancel 3150 -#define wxStyledTextCtrl_CallTipActive 3151 -#define wxStyledTextCtrl_CallTipPosAtStart 3152 -#define wxStyledTextCtrl_CallTipSetHighlight 3153 -#define wxStyledTextCtrl_CallTipSetBackground 3154 -#define wxStyledTextCtrl_CallTipSetForeground 3155 -#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3156 -#define wxStyledTextCtrl_CallTipUseStyle 3157 -#define wxStyledTextCtrl_VisibleFromDocLine 3158 -#define wxStyledTextCtrl_DocLineFromVisible 3159 -#define wxStyledTextCtrl_WrapCount 3160 -#define wxStyledTextCtrl_SetFoldLevel 3161 -#define wxStyledTextCtrl_GetFoldLevel 3162 -#define wxStyledTextCtrl_GetLastChild 3163 -#define wxStyledTextCtrl_GetFoldParent 3164 -#define wxStyledTextCtrl_ShowLines 3165 -#define wxStyledTextCtrl_HideLines 3166 -#define wxStyledTextCtrl_GetLineVisible 3167 -#define wxStyledTextCtrl_SetFoldExpanded 3168 -#define wxStyledTextCtrl_GetFoldExpanded 3169 -#define wxStyledTextCtrl_ToggleFold 3170 -#define wxStyledTextCtrl_EnsureVisible 3171 -#define wxStyledTextCtrl_SetFoldFlags 3172 -#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3173 -#define wxStyledTextCtrl_SetTabIndents 3174 -#define wxStyledTextCtrl_GetTabIndents 3175 -#define wxStyledTextCtrl_SetBackSpaceUnIndents 3176 -#define wxStyledTextCtrl_GetBackSpaceUnIndents 3177 -#define wxStyledTextCtrl_SetMouseDwellTime 3178 -#define wxStyledTextCtrl_GetMouseDwellTime 3179 -#define wxStyledTextCtrl_WordStartPosition 3180 -#define wxStyledTextCtrl_WordEndPosition 3181 -#define wxStyledTextCtrl_SetWrapMode 3182 -#define wxStyledTextCtrl_GetWrapMode 3183 -#define wxStyledTextCtrl_SetWrapVisualFlags 3184 -#define wxStyledTextCtrl_GetWrapVisualFlags 3185 -#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3186 -#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3187 -#define wxStyledTextCtrl_SetWrapStartIndent 3188 -#define wxStyledTextCtrl_GetWrapStartIndent 3189 -#define wxStyledTextCtrl_SetLayoutCache 3190 -#define wxStyledTextCtrl_GetLayoutCache 3191 -#define wxStyledTextCtrl_SetScrollWidth 3192 -#define wxStyledTextCtrl_GetScrollWidth 3193 -#define wxStyledTextCtrl_TextWidth 3194 -#define wxStyledTextCtrl_GetEndAtLastLine 3195 -#define wxStyledTextCtrl_TextHeight 3196 -#define wxStyledTextCtrl_SetUseVerticalScrollBar 3197 -#define wxStyledTextCtrl_GetUseVerticalScrollBar 3198 -#define wxStyledTextCtrl_AppendText 3199 -#define wxStyledTextCtrl_GetTwoPhaseDraw 3200 -#define wxStyledTextCtrl_SetTwoPhaseDraw 3201 -#define wxStyledTextCtrl_TargetFromSelection 3202 -#define wxStyledTextCtrl_LinesJoin 3203 -#define wxStyledTextCtrl_LinesSplit 3204 -#define wxStyledTextCtrl_SetFoldMarginColour 3205 -#define wxStyledTextCtrl_SetFoldMarginHiColour 3206 -#define wxStyledTextCtrl_LineDown 3207 -#define wxStyledTextCtrl_LineDownExtend 3208 -#define wxStyledTextCtrl_LineUp 3209 -#define wxStyledTextCtrl_LineUpExtend 3210 -#define wxStyledTextCtrl_CharLeft 3211 -#define wxStyledTextCtrl_CharLeftExtend 3212 -#define wxStyledTextCtrl_CharRight 3213 -#define wxStyledTextCtrl_CharRightExtend 3214 -#define wxStyledTextCtrl_WordLeft 3215 -#define wxStyledTextCtrl_WordLeftExtend 3216 -#define wxStyledTextCtrl_WordRight 3217 -#define wxStyledTextCtrl_WordRightExtend 3218 -#define wxStyledTextCtrl_Home 3219 -#define wxStyledTextCtrl_HomeExtend 3220 -#define wxStyledTextCtrl_LineEnd 3221 -#define wxStyledTextCtrl_LineEndExtend 3222 -#define wxStyledTextCtrl_DocumentStart 3223 -#define wxStyledTextCtrl_DocumentStartExtend 3224 -#define wxStyledTextCtrl_DocumentEnd 3225 -#define wxStyledTextCtrl_DocumentEndExtend 3226 -#define wxStyledTextCtrl_PageUp 3227 -#define wxStyledTextCtrl_PageUpExtend 3228 -#define wxStyledTextCtrl_PageDown 3229 -#define wxStyledTextCtrl_PageDownExtend 3230 -#define wxStyledTextCtrl_EditToggleOvertype 3231 -#define wxStyledTextCtrl_Cancel 3232 -#define wxStyledTextCtrl_DeleteBack 3233 -#define wxStyledTextCtrl_Tab 3234 -#define wxStyledTextCtrl_BackTab 3235 -#define wxStyledTextCtrl_NewLine 3236 -#define wxStyledTextCtrl_FormFeed 3237 -#define wxStyledTextCtrl_VCHome 3238 -#define wxStyledTextCtrl_VCHomeExtend 3239 -#define wxStyledTextCtrl_ZoomIn 3240 -#define wxStyledTextCtrl_ZoomOut 3241 -#define wxStyledTextCtrl_DelWordLeft 3242 -#define wxStyledTextCtrl_DelWordRight 3243 -#define wxStyledTextCtrl_LineCut 3244 -#define wxStyledTextCtrl_LineDelete 3245 -#define wxStyledTextCtrl_LineTranspose 3246 -#define wxStyledTextCtrl_LineDuplicate 3247 -#define wxStyledTextCtrl_LowerCase 3248 -#define wxStyledTextCtrl_UpperCase 3249 -#define wxStyledTextCtrl_LineScrollDown 3250 -#define wxStyledTextCtrl_LineScrollUp 3251 -#define wxStyledTextCtrl_DeleteBackNotLine 3252 -#define wxStyledTextCtrl_HomeDisplay 3253 -#define wxStyledTextCtrl_HomeDisplayExtend 3254 -#define wxStyledTextCtrl_LineEndDisplay 3255 -#define wxStyledTextCtrl_LineEndDisplayExtend 3256 -#define wxStyledTextCtrl_HomeWrapExtend 3257 -#define wxStyledTextCtrl_LineEndWrap 3258 -#define wxStyledTextCtrl_LineEndWrapExtend 3259 -#define wxStyledTextCtrl_VCHomeWrap 3260 -#define wxStyledTextCtrl_VCHomeWrapExtend 3261 -#define wxStyledTextCtrl_LineCopy 3262 -#define wxStyledTextCtrl_MoveCaretInsideView 3263 -#define wxStyledTextCtrl_LineLength 3264 -#define wxStyledTextCtrl_BraceHighlight 3265 -#define wxStyledTextCtrl_BraceBadLight 3266 -#define wxStyledTextCtrl_BraceMatch 3267 -#define wxStyledTextCtrl_GetViewEOL 3268 -#define wxStyledTextCtrl_SetViewEOL 3269 -#define wxStyledTextCtrl_SetModEventMask 3270 -#define wxStyledTextCtrl_GetEdgeColumn 3271 -#define wxStyledTextCtrl_SetEdgeColumn 3272 -#define wxStyledTextCtrl_SetEdgeMode 3273 -#define wxStyledTextCtrl_GetEdgeMode 3274 -#define wxStyledTextCtrl_GetEdgeColour 3275 -#define wxStyledTextCtrl_SetEdgeColour 3276 -#define wxStyledTextCtrl_SearchAnchor 3277 -#define wxStyledTextCtrl_SearchNext 3278 -#define wxStyledTextCtrl_SearchPrev 3279 -#define wxStyledTextCtrl_LinesOnScreen 3280 -#define wxStyledTextCtrl_UsePopUp 3281 -#define wxStyledTextCtrl_SelectionIsRectangle 3282 -#define wxStyledTextCtrl_SetZoom 3283 -#define wxStyledTextCtrl_GetZoom 3284 -#define wxStyledTextCtrl_GetModEventMask 3285 -#define wxStyledTextCtrl_SetSTCFocus 3286 -#define wxStyledTextCtrl_GetSTCFocus 3287 -#define wxStyledTextCtrl_SetStatus 3288 -#define wxStyledTextCtrl_GetStatus 3289 -#define wxStyledTextCtrl_SetMouseDownCaptures 3290 -#define wxStyledTextCtrl_GetMouseDownCaptures 3291 -#define wxStyledTextCtrl_SetSTCCursor 3292 -#define wxStyledTextCtrl_GetSTCCursor 3293 -#define wxStyledTextCtrl_SetControlCharSymbol 3294 -#define wxStyledTextCtrl_GetControlCharSymbol 3295 -#define wxStyledTextCtrl_WordPartLeft 3296 -#define wxStyledTextCtrl_WordPartLeftExtend 3297 -#define wxStyledTextCtrl_WordPartRight 3298 -#define wxStyledTextCtrl_WordPartRightExtend 3299 -#define wxStyledTextCtrl_SetVisiblePolicy 3300 -#define wxStyledTextCtrl_DelLineLeft 3301 -#define wxStyledTextCtrl_DelLineRight 3302 -#define wxStyledTextCtrl_GetXOffset 3303 -#define wxStyledTextCtrl_ChooseCaretX 3304 -#define wxStyledTextCtrl_SetXCaretPolicy 3305 -#define wxStyledTextCtrl_SetYCaretPolicy 3306 -#define wxStyledTextCtrl_GetPrintWrapMode 3307 -#define wxStyledTextCtrl_SetHotspotActiveForeground 3308 -#define wxStyledTextCtrl_SetHotspotActiveBackground 3309 -#define wxStyledTextCtrl_SetHotspotActiveUnderline 3310 -#define wxStyledTextCtrl_SetHotspotSingleLine 3311 -#define wxStyledTextCtrl_ParaDownExtend 3312 -#define wxStyledTextCtrl_ParaUp 3313 -#define wxStyledTextCtrl_ParaUpExtend 3314 -#define wxStyledTextCtrl_PositionBefore 3315 -#define wxStyledTextCtrl_PositionAfter 3316 -#define wxStyledTextCtrl_CopyRange 3317 -#define wxStyledTextCtrl_CopyText 3318 -#define wxStyledTextCtrl_SetSelectionMode 3319 -#define wxStyledTextCtrl_GetSelectionMode 3320 -#define wxStyledTextCtrl_LineDownRectExtend 3321 -#define wxStyledTextCtrl_LineUpRectExtend 3322 -#define wxStyledTextCtrl_CharLeftRectExtend 3323 -#define wxStyledTextCtrl_CharRightRectExtend 3324 -#define wxStyledTextCtrl_HomeRectExtend 3325 -#define wxStyledTextCtrl_VCHomeRectExtend 3326 -#define wxStyledTextCtrl_LineEndRectExtend 3327 -#define wxStyledTextCtrl_PageUpRectExtend 3328 -#define wxStyledTextCtrl_PageDownRectExtend 3329 -#define wxStyledTextCtrl_StutteredPageUp 3330 -#define wxStyledTextCtrl_StutteredPageUpExtend 3331 -#define wxStyledTextCtrl_StutteredPageDown 3332 -#define wxStyledTextCtrl_StutteredPageDownExtend 3333 -#define wxStyledTextCtrl_WordLeftEnd 3334 -#define wxStyledTextCtrl_WordLeftEndExtend 3335 -#define wxStyledTextCtrl_WordRightEnd 3336 -#define wxStyledTextCtrl_WordRightEndExtend 3337 -#define wxStyledTextCtrl_SetWhitespaceChars 3338 -#define wxStyledTextCtrl_SetCharsDefault 3339 -#define wxStyledTextCtrl_AutoCompGetCurrent 3340 -#define wxStyledTextCtrl_Allocate 3341 -#define wxStyledTextCtrl_FindColumn 3342 -#define wxStyledTextCtrl_GetCaretSticky 3343 -#define wxStyledTextCtrl_SetCaretSticky 3344 -#define wxStyledTextCtrl_ToggleCaretSticky 3345 -#define wxStyledTextCtrl_SetPasteConvertEndings 3346 -#define wxStyledTextCtrl_GetPasteConvertEndings 3347 -#define wxStyledTextCtrl_SelectionDuplicate 3348 -#define wxStyledTextCtrl_SetCaretLineBackAlpha 3349 -#define wxStyledTextCtrl_GetCaretLineBackAlpha 3350 -#define wxStyledTextCtrl_StartRecord 3351 -#define wxStyledTextCtrl_StopRecord 3352 -#define wxStyledTextCtrl_SetLexer 3353 -#define wxStyledTextCtrl_GetLexer 3354 -#define wxStyledTextCtrl_Colourise 3355 -#define wxStyledTextCtrl_SetProperty 3356 -#define wxStyledTextCtrl_SetKeyWords 3357 -#define wxStyledTextCtrl_SetLexerLanguage 3358 -#define wxStyledTextCtrl_GetProperty 3359 -#define wxStyledTextCtrl_GetStyleBitsNeeded 3360 -#define wxStyledTextCtrl_GetCurrentLine 3361 -#define wxStyledTextCtrl_StyleSetSpec 3362 -#define wxStyledTextCtrl_StyleSetFont 3363 -#define wxStyledTextCtrl_StyleSetFontAttr 3364 -#define wxStyledTextCtrl_StyleSetCharacterSet 3365 -#define wxStyledTextCtrl_StyleSetFontEncoding 3366 -#define wxStyledTextCtrl_CmdKeyExecute 3367 -#define wxStyledTextCtrl_SetMargins 3368 -#define wxStyledTextCtrl_GetSelection 3369 -#define wxStyledTextCtrl_PointFromPosition 3370 -#define wxStyledTextCtrl_ScrollToLine 3371 -#define wxStyledTextCtrl_ScrollToColumn 3372 -#define wxStyledTextCtrl_SetVScrollBar 3373 -#define wxStyledTextCtrl_SetHScrollBar 3374 -#define wxStyledTextCtrl_GetLastKeydownProcessed 3375 -#define wxStyledTextCtrl_SetLastKeydownProcessed 3376 -#define wxStyledTextCtrl_SaveFile 3377 -#define wxStyledTextCtrl_LoadFile 3378 -#define wxStyledTextCtrl_DoDragOver 3379 -#define wxStyledTextCtrl_DoDropText 3380 -#define wxStyledTextCtrl_GetUseAntiAliasing 3381 -#define wxStyledTextCtrl_AddTextRaw 3382 -#define wxStyledTextCtrl_InsertTextRaw 3383 -#define wxStyledTextCtrl_GetCurLineRaw 3384 -#define wxStyledTextCtrl_GetLineRaw 3385 -#define wxStyledTextCtrl_GetSelectedTextRaw 3386 -#define wxStyledTextCtrl_GetTextRangeRaw 3387 -#define wxStyledTextCtrl_SetTextRaw 3388 -#define wxStyledTextCtrl_GetTextRaw 3389 -#define wxStyledTextCtrl_AppendTextRaw 3390 -#define wxArtProvider_GetBitmap 3391 -#define wxArtProvider_GetIcon 3392 -#define wxTreeEvent_GetKeyCode 3393 -#define wxTreeEvent_GetItem 3394 -#define wxTreeEvent_GetKeyEvent 3395 -#define wxTreeEvent_GetLabel 3396 -#define wxTreeEvent_GetOldItem 3397 -#define wxTreeEvent_GetPoint 3398 -#define wxTreeEvent_IsEditCancelled 3399 -#define wxTreeEvent_SetToolTip 3400 -#define wxNotebookEvent_GetOldSelection 3401 -#define wxNotebookEvent_GetSelection 3402 -#define wxNotebookEvent_SetOldSelection 3403 -#define wxNotebookEvent_SetSelection 3404 -#define wxFileDataObject_new 3405 -#define wxFileDataObject_AddFile 3406 -#define wxFileDataObject_GetFilenames 3407 -#define wxFileDataObject_destroy 3408 -#define wxTextDataObject_new 3409 -#define wxTextDataObject_GetTextLength 3410 -#define wxTextDataObject_GetText 3411 -#define wxTextDataObject_SetText 3412 -#define wxTextDataObject_destroy 3413 -#define wxBitmapDataObject_new_1_1 3414 -#define wxBitmapDataObject_new_1_0 3415 -#define wxBitmapDataObject_GetBitmap 3416 -#define wxBitmapDataObject_SetBitmap 3417 -#define wxBitmapDataObject_destroy 3418 -#define wxClipboard_new 3420 -#define wxClipboard_destruct 3421 -#define wxClipboard_AddData 3422 -#define wxClipboard_Clear 3423 -#define wxClipboard_Close 3424 -#define wxClipboard_Flush 3425 -#define wxClipboard_GetData 3426 -#define wxClipboard_IsOpened 3427 -#define wxClipboard_Open 3428 -#define wxClipboard_SetData 3429 -#define wxClipboard_UsePrimarySelection 3431 -#define wxClipboard_IsSupported 3432 -#define wxClipboard_Get 3433 -#define wxSpinEvent_GetPosition 3434 -#define wxSpinEvent_SetPosition 3435 -#define wxSplitterWindow_new_0 3436 -#define wxSplitterWindow_new_2 3437 -#define wxSplitterWindow_destruct 3438 -#define wxSplitterWindow_Create 3439 -#define wxSplitterWindow_GetMinimumPaneSize 3440 -#define wxSplitterWindow_GetSashGravity 3441 -#define wxSplitterWindow_GetSashPosition 3442 -#define wxSplitterWindow_GetSplitMode 3443 -#define wxSplitterWindow_GetWindow1 3444 -#define wxSplitterWindow_GetWindow2 3445 -#define wxSplitterWindow_Initialize 3446 -#define wxSplitterWindow_IsSplit 3447 -#define wxSplitterWindow_ReplaceWindow 3448 -#define wxSplitterWindow_SetSashGravity 3449 -#define wxSplitterWindow_SetSashPosition 3450 -#define wxSplitterWindow_SetSashSize 3451 -#define wxSplitterWindow_SetMinimumPaneSize 3452 -#define wxSplitterWindow_SetSplitMode 3453 -#define wxSplitterWindow_SplitHorizontally 3454 -#define wxSplitterWindow_SplitVertically 3455 -#define wxSplitterWindow_Unsplit 3456 -#define wxSplitterWindow_UpdateSize 3457 -#define wxSplitterEvent_GetSashPosition 3458 -#define wxSplitterEvent_GetX 3459 -#define wxSplitterEvent_GetY 3460 -#define wxSplitterEvent_GetWindowBeingRemoved 3461 -#define wxSplitterEvent_SetSashPosition 3462 -#define wxHtmlWindow_new_0 3463 -#define wxHtmlWindow_new_2 3464 -#define wxHtmlWindow_AppendToPage 3465 -#define wxHtmlWindow_GetOpenedAnchor 3466 -#define wxHtmlWindow_GetOpenedPage 3467 -#define wxHtmlWindow_GetOpenedPageTitle 3468 -#define wxHtmlWindow_GetRelatedFrame 3469 -#define wxHtmlWindow_HistoryBack 3470 -#define wxHtmlWindow_HistoryCanBack 3471 -#define wxHtmlWindow_HistoryCanForward 3472 -#define wxHtmlWindow_HistoryClear 3473 -#define wxHtmlWindow_HistoryForward 3474 -#define wxHtmlWindow_LoadFile 3475 -#define wxHtmlWindow_LoadPage 3476 -#define wxHtmlWindow_SelectAll 3477 -#define wxHtmlWindow_SelectionToText 3478 -#define wxHtmlWindow_SelectLine 3479 -#define wxHtmlWindow_SelectWord 3480 -#define wxHtmlWindow_SetBorders 3481 -#define wxHtmlWindow_SetFonts 3482 -#define wxHtmlWindow_SetPage 3483 -#define wxHtmlWindow_SetRelatedFrame 3484 -#define wxHtmlWindow_SetRelatedStatusBar 3485 -#define wxHtmlWindow_ToText 3486 -#define wxHtmlWindow_destroy 3487 -#define wxHtmlLinkEvent_GetLinkInfo 3488 -#define wxSystemSettings_GetColour 3489 -#define wxSystemSettings_GetFont 3490 -#define wxSystemSettings_GetMetric 3491 -#define wxSystemSettings_GetScreenType 3492 -#define wxSystemOptions_GetOption 3493 -#define wxSystemOptions_GetOptionInt 3494 -#define wxSystemOptions_HasOption 3495 -#define wxSystemOptions_IsFalse 3496 -#define wxSystemOptions_SetOption_2_1 3497 -#define wxSystemOptions_SetOption_2_0 3498 -#define wxAuiNotebookEvent_SetSelection 3499 -#define wxAuiNotebookEvent_GetSelection 3500 -#define wxAuiNotebookEvent_SetOldSelection 3501 -#define wxAuiNotebookEvent_GetOldSelection 3502 -#define wxAuiNotebookEvent_SetDragSource 3503 -#define wxAuiNotebookEvent_GetDragSource 3504 -#define wxAuiManagerEvent_SetManager 3505 -#define wxAuiManagerEvent_GetManager 3506 -#define wxAuiManagerEvent_SetPane 3507 -#define wxAuiManagerEvent_GetPane 3508 -#define wxAuiManagerEvent_SetButton 3509 -#define wxAuiManagerEvent_GetButton 3510 -#define wxAuiManagerEvent_SetDC 3511 -#define wxAuiManagerEvent_GetDC 3512 -#define wxAuiManagerEvent_Veto 3513 -#define wxAuiManagerEvent_GetVeto 3514 -#define wxAuiManagerEvent_SetCanVeto 3515 -#define wxAuiManagerEvent_CanVeto 3516 -#define wxLogNull_new 3517 -#define wxLogNull_destroy 3518 -#define wxTaskBarIcon_new 3519 -#define wxTaskBarIcon_destruct 3520 -#define wxTaskBarIcon_PopupMenu 3521 -#define wxTaskBarIcon_RemoveIcon 3522 -#define wxTaskBarIcon_SetIcon 3523 +#define wxTreeCtrl_IsTreeItemIdOk 2061 +#define wxTreeCtrl_PrependItem 2062 +#define wxTreeCtrl_ScrollTo 2063 +#define wxTreeCtrl_SelectItem_1 2064 +#define wxTreeCtrl_SelectItem_2 2065 +#define wxTreeCtrl_SetIndent 2066 +#define wxTreeCtrl_SetImageList 2067 +#define wxTreeCtrl_SetItemBackgroundColour 2068 +#define wxTreeCtrl_SetItemBold 2069 +#define wxTreeCtrl_SetItemData 2070 +#define wxTreeCtrl_SetItemDropHighlight 2071 +#define wxTreeCtrl_SetItemFont 2072 +#define wxTreeCtrl_SetItemHasChildren 2073 +#define wxTreeCtrl_SetItemImage_2 2074 +#define wxTreeCtrl_SetItemImage_3 2075 +#define wxTreeCtrl_SetItemText 2076 +#define wxTreeCtrl_SetItemTextColour 2077 +#define wxTreeCtrl_SetStateImageList 2078 +#define wxTreeCtrl_SetWindowStyle 2079 +#define wxTreeCtrl_SortChildren 2080 +#define wxTreeCtrl_Toggle 2081 +#define wxTreeCtrl_ToggleItemSelection 2082 +#define wxTreeCtrl_Unselect 2083 +#define wxTreeCtrl_UnselectAll 2084 +#define wxTreeCtrl_UnselectItem 2085 +#define wxScrollBar_new_0 2086 +#define wxScrollBar_new_3 2087 +#define wxScrollBar_destruct 2088 +#define wxScrollBar_Create 2089 +#define wxScrollBar_GetRange 2090 +#define wxScrollBar_GetPageSize 2091 +#define wxScrollBar_GetThumbPosition 2092 +#define wxScrollBar_GetThumbSize 2093 +#define wxScrollBar_SetThumbPosition 2094 +#define wxScrollBar_SetScrollbar 2095 +#define wxSpinButton_new_2 2097 +#define wxSpinButton_new_0 2098 +#define wxSpinButton_Create 2099 +#define wxSpinButton_GetMax 2100 +#define wxSpinButton_GetMin 2101 +#define wxSpinButton_GetValue 2102 +#define wxSpinButton_SetRange 2103 +#define wxSpinButton_SetValue 2104 +#define wxSpinButton_destroy 2105 +#define wxSpinCtrl_new_0 2106 +#define wxSpinCtrl_new_2 2107 +#define wxSpinCtrl_Create 2109 +#define wxSpinCtrl_SetValue_1_1 2112 +#define wxSpinCtrl_SetValue_1_0 2113 +#define wxSpinCtrl_GetValue 2115 +#define wxSpinCtrl_SetRange 2117 +#define wxSpinCtrl_SetSelection 2118 +#define wxSpinCtrl_GetMin 2120 +#define wxSpinCtrl_GetMax 2122 +#define wxSpinCtrl_destroy 2123 +#define wxStaticText_new_0 2124 +#define wxStaticText_new_4 2125 +#define wxStaticText_Create 2126 +#define wxStaticText_GetLabel 2127 +#define wxStaticText_SetLabel 2128 +#define wxStaticText_Wrap 2129 +#define wxStaticText_destroy 2130 +#define wxStaticBitmap_new_0 2131 +#define wxStaticBitmap_new_4 2132 +#define wxStaticBitmap_Create 2133 +#define wxStaticBitmap_GetBitmap 2134 +#define wxStaticBitmap_SetBitmap 2135 +#define wxStaticBitmap_destroy 2136 +#define wxRadioBox_new 2137 +#define wxRadioBox_destruct 2139 +#define wxRadioBox_Create 2140 +#define wxRadioBox_Enable_2 2141 +#define wxRadioBox_Enable_1 2142 +#define wxRadioBox_GetSelection 2143 +#define wxRadioBox_GetString 2144 +#define wxRadioBox_SetSelection 2145 +#define wxRadioBox_Show_2 2146 +#define wxRadioBox_Show_1 2147 +#define wxRadioBox_GetColumnCount 2148 +#define wxRadioBox_GetItemHelpText 2149 +#define wxRadioBox_GetItemToolTip 2150 +#define wxRadioBox_GetItemFromPoint 2152 +#define wxRadioBox_GetRowCount 2153 +#define wxRadioBox_IsItemEnabled 2154 +#define wxRadioBox_IsItemShown 2155 +#define wxRadioBox_SetItemHelpText 2156 +#define wxRadioBox_SetItemToolTip 2157 +#define wxRadioButton_new_0 2158 +#define wxRadioButton_new_4 2159 +#define wxRadioButton_Create 2160 +#define wxRadioButton_GetValue 2161 +#define wxRadioButton_SetValue 2162 +#define wxRadioButton_destroy 2163 +#define wxSlider_new_6 2165 +#define wxSlider_new_0 2166 +#define wxSlider_Create 2167 +#define wxSlider_GetLineSize 2168 +#define wxSlider_GetMax 2169 +#define wxSlider_GetMin 2170 +#define wxSlider_GetPageSize 2171 +#define wxSlider_GetThumbLength 2172 +#define wxSlider_GetValue 2173 +#define wxSlider_SetLineSize 2174 +#define wxSlider_SetPageSize 2175 +#define wxSlider_SetRange 2176 +#define wxSlider_SetThumbLength 2177 +#define wxSlider_SetValue 2178 +#define wxSlider_destroy 2179 +#define wxDialog_new_4 2181 +#define wxDialog_new_0 2182 +#define wxDialog_destruct 2184 +#define wxDialog_Create 2185 +#define wxDialog_CreateButtonSizer 2186 +#define wxDialog_CreateStdDialogButtonSizer 2187 +#define wxDialog_EndModal 2188 +#define wxDialog_GetAffirmativeId 2189 +#define wxDialog_GetReturnCode 2190 +#define wxDialog_IsModal 2191 +#define wxDialog_SetAffirmativeId 2192 +#define wxDialog_SetReturnCode 2193 +#define wxDialog_Show 2194 +#define wxDialog_ShowModal 2195 +#define wxColourDialog_new_0 2196 +#define wxColourDialog_new_2 2197 +#define wxColourDialog_destruct 2198 +#define wxColourDialog_Create 2199 +#define wxColourDialog_GetColourData 2200 +#define wxColourData_new_0 2201 +#define wxColourData_new_1 2202 +#define wxColourData_destruct 2203 +#define wxColourData_GetChooseFull 2204 +#define wxColourData_GetColour 2205 +#define wxColourData_GetCustomColour 2207 +#define wxColourData_SetChooseFull 2208 +#define wxColourData_SetColour 2209 +#define wxColourData_SetCustomColour 2210 +#define wxPalette_new_0 2211 +#define wxPalette_new_4 2212 +#define wxPalette_destruct 2214 +#define wxPalette_Create 2215 +#define wxPalette_GetColoursCount 2216 +#define wxPalette_GetPixel 2217 +#define wxPalette_GetRGB 2218 +#define wxPalette_IsOk 2219 +#define wxDirDialog_new 2223 +#define wxDirDialog_destruct 2224 +#define wxDirDialog_GetPath 2225 +#define wxDirDialog_GetMessage 2226 +#define wxDirDialog_SetMessage 2227 +#define wxDirDialog_SetPath 2228 +#define wxFileDialog_new 2232 +#define wxFileDialog_destruct 2233 +#define wxFileDialog_GetDirectory 2234 +#define wxFileDialog_GetFilename 2235 +#define wxFileDialog_GetFilenames 2236 +#define wxFileDialog_GetFilterIndex 2237 +#define wxFileDialog_GetMessage 2238 +#define wxFileDialog_GetPath 2239 +#define wxFileDialog_GetPaths 2240 +#define wxFileDialog_GetWildcard 2241 +#define wxFileDialog_SetDirectory 2242 +#define wxFileDialog_SetFilename 2243 +#define wxFileDialog_SetFilterIndex 2244 +#define wxFileDialog_SetMessage 2245 +#define wxFileDialog_SetPath 2246 +#define wxFileDialog_SetWildcard 2247 +#define wxPickerBase_SetInternalMargin 2248 +#define wxPickerBase_GetInternalMargin 2249 +#define wxPickerBase_SetTextCtrlProportion 2250 +#define wxPickerBase_SetPickerCtrlProportion 2251 +#define wxPickerBase_GetTextCtrlProportion 2252 +#define wxPickerBase_GetPickerCtrlProportion 2253 +#define wxPickerBase_HasTextCtrl 2254 +#define wxPickerBase_GetTextCtrl 2255 +#define wxPickerBase_IsTextCtrlGrowable 2256 +#define wxPickerBase_SetPickerCtrlGrowable 2257 +#define wxPickerBase_SetTextCtrlGrowable 2258 +#define wxPickerBase_IsPickerCtrlGrowable 2259 +#define wxFilePickerCtrl_new_0 2260 +#define wxFilePickerCtrl_new_3 2261 +#define wxFilePickerCtrl_Create 2262 +#define wxFilePickerCtrl_GetPath 2263 +#define wxFilePickerCtrl_SetPath 2264 +#define wxFilePickerCtrl_destroy 2265 +#define wxDirPickerCtrl_new_0 2266 +#define wxDirPickerCtrl_new_3 2267 +#define wxDirPickerCtrl_Create 2268 +#define wxDirPickerCtrl_GetPath 2269 +#define wxDirPickerCtrl_SetPath 2270 +#define wxDirPickerCtrl_destroy 2271 +#define wxColourPickerCtrl_new_0 2272 +#define wxColourPickerCtrl_new_3 2273 +#define wxColourPickerCtrl_Create 2274 +#define wxColourPickerCtrl_GetColour 2275 +#define wxColourPickerCtrl_SetColour_1_1 2276 +#define wxColourPickerCtrl_SetColour_1_0 2277 +#define wxColourPickerCtrl_destroy 2278 +#define wxDatePickerCtrl_new_0 2279 +#define wxDatePickerCtrl_new_3 2280 +#define wxDatePickerCtrl_GetRange 2281 +#define wxDatePickerCtrl_GetValue 2282 +#define wxDatePickerCtrl_SetRange 2283 +#define wxDatePickerCtrl_SetValue 2284 +#define wxDatePickerCtrl_destroy 2285 +#define wxFontPickerCtrl_new_0 2286 +#define wxFontPickerCtrl_new_3 2287 +#define wxFontPickerCtrl_Create 2288 +#define wxFontPickerCtrl_GetSelectedFont 2289 +#define wxFontPickerCtrl_SetSelectedFont 2290 +#define wxFontPickerCtrl_GetMaxPointSize 2291 +#define wxFontPickerCtrl_SetMaxPointSize 2292 +#define wxFontPickerCtrl_destroy 2293 +#define wxFindReplaceDialog_new_0 2296 +#define wxFindReplaceDialog_new_4 2297 +#define wxFindReplaceDialog_destruct 2298 +#define wxFindReplaceDialog_Create 2299 +#define wxFindReplaceDialog_GetData 2300 +#define wxFindReplaceData_new_0 2301 +#define wxFindReplaceData_new_1 2302 +#define wxFindReplaceData_GetFindString 2303 +#define wxFindReplaceData_GetReplaceString 2304 +#define wxFindReplaceData_GetFlags 2305 +#define wxFindReplaceData_SetFlags 2306 +#define wxFindReplaceData_SetFindString 2307 +#define wxFindReplaceData_SetReplaceString 2308 +#define wxFindReplaceData_destroy 2309 +#define wxMultiChoiceDialog_new_0 2310 +#define wxMultiChoiceDialog_new_5 2312 +#define wxMultiChoiceDialog_GetSelections 2313 +#define wxMultiChoiceDialog_SetSelections 2314 +#define wxMultiChoiceDialog_destroy 2315 +#define wxSingleChoiceDialog_new_0 2316 +#define wxSingleChoiceDialog_new_5 2318 +#define wxSingleChoiceDialog_GetSelection 2319 +#define wxSingleChoiceDialog_GetStringSelection 2320 +#define wxSingleChoiceDialog_SetSelection 2321 +#define wxSingleChoiceDialog_destroy 2322 +#define wxTextEntryDialog_new 2323 +#define wxTextEntryDialog_GetValue 2324 +#define wxTextEntryDialog_SetValue 2325 +#define wxTextEntryDialog_destroy 2326 +#define wxPasswordEntryDialog_new 2327 +#define wxPasswordEntryDialog_destroy 2328 +#define wxFontData_new_0 2329 +#define wxFontData_new_1 2330 +#define wxFontData_destruct 2331 +#define wxFontData_EnableEffects 2332 +#define wxFontData_GetAllowSymbols 2333 +#define wxFontData_GetColour 2334 +#define wxFontData_GetChosenFont 2335 +#define wxFontData_GetEnableEffects 2336 +#define wxFontData_GetInitialFont 2337 +#define wxFontData_GetShowHelp 2338 +#define wxFontData_SetAllowSymbols 2339 +#define wxFontData_SetChosenFont 2340 +#define wxFontData_SetColour 2341 +#define wxFontData_SetInitialFont 2342 +#define wxFontData_SetRange 2343 +#define wxFontData_SetShowHelp 2344 +#define wxFontDialog_new_0 2348 +#define wxFontDialog_new_2 2350 +#define wxFontDialog_Create 2352 +#define wxFontDialog_GetFontData 2353 +#define wxFontDialog_destroy 2355 +#define wxProgressDialog_new 2356 +#define wxProgressDialog_destruct 2357 +#define wxProgressDialog_Resume 2358 +#define wxProgressDialog_Update_2 2359 +#define wxProgressDialog_Update_0 2360 +#define wxMessageDialog_new 2361 +#define wxMessageDialog_destruct 2362 +#define wxPageSetupDialog_new 2363 +#define wxPageSetupDialog_destruct 2364 +#define wxPageSetupDialog_GetPageSetupData 2365 +#define wxPageSetupDialog_ShowModal 2366 +#define wxPageSetupDialogData_new_0 2367 +#define wxPageSetupDialogData_new_1_0 2368 +#define wxPageSetupDialogData_new_1_1 2369 +#define wxPageSetupDialogData_destruct 2370 +#define wxPageSetupDialogData_EnableHelp 2371 +#define wxPageSetupDialogData_EnableMargins 2372 +#define wxPageSetupDialogData_EnableOrientation 2373 +#define wxPageSetupDialogData_EnablePaper 2374 +#define wxPageSetupDialogData_EnablePrinter 2375 +#define wxPageSetupDialogData_GetDefaultMinMargins 2376 +#define wxPageSetupDialogData_GetEnableMargins 2377 +#define wxPageSetupDialogData_GetEnableOrientation 2378 +#define wxPageSetupDialogData_GetEnablePaper 2379 +#define wxPageSetupDialogData_GetEnablePrinter 2380 +#define wxPageSetupDialogData_GetEnableHelp 2381 +#define wxPageSetupDialogData_GetDefaultInfo 2382 +#define wxPageSetupDialogData_GetMarginTopLeft 2383 +#define wxPageSetupDialogData_GetMarginBottomRight 2384 +#define wxPageSetupDialogData_GetMinMarginTopLeft 2385 +#define wxPageSetupDialogData_GetMinMarginBottomRight 2386 +#define wxPageSetupDialogData_GetPaperId 2387 +#define wxPageSetupDialogData_GetPaperSize 2388 +#define wxPageSetupDialogData_GetPrintData 2390 +#define wxPageSetupDialogData_IsOk 2391 +#define wxPageSetupDialogData_SetDefaultInfo 2392 +#define wxPageSetupDialogData_SetDefaultMinMargins 2393 +#define wxPageSetupDialogData_SetMarginTopLeft 2394 +#define wxPageSetupDialogData_SetMarginBottomRight 2395 +#define wxPageSetupDialogData_SetMinMarginTopLeft 2396 +#define wxPageSetupDialogData_SetMinMarginBottomRight 2397 +#define wxPageSetupDialogData_SetPaperId 2398 +#define wxPageSetupDialogData_SetPaperSize_1_1 2399 +#define wxPageSetupDialogData_SetPaperSize_1_0 2400 +#define wxPageSetupDialogData_SetPrintData 2401 +#define wxPrintDialog_new_2_0 2402 +#define wxPrintDialog_new_2_1 2403 +#define wxPrintDialog_destruct 2404 +#define wxPrintDialog_GetPrintDialogData 2405 +#define wxPrintDialog_GetPrintDC 2406 +#define wxPrintDialogData_new_0 2407 +#define wxPrintDialogData_new_1_1 2408 +#define wxPrintDialogData_new_1_0 2409 +#define wxPrintDialogData_destruct 2410 +#define wxPrintDialogData_EnableHelp 2411 +#define wxPrintDialogData_EnablePageNumbers 2412 +#define wxPrintDialogData_EnablePrintToFile 2413 +#define wxPrintDialogData_EnableSelection 2414 +#define wxPrintDialogData_GetAllPages 2415 +#define wxPrintDialogData_GetCollate 2416 +#define wxPrintDialogData_GetFromPage 2417 +#define wxPrintDialogData_GetMaxPage 2418 +#define wxPrintDialogData_GetMinPage 2419 +#define wxPrintDialogData_GetNoCopies 2420 +#define wxPrintDialogData_GetPrintData 2421 +#define wxPrintDialogData_GetPrintToFile 2422 +#define wxPrintDialogData_GetSelection 2423 +#define wxPrintDialogData_GetToPage 2424 +#define wxPrintDialogData_IsOk 2425 +#define wxPrintDialogData_SetCollate 2426 +#define wxPrintDialogData_SetFromPage 2427 +#define wxPrintDialogData_SetMaxPage 2428 +#define wxPrintDialogData_SetMinPage 2429 +#define wxPrintDialogData_SetNoCopies 2430 +#define wxPrintDialogData_SetPrintData 2431 +#define wxPrintDialogData_SetPrintToFile 2432 +#define wxPrintDialogData_SetSelection 2433 +#define wxPrintDialogData_SetToPage 2434 +#define wxPrintData_new_0 2435 +#define wxPrintData_new_1 2436 +#define wxPrintData_destruct 2437 +#define wxPrintData_GetCollate 2438 +#define wxPrintData_GetBin 2439 +#define wxPrintData_GetColour 2440 +#define wxPrintData_GetDuplex 2441 +#define wxPrintData_GetNoCopies 2442 +#define wxPrintData_GetOrientation 2443 +#define wxPrintData_GetPaperId 2444 +#define wxPrintData_GetPrinterName 2445 +#define wxPrintData_GetQuality 2446 +#define wxPrintData_IsOk 2447 +#define wxPrintData_SetBin 2448 +#define wxPrintData_SetCollate 2449 +#define wxPrintData_SetColour 2450 +#define wxPrintData_SetDuplex 2451 +#define wxPrintData_SetNoCopies 2452 +#define wxPrintData_SetOrientation 2453 +#define wxPrintData_SetPaperId 2454 +#define wxPrintData_SetPrinterName 2455 +#define wxPrintData_SetQuality 2456 +#define wxPrintPreview_new_2 2459 +#define wxPrintPreview_new_3 2460 +#define wxPrintPreview_destruct 2462 +#define wxPrintPreview_GetCanvas 2463 +#define wxPrintPreview_GetCurrentPage 2464 +#define wxPrintPreview_GetFrame 2465 +#define wxPrintPreview_GetMaxPage 2466 +#define wxPrintPreview_GetMinPage 2467 +#define wxPrintPreview_GetPrintout 2468 +#define wxPrintPreview_GetPrintoutForPrinting 2469 +#define wxPrintPreview_IsOk 2470 +#define wxPrintPreview_PaintPage 2471 +#define wxPrintPreview_Print 2472 +#define wxPrintPreview_RenderPage 2473 +#define wxPrintPreview_SetCanvas 2474 +#define wxPrintPreview_SetCurrentPage 2475 +#define wxPrintPreview_SetFrame 2476 +#define wxPrintPreview_SetPrintout 2477 +#define wxPrintPreview_SetZoom 2478 +#define wxPreviewFrame_new 2479 +#define wxPreviewFrame_destruct 2480 +#define wxPreviewFrame_CreateControlBar 2481 +#define wxPreviewFrame_CreateCanvas 2482 +#define wxPreviewFrame_Initialize 2483 +#define wxPreviewFrame_OnCloseWindow 2484 +#define wxPreviewControlBar_new 2485 +#define wxPreviewControlBar_destruct 2486 +#define wxPreviewControlBar_CreateButtons 2487 +#define wxPreviewControlBar_GetPrintPreview 2488 +#define wxPreviewControlBar_GetZoomControl 2489 +#define wxPreviewControlBar_SetZoomControl 2490 +#define wxPrinter_new 2492 +#define wxPrinter_CreateAbortWindow 2493 +#define wxPrinter_GetAbort 2494 +#define wxPrinter_GetLastError 2495 +#define wxPrinter_GetPrintDialogData 2496 +#define wxPrinter_Print 2497 +#define wxPrinter_PrintDialog 2498 +#define wxPrinter_ReportError 2499 +#define wxPrinter_Setup 2500 +#define wxPrinter_destroy 2501 +#define wxXmlResource_new_1 2502 +#define wxXmlResource_new_2 2503 +#define wxXmlResource_destruct 2504 +#define wxXmlResource_AttachUnknownControl 2505 +#define wxXmlResource_ClearHandlers 2506 +#define wxXmlResource_CompareVersion 2507 +#define wxXmlResource_Get 2508 +#define wxXmlResource_GetFlags 2509 +#define wxXmlResource_GetVersion 2510 +#define wxXmlResource_GetXRCID 2511 +#define wxXmlResource_InitAllHandlers 2512 +#define wxXmlResource_Load 2513 +#define wxXmlResource_LoadBitmap 2514 +#define wxXmlResource_LoadDialog_2 2515 +#define wxXmlResource_LoadDialog_3 2516 +#define wxXmlResource_LoadFrame_2 2517 +#define wxXmlResource_LoadFrame_3 2518 +#define wxXmlResource_LoadIcon 2519 +#define wxXmlResource_LoadMenu 2520 +#define wxXmlResource_LoadMenuBar_2 2521 +#define wxXmlResource_LoadMenuBar_1 2522 +#define wxXmlResource_LoadPanel_2 2523 +#define wxXmlResource_LoadPanel_3 2524 +#define wxXmlResource_LoadToolBar 2525 +#define wxXmlResource_Set 2526 +#define wxXmlResource_SetFlags 2527 +#define wxXmlResource_Unload 2528 +#define wxXmlResource_xrcctrl 2529 +#define wxHtmlEasyPrinting_new 2530 +#define wxHtmlEasyPrinting_destruct 2531 +#define wxHtmlEasyPrinting_GetPrintData 2532 +#define wxHtmlEasyPrinting_GetPageSetupData 2533 +#define wxHtmlEasyPrinting_PreviewFile 2534 +#define wxHtmlEasyPrinting_PreviewText 2535 +#define wxHtmlEasyPrinting_PrintFile 2536 +#define wxHtmlEasyPrinting_PrintText 2537 +#define wxHtmlEasyPrinting_PageSetup 2538 +#define wxHtmlEasyPrinting_SetFonts 2539 +#define wxHtmlEasyPrinting_SetHeader 2540 +#define wxHtmlEasyPrinting_SetFooter 2541 +#define wxGLCanvas_new_2 2543 +#define wxGLCanvas_new_3_1 2544 +#define wxGLCanvas_new_3_0 2545 +#define wxGLCanvas_GetContext 2546 +#define wxGLCanvas_SetCurrent 2548 +#define wxGLCanvas_SwapBuffers 2549 +#define wxGLCanvas_destroy 2550 +#define wxAuiManager_new 2551 +#define wxAuiManager_destruct 2552 +#define wxAuiManager_AddPane_2_1 2553 +#define wxAuiManager_AddPane_3 2554 +#define wxAuiManager_AddPane_2_0 2555 +#define wxAuiManager_DetachPane 2556 +#define wxAuiManager_GetAllPanes 2557 +#define wxAuiManager_GetArtProvider 2558 +#define wxAuiManager_GetDockSizeConstraint 2559 +#define wxAuiManager_GetFlags 2560 +#define wxAuiManager_GetManagedWindow 2561 +#define wxAuiManager_GetManager 2562 +#define wxAuiManager_GetPane_1_1 2563 +#define wxAuiManager_GetPane_1_0 2564 +#define wxAuiManager_HideHint 2565 +#define wxAuiManager_InsertPane 2566 +#define wxAuiManager_LoadPaneInfo 2567 +#define wxAuiManager_LoadPerspective 2568 +#define wxAuiManager_SavePaneInfo 2569 +#define wxAuiManager_SavePerspective 2570 +#define wxAuiManager_SetArtProvider 2571 +#define wxAuiManager_SetDockSizeConstraint 2572 +#define wxAuiManager_SetFlags 2573 +#define wxAuiManager_SetManagedWindow 2574 +#define wxAuiManager_ShowHint 2575 +#define wxAuiManager_UnInit 2576 +#define wxAuiManager_Update 2577 +#define wxAuiPaneInfo_new_0 2578 +#define wxAuiPaneInfo_new_1 2579 +#define wxAuiPaneInfo_destruct 2580 +#define wxAuiPaneInfo_BestSize_1 2581 +#define wxAuiPaneInfo_BestSize_2 2582 +#define wxAuiPaneInfo_Bottom 2583 +#define wxAuiPaneInfo_BottomDockable 2584 +#define wxAuiPaneInfo_Caption 2585 +#define wxAuiPaneInfo_CaptionVisible 2586 +#define wxAuiPaneInfo_Centre 2587 +#define wxAuiPaneInfo_CentrePane 2588 +#define wxAuiPaneInfo_CloseButton 2589 +#define wxAuiPaneInfo_DefaultPane 2590 +#define wxAuiPaneInfo_DestroyOnClose 2591 +#define wxAuiPaneInfo_Direction 2592 +#define wxAuiPaneInfo_Dock 2593 +#define wxAuiPaneInfo_Dockable 2594 +#define wxAuiPaneInfo_Fixed 2595 +#define wxAuiPaneInfo_Float 2596 +#define wxAuiPaneInfo_Floatable 2597 +#define wxAuiPaneInfo_FloatingPosition_1 2598 +#define wxAuiPaneInfo_FloatingPosition_2 2599 +#define wxAuiPaneInfo_FloatingSize_1 2600 +#define wxAuiPaneInfo_FloatingSize_2 2601 +#define wxAuiPaneInfo_Gripper 2602 +#define wxAuiPaneInfo_GripperTop 2603 +#define wxAuiPaneInfo_HasBorder 2604 +#define wxAuiPaneInfo_HasCaption 2605 +#define wxAuiPaneInfo_HasCloseButton 2606 +#define wxAuiPaneInfo_HasFlag 2607 +#define wxAuiPaneInfo_HasGripper 2608 +#define wxAuiPaneInfo_HasGripperTop 2609 +#define wxAuiPaneInfo_HasMaximizeButton 2610 +#define wxAuiPaneInfo_HasMinimizeButton 2611 +#define wxAuiPaneInfo_HasPinButton 2612 +#define wxAuiPaneInfo_Hide 2613 +#define wxAuiPaneInfo_IsBottomDockable 2614 +#define wxAuiPaneInfo_IsDocked 2615 +#define wxAuiPaneInfo_IsFixed 2616 +#define wxAuiPaneInfo_IsFloatable 2617 +#define wxAuiPaneInfo_IsFloating 2618 +#define wxAuiPaneInfo_IsLeftDockable 2619 +#define wxAuiPaneInfo_IsMovable 2620 +#define wxAuiPaneInfo_IsOk 2621 +#define wxAuiPaneInfo_IsResizable 2622 +#define wxAuiPaneInfo_IsRightDockable 2623 +#define wxAuiPaneInfo_IsShown 2624 +#define wxAuiPaneInfo_IsToolbar 2625 +#define wxAuiPaneInfo_IsTopDockable 2626 +#define wxAuiPaneInfo_Layer 2627 +#define wxAuiPaneInfo_Left 2628 +#define wxAuiPaneInfo_LeftDockable 2629 +#define wxAuiPaneInfo_MaxSize_1 2630 +#define wxAuiPaneInfo_MaxSize_2 2631 +#define wxAuiPaneInfo_MaximizeButton 2632 +#define wxAuiPaneInfo_MinSize_1 2633 +#define wxAuiPaneInfo_MinSize_2 2634 +#define wxAuiPaneInfo_MinimizeButton 2635 +#define wxAuiPaneInfo_Movable 2636 +#define wxAuiPaneInfo_Name 2637 +#define wxAuiPaneInfo_PaneBorder 2638 +#define wxAuiPaneInfo_PinButton 2639 +#define wxAuiPaneInfo_Position 2640 +#define wxAuiPaneInfo_Resizable 2641 +#define wxAuiPaneInfo_Right 2642 +#define wxAuiPaneInfo_RightDockable 2643 +#define wxAuiPaneInfo_Row 2644 +#define wxAuiPaneInfo_SafeSet 2645 +#define wxAuiPaneInfo_SetFlag 2646 +#define wxAuiPaneInfo_Show 2647 +#define wxAuiPaneInfo_ToolbarPane 2648 +#define wxAuiPaneInfo_Top 2649 +#define wxAuiPaneInfo_TopDockable 2650 +#define wxAuiPaneInfo_Window 2651 +#define wxAuiNotebook_new_0 2652 +#define wxAuiNotebook_new_2 2653 +#define wxAuiNotebook_AddPage 2654 +#define wxAuiNotebook_Create 2655 +#define wxAuiNotebook_DeletePage 2656 +#define wxAuiNotebook_GetArtProvider 2657 +#define wxAuiNotebook_GetPage 2658 +#define wxAuiNotebook_GetPageBitmap 2659 +#define wxAuiNotebook_GetPageCount 2660 +#define wxAuiNotebook_GetPageIndex 2661 +#define wxAuiNotebook_GetPageText 2662 +#define wxAuiNotebook_GetSelection 2663 +#define wxAuiNotebook_InsertPage 2664 +#define wxAuiNotebook_RemovePage 2665 +#define wxAuiNotebook_SetArtProvider 2666 +#define wxAuiNotebook_SetFont 2667 +#define wxAuiNotebook_SetPageBitmap 2668 +#define wxAuiNotebook_SetPageText 2669 +#define wxAuiNotebook_SetSelection 2670 +#define wxAuiNotebook_SetTabCtrlHeight 2671 +#define wxAuiNotebook_SetUniformBitmapSize 2672 +#define wxAuiNotebook_destroy 2673 +#define wxMDIParentFrame_new_0 2674 +#define wxMDIParentFrame_new_4 2675 +#define wxMDIParentFrame_destruct 2676 +#define wxMDIParentFrame_ActivateNext 2677 +#define wxMDIParentFrame_ActivatePrevious 2678 +#define wxMDIParentFrame_ArrangeIcons 2679 +#define wxMDIParentFrame_Cascade 2680 +#define wxMDIParentFrame_Create 2681 +#define wxMDIParentFrame_GetActiveChild 2682 +#define wxMDIParentFrame_GetClientWindow 2683 +#define wxMDIParentFrame_Tile 2684 +#define wxMDIChildFrame_new_0 2685 +#define wxMDIChildFrame_new_4 2686 +#define wxMDIChildFrame_destruct 2687 +#define wxMDIChildFrame_Activate 2688 +#define wxMDIChildFrame_Create 2689 +#define wxMDIChildFrame_Maximize 2690 +#define wxMDIChildFrame_Restore 2691 +#define wxMDIClientWindow_new_0 2692 +#define wxMDIClientWindow_new_2 2693 +#define wxMDIClientWindow_destruct 2694 +#define wxMDIClientWindow_CreateClient 2695 +#define wxLayoutAlgorithm_new 2696 +#define wxLayoutAlgorithm_LayoutFrame 2697 +#define wxLayoutAlgorithm_LayoutMDIFrame 2698 +#define wxLayoutAlgorithm_LayoutWindow 2699 +#define wxLayoutAlgorithm_destroy 2700 +#define wxEvent_GetId 2701 +#define wxEvent_GetSkipped 2702 +#define wxEvent_GetTimestamp 2703 +#define wxEvent_IsCommandEvent 2704 +#define wxEvent_ResumePropagation 2705 +#define wxEvent_ShouldPropagate 2706 +#define wxEvent_Skip 2707 +#define wxEvent_StopPropagation 2708 +#define wxCommandEvent_getClientData 2709 +#define wxCommandEvent_GetExtraLong 2710 +#define wxCommandEvent_GetInt 2711 +#define wxCommandEvent_GetSelection 2712 +#define wxCommandEvent_GetString 2713 +#define wxCommandEvent_IsChecked 2714 +#define wxCommandEvent_IsSelection 2715 +#define wxCommandEvent_SetInt 2716 +#define wxCommandEvent_SetString 2717 +#define wxScrollEvent_GetOrientation 2718 +#define wxScrollEvent_GetPosition 2719 +#define wxScrollWinEvent_GetOrientation 2720 +#define wxScrollWinEvent_GetPosition 2721 +#define wxMouseEvent_AltDown 2722 +#define wxMouseEvent_Button 2723 +#define wxMouseEvent_ButtonDClick 2724 +#define wxMouseEvent_ButtonDown 2725 +#define wxMouseEvent_ButtonUp 2726 +#define wxMouseEvent_CmdDown 2727 +#define wxMouseEvent_ControlDown 2728 +#define wxMouseEvent_Dragging 2729 +#define wxMouseEvent_Entering 2730 +#define wxMouseEvent_GetButton 2731 +#define wxMouseEvent_GetPosition 2734 +#define wxMouseEvent_GetLogicalPosition 2735 +#define wxMouseEvent_GetLinesPerAction 2736 +#define wxMouseEvent_GetWheelRotation 2737 +#define wxMouseEvent_GetWheelDelta 2738 +#define wxMouseEvent_GetX 2739 +#define wxMouseEvent_GetY 2740 +#define wxMouseEvent_IsButton 2741 +#define wxMouseEvent_IsPageScroll 2742 +#define wxMouseEvent_Leaving 2743 +#define wxMouseEvent_LeftDClick 2744 +#define wxMouseEvent_LeftDown 2745 +#define wxMouseEvent_LeftIsDown 2746 +#define wxMouseEvent_LeftUp 2747 +#define wxMouseEvent_MetaDown 2748 +#define wxMouseEvent_MiddleDClick 2749 +#define wxMouseEvent_MiddleDown 2750 +#define wxMouseEvent_MiddleIsDown 2751 +#define wxMouseEvent_MiddleUp 2752 +#define wxMouseEvent_Moving 2753 +#define wxMouseEvent_RightDClick 2754 +#define wxMouseEvent_RightDown 2755 +#define wxMouseEvent_RightIsDown 2756 +#define wxMouseEvent_RightUp 2757 +#define wxMouseEvent_ShiftDown 2758 +#define wxSetCursorEvent_GetCursor 2759 +#define wxSetCursorEvent_GetX 2760 +#define wxSetCursorEvent_GetY 2761 +#define wxSetCursorEvent_HasCursor 2762 +#define wxSetCursorEvent_SetCursor 2763 +#define wxKeyEvent_AltDown 2764 +#define wxKeyEvent_CmdDown 2765 +#define wxKeyEvent_ControlDown 2766 +#define wxKeyEvent_GetKeyCode 2767 +#define wxKeyEvent_GetModifiers 2768 +#define wxKeyEvent_GetPosition 2771 +#define wxKeyEvent_GetRawKeyCode 2772 +#define wxKeyEvent_GetRawKeyFlags 2773 +#define wxKeyEvent_GetUnicodeKey 2774 +#define wxKeyEvent_GetX 2775 +#define wxKeyEvent_GetY 2776 +#define wxKeyEvent_HasModifiers 2777 +#define wxKeyEvent_MetaDown 2778 +#define wxKeyEvent_ShiftDown 2779 +#define wxSizeEvent_GetSize 2780 +#define wxMoveEvent_GetPosition 2781 +#define wxEraseEvent_GetDC 2782 +#define wxFocusEvent_GetWindow 2783 +#define wxChildFocusEvent_GetWindow 2784 +#define wxMenuEvent_GetMenu 2785 +#define wxMenuEvent_GetMenuId 2786 +#define wxMenuEvent_IsPopup 2787 +#define wxCloseEvent_CanVeto 2788 +#define wxCloseEvent_GetLoggingOff 2789 +#define wxCloseEvent_SetCanVeto 2790 +#define wxCloseEvent_SetLoggingOff 2791 +#define wxCloseEvent_Veto 2792 +#define wxShowEvent_SetShow 2793 +#define wxShowEvent_GetShow 2794 +#define wxIconizeEvent_Iconized 2795 +#define wxJoystickEvent_ButtonDown 2796 +#define wxJoystickEvent_ButtonIsDown 2797 +#define wxJoystickEvent_ButtonUp 2798 +#define wxJoystickEvent_GetButtonChange 2799 +#define wxJoystickEvent_GetButtonState 2800 +#define wxJoystickEvent_GetJoystick 2801 +#define wxJoystickEvent_GetPosition 2802 +#define wxJoystickEvent_GetZPosition 2803 +#define wxJoystickEvent_IsButton 2804 +#define wxJoystickEvent_IsMove 2805 +#define wxJoystickEvent_IsZMove 2806 +#define wxUpdateUIEvent_CanUpdate 2807 +#define wxUpdateUIEvent_Check 2808 +#define wxUpdateUIEvent_Enable 2809 +#define wxUpdateUIEvent_Show 2810 +#define wxUpdateUIEvent_GetChecked 2811 +#define wxUpdateUIEvent_GetEnabled 2812 +#define wxUpdateUIEvent_GetShown 2813 +#define wxUpdateUIEvent_GetSetChecked 2814 +#define wxUpdateUIEvent_GetSetEnabled 2815 +#define wxUpdateUIEvent_GetSetShown 2816 +#define wxUpdateUIEvent_GetSetText 2817 +#define wxUpdateUIEvent_GetText 2818 +#define wxUpdateUIEvent_GetMode 2819 +#define wxUpdateUIEvent_GetUpdateInterval 2820 +#define wxUpdateUIEvent_ResetUpdateTime 2821 +#define wxUpdateUIEvent_SetMode 2822 +#define wxUpdateUIEvent_SetText 2823 +#define wxUpdateUIEvent_SetUpdateInterval 2824 +#define wxMouseCaptureChangedEvent_GetCapturedWindow 2825 +#define wxPaletteChangedEvent_SetChangedWindow 2826 +#define wxPaletteChangedEvent_GetChangedWindow 2827 +#define wxQueryNewPaletteEvent_SetPaletteRealized 2828 +#define wxQueryNewPaletteEvent_GetPaletteRealized 2829 +#define wxNavigationKeyEvent_GetDirection 2830 +#define wxNavigationKeyEvent_SetDirection 2831 +#define wxNavigationKeyEvent_IsWindowChange 2832 +#define wxNavigationKeyEvent_SetWindowChange 2833 +#define wxNavigationKeyEvent_IsFromTab 2834 +#define wxNavigationKeyEvent_SetFromTab 2835 +#define wxNavigationKeyEvent_GetCurrentFocus 2836 +#define wxNavigationKeyEvent_SetCurrentFocus 2837 +#define wxHelpEvent_GetOrigin 2838 +#define wxHelpEvent_GetPosition 2839 +#define wxHelpEvent_SetOrigin 2840 +#define wxHelpEvent_SetPosition 2841 +#define wxContextMenuEvent_GetPosition 2842 +#define wxContextMenuEvent_SetPosition 2843 +#define wxIdleEvent_CanSend 2844 +#define wxIdleEvent_GetMode 2845 +#define wxIdleEvent_RequestMore 2846 +#define wxIdleEvent_MoreRequested 2847 +#define wxIdleEvent_SetMode 2848 +#define wxGridEvent_AltDown 2849 +#define wxGridEvent_ControlDown 2850 +#define wxGridEvent_GetCol 2851 +#define wxGridEvent_GetPosition 2852 +#define wxGridEvent_GetRow 2853 +#define wxGridEvent_MetaDown 2854 +#define wxGridEvent_Selecting 2855 +#define wxGridEvent_ShiftDown 2856 +#define wxNotifyEvent_Allow 2857 +#define wxNotifyEvent_IsAllowed 2858 +#define wxNotifyEvent_Veto 2859 +#define wxSashEvent_GetEdge 2860 +#define wxSashEvent_GetDragRect 2861 +#define wxSashEvent_GetDragStatus 2862 +#define wxListEvent_GetCacheFrom 2863 +#define wxListEvent_GetCacheTo 2864 +#define wxListEvent_GetKeyCode 2865 +#define wxListEvent_GetIndex 2866 +#define wxListEvent_GetColumn 2867 +#define wxListEvent_GetPoint 2868 +#define wxListEvent_GetLabel 2869 +#define wxListEvent_GetText 2870 +#define wxListEvent_GetImage 2871 +#define wxListEvent_GetData 2872 +#define wxListEvent_GetMask 2873 +#define wxListEvent_GetItem 2874 +#define wxListEvent_IsEditCancelled 2875 +#define wxDateEvent_GetDate 2876 +#define wxCalendarEvent_GetWeekDay 2877 +#define wxFileDirPickerEvent_GetPath 2878 +#define wxColourPickerEvent_GetColour 2879 +#define wxFontPickerEvent_GetFont 2880 +#define wxStyledTextEvent_GetPosition 2881 +#define wxStyledTextEvent_GetKey 2882 +#define wxStyledTextEvent_GetModifiers 2883 +#define wxStyledTextEvent_GetModificationType 2884 +#define wxStyledTextEvent_GetText 2885 +#define wxStyledTextEvent_GetLength 2886 +#define wxStyledTextEvent_GetLinesAdded 2887 +#define wxStyledTextEvent_GetLine 2888 +#define wxStyledTextEvent_GetFoldLevelNow 2889 +#define wxStyledTextEvent_GetFoldLevelPrev 2890 +#define wxStyledTextEvent_GetMargin 2891 +#define wxStyledTextEvent_GetMessage 2892 +#define wxStyledTextEvent_GetWParam 2893 +#define wxStyledTextEvent_GetLParam 2894 +#define wxStyledTextEvent_GetListType 2895 +#define wxStyledTextEvent_GetX 2896 +#define wxStyledTextEvent_GetY 2897 +#define wxStyledTextEvent_GetDragText 2898 +#define wxStyledTextEvent_GetDragAllowMove 2899 +#define wxStyledTextEvent_GetDragResult 2900 +#define wxStyledTextEvent_GetShift 2901 +#define wxStyledTextEvent_GetControl 2902 +#define wxStyledTextEvent_GetAlt 2903 +#define utils_wxGetKeyState 2904 +#define utils_wxGetMousePosition 2905 +#define utils_wxGetMouseState 2906 +#define utils_wxSetDetectableAutoRepeat 2907 +#define utils_wxBell 2908 +#define utils_wxFindMenuItemId 2909 +#define utils_wxGenericFindWindowAtPoint 2910 +#define utils_wxFindWindowAtPoint 2911 +#define utils_wxBeginBusyCursor 2912 +#define utils_wxEndBusyCursor 2913 +#define utils_wxIsBusy 2914 +#define utils_wxShutdown 2915 +#define utils_wxShell 2916 +#define utils_wxLaunchDefaultBrowser 2917 +#define utils_wxGetEmailAddress 2918 +#define utils_wxGetUserId 2919 +#define utils_wxGetHomeDir 2920 +#define utils_wxNewId 2921 +#define utils_wxRegisterId 2922 +#define utils_wxGetCurrentId 2923 +#define utils_wxGetOsDescription 2924 +#define utils_wxIsPlatformLittleEndian 2925 +#define utils_wxIsPlatform64Bit 2926 +#define wxPrintout_new 2927 +#define wxPrintout_destruct 2928 +#define wxPrintout_GetDC 2929 +#define wxPrintout_GetPageSizeMM 2930 +#define wxPrintout_GetPageSizePixels 2931 +#define wxPrintout_GetPaperRectPixels 2932 +#define wxPrintout_GetPPIPrinter 2933 +#define wxPrintout_GetPPIScreen 2934 +#define wxPrintout_GetTitle 2935 +#define wxPrintout_IsPreview 2936 +#define wxPrintout_FitThisSizeToPaper 2937 +#define wxPrintout_FitThisSizeToPage 2938 +#define wxPrintout_FitThisSizeToPageMargins 2939 +#define wxPrintout_MapScreenSizeToPaper 2940 +#define wxPrintout_MapScreenSizeToPage 2941 +#define wxPrintout_MapScreenSizeToPageMargins 2942 +#define wxPrintout_MapScreenSizeToDevice 2943 +#define wxPrintout_GetLogicalPaperRect 2944 +#define wxPrintout_GetLogicalPageRect 2945 +#define wxPrintout_GetLogicalPageMarginsRect 2946 +#define wxPrintout_SetLogicalOrigin 2947 +#define wxPrintout_OffsetLogicalOrigin 2948 +#define wxStyledTextCtrl_new_2 2949 +#define wxStyledTextCtrl_new_0 2950 +#define wxStyledTextCtrl_destruct 2951 +#define wxStyledTextCtrl_Create 2952 +#define wxStyledTextCtrl_AddText 2953 +#define wxStyledTextCtrl_AddStyledText 2954 +#define wxStyledTextCtrl_InsertText 2955 +#define wxStyledTextCtrl_ClearAll 2956 +#define wxStyledTextCtrl_ClearDocumentStyle 2957 +#define wxStyledTextCtrl_GetLength 2958 +#define wxStyledTextCtrl_GetCharAt 2959 +#define wxStyledTextCtrl_GetCurrentPos 2960 +#define wxStyledTextCtrl_GetAnchor 2961 +#define wxStyledTextCtrl_GetStyleAt 2962 +#define wxStyledTextCtrl_Redo 2963 +#define wxStyledTextCtrl_SetUndoCollection 2964 +#define wxStyledTextCtrl_SelectAll 2965 +#define wxStyledTextCtrl_SetSavePoint 2966 +#define wxStyledTextCtrl_GetStyledText 2967 +#define wxStyledTextCtrl_CanRedo 2968 +#define wxStyledTextCtrl_MarkerLineFromHandle 2969 +#define wxStyledTextCtrl_MarkerDeleteHandle 2970 +#define wxStyledTextCtrl_GetUndoCollection 2971 +#define wxStyledTextCtrl_GetViewWhiteSpace 2972 +#define wxStyledTextCtrl_SetViewWhiteSpace 2973 +#define wxStyledTextCtrl_PositionFromPoint 2974 +#define wxStyledTextCtrl_PositionFromPointClose 2975 +#define wxStyledTextCtrl_GotoLine 2976 +#define wxStyledTextCtrl_GotoPos 2977 +#define wxStyledTextCtrl_SetAnchor 2978 +#define wxStyledTextCtrl_GetCurLine 2979 +#define wxStyledTextCtrl_GetEndStyled 2980 +#define wxStyledTextCtrl_ConvertEOLs 2981 +#define wxStyledTextCtrl_GetEOLMode 2982 +#define wxStyledTextCtrl_SetEOLMode 2983 +#define wxStyledTextCtrl_StartStyling 2984 +#define wxStyledTextCtrl_SetStyling 2985 +#define wxStyledTextCtrl_GetBufferedDraw 2986 +#define wxStyledTextCtrl_SetBufferedDraw 2987 +#define wxStyledTextCtrl_SetTabWidth 2988 +#define wxStyledTextCtrl_GetTabWidth 2989 +#define wxStyledTextCtrl_SetCodePage 2990 +#define wxStyledTextCtrl_MarkerDefine 2991 +#define wxStyledTextCtrl_MarkerSetForeground 2992 +#define wxStyledTextCtrl_MarkerSetBackground 2993 +#define wxStyledTextCtrl_MarkerAdd 2994 +#define wxStyledTextCtrl_MarkerDelete 2995 +#define wxStyledTextCtrl_MarkerDeleteAll 2996 +#define wxStyledTextCtrl_MarkerGet 2997 +#define wxStyledTextCtrl_MarkerNext 2998 +#define wxStyledTextCtrl_MarkerPrevious 2999 +#define wxStyledTextCtrl_MarkerDefineBitmap 3000 +#define wxStyledTextCtrl_MarkerAddSet 3001 +#define wxStyledTextCtrl_MarkerSetAlpha 3002 +#define wxStyledTextCtrl_SetMarginType 3003 +#define wxStyledTextCtrl_GetMarginType 3004 +#define wxStyledTextCtrl_SetMarginWidth 3005 +#define wxStyledTextCtrl_GetMarginWidth 3006 +#define wxStyledTextCtrl_SetMarginMask 3007 +#define wxStyledTextCtrl_GetMarginMask 3008 +#define wxStyledTextCtrl_SetMarginSensitive 3009 +#define wxStyledTextCtrl_GetMarginSensitive 3010 +#define wxStyledTextCtrl_StyleClearAll 3011 +#define wxStyledTextCtrl_StyleSetForeground 3012 +#define wxStyledTextCtrl_StyleSetBackground 3013 +#define wxStyledTextCtrl_StyleSetBold 3014 +#define wxStyledTextCtrl_StyleSetItalic 3015 +#define wxStyledTextCtrl_StyleSetSize 3016 +#define wxStyledTextCtrl_StyleSetFaceName 3017 +#define wxStyledTextCtrl_StyleSetEOLFilled 3018 +#define wxStyledTextCtrl_StyleResetDefault 3019 +#define wxStyledTextCtrl_StyleSetUnderline 3020 +#define wxStyledTextCtrl_StyleSetCase 3021 +#define wxStyledTextCtrl_StyleSetHotSpot 3022 +#define wxStyledTextCtrl_SetSelForeground 3023 +#define wxStyledTextCtrl_SetSelBackground 3024 +#define wxStyledTextCtrl_GetSelAlpha 3025 +#define wxStyledTextCtrl_SetSelAlpha 3026 +#define wxStyledTextCtrl_SetCaretForeground 3027 +#define wxStyledTextCtrl_CmdKeyAssign 3028 +#define wxStyledTextCtrl_CmdKeyClear 3029 +#define wxStyledTextCtrl_CmdKeyClearAll 3030 +#define wxStyledTextCtrl_SetStyleBytes 3031 +#define wxStyledTextCtrl_StyleSetVisible 3032 +#define wxStyledTextCtrl_GetCaretPeriod 3033 +#define wxStyledTextCtrl_SetCaretPeriod 3034 +#define wxStyledTextCtrl_SetWordChars 3035 +#define wxStyledTextCtrl_BeginUndoAction 3036 +#define wxStyledTextCtrl_EndUndoAction 3037 +#define wxStyledTextCtrl_IndicatorSetStyle 3038 +#define wxStyledTextCtrl_IndicatorGetStyle 3039 +#define wxStyledTextCtrl_IndicatorSetForeground 3040 +#define wxStyledTextCtrl_IndicatorGetForeground 3041 +#define wxStyledTextCtrl_SetWhitespaceForeground 3042 +#define wxStyledTextCtrl_SetWhitespaceBackground 3043 +#define wxStyledTextCtrl_GetStyleBits 3044 +#define wxStyledTextCtrl_SetLineState 3045 +#define wxStyledTextCtrl_GetLineState 3046 +#define wxStyledTextCtrl_GetMaxLineState 3047 +#define wxStyledTextCtrl_GetCaretLineVisible 3048 +#define wxStyledTextCtrl_SetCaretLineVisible 3049 +#define wxStyledTextCtrl_GetCaretLineBackground 3050 +#define wxStyledTextCtrl_SetCaretLineBackground 3051 +#define wxStyledTextCtrl_AutoCompShow 3052 +#define wxStyledTextCtrl_AutoCompCancel 3053 +#define wxStyledTextCtrl_AutoCompActive 3054 +#define wxStyledTextCtrl_AutoCompPosStart 3055 +#define wxStyledTextCtrl_AutoCompComplete 3056 +#define wxStyledTextCtrl_AutoCompStops 3057 +#define wxStyledTextCtrl_AutoCompSetSeparator 3058 +#define wxStyledTextCtrl_AutoCompGetSeparator 3059 +#define wxStyledTextCtrl_AutoCompSelect 3060 +#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3061 +#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3062 +#define wxStyledTextCtrl_AutoCompSetFillUps 3063 +#define wxStyledTextCtrl_AutoCompSetChooseSingle 3064 +#define wxStyledTextCtrl_AutoCompGetChooseSingle 3065 +#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3066 +#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3067 +#define wxStyledTextCtrl_UserListShow 3068 +#define wxStyledTextCtrl_AutoCompSetAutoHide 3069 +#define wxStyledTextCtrl_AutoCompGetAutoHide 3070 +#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3071 +#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3072 +#define wxStyledTextCtrl_RegisterImage 3073 +#define wxStyledTextCtrl_ClearRegisteredImages 3074 +#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3075 +#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3076 +#define wxStyledTextCtrl_AutoCompSetMaxWidth 3077 +#define wxStyledTextCtrl_AutoCompGetMaxWidth 3078 +#define wxStyledTextCtrl_AutoCompSetMaxHeight 3079 +#define wxStyledTextCtrl_AutoCompGetMaxHeight 3080 +#define wxStyledTextCtrl_SetIndent 3081 +#define wxStyledTextCtrl_GetIndent 3082 +#define wxStyledTextCtrl_SetUseTabs 3083 +#define wxStyledTextCtrl_GetUseTabs 3084 +#define wxStyledTextCtrl_SetLineIndentation 3085 +#define wxStyledTextCtrl_GetLineIndentation 3086 +#define wxStyledTextCtrl_GetLineIndentPosition 3087 +#define wxStyledTextCtrl_GetColumn 3088 +#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3089 +#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3090 +#define wxStyledTextCtrl_SetIndentationGuides 3091 +#define wxStyledTextCtrl_GetIndentationGuides 3092 +#define wxStyledTextCtrl_SetHighlightGuide 3093 +#define wxStyledTextCtrl_GetHighlightGuide 3094 +#define wxStyledTextCtrl_GetLineEndPosition 3095 +#define wxStyledTextCtrl_GetCodePage 3096 +#define wxStyledTextCtrl_GetCaretForeground 3097 +#define wxStyledTextCtrl_GetReadOnly 3098 +#define wxStyledTextCtrl_SetCurrentPos 3099 +#define wxStyledTextCtrl_SetSelectionStart 3100 +#define wxStyledTextCtrl_GetSelectionStart 3101 +#define wxStyledTextCtrl_SetSelectionEnd 3102 +#define wxStyledTextCtrl_GetSelectionEnd 3103 +#define wxStyledTextCtrl_SetPrintMagnification 3104 +#define wxStyledTextCtrl_GetPrintMagnification 3105 +#define wxStyledTextCtrl_SetPrintColourMode 3106 +#define wxStyledTextCtrl_GetPrintColourMode 3107 +#define wxStyledTextCtrl_FindText 3108 +#define wxStyledTextCtrl_FormatRange 3109 +#define wxStyledTextCtrl_GetFirstVisibleLine 3110 +#define wxStyledTextCtrl_GetLine 3111 +#define wxStyledTextCtrl_GetLineCount 3112 +#define wxStyledTextCtrl_SetMarginLeft 3113 +#define wxStyledTextCtrl_GetMarginLeft 3114 +#define wxStyledTextCtrl_SetMarginRight 3115 +#define wxStyledTextCtrl_GetMarginRight 3116 +#define wxStyledTextCtrl_GetModify 3117 +#define wxStyledTextCtrl_SetSelection 3118 +#define wxStyledTextCtrl_GetSelectedText 3119 +#define wxStyledTextCtrl_GetTextRange 3120 +#define wxStyledTextCtrl_HideSelection 3121 +#define wxStyledTextCtrl_LineFromPosition 3122 +#define wxStyledTextCtrl_PositionFromLine 3123 +#define wxStyledTextCtrl_LineScroll 3124 +#define wxStyledTextCtrl_EnsureCaretVisible 3125 +#define wxStyledTextCtrl_ReplaceSelection 3126 +#define wxStyledTextCtrl_SetReadOnly 3127 +#define wxStyledTextCtrl_CanPaste 3128 +#define wxStyledTextCtrl_CanUndo 3129 +#define wxStyledTextCtrl_EmptyUndoBuffer 3130 +#define wxStyledTextCtrl_Undo 3131 +#define wxStyledTextCtrl_Cut 3132 +#define wxStyledTextCtrl_Copy 3133 +#define wxStyledTextCtrl_Paste 3134 +#define wxStyledTextCtrl_Clear 3135 +#define wxStyledTextCtrl_SetText 3136 +#define wxStyledTextCtrl_GetText 3137 +#define wxStyledTextCtrl_GetTextLength 3138 +#define wxStyledTextCtrl_GetOvertype 3139 +#define wxStyledTextCtrl_SetCaretWidth 3140 +#define wxStyledTextCtrl_GetCaretWidth 3141 +#define wxStyledTextCtrl_SetTargetStart 3142 +#define wxStyledTextCtrl_GetTargetStart 3143 +#define wxStyledTextCtrl_SetTargetEnd 3144 +#define wxStyledTextCtrl_GetTargetEnd 3145 +#define wxStyledTextCtrl_ReplaceTarget 3146 +#define wxStyledTextCtrl_SearchInTarget 3147 +#define wxStyledTextCtrl_SetSearchFlags 3148 +#define wxStyledTextCtrl_GetSearchFlags 3149 +#define wxStyledTextCtrl_CallTipShow 3150 +#define wxStyledTextCtrl_CallTipCancel 3151 +#define wxStyledTextCtrl_CallTipActive 3152 +#define wxStyledTextCtrl_CallTipPosAtStart 3153 +#define wxStyledTextCtrl_CallTipSetHighlight 3154 +#define wxStyledTextCtrl_CallTipSetBackground 3155 +#define wxStyledTextCtrl_CallTipSetForeground 3156 +#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3157 +#define wxStyledTextCtrl_CallTipUseStyle 3158 +#define wxStyledTextCtrl_VisibleFromDocLine 3159 +#define wxStyledTextCtrl_DocLineFromVisible 3160 +#define wxStyledTextCtrl_WrapCount 3161 +#define wxStyledTextCtrl_SetFoldLevel 3162 +#define wxStyledTextCtrl_GetFoldLevel 3163 +#define wxStyledTextCtrl_GetLastChild 3164 +#define wxStyledTextCtrl_GetFoldParent 3165 +#define wxStyledTextCtrl_ShowLines 3166 +#define wxStyledTextCtrl_HideLines 3167 +#define wxStyledTextCtrl_GetLineVisible 3168 +#define wxStyledTextCtrl_SetFoldExpanded 3169 +#define wxStyledTextCtrl_GetFoldExpanded 3170 +#define wxStyledTextCtrl_ToggleFold 3171 +#define wxStyledTextCtrl_EnsureVisible 3172 +#define wxStyledTextCtrl_SetFoldFlags 3173 +#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3174 +#define wxStyledTextCtrl_SetTabIndents 3175 +#define wxStyledTextCtrl_GetTabIndents 3176 +#define wxStyledTextCtrl_SetBackSpaceUnIndents 3177 +#define wxStyledTextCtrl_GetBackSpaceUnIndents 3178 +#define wxStyledTextCtrl_SetMouseDwellTime 3179 +#define wxStyledTextCtrl_GetMouseDwellTime 3180 +#define wxStyledTextCtrl_WordStartPosition 3181 +#define wxStyledTextCtrl_WordEndPosition 3182 +#define wxStyledTextCtrl_SetWrapMode 3183 +#define wxStyledTextCtrl_GetWrapMode 3184 +#define wxStyledTextCtrl_SetWrapVisualFlags 3185 +#define wxStyledTextCtrl_GetWrapVisualFlags 3186 +#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3187 +#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3188 +#define wxStyledTextCtrl_SetWrapStartIndent 3189 +#define wxStyledTextCtrl_GetWrapStartIndent 3190 +#define wxStyledTextCtrl_SetLayoutCache 3191 +#define wxStyledTextCtrl_GetLayoutCache 3192 +#define wxStyledTextCtrl_SetScrollWidth 3193 +#define wxStyledTextCtrl_GetScrollWidth 3194 +#define wxStyledTextCtrl_TextWidth 3195 +#define wxStyledTextCtrl_GetEndAtLastLine 3196 +#define wxStyledTextCtrl_TextHeight 3197 +#define wxStyledTextCtrl_SetUseVerticalScrollBar 3198 +#define wxStyledTextCtrl_GetUseVerticalScrollBar 3199 +#define wxStyledTextCtrl_AppendText 3200 +#define wxStyledTextCtrl_GetTwoPhaseDraw 3201 +#define wxStyledTextCtrl_SetTwoPhaseDraw 3202 +#define wxStyledTextCtrl_TargetFromSelection 3203 +#define wxStyledTextCtrl_LinesJoin 3204 +#define wxStyledTextCtrl_LinesSplit 3205 +#define wxStyledTextCtrl_SetFoldMarginColour 3206 +#define wxStyledTextCtrl_SetFoldMarginHiColour 3207 +#define wxStyledTextCtrl_LineDown 3208 +#define wxStyledTextCtrl_LineDownExtend 3209 +#define wxStyledTextCtrl_LineUp 3210 +#define wxStyledTextCtrl_LineUpExtend 3211 +#define wxStyledTextCtrl_CharLeft 3212 +#define wxStyledTextCtrl_CharLeftExtend 3213 +#define wxStyledTextCtrl_CharRight 3214 +#define wxStyledTextCtrl_CharRightExtend 3215 +#define wxStyledTextCtrl_WordLeft 3216 +#define wxStyledTextCtrl_WordLeftExtend 3217 +#define wxStyledTextCtrl_WordRight 3218 +#define wxStyledTextCtrl_WordRightExtend 3219 +#define wxStyledTextCtrl_Home 3220 +#define wxStyledTextCtrl_HomeExtend 3221 +#define wxStyledTextCtrl_LineEnd 3222 +#define wxStyledTextCtrl_LineEndExtend 3223 +#define wxStyledTextCtrl_DocumentStart 3224 +#define wxStyledTextCtrl_DocumentStartExtend 3225 +#define wxStyledTextCtrl_DocumentEnd 3226 +#define wxStyledTextCtrl_DocumentEndExtend 3227 +#define wxStyledTextCtrl_PageUp 3228 +#define wxStyledTextCtrl_PageUpExtend 3229 +#define wxStyledTextCtrl_PageDown 3230 +#define wxStyledTextCtrl_PageDownExtend 3231 +#define wxStyledTextCtrl_EditToggleOvertype 3232 +#define wxStyledTextCtrl_Cancel 3233 +#define wxStyledTextCtrl_DeleteBack 3234 +#define wxStyledTextCtrl_Tab 3235 +#define wxStyledTextCtrl_BackTab 3236 +#define wxStyledTextCtrl_NewLine 3237 +#define wxStyledTextCtrl_FormFeed 3238 +#define wxStyledTextCtrl_VCHome 3239 +#define wxStyledTextCtrl_VCHomeExtend 3240 +#define wxStyledTextCtrl_ZoomIn 3241 +#define wxStyledTextCtrl_ZoomOut 3242 +#define wxStyledTextCtrl_DelWordLeft 3243 +#define wxStyledTextCtrl_DelWordRight 3244 +#define wxStyledTextCtrl_LineCut 3245 +#define wxStyledTextCtrl_LineDelete 3246 +#define wxStyledTextCtrl_LineTranspose 3247 +#define wxStyledTextCtrl_LineDuplicate 3248 +#define wxStyledTextCtrl_LowerCase 3249 +#define wxStyledTextCtrl_UpperCase 3250 +#define wxStyledTextCtrl_LineScrollDown 3251 +#define wxStyledTextCtrl_LineScrollUp 3252 +#define wxStyledTextCtrl_DeleteBackNotLine 3253 +#define wxStyledTextCtrl_HomeDisplay 3254 +#define wxStyledTextCtrl_HomeDisplayExtend 3255 +#define wxStyledTextCtrl_LineEndDisplay 3256 +#define wxStyledTextCtrl_LineEndDisplayExtend 3257 +#define wxStyledTextCtrl_HomeWrapExtend 3258 +#define wxStyledTextCtrl_LineEndWrap 3259 +#define wxStyledTextCtrl_LineEndWrapExtend 3260 +#define wxStyledTextCtrl_VCHomeWrap 3261 +#define wxStyledTextCtrl_VCHomeWrapExtend 3262 +#define wxStyledTextCtrl_LineCopy 3263 +#define wxStyledTextCtrl_MoveCaretInsideView 3264 +#define wxStyledTextCtrl_LineLength 3265 +#define wxStyledTextCtrl_BraceHighlight 3266 +#define wxStyledTextCtrl_BraceBadLight 3267 +#define wxStyledTextCtrl_BraceMatch 3268 +#define wxStyledTextCtrl_GetViewEOL 3269 +#define wxStyledTextCtrl_SetViewEOL 3270 +#define wxStyledTextCtrl_SetModEventMask 3271 +#define wxStyledTextCtrl_GetEdgeColumn 3272 +#define wxStyledTextCtrl_SetEdgeColumn 3273 +#define wxStyledTextCtrl_SetEdgeMode 3274 +#define wxStyledTextCtrl_GetEdgeMode 3275 +#define wxStyledTextCtrl_GetEdgeColour 3276 +#define wxStyledTextCtrl_SetEdgeColour 3277 +#define wxStyledTextCtrl_SearchAnchor 3278 +#define wxStyledTextCtrl_SearchNext 3279 +#define wxStyledTextCtrl_SearchPrev 3280 +#define wxStyledTextCtrl_LinesOnScreen 3281 +#define wxStyledTextCtrl_UsePopUp 3282 +#define wxStyledTextCtrl_SelectionIsRectangle 3283 +#define wxStyledTextCtrl_SetZoom 3284 +#define wxStyledTextCtrl_GetZoom 3285 +#define wxStyledTextCtrl_GetModEventMask 3286 +#define wxStyledTextCtrl_SetSTCFocus 3287 +#define wxStyledTextCtrl_GetSTCFocus 3288 +#define wxStyledTextCtrl_SetStatus 3289 +#define wxStyledTextCtrl_GetStatus 3290 +#define wxStyledTextCtrl_SetMouseDownCaptures 3291 +#define wxStyledTextCtrl_GetMouseDownCaptures 3292 +#define wxStyledTextCtrl_SetSTCCursor 3293 +#define wxStyledTextCtrl_GetSTCCursor 3294 +#define wxStyledTextCtrl_SetControlCharSymbol 3295 +#define wxStyledTextCtrl_GetControlCharSymbol 3296 +#define wxStyledTextCtrl_WordPartLeft 3297 +#define wxStyledTextCtrl_WordPartLeftExtend 3298 +#define wxStyledTextCtrl_WordPartRight 3299 +#define wxStyledTextCtrl_WordPartRightExtend 3300 +#define wxStyledTextCtrl_SetVisiblePolicy 3301 +#define wxStyledTextCtrl_DelLineLeft 3302 +#define wxStyledTextCtrl_DelLineRight 3303 +#define wxStyledTextCtrl_GetXOffset 3304 +#define wxStyledTextCtrl_ChooseCaretX 3305 +#define wxStyledTextCtrl_SetXCaretPolicy 3306 +#define wxStyledTextCtrl_SetYCaretPolicy 3307 +#define wxStyledTextCtrl_GetPrintWrapMode 3308 +#define wxStyledTextCtrl_SetHotspotActiveForeground 3309 +#define wxStyledTextCtrl_SetHotspotActiveBackground 3310 +#define wxStyledTextCtrl_SetHotspotActiveUnderline 3311 +#define wxStyledTextCtrl_SetHotspotSingleLine 3312 +#define wxStyledTextCtrl_ParaDownExtend 3313 +#define wxStyledTextCtrl_ParaUp 3314 +#define wxStyledTextCtrl_ParaUpExtend 3315 +#define wxStyledTextCtrl_PositionBefore 3316 +#define wxStyledTextCtrl_PositionAfter 3317 +#define wxStyledTextCtrl_CopyRange 3318 +#define wxStyledTextCtrl_CopyText 3319 +#define wxStyledTextCtrl_SetSelectionMode 3320 +#define wxStyledTextCtrl_GetSelectionMode 3321 +#define wxStyledTextCtrl_LineDownRectExtend 3322 +#define wxStyledTextCtrl_LineUpRectExtend 3323 +#define wxStyledTextCtrl_CharLeftRectExtend 3324 +#define wxStyledTextCtrl_CharRightRectExtend 3325 +#define wxStyledTextCtrl_HomeRectExtend 3326 +#define wxStyledTextCtrl_VCHomeRectExtend 3327 +#define wxStyledTextCtrl_LineEndRectExtend 3328 +#define wxStyledTextCtrl_PageUpRectExtend 3329 +#define wxStyledTextCtrl_PageDownRectExtend 3330 +#define wxStyledTextCtrl_StutteredPageUp 3331 +#define wxStyledTextCtrl_StutteredPageUpExtend 3332 +#define wxStyledTextCtrl_StutteredPageDown 3333 +#define wxStyledTextCtrl_StutteredPageDownExtend 3334 +#define wxStyledTextCtrl_WordLeftEnd 3335 +#define wxStyledTextCtrl_WordLeftEndExtend 3336 +#define wxStyledTextCtrl_WordRightEnd 3337 +#define wxStyledTextCtrl_WordRightEndExtend 3338 +#define wxStyledTextCtrl_SetWhitespaceChars 3339 +#define wxStyledTextCtrl_SetCharsDefault 3340 +#define wxStyledTextCtrl_AutoCompGetCurrent 3341 +#define wxStyledTextCtrl_Allocate 3342 +#define wxStyledTextCtrl_FindColumn 3343 +#define wxStyledTextCtrl_GetCaretSticky 3344 +#define wxStyledTextCtrl_SetCaretSticky 3345 +#define wxStyledTextCtrl_ToggleCaretSticky 3346 +#define wxStyledTextCtrl_SetPasteConvertEndings 3347 +#define wxStyledTextCtrl_GetPasteConvertEndings 3348 +#define wxStyledTextCtrl_SelectionDuplicate 3349 +#define wxStyledTextCtrl_SetCaretLineBackAlpha 3350 +#define wxStyledTextCtrl_GetCaretLineBackAlpha 3351 +#define wxStyledTextCtrl_StartRecord 3352 +#define wxStyledTextCtrl_StopRecord 3353 +#define wxStyledTextCtrl_SetLexer 3354 +#define wxStyledTextCtrl_GetLexer 3355 +#define wxStyledTextCtrl_Colourise 3356 +#define wxStyledTextCtrl_SetProperty 3357 +#define wxStyledTextCtrl_SetKeyWords 3358 +#define wxStyledTextCtrl_SetLexerLanguage 3359 +#define wxStyledTextCtrl_GetProperty 3360 +#define wxStyledTextCtrl_GetStyleBitsNeeded 3361 +#define wxStyledTextCtrl_GetCurrentLine 3362 +#define wxStyledTextCtrl_StyleSetSpec 3363 +#define wxStyledTextCtrl_StyleSetFont 3364 +#define wxStyledTextCtrl_StyleSetFontAttr 3365 +#define wxStyledTextCtrl_StyleSetCharacterSet 3366 +#define wxStyledTextCtrl_StyleSetFontEncoding 3367 +#define wxStyledTextCtrl_CmdKeyExecute 3368 +#define wxStyledTextCtrl_SetMargins 3369 +#define wxStyledTextCtrl_GetSelection 3370 +#define wxStyledTextCtrl_PointFromPosition 3371 +#define wxStyledTextCtrl_ScrollToLine 3372 +#define wxStyledTextCtrl_ScrollToColumn 3373 +#define wxStyledTextCtrl_SetVScrollBar 3374 +#define wxStyledTextCtrl_SetHScrollBar 3375 +#define wxStyledTextCtrl_GetLastKeydownProcessed 3376 +#define wxStyledTextCtrl_SetLastKeydownProcessed 3377 +#define wxStyledTextCtrl_SaveFile 3378 +#define wxStyledTextCtrl_LoadFile 3379 +#define wxStyledTextCtrl_DoDragOver 3380 +#define wxStyledTextCtrl_DoDropText 3381 +#define wxStyledTextCtrl_GetUseAntiAliasing 3382 +#define wxStyledTextCtrl_AddTextRaw 3383 +#define wxStyledTextCtrl_InsertTextRaw 3384 +#define wxStyledTextCtrl_GetCurLineRaw 3385 +#define wxStyledTextCtrl_GetLineRaw 3386 +#define wxStyledTextCtrl_GetSelectedTextRaw 3387 +#define wxStyledTextCtrl_GetTextRangeRaw 3388 +#define wxStyledTextCtrl_SetTextRaw 3389 +#define wxStyledTextCtrl_GetTextRaw 3390 +#define wxStyledTextCtrl_AppendTextRaw 3391 +#define wxArtProvider_GetBitmap 3392 +#define wxArtProvider_GetIcon 3393 +#define wxTreeEvent_GetKeyCode 3394 +#define wxTreeEvent_GetItem 3395 +#define wxTreeEvent_GetKeyEvent 3396 +#define wxTreeEvent_GetLabel 3397 +#define wxTreeEvent_GetOldItem 3398 +#define wxTreeEvent_GetPoint 3399 +#define wxTreeEvent_IsEditCancelled 3400 +#define wxTreeEvent_SetToolTip 3401 +#define wxNotebookEvent_GetOldSelection 3402 +#define wxNotebookEvent_GetSelection 3403 +#define wxNotebookEvent_SetOldSelection 3404 +#define wxNotebookEvent_SetSelection 3405 +#define wxFileDataObject_new 3406 +#define wxFileDataObject_AddFile 3407 +#define wxFileDataObject_GetFilenames 3408 +#define wxFileDataObject_destroy 3409 +#define wxTextDataObject_new 3410 +#define wxTextDataObject_GetTextLength 3411 +#define wxTextDataObject_GetText 3412 +#define wxTextDataObject_SetText 3413 +#define wxTextDataObject_destroy 3414 +#define wxBitmapDataObject_new_1_1 3415 +#define wxBitmapDataObject_new_1_0 3416 +#define wxBitmapDataObject_GetBitmap 3417 +#define wxBitmapDataObject_SetBitmap 3418 +#define wxBitmapDataObject_destroy 3419 +#define wxClipboard_new 3421 +#define wxClipboard_destruct 3422 +#define wxClipboard_AddData 3423 +#define wxClipboard_Clear 3424 +#define wxClipboard_Close 3425 +#define wxClipboard_Flush 3426 +#define wxClipboard_GetData 3427 +#define wxClipboard_IsOpened 3428 +#define wxClipboard_Open 3429 +#define wxClipboard_SetData 3430 +#define wxClipboard_UsePrimarySelection 3432 +#define wxClipboard_IsSupported 3433 +#define wxClipboard_Get 3434 +#define wxSpinEvent_GetPosition 3435 +#define wxSpinEvent_SetPosition 3436 +#define wxSplitterWindow_new_0 3437 +#define wxSplitterWindow_new_2 3438 +#define wxSplitterWindow_destruct 3439 +#define wxSplitterWindow_Create 3440 +#define wxSplitterWindow_GetMinimumPaneSize 3441 +#define wxSplitterWindow_GetSashGravity 3442 +#define wxSplitterWindow_GetSashPosition 3443 +#define wxSplitterWindow_GetSplitMode 3444 +#define wxSplitterWindow_GetWindow1 3445 +#define wxSplitterWindow_GetWindow2 3446 +#define wxSplitterWindow_Initialize 3447 +#define wxSplitterWindow_IsSplit 3448 +#define wxSplitterWindow_ReplaceWindow 3449 +#define wxSplitterWindow_SetSashGravity 3450 +#define wxSplitterWindow_SetSashPosition 3451 +#define wxSplitterWindow_SetSashSize 3452 +#define wxSplitterWindow_SetMinimumPaneSize 3453 +#define wxSplitterWindow_SetSplitMode 3454 +#define wxSplitterWindow_SplitHorizontally 3455 +#define wxSplitterWindow_SplitVertically 3456 +#define wxSplitterWindow_Unsplit 3457 +#define wxSplitterWindow_UpdateSize 3458 +#define wxSplitterEvent_GetSashPosition 3459 +#define wxSplitterEvent_GetX 3460 +#define wxSplitterEvent_GetY 3461 +#define wxSplitterEvent_GetWindowBeingRemoved 3462 +#define wxSplitterEvent_SetSashPosition 3463 +#define wxHtmlWindow_new_0 3464 +#define wxHtmlWindow_new_2 3465 +#define wxHtmlWindow_AppendToPage 3466 +#define wxHtmlWindow_GetOpenedAnchor 3467 +#define wxHtmlWindow_GetOpenedPage 3468 +#define wxHtmlWindow_GetOpenedPageTitle 3469 +#define wxHtmlWindow_GetRelatedFrame 3470 +#define wxHtmlWindow_HistoryBack 3471 +#define wxHtmlWindow_HistoryCanBack 3472 +#define wxHtmlWindow_HistoryCanForward 3473 +#define wxHtmlWindow_HistoryClear 3474 +#define wxHtmlWindow_HistoryForward 3475 +#define wxHtmlWindow_LoadFile 3476 +#define wxHtmlWindow_LoadPage 3477 +#define wxHtmlWindow_SelectAll 3478 +#define wxHtmlWindow_SelectionToText 3479 +#define wxHtmlWindow_SelectLine 3480 +#define wxHtmlWindow_SelectWord 3481 +#define wxHtmlWindow_SetBorders 3482 +#define wxHtmlWindow_SetFonts 3483 +#define wxHtmlWindow_SetPage 3484 +#define wxHtmlWindow_SetRelatedFrame 3485 +#define wxHtmlWindow_SetRelatedStatusBar 3486 +#define wxHtmlWindow_ToText 3487 +#define wxHtmlWindow_destroy 3488 +#define wxHtmlLinkEvent_GetLinkInfo 3489 +#define wxSystemSettings_GetColour 3490 +#define wxSystemSettings_GetFont 3491 +#define wxSystemSettings_GetMetric 3492 +#define wxSystemSettings_GetScreenType 3493 +#define wxSystemOptions_GetOption 3494 +#define wxSystemOptions_GetOptionInt 3495 +#define wxSystemOptions_HasOption 3496 +#define wxSystemOptions_IsFalse 3497 +#define wxSystemOptions_SetOption_2_1 3498 +#define wxSystemOptions_SetOption_2_0 3499 +#define wxAuiNotebookEvent_SetSelection 3500 +#define wxAuiNotebookEvent_GetSelection 3501 +#define wxAuiNotebookEvent_SetOldSelection 3502 +#define wxAuiNotebookEvent_GetOldSelection 3503 +#define wxAuiNotebookEvent_SetDragSource 3504 +#define wxAuiNotebookEvent_GetDragSource 3505 +#define wxAuiManagerEvent_SetManager 3506 +#define wxAuiManagerEvent_GetManager 3507 +#define wxAuiManagerEvent_SetPane 3508 +#define wxAuiManagerEvent_GetPane 3509 +#define wxAuiManagerEvent_SetButton 3510 +#define wxAuiManagerEvent_GetButton 3511 +#define wxAuiManagerEvent_SetDC 3512 +#define wxAuiManagerEvent_GetDC 3513 +#define wxAuiManagerEvent_Veto 3514 +#define wxAuiManagerEvent_GetVeto 3515 +#define wxAuiManagerEvent_SetCanVeto 3516 +#define wxAuiManagerEvent_CanVeto 3517 +#define wxLogNull_new 3518 +#define wxLogNull_destroy 3519 +#define wxTaskBarIcon_new 3520 +#define wxTaskBarIcon_destruct 3521 +#define wxTaskBarIcon_PopupMenu 3522 +#define wxTaskBarIcon_RemoveIcon 3523 +#define wxTaskBarIcon_SetIcon 3524 diff --git a/lib/wx/c_src/wxePrintout.cpp b/lib/wx/c_src/wxePrintout.cpp index 90959df379..fc8782ba95 100644 --- a/lib/wx/c_src/wxePrintout.cpp +++ b/lib/wx/c_src/wxePrintout.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2011. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -38,7 +38,7 @@ rt.addAtom("_wx_invoke_cb_"); \ rt.addTupleCount(3); \ rt.send(); \ - handle_event_callback(port, memenv->owner); \ + handle_event_callback(WXE_DRV_PORT_HANDLE, memenv->owner); \ } #define INVOKE_CALLBACK(port, callback, class_str) \ @@ -230,7 +230,7 @@ EwxListCtrl::~EwxListCtrl() { } // tools -void clear_cb(ErlDrvPort port, int callback) +void clear_cb(ErlDrvTermData port, int callback) { if(callback > 0) { wxeMemEnv * memenv = ((WxeApp *) wxTheApp)->getMemEnv(port); diff --git a/lib/wx/c_src/wxe_driver.c b/lib/wx/c_src/wxe_driver.c index d1ed252ec0..4d3aa577bf 100644 --- a/lib/wx/c_src/wxe_driver.c +++ b/lib/wx/c_src/wxe_driver.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2011. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -100,7 +100,8 @@ int wxe_driver_load() return -1; } -ErlDrvPort WXE_DRV_PORT = 0; +ErlDrvPort WXE_DRV_PORT_HANDLE = 0; +ErlDrvTermData WXE_DRV_PORT = 0; static ErlDrvData wxe_driver_start(ErlDrvPort port, char *buff) @@ -114,17 +115,20 @@ wxe_driver_start(ErlDrvPort port, char *buff) fprintf(stderr, " Couldn't alloc mem\r\n"); return(ERL_DRV_ERROR_GENERAL); /* ENOMEM */ } else { + ErlDrvTermData term_port = driver_mk_port(port); set_port_control_flags(port, PORT_CONTROL_FLAG_BINARY); data->driver_data = NULL; data->bin = NULL; - data->port = port; + data->port_handle = port; + data->port = term_port; data->pdl = driver_pdl_create(port); - if(WXE_DRV_PORT == 0) { + if(WXE_DRV_PORT_HANDLE == 0) { for(; *buff != 32; buff++); buff++; erl_wx_privdir = strdup(buff); - WXE_DRV_PORT = port; + WXE_DRV_PORT_HANDLE = port; + WXE_DRV_PORT = term_port; wxe_master = data; if(!(start_native_gui(data) == 1)) return(ERL_DRV_ERROR_GENERAL); /* ENOMEM */ @@ -139,7 +143,7 @@ static void wxe_driver_stop(ErlDrvData handle) { wxe_data *sd = ((wxe_data *)handle); - if(sd->port != WXE_DRV_PORT) { + if(sd->port_handle != WXE_DRV_PORT_HANDLE) { // fprintf(stderr, "%s:%d: STOP \r\n", __FILE__,__LINE__); meta_command(DELETE_PORT,sd); free(handle); @@ -194,7 +198,7 @@ void wxe_process_died(ErlDrvData handle, ErlDrvMonitor *monitor) push_command(WXE_CB_RETURN,NULL,0,sd); /* ErlDrvTermData pid; */ -/* pid = driver_get_monitored_process(sd->port, monitor); */ +/* pid = driver_get_monitored_process(sd->port_handle, monitor); */ /* fprintf(stderr, "Process died %d \r\n", (int) pid); */ } @@ -210,7 +214,7 @@ standard_outputv(ErlDrvData drv_data, ErlIOVec* ev) binref = driver_alloc(sizeof(WXEBinRef)); binref->base = ev->iov[1].iov_base; binref->size = ev->iov[1].iov_len; - binref->from = driver_caller(sd->port); + binref->from = driver_caller(sd->port_handle); bin = ev->binv[1]; driver_binary_inc_refc(bin); /* Otherwise it could get deallocated */ binref->bin = bin; @@ -220,7 +224,7 @@ standard_outputv(ErlDrvData drv_data, ErlIOVec* ev) binref = driver_alloc(sizeof(WXEBinRef)); binref->base = NULL; binref->size = 0; - binref->from = driver_caller(sd->port); + binref->from = driver_caller(sd->port_handle); binref->bin = NULL; binref->next = sd->bin; sd->bin = binref; diff --git a/lib/wx/c_src/wxe_driver.h b/lib/wx/c_src/wxe_driver.h index 5c5b8614ed..c765c866c2 100644 --- a/lib/wx/c_src/wxe_driver.h +++ b/lib/wx/c_src/wxe_driver.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2010. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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,7 +43,8 @@ typedef struct wxe_bin_ref { typedef struct wxe_data_def { void * driver_data; WXEBinRef * bin; /* Argument binaries */ - ErlDrvPort port; + ErlDrvPort port_handle; + ErlDrvTermData port; int is_cbport; ErlDrvPDL pdl; } wxe_data; @@ -67,8 +68,9 @@ void meta_command(int what, wxe_data *sd); void * wxe_ps_init(); -extern ErlDrvPort WXE_DRV_PORT; -extern int wxe_debug; +extern ErlDrvPort WXE_DRV_PORT_HANDLE; +extern ErlDrvTermData WXE_DRV_PORT; +extern int wxe_debug; extern char * erl_wx_privdir; diff --git a/lib/wx/c_src/wxe_events.h b/lib/wx/c_src/wxe_events.h index 43ea656a8d..6bbb0dfa13 100644 --- a/lib/wx/c_src/wxe_events.h +++ b/lib/wx/c_src/wxe_events.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2009. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -54,7 +54,7 @@ public: class wxeEvtListener : public wxEvtHandler { public: - wxeEvtListener(ErlDrvPort Thisport) : port(Thisport) + wxeEvtListener(ErlDrvTermData Thisport) : port(Thisport) {} // {fprintf(stderr, "Creating %x\r\n", (unsigned int) this); fflush(stderr);} void forward(wxEvent& event); @@ -62,7 +62,7 @@ public: ((WxeApp *)wxTheApp)->clearPtr(this); // fprintf(stderr, "Deleteing %x\r\n", (unsigned int) this); fflush(stderr); }; - ErlDrvPort port; + ErlDrvTermData port; }; #endif diff --git a/lib/wx/c_src/wxe_gl.cpp b/lib/wx/c_src/wxe_gl.cpp index e947a1bc6e..34904397d3 100644 --- a/lib/wx/c_src/wxe_gl.cpp +++ b/lib/wx/c_src/wxe_gl.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2010. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -141,7 +141,7 @@ void gl_dispatch(int op, char *bp,ErlDrvTermData caller,WXEBinRef *bins[]){ ERL_DRV_INT, op, ERL_DRV_ATOM, driver_mk_atom((char *) "no_gl_context"), ERL_DRV_TUPLE,3}; - driver_send_term(WXE_DRV_PORT,caller,rt,8); + erl_drv_send_term(WXE_DRV_PORT,caller,rt,8); return ; } }; @@ -155,6 +155,6 @@ void gl_dispatch(int op, char *bp,ErlDrvTermData caller,WXEBinRef *bins[]){ else bs[i] = NULL; } - wxe_gl_dispatch(op, bp, WXE_DRV_PORT, caller, bs, bs_sz); + wxe_gl_dispatch(op, bp, WXE_DRV_PORT_HANDLE, caller, bs, bs_sz); } diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp index 527fabc315..adfee8da73 100644 --- a/lib/wx/c_src/wxe_impl.cpp +++ b/lib/wx/c_src/wxe_impl.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2012. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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 @@ -117,7 +117,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_handle); #ifdef __DARWIN__ res = erl_drv_steal_main_thread((char *)"wxwidgets", @@ -169,7 +169,7 @@ void unload_native_gui() 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); + // fprintf(stderr, "Op %d %d\r\n", op, (int) driver_caller(sd->port_handle)),fflush(stderr); wxeCommand *Cmd = new wxeCommand(op, buf, len, sd); erl_drv_mutex_lock(wxe_batch_locker_m); wxe_batch->Append(Cmd); @@ -536,18 +536,18 @@ void WxeApp::newMemEnv(wxeMetaCommand& Ecmd) { memenv->ref2ptr[i] = global_me->ref2ptr[i]; } memenv->next = global_me->next; - refmap[(ErlDrvTermData) Ecmd.port] = memenv; + refmap[Ecmd.port] = memenv; memenv->owner = Ecmd.caller; ErlDrvTermData rt[] = {ERL_DRV_ATOM, driver_mk_atom((char *)"wx_port_initiated")}; - driver_send_term(WXE_DRV_PORT,Ecmd.caller,rt,2); + erl_drv_send_term(WXE_DRV_PORT,Ecmd.caller,rt,2); } void WxeApp::destroyMemEnv(wxeMetaCommand& Ecmd) { // Clear incoming cmd queue first // dispatch_cmds(); wxWindow *parent = NULL; - wxeMemEnv * memenv = refmap[(ErlDrvTermData) Ecmd.port]; + wxeMemEnv * memenv = refmap[Ecmd.port]; if(wxe_debug) { wxString msg; @@ -656,8 +656,8 @@ void WxeApp::destroyMemEnv(wxeMetaCommand& Ecmd) { refmap.erase((ErlDrvTermData) Ecmd.port); } -wxeMemEnv * WxeApp::getMemEnv(ErlDrvPort port) { - return refmap[(ErlDrvTermData) port]; +wxeMemEnv * WxeApp::getMemEnv(ErlDrvTermData port) { + return refmap[port]; } int WxeApp::newPtr(void * ptr, int type, wxeMemEnv *memenv) { @@ -837,7 +837,7 @@ wxeCommand::wxeCommand(int fc,char * cbuf,int buflen, wxe_data *sd) { WXEBinRef *temp, *start, *prev; int n = 0; - caller = driver_caller(sd->port); + caller = driver_caller(sd->port_handle); port = sd->port; op = fc; len = buflen; @@ -940,7 +940,7 @@ int wxCALLBACK wxEListCtrlCompare(long item1, long item2, long callbackInfoPtr) rt.addAtom("_wx_invoke_cb_"); rt.addTupleCount(3); rt.send(); - handle_event_callback(cb->port, memenv->owner); + handle_event_callback(WXE_DRV_PORT_HANDLE, memenv->owner); if(((WxeApp *) wxTheApp)->cb_buff) { int res = * (int*) ((WxeApp *) wxTheApp)->cb_buff; diff --git a/lib/wx/c_src/wxe_impl.h b/lib/wx/c_src/wxe_impl.h index ee31068d5d..a3c57e2598 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-2011. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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,7 +34,7 @@ class wxeMetaCommand : public wxEvent public: wxeMetaCommand(wxe_data *sd, int EvId) : wxEvent(EvId, wxeEVT_META_COMMAND) - { caller = driver_caller(sd->port); port = sd->port; pdl = sd->pdl; } ; + { caller = driver_caller(sd->port_handle); port = sd->port; pdl = sd->pdl; } ; wxeMetaCommand(const wxeMetaCommand& event) : wxEvent(event) { caller = event.caller; port = event.port; pdl = event.pdl; }; @@ -42,7 +42,7 @@ class wxeMetaCommand : public wxEvent virtual wxEvent *Clone() const { return new wxeMetaCommand(*this); } ErlDrvTermData caller; - ErlDrvPort port; + ErlDrvTermData port; ErlDrvPDL pdl; }; @@ -51,9 +51,9 @@ class wxeCommand : public wxObject public: wxeCommand(int fc,char * cbuf,int buflen, wxe_data *); virtual ~wxeCommand(); - + ErlDrvTermData caller; - ErlDrvPort port; + ErlDrvTermData port; WXEBinRef * bin[3]; char * buffer; int len; @@ -161,7 +161,7 @@ public: // MemEnv handling void newMemEnv(wxeMetaCommand& event); void destroyMemEnv(wxeMetaCommand& event); - wxeMemEnv * getMemEnv(ErlDrvPort port); + wxeMemEnv * getMemEnv(ErlDrvTermData port); int newPtr(void * ptr, int type, wxeMemEnv *memenv); int getRef(void * ptr, wxeMemEnv *memenv); @@ -193,7 +193,7 @@ class wxETreeItemData : public wxTreeItemData char * bin; }; -bool sendevent(wxEvent * event, ErlDrvPort port); +bool sendevent(wxEvent * event, ErlDrvTermData port); void pre_callback(); void handle_event_callback(ErlDrvPort port, ErlDrvTermData process); @@ -208,10 +208,10 @@ extern wxeGLC glc; class wxEPrintout : public wxPrintout { public: - wxEPrintout(wxString Title, int onPrintP, int onPrepareP, + wxEPrintout(wxString Title, int onPrintP, int onPrepareP, int onBeginP, int onEndP, int onBeginD, int onEndD, - int hasP, int getPageI, ErlDrvPort Port) : + int hasP, int getPageI, ErlDrvTermData Port) : wxPrintout(Title), onPrintPage(onPrintP), onPreparePrinting(onPrepareP), onBeginPrinting(onBeginP), onEndPrinting(onEndP), @@ -241,15 +241,15 @@ class wxEPrintout : public wxPrintout int hasPage; int getPageInfo; - ErlDrvPort port; + ErlDrvTermData port; }; -void clear_cb(ErlDrvPort port, int callback); +void clear_cb(ErlDrvTermData port, int callback); // Implementation of wxListCtrlCompare struct callbackInfo { - ErlDrvPort port; + ErlDrvTermData port; int callbackID; }; diff --git a/lib/wx/c_src/wxe_ps_init.c b/lib/wx/c_src/wxe_ps_init.c index 025ea90f8b..541d188098 100644 --- a/lib/wx/c_src/wxe_ps_init.c +++ b/lib/wx/c_src/wxe_ps_init.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2011. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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/wxe_return.cpp b/lib/wx/c_src/wxe_return.cpp index 0f3eb40efc..d50a74ac9d 100644 --- a/lib/wx/c_src/wxe_return.cpp +++ b/lib/wx/c_src/wxe_return.cpp @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2012. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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,9 +26,9 @@ WX_DEFINE_OBJARRAY(wxErlDrvTermDataArray); #define INLINE -wxeReturn::wxeReturn (ErlDrvPort _port, - ErlDrvTermData _caller, - bool _isResult) { +wxeReturn::wxeReturn (ErlDrvTermData _port, + ErlDrvTermData _caller, + bool _isResult) { port = _port; caller = _caller; @@ -61,7 +61,7 @@ int wxeReturn::send() { rtData[i] = rt[i]; } - int res = driver_send_term(port, caller, rtData, rtLength); + int res = erl_drv_send_term(port, caller, rtData, rtLength); driver_free(rtData); #ifdef DEBUG diff --git a/lib/wx/c_src/wxe_return.h b/lib/wx/c_src/wxe_return.h index b6bfa85e63..80946e2dc6 100644 --- a/lib/wx/c_src/wxe_return.h +++ b/lib/wx/c_src/wxe_return.h @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 2008-2012. All Rights Reserved. + * Copyright Ericsson AB 2008-2013. 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,9 +48,9 @@ WX_DECLARE_OBJARRAY(ErlDrvTermData, wxErlDrvTermDataArray); class wxeReturn { public: - wxeReturn (ErlDrvPort _port, - ErlDrvTermData _caller, - bool _isResult=false); + wxeReturn (ErlDrvTermData _port, + ErlDrvTermData _caller, + bool _isResult=false); ~wxeReturn(); @@ -130,7 +130,7 @@ private: // WxeApp* wxe_app; ErlDrvTermData caller; - ErlDrvPort port; + ErlDrvTermData port; // wxeMemEnv *memEnv; wxErlDrvTermDataArray rt; wxArrayDouble temp_float; diff --git a/lib/wx/configure.in b/lib/wx/configure.in index c45d2285af..6a0d649ccd 100755 --- a/lib/wx/configure.in +++ b/lib/wx/configure.in @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. -*-m4-*- dnl %CopyrightBegin% dnl -dnl Copyright Ericsson AB 2008-2012. All Rights Reserved. +dnl Copyright Ericsson AB 2008-2013. All Rights Reserved. dnl dnl The contents of this file are subject to the Erlang Public License, dnl Version 1.1, (the "License"); you may not use this file except in @@ -99,7 +99,7 @@ PTHR_CFLAGS="-D_THREAD_SAFE -D_REENTRANT" OBJC_CC=$CC OBJC_CFLAGS="" - +CXXFLAGS="" dnl NOTE: CPPFLAGS will be included in CFLAGS at the end case $host_os in darwin*) @@ -111,12 +111,13 @@ case $host_os in AC_MSG_RESULT([yes]) C_ONLY_FLAGS="-ObjC" else - dnl We are probebly trying to build with a non-Apple gcc, + dnl We are probably trying to build with a non-Apple gcc, dnl which is good as long as we do not try to build Cocoa dnl code. We need an Apple compiler for just that (Objective C) AC_MSG_RESULT([no]) AC_MSG_CHECKING([for a Cocoa compliant Objective C compiler]) SEARCHFOR="" + SEARCHFORXX="" save_IFS=$IFS IFS=: set $PATH @@ -124,19 +125,29 @@ case $host_os in while test X"$1" != X""; do dnl Add all possible paths to a real apple gcc SEARCHFOR="$1/gcc-apple-4.2 $SEARCHFOR" + SEARCHFORXX="$1/g++-apple-4.2 $SEARCHFORXX" shift done dnl Add LLVM compilers, they will work in this case SEARCHFOR="/usr/bin/clang /usr/bin/gcc $SEARCHFOR" + SEARCHFORXX="/usr/bin/clang /usr/bin/g++ $SEARCHFORXX" APPLE_CC="" + APPLE_CXX="" dnl SEARCHFOR is reversed, so we want to find the last existing dnl executable in the list + IFS=" " + set $SEARCHFORXX for x in $SEARCHFOR; do if test -x $x; then APPLE_CC=$x fi + if test -x "$1"; then + APPLE_CXX="$1" + fi + shift done - if test X$APPLE_CC = X; then + IFS=$save_IFS + if test X$APPLE_CC = X -o X$APPLE_CXX = X; then AC_MSG_RESULT([no]) dnl Complete failure, we cannot build Cocoa code if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then @@ -150,7 +161,12 @@ case $host_os in else dnl We think we found an Apple compiler and will add dnl Apple specific options - AC_MSG_RESULT($APPLE_CC) + AC_MSG_RESULT([$APPLE_CC ($APPLE_CXX)]) + dnl We should use this compiler for all of wx - hack... + CC=$APPLE_CC + CXX=$APPLE_CXX + dnl Both clang and gcc accept these flags... + #CXXFLAGS="-x c++ $CXXFLAGS" OBJC_CC=$APPLE_CC OBJC_CFLAGS="-ObjC" fi @@ -267,10 +283,10 @@ fi AC_SUBST(GL_LIBS) -CXXFLAGS="$CFLAGS $CPPFLAGS" +CXXFLAGS="$CXXFLAGS $CFLAGS $CPPFLAGS" CFLAGS="$CFLAGS $CPPFLAGS $C_ONLY_FLAGS" -DEBUG_CXXFLAGS="$DEBUG_CFLAGS $CPPFLAGS" +DEBUG_CXXFLAGS="$CXXFLAGS $DEBUG_CFLAGS $CPPFLAGS" DEBUG_CFLAGS="$DEBUG_CFLAGS $CPPFLAGS $C_ONLY_FLAGS" AC_SUBST(DEBUG_CFLAGS) AC_SUBST(DEBUG_CXXFLAGS) diff --git a/lib/wx/doc/src/notes.xml b/lib/wx/doc/src/notes.xml index 95036bd7f0..87f73be9ed 100644 --- a/lib/wx/doc/src/notes.xml +++ b/lib/wx/doc/src/notes.xml @@ -31,6 +31,52 @@ <p>This document describes the changes made to the wxErlang application.</p> +<section><title>Wx 1.0</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Add {silent_start, boolean()} option to wx:new/1 in order + to be able to suppress error messages during startup of + wx. (Thanks to H�kan Mattsson)</p> + <p> + Own Id: OTP-10585</p> + </item> + <item> + <p> + Fix wxTreeCtrl:getBoundingRect/2 and + wxTreeCtrl:hitTest/1. wxTreeCtrl:hitTest now returns a + tuple not bug compatible with previous releases but + needed.</p> + <p> + Own Id: OTP-10743</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + The wx application now compiles and is usable with the + unstable development branch of wxWidgets-2.9. Some + functions are currently not available in wxWidgets-2.9 + and their erlang counterparts are marked as deprecated. + They will generate an error if called when linked against + wxWidgets-2.9 libraries. This means that wx can now be + built on 64bit MacOsX, but keep in mind that + wxWidgets-2.9 is still a development branch and needs (a + lot) more work before it becomes stable.</p> + <p> + Own Id: OTP-10407 Aux Id: kunagi-262 [173] </p> + </item> + </list> + </section> + +</section> + <section><title>Wx 0.99.2</title> <section><title>Improvements and New Features</title> diff --git a/lib/wx/examples/demo/demo_html_tagger.erl b/lib/wx/examples/demo/demo_html_tagger.erl index 46bfe73676..7bb6736fdc 100644 --- a/lib/wx/examples/demo/demo_html_tagger.erl +++ b/lib/wx/examples/demo/demo_html_tagger.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2010. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_button.erl b/lib/wx/examples/demo/ex_button.erl index 41bf34e572..0f3296d0c0 100644 --- a/lib/wx/examples/demo/ex_button.erl +++ b/lib/wx/examples/demo/ex_button.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_canvas.erl b/lib/wx/examples/demo/ex_canvas.erl index 1f1d260276..8e517ba852 100644 --- a/lib/wx/examples/demo/ex_canvas.erl +++ b/lib/wx/examples/demo/ex_canvas.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_choices.erl b/lib/wx/examples/demo/ex_choices.erl index b4418293c1..c8b27f8580 100644 --- a/lib/wx/examples/demo/ex_choices.erl +++ b/lib/wx/examples/demo/ex_choices.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_cursor.erl b/lib/wx/examples/demo/ex_cursor.erl index 2f1eaaf7c7..f8a7cdd01b 100644 --- a/lib/wx/examples/demo/ex_cursor.erl +++ b/lib/wx/examples/demo/ex_cursor.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_dialogs.erl b/lib/wx/examples/demo/ex_dialogs.erl index 5c47b51271..2b9febfb64 100644 --- a/lib/wx/examples/demo/ex_dialogs.erl +++ b/lib/wx/examples/demo/ex_dialogs.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_frame_utils.erl b/lib/wx/examples/demo/ex_frame_utils.erl index 4a59bb3a68..c2273f80e0 100644 --- a/lib/wx/examples/demo/ex_frame_utils.erl +++ b/lib/wx/examples/demo/ex_frame_utils.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_gauge.erl b/lib/wx/examples/demo/ex_gauge.erl index c53dfb807b..5ec524fc37 100644 --- a/lib/wx/examples/demo/ex_gauge.erl +++ b/lib/wx/examples/demo/ex_gauge.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_grid.erl b/lib/wx/examples/demo/ex_grid.erl index e284836d5b..691eede3c4 100644 --- a/lib/wx/examples/demo/ex_grid.erl +++ b/lib/wx/examples/demo/ex_grid.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_htmlWindow.erl b/lib/wx/examples/demo/ex_htmlWindow.erl index af3d4c71f5..f505dfcfe1 100644 --- a/lib/wx/examples/demo/ex_htmlWindow.erl +++ b/lib/wx/examples/demo/ex_htmlWindow.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_listCtrl.erl b/lib/wx/examples/demo/ex_listCtrl.erl index 2c62ac9d5f..a59b30b15c 100644 --- a/lib/wx/examples/demo/ex_listCtrl.erl +++ b/lib/wx/examples/demo/ex_listCtrl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_notebook.erl b/lib/wx/examples/demo/ex_notebook.erl index 5edcc65082..69b1e02f6b 100644 --- a/lib/wx/examples/demo/ex_notebook.erl +++ b/lib/wx/examples/demo/ex_notebook.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_pickers.erl b/lib/wx/examples/demo/ex_pickers.erl index 54f8c7a8e5..b12d1b3877 100644 --- a/lib/wx/examples/demo/ex_pickers.erl +++ b/lib/wx/examples/demo/ex_pickers.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_popupMenu.erl b/lib/wx/examples/demo/ex_popupMenu.erl index f48b00963d..c0d82444b6 100644 --- a/lib/wx/examples/demo/ex_popupMenu.erl +++ b/lib/wx/examples/demo/ex_popupMenu.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_radioBox.erl b/lib/wx/examples/demo/ex_radioBox.erl index 17a11d1054..f615b81997 100644 --- a/lib/wx/examples/demo/ex_radioBox.erl +++ b/lib/wx/examples/demo/ex_radioBox.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_sashWindow.erl b/lib/wx/examples/demo/ex_sashWindow.erl index 9eb3b9b27e..8057d9b2c3 100644 --- a/lib/wx/examples/demo/ex_sashWindow.erl +++ b/lib/wx/examples/demo/ex_sashWindow.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_sizers.erl b/lib/wx/examples/demo/ex_sizers.erl index ecd539cd62..5875198d38 100644 --- a/lib/wx/examples/demo/ex_sizers.erl +++ b/lib/wx/examples/demo/ex_sizers.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_slider.erl b/lib/wx/examples/demo/ex_slider.erl index 4979e8b4f4..001e04a0f8 100644 --- a/lib/wx/examples/demo/ex_slider.erl +++ b/lib/wx/examples/demo/ex_slider.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_splitterWindow.erl b/lib/wx/examples/demo/ex_splitterWindow.erl index ac2fbe0113..06357d7d08 100644 --- a/lib/wx/examples/demo/ex_splitterWindow.erl +++ b/lib/wx/examples/demo/ex_splitterWindow.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_static.erl b/lib/wx/examples/demo/ex_static.erl index 8cf477b55a..1be033eac5 100644 --- a/lib/wx/examples/demo/ex_static.erl +++ b/lib/wx/examples/demo/ex_static.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/examples/demo/ex_treeCtrl.erl b/lib/wx/examples/demo/ex_treeCtrl.erl index 7698ab1f00..d2ce0cf95e 100644 --- a/lib/wx/examples/demo/ex_treeCtrl.erl +++ b/lib/wx/examples/demo/ex_treeCtrl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. 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/src/gen/wxNcPaintEvent.erl b/lib/wx/src/gen/wxNcPaintEvent.erl deleted file mode 100644 index 4dd292a0be..0000000000 --- a/lib/wx/src/gen/wxNcPaintEvent.erl +++ /dev/null @@ -1,64 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2008-2012. 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_wxncpaintevent.html">wxNcPaintEvent</a>. -%% <dl><dt>Use {@link wxEvtHandler:connect/3.} with EventType:</dt> -%% <dd><em>nc_paint</em></dd></dl> -%% See also the message variant {@link wxEvtHandler:wxNcPaint(). #wxNcPaint{}} event record type. -%% -%% <p>This class is derived (and can use functions) from: -%% <br />{@link wxEvent} -%% </p> -%% @type wxNcPaintEvent(). 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(wxNcPaintEvent). --include("wxe.hrl"). --export([]). - -%% inherited exports --export([getId/1,getSkipped/1,getTimestamp/1,isCommandEvent/1,parent_class/1, - resumePropagation/2,shouldPropagate/1,skip/1,skip/2,stopPropagation/1]). - --export_type([wxNcPaintEvent/0]). -%% @hidden -parent_class(wxEvent) -> true; -parent_class(_Class) -> erlang:error({badtype, ?MODULE}). - --type wxNcPaintEvent() :: wx:wx_object(). - %% From wxEvent -%% @hidden -stopPropagation(This) -> wxEvent:stopPropagation(This). -%% @hidden -skip(This, Options) -> wxEvent:skip(This, Options). -%% @hidden -skip(This) -> wxEvent:skip(This). -%% @hidden -shouldPropagate(This) -> wxEvent:shouldPropagate(This). -%% @hidden -resumePropagation(This,PropagationLevel) -> wxEvent:resumePropagation(This,PropagationLevel). -%% @hidden -isCommandEvent(This) -> wxEvent:isCommandEvent(This). -%% @hidden -getTimestamp(This) -> wxEvent:getTimestamp(This). -%% @hidden -getSkipped(This) -> wxEvent:getSkipped(This). -%% @hidden -getId(This) -> wxEvent:getId(This). diff --git a/lib/wx/src/gen/wxTreeCtrl.erl b/lib/wx/src/gen/wxTreeCtrl.erl index dfa9e691ce..df2b9bed39 100644 --- a/lib/wx/src/gen/wxTreeCtrl.erl +++ b/lib/wx/src/gen/wxTreeCtrl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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 @@ -35,21 +35,22 @@ -include("wxe.hrl"). -export([addRoot/2,addRoot/3,appendItem/3,appendItem/4,assignImageList/2,assignStateImageList/2, collapse/2,collapseAndReset/2,create/2,create/3,delete/2,deleteAllItems/1, - deleteChildren/2,destroy/1,editLabel/2,ensureVisible/2,expand/2,getBoundingRect/3, - getBoundingRect/4,getChildrenCount/2,getChildrenCount/3,getCount/1, + deleteChildren/2,destroy/1,editLabel/2,ensureVisible/2,expand/2,getBoundingRect/2, + getBoundingRect/3,getChildrenCount/2,getChildrenCount/3,getCount/1, getEditControl/1,getFirstChild/2,getFirstVisibleItem/1,getImageList/1, getIndent/1,getItemBackgroundColour/2,getItemData/2,getItemFont/2, getItemImage/2,getItemImage/3,getItemParent/2,getItemText/2,getItemTextColour/2, getLastChild/2,getNextChild/3,getNextSibling/2,getNextVisible/2,getPrevSibling/2, getPrevVisible/2,getRootItem/1,getSelection/1,getSelections/1,getStateImageList/1, hitTest/2,insertItem/4,insertItem/5,isBold/2,isExpanded/2,isSelected/2, - isVisible/2,itemHasChildren/2,new/0,new/1,new/2,prependItem/3,prependItem/4, - scrollTo/2,selectItem/2,selectItem/3,setImageList/2,setIndent/2,setItemBackgroundColour/3, - setItemBold/2,setItemBold/3,setItemData/3,setItemDropHighlight/2, - setItemDropHighlight/3,setItemFont/3,setItemHasChildren/2,setItemHasChildren/3, - setItemImage/3,setItemImage/4,setItemText/3,setItemTextColour/3,setStateImageList/2, - setWindowStyle/2,sortChildren/2,toggle/2,toggleItemSelection/2,unselect/1, - unselectAll/1,unselectItem/2]). + isTreeItemIdOk/1,isVisible/2,itemHasChildren/2,new/0,new/1,new/2,prependItem/3, + prependItem/4,scrollTo/2,selectItem/2,selectItem/3,setImageList/2, + setIndent/2,setItemBackgroundColour/3,setItemBold/2,setItemBold/3, + setItemData/3,setItemDropHighlight/2,setItemDropHighlight/3,setItemFont/3, + setItemHasChildren/2,setItemHasChildren/3,setItemImage/3,setItemImage/4, + setItemText/3,setItemTextColour/3,setStateImageList/2,setWindowStyle/2, + sortChildren/2,toggle/2,toggleItemSelection/2,unselect/1,unselectAll/1, + unselectItem/2]). %% inherited exports -export([cacheBestSize/2,captureMouse/1,center/1,center/2,centerOnParent/1, @@ -303,26 +304,28 @@ expand(#wx_ref{type=ThisT,ref=ThisRef},Item) wxe_util:cast(?wxTreeCtrl_Expand, <<ThisRef:32/?UI,0:32,Item:64/?UI>>). -%% @equiv getBoundingRect(This,Item,Rect, []) --spec getBoundingRect(This, Item, Rect) -> boolean() when - This::wxTreeCtrl(), Item::integer(), Rect::{X::integer(), Y::integer(), W::integer(), H::integer()}. +%% @equiv getBoundingRect(This,Item, []) +-spec getBoundingRect(This, Item) -> Result when + Result ::{Res ::boolean(), Rect::{X::integer(), Y::integer(), W::integer(), H::integer()}}, + This::wxTreeCtrl(), Item::integer(). -getBoundingRect(This,Item,Rect={RectX,RectY,RectW,RectH}) - when is_record(This, wx_ref),is_integer(Item),is_integer(RectX),is_integer(RectY),is_integer(RectW),is_integer(RectH) -> - getBoundingRect(This,Item,Rect, []). +getBoundingRect(This,Item) + when is_record(This, wx_ref),is_integer(Item) -> + getBoundingRect(This,Item, []). %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxtreectrl.html#wxtreectrlgetboundingrect">external documentation</a>. --spec getBoundingRect(This, Item, Rect, [Option]) -> boolean() when - This::wxTreeCtrl(), Item::integer(), Rect::{X::integer(), Y::integer(), W::integer(), H::integer()}, +-spec getBoundingRect(This, Item, [Option]) -> Result when + Result :: {Res ::boolean(), Rect::{X::integer(), Y::integer(), W::integer(), H::integer()}}, + This::wxTreeCtrl(), Item::integer(), Option :: {textOnly, boolean()}. -getBoundingRect(#wx_ref{type=ThisT,ref=ThisRef},Item,{RectX,RectY,RectW,RectH}, Options) - when is_integer(Item),is_integer(RectX),is_integer(RectY),is_integer(RectW),is_integer(RectH),is_list(Options) -> +getBoundingRect(#wx_ref{type=ThisT,ref=ThisRef},Item, Options) + when is_integer(Item),is_list(Options) -> ?CLASS(ThisT,wxTreeCtrl), MOpts = fun({textOnly, TextOnly}, Acc) -> [<<1:32/?UI,(wxe_util:from_bool(TextOnly)):32/?UI>>|Acc]; (BadOpt, _) -> erlang:error({badoption, BadOpt}) end, BinOpt = list_to_binary(lists:foldl(MOpts, [<<0:32>>], Options)), wxe_util:call(?wxTreeCtrl_GetBoundingRect, - <<ThisRef:32/?UI,0:32,Item:64/?UI,RectX:32/?UI,RectY:32/?UI,RectW:32/?UI,RectH:32/?UI, BinOpt/binary>>). + <<ThisRef:32/?UI,0:32,Item:64/?UI, BinOpt/binary>>). %% @equiv getChildrenCount(This,Item, []) -spec getChildrenCount(This, Item) -> integer() when @@ -561,7 +564,8 @@ getStateImageList(#wx_ref{type=ThisT,ref=ThisRef}) -> <<ThisRef:32/?UI>>). %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxtreectrl.html#wxtreectrlhittest">external documentation</a>. --spec hitTest(This, Point) -> integer() when +-spec hitTest(This, Point) -> Result when + Result ::{Res ::integer(), Flags::integer()}, This::wxTreeCtrl(), Point::{X::integer(), Y::integer()}. hitTest(#wx_ref{type=ThisT,ref=ThisRef},{PointX,PointY}) when is_integer(PointX),is_integer(PointY) -> @@ -640,6 +644,14 @@ itemHasChildren(#wx_ref{type=ThisT,ref=ThisRef},Item) wxe_util:call(?wxTreeCtrl_ItemHasChildren, <<ThisRef:32/?UI,0:32,Item:64/?UI>>). +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxtreectrl.html#wxtreectrlistreeitemidok">external documentation</a>. +-spec isTreeItemIdOk(Id) -> boolean() when + Id::integer(). +isTreeItemIdOk(Id) + when is_integer(Id) -> + wxe_util:call(?wxTreeCtrl_IsTreeItemIdOk, + <<Id:64/?UI>>). + %% @equiv prependItem(This,Parent,Text, []) -spec prependItem(This, Parent, Text) -> integer() when This::wxTreeCtrl(), Parent::integer(), Text::unicode:chardata(). diff --git a/lib/wx/src/gen/wxe_debug.hrl b/lib/wx/src/gen/wxe_debug.hrl index 6f4fa3fe34..29cb2b05e6 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-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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 @@ -1877,1432 +1877,1433 @@ wxdebug_table() -> {2050, {wxTreeCtrl, getSelection, 0}}, {2051, {wxTreeCtrl, getSelections, 1}}, {2052, {wxTreeCtrl, getStateImageList, 0}}, - {2053, {wxTreeCtrl, hitTest, 1}}, + {2053, {wxTreeCtrl, hitTest, 2}}, {2055, {wxTreeCtrl, insertItem, 4}}, {2056, {wxTreeCtrl, isBold, 1}}, {2057, {wxTreeCtrl, isExpanded, 1}}, {2058, {wxTreeCtrl, isSelected, 1}}, {2059, {wxTreeCtrl, isVisible, 1}}, {2060, {wxTreeCtrl, itemHasChildren, 1}}, - {2061, {wxTreeCtrl, prependItem, 3}}, - {2062, {wxTreeCtrl, scrollTo, 1}}, - {2063, {wxTreeCtrl, selectItem_1, 1}}, - {2064, {wxTreeCtrl, selectItem_2, 2}}, - {2065, {wxTreeCtrl, setIndent, 1}}, - {2066, {wxTreeCtrl, setImageList, 1}}, - {2067, {wxTreeCtrl, setItemBackgroundColour, 2}}, - {2068, {wxTreeCtrl, setItemBold, 2}}, - {2069, {wxTreeCtrl, setItemData, 2}}, - {2070, {wxTreeCtrl, setItemDropHighlight, 2}}, - {2071, {wxTreeCtrl, setItemFont, 2}}, - {2072, {wxTreeCtrl, setItemHasChildren, 2}}, - {2073, {wxTreeCtrl, setItemImage_2, 2}}, - {2074, {wxTreeCtrl, setItemImage_3, 3}}, - {2075, {wxTreeCtrl, setItemText, 2}}, - {2076, {wxTreeCtrl, setItemTextColour, 2}}, - {2077, {wxTreeCtrl, setStateImageList, 1}}, - {2078, {wxTreeCtrl, setWindowStyle, 1}}, - {2079, {wxTreeCtrl, sortChildren, 1}}, - {2080, {wxTreeCtrl, toggle, 1}}, - {2081, {wxTreeCtrl, toggleItemSelection, 1}}, - {2082, {wxTreeCtrl, unselect, 0}}, - {2083, {wxTreeCtrl, unselectAll, 0}}, - {2084, {wxTreeCtrl, unselectItem, 1}}, - {2085, {wxScrollBar, new_0, 0}}, - {2086, {wxScrollBar, new_3, 3}}, - {2087, {wxScrollBar, destruct, 0}}, - {2088, {wxScrollBar, create, 3}}, - {2089, {wxScrollBar, getRange, 0}}, - {2090, {wxScrollBar, getPageSize, 0}}, - {2091, {wxScrollBar, getThumbPosition, 0}}, - {2092, {wxScrollBar, getThumbSize, 0}}, - {2093, {wxScrollBar, setThumbPosition, 1}}, - {2094, {wxScrollBar, setScrollbar, 5}}, - {2096, {wxSpinButton, new_2, 2}}, - {2097, {wxSpinButton, new_0, 0}}, - {2098, {wxSpinButton, create, 2}}, - {2099, {wxSpinButton, getMax, 0}}, - {2100, {wxSpinButton, getMin, 0}}, - {2101, {wxSpinButton, getValue, 0}}, - {2102, {wxSpinButton, setRange, 2}}, - {2103, {wxSpinButton, setValue, 1}}, - {2104, {wxSpinButton, 'Destroy', undefined}}, - {2105, {wxSpinCtrl, new_0, 0}}, - {2106, {wxSpinCtrl, new_2, 2}}, - {2108, {wxSpinCtrl, create, 2}}, - {2111, {wxSpinCtrl, setValue_1_1, 1}}, - {2112, {wxSpinCtrl, setValue_1_0, 1}}, - {2114, {wxSpinCtrl, getValue, 0}}, - {2116, {wxSpinCtrl, setRange, 2}}, - {2117, {wxSpinCtrl, setSelection, 2}}, - {2119, {wxSpinCtrl, getMin, 0}}, - {2121, {wxSpinCtrl, getMax, 0}}, - {2122, {wxSpinCtrl, 'Destroy', undefined}}, - {2123, {wxStaticText, new_0, 0}}, - {2124, {wxStaticText, new_4, 4}}, - {2125, {wxStaticText, create, 4}}, - {2126, {wxStaticText, getLabel, 0}}, - {2127, {wxStaticText, setLabel, 1}}, - {2128, {wxStaticText, wrap, 1}}, - {2129, {wxStaticText, 'Destroy', undefined}}, - {2130, {wxStaticBitmap, new_0, 0}}, - {2131, {wxStaticBitmap, new_4, 4}}, - {2132, {wxStaticBitmap, create, 4}}, - {2133, {wxStaticBitmap, getBitmap, 0}}, - {2134, {wxStaticBitmap, setBitmap, 1}}, - {2135, {wxStaticBitmap, 'Destroy', undefined}}, - {2136, {wxRadioBox, new, 7}}, - {2138, {wxRadioBox, destruct, 0}}, - {2139, {wxRadioBox, create, 7}}, - {2140, {wxRadioBox, enable_2, 2}}, - {2141, {wxRadioBox, enable_1, 1}}, - {2142, {wxRadioBox, getSelection, 0}}, - {2143, {wxRadioBox, getString, 1}}, - {2144, {wxRadioBox, setSelection, 1}}, - {2145, {wxRadioBox, show_2, 2}}, - {2146, {wxRadioBox, show_1, 1}}, - {2147, {wxRadioBox, getColumnCount, 0}}, - {2148, {wxRadioBox, getItemHelpText, 1}}, - {2149, {wxRadioBox, getItemToolTip, 1}}, - {2151, {wxRadioBox, getItemFromPoint, 1}}, - {2152, {wxRadioBox, getRowCount, 0}}, - {2153, {wxRadioBox, isItemEnabled, 1}}, - {2154, {wxRadioBox, isItemShown, 1}}, - {2155, {wxRadioBox, setItemHelpText, 2}}, - {2156, {wxRadioBox, setItemToolTip, 2}}, - {2157, {wxRadioButton, new_0, 0}}, - {2158, {wxRadioButton, new_4, 4}}, - {2159, {wxRadioButton, create, 4}}, - {2160, {wxRadioButton, getValue, 0}}, - {2161, {wxRadioButton, setValue, 1}}, - {2162, {wxRadioButton, 'Destroy', undefined}}, - {2164, {wxSlider, new_6, 6}}, - {2165, {wxSlider, new_0, 0}}, - {2166, {wxSlider, create, 6}}, - {2167, {wxSlider, getLineSize, 0}}, - {2168, {wxSlider, getMax, 0}}, - {2169, {wxSlider, getMin, 0}}, - {2170, {wxSlider, getPageSize, 0}}, - {2171, {wxSlider, getThumbLength, 0}}, - {2172, {wxSlider, getValue, 0}}, - {2173, {wxSlider, setLineSize, 1}}, - {2174, {wxSlider, setPageSize, 1}}, - {2175, {wxSlider, setRange, 2}}, - {2176, {wxSlider, setThumbLength, 1}}, - {2177, {wxSlider, setValue, 1}}, - {2178, {wxSlider, 'Destroy', undefined}}, - {2180, {wxDialog, new_4, 4}}, - {2181, {wxDialog, new_0, 0}}, - {2183, {wxDialog, destruct, 0}}, - {2184, {wxDialog, create, 4}}, - {2185, {wxDialog, createButtonSizer, 1}}, - {2186, {wxDialog, createStdDialogButtonSizer, 1}}, - {2187, {wxDialog, endModal, 1}}, - {2188, {wxDialog, getAffirmativeId, 0}}, - {2189, {wxDialog, getReturnCode, 0}}, - {2190, {wxDialog, isModal, 0}}, - {2191, {wxDialog, setAffirmativeId, 1}}, - {2192, {wxDialog, setReturnCode, 1}}, - {2193, {wxDialog, show, 1}}, - {2194, {wxDialog, showModal, 0}}, - {2195, {wxColourDialog, new_0, 0}}, - {2196, {wxColourDialog, new_2, 2}}, - {2197, {wxColourDialog, destruct, 0}}, - {2198, {wxColourDialog, create, 2}}, - {2199, {wxColourDialog, getColourData, 0}}, - {2200, {wxColourData, new_0, 0}}, - {2201, {wxColourData, new_1, 1}}, - {2202, {wxColourData, destruct, 0}}, - {2203, {wxColourData, getChooseFull, 0}}, - {2204, {wxColourData, getColour, 0}}, - {2206, {wxColourData, getCustomColour, 1}}, - {2207, {wxColourData, setChooseFull, 1}}, - {2208, {wxColourData, setColour, 1}}, - {2209, {wxColourData, setCustomColour, 2}}, - {2210, {wxPalette, new_0, 0}}, - {2211, {wxPalette, new_4, 4}}, - {2213, {wxPalette, destruct, 0}}, - {2214, {wxPalette, create, 4}}, - {2215, {wxPalette, getColoursCount, 0}}, - {2216, {wxPalette, getPixel, 3}}, - {2217, {wxPalette, getRGB, 4}}, - {2218, {wxPalette, isOk, 0}}, - {2222, {wxDirDialog, new, 2}}, - {2223, {wxDirDialog, destruct, 0}}, - {2224, {wxDirDialog, getPath, 0}}, - {2225, {wxDirDialog, getMessage, 0}}, - {2226, {wxDirDialog, setMessage, 1}}, - {2227, {wxDirDialog, setPath, 1}}, - {2231, {wxFileDialog, new, 2}}, - {2232, {wxFileDialog, destruct, 0}}, - {2233, {wxFileDialog, getDirectory, 0}}, - {2234, {wxFileDialog, getFilename, 0}}, - {2235, {wxFileDialog, getFilenames, 1}}, - {2236, {wxFileDialog, getFilterIndex, 0}}, - {2237, {wxFileDialog, getMessage, 0}}, - {2238, {wxFileDialog, getPath, 0}}, - {2239, {wxFileDialog, getPaths, 1}}, - {2240, {wxFileDialog, getWildcard, 0}}, - {2241, {wxFileDialog, setDirectory, 1}}, - {2242, {wxFileDialog, setFilename, 1}}, - {2243, {wxFileDialog, setFilterIndex, 1}}, - {2244, {wxFileDialog, setMessage, 1}}, - {2245, {wxFileDialog, setPath, 1}}, - {2246, {wxFileDialog, setWildcard, 1}}, - {2247, {wxPickerBase, setInternalMargin, 1}}, - {2248, {wxPickerBase, getInternalMargin, 0}}, - {2249, {wxPickerBase, setTextCtrlProportion, 1}}, - {2250, {wxPickerBase, setPickerCtrlProportion, 1}}, - {2251, {wxPickerBase, getTextCtrlProportion, 0}}, - {2252, {wxPickerBase, getPickerCtrlProportion, 0}}, - {2253, {wxPickerBase, hasTextCtrl, 0}}, - {2254, {wxPickerBase, getTextCtrl, 0}}, - {2255, {wxPickerBase, isTextCtrlGrowable, 0}}, - {2256, {wxPickerBase, setPickerCtrlGrowable, 1}}, - {2257, {wxPickerBase, setTextCtrlGrowable, 1}}, - {2258, {wxPickerBase, isPickerCtrlGrowable, 0}}, - {2259, {wxFilePickerCtrl, new_0, 0}}, - {2260, {wxFilePickerCtrl, new_3, 3}}, - {2261, {wxFilePickerCtrl, create, 3}}, - {2262, {wxFilePickerCtrl, getPath, 0}}, - {2263, {wxFilePickerCtrl, setPath, 1}}, - {2264, {wxFilePickerCtrl, 'Destroy', undefined}}, - {2265, {wxDirPickerCtrl, new_0, 0}}, - {2266, {wxDirPickerCtrl, new_3, 3}}, - {2267, {wxDirPickerCtrl, create, 3}}, - {2268, {wxDirPickerCtrl, getPath, 0}}, - {2269, {wxDirPickerCtrl, setPath, 1}}, - {2270, {wxDirPickerCtrl, 'Destroy', undefined}}, - {2271, {wxColourPickerCtrl, new_0, 0}}, - {2272, {wxColourPickerCtrl, new_3, 3}}, - {2273, {wxColourPickerCtrl, create, 3}}, - {2274, {wxColourPickerCtrl, getColour, 0}}, - {2275, {wxColourPickerCtrl, setColour_1_1, 1}}, - {2276, {wxColourPickerCtrl, setColour_1_0, 1}}, - {2277, {wxColourPickerCtrl, 'Destroy', undefined}}, - {2278, {wxDatePickerCtrl, new_0, 0}}, - {2279, {wxDatePickerCtrl, new_3, 3}}, - {2280, {wxDatePickerCtrl, getRange, 2}}, - {2281, {wxDatePickerCtrl, getValue, 0}}, - {2282, {wxDatePickerCtrl, setRange, 2}}, - {2283, {wxDatePickerCtrl, setValue, 1}}, - {2284, {wxDatePickerCtrl, 'Destroy', undefined}}, - {2285, {wxFontPickerCtrl, new_0, 0}}, - {2286, {wxFontPickerCtrl, new_3, 3}}, - {2287, {wxFontPickerCtrl, create, 3}}, - {2288, {wxFontPickerCtrl, getSelectedFont, 0}}, - {2289, {wxFontPickerCtrl, setSelectedFont, 1}}, - {2290, {wxFontPickerCtrl, getMaxPointSize, 0}}, - {2291, {wxFontPickerCtrl, setMaxPointSize, 1}}, - {2292, {wxFontPickerCtrl, 'Destroy', undefined}}, - {2295, {wxFindReplaceDialog, new_0, 0}}, - {2296, {wxFindReplaceDialog, new_4, 4}}, - {2297, {wxFindReplaceDialog, destruct, 0}}, - {2298, {wxFindReplaceDialog, create, 4}}, - {2299, {wxFindReplaceDialog, getData, 0}}, - {2300, {wxFindReplaceData, new_0, 0}}, - {2301, {wxFindReplaceData, new_1, 1}}, - {2302, {wxFindReplaceData, getFindString, 0}}, - {2303, {wxFindReplaceData, getReplaceString, 0}}, - {2304, {wxFindReplaceData, getFlags, 0}}, - {2305, {wxFindReplaceData, setFlags, 1}}, - {2306, {wxFindReplaceData, setFindString, 1}}, - {2307, {wxFindReplaceData, setReplaceString, 1}}, - {2308, {wxFindReplaceData, 'Destroy', undefined}}, - {2309, {wxMultiChoiceDialog, new_0, 0}}, - {2311, {wxMultiChoiceDialog, new_5, 5}}, - {2312, {wxMultiChoiceDialog, getSelections, 0}}, - {2313, {wxMultiChoiceDialog, setSelections, 1}}, - {2314, {wxMultiChoiceDialog, 'Destroy', undefined}}, - {2315, {wxSingleChoiceDialog, new_0, 0}}, - {2317, {wxSingleChoiceDialog, new_5, 5}}, - {2318, {wxSingleChoiceDialog, getSelection, 0}}, - {2319, {wxSingleChoiceDialog, getStringSelection, 0}}, - {2320, {wxSingleChoiceDialog, setSelection, 1}}, - {2321, {wxSingleChoiceDialog, 'Destroy', undefined}}, - {2322, {wxTextEntryDialog, new, 3}}, - {2323, {wxTextEntryDialog, getValue, 0}}, - {2324, {wxTextEntryDialog, setValue, 1}}, - {2325, {wxTextEntryDialog, 'Destroy', undefined}}, - {2326, {wxPasswordEntryDialog, new, 3}}, - {2327, {wxPasswordEntryDialog, 'Destroy', undefined}}, - {2328, {wxFontData, new_0, 0}}, - {2329, {wxFontData, new_1, 1}}, - {2330, {wxFontData, destruct, 0}}, - {2331, {wxFontData, enableEffects, 1}}, - {2332, {wxFontData, getAllowSymbols, 0}}, - {2333, {wxFontData, getColour, 0}}, - {2334, {wxFontData, getChosenFont, 0}}, - {2335, {wxFontData, getEnableEffects, 0}}, - {2336, {wxFontData, getInitialFont, 0}}, - {2337, {wxFontData, getShowHelp, 0}}, - {2338, {wxFontData, setAllowSymbols, 1}}, - {2339, {wxFontData, setChosenFont, 1}}, - {2340, {wxFontData, setColour, 1}}, - {2341, {wxFontData, setInitialFont, 1}}, - {2342, {wxFontData, setRange, 2}}, - {2343, {wxFontData, setShowHelp, 1}}, - {2347, {wxFontDialog, new_0, 0}}, - {2349, {wxFontDialog, new_2, 2}}, - {2351, {wxFontDialog, create, 2}}, - {2352, {wxFontDialog, getFontData, 0}}, - {2354, {wxFontDialog, 'Destroy', undefined}}, - {2355, {wxProgressDialog, new, 3}}, - {2356, {wxProgressDialog, destruct, 0}}, - {2357, {wxProgressDialog, resume, 0}}, - {2358, {wxProgressDialog, update_2, 2}}, - {2359, {wxProgressDialog, update_0, 0}}, - {2360, {wxMessageDialog, new, 3}}, - {2361, {wxMessageDialog, destruct, 0}}, - {2362, {wxPageSetupDialog, new, 2}}, - {2363, {wxPageSetupDialog, destruct, 0}}, - {2364, {wxPageSetupDialog, getPageSetupData, 0}}, - {2365, {wxPageSetupDialog, showModal, 0}}, - {2366, {wxPageSetupDialogData, new_0, 0}}, - {2367, {wxPageSetupDialogData, new_1_0, 1}}, - {2368, {wxPageSetupDialogData, new_1_1, 1}}, - {2369, {wxPageSetupDialogData, destruct, 0}}, - {2370, {wxPageSetupDialogData, enableHelp, 1}}, - {2371, {wxPageSetupDialogData, enableMargins, 1}}, - {2372, {wxPageSetupDialogData, enableOrientation, 1}}, - {2373, {wxPageSetupDialogData, enablePaper, 1}}, - {2374, {wxPageSetupDialogData, enablePrinter, 1}}, - {2375, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, - {2376, {wxPageSetupDialogData, getEnableMargins, 0}}, - {2377, {wxPageSetupDialogData, getEnableOrientation, 0}}, - {2378, {wxPageSetupDialogData, getEnablePaper, 0}}, - {2379, {wxPageSetupDialogData, getEnablePrinter, 0}}, - {2380, {wxPageSetupDialogData, getEnableHelp, 0}}, - {2381, {wxPageSetupDialogData, getDefaultInfo, 0}}, - {2382, {wxPageSetupDialogData, getMarginTopLeft, 0}}, - {2383, {wxPageSetupDialogData, getMarginBottomRight, 0}}, - {2384, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, - {2385, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, - {2386, {wxPageSetupDialogData, getPaperId, 0}}, - {2387, {wxPageSetupDialogData, getPaperSize, 0}}, - {2389, {wxPageSetupDialogData, getPrintData, 0}}, - {2390, {wxPageSetupDialogData, isOk, 0}}, - {2391, {wxPageSetupDialogData, setDefaultInfo, 1}}, - {2392, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, - {2393, {wxPageSetupDialogData, setMarginTopLeft, 1}}, - {2394, {wxPageSetupDialogData, setMarginBottomRight, 1}}, - {2395, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, - {2396, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, - {2397, {wxPageSetupDialogData, setPaperId, 1}}, - {2398, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, - {2399, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, - {2400, {wxPageSetupDialogData, setPrintData, 1}}, - {2401, {wxPrintDialog, new_2_0, 2}}, - {2402, {wxPrintDialog, new_2_1, 2}}, - {2403, {wxPrintDialog, destruct, 0}}, - {2404, {wxPrintDialog, getPrintDialogData, 0}}, - {2405, {wxPrintDialog, getPrintDC, 0}}, - {2406, {wxPrintDialogData, new_0, 0}}, - {2407, {wxPrintDialogData, new_1_1, 1}}, - {2408, {wxPrintDialogData, new_1_0, 1}}, - {2409, {wxPrintDialogData, destruct, 0}}, - {2410, {wxPrintDialogData, enableHelp, 1}}, - {2411, {wxPrintDialogData, enablePageNumbers, 1}}, - {2412, {wxPrintDialogData, enablePrintToFile, 1}}, - {2413, {wxPrintDialogData, enableSelection, 1}}, - {2414, {wxPrintDialogData, getAllPages, 0}}, - {2415, {wxPrintDialogData, getCollate, 0}}, - {2416, {wxPrintDialogData, getFromPage, 0}}, - {2417, {wxPrintDialogData, getMaxPage, 0}}, - {2418, {wxPrintDialogData, getMinPage, 0}}, - {2419, {wxPrintDialogData, getNoCopies, 0}}, - {2420, {wxPrintDialogData, getPrintData, 0}}, - {2421, {wxPrintDialogData, getPrintToFile, 0}}, - {2422, {wxPrintDialogData, getSelection, 0}}, - {2423, {wxPrintDialogData, getToPage, 0}}, - {2424, {wxPrintDialogData, isOk, 0}}, - {2425, {wxPrintDialogData, setCollate, 1}}, - {2426, {wxPrintDialogData, setFromPage, 1}}, - {2427, {wxPrintDialogData, setMaxPage, 1}}, - {2428, {wxPrintDialogData, setMinPage, 1}}, - {2429, {wxPrintDialogData, setNoCopies, 1}}, - {2430, {wxPrintDialogData, setPrintData, 1}}, - {2431, {wxPrintDialogData, setPrintToFile, 1}}, - {2432, {wxPrintDialogData, setSelection, 1}}, - {2433, {wxPrintDialogData, setToPage, 1}}, - {2434, {wxPrintData, new_0, 0}}, - {2435, {wxPrintData, new_1, 1}}, - {2436, {wxPrintData, destruct, 0}}, - {2437, {wxPrintData, getCollate, 0}}, - {2438, {wxPrintData, getBin, 0}}, - {2439, {wxPrintData, getColour, 0}}, - {2440, {wxPrintData, getDuplex, 0}}, - {2441, {wxPrintData, getNoCopies, 0}}, - {2442, {wxPrintData, getOrientation, 0}}, - {2443, {wxPrintData, getPaperId, 0}}, - {2444, {wxPrintData, getPrinterName, 0}}, - {2445, {wxPrintData, getQuality, 0}}, - {2446, {wxPrintData, isOk, 0}}, - {2447, {wxPrintData, setBin, 1}}, - {2448, {wxPrintData, setCollate, 1}}, - {2449, {wxPrintData, setColour, 1}}, - {2450, {wxPrintData, setDuplex, 1}}, - {2451, {wxPrintData, setNoCopies, 1}}, - {2452, {wxPrintData, setOrientation, 1}}, - {2453, {wxPrintData, setPaperId, 1}}, - {2454, {wxPrintData, setPrinterName, 1}}, - {2455, {wxPrintData, setQuality, 1}}, - {2458, {wxPrintPreview, new_2, 2}}, - {2459, {wxPrintPreview, new_3, 3}}, - {2461, {wxPrintPreview, destruct, 0}}, - {2462, {wxPrintPreview, getCanvas, 0}}, - {2463, {wxPrintPreview, getCurrentPage, 0}}, - {2464, {wxPrintPreview, getFrame, 0}}, - {2465, {wxPrintPreview, getMaxPage, 0}}, - {2466, {wxPrintPreview, getMinPage, 0}}, - {2467, {wxPrintPreview, getPrintout, 0}}, - {2468, {wxPrintPreview, getPrintoutForPrinting, 0}}, - {2469, {wxPrintPreview, isOk, 0}}, - {2470, {wxPrintPreview, paintPage, 2}}, - {2471, {wxPrintPreview, print, 1}}, - {2472, {wxPrintPreview, renderPage, 1}}, - {2473, {wxPrintPreview, setCanvas, 1}}, - {2474, {wxPrintPreview, setCurrentPage, 1}}, - {2475, {wxPrintPreview, setFrame, 1}}, - {2476, {wxPrintPreview, setPrintout, 1}}, - {2477, {wxPrintPreview, setZoom, 1}}, - {2478, {wxPreviewFrame, new, 3}}, - {2479, {wxPreviewFrame, destruct, 0}}, - {2480, {wxPreviewFrame, createControlBar, 0}}, - {2481, {wxPreviewFrame, createCanvas, 0}}, - {2482, {wxPreviewFrame, initialize, 0}}, - {2483, {wxPreviewFrame, onCloseWindow, 1}}, - {2484, {wxPreviewControlBar, new, 4}}, - {2485, {wxPreviewControlBar, destruct, 0}}, - {2486, {wxPreviewControlBar, createButtons, 0}}, - {2487, {wxPreviewControlBar, getPrintPreview, 0}}, - {2488, {wxPreviewControlBar, getZoomControl, 0}}, - {2489, {wxPreviewControlBar, setZoomControl, 1}}, - {2491, {wxPrinter, new, 1}}, - {2492, {wxPrinter, createAbortWindow, 2}}, - {2493, {wxPrinter, getAbort, 0}}, - {2494, {wxPrinter, getLastError, 0}}, - {2495, {wxPrinter, getPrintDialogData, 0}}, - {2496, {wxPrinter, print, 3}}, - {2497, {wxPrinter, printDialog, 1}}, - {2498, {wxPrinter, reportError, 3}}, - {2499, {wxPrinter, setup, 1}}, - {2500, {wxPrinter, 'Destroy', undefined}}, - {2501, {wxXmlResource, new_1, 1}}, - {2502, {wxXmlResource, new_2, 2}}, - {2503, {wxXmlResource, destruct, 0}}, - {2504, {wxXmlResource, attachUnknownControl, 3}}, - {2505, {wxXmlResource, clearHandlers, 0}}, - {2506, {wxXmlResource, compareVersion, 4}}, - {2507, {wxXmlResource, get, 0}}, - {2508, {wxXmlResource, getFlags, 0}}, - {2509, {wxXmlResource, getVersion, 0}}, - {2510, {wxXmlResource, getXRCID, 2}}, - {2511, {wxXmlResource, initAllHandlers, 0}}, - {2512, {wxXmlResource, load, 1}}, - {2513, {wxXmlResource, loadBitmap, 1}}, - {2514, {wxXmlResource, loadDialog_2, 2}}, - {2515, {wxXmlResource, loadDialog_3, 3}}, - {2516, {wxXmlResource, loadFrame_2, 2}}, - {2517, {wxXmlResource, loadFrame_3, 3}}, - {2518, {wxXmlResource, loadIcon, 1}}, - {2519, {wxXmlResource, loadMenu, 1}}, - {2520, {wxXmlResource, loadMenuBar_2, 2}}, - {2521, {wxXmlResource, loadMenuBar_1, 1}}, - {2522, {wxXmlResource, loadPanel_2, 2}}, - {2523, {wxXmlResource, loadPanel_3, 3}}, - {2524, {wxXmlResource, loadToolBar, 2}}, - {2525, {wxXmlResource, set, 1}}, - {2526, {wxXmlResource, setFlags, 1}}, - {2527, {wxXmlResource, unload, 1}}, - {2528, {wxXmlResource, xrcctrl, 3}}, - {2529, {wxHtmlEasyPrinting, new, 1}}, - {2530, {wxHtmlEasyPrinting, destruct, 0}}, - {2531, {wxHtmlEasyPrinting, getPrintData, 0}}, - {2532, {wxHtmlEasyPrinting, getPageSetupData, 0}}, - {2533, {wxHtmlEasyPrinting, previewFile, 1}}, - {2534, {wxHtmlEasyPrinting, previewText, 2}}, - {2535, {wxHtmlEasyPrinting, printFile, 1}}, - {2536, {wxHtmlEasyPrinting, printText, 2}}, - {2537, {wxHtmlEasyPrinting, pageSetup, 0}}, - {2538, {wxHtmlEasyPrinting, setFonts, 3}}, - {2539, {wxHtmlEasyPrinting, setHeader, 2}}, - {2540, {wxHtmlEasyPrinting, setFooter, 2}}, - {2542, {wxGLCanvas, new_2, 2}}, - {2543, {wxGLCanvas, new_3_1, 3}}, - {2544, {wxGLCanvas, new_3_0, 3}}, - {2545, {wxGLCanvas, getContext, 0}}, - {2547, {wxGLCanvas, setCurrent, 0}}, - {2548, {wxGLCanvas, swapBuffers, 0}}, - {2549, {wxGLCanvas, 'Destroy', undefined}}, - {2550, {wxAuiManager, new, 1}}, - {2551, {wxAuiManager, destruct, 0}}, - {2552, {wxAuiManager, addPane_2_1, 2}}, - {2553, {wxAuiManager, addPane_3, 3}}, - {2554, {wxAuiManager, addPane_2_0, 2}}, - {2555, {wxAuiManager, detachPane, 1}}, - {2556, {wxAuiManager, getAllPanes, 0}}, - {2557, {wxAuiManager, getArtProvider, 0}}, - {2558, {wxAuiManager, getDockSizeConstraint, 2}}, - {2559, {wxAuiManager, getFlags, 0}}, - {2560, {wxAuiManager, getManagedWindow, 0}}, - {2561, {wxAuiManager, getManager, 1}}, - {2562, {wxAuiManager, getPane_1_1, 1}}, - {2563, {wxAuiManager, getPane_1_0, 1}}, - {2564, {wxAuiManager, hideHint, 0}}, - {2565, {wxAuiManager, insertPane, 3}}, - {2566, {wxAuiManager, loadPaneInfo, 2}}, - {2567, {wxAuiManager, loadPerspective, 2}}, - {2568, {wxAuiManager, savePaneInfo, 1}}, - {2569, {wxAuiManager, savePerspective, 0}}, - {2570, {wxAuiManager, setArtProvider, 1}}, - {2571, {wxAuiManager, setDockSizeConstraint, 2}}, - {2572, {wxAuiManager, setFlags, 1}}, - {2573, {wxAuiManager, setManagedWindow, 1}}, - {2574, {wxAuiManager, showHint, 1}}, - {2575, {wxAuiManager, unInit, 0}}, - {2576, {wxAuiManager, update, 0}}, - {2577, {wxAuiPaneInfo, new_0, 0}}, - {2578, {wxAuiPaneInfo, new_1, 1}}, - {2579, {wxAuiPaneInfo, destruct, 0}}, - {2580, {wxAuiPaneInfo, bestSize_1, 1}}, - {2581, {wxAuiPaneInfo, bestSize_2, 2}}, - {2582, {wxAuiPaneInfo, bottom, 0}}, - {2583, {wxAuiPaneInfo, bottomDockable, 1}}, - {2584, {wxAuiPaneInfo, caption, 1}}, - {2585, {wxAuiPaneInfo, captionVisible, 1}}, - {2586, {wxAuiPaneInfo, centre, 0}}, - {2587, {wxAuiPaneInfo, centrePane, 0}}, - {2588, {wxAuiPaneInfo, closeButton, 1}}, - {2589, {wxAuiPaneInfo, defaultPane, 0}}, - {2590, {wxAuiPaneInfo, destroyOnClose, 1}}, - {2591, {wxAuiPaneInfo, direction, 1}}, - {2592, {wxAuiPaneInfo, dock, 0}}, - {2593, {wxAuiPaneInfo, dockable, 1}}, - {2594, {wxAuiPaneInfo, fixed, 0}}, - {2595, {wxAuiPaneInfo, float, 0}}, - {2596, {wxAuiPaneInfo, floatable, 1}}, - {2597, {wxAuiPaneInfo, floatingPosition_1, 1}}, - {2598, {wxAuiPaneInfo, floatingPosition_2, 2}}, - {2599, {wxAuiPaneInfo, floatingSize_1, 1}}, - {2600, {wxAuiPaneInfo, floatingSize_2, 2}}, - {2601, {wxAuiPaneInfo, gripper, 1}}, - {2602, {wxAuiPaneInfo, gripperTop, 1}}, - {2603, {wxAuiPaneInfo, hasBorder, 0}}, - {2604, {wxAuiPaneInfo, hasCaption, 0}}, - {2605, {wxAuiPaneInfo, hasCloseButton, 0}}, - {2606, {wxAuiPaneInfo, hasFlag, 1}}, - {2607, {wxAuiPaneInfo, hasGripper, 0}}, - {2608, {wxAuiPaneInfo, hasGripperTop, 0}}, - {2609, {wxAuiPaneInfo, hasMaximizeButton, 0}}, - {2610, {wxAuiPaneInfo, hasMinimizeButton, 0}}, - {2611, {wxAuiPaneInfo, hasPinButton, 0}}, - {2612, {wxAuiPaneInfo, hide, 0}}, - {2613, {wxAuiPaneInfo, isBottomDockable, 0}}, - {2614, {wxAuiPaneInfo, isDocked, 0}}, - {2615, {wxAuiPaneInfo, isFixed, 0}}, - {2616, {wxAuiPaneInfo, isFloatable, 0}}, - {2617, {wxAuiPaneInfo, isFloating, 0}}, - {2618, {wxAuiPaneInfo, isLeftDockable, 0}}, - {2619, {wxAuiPaneInfo, isMovable, 0}}, - {2620, {wxAuiPaneInfo, isOk, 0}}, - {2621, {wxAuiPaneInfo, isResizable, 0}}, - {2622, {wxAuiPaneInfo, isRightDockable, 0}}, - {2623, {wxAuiPaneInfo, isShown, 0}}, - {2624, {wxAuiPaneInfo, isToolbar, 0}}, - {2625, {wxAuiPaneInfo, isTopDockable, 0}}, - {2626, {wxAuiPaneInfo, layer, 1}}, - {2627, {wxAuiPaneInfo, left, 0}}, - {2628, {wxAuiPaneInfo, leftDockable, 1}}, - {2629, {wxAuiPaneInfo, maxSize_1, 1}}, - {2630, {wxAuiPaneInfo, maxSize_2, 2}}, - {2631, {wxAuiPaneInfo, maximizeButton, 1}}, - {2632, {wxAuiPaneInfo, minSize_1, 1}}, - {2633, {wxAuiPaneInfo, minSize_2, 2}}, - {2634, {wxAuiPaneInfo, minimizeButton, 1}}, - {2635, {wxAuiPaneInfo, movable, 1}}, - {2636, {wxAuiPaneInfo, name, 1}}, - {2637, {wxAuiPaneInfo, paneBorder, 1}}, - {2638, {wxAuiPaneInfo, pinButton, 1}}, - {2639, {wxAuiPaneInfo, position, 1}}, - {2640, {wxAuiPaneInfo, resizable, 1}}, - {2641, {wxAuiPaneInfo, right, 0}}, - {2642, {wxAuiPaneInfo, rightDockable, 1}}, - {2643, {wxAuiPaneInfo, row, 1}}, - {2644, {wxAuiPaneInfo, safeSet, 1}}, - {2645, {wxAuiPaneInfo, setFlag, 2}}, - {2646, {wxAuiPaneInfo, show, 1}}, - {2647, {wxAuiPaneInfo, toolbarPane, 0}}, - {2648, {wxAuiPaneInfo, top, 0}}, - {2649, {wxAuiPaneInfo, topDockable, 1}}, - {2650, {wxAuiPaneInfo, window, 1}}, - {2651, {wxAuiNotebook, new_0, 0}}, - {2652, {wxAuiNotebook, new_2, 2}}, - {2653, {wxAuiNotebook, addPage, 3}}, - {2654, {wxAuiNotebook, create, 2}}, - {2655, {wxAuiNotebook, deletePage, 1}}, - {2656, {wxAuiNotebook, getArtProvider, 0}}, - {2657, {wxAuiNotebook, getPage, 1}}, - {2658, {wxAuiNotebook, getPageBitmap, 1}}, - {2659, {wxAuiNotebook, getPageCount, 0}}, - {2660, {wxAuiNotebook, getPageIndex, 1}}, - {2661, {wxAuiNotebook, getPageText, 1}}, - {2662, {wxAuiNotebook, getSelection, 0}}, - {2663, {wxAuiNotebook, insertPage, 4}}, - {2664, {wxAuiNotebook, removePage, 1}}, - {2665, {wxAuiNotebook, setArtProvider, 1}}, - {2666, {wxAuiNotebook, setFont, 1}}, - {2667, {wxAuiNotebook, setPageBitmap, 2}}, - {2668, {wxAuiNotebook, setPageText, 2}}, - {2669, {wxAuiNotebook, setSelection, 1}}, - {2670, {wxAuiNotebook, setTabCtrlHeight, 1}}, - {2671, {wxAuiNotebook, setUniformBitmapSize, 1}}, - {2672, {wxAuiNotebook, 'Destroy', undefined}}, - {2673, {wxMDIParentFrame, new_0, 0}}, - {2674, {wxMDIParentFrame, new_4, 4}}, - {2675, {wxMDIParentFrame, destruct, 0}}, - {2676, {wxMDIParentFrame, activateNext, 0}}, - {2677, {wxMDIParentFrame, activatePrevious, 0}}, - {2678, {wxMDIParentFrame, arrangeIcons, 0}}, - {2679, {wxMDIParentFrame, cascade, 0}}, - {2680, {wxMDIParentFrame, create, 4}}, - {2681, {wxMDIParentFrame, getActiveChild, 0}}, - {2682, {wxMDIParentFrame, getClientWindow, 0}}, - {2683, {wxMDIParentFrame, tile, 1}}, - {2684, {wxMDIChildFrame, new_0, 0}}, - {2685, {wxMDIChildFrame, new_4, 4}}, - {2686, {wxMDIChildFrame, destruct, 0}}, - {2687, {wxMDIChildFrame, activate, 0}}, - {2688, {wxMDIChildFrame, create, 4}}, - {2689, {wxMDIChildFrame, maximize, 1}}, - {2690, {wxMDIChildFrame, restore, 0}}, - {2691, {wxMDIClientWindow, new_0, 0}}, - {2692, {wxMDIClientWindow, new_2, 2}}, - {2693, {wxMDIClientWindow, destruct, 0}}, - {2694, {wxMDIClientWindow, createClient, 2}}, - {2695, {wxLayoutAlgorithm, new, 0}}, - {2696, {wxLayoutAlgorithm, layoutFrame, 2}}, - {2697, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, - {2698, {wxLayoutAlgorithm, layoutWindow, 2}}, - {2699, {wxLayoutAlgorithm, 'Destroy', undefined}}, - {2700, {wxEvent, getId, 0}}, - {2701, {wxEvent, getSkipped, 0}}, - {2702, {wxEvent, getTimestamp, 0}}, - {2703, {wxEvent, isCommandEvent, 0}}, - {2704, {wxEvent, resumePropagation, 1}}, - {2705, {wxEvent, shouldPropagate, 0}}, - {2706, {wxEvent, skip, 1}}, - {2707, {wxEvent, stopPropagation, 0}}, - {2708, {wxCommandEvent, getClientData, 0}}, - {2709, {wxCommandEvent, getExtraLong, 0}}, - {2710, {wxCommandEvent, getInt, 0}}, - {2711, {wxCommandEvent, getSelection, 0}}, - {2712, {wxCommandEvent, getString, 0}}, - {2713, {wxCommandEvent, isChecked, 0}}, - {2714, {wxCommandEvent, isSelection, 0}}, - {2715, {wxCommandEvent, setInt, 1}}, - {2716, {wxCommandEvent, setString, 1}}, - {2717, {wxScrollEvent, getOrientation, 0}}, - {2718, {wxScrollEvent, getPosition, 0}}, - {2719, {wxScrollWinEvent, getOrientation, 0}}, - {2720, {wxScrollWinEvent, getPosition, 0}}, - {2721, {wxMouseEvent, altDown, 0}}, - {2722, {wxMouseEvent, button, 1}}, - {2723, {wxMouseEvent, buttonDClick, 1}}, - {2724, {wxMouseEvent, buttonDown, 1}}, - {2725, {wxMouseEvent, buttonUp, 1}}, - {2726, {wxMouseEvent, cmdDown, 0}}, - {2727, {wxMouseEvent, controlDown, 0}}, - {2728, {wxMouseEvent, dragging, 0}}, - {2729, {wxMouseEvent, entering, 0}}, - {2730, {wxMouseEvent, getButton, 0}}, - {2733, {wxMouseEvent, getPosition, 0}}, - {2734, {wxMouseEvent, getLogicalPosition, 1}}, - {2735, {wxMouseEvent, getLinesPerAction, 0}}, - {2736, {wxMouseEvent, getWheelRotation, 0}}, - {2737, {wxMouseEvent, getWheelDelta, 0}}, - {2738, {wxMouseEvent, getX, 0}}, - {2739, {wxMouseEvent, getY, 0}}, - {2740, {wxMouseEvent, isButton, 0}}, - {2741, {wxMouseEvent, isPageScroll, 0}}, - {2742, {wxMouseEvent, leaving, 0}}, - {2743, {wxMouseEvent, leftDClick, 0}}, - {2744, {wxMouseEvent, leftDown, 0}}, - {2745, {wxMouseEvent, leftIsDown, 0}}, - {2746, {wxMouseEvent, leftUp, 0}}, - {2747, {wxMouseEvent, metaDown, 0}}, - {2748, {wxMouseEvent, middleDClick, 0}}, - {2749, {wxMouseEvent, middleDown, 0}}, - {2750, {wxMouseEvent, middleIsDown, 0}}, - {2751, {wxMouseEvent, middleUp, 0}}, - {2752, {wxMouseEvent, moving, 0}}, - {2753, {wxMouseEvent, rightDClick, 0}}, - {2754, {wxMouseEvent, rightDown, 0}}, - {2755, {wxMouseEvent, rightIsDown, 0}}, - {2756, {wxMouseEvent, rightUp, 0}}, - {2757, {wxMouseEvent, shiftDown, 0}}, - {2758, {wxSetCursorEvent, getCursor, 0}}, - {2759, {wxSetCursorEvent, getX, 0}}, - {2760, {wxSetCursorEvent, getY, 0}}, - {2761, {wxSetCursorEvent, hasCursor, 0}}, - {2762, {wxSetCursorEvent, setCursor, 1}}, - {2763, {wxKeyEvent, altDown, 0}}, - {2764, {wxKeyEvent, cmdDown, 0}}, - {2765, {wxKeyEvent, controlDown, 0}}, - {2766, {wxKeyEvent, getKeyCode, 0}}, - {2767, {wxKeyEvent, getModifiers, 0}}, - {2770, {wxKeyEvent, getPosition, 0}}, - {2771, {wxKeyEvent, getRawKeyCode, 0}}, - {2772, {wxKeyEvent, getRawKeyFlags, 0}}, - {2773, {wxKeyEvent, getUnicodeKey, 0}}, - {2774, {wxKeyEvent, getX, 0}}, - {2775, {wxKeyEvent, getY, 0}}, - {2776, {wxKeyEvent, hasModifiers, 0}}, - {2777, {wxKeyEvent, metaDown, 0}}, - {2778, {wxKeyEvent, shiftDown, 0}}, - {2779, {wxSizeEvent, getSize, 0}}, - {2780, {wxMoveEvent, getPosition, 0}}, - {2781, {wxEraseEvent, getDC, 0}}, - {2782, {wxFocusEvent, getWindow, 0}}, - {2783, {wxChildFocusEvent, getWindow, 0}}, - {2784, {wxMenuEvent, getMenu, 0}}, - {2785, {wxMenuEvent, getMenuId, 0}}, - {2786, {wxMenuEvent, isPopup, 0}}, - {2787, {wxCloseEvent, canVeto, 0}}, - {2788, {wxCloseEvent, getLoggingOff, 0}}, - {2789, {wxCloseEvent, setCanVeto, 1}}, - {2790, {wxCloseEvent, setLoggingOff, 1}}, - {2791, {wxCloseEvent, veto, 1}}, - {2792, {wxShowEvent, setShow, 1}}, - {2793, {wxShowEvent, getShow, 0}}, - {2794, {wxIconizeEvent, iconized, 0}}, - {2795, {wxJoystickEvent, buttonDown, 1}}, - {2796, {wxJoystickEvent, buttonIsDown, 1}}, - {2797, {wxJoystickEvent, buttonUp, 1}}, - {2798, {wxJoystickEvent, getButtonChange, 0}}, - {2799, {wxJoystickEvent, getButtonState, 0}}, - {2800, {wxJoystickEvent, getJoystick, 0}}, - {2801, {wxJoystickEvent, getPosition, 0}}, - {2802, {wxJoystickEvent, getZPosition, 0}}, - {2803, {wxJoystickEvent, isButton, 0}}, - {2804, {wxJoystickEvent, isMove, 0}}, - {2805, {wxJoystickEvent, isZMove, 0}}, - {2806, {wxUpdateUIEvent, canUpdate, 1}}, - {2807, {wxUpdateUIEvent, check, 1}}, - {2808, {wxUpdateUIEvent, enable, 1}}, - {2809, {wxUpdateUIEvent, show, 1}}, - {2810, {wxUpdateUIEvent, getChecked, 0}}, - {2811, {wxUpdateUIEvent, getEnabled, 0}}, - {2812, {wxUpdateUIEvent, getShown, 0}}, - {2813, {wxUpdateUIEvent, getSetChecked, 0}}, - {2814, {wxUpdateUIEvent, getSetEnabled, 0}}, - {2815, {wxUpdateUIEvent, getSetShown, 0}}, - {2816, {wxUpdateUIEvent, getSetText, 0}}, - {2817, {wxUpdateUIEvent, getText, 0}}, - {2818, {wxUpdateUIEvent, getMode, 0}}, - {2819, {wxUpdateUIEvent, getUpdateInterval, 0}}, - {2820, {wxUpdateUIEvent, resetUpdateTime, 0}}, - {2821, {wxUpdateUIEvent, setMode, 1}}, - {2822, {wxUpdateUIEvent, setText, 1}}, - {2823, {wxUpdateUIEvent, setUpdateInterval, 1}}, - {2824, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, - {2825, {wxPaletteChangedEvent, setChangedWindow, 1}}, - {2826, {wxPaletteChangedEvent, getChangedWindow, 0}}, - {2827, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, - {2828, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, - {2829, {wxNavigationKeyEvent, getDirection, 0}}, - {2830, {wxNavigationKeyEvent, setDirection, 1}}, - {2831, {wxNavigationKeyEvent, isWindowChange, 0}}, - {2832, {wxNavigationKeyEvent, setWindowChange, 1}}, - {2833, {wxNavigationKeyEvent, isFromTab, 0}}, - {2834, {wxNavigationKeyEvent, setFromTab, 1}}, - {2835, {wxNavigationKeyEvent, getCurrentFocus, 0}}, - {2836, {wxNavigationKeyEvent, setCurrentFocus, 1}}, - {2837, {wxHelpEvent, getOrigin, 0}}, - {2838, {wxHelpEvent, getPosition, 0}}, - {2839, {wxHelpEvent, setOrigin, 1}}, - {2840, {wxHelpEvent, setPosition, 1}}, - {2841, {wxContextMenuEvent, getPosition, 0}}, - {2842, {wxContextMenuEvent, setPosition, 1}}, - {2843, {wxIdleEvent, canSend, 1}}, - {2844, {wxIdleEvent, getMode, 0}}, - {2845, {wxIdleEvent, requestMore, 1}}, - {2846, {wxIdleEvent, moreRequested, 0}}, - {2847, {wxIdleEvent, setMode, 1}}, - {2848, {wxGridEvent, altDown, 0}}, - {2849, {wxGridEvent, controlDown, 0}}, - {2850, {wxGridEvent, getCol, 0}}, - {2851, {wxGridEvent, getPosition, 0}}, - {2852, {wxGridEvent, getRow, 0}}, - {2853, {wxGridEvent, metaDown, 0}}, - {2854, {wxGridEvent, selecting, 0}}, - {2855, {wxGridEvent, shiftDown, 0}}, - {2856, {wxNotifyEvent, allow, 0}}, - {2857, {wxNotifyEvent, isAllowed, 0}}, - {2858, {wxNotifyEvent, veto, 0}}, - {2859, {wxSashEvent, getEdge, 0}}, - {2860, {wxSashEvent, getDragRect, 0}}, - {2861, {wxSashEvent, getDragStatus, 0}}, - {2862, {wxListEvent, getCacheFrom, 0}}, - {2863, {wxListEvent, getCacheTo, 0}}, - {2864, {wxListEvent, getKeyCode, 0}}, - {2865, {wxListEvent, getIndex, 0}}, - {2866, {wxListEvent, getColumn, 0}}, - {2867, {wxListEvent, getPoint, 0}}, - {2868, {wxListEvent, getLabel, 0}}, - {2869, {wxListEvent, getText, 0}}, - {2870, {wxListEvent, getImage, 0}}, - {2871, {wxListEvent, getData, 0}}, - {2872, {wxListEvent, getMask, 0}}, - {2873, {wxListEvent, getItem, 0}}, - {2874, {wxListEvent, isEditCancelled, 0}}, - {2875, {wxDateEvent, getDate, 0}}, - {2876, {wxCalendarEvent, getWeekDay, 0}}, - {2877, {wxFileDirPickerEvent, getPath, 0}}, - {2878, {wxColourPickerEvent, getColour, 0}}, - {2879, {wxFontPickerEvent, getFont, 0}}, - {2880, {wxStyledTextEvent, getPosition, 0}}, - {2881, {wxStyledTextEvent, getKey, 0}}, - {2882, {wxStyledTextEvent, getModifiers, 0}}, - {2883, {wxStyledTextEvent, getModificationType, 0}}, - {2884, {wxStyledTextEvent, getText, 0}}, - {2885, {wxStyledTextEvent, getLength, 0}}, - {2886, {wxStyledTextEvent, getLinesAdded, 0}}, - {2887, {wxStyledTextEvent, getLine, 0}}, - {2888, {wxStyledTextEvent, getFoldLevelNow, 0}}, - {2889, {wxStyledTextEvent, getFoldLevelPrev, 0}}, - {2890, {wxStyledTextEvent, getMargin, 0}}, - {2891, {wxStyledTextEvent, getMessage, 0}}, - {2892, {wxStyledTextEvent, getWParam, 0}}, - {2893, {wxStyledTextEvent, getLParam, 0}}, - {2894, {wxStyledTextEvent, getListType, 0}}, - {2895, {wxStyledTextEvent, getX, 0}}, - {2896, {wxStyledTextEvent, getY, 0}}, - {2897, {wxStyledTextEvent, getDragText, 0}}, - {2898, {wxStyledTextEvent, getDragAllowMove, 0}}, - {2899, {wxStyledTextEvent, getDragResult, 0}}, - {2900, {wxStyledTextEvent, getShift, 0}}, - {2901, {wxStyledTextEvent, getControl, 0}}, - {2902, {wxStyledTextEvent, getAlt, 0}}, - {2903, {utils, getKeyState, 1}}, - {2904, {utils, getMousePosition, 2}}, - {2905, {utils, getMouseState, 0}}, - {2906, {utils, setDetectableAutoRepeat, 1}}, - {2907, {utils, bell, 0}}, - {2908, {utils, findMenuItemId, 3}}, - {2909, {utils, genericFindWindowAtPoint, 1}}, - {2910, {utils, findWindowAtPoint, 1}}, - {2911, {utils, beginBusyCursor, 1}}, - {2912, {utils, endBusyCursor, 0}}, - {2913, {utils, isBusy, 0}}, - {2914, {utils, shutdown, 1}}, - {2915, {utils, shell, 1}}, - {2916, {utils, launchDefaultBrowser, 2}}, - {2917, {utils, getEmailAddress, 0}}, - {2918, {utils, getUserId, 0}}, - {2919, {utils, getHomeDir, 0}}, - {2920, {utils, newId, 0}}, - {2921, {utils, registerId, 1}}, - {2922, {utils, getCurrentId, 0}}, - {2923, {utils, getOsDescription, 0}}, - {2924, {utils, isPlatformLittleEndian, 0}}, - {2925, {utils, isPlatform64Bit, 0}}, - {2926, {wxPrintout, new, 1}}, - {2927, {wxPrintout, destruct, 0}}, - {2928, {wxPrintout, getDC, 0}}, - {2929, {wxPrintout, getPageSizeMM, 2}}, - {2930, {wxPrintout, getPageSizePixels, 2}}, - {2931, {wxPrintout, getPaperRectPixels, 0}}, - {2932, {wxPrintout, getPPIPrinter, 2}}, - {2933, {wxPrintout, getPPIScreen, 2}}, - {2934, {wxPrintout, getTitle, 0}}, - {2935, {wxPrintout, isPreview, 0}}, - {2936, {wxPrintout, fitThisSizeToPaper, 1}}, - {2937, {wxPrintout, fitThisSizeToPage, 1}}, - {2938, {wxPrintout, fitThisSizeToPageMargins, 2}}, - {2939, {wxPrintout, mapScreenSizeToPaper, 0}}, - {2940, {wxPrintout, mapScreenSizeToPage, 0}}, - {2941, {wxPrintout, mapScreenSizeToPageMargins, 1}}, - {2942, {wxPrintout, mapScreenSizeToDevice, 0}}, - {2943, {wxPrintout, getLogicalPaperRect, 0}}, - {2944, {wxPrintout, getLogicalPageRect, 0}}, - {2945, {wxPrintout, getLogicalPageMarginsRect, 1}}, - {2946, {wxPrintout, setLogicalOrigin, 2}}, - {2947, {wxPrintout, offsetLogicalOrigin, 2}}, - {2948, {wxStyledTextCtrl, new_2, 2}}, - {2949, {wxStyledTextCtrl, new_0, 0}}, - {2950, {wxStyledTextCtrl, destruct, 0}}, - {2951, {wxStyledTextCtrl, create, 2}}, - {2952, {wxStyledTextCtrl, addText, 1}}, - {2953, {wxStyledTextCtrl, addStyledText, 1}}, - {2954, {wxStyledTextCtrl, insertText, 2}}, - {2955, {wxStyledTextCtrl, clearAll, 0}}, - {2956, {wxStyledTextCtrl, clearDocumentStyle, 0}}, - {2957, {wxStyledTextCtrl, getLength, 0}}, - {2958, {wxStyledTextCtrl, getCharAt, 1}}, - {2959, {wxStyledTextCtrl, getCurrentPos, 0}}, - {2960, {wxStyledTextCtrl, getAnchor, 0}}, - {2961, {wxStyledTextCtrl, getStyleAt, 1}}, - {2962, {wxStyledTextCtrl, redo, 0}}, - {2963, {wxStyledTextCtrl, setUndoCollection, 1}}, - {2964, {wxStyledTextCtrl, selectAll, 0}}, - {2965, {wxStyledTextCtrl, setSavePoint, 0}}, - {2966, {wxStyledTextCtrl, getStyledText, 2}}, - {2967, {wxStyledTextCtrl, canRedo, 0}}, - {2968, {wxStyledTextCtrl, markerLineFromHandle, 1}}, - {2969, {wxStyledTextCtrl, markerDeleteHandle, 1}}, - {2970, {wxStyledTextCtrl, getUndoCollection, 0}}, - {2971, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, - {2972, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, - {2973, {wxStyledTextCtrl, positionFromPoint, 1}}, - {2974, {wxStyledTextCtrl, positionFromPointClose, 2}}, - {2975, {wxStyledTextCtrl, gotoLine, 1}}, - {2976, {wxStyledTextCtrl, gotoPos, 1}}, - {2977, {wxStyledTextCtrl, setAnchor, 1}}, - {2978, {wxStyledTextCtrl, getCurLine, 1}}, - {2979, {wxStyledTextCtrl, getEndStyled, 0}}, - {2980, {wxStyledTextCtrl, convertEOLs, 1}}, - {2981, {wxStyledTextCtrl, getEOLMode, 0}}, - {2982, {wxStyledTextCtrl, setEOLMode, 1}}, - {2983, {wxStyledTextCtrl, startStyling, 2}}, - {2984, {wxStyledTextCtrl, setStyling, 2}}, - {2985, {wxStyledTextCtrl, getBufferedDraw, 0}}, - {2986, {wxStyledTextCtrl, setBufferedDraw, 1}}, - {2987, {wxStyledTextCtrl, setTabWidth, 1}}, - {2988, {wxStyledTextCtrl, getTabWidth, 0}}, - {2989, {wxStyledTextCtrl, setCodePage, 1}}, - {2990, {wxStyledTextCtrl, markerDefine, 3}}, - {2991, {wxStyledTextCtrl, markerSetForeground, 2}}, - {2992, {wxStyledTextCtrl, markerSetBackground, 2}}, - {2993, {wxStyledTextCtrl, markerAdd, 2}}, - {2994, {wxStyledTextCtrl, markerDelete, 2}}, - {2995, {wxStyledTextCtrl, markerDeleteAll, 1}}, - {2996, {wxStyledTextCtrl, markerGet, 1}}, - {2997, {wxStyledTextCtrl, markerNext, 2}}, - {2998, {wxStyledTextCtrl, markerPrevious, 2}}, - {2999, {wxStyledTextCtrl, markerDefineBitmap, 2}}, - {3000, {wxStyledTextCtrl, markerAddSet, 2}}, - {3001, {wxStyledTextCtrl, markerSetAlpha, 2}}, - {3002, {wxStyledTextCtrl, setMarginType, 2}}, - {3003, {wxStyledTextCtrl, getMarginType, 1}}, - {3004, {wxStyledTextCtrl, setMarginWidth, 2}}, - {3005, {wxStyledTextCtrl, getMarginWidth, 1}}, - {3006, {wxStyledTextCtrl, setMarginMask, 2}}, - {3007, {wxStyledTextCtrl, getMarginMask, 1}}, - {3008, {wxStyledTextCtrl, setMarginSensitive, 2}}, - {3009, {wxStyledTextCtrl, getMarginSensitive, 1}}, - {3010, {wxStyledTextCtrl, styleClearAll, 0}}, - {3011, {wxStyledTextCtrl, styleSetForeground, 2}}, - {3012, {wxStyledTextCtrl, styleSetBackground, 2}}, - {3013, {wxStyledTextCtrl, styleSetBold, 2}}, - {3014, {wxStyledTextCtrl, styleSetItalic, 2}}, - {3015, {wxStyledTextCtrl, styleSetSize, 2}}, - {3016, {wxStyledTextCtrl, styleSetFaceName, 2}}, - {3017, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, - {3018, {wxStyledTextCtrl, styleResetDefault, 0}}, - {3019, {wxStyledTextCtrl, styleSetUnderline, 2}}, - {3020, {wxStyledTextCtrl, styleSetCase, 2}}, - {3021, {wxStyledTextCtrl, styleSetHotSpot, 2}}, - {3022, {wxStyledTextCtrl, setSelForeground, 2}}, - {3023, {wxStyledTextCtrl, setSelBackground, 2}}, - {3024, {wxStyledTextCtrl, getSelAlpha, 0}}, - {3025, {wxStyledTextCtrl, setSelAlpha, 1}}, - {3026, {wxStyledTextCtrl, setCaretForeground, 1}}, - {3027, {wxStyledTextCtrl, cmdKeyAssign, 3}}, - {3028, {wxStyledTextCtrl, cmdKeyClear, 2}}, - {3029, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, - {3030, {wxStyledTextCtrl, setStyleBytes, 2}}, - {3031, {wxStyledTextCtrl, styleSetVisible, 2}}, - {3032, {wxStyledTextCtrl, getCaretPeriod, 0}}, - {3033, {wxStyledTextCtrl, setCaretPeriod, 1}}, - {3034, {wxStyledTextCtrl, setWordChars, 1}}, - {3035, {wxStyledTextCtrl, beginUndoAction, 0}}, - {3036, {wxStyledTextCtrl, endUndoAction, 0}}, - {3037, {wxStyledTextCtrl, indicatorSetStyle, 2}}, - {3038, {wxStyledTextCtrl, indicatorGetStyle, 1}}, - {3039, {wxStyledTextCtrl, indicatorSetForeground, 2}}, - {3040, {wxStyledTextCtrl, indicatorGetForeground, 1}}, - {3041, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, - {3042, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, - {3043, {wxStyledTextCtrl, getStyleBits, 0}}, - {3044, {wxStyledTextCtrl, setLineState, 2}}, - {3045, {wxStyledTextCtrl, getLineState, 1}}, - {3046, {wxStyledTextCtrl, getMaxLineState, 0}}, - {3047, {wxStyledTextCtrl, getCaretLineVisible, 0}}, - {3048, {wxStyledTextCtrl, setCaretLineVisible, 1}}, - {3049, {wxStyledTextCtrl, getCaretLineBackground, 0}}, - {3050, {wxStyledTextCtrl, setCaretLineBackground, 1}}, - {3051, {wxStyledTextCtrl, autoCompShow, 2}}, - {3052, {wxStyledTextCtrl, autoCompCancel, 0}}, - {3053, {wxStyledTextCtrl, autoCompActive, 0}}, - {3054, {wxStyledTextCtrl, autoCompPosStart, 0}}, - {3055, {wxStyledTextCtrl, autoCompComplete, 0}}, - {3056, {wxStyledTextCtrl, autoCompStops, 1}}, - {3057, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, - {3058, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, - {3059, {wxStyledTextCtrl, autoCompSelect, 1}}, - {3060, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, - {3061, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, - {3062, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, - {3063, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, - {3064, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, - {3065, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, - {3066, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, - {3067, {wxStyledTextCtrl, userListShow, 2}}, - {3068, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, - {3069, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, - {3070, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, - {3071, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, - {3072, {wxStyledTextCtrl, registerImage, 2}}, - {3073, {wxStyledTextCtrl, clearRegisteredImages, 0}}, - {3074, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, - {3075, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, - {3076, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, - {3077, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, - {3078, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, - {3079, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, - {3080, {wxStyledTextCtrl, setIndent, 1}}, - {3081, {wxStyledTextCtrl, getIndent, 0}}, - {3082, {wxStyledTextCtrl, setUseTabs, 1}}, - {3083, {wxStyledTextCtrl, getUseTabs, 0}}, - {3084, {wxStyledTextCtrl, setLineIndentation, 2}}, - {3085, {wxStyledTextCtrl, getLineIndentation, 1}}, - {3086, {wxStyledTextCtrl, getLineIndentPosition, 1}}, - {3087, {wxStyledTextCtrl, getColumn, 1}}, - {3088, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, - {3089, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, - {3090, {wxStyledTextCtrl, setIndentationGuides, 1}}, - {3091, {wxStyledTextCtrl, getIndentationGuides, 0}}, - {3092, {wxStyledTextCtrl, setHighlightGuide, 1}}, - {3093, {wxStyledTextCtrl, getHighlightGuide, 0}}, - {3094, {wxStyledTextCtrl, getLineEndPosition, 1}}, - {3095, {wxStyledTextCtrl, getCodePage, 0}}, - {3096, {wxStyledTextCtrl, getCaretForeground, 0}}, - {3097, {wxStyledTextCtrl, getReadOnly, 0}}, - {3098, {wxStyledTextCtrl, setCurrentPos, 1}}, - {3099, {wxStyledTextCtrl, setSelectionStart, 1}}, - {3100, {wxStyledTextCtrl, getSelectionStart, 0}}, - {3101, {wxStyledTextCtrl, setSelectionEnd, 1}}, - {3102, {wxStyledTextCtrl, getSelectionEnd, 0}}, - {3103, {wxStyledTextCtrl, setPrintMagnification, 1}}, - {3104, {wxStyledTextCtrl, getPrintMagnification, 0}}, - {3105, {wxStyledTextCtrl, setPrintColourMode, 1}}, - {3106, {wxStyledTextCtrl, getPrintColourMode, 0}}, - {3107, {wxStyledTextCtrl, findText, 4}}, - {3108, {wxStyledTextCtrl, formatRange, 7}}, - {3109, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, - {3110, {wxStyledTextCtrl, getLine, 1}}, - {3111, {wxStyledTextCtrl, getLineCount, 0}}, - {3112, {wxStyledTextCtrl, setMarginLeft, 1}}, - {3113, {wxStyledTextCtrl, getMarginLeft, 0}}, - {3114, {wxStyledTextCtrl, setMarginRight, 1}}, - {3115, {wxStyledTextCtrl, getMarginRight, 0}}, - {3116, {wxStyledTextCtrl, getModify, 0}}, - {3117, {wxStyledTextCtrl, setSelection, 2}}, - {3118, {wxStyledTextCtrl, getSelectedText, 0}}, - {3119, {wxStyledTextCtrl, getTextRange, 2}}, - {3120, {wxStyledTextCtrl, hideSelection, 1}}, - {3121, {wxStyledTextCtrl, lineFromPosition, 1}}, - {3122, {wxStyledTextCtrl, positionFromLine, 1}}, - {3123, {wxStyledTextCtrl, lineScroll, 2}}, - {3124, {wxStyledTextCtrl, ensureCaretVisible, 0}}, - {3125, {wxStyledTextCtrl, replaceSelection, 1}}, - {3126, {wxStyledTextCtrl, setReadOnly, 1}}, - {3127, {wxStyledTextCtrl, canPaste, 0}}, - {3128, {wxStyledTextCtrl, canUndo, 0}}, - {3129, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, - {3130, {wxStyledTextCtrl, undo, 0}}, - {3131, {wxStyledTextCtrl, cut, 0}}, - {3132, {wxStyledTextCtrl, copy, 0}}, - {3133, {wxStyledTextCtrl, paste, 0}}, - {3134, {wxStyledTextCtrl, clear, 0}}, - {3135, {wxStyledTextCtrl, setText, 1}}, - {3136, {wxStyledTextCtrl, getText, 0}}, - {3137, {wxStyledTextCtrl, getTextLength, 0}}, - {3138, {wxStyledTextCtrl, getOvertype, 0}}, - {3139, {wxStyledTextCtrl, setCaretWidth, 1}}, - {3140, {wxStyledTextCtrl, getCaretWidth, 0}}, - {3141, {wxStyledTextCtrl, setTargetStart, 1}}, - {3142, {wxStyledTextCtrl, getTargetStart, 0}}, - {3143, {wxStyledTextCtrl, setTargetEnd, 1}}, - {3144, {wxStyledTextCtrl, getTargetEnd, 0}}, - {3145, {wxStyledTextCtrl, replaceTarget, 1}}, - {3146, {wxStyledTextCtrl, searchInTarget, 1}}, - {3147, {wxStyledTextCtrl, setSearchFlags, 1}}, - {3148, {wxStyledTextCtrl, getSearchFlags, 0}}, - {3149, {wxStyledTextCtrl, callTipShow, 2}}, - {3150, {wxStyledTextCtrl, callTipCancel, 0}}, - {3151, {wxStyledTextCtrl, callTipActive, 0}}, - {3152, {wxStyledTextCtrl, callTipPosAtStart, 0}}, - {3153, {wxStyledTextCtrl, callTipSetHighlight, 2}}, - {3154, {wxStyledTextCtrl, callTipSetBackground, 1}}, - {3155, {wxStyledTextCtrl, callTipSetForeground, 1}}, - {3156, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, - {3157, {wxStyledTextCtrl, callTipUseStyle, 1}}, - {3158, {wxStyledTextCtrl, visibleFromDocLine, 1}}, - {3159, {wxStyledTextCtrl, docLineFromVisible, 1}}, - {3160, {wxStyledTextCtrl, wrapCount, 1}}, - {3161, {wxStyledTextCtrl, setFoldLevel, 2}}, - {3162, {wxStyledTextCtrl, getFoldLevel, 1}}, - {3163, {wxStyledTextCtrl, getLastChild, 2}}, - {3164, {wxStyledTextCtrl, getFoldParent, 1}}, - {3165, {wxStyledTextCtrl, showLines, 2}}, - {3166, {wxStyledTextCtrl, hideLines, 2}}, - {3167, {wxStyledTextCtrl, getLineVisible, 1}}, - {3168, {wxStyledTextCtrl, setFoldExpanded, 2}}, - {3169, {wxStyledTextCtrl, getFoldExpanded, 1}}, - {3170, {wxStyledTextCtrl, toggleFold, 1}}, - {3171, {wxStyledTextCtrl, ensureVisible, 1}}, - {3172, {wxStyledTextCtrl, setFoldFlags, 1}}, - {3173, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, - {3174, {wxStyledTextCtrl, setTabIndents, 1}}, - {3175, {wxStyledTextCtrl, getTabIndents, 0}}, - {3176, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, - {3177, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, - {3178, {wxStyledTextCtrl, setMouseDwellTime, 1}}, - {3179, {wxStyledTextCtrl, getMouseDwellTime, 0}}, - {3180, {wxStyledTextCtrl, wordStartPosition, 2}}, - {3181, {wxStyledTextCtrl, wordEndPosition, 2}}, - {3182, {wxStyledTextCtrl, setWrapMode, 1}}, - {3183, {wxStyledTextCtrl, getWrapMode, 0}}, - {3184, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, - {3185, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, - {3186, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, - {3187, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, - {3188, {wxStyledTextCtrl, setWrapStartIndent, 1}}, - {3189, {wxStyledTextCtrl, getWrapStartIndent, 0}}, - {3190, {wxStyledTextCtrl, setLayoutCache, 1}}, - {3191, {wxStyledTextCtrl, getLayoutCache, 0}}, - {3192, {wxStyledTextCtrl, setScrollWidth, 1}}, - {3193, {wxStyledTextCtrl, getScrollWidth, 0}}, - {3194, {wxStyledTextCtrl, textWidth, 2}}, - {3195, {wxStyledTextCtrl, getEndAtLastLine, 0}}, - {3196, {wxStyledTextCtrl, textHeight, 1}}, - {3197, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, - {3198, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, - {3199, {wxStyledTextCtrl, appendText, 1}}, - {3200, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, - {3201, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, - {3202, {wxStyledTextCtrl, targetFromSelection, 0}}, - {3203, {wxStyledTextCtrl, linesJoin, 0}}, - {3204, {wxStyledTextCtrl, linesSplit, 1}}, - {3205, {wxStyledTextCtrl, setFoldMarginColour, 2}}, - {3206, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, - {3207, {wxStyledTextCtrl, lineDown, 0}}, - {3208, {wxStyledTextCtrl, lineDownExtend, 0}}, - {3209, {wxStyledTextCtrl, lineUp, 0}}, - {3210, {wxStyledTextCtrl, lineUpExtend, 0}}, - {3211, {wxStyledTextCtrl, charLeft, 0}}, - {3212, {wxStyledTextCtrl, charLeftExtend, 0}}, - {3213, {wxStyledTextCtrl, charRight, 0}}, - {3214, {wxStyledTextCtrl, charRightExtend, 0}}, - {3215, {wxStyledTextCtrl, wordLeft, 0}}, - {3216, {wxStyledTextCtrl, wordLeftExtend, 0}}, - {3217, {wxStyledTextCtrl, wordRight, 0}}, - {3218, {wxStyledTextCtrl, wordRightExtend, 0}}, - {3219, {wxStyledTextCtrl, home, 0}}, - {3220, {wxStyledTextCtrl, homeExtend, 0}}, - {3221, {wxStyledTextCtrl, lineEnd, 0}}, - {3222, {wxStyledTextCtrl, lineEndExtend, 0}}, - {3223, {wxStyledTextCtrl, documentStart, 0}}, - {3224, {wxStyledTextCtrl, documentStartExtend, 0}}, - {3225, {wxStyledTextCtrl, documentEnd, 0}}, - {3226, {wxStyledTextCtrl, documentEndExtend, 0}}, - {3227, {wxStyledTextCtrl, pageUp, 0}}, - {3228, {wxStyledTextCtrl, pageUpExtend, 0}}, - {3229, {wxStyledTextCtrl, pageDown, 0}}, - {3230, {wxStyledTextCtrl, pageDownExtend, 0}}, - {3231, {wxStyledTextCtrl, editToggleOvertype, 0}}, - {3232, {wxStyledTextCtrl, cancel, 0}}, - {3233, {wxStyledTextCtrl, deleteBack, 0}}, - {3234, {wxStyledTextCtrl, tab, 0}}, - {3235, {wxStyledTextCtrl, backTab, 0}}, - {3236, {wxStyledTextCtrl, newLine, 0}}, - {3237, {wxStyledTextCtrl, formFeed, 0}}, - {3238, {wxStyledTextCtrl, vCHome, 0}}, - {3239, {wxStyledTextCtrl, vCHomeExtend, 0}}, - {3240, {wxStyledTextCtrl, zoomIn, 0}}, - {3241, {wxStyledTextCtrl, zoomOut, 0}}, - {3242, {wxStyledTextCtrl, delWordLeft, 0}}, - {3243, {wxStyledTextCtrl, delWordRight, 0}}, - {3244, {wxStyledTextCtrl, lineCut, 0}}, - {3245, {wxStyledTextCtrl, lineDelete, 0}}, - {3246, {wxStyledTextCtrl, lineTranspose, 0}}, - {3247, {wxStyledTextCtrl, lineDuplicate, 0}}, - {3248, {wxStyledTextCtrl, lowerCase, 0}}, - {3249, {wxStyledTextCtrl, upperCase, 0}}, - {3250, {wxStyledTextCtrl, lineScrollDown, 0}}, - {3251, {wxStyledTextCtrl, lineScrollUp, 0}}, - {3252, {wxStyledTextCtrl, deleteBackNotLine, 0}}, - {3253, {wxStyledTextCtrl, homeDisplay, 0}}, - {3254, {wxStyledTextCtrl, homeDisplayExtend, 0}}, - {3255, {wxStyledTextCtrl, lineEndDisplay, 0}}, - {3256, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, - {3257, {wxStyledTextCtrl, homeWrapExtend, 0}}, - {3258, {wxStyledTextCtrl, lineEndWrap, 0}}, - {3259, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, - {3260, {wxStyledTextCtrl, vCHomeWrap, 0}}, - {3261, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, - {3262, {wxStyledTextCtrl, lineCopy, 0}}, - {3263, {wxStyledTextCtrl, moveCaretInsideView, 0}}, - {3264, {wxStyledTextCtrl, lineLength, 1}}, - {3265, {wxStyledTextCtrl, braceHighlight, 2}}, - {3266, {wxStyledTextCtrl, braceBadLight, 1}}, - {3267, {wxStyledTextCtrl, braceMatch, 1}}, - {3268, {wxStyledTextCtrl, getViewEOL, 0}}, - {3269, {wxStyledTextCtrl, setViewEOL, 1}}, - {3270, {wxStyledTextCtrl, setModEventMask, 1}}, - {3271, {wxStyledTextCtrl, getEdgeColumn, 0}}, - {3272, {wxStyledTextCtrl, setEdgeColumn, 1}}, - {3273, {wxStyledTextCtrl, setEdgeMode, 1}}, - {3274, {wxStyledTextCtrl, getEdgeMode, 0}}, - {3275, {wxStyledTextCtrl, getEdgeColour, 0}}, - {3276, {wxStyledTextCtrl, setEdgeColour, 1}}, - {3277, {wxStyledTextCtrl, searchAnchor, 0}}, - {3278, {wxStyledTextCtrl, searchNext, 2}}, - {3279, {wxStyledTextCtrl, searchPrev, 2}}, - {3280, {wxStyledTextCtrl, linesOnScreen, 0}}, - {3281, {wxStyledTextCtrl, usePopUp, 1}}, - {3282, {wxStyledTextCtrl, selectionIsRectangle, 0}}, - {3283, {wxStyledTextCtrl, setZoom, 1}}, - {3284, {wxStyledTextCtrl, getZoom, 0}}, - {3285, {wxStyledTextCtrl, getModEventMask, 0}}, - {3286, {wxStyledTextCtrl, setSTCFocus, 1}}, - {3287, {wxStyledTextCtrl, getSTCFocus, 0}}, - {3288, {wxStyledTextCtrl, setStatus, 1}}, - {3289, {wxStyledTextCtrl, getStatus, 0}}, - {3290, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, - {3291, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, - {3292, {wxStyledTextCtrl, setSTCCursor, 1}}, - {3293, {wxStyledTextCtrl, getSTCCursor, 0}}, - {3294, {wxStyledTextCtrl, setControlCharSymbol, 1}}, - {3295, {wxStyledTextCtrl, getControlCharSymbol, 0}}, - {3296, {wxStyledTextCtrl, wordPartLeft, 0}}, - {3297, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, - {3298, {wxStyledTextCtrl, wordPartRight, 0}}, - {3299, {wxStyledTextCtrl, wordPartRightExtend, 0}}, - {3300, {wxStyledTextCtrl, setVisiblePolicy, 2}}, - {3301, {wxStyledTextCtrl, delLineLeft, 0}}, - {3302, {wxStyledTextCtrl, delLineRight, 0}}, - {3303, {wxStyledTextCtrl, getXOffset, 0}}, - {3304, {wxStyledTextCtrl, chooseCaretX, 0}}, - {3305, {wxStyledTextCtrl, setXCaretPolicy, 2}}, - {3306, {wxStyledTextCtrl, setYCaretPolicy, 2}}, - {3307, {wxStyledTextCtrl, getPrintWrapMode, 0}}, - {3308, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, - {3309, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, - {3310, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, - {3311, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, - {3312, {wxStyledTextCtrl, paraDownExtend, 0}}, - {3313, {wxStyledTextCtrl, paraUp, 0}}, - {3314, {wxStyledTextCtrl, paraUpExtend, 0}}, - {3315, {wxStyledTextCtrl, positionBefore, 1}}, - {3316, {wxStyledTextCtrl, positionAfter, 1}}, - {3317, {wxStyledTextCtrl, copyRange, 2}}, - {3318, {wxStyledTextCtrl, copyText, 2}}, - {3319, {wxStyledTextCtrl, setSelectionMode, 1}}, - {3320, {wxStyledTextCtrl, getSelectionMode, 0}}, - {3321, {wxStyledTextCtrl, lineDownRectExtend, 0}}, - {3322, {wxStyledTextCtrl, lineUpRectExtend, 0}}, - {3323, {wxStyledTextCtrl, charLeftRectExtend, 0}}, - {3324, {wxStyledTextCtrl, charRightRectExtend, 0}}, - {3325, {wxStyledTextCtrl, homeRectExtend, 0}}, - {3326, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, - {3327, {wxStyledTextCtrl, lineEndRectExtend, 0}}, - {3328, {wxStyledTextCtrl, pageUpRectExtend, 0}}, - {3329, {wxStyledTextCtrl, pageDownRectExtend, 0}}, - {3330, {wxStyledTextCtrl, stutteredPageUp, 0}}, - {3331, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, - {3332, {wxStyledTextCtrl, stutteredPageDown, 0}}, - {3333, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, - {3334, {wxStyledTextCtrl, wordLeftEnd, 0}}, - {3335, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, - {3336, {wxStyledTextCtrl, wordRightEnd, 0}}, - {3337, {wxStyledTextCtrl, wordRightEndExtend, 0}}, - {3338, {wxStyledTextCtrl, setWhitespaceChars, 1}}, - {3339, {wxStyledTextCtrl, setCharsDefault, 0}}, - {3340, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, - {3341, {wxStyledTextCtrl, allocate, 1}}, - {3342, {wxStyledTextCtrl, findColumn, 2}}, - {3343, {wxStyledTextCtrl, getCaretSticky, 0}}, - {3344, {wxStyledTextCtrl, setCaretSticky, 1}}, - {3345, {wxStyledTextCtrl, toggleCaretSticky, 0}}, - {3346, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, - {3347, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, - {3348, {wxStyledTextCtrl, selectionDuplicate, 0}}, - {3349, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, - {3350, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, - {3351, {wxStyledTextCtrl, startRecord, 0}}, - {3352, {wxStyledTextCtrl, stopRecord, 0}}, - {3353, {wxStyledTextCtrl, setLexer, 1}}, - {3354, {wxStyledTextCtrl, getLexer, 0}}, - {3355, {wxStyledTextCtrl, colourise, 2}}, - {3356, {wxStyledTextCtrl, setProperty, 2}}, - {3357, {wxStyledTextCtrl, setKeyWords, 2}}, - {3358, {wxStyledTextCtrl, setLexerLanguage, 1}}, - {3359, {wxStyledTextCtrl, getProperty, 1}}, - {3360, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, - {3361, {wxStyledTextCtrl, getCurrentLine, 0}}, - {3362, {wxStyledTextCtrl, styleSetSpec, 2}}, - {3363, {wxStyledTextCtrl, styleSetFont, 2}}, - {3364, {wxStyledTextCtrl, styleSetFontAttr, 7}}, - {3365, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, - {3366, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, - {3367, {wxStyledTextCtrl, cmdKeyExecute, 1}}, - {3368, {wxStyledTextCtrl, setMargins, 2}}, - {3369, {wxStyledTextCtrl, getSelection, 2}}, - {3370, {wxStyledTextCtrl, pointFromPosition, 1}}, - {3371, {wxStyledTextCtrl, scrollToLine, 1}}, - {3372, {wxStyledTextCtrl, scrollToColumn, 1}}, - {3373, {wxStyledTextCtrl, setVScrollBar, 1}}, - {3374, {wxStyledTextCtrl, setHScrollBar, 1}}, - {3375, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, - {3376, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, - {3377, {wxStyledTextCtrl, saveFile, 1}}, - {3378, {wxStyledTextCtrl, loadFile, 1}}, - {3379, {wxStyledTextCtrl, doDragOver, 3}}, - {3380, {wxStyledTextCtrl, doDropText, 3}}, - {3381, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, - {3382, {wxStyledTextCtrl, addTextRaw, 1}}, - {3383, {wxStyledTextCtrl, insertTextRaw, 2}}, - {3384, {wxStyledTextCtrl, getCurLineRaw, 1}}, - {3385, {wxStyledTextCtrl, getLineRaw, 1}}, - {3386, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, - {3387, {wxStyledTextCtrl, getTextRangeRaw, 2}}, - {3388, {wxStyledTextCtrl, setTextRaw, 1}}, - {3389, {wxStyledTextCtrl, getTextRaw, 0}}, - {3390, {wxStyledTextCtrl, appendTextRaw, 1}}, - {3391, {wxArtProvider, getBitmap, 2}}, - {3392, {wxArtProvider, getIcon, 2}}, - {3393, {wxTreeEvent, getKeyCode, 0}}, - {3394, {wxTreeEvent, getItem, 0}}, - {3395, {wxTreeEvent, getKeyEvent, 0}}, - {3396, {wxTreeEvent, getLabel, 0}}, - {3397, {wxTreeEvent, getOldItem, 0}}, - {3398, {wxTreeEvent, getPoint, 0}}, - {3399, {wxTreeEvent, isEditCancelled, 0}}, - {3400, {wxTreeEvent, setToolTip, 1}}, - {3401, {wxNotebookEvent, getOldSelection, 0}}, - {3402, {wxNotebookEvent, getSelection, 0}}, - {3403, {wxNotebookEvent, setOldSelection, 1}}, - {3404, {wxNotebookEvent, setSelection, 1}}, - {3405, {wxFileDataObject, new, 0}}, - {3406, {wxFileDataObject, addFile, 1}}, - {3407, {wxFileDataObject, getFilenames, 0}}, - {3408, {wxFileDataObject, 'Destroy', undefined}}, - {3409, {wxTextDataObject, new, 1}}, - {3410, {wxTextDataObject, getTextLength, 0}}, - {3411, {wxTextDataObject, getText, 0}}, - {3412, {wxTextDataObject, setText, 1}}, - {3413, {wxTextDataObject, 'Destroy', undefined}}, - {3414, {wxBitmapDataObject, new_1_1, 1}}, - {3415, {wxBitmapDataObject, new_1_0, 1}}, - {3416, {wxBitmapDataObject, getBitmap, 0}}, - {3417, {wxBitmapDataObject, setBitmap, 1}}, - {3418, {wxBitmapDataObject, 'Destroy', undefined}}, - {3420, {wxClipboard, new, 0}}, - {3421, {wxClipboard, destruct, 0}}, - {3422, {wxClipboard, addData, 1}}, - {3423, {wxClipboard, clear, 0}}, - {3424, {wxClipboard, close, 0}}, - {3425, {wxClipboard, flush, 0}}, - {3426, {wxClipboard, getData, 1}}, - {3427, {wxClipboard, isOpened, 0}}, - {3428, {wxClipboard, open, 0}}, - {3429, {wxClipboard, setData, 1}}, - {3431, {wxClipboard, usePrimarySelection, 1}}, - {3432, {wxClipboard, isSupported, 1}}, - {3433, {wxClipboard, get, 0}}, - {3434, {wxSpinEvent, getPosition, 0}}, - {3435, {wxSpinEvent, setPosition, 1}}, - {3436, {wxSplitterWindow, new_0, 0}}, - {3437, {wxSplitterWindow, new_2, 2}}, - {3438, {wxSplitterWindow, destruct, 0}}, - {3439, {wxSplitterWindow, create, 2}}, - {3440, {wxSplitterWindow, getMinimumPaneSize, 0}}, - {3441, {wxSplitterWindow, getSashGravity, 0}}, - {3442, {wxSplitterWindow, getSashPosition, 0}}, - {3443, {wxSplitterWindow, getSplitMode, 0}}, - {3444, {wxSplitterWindow, getWindow1, 0}}, - {3445, {wxSplitterWindow, getWindow2, 0}}, - {3446, {wxSplitterWindow, initialize, 1}}, - {3447, {wxSplitterWindow, isSplit, 0}}, - {3448, {wxSplitterWindow, replaceWindow, 2}}, - {3449, {wxSplitterWindow, setSashGravity, 1}}, - {3450, {wxSplitterWindow, setSashPosition, 2}}, - {3451, {wxSplitterWindow, setSashSize, 1}}, - {3452, {wxSplitterWindow, setMinimumPaneSize, 1}}, - {3453, {wxSplitterWindow, setSplitMode, 1}}, - {3454, {wxSplitterWindow, splitHorizontally, 3}}, - {3455, {wxSplitterWindow, splitVertically, 3}}, - {3456, {wxSplitterWindow, unsplit, 1}}, - {3457, {wxSplitterWindow, updateSize, 0}}, - {3458, {wxSplitterEvent, getSashPosition, 0}}, - {3459, {wxSplitterEvent, getX, 0}}, - {3460, {wxSplitterEvent, getY, 0}}, - {3461, {wxSplitterEvent, getWindowBeingRemoved, 0}}, - {3462, {wxSplitterEvent, setSashPosition, 1}}, - {3463, {wxHtmlWindow, new_0, 0}}, - {3464, {wxHtmlWindow, new_2, 2}}, - {3465, {wxHtmlWindow, appendToPage, 1}}, - {3466, {wxHtmlWindow, getOpenedAnchor, 0}}, - {3467, {wxHtmlWindow, getOpenedPage, 0}}, - {3468, {wxHtmlWindow, getOpenedPageTitle, 0}}, - {3469, {wxHtmlWindow, getRelatedFrame, 0}}, - {3470, {wxHtmlWindow, historyBack, 0}}, - {3471, {wxHtmlWindow, historyCanBack, 0}}, - {3472, {wxHtmlWindow, historyCanForward, 0}}, - {3473, {wxHtmlWindow, historyClear, 0}}, - {3474, {wxHtmlWindow, historyForward, 0}}, - {3475, {wxHtmlWindow, loadFile, 1}}, - {3476, {wxHtmlWindow, loadPage, 1}}, - {3477, {wxHtmlWindow, selectAll, 0}}, - {3478, {wxHtmlWindow, selectionToText, 0}}, - {3479, {wxHtmlWindow, selectLine, 1}}, - {3480, {wxHtmlWindow, selectWord, 1}}, - {3481, {wxHtmlWindow, setBorders, 1}}, - {3482, {wxHtmlWindow, setFonts, 3}}, - {3483, {wxHtmlWindow, setPage, 1}}, - {3484, {wxHtmlWindow, setRelatedFrame, 2}}, - {3485, {wxHtmlWindow, setRelatedStatusBar, 1}}, - {3486, {wxHtmlWindow, toText, 0}}, - {3487, {wxHtmlWindow, 'Destroy', undefined}}, - {3488, {wxHtmlLinkEvent, getLinkInfo, 0}}, - {3489, {wxSystemSettings, getColour, 1}}, - {3490, {wxSystemSettings, getFont, 1}}, - {3491, {wxSystemSettings, getMetric, 2}}, - {3492, {wxSystemSettings, getScreenType, 0}}, - {3493, {wxSystemOptions, getOption, 1}}, - {3494, {wxSystemOptions, getOptionInt, 1}}, - {3495, {wxSystemOptions, hasOption, 1}}, - {3496, {wxSystemOptions, isFalse, 1}}, - {3497, {wxSystemOptions, setOption_2_1, 2}}, - {3498, {wxSystemOptions, setOption_2_0, 2}}, - {3499, {wxAuiNotebookEvent, setSelection, 1}}, - {3500, {wxAuiNotebookEvent, getSelection, 0}}, - {3501, {wxAuiNotebookEvent, setOldSelection, 1}}, - {3502, {wxAuiNotebookEvent, getOldSelection, 0}}, - {3503, {wxAuiNotebookEvent, setDragSource, 1}}, - {3504, {wxAuiNotebookEvent, getDragSource, 0}}, - {3505, {wxAuiManagerEvent, setManager, 1}}, - {3506, {wxAuiManagerEvent, getManager, 0}}, - {3507, {wxAuiManagerEvent, setPane, 1}}, - {3508, {wxAuiManagerEvent, getPane, 0}}, - {3509, {wxAuiManagerEvent, setButton, 1}}, - {3510, {wxAuiManagerEvent, getButton, 0}}, - {3511, {wxAuiManagerEvent, setDC, 1}}, - {3512, {wxAuiManagerEvent, getDC, 0}}, - {3513, {wxAuiManagerEvent, veto, 1}}, - {3514, {wxAuiManagerEvent, getVeto, 0}}, - {3515, {wxAuiManagerEvent, setCanVeto, 1}}, - {3516, {wxAuiManagerEvent, canVeto, 0}}, - {3517, {wxLogNull, new, 0}}, - {3518, {wxLogNull, 'Destroy', undefined}}, - {3519, {wxTaskBarIcon, new, 0}}, - {3520, {wxTaskBarIcon, destruct, 0}}, - {3521, {wxTaskBarIcon, popupMenu, 1}}, - {3522, {wxTaskBarIcon, removeIcon, 0}}, - {3523, {wxTaskBarIcon, setIcon, 2}}, + {2061, {wxTreeCtrl, isTreeItemIdOk, 1}}, + {2062, {wxTreeCtrl, prependItem, 3}}, + {2063, {wxTreeCtrl, scrollTo, 1}}, + {2064, {wxTreeCtrl, selectItem_1, 1}}, + {2065, {wxTreeCtrl, selectItem_2, 2}}, + {2066, {wxTreeCtrl, setIndent, 1}}, + {2067, {wxTreeCtrl, setImageList, 1}}, + {2068, {wxTreeCtrl, setItemBackgroundColour, 2}}, + {2069, {wxTreeCtrl, setItemBold, 2}}, + {2070, {wxTreeCtrl, setItemData, 2}}, + {2071, {wxTreeCtrl, setItemDropHighlight, 2}}, + {2072, {wxTreeCtrl, setItemFont, 2}}, + {2073, {wxTreeCtrl, setItemHasChildren, 2}}, + {2074, {wxTreeCtrl, setItemImage_2, 2}}, + {2075, {wxTreeCtrl, setItemImage_3, 3}}, + {2076, {wxTreeCtrl, setItemText, 2}}, + {2077, {wxTreeCtrl, setItemTextColour, 2}}, + {2078, {wxTreeCtrl, setStateImageList, 1}}, + {2079, {wxTreeCtrl, setWindowStyle, 1}}, + {2080, {wxTreeCtrl, sortChildren, 1}}, + {2081, {wxTreeCtrl, toggle, 1}}, + {2082, {wxTreeCtrl, toggleItemSelection, 1}}, + {2083, {wxTreeCtrl, unselect, 0}}, + {2084, {wxTreeCtrl, unselectAll, 0}}, + {2085, {wxTreeCtrl, unselectItem, 1}}, + {2086, {wxScrollBar, new_0, 0}}, + {2087, {wxScrollBar, new_3, 3}}, + {2088, {wxScrollBar, destruct, 0}}, + {2089, {wxScrollBar, create, 3}}, + {2090, {wxScrollBar, getRange, 0}}, + {2091, {wxScrollBar, getPageSize, 0}}, + {2092, {wxScrollBar, getThumbPosition, 0}}, + {2093, {wxScrollBar, getThumbSize, 0}}, + {2094, {wxScrollBar, setThumbPosition, 1}}, + {2095, {wxScrollBar, setScrollbar, 5}}, + {2097, {wxSpinButton, new_2, 2}}, + {2098, {wxSpinButton, new_0, 0}}, + {2099, {wxSpinButton, create, 2}}, + {2100, {wxSpinButton, getMax, 0}}, + {2101, {wxSpinButton, getMin, 0}}, + {2102, {wxSpinButton, getValue, 0}}, + {2103, {wxSpinButton, setRange, 2}}, + {2104, {wxSpinButton, setValue, 1}}, + {2105, {wxSpinButton, 'Destroy', undefined}}, + {2106, {wxSpinCtrl, new_0, 0}}, + {2107, {wxSpinCtrl, new_2, 2}}, + {2109, {wxSpinCtrl, create, 2}}, + {2112, {wxSpinCtrl, setValue_1_1, 1}}, + {2113, {wxSpinCtrl, setValue_1_0, 1}}, + {2115, {wxSpinCtrl, getValue, 0}}, + {2117, {wxSpinCtrl, setRange, 2}}, + {2118, {wxSpinCtrl, setSelection, 2}}, + {2120, {wxSpinCtrl, getMin, 0}}, + {2122, {wxSpinCtrl, getMax, 0}}, + {2123, {wxSpinCtrl, 'Destroy', undefined}}, + {2124, {wxStaticText, new_0, 0}}, + {2125, {wxStaticText, new_4, 4}}, + {2126, {wxStaticText, create, 4}}, + {2127, {wxStaticText, getLabel, 0}}, + {2128, {wxStaticText, setLabel, 1}}, + {2129, {wxStaticText, wrap, 1}}, + {2130, {wxStaticText, 'Destroy', undefined}}, + {2131, {wxStaticBitmap, new_0, 0}}, + {2132, {wxStaticBitmap, new_4, 4}}, + {2133, {wxStaticBitmap, create, 4}}, + {2134, {wxStaticBitmap, getBitmap, 0}}, + {2135, {wxStaticBitmap, setBitmap, 1}}, + {2136, {wxStaticBitmap, 'Destroy', undefined}}, + {2137, {wxRadioBox, new, 7}}, + {2139, {wxRadioBox, destruct, 0}}, + {2140, {wxRadioBox, create, 7}}, + {2141, {wxRadioBox, enable_2, 2}}, + {2142, {wxRadioBox, enable_1, 1}}, + {2143, {wxRadioBox, getSelection, 0}}, + {2144, {wxRadioBox, getString, 1}}, + {2145, {wxRadioBox, setSelection, 1}}, + {2146, {wxRadioBox, show_2, 2}}, + {2147, {wxRadioBox, show_1, 1}}, + {2148, {wxRadioBox, getColumnCount, 0}}, + {2149, {wxRadioBox, getItemHelpText, 1}}, + {2150, {wxRadioBox, getItemToolTip, 1}}, + {2152, {wxRadioBox, getItemFromPoint, 1}}, + {2153, {wxRadioBox, getRowCount, 0}}, + {2154, {wxRadioBox, isItemEnabled, 1}}, + {2155, {wxRadioBox, isItemShown, 1}}, + {2156, {wxRadioBox, setItemHelpText, 2}}, + {2157, {wxRadioBox, setItemToolTip, 2}}, + {2158, {wxRadioButton, new_0, 0}}, + {2159, {wxRadioButton, new_4, 4}}, + {2160, {wxRadioButton, create, 4}}, + {2161, {wxRadioButton, getValue, 0}}, + {2162, {wxRadioButton, setValue, 1}}, + {2163, {wxRadioButton, 'Destroy', undefined}}, + {2165, {wxSlider, new_6, 6}}, + {2166, {wxSlider, new_0, 0}}, + {2167, {wxSlider, create, 6}}, + {2168, {wxSlider, getLineSize, 0}}, + {2169, {wxSlider, getMax, 0}}, + {2170, {wxSlider, getMin, 0}}, + {2171, {wxSlider, getPageSize, 0}}, + {2172, {wxSlider, getThumbLength, 0}}, + {2173, {wxSlider, getValue, 0}}, + {2174, {wxSlider, setLineSize, 1}}, + {2175, {wxSlider, setPageSize, 1}}, + {2176, {wxSlider, setRange, 2}}, + {2177, {wxSlider, setThumbLength, 1}}, + {2178, {wxSlider, setValue, 1}}, + {2179, {wxSlider, 'Destroy', undefined}}, + {2181, {wxDialog, new_4, 4}}, + {2182, {wxDialog, new_0, 0}}, + {2184, {wxDialog, destruct, 0}}, + {2185, {wxDialog, create, 4}}, + {2186, {wxDialog, createButtonSizer, 1}}, + {2187, {wxDialog, createStdDialogButtonSizer, 1}}, + {2188, {wxDialog, endModal, 1}}, + {2189, {wxDialog, getAffirmativeId, 0}}, + {2190, {wxDialog, getReturnCode, 0}}, + {2191, {wxDialog, isModal, 0}}, + {2192, {wxDialog, setAffirmativeId, 1}}, + {2193, {wxDialog, setReturnCode, 1}}, + {2194, {wxDialog, show, 1}}, + {2195, {wxDialog, showModal, 0}}, + {2196, {wxColourDialog, new_0, 0}}, + {2197, {wxColourDialog, new_2, 2}}, + {2198, {wxColourDialog, destruct, 0}}, + {2199, {wxColourDialog, create, 2}}, + {2200, {wxColourDialog, getColourData, 0}}, + {2201, {wxColourData, new_0, 0}}, + {2202, {wxColourData, new_1, 1}}, + {2203, {wxColourData, destruct, 0}}, + {2204, {wxColourData, getChooseFull, 0}}, + {2205, {wxColourData, getColour, 0}}, + {2207, {wxColourData, getCustomColour, 1}}, + {2208, {wxColourData, setChooseFull, 1}}, + {2209, {wxColourData, setColour, 1}}, + {2210, {wxColourData, setCustomColour, 2}}, + {2211, {wxPalette, new_0, 0}}, + {2212, {wxPalette, new_4, 4}}, + {2214, {wxPalette, destruct, 0}}, + {2215, {wxPalette, create, 4}}, + {2216, {wxPalette, getColoursCount, 0}}, + {2217, {wxPalette, getPixel, 3}}, + {2218, {wxPalette, getRGB, 4}}, + {2219, {wxPalette, isOk, 0}}, + {2223, {wxDirDialog, new, 2}}, + {2224, {wxDirDialog, destruct, 0}}, + {2225, {wxDirDialog, getPath, 0}}, + {2226, {wxDirDialog, getMessage, 0}}, + {2227, {wxDirDialog, setMessage, 1}}, + {2228, {wxDirDialog, setPath, 1}}, + {2232, {wxFileDialog, new, 2}}, + {2233, {wxFileDialog, destruct, 0}}, + {2234, {wxFileDialog, getDirectory, 0}}, + {2235, {wxFileDialog, getFilename, 0}}, + {2236, {wxFileDialog, getFilenames, 1}}, + {2237, {wxFileDialog, getFilterIndex, 0}}, + {2238, {wxFileDialog, getMessage, 0}}, + {2239, {wxFileDialog, getPath, 0}}, + {2240, {wxFileDialog, getPaths, 1}}, + {2241, {wxFileDialog, getWildcard, 0}}, + {2242, {wxFileDialog, setDirectory, 1}}, + {2243, {wxFileDialog, setFilename, 1}}, + {2244, {wxFileDialog, setFilterIndex, 1}}, + {2245, {wxFileDialog, setMessage, 1}}, + {2246, {wxFileDialog, setPath, 1}}, + {2247, {wxFileDialog, setWildcard, 1}}, + {2248, {wxPickerBase, setInternalMargin, 1}}, + {2249, {wxPickerBase, getInternalMargin, 0}}, + {2250, {wxPickerBase, setTextCtrlProportion, 1}}, + {2251, {wxPickerBase, setPickerCtrlProportion, 1}}, + {2252, {wxPickerBase, getTextCtrlProportion, 0}}, + {2253, {wxPickerBase, getPickerCtrlProportion, 0}}, + {2254, {wxPickerBase, hasTextCtrl, 0}}, + {2255, {wxPickerBase, getTextCtrl, 0}}, + {2256, {wxPickerBase, isTextCtrlGrowable, 0}}, + {2257, {wxPickerBase, setPickerCtrlGrowable, 1}}, + {2258, {wxPickerBase, setTextCtrlGrowable, 1}}, + {2259, {wxPickerBase, isPickerCtrlGrowable, 0}}, + {2260, {wxFilePickerCtrl, new_0, 0}}, + {2261, {wxFilePickerCtrl, new_3, 3}}, + {2262, {wxFilePickerCtrl, create, 3}}, + {2263, {wxFilePickerCtrl, getPath, 0}}, + {2264, {wxFilePickerCtrl, setPath, 1}}, + {2265, {wxFilePickerCtrl, 'Destroy', undefined}}, + {2266, {wxDirPickerCtrl, new_0, 0}}, + {2267, {wxDirPickerCtrl, new_3, 3}}, + {2268, {wxDirPickerCtrl, create, 3}}, + {2269, {wxDirPickerCtrl, getPath, 0}}, + {2270, {wxDirPickerCtrl, setPath, 1}}, + {2271, {wxDirPickerCtrl, 'Destroy', undefined}}, + {2272, {wxColourPickerCtrl, new_0, 0}}, + {2273, {wxColourPickerCtrl, new_3, 3}}, + {2274, {wxColourPickerCtrl, create, 3}}, + {2275, {wxColourPickerCtrl, getColour, 0}}, + {2276, {wxColourPickerCtrl, setColour_1_1, 1}}, + {2277, {wxColourPickerCtrl, setColour_1_0, 1}}, + {2278, {wxColourPickerCtrl, 'Destroy', undefined}}, + {2279, {wxDatePickerCtrl, new_0, 0}}, + {2280, {wxDatePickerCtrl, new_3, 3}}, + {2281, {wxDatePickerCtrl, getRange, 2}}, + {2282, {wxDatePickerCtrl, getValue, 0}}, + {2283, {wxDatePickerCtrl, setRange, 2}}, + {2284, {wxDatePickerCtrl, setValue, 1}}, + {2285, {wxDatePickerCtrl, 'Destroy', undefined}}, + {2286, {wxFontPickerCtrl, new_0, 0}}, + {2287, {wxFontPickerCtrl, new_3, 3}}, + {2288, {wxFontPickerCtrl, create, 3}}, + {2289, {wxFontPickerCtrl, getSelectedFont, 0}}, + {2290, {wxFontPickerCtrl, setSelectedFont, 1}}, + {2291, {wxFontPickerCtrl, getMaxPointSize, 0}}, + {2292, {wxFontPickerCtrl, setMaxPointSize, 1}}, + {2293, {wxFontPickerCtrl, 'Destroy', undefined}}, + {2296, {wxFindReplaceDialog, new_0, 0}}, + {2297, {wxFindReplaceDialog, new_4, 4}}, + {2298, {wxFindReplaceDialog, destruct, 0}}, + {2299, {wxFindReplaceDialog, create, 4}}, + {2300, {wxFindReplaceDialog, getData, 0}}, + {2301, {wxFindReplaceData, new_0, 0}}, + {2302, {wxFindReplaceData, new_1, 1}}, + {2303, {wxFindReplaceData, getFindString, 0}}, + {2304, {wxFindReplaceData, getReplaceString, 0}}, + {2305, {wxFindReplaceData, getFlags, 0}}, + {2306, {wxFindReplaceData, setFlags, 1}}, + {2307, {wxFindReplaceData, setFindString, 1}}, + {2308, {wxFindReplaceData, setReplaceString, 1}}, + {2309, {wxFindReplaceData, 'Destroy', undefined}}, + {2310, {wxMultiChoiceDialog, new_0, 0}}, + {2312, {wxMultiChoiceDialog, new_5, 5}}, + {2313, {wxMultiChoiceDialog, getSelections, 0}}, + {2314, {wxMultiChoiceDialog, setSelections, 1}}, + {2315, {wxMultiChoiceDialog, 'Destroy', undefined}}, + {2316, {wxSingleChoiceDialog, new_0, 0}}, + {2318, {wxSingleChoiceDialog, new_5, 5}}, + {2319, {wxSingleChoiceDialog, getSelection, 0}}, + {2320, {wxSingleChoiceDialog, getStringSelection, 0}}, + {2321, {wxSingleChoiceDialog, setSelection, 1}}, + {2322, {wxSingleChoiceDialog, 'Destroy', undefined}}, + {2323, {wxTextEntryDialog, new, 3}}, + {2324, {wxTextEntryDialog, getValue, 0}}, + {2325, {wxTextEntryDialog, setValue, 1}}, + {2326, {wxTextEntryDialog, 'Destroy', undefined}}, + {2327, {wxPasswordEntryDialog, new, 3}}, + {2328, {wxPasswordEntryDialog, 'Destroy', undefined}}, + {2329, {wxFontData, new_0, 0}}, + {2330, {wxFontData, new_1, 1}}, + {2331, {wxFontData, destruct, 0}}, + {2332, {wxFontData, enableEffects, 1}}, + {2333, {wxFontData, getAllowSymbols, 0}}, + {2334, {wxFontData, getColour, 0}}, + {2335, {wxFontData, getChosenFont, 0}}, + {2336, {wxFontData, getEnableEffects, 0}}, + {2337, {wxFontData, getInitialFont, 0}}, + {2338, {wxFontData, getShowHelp, 0}}, + {2339, {wxFontData, setAllowSymbols, 1}}, + {2340, {wxFontData, setChosenFont, 1}}, + {2341, {wxFontData, setColour, 1}}, + {2342, {wxFontData, setInitialFont, 1}}, + {2343, {wxFontData, setRange, 2}}, + {2344, {wxFontData, setShowHelp, 1}}, + {2348, {wxFontDialog, new_0, 0}}, + {2350, {wxFontDialog, new_2, 2}}, + {2352, {wxFontDialog, create, 2}}, + {2353, {wxFontDialog, getFontData, 0}}, + {2355, {wxFontDialog, 'Destroy', undefined}}, + {2356, {wxProgressDialog, new, 3}}, + {2357, {wxProgressDialog, destruct, 0}}, + {2358, {wxProgressDialog, resume, 0}}, + {2359, {wxProgressDialog, update_2, 2}}, + {2360, {wxProgressDialog, update_0, 0}}, + {2361, {wxMessageDialog, new, 3}}, + {2362, {wxMessageDialog, destruct, 0}}, + {2363, {wxPageSetupDialog, new, 2}}, + {2364, {wxPageSetupDialog, destruct, 0}}, + {2365, {wxPageSetupDialog, getPageSetupData, 0}}, + {2366, {wxPageSetupDialog, showModal, 0}}, + {2367, {wxPageSetupDialogData, new_0, 0}}, + {2368, {wxPageSetupDialogData, new_1_0, 1}}, + {2369, {wxPageSetupDialogData, new_1_1, 1}}, + {2370, {wxPageSetupDialogData, destruct, 0}}, + {2371, {wxPageSetupDialogData, enableHelp, 1}}, + {2372, {wxPageSetupDialogData, enableMargins, 1}}, + {2373, {wxPageSetupDialogData, enableOrientation, 1}}, + {2374, {wxPageSetupDialogData, enablePaper, 1}}, + {2375, {wxPageSetupDialogData, enablePrinter, 1}}, + {2376, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, + {2377, {wxPageSetupDialogData, getEnableMargins, 0}}, + {2378, {wxPageSetupDialogData, getEnableOrientation, 0}}, + {2379, {wxPageSetupDialogData, getEnablePaper, 0}}, + {2380, {wxPageSetupDialogData, getEnablePrinter, 0}}, + {2381, {wxPageSetupDialogData, getEnableHelp, 0}}, + {2382, {wxPageSetupDialogData, getDefaultInfo, 0}}, + {2383, {wxPageSetupDialogData, getMarginTopLeft, 0}}, + {2384, {wxPageSetupDialogData, getMarginBottomRight, 0}}, + {2385, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, + {2386, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, + {2387, {wxPageSetupDialogData, getPaperId, 0}}, + {2388, {wxPageSetupDialogData, getPaperSize, 0}}, + {2390, {wxPageSetupDialogData, getPrintData, 0}}, + {2391, {wxPageSetupDialogData, isOk, 0}}, + {2392, {wxPageSetupDialogData, setDefaultInfo, 1}}, + {2393, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, + {2394, {wxPageSetupDialogData, setMarginTopLeft, 1}}, + {2395, {wxPageSetupDialogData, setMarginBottomRight, 1}}, + {2396, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, + {2397, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, + {2398, {wxPageSetupDialogData, setPaperId, 1}}, + {2399, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, + {2400, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, + {2401, {wxPageSetupDialogData, setPrintData, 1}}, + {2402, {wxPrintDialog, new_2_0, 2}}, + {2403, {wxPrintDialog, new_2_1, 2}}, + {2404, {wxPrintDialog, destruct, 0}}, + {2405, {wxPrintDialog, getPrintDialogData, 0}}, + {2406, {wxPrintDialog, getPrintDC, 0}}, + {2407, {wxPrintDialogData, new_0, 0}}, + {2408, {wxPrintDialogData, new_1_1, 1}}, + {2409, {wxPrintDialogData, new_1_0, 1}}, + {2410, {wxPrintDialogData, destruct, 0}}, + {2411, {wxPrintDialogData, enableHelp, 1}}, + {2412, {wxPrintDialogData, enablePageNumbers, 1}}, + {2413, {wxPrintDialogData, enablePrintToFile, 1}}, + {2414, {wxPrintDialogData, enableSelection, 1}}, + {2415, {wxPrintDialogData, getAllPages, 0}}, + {2416, {wxPrintDialogData, getCollate, 0}}, + {2417, {wxPrintDialogData, getFromPage, 0}}, + {2418, {wxPrintDialogData, getMaxPage, 0}}, + {2419, {wxPrintDialogData, getMinPage, 0}}, + {2420, {wxPrintDialogData, getNoCopies, 0}}, + {2421, {wxPrintDialogData, getPrintData, 0}}, + {2422, {wxPrintDialogData, getPrintToFile, 0}}, + {2423, {wxPrintDialogData, getSelection, 0}}, + {2424, {wxPrintDialogData, getToPage, 0}}, + {2425, {wxPrintDialogData, isOk, 0}}, + {2426, {wxPrintDialogData, setCollate, 1}}, + {2427, {wxPrintDialogData, setFromPage, 1}}, + {2428, {wxPrintDialogData, setMaxPage, 1}}, + {2429, {wxPrintDialogData, setMinPage, 1}}, + {2430, {wxPrintDialogData, setNoCopies, 1}}, + {2431, {wxPrintDialogData, setPrintData, 1}}, + {2432, {wxPrintDialogData, setPrintToFile, 1}}, + {2433, {wxPrintDialogData, setSelection, 1}}, + {2434, {wxPrintDialogData, setToPage, 1}}, + {2435, {wxPrintData, new_0, 0}}, + {2436, {wxPrintData, new_1, 1}}, + {2437, {wxPrintData, destruct, 0}}, + {2438, {wxPrintData, getCollate, 0}}, + {2439, {wxPrintData, getBin, 0}}, + {2440, {wxPrintData, getColour, 0}}, + {2441, {wxPrintData, getDuplex, 0}}, + {2442, {wxPrintData, getNoCopies, 0}}, + {2443, {wxPrintData, getOrientation, 0}}, + {2444, {wxPrintData, getPaperId, 0}}, + {2445, {wxPrintData, getPrinterName, 0}}, + {2446, {wxPrintData, getQuality, 0}}, + {2447, {wxPrintData, isOk, 0}}, + {2448, {wxPrintData, setBin, 1}}, + {2449, {wxPrintData, setCollate, 1}}, + {2450, {wxPrintData, setColour, 1}}, + {2451, {wxPrintData, setDuplex, 1}}, + {2452, {wxPrintData, setNoCopies, 1}}, + {2453, {wxPrintData, setOrientation, 1}}, + {2454, {wxPrintData, setPaperId, 1}}, + {2455, {wxPrintData, setPrinterName, 1}}, + {2456, {wxPrintData, setQuality, 1}}, + {2459, {wxPrintPreview, new_2, 2}}, + {2460, {wxPrintPreview, new_3, 3}}, + {2462, {wxPrintPreview, destruct, 0}}, + {2463, {wxPrintPreview, getCanvas, 0}}, + {2464, {wxPrintPreview, getCurrentPage, 0}}, + {2465, {wxPrintPreview, getFrame, 0}}, + {2466, {wxPrintPreview, getMaxPage, 0}}, + {2467, {wxPrintPreview, getMinPage, 0}}, + {2468, {wxPrintPreview, getPrintout, 0}}, + {2469, {wxPrintPreview, getPrintoutForPrinting, 0}}, + {2470, {wxPrintPreview, isOk, 0}}, + {2471, {wxPrintPreview, paintPage, 2}}, + {2472, {wxPrintPreview, print, 1}}, + {2473, {wxPrintPreview, renderPage, 1}}, + {2474, {wxPrintPreview, setCanvas, 1}}, + {2475, {wxPrintPreview, setCurrentPage, 1}}, + {2476, {wxPrintPreview, setFrame, 1}}, + {2477, {wxPrintPreview, setPrintout, 1}}, + {2478, {wxPrintPreview, setZoom, 1}}, + {2479, {wxPreviewFrame, new, 3}}, + {2480, {wxPreviewFrame, destruct, 0}}, + {2481, {wxPreviewFrame, createControlBar, 0}}, + {2482, {wxPreviewFrame, createCanvas, 0}}, + {2483, {wxPreviewFrame, initialize, 0}}, + {2484, {wxPreviewFrame, onCloseWindow, 1}}, + {2485, {wxPreviewControlBar, new, 4}}, + {2486, {wxPreviewControlBar, destruct, 0}}, + {2487, {wxPreviewControlBar, createButtons, 0}}, + {2488, {wxPreviewControlBar, getPrintPreview, 0}}, + {2489, {wxPreviewControlBar, getZoomControl, 0}}, + {2490, {wxPreviewControlBar, setZoomControl, 1}}, + {2492, {wxPrinter, new, 1}}, + {2493, {wxPrinter, createAbortWindow, 2}}, + {2494, {wxPrinter, getAbort, 0}}, + {2495, {wxPrinter, getLastError, 0}}, + {2496, {wxPrinter, getPrintDialogData, 0}}, + {2497, {wxPrinter, print, 3}}, + {2498, {wxPrinter, printDialog, 1}}, + {2499, {wxPrinter, reportError, 3}}, + {2500, {wxPrinter, setup, 1}}, + {2501, {wxPrinter, 'Destroy', undefined}}, + {2502, {wxXmlResource, new_1, 1}}, + {2503, {wxXmlResource, new_2, 2}}, + {2504, {wxXmlResource, destruct, 0}}, + {2505, {wxXmlResource, attachUnknownControl, 3}}, + {2506, {wxXmlResource, clearHandlers, 0}}, + {2507, {wxXmlResource, compareVersion, 4}}, + {2508, {wxXmlResource, get, 0}}, + {2509, {wxXmlResource, getFlags, 0}}, + {2510, {wxXmlResource, getVersion, 0}}, + {2511, {wxXmlResource, getXRCID, 2}}, + {2512, {wxXmlResource, initAllHandlers, 0}}, + {2513, {wxXmlResource, load, 1}}, + {2514, {wxXmlResource, loadBitmap, 1}}, + {2515, {wxXmlResource, loadDialog_2, 2}}, + {2516, {wxXmlResource, loadDialog_3, 3}}, + {2517, {wxXmlResource, loadFrame_2, 2}}, + {2518, {wxXmlResource, loadFrame_3, 3}}, + {2519, {wxXmlResource, loadIcon, 1}}, + {2520, {wxXmlResource, loadMenu, 1}}, + {2521, {wxXmlResource, loadMenuBar_2, 2}}, + {2522, {wxXmlResource, loadMenuBar_1, 1}}, + {2523, {wxXmlResource, loadPanel_2, 2}}, + {2524, {wxXmlResource, loadPanel_3, 3}}, + {2525, {wxXmlResource, loadToolBar, 2}}, + {2526, {wxXmlResource, set, 1}}, + {2527, {wxXmlResource, setFlags, 1}}, + {2528, {wxXmlResource, unload, 1}}, + {2529, {wxXmlResource, xrcctrl, 3}}, + {2530, {wxHtmlEasyPrinting, new, 1}}, + {2531, {wxHtmlEasyPrinting, destruct, 0}}, + {2532, {wxHtmlEasyPrinting, getPrintData, 0}}, + {2533, {wxHtmlEasyPrinting, getPageSetupData, 0}}, + {2534, {wxHtmlEasyPrinting, previewFile, 1}}, + {2535, {wxHtmlEasyPrinting, previewText, 2}}, + {2536, {wxHtmlEasyPrinting, printFile, 1}}, + {2537, {wxHtmlEasyPrinting, printText, 2}}, + {2538, {wxHtmlEasyPrinting, pageSetup, 0}}, + {2539, {wxHtmlEasyPrinting, setFonts, 3}}, + {2540, {wxHtmlEasyPrinting, setHeader, 2}}, + {2541, {wxHtmlEasyPrinting, setFooter, 2}}, + {2543, {wxGLCanvas, new_2, 2}}, + {2544, {wxGLCanvas, new_3_1, 3}}, + {2545, {wxGLCanvas, new_3_0, 3}}, + {2546, {wxGLCanvas, getContext, 0}}, + {2548, {wxGLCanvas, setCurrent, 0}}, + {2549, {wxGLCanvas, swapBuffers, 0}}, + {2550, {wxGLCanvas, 'Destroy', undefined}}, + {2551, {wxAuiManager, new, 1}}, + {2552, {wxAuiManager, destruct, 0}}, + {2553, {wxAuiManager, addPane_2_1, 2}}, + {2554, {wxAuiManager, addPane_3, 3}}, + {2555, {wxAuiManager, addPane_2_0, 2}}, + {2556, {wxAuiManager, detachPane, 1}}, + {2557, {wxAuiManager, getAllPanes, 0}}, + {2558, {wxAuiManager, getArtProvider, 0}}, + {2559, {wxAuiManager, getDockSizeConstraint, 2}}, + {2560, {wxAuiManager, getFlags, 0}}, + {2561, {wxAuiManager, getManagedWindow, 0}}, + {2562, {wxAuiManager, getManager, 1}}, + {2563, {wxAuiManager, getPane_1_1, 1}}, + {2564, {wxAuiManager, getPane_1_0, 1}}, + {2565, {wxAuiManager, hideHint, 0}}, + {2566, {wxAuiManager, insertPane, 3}}, + {2567, {wxAuiManager, loadPaneInfo, 2}}, + {2568, {wxAuiManager, loadPerspective, 2}}, + {2569, {wxAuiManager, savePaneInfo, 1}}, + {2570, {wxAuiManager, savePerspective, 0}}, + {2571, {wxAuiManager, setArtProvider, 1}}, + {2572, {wxAuiManager, setDockSizeConstraint, 2}}, + {2573, {wxAuiManager, setFlags, 1}}, + {2574, {wxAuiManager, setManagedWindow, 1}}, + {2575, {wxAuiManager, showHint, 1}}, + {2576, {wxAuiManager, unInit, 0}}, + {2577, {wxAuiManager, update, 0}}, + {2578, {wxAuiPaneInfo, new_0, 0}}, + {2579, {wxAuiPaneInfo, new_1, 1}}, + {2580, {wxAuiPaneInfo, destruct, 0}}, + {2581, {wxAuiPaneInfo, bestSize_1, 1}}, + {2582, {wxAuiPaneInfo, bestSize_2, 2}}, + {2583, {wxAuiPaneInfo, bottom, 0}}, + {2584, {wxAuiPaneInfo, bottomDockable, 1}}, + {2585, {wxAuiPaneInfo, caption, 1}}, + {2586, {wxAuiPaneInfo, captionVisible, 1}}, + {2587, {wxAuiPaneInfo, centre, 0}}, + {2588, {wxAuiPaneInfo, centrePane, 0}}, + {2589, {wxAuiPaneInfo, closeButton, 1}}, + {2590, {wxAuiPaneInfo, defaultPane, 0}}, + {2591, {wxAuiPaneInfo, destroyOnClose, 1}}, + {2592, {wxAuiPaneInfo, direction, 1}}, + {2593, {wxAuiPaneInfo, dock, 0}}, + {2594, {wxAuiPaneInfo, dockable, 1}}, + {2595, {wxAuiPaneInfo, fixed, 0}}, + {2596, {wxAuiPaneInfo, float, 0}}, + {2597, {wxAuiPaneInfo, floatable, 1}}, + {2598, {wxAuiPaneInfo, floatingPosition_1, 1}}, + {2599, {wxAuiPaneInfo, floatingPosition_2, 2}}, + {2600, {wxAuiPaneInfo, floatingSize_1, 1}}, + {2601, {wxAuiPaneInfo, floatingSize_2, 2}}, + {2602, {wxAuiPaneInfo, gripper, 1}}, + {2603, {wxAuiPaneInfo, gripperTop, 1}}, + {2604, {wxAuiPaneInfo, hasBorder, 0}}, + {2605, {wxAuiPaneInfo, hasCaption, 0}}, + {2606, {wxAuiPaneInfo, hasCloseButton, 0}}, + {2607, {wxAuiPaneInfo, hasFlag, 1}}, + {2608, {wxAuiPaneInfo, hasGripper, 0}}, + {2609, {wxAuiPaneInfo, hasGripperTop, 0}}, + {2610, {wxAuiPaneInfo, hasMaximizeButton, 0}}, + {2611, {wxAuiPaneInfo, hasMinimizeButton, 0}}, + {2612, {wxAuiPaneInfo, hasPinButton, 0}}, + {2613, {wxAuiPaneInfo, hide, 0}}, + {2614, {wxAuiPaneInfo, isBottomDockable, 0}}, + {2615, {wxAuiPaneInfo, isDocked, 0}}, + {2616, {wxAuiPaneInfo, isFixed, 0}}, + {2617, {wxAuiPaneInfo, isFloatable, 0}}, + {2618, {wxAuiPaneInfo, isFloating, 0}}, + {2619, {wxAuiPaneInfo, isLeftDockable, 0}}, + {2620, {wxAuiPaneInfo, isMovable, 0}}, + {2621, {wxAuiPaneInfo, isOk, 0}}, + {2622, {wxAuiPaneInfo, isResizable, 0}}, + {2623, {wxAuiPaneInfo, isRightDockable, 0}}, + {2624, {wxAuiPaneInfo, isShown, 0}}, + {2625, {wxAuiPaneInfo, isToolbar, 0}}, + {2626, {wxAuiPaneInfo, isTopDockable, 0}}, + {2627, {wxAuiPaneInfo, layer, 1}}, + {2628, {wxAuiPaneInfo, left, 0}}, + {2629, {wxAuiPaneInfo, leftDockable, 1}}, + {2630, {wxAuiPaneInfo, maxSize_1, 1}}, + {2631, {wxAuiPaneInfo, maxSize_2, 2}}, + {2632, {wxAuiPaneInfo, maximizeButton, 1}}, + {2633, {wxAuiPaneInfo, minSize_1, 1}}, + {2634, {wxAuiPaneInfo, minSize_2, 2}}, + {2635, {wxAuiPaneInfo, minimizeButton, 1}}, + {2636, {wxAuiPaneInfo, movable, 1}}, + {2637, {wxAuiPaneInfo, name, 1}}, + {2638, {wxAuiPaneInfo, paneBorder, 1}}, + {2639, {wxAuiPaneInfo, pinButton, 1}}, + {2640, {wxAuiPaneInfo, position, 1}}, + {2641, {wxAuiPaneInfo, resizable, 1}}, + {2642, {wxAuiPaneInfo, right, 0}}, + {2643, {wxAuiPaneInfo, rightDockable, 1}}, + {2644, {wxAuiPaneInfo, row, 1}}, + {2645, {wxAuiPaneInfo, safeSet, 1}}, + {2646, {wxAuiPaneInfo, setFlag, 2}}, + {2647, {wxAuiPaneInfo, show, 1}}, + {2648, {wxAuiPaneInfo, toolbarPane, 0}}, + {2649, {wxAuiPaneInfo, top, 0}}, + {2650, {wxAuiPaneInfo, topDockable, 1}}, + {2651, {wxAuiPaneInfo, window, 1}}, + {2652, {wxAuiNotebook, new_0, 0}}, + {2653, {wxAuiNotebook, new_2, 2}}, + {2654, {wxAuiNotebook, addPage, 3}}, + {2655, {wxAuiNotebook, create, 2}}, + {2656, {wxAuiNotebook, deletePage, 1}}, + {2657, {wxAuiNotebook, getArtProvider, 0}}, + {2658, {wxAuiNotebook, getPage, 1}}, + {2659, {wxAuiNotebook, getPageBitmap, 1}}, + {2660, {wxAuiNotebook, getPageCount, 0}}, + {2661, {wxAuiNotebook, getPageIndex, 1}}, + {2662, {wxAuiNotebook, getPageText, 1}}, + {2663, {wxAuiNotebook, getSelection, 0}}, + {2664, {wxAuiNotebook, insertPage, 4}}, + {2665, {wxAuiNotebook, removePage, 1}}, + {2666, {wxAuiNotebook, setArtProvider, 1}}, + {2667, {wxAuiNotebook, setFont, 1}}, + {2668, {wxAuiNotebook, setPageBitmap, 2}}, + {2669, {wxAuiNotebook, setPageText, 2}}, + {2670, {wxAuiNotebook, setSelection, 1}}, + {2671, {wxAuiNotebook, setTabCtrlHeight, 1}}, + {2672, {wxAuiNotebook, setUniformBitmapSize, 1}}, + {2673, {wxAuiNotebook, 'Destroy', undefined}}, + {2674, {wxMDIParentFrame, new_0, 0}}, + {2675, {wxMDIParentFrame, new_4, 4}}, + {2676, {wxMDIParentFrame, destruct, 0}}, + {2677, {wxMDIParentFrame, activateNext, 0}}, + {2678, {wxMDIParentFrame, activatePrevious, 0}}, + {2679, {wxMDIParentFrame, arrangeIcons, 0}}, + {2680, {wxMDIParentFrame, cascade, 0}}, + {2681, {wxMDIParentFrame, create, 4}}, + {2682, {wxMDIParentFrame, getActiveChild, 0}}, + {2683, {wxMDIParentFrame, getClientWindow, 0}}, + {2684, {wxMDIParentFrame, tile, 1}}, + {2685, {wxMDIChildFrame, new_0, 0}}, + {2686, {wxMDIChildFrame, new_4, 4}}, + {2687, {wxMDIChildFrame, destruct, 0}}, + {2688, {wxMDIChildFrame, activate, 0}}, + {2689, {wxMDIChildFrame, create, 4}}, + {2690, {wxMDIChildFrame, maximize, 1}}, + {2691, {wxMDIChildFrame, restore, 0}}, + {2692, {wxMDIClientWindow, new_0, 0}}, + {2693, {wxMDIClientWindow, new_2, 2}}, + {2694, {wxMDIClientWindow, destruct, 0}}, + {2695, {wxMDIClientWindow, createClient, 2}}, + {2696, {wxLayoutAlgorithm, new, 0}}, + {2697, {wxLayoutAlgorithm, layoutFrame, 2}}, + {2698, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, + {2699, {wxLayoutAlgorithm, layoutWindow, 2}}, + {2700, {wxLayoutAlgorithm, 'Destroy', undefined}}, + {2701, {wxEvent, getId, 0}}, + {2702, {wxEvent, getSkipped, 0}}, + {2703, {wxEvent, getTimestamp, 0}}, + {2704, {wxEvent, isCommandEvent, 0}}, + {2705, {wxEvent, resumePropagation, 1}}, + {2706, {wxEvent, shouldPropagate, 0}}, + {2707, {wxEvent, skip, 1}}, + {2708, {wxEvent, stopPropagation, 0}}, + {2709, {wxCommandEvent, getClientData, 0}}, + {2710, {wxCommandEvent, getExtraLong, 0}}, + {2711, {wxCommandEvent, getInt, 0}}, + {2712, {wxCommandEvent, getSelection, 0}}, + {2713, {wxCommandEvent, getString, 0}}, + {2714, {wxCommandEvent, isChecked, 0}}, + {2715, {wxCommandEvent, isSelection, 0}}, + {2716, {wxCommandEvent, setInt, 1}}, + {2717, {wxCommandEvent, setString, 1}}, + {2718, {wxScrollEvent, getOrientation, 0}}, + {2719, {wxScrollEvent, getPosition, 0}}, + {2720, {wxScrollWinEvent, getOrientation, 0}}, + {2721, {wxScrollWinEvent, getPosition, 0}}, + {2722, {wxMouseEvent, altDown, 0}}, + {2723, {wxMouseEvent, button, 1}}, + {2724, {wxMouseEvent, buttonDClick, 1}}, + {2725, {wxMouseEvent, buttonDown, 1}}, + {2726, {wxMouseEvent, buttonUp, 1}}, + {2727, {wxMouseEvent, cmdDown, 0}}, + {2728, {wxMouseEvent, controlDown, 0}}, + {2729, {wxMouseEvent, dragging, 0}}, + {2730, {wxMouseEvent, entering, 0}}, + {2731, {wxMouseEvent, getButton, 0}}, + {2734, {wxMouseEvent, getPosition, 0}}, + {2735, {wxMouseEvent, getLogicalPosition, 1}}, + {2736, {wxMouseEvent, getLinesPerAction, 0}}, + {2737, {wxMouseEvent, getWheelRotation, 0}}, + {2738, {wxMouseEvent, getWheelDelta, 0}}, + {2739, {wxMouseEvent, getX, 0}}, + {2740, {wxMouseEvent, getY, 0}}, + {2741, {wxMouseEvent, isButton, 0}}, + {2742, {wxMouseEvent, isPageScroll, 0}}, + {2743, {wxMouseEvent, leaving, 0}}, + {2744, {wxMouseEvent, leftDClick, 0}}, + {2745, {wxMouseEvent, leftDown, 0}}, + {2746, {wxMouseEvent, leftIsDown, 0}}, + {2747, {wxMouseEvent, leftUp, 0}}, + {2748, {wxMouseEvent, metaDown, 0}}, + {2749, {wxMouseEvent, middleDClick, 0}}, + {2750, {wxMouseEvent, middleDown, 0}}, + {2751, {wxMouseEvent, middleIsDown, 0}}, + {2752, {wxMouseEvent, middleUp, 0}}, + {2753, {wxMouseEvent, moving, 0}}, + {2754, {wxMouseEvent, rightDClick, 0}}, + {2755, {wxMouseEvent, rightDown, 0}}, + {2756, {wxMouseEvent, rightIsDown, 0}}, + {2757, {wxMouseEvent, rightUp, 0}}, + {2758, {wxMouseEvent, shiftDown, 0}}, + {2759, {wxSetCursorEvent, getCursor, 0}}, + {2760, {wxSetCursorEvent, getX, 0}}, + {2761, {wxSetCursorEvent, getY, 0}}, + {2762, {wxSetCursorEvent, hasCursor, 0}}, + {2763, {wxSetCursorEvent, setCursor, 1}}, + {2764, {wxKeyEvent, altDown, 0}}, + {2765, {wxKeyEvent, cmdDown, 0}}, + {2766, {wxKeyEvent, controlDown, 0}}, + {2767, {wxKeyEvent, getKeyCode, 0}}, + {2768, {wxKeyEvent, getModifiers, 0}}, + {2771, {wxKeyEvent, getPosition, 0}}, + {2772, {wxKeyEvent, getRawKeyCode, 0}}, + {2773, {wxKeyEvent, getRawKeyFlags, 0}}, + {2774, {wxKeyEvent, getUnicodeKey, 0}}, + {2775, {wxKeyEvent, getX, 0}}, + {2776, {wxKeyEvent, getY, 0}}, + {2777, {wxKeyEvent, hasModifiers, 0}}, + {2778, {wxKeyEvent, metaDown, 0}}, + {2779, {wxKeyEvent, shiftDown, 0}}, + {2780, {wxSizeEvent, getSize, 0}}, + {2781, {wxMoveEvent, getPosition, 0}}, + {2782, {wxEraseEvent, getDC, 0}}, + {2783, {wxFocusEvent, getWindow, 0}}, + {2784, {wxChildFocusEvent, getWindow, 0}}, + {2785, {wxMenuEvent, getMenu, 0}}, + {2786, {wxMenuEvent, getMenuId, 0}}, + {2787, {wxMenuEvent, isPopup, 0}}, + {2788, {wxCloseEvent, canVeto, 0}}, + {2789, {wxCloseEvent, getLoggingOff, 0}}, + {2790, {wxCloseEvent, setCanVeto, 1}}, + {2791, {wxCloseEvent, setLoggingOff, 1}}, + {2792, {wxCloseEvent, veto, 1}}, + {2793, {wxShowEvent, setShow, 1}}, + {2794, {wxShowEvent, getShow, 0}}, + {2795, {wxIconizeEvent, iconized, 0}}, + {2796, {wxJoystickEvent, buttonDown, 1}}, + {2797, {wxJoystickEvent, buttonIsDown, 1}}, + {2798, {wxJoystickEvent, buttonUp, 1}}, + {2799, {wxJoystickEvent, getButtonChange, 0}}, + {2800, {wxJoystickEvent, getButtonState, 0}}, + {2801, {wxJoystickEvent, getJoystick, 0}}, + {2802, {wxJoystickEvent, getPosition, 0}}, + {2803, {wxJoystickEvent, getZPosition, 0}}, + {2804, {wxJoystickEvent, isButton, 0}}, + {2805, {wxJoystickEvent, isMove, 0}}, + {2806, {wxJoystickEvent, isZMove, 0}}, + {2807, {wxUpdateUIEvent, canUpdate, 1}}, + {2808, {wxUpdateUIEvent, check, 1}}, + {2809, {wxUpdateUIEvent, enable, 1}}, + {2810, {wxUpdateUIEvent, show, 1}}, + {2811, {wxUpdateUIEvent, getChecked, 0}}, + {2812, {wxUpdateUIEvent, getEnabled, 0}}, + {2813, {wxUpdateUIEvent, getShown, 0}}, + {2814, {wxUpdateUIEvent, getSetChecked, 0}}, + {2815, {wxUpdateUIEvent, getSetEnabled, 0}}, + {2816, {wxUpdateUIEvent, getSetShown, 0}}, + {2817, {wxUpdateUIEvent, getSetText, 0}}, + {2818, {wxUpdateUIEvent, getText, 0}}, + {2819, {wxUpdateUIEvent, getMode, 0}}, + {2820, {wxUpdateUIEvent, getUpdateInterval, 0}}, + {2821, {wxUpdateUIEvent, resetUpdateTime, 0}}, + {2822, {wxUpdateUIEvent, setMode, 1}}, + {2823, {wxUpdateUIEvent, setText, 1}}, + {2824, {wxUpdateUIEvent, setUpdateInterval, 1}}, + {2825, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, + {2826, {wxPaletteChangedEvent, setChangedWindow, 1}}, + {2827, {wxPaletteChangedEvent, getChangedWindow, 0}}, + {2828, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, + {2829, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, + {2830, {wxNavigationKeyEvent, getDirection, 0}}, + {2831, {wxNavigationKeyEvent, setDirection, 1}}, + {2832, {wxNavigationKeyEvent, isWindowChange, 0}}, + {2833, {wxNavigationKeyEvent, setWindowChange, 1}}, + {2834, {wxNavigationKeyEvent, isFromTab, 0}}, + {2835, {wxNavigationKeyEvent, setFromTab, 1}}, + {2836, {wxNavigationKeyEvent, getCurrentFocus, 0}}, + {2837, {wxNavigationKeyEvent, setCurrentFocus, 1}}, + {2838, {wxHelpEvent, getOrigin, 0}}, + {2839, {wxHelpEvent, getPosition, 0}}, + {2840, {wxHelpEvent, setOrigin, 1}}, + {2841, {wxHelpEvent, setPosition, 1}}, + {2842, {wxContextMenuEvent, getPosition, 0}}, + {2843, {wxContextMenuEvent, setPosition, 1}}, + {2844, {wxIdleEvent, canSend, 1}}, + {2845, {wxIdleEvent, getMode, 0}}, + {2846, {wxIdleEvent, requestMore, 1}}, + {2847, {wxIdleEvent, moreRequested, 0}}, + {2848, {wxIdleEvent, setMode, 1}}, + {2849, {wxGridEvent, altDown, 0}}, + {2850, {wxGridEvent, controlDown, 0}}, + {2851, {wxGridEvent, getCol, 0}}, + {2852, {wxGridEvent, getPosition, 0}}, + {2853, {wxGridEvent, getRow, 0}}, + {2854, {wxGridEvent, metaDown, 0}}, + {2855, {wxGridEvent, selecting, 0}}, + {2856, {wxGridEvent, shiftDown, 0}}, + {2857, {wxNotifyEvent, allow, 0}}, + {2858, {wxNotifyEvent, isAllowed, 0}}, + {2859, {wxNotifyEvent, veto, 0}}, + {2860, {wxSashEvent, getEdge, 0}}, + {2861, {wxSashEvent, getDragRect, 0}}, + {2862, {wxSashEvent, getDragStatus, 0}}, + {2863, {wxListEvent, getCacheFrom, 0}}, + {2864, {wxListEvent, getCacheTo, 0}}, + {2865, {wxListEvent, getKeyCode, 0}}, + {2866, {wxListEvent, getIndex, 0}}, + {2867, {wxListEvent, getColumn, 0}}, + {2868, {wxListEvent, getPoint, 0}}, + {2869, {wxListEvent, getLabel, 0}}, + {2870, {wxListEvent, getText, 0}}, + {2871, {wxListEvent, getImage, 0}}, + {2872, {wxListEvent, getData, 0}}, + {2873, {wxListEvent, getMask, 0}}, + {2874, {wxListEvent, getItem, 0}}, + {2875, {wxListEvent, isEditCancelled, 0}}, + {2876, {wxDateEvent, getDate, 0}}, + {2877, {wxCalendarEvent, getWeekDay, 0}}, + {2878, {wxFileDirPickerEvent, getPath, 0}}, + {2879, {wxColourPickerEvent, getColour, 0}}, + {2880, {wxFontPickerEvent, getFont, 0}}, + {2881, {wxStyledTextEvent, getPosition, 0}}, + {2882, {wxStyledTextEvent, getKey, 0}}, + {2883, {wxStyledTextEvent, getModifiers, 0}}, + {2884, {wxStyledTextEvent, getModificationType, 0}}, + {2885, {wxStyledTextEvent, getText, 0}}, + {2886, {wxStyledTextEvent, getLength, 0}}, + {2887, {wxStyledTextEvent, getLinesAdded, 0}}, + {2888, {wxStyledTextEvent, getLine, 0}}, + {2889, {wxStyledTextEvent, getFoldLevelNow, 0}}, + {2890, {wxStyledTextEvent, getFoldLevelPrev, 0}}, + {2891, {wxStyledTextEvent, getMargin, 0}}, + {2892, {wxStyledTextEvent, getMessage, 0}}, + {2893, {wxStyledTextEvent, getWParam, 0}}, + {2894, {wxStyledTextEvent, getLParam, 0}}, + {2895, {wxStyledTextEvent, getListType, 0}}, + {2896, {wxStyledTextEvent, getX, 0}}, + {2897, {wxStyledTextEvent, getY, 0}}, + {2898, {wxStyledTextEvent, getDragText, 0}}, + {2899, {wxStyledTextEvent, getDragAllowMove, 0}}, + {2900, {wxStyledTextEvent, getDragResult, 0}}, + {2901, {wxStyledTextEvent, getShift, 0}}, + {2902, {wxStyledTextEvent, getControl, 0}}, + {2903, {wxStyledTextEvent, getAlt, 0}}, + {2904, {utils, getKeyState, 1}}, + {2905, {utils, getMousePosition, 2}}, + {2906, {utils, getMouseState, 0}}, + {2907, {utils, setDetectableAutoRepeat, 1}}, + {2908, {utils, bell, 0}}, + {2909, {utils, findMenuItemId, 3}}, + {2910, {utils, genericFindWindowAtPoint, 1}}, + {2911, {utils, findWindowAtPoint, 1}}, + {2912, {utils, beginBusyCursor, 1}}, + {2913, {utils, endBusyCursor, 0}}, + {2914, {utils, isBusy, 0}}, + {2915, {utils, shutdown, 1}}, + {2916, {utils, shell, 1}}, + {2917, {utils, launchDefaultBrowser, 2}}, + {2918, {utils, getEmailAddress, 0}}, + {2919, {utils, getUserId, 0}}, + {2920, {utils, getHomeDir, 0}}, + {2921, {utils, newId, 0}}, + {2922, {utils, registerId, 1}}, + {2923, {utils, getCurrentId, 0}}, + {2924, {utils, getOsDescription, 0}}, + {2925, {utils, isPlatformLittleEndian, 0}}, + {2926, {utils, isPlatform64Bit, 0}}, + {2927, {wxPrintout, new, 1}}, + {2928, {wxPrintout, destruct, 0}}, + {2929, {wxPrintout, getDC, 0}}, + {2930, {wxPrintout, getPageSizeMM, 2}}, + {2931, {wxPrintout, getPageSizePixels, 2}}, + {2932, {wxPrintout, getPaperRectPixels, 0}}, + {2933, {wxPrintout, getPPIPrinter, 2}}, + {2934, {wxPrintout, getPPIScreen, 2}}, + {2935, {wxPrintout, getTitle, 0}}, + {2936, {wxPrintout, isPreview, 0}}, + {2937, {wxPrintout, fitThisSizeToPaper, 1}}, + {2938, {wxPrintout, fitThisSizeToPage, 1}}, + {2939, {wxPrintout, fitThisSizeToPageMargins, 2}}, + {2940, {wxPrintout, mapScreenSizeToPaper, 0}}, + {2941, {wxPrintout, mapScreenSizeToPage, 0}}, + {2942, {wxPrintout, mapScreenSizeToPageMargins, 1}}, + {2943, {wxPrintout, mapScreenSizeToDevice, 0}}, + {2944, {wxPrintout, getLogicalPaperRect, 0}}, + {2945, {wxPrintout, getLogicalPageRect, 0}}, + {2946, {wxPrintout, getLogicalPageMarginsRect, 1}}, + {2947, {wxPrintout, setLogicalOrigin, 2}}, + {2948, {wxPrintout, offsetLogicalOrigin, 2}}, + {2949, {wxStyledTextCtrl, new_2, 2}}, + {2950, {wxStyledTextCtrl, new_0, 0}}, + {2951, {wxStyledTextCtrl, destruct, 0}}, + {2952, {wxStyledTextCtrl, create, 2}}, + {2953, {wxStyledTextCtrl, addText, 1}}, + {2954, {wxStyledTextCtrl, addStyledText, 1}}, + {2955, {wxStyledTextCtrl, insertText, 2}}, + {2956, {wxStyledTextCtrl, clearAll, 0}}, + {2957, {wxStyledTextCtrl, clearDocumentStyle, 0}}, + {2958, {wxStyledTextCtrl, getLength, 0}}, + {2959, {wxStyledTextCtrl, getCharAt, 1}}, + {2960, {wxStyledTextCtrl, getCurrentPos, 0}}, + {2961, {wxStyledTextCtrl, getAnchor, 0}}, + {2962, {wxStyledTextCtrl, getStyleAt, 1}}, + {2963, {wxStyledTextCtrl, redo, 0}}, + {2964, {wxStyledTextCtrl, setUndoCollection, 1}}, + {2965, {wxStyledTextCtrl, selectAll, 0}}, + {2966, {wxStyledTextCtrl, setSavePoint, 0}}, + {2967, {wxStyledTextCtrl, getStyledText, 2}}, + {2968, {wxStyledTextCtrl, canRedo, 0}}, + {2969, {wxStyledTextCtrl, markerLineFromHandle, 1}}, + {2970, {wxStyledTextCtrl, markerDeleteHandle, 1}}, + {2971, {wxStyledTextCtrl, getUndoCollection, 0}}, + {2972, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, + {2973, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, + {2974, {wxStyledTextCtrl, positionFromPoint, 1}}, + {2975, {wxStyledTextCtrl, positionFromPointClose, 2}}, + {2976, {wxStyledTextCtrl, gotoLine, 1}}, + {2977, {wxStyledTextCtrl, gotoPos, 1}}, + {2978, {wxStyledTextCtrl, setAnchor, 1}}, + {2979, {wxStyledTextCtrl, getCurLine, 1}}, + {2980, {wxStyledTextCtrl, getEndStyled, 0}}, + {2981, {wxStyledTextCtrl, convertEOLs, 1}}, + {2982, {wxStyledTextCtrl, getEOLMode, 0}}, + {2983, {wxStyledTextCtrl, setEOLMode, 1}}, + {2984, {wxStyledTextCtrl, startStyling, 2}}, + {2985, {wxStyledTextCtrl, setStyling, 2}}, + {2986, {wxStyledTextCtrl, getBufferedDraw, 0}}, + {2987, {wxStyledTextCtrl, setBufferedDraw, 1}}, + {2988, {wxStyledTextCtrl, setTabWidth, 1}}, + {2989, {wxStyledTextCtrl, getTabWidth, 0}}, + {2990, {wxStyledTextCtrl, setCodePage, 1}}, + {2991, {wxStyledTextCtrl, markerDefine, 3}}, + {2992, {wxStyledTextCtrl, markerSetForeground, 2}}, + {2993, {wxStyledTextCtrl, markerSetBackground, 2}}, + {2994, {wxStyledTextCtrl, markerAdd, 2}}, + {2995, {wxStyledTextCtrl, markerDelete, 2}}, + {2996, {wxStyledTextCtrl, markerDeleteAll, 1}}, + {2997, {wxStyledTextCtrl, markerGet, 1}}, + {2998, {wxStyledTextCtrl, markerNext, 2}}, + {2999, {wxStyledTextCtrl, markerPrevious, 2}}, + {3000, {wxStyledTextCtrl, markerDefineBitmap, 2}}, + {3001, {wxStyledTextCtrl, markerAddSet, 2}}, + {3002, {wxStyledTextCtrl, markerSetAlpha, 2}}, + {3003, {wxStyledTextCtrl, setMarginType, 2}}, + {3004, {wxStyledTextCtrl, getMarginType, 1}}, + {3005, {wxStyledTextCtrl, setMarginWidth, 2}}, + {3006, {wxStyledTextCtrl, getMarginWidth, 1}}, + {3007, {wxStyledTextCtrl, setMarginMask, 2}}, + {3008, {wxStyledTextCtrl, getMarginMask, 1}}, + {3009, {wxStyledTextCtrl, setMarginSensitive, 2}}, + {3010, {wxStyledTextCtrl, getMarginSensitive, 1}}, + {3011, {wxStyledTextCtrl, styleClearAll, 0}}, + {3012, {wxStyledTextCtrl, styleSetForeground, 2}}, + {3013, {wxStyledTextCtrl, styleSetBackground, 2}}, + {3014, {wxStyledTextCtrl, styleSetBold, 2}}, + {3015, {wxStyledTextCtrl, styleSetItalic, 2}}, + {3016, {wxStyledTextCtrl, styleSetSize, 2}}, + {3017, {wxStyledTextCtrl, styleSetFaceName, 2}}, + {3018, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, + {3019, {wxStyledTextCtrl, styleResetDefault, 0}}, + {3020, {wxStyledTextCtrl, styleSetUnderline, 2}}, + {3021, {wxStyledTextCtrl, styleSetCase, 2}}, + {3022, {wxStyledTextCtrl, styleSetHotSpot, 2}}, + {3023, {wxStyledTextCtrl, setSelForeground, 2}}, + {3024, {wxStyledTextCtrl, setSelBackground, 2}}, + {3025, {wxStyledTextCtrl, getSelAlpha, 0}}, + {3026, {wxStyledTextCtrl, setSelAlpha, 1}}, + {3027, {wxStyledTextCtrl, setCaretForeground, 1}}, + {3028, {wxStyledTextCtrl, cmdKeyAssign, 3}}, + {3029, {wxStyledTextCtrl, cmdKeyClear, 2}}, + {3030, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, + {3031, {wxStyledTextCtrl, setStyleBytes, 2}}, + {3032, {wxStyledTextCtrl, styleSetVisible, 2}}, + {3033, {wxStyledTextCtrl, getCaretPeriod, 0}}, + {3034, {wxStyledTextCtrl, setCaretPeriod, 1}}, + {3035, {wxStyledTextCtrl, setWordChars, 1}}, + {3036, {wxStyledTextCtrl, beginUndoAction, 0}}, + {3037, {wxStyledTextCtrl, endUndoAction, 0}}, + {3038, {wxStyledTextCtrl, indicatorSetStyle, 2}}, + {3039, {wxStyledTextCtrl, indicatorGetStyle, 1}}, + {3040, {wxStyledTextCtrl, indicatorSetForeground, 2}}, + {3041, {wxStyledTextCtrl, indicatorGetForeground, 1}}, + {3042, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, + {3043, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, + {3044, {wxStyledTextCtrl, getStyleBits, 0}}, + {3045, {wxStyledTextCtrl, setLineState, 2}}, + {3046, {wxStyledTextCtrl, getLineState, 1}}, + {3047, {wxStyledTextCtrl, getMaxLineState, 0}}, + {3048, {wxStyledTextCtrl, getCaretLineVisible, 0}}, + {3049, {wxStyledTextCtrl, setCaretLineVisible, 1}}, + {3050, {wxStyledTextCtrl, getCaretLineBackground, 0}}, + {3051, {wxStyledTextCtrl, setCaretLineBackground, 1}}, + {3052, {wxStyledTextCtrl, autoCompShow, 2}}, + {3053, {wxStyledTextCtrl, autoCompCancel, 0}}, + {3054, {wxStyledTextCtrl, autoCompActive, 0}}, + {3055, {wxStyledTextCtrl, autoCompPosStart, 0}}, + {3056, {wxStyledTextCtrl, autoCompComplete, 0}}, + {3057, {wxStyledTextCtrl, autoCompStops, 1}}, + {3058, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, + {3059, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, + {3060, {wxStyledTextCtrl, autoCompSelect, 1}}, + {3061, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, + {3062, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, + {3063, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, + {3064, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, + {3065, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, + {3066, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, + {3067, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, + {3068, {wxStyledTextCtrl, userListShow, 2}}, + {3069, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, + {3070, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, + {3071, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, + {3072, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, + {3073, {wxStyledTextCtrl, registerImage, 2}}, + {3074, {wxStyledTextCtrl, clearRegisteredImages, 0}}, + {3075, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, + {3076, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, + {3077, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, + {3078, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, + {3079, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, + {3080, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, + {3081, {wxStyledTextCtrl, setIndent, 1}}, + {3082, {wxStyledTextCtrl, getIndent, 0}}, + {3083, {wxStyledTextCtrl, setUseTabs, 1}}, + {3084, {wxStyledTextCtrl, getUseTabs, 0}}, + {3085, {wxStyledTextCtrl, setLineIndentation, 2}}, + {3086, {wxStyledTextCtrl, getLineIndentation, 1}}, + {3087, {wxStyledTextCtrl, getLineIndentPosition, 1}}, + {3088, {wxStyledTextCtrl, getColumn, 1}}, + {3089, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, + {3090, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, + {3091, {wxStyledTextCtrl, setIndentationGuides, 1}}, + {3092, {wxStyledTextCtrl, getIndentationGuides, 0}}, + {3093, {wxStyledTextCtrl, setHighlightGuide, 1}}, + {3094, {wxStyledTextCtrl, getHighlightGuide, 0}}, + {3095, {wxStyledTextCtrl, getLineEndPosition, 1}}, + {3096, {wxStyledTextCtrl, getCodePage, 0}}, + {3097, {wxStyledTextCtrl, getCaretForeground, 0}}, + {3098, {wxStyledTextCtrl, getReadOnly, 0}}, + {3099, {wxStyledTextCtrl, setCurrentPos, 1}}, + {3100, {wxStyledTextCtrl, setSelectionStart, 1}}, + {3101, {wxStyledTextCtrl, getSelectionStart, 0}}, + {3102, {wxStyledTextCtrl, setSelectionEnd, 1}}, + {3103, {wxStyledTextCtrl, getSelectionEnd, 0}}, + {3104, {wxStyledTextCtrl, setPrintMagnification, 1}}, + {3105, {wxStyledTextCtrl, getPrintMagnification, 0}}, + {3106, {wxStyledTextCtrl, setPrintColourMode, 1}}, + {3107, {wxStyledTextCtrl, getPrintColourMode, 0}}, + {3108, {wxStyledTextCtrl, findText, 4}}, + {3109, {wxStyledTextCtrl, formatRange, 7}}, + {3110, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, + {3111, {wxStyledTextCtrl, getLine, 1}}, + {3112, {wxStyledTextCtrl, getLineCount, 0}}, + {3113, {wxStyledTextCtrl, setMarginLeft, 1}}, + {3114, {wxStyledTextCtrl, getMarginLeft, 0}}, + {3115, {wxStyledTextCtrl, setMarginRight, 1}}, + {3116, {wxStyledTextCtrl, getMarginRight, 0}}, + {3117, {wxStyledTextCtrl, getModify, 0}}, + {3118, {wxStyledTextCtrl, setSelection, 2}}, + {3119, {wxStyledTextCtrl, getSelectedText, 0}}, + {3120, {wxStyledTextCtrl, getTextRange, 2}}, + {3121, {wxStyledTextCtrl, hideSelection, 1}}, + {3122, {wxStyledTextCtrl, lineFromPosition, 1}}, + {3123, {wxStyledTextCtrl, positionFromLine, 1}}, + {3124, {wxStyledTextCtrl, lineScroll, 2}}, + {3125, {wxStyledTextCtrl, ensureCaretVisible, 0}}, + {3126, {wxStyledTextCtrl, replaceSelection, 1}}, + {3127, {wxStyledTextCtrl, setReadOnly, 1}}, + {3128, {wxStyledTextCtrl, canPaste, 0}}, + {3129, {wxStyledTextCtrl, canUndo, 0}}, + {3130, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, + {3131, {wxStyledTextCtrl, undo, 0}}, + {3132, {wxStyledTextCtrl, cut, 0}}, + {3133, {wxStyledTextCtrl, copy, 0}}, + {3134, {wxStyledTextCtrl, paste, 0}}, + {3135, {wxStyledTextCtrl, clear, 0}}, + {3136, {wxStyledTextCtrl, setText, 1}}, + {3137, {wxStyledTextCtrl, getText, 0}}, + {3138, {wxStyledTextCtrl, getTextLength, 0}}, + {3139, {wxStyledTextCtrl, getOvertype, 0}}, + {3140, {wxStyledTextCtrl, setCaretWidth, 1}}, + {3141, {wxStyledTextCtrl, getCaretWidth, 0}}, + {3142, {wxStyledTextCtrl, setTargetStart, 1}}, + {3143, {wxStyledTextCtrl, getTargetStart, 0}}, + {3144, {wxStyledTextCtrl, setTargetEnd, 1}}, + {3145, {wxStyledTextCtrl, getTargetEnd, 0}}, + {3146, {wxStyledTextCtrl, replaceTarget, 1}}, + {3147, {wxStyledTextCtrl, searchInTarget, 1}}, + {3148, {wxStyledTextCtrl, setSearchFlags, 1}}, + {3149, {wxStyledTextCtrl, getSearchFlags, 0}}, + {3150, {wxStyledTextCtrl, callTipShow, 2}}, + {3151, {wxStyledTextCtrl, callTipCancel, 0}}, + {3152, {wxStyledTextCtrl, callTipActive, 0}}, + {3153, {wxStyledTextCtrl, callTipPosAtStart, 0}}, + {3154, {wxStyledTextCtrl, callTipSetHighlight, 2}}, + {3155, {wxStyledTextCtrl, callTipSetBackground, 1}}, + {3156, {wxStyledTextCtrl, callTipSetForeground, 1}}, + {3157, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, + {3158, {wxStyledTextCtrl, callTipUseStyle, 1}}, + {3159, {wxStyledTextCtrl, visibleFromDocLine, 1}}, + {3160, {wxStyledTextCtrl, docLineFromVisible, 1}}, + {3161, {wxStyledTextCtrl, wrapCount, 1}}, + {3162, {wxStyledTextCtrl, setFoldLevel, 2}}, + {3163, {wxStyledTextCtrl, getFoldLevel, 1}}, + {3164, {wxStyledTextCtrl, getLastChild, 2}}, + {3165, {wxStyledTextCtrl, getFoldParent, 1}}, + {3166, {wxStyledTextCtrl, showLines, 2}}, + {3167, {wxStyledTextCtrl, hideLines, 2}}, + {3168, {wxStyledTextCtrl, getLineVisible, 1}}, + {3169, {wxStyledTextCtrl, setFoldExpanded, 2}}, + {3170, {wxStyledTextCtrl, getFoldExpanded, 1}}, + {3171, {wxStyledTextCtrl, toggleFold, 1}}, + {3172, {wxStyledTextCtrl, ensureVisible, 1}}, + {3173, {wxStyledTextCtrl, setFoldFlags, 1}}, + {3174, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, + {3175, {wxStyledTextCtrl, setTabIndents, 1}}, + {3176, {wxStyledTextCtrl, getTabIndents, 0}}, + {3177, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, + {3178, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, + {3179, {wxStyledTextCtrl, setMouseDwellTime, 1}}, + {3180, {wxStyledTextCtrl, getMouseDwellTime, 0}}, + {3181, {wxStyledTextCtrl, wordStartPosition, 2}}, + {3182, {wxStyledTextCtrl, wordEndPosition, 2}}, + {3183, {wxStyledTextCtrl, setWrapMode, 1}}, + {3184, {wxStyledTextCtrl, getWrapMode, 0}}, + {3185, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, + {3186, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, + {3187, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, + {3188, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, + {3189, {wxStyledTextCtrl, setWrapStartIndent, 1}}, + {3190, {wxStyledTextCtrl, getWrapStartIndent, 0}}, + {3191, {wxStyledTextCtrl, setLayoutCache, 1}}, + {3192, {wxStyledTextCtrl, getLayoutCache, 0}}, + {3193, {wxStyledTextCtrl, setScrollWidth, 1}}, + {3194, {wxStyledTextCtrl, getScrollWidth, 0}}, + {3195, {wxStyledTextCtrl, textWidth, 2}}, + {3196, {wxStyledTextCtrl, getEndAtLastLine, 0}}, + {3197, {wxStyledTextCtrl, textHeight, 1}}, + {3198, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, + {3199, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, + {3200, {wxStyledTextCtrl, appendText, 1}}, + {3201, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, + {3202, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, + {3203, {wxStyledTextCtrl, targetFromSelection, 0}}, + {3204, {wxStyledTextCtrl, linesJoin, 0}}, + {3205, {wxStyledTextCtrl, linesSplit, 1}}, + {3206, {wxStyledTextCtrl, setFoldMarginColour, 2}}, + {3207, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, + {3208, {wxStyledTextCtrl, lineDown, 0}}, + {3209, {wxStyledTextCtrl, lineDownExtend, 0}}, + {3210, {wxStyledTextCtrl, lineUp, 0}}, + {3211, {wxStyledTextCtrl, lineUpExtend, 0}}, + {3212, {wxStyledTextCtrl, charLeft, 0}}, + {3213, {wxStyledTextCtrl, charLeftExtend, 0}}, + {3214, {wxStyledTextCtrl, charRight, 0}}, + {3215, {wxStyledTextCtrl, charRightExtend, 0}}, + {3216, {wxStyledTextCtrl, wordLeft, 0}}, + {3217, {wxStyledTextCtrl, wordLeftExtend, 0}}, + {3218, {wxStyledTextCtrl, wordRight, 0}}, + {3219, {wxStyledTextCtrl, wordRightExtend, 0}}, + {3220, {wxStyledTextCtrl, home, 0}}, + {3221, {wxStyledTextCtrl, homeExtend, 0}}, + {3222, {wxStyledTextCtrl, lineEnd, 0}}, + {3223, {wxStyledTextCtrl, lineEndExtend, 0}}, + {3224, {wxStyledTextCtrl, documentStart, 0}}, + {3225, {wxStyledTextCtrl, documentStartExtend, 0}}, + {3226, {wxStyledTextCtrl, documentEnd, 0}}, + {3227, {wxStyledTextCtrl, documentEndExtend, 0}}, + {3228, {wxStyledTextCtrl, pageUp, 0}}, + {3229, {wxStyledTextCtrl, pageUpExtend, 0}}, + {3230, {wxStyledTextCtrl, pageDown, 0}}, + {3231, {wxStyledTextCtrl, pageDownExtend, 0}}, + {3232, {wxStyledTextCtrl, editToggleOvertype, 0}}, + {3233, {wxStyledTextCtrl, cancel, 0}}, + {3234, {wxStyledTextCtrl, deleteBack, 0}}, + {3235, {wxStyledTextCtrl, tab, 0}}, + {3236, {wxStyledTextCtrl, backTab, 0}}, + {3237, {wxStyledTextCtrl, newLine, 0}}, + {3238, {wxStyledTextCtrl, formFeed, 0}}, + {3239, {wxStyledTextCtrl, vCHome, 0}}, + {3240, {wxStyledTextCtrl, vCHomeExtend, 0}}, + {3241, {wxStyledTextCtrl, zoomIn, 0}}, + {3242, {wxStyledTextCtrl, zoomOut, 0}}, + {3243, {wxStyledTextCtrl, delWordLeft, 0}}, + {3244, {wxStyledTextCtrl, delWordRight, 0}}, + {3245, {wxStyledTextCtrl, lineCut, 0}}, + {3246, {wxStyledTextCtrl, lineDelete, 0}}, + {3247, {wxStyledTextCtrl, lineTranspose, 0}}, + {3248, {wxStyledTextCtrl, lineDuplicate, 0}}, + {3249, {wxStyledTextCtrl, lowerCase, 0}}, + {3250, {wxStyledTextCtrl, upperCase, 0}}, + {3251, {wxStyledTextCtrl, lineScrollDown, 0}}, + {3252, {wxStyledTextCtrl, lineScrollUp, 0}}, + {3253, {wxStyledTextCtrl, deleteBackNotLine, 0}}, + {3254, {wxStyledTextCtrl, homeDisplay, 0}}, + {3255, {wxStyledTextCtrl, homeDisplayExtend, 0}}, + {3256, {wxStyledTextCtrl, lineEndDisplay, 0}}, + {3257, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, + {3258, {wxStyledTextCtrl, homeWrapExtend, 0}}, + {3259, {wxStyledTextCtrl, lineEndWrap, 0}}, + {3260, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, + {3261, {wxStyledTextCtrl, vCHomeWrap, 0}}, + {3262, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, + {3263, {wxStyledTextCtrl, lineCopy, 0}}, + {3264, {wxStyledTextCtrl, moveCaretInsideView, 0}}, + {3265, {wxStyledTextCtrl, lineLength, 1}}, + {3266, {wxStyledTextCtrl, braceHighlight, 2}}, + {3267, {wxStyledTextCtrl, braceBadLight, 1}}, + {3268, {wxStyledTextCtrl, braceMatch, 1}}, + {3269, {wxStyledTextCtrl, getViewEOL, 0}}, + {3270, {wxStyledTextCtrl, setViewEOL, 1}}, + {3271, {wxStyledTextCtrl, setModEventMask, 1}}, + {3272, {wxStyledTextCtrl, getEdgeColumn, 0}}, + {3273, {wxStyledTextCtrl, setEdgeColumn, 1}}, + {3274, {wxStyledTextCtrl, setEdgeMode, 1}}, + {3275, {wxStyledTextCtrl, getEdgeMode, 0}}, + {3276, {wxStyledTextCtrl, getEdgeColour, 0}}, + {3277, {wxStyledTextCtrl, setEdgeColour, 1}}, + {3278, {wxStyledTextCtrl, searchAnchor, 0}}, + {3279, {wxStyledTextCtrl, searchNext, 2}}, + {3280, {wxStyledTextCtrl, searchPrev, 2}}, + {3281, {wxStyledTextCtrl, linesOnScreen, 0}}, + {3282, {wxStyledTextCtrl, usePopUp, 1}}, + {3283, {wxStyledTextCtrl, selectionIsRectangle, 0}}, + {3284, {wxStyledTextCtrl, setZoom, 1}}, + {3285, {wxStyledTextCtrl, getZoom, 0}}, + {3286, {wxStyledTextCtrl, getModEventMask, 0}}, + {3287, {wxStyledTextCtrl, setSTCFocus, 1}}, + {3288, {wxStyledTextCtrl, getSTCFocus, 0}}, + {3289, {wxStyledTextCtrl, setStatus, 1}}, + {3290, {wxStyledTextCtrl, getStatus, 0}}, + {3291, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, + {3292, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, + {3293, {wxStyledTextCtrl, setSTCCursor, 1}}, + {3294, {wxStyledTextCtrl, getSTCCursor, 0}}, + {3295, {wxStyledTextCtrl, setControlCharSymbol, 1}}, + {3296, {wxStyledTextCtrl, getControlCharSymbol, 0}}, + {3297, {wxStyledTextCtrl, wordPartLeft, 0}}, + {3298, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, + {3299, {wxStyledTextCtrl, wordPartRight, 0}}, + {3300, {wxStyledTextCtrl, wordPartRightExtend, 0}}, + {3301, {wxStyledTextCtrl, setVisiblePolicy, 2}}, + {3302, {wxStyledTextCtrl, delLineLeft, 0}}, + {3303, {wxStyledTextCtrl, delLineRight, 0}}, + {3304, {wxStyledTextCtrl, getXOffset, 0}}, + {3305, {wxStyledTextCtrl, chooseCaretX, 0}}, + {3306, {wxStyledTextCtrl, setXCaretPolicy, 2}}, + {3307, {wxStyledTextCtrl, setYCaretPolicy, 2}}, + {3308, {wxStyledTextCtrl, getPrintWrapMode, 0}}, + {3309, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, + {3310, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, + {3311, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, + {3312, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, + {3313, {wxStyledTextCtrl, paraDownExtend, 0}}, + {3314, {wxStyledTextCtrl, paraUp, 0}}, + {3315, {wxStyledTextCtrl, paraUpExtend, 0}}, + {3316, {wxStyledTextCtrl, positionBefore, 1}}, + {3317, {wxStyledTextCtrl, positionAfter, 1}}, + {3318, {wxStyledTextCtrl, copyRange, 2}}, + {3319, {wxStyledTextCtrl, copyText, 2}}, + {3320, {wxStyledTextCtrl, setSelectionMode, 1}}, + {3321, {wxStyledTextCtrl, getSelectionMode, 0}}, + {3322, {wxStyledTextCtrl, lineDownRectExtend, 0}}, + {3323, {wxStyledTextCtrl, lineUpRectExtend, 0}}, + {3324, {wxStyledTextCtrl, charLeftRectExtend, 0}}, + {3325, {wxStyledTextCtrl, charRightRectExtend, 0}}, + {3326, {wxStyledTextCtrl, homeRectExtend, 0}}, + {3327, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, + {3328, {wxStyledTextCtrl, lineEndRectExtend, 0}}, + {3329, {wxStyledTextCtrl, pageUpRectExtend, 0}}, + {3330, {wxStyledTextCtrl, pageDownRectExtend, 0}}, + {3331, {wxStyledTextCtrl, stutteredPageUp, 0}}, + {3332, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, + {3333, {wxStyledTextCtrl, stutteredPageDown, 0}}, + {3334, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, + {3335, {wxStyledTextCtrl, wordLeftEnd, 0}}, + {3336, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, + {3337, {wxStyledTextCtrl, wordRightEnd, 0}}, + {3338, {wxStyledTextCtrl, wordRightEndExtend, 0}}, + {3339, {wxStyledTextCtrl, setWhitespaceChars, 1}}, + {3340, {wxStyledTextCtrl, setCharsDefault, 0}}, + {3341, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, + {3342, {wxStyledTextCtrl, allocate, 1}}, + {3343, {wxStyledTextCtrl, findColumn, 2}}, + {3344, {wxStyledTextCtrl, getCaretSticky, 0}}, + {3345, {wxStyledTextCtrl, setCaretSticky, 1}}, + {3346, {wxStyledTextCtrl, toggleCaretSticky, 0}}, + {3347, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, + {3348, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, + {3349, {wxStyledTextCtrl, selectionDuplicate, 0}}, + {3350, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, + {3351, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, + {3352, {wxStyledTextCtrl, startRecord, 0}}, + {3353, {wxStyledTextCtrl, stopRecord, 0}}, + {3354, {wxStyledTextCtrl, setLexer, 1}}, + {3355, {wxStyledTextCtrl, getLexer, 0}}, + {3356, {wxStyledTextCtrl, colourise, 2}}, + {3357, {wxStyledTextCtrl, setProperty, 2}}, + {3358, {wxStyledTextCtrl, setKeyWords, 2}}, + {3359, {wxStyledTextCtrl, setLexerLanguage, 1}}, + {3360, {wxStyledTextCtrl, getProperty, 1}}, + {3361, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, + {3362, {wxStyledTextCtrl, getCurrentLine, 0}}, + {3363, {wxStyledTextCtrl, styleSetSpec, 2}}, + {3364, {wxStyledTextCtrl, styleSetFont, 2}}, + {3365, {wxStyledTextCtrl, styleSetFontAttr, 7}}, + {3366, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, + {3367, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, + {3368, {wxStyledTextCtrl, cmdKeyExecute, 1}}, + {3369, {wxStyledTextCtrl, setMargins, 2}}, + {3370, {wxStyledTextCtrl, getSelection, 2}}, + {3371, {wxStyledTextCtrl, pointFromPosition, 1}}, + {3372, {wxStyledTextCtrl, scrollToLine, 1}}, + {3373, {wxStyledTextCtrl, scrollToColumn, 1}}, + {3374, {wxStyledTextCtrl, setVScrollBar, 1}}, + {3375, {wxStyledTextCtrl, setHScrollBar, 1}}, + {3376, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, + {3377, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, + {3378, {wxStyledTextCtrl, saveFile, 1}}, + {3379, {wxStyledTextCtrl, loadFile, 1}}, + {3380, {wxStyledTextCtrl, doDragOver, 3}}, + {3381, {wxStyledTextCtrl, doDropText, 3}}, + {3382, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, + {3383, {wxStyledTextCtrl, addTextRaw, 1}}, + {3384, {wxStyledTextCtrl, insertTextRaw, 2}}, + {3385, {wxStyledTextCtrl, getCurLineRaw, 1}}, + {3386, {wxStyledTextCtrl, getLineRaw, 1}}, + {3387, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, + {3388, {wxStyledTextCtrl, getTextRangeRaw, 2}}, + {3389, {wxStyledTextCtrl, setTextRaw, 1}}, + {3390, {wxStyledTextCtrl, getTextRaw, 0}}, + {3391, {wxStyledTextCtrl, appendTextRaw, 1}}, + {3392, {wxArtProvider, getBitmap, 2}}, + {3393, {wxArtProvider, getIcon, 2}}, + {3394, {wxTreeEvent, getKeyCode, 0}}, + {3395, {wxTreeEvent, getItem, 0}}, + {3396, {wxTreeEvent, getKeyEvent, 0}}, + {3397, {wxTreeEvent, getLabel, 0}}, + {3398, {wxTreeEvent, getOldItem, 0}}, + {3399, {wxTreeEvent, getPoint, 0}}, + {3400, {wxTreeEvent, isEditCancelled, 0}}, + {3401, {wxTreeEvent, setToolTip, 1}}, + {3402, {wxNotebookEvent, getOldSelection, 0}}, + {3403, {wxNotebookEvent, getSelection, 0}}, + {3404, {wxNotebookEvent, setOldSelection, 1}}, + {3405, {wxNotebookEvent, setSelection, 1}}, + {3406, {wxFileDataObject, new, 0}}, + {3407, {wxFileDataObject, addFile, 1}}, + {3408, {wxFileDataObject, getFilenames, 0}}, + {3409, {wxFileDataObject, 'Destroy', undefined}}, + {3410, {wxTextDataObject, new, 1}}, + {3411, {wxTextDataObject, getTextLength, 0}}, + {3412, {wxTextDataObject, getText, 0}}, + {3413, {wxTextDataObject, setText, 1}}, + {3414, {wxTextDataObject, 'Destroy', undefined}}, + {3415, {wxBitmapDataObject, new_1_1, 1}}, + {3416, {wxBitmapDataObject, new_1_0, 1}}, + {3417, {wxBitmapDataObject, getBitmap, 0}}, + {3418, {wxBitmapDataObject, setBitmap, 1}}, + {3419, {wxBitmapDataObject, 'Destroy', undefined}}, + {3421, {wxClipboard, new, 0}}, + {3422, {wxClipboard, destruct, 0}}, + {3423, {wxClipboard, addData, 1}}, + {3424, {wxClipboard, clear, 0}}, + {3425, {wxClipboard, close, 0}}, + {3426, {wxClipboard, flush, 0}}, + {3427, {wxClipboard, getData, 1}}, + {3428, {wxClipboard, isOpened, 0}}, + {3429, {wxClipboard, open, 0}}, + {3430, {wxClipboard, setData, 1}}, + {3432, {wxClipboard, usePrimarySelection, 1}}, + {3433, {wxClipboard, isSupported, 1}}, + {3434, {wxClipboard, get, 0}}, + {3435, {wxSpinEvent, getPosition, 0}}, + {3436, {wxSpinEvent, setPosition, 1}}, + {3437, {wxSplitterWindow, new_0, 0}}, + {3438, {wxSplitterWindow, new_2, 2}}, + {3439, {wxSplitterWindow, destruct, 0}}, + {3440, {wxSplitterWindow, create, 2}}, + {3441, {wxSplitterWindow, getMinimumPaneSize, 0}}, + {3442, {wxSplitterWindow, getSashGravity, 0}}, + {3443, {wxSplitterWindow, getSashPosition, 0}}, + {3444, {wxSplitterWindow, getSplitMode, 0}}, + {3445, {wxSplitterWindow, getWindow1, 0}}, + {3446, {wxSplitterWindow, getWindow2, 0}}, + {3447, {wxSplitterWindow, initialize, 1}}, + {3448, {wxSplitterWindow, isSplit, 0}}, + {3449, {wxSplitterWindow, replaceWindow, 2}}, + {3450, {wxSplitterWindow, setSashGravity, 1}}, + {3451, {wxSplitterWindow, setSashPosition, 2}}, + {3452, {wxSplitterWindow, setSashSize, 1}}, + {3453, {wxSplitterWindow, setMinimumPaneSize, 1}}, + {3454, {wxSplitterWindow, setSplitMode, 1}}, + {3455, {wxSplitterWindow, splitHorizontally, 3}}, + {3456, {wxSplitterWindow, splitVertically, 3}}, + {3457, {wxSplitterWindow, unsplit, 1}}, + {3458, {wxSplitterWindow, updateSize, 0}}, + {3459, {wxSplitterEvent, getSashPosition, 0}}, + {3460, {wxSplitterEvent, getX, 0}}, + {3461, {wxSplitterEvent, getY, 0}}, + {3462, {wxSplitterEvent, getWindowBeingRemoved, 0}}, + {3463, {wxSplitterEvent, setSashPosition, 1}}, + {3464, {wxHtmlWindow, new_0, 0}}, + {3465, {wxHtmlWindow, new_2, 2}}, + {3466, {wxHtmlWindow, appendToPage, 1}}, + {3467, {wxHtmlWindow, getOpenedAnchor, 0}}, + {3468, {wxHtmlWindow, getOpenedPage, 0}}, + {3469, {wxHtmlWindow, getOpenedPageTitle, 0}}, + {3470, {wxHtmlWindow, getRelatedFrame, 0}}, + {3471, {wxHtmlWindow, historyBack, 0}}, + {3472, {wxHtmlWindow, historyCanBack, 0}}, + {3473, {wxHtmlWindow, historyCanForward, 0}}, + {3474, {wxHtmlWindow, historyClear, 0}}, + {3475, {wxHtmlWindow, historyForward, 0}}, + {3476, {wxHtmlWindow, loadFile, 1}}, + {3477, {wxHtmlWindow, loadPage, 1}}, + {3478, {wxHtmlWindow, selectAll, 0}}, + {3479, {wxHtmlWindow, selectionToText, 0}}, + {3480, {wxHtmlWindow, selectLine, 1}}, + {3481, {wxHtmlWindow, selectWord, 1}}, + {3482, {wxHtmlWindow, setBorders, 1}}, + {3483, {wxHtmlWindow, setFonts, 3}}, + {3484, {wxHtmlWindow, setPage, 1}}, + {3485, {wxHtmlWindow, setRelatedFrame, 2}}, + {3486, {wxHtmlWindow, setRelatedStatusBar, 1}}, + {3487, {wxHtmlWindow, toText, 0}}, + {3488, {wxHtmlWindow, 'Destroy', undefined}}, + {3489, {wxHtmlLinkEvent, getLinkInfo, 0}}, + {3490, {wxSystemSettings, getColour, 1}}, + {3491, {wxSystemSettings, getFont, 1}}, + {3492, {wxSystemSettings, getMetric, 2}}, + {3493, {wxSystemSettings, getScreenType, 0}}, + {3494, {wxSystemOptions, getOption, 1}}, + {3495, {wxSystemOptions, getOptionInt, 1}}, + {3496, {wxSystemOptions, hasOption, 1}}, + {3497, {wxSystemOptions, isFalse, 1}}, + {3498, {wxSystemOptions, setOption_2_1, 2}}, + {3499, {wxSystemOptions, setOption_2_0, 2}}, + {3500, {wxAuiNotebookEvent, setSelection, 1}}, + {3501, {wxAuiNotebookEvent, getSelection, 0}}, + {3502, {wxAuiNotebookEvent, setOldSelection, 1}}, + {3503, {wxAuiNotebookEvent, getOldSelection, 0}}, + {3504, {wxAuiNotebookEvent, setDragSource, 1}}, + {3505, {wxAuiNotebookEvent, getDragSource, 0}}, + {3506, {wxAuiManagerEvent, setManager, 1}}, + {3507, {wxAuiManagerEvent, getManager, 0}}, + {3508, {wxAuiManagerEvent, setPane, 1}}, + {3509, {wxAuiManagerEvent, getPane, 0}}, + {3510, {wxAuiManagerEvent, setButton, 1}}, + {3511, {wxAuiManagerEvent, getButton, 0}}, + {3512, {wxAuiManagerEvent, setDC, 1}}, + {3513, {wxAuiManagerEvent, getDC, 0}}, + {3514, {wxAuiManagerEvent, veto, 1}}, + {3515, {wxAuiManagerEvent, getVeto, 0}}, + {3516, {wxAuiManagerEvent, setCanVeto, 1}}, + {3517, {wxAuiManagerEvent, canVeto, 0}}, + {3518, {wxLogNull, new, 0}}, + {3519, {wxLogNull, 'Destroy', undefined}}, + {3520, {wxTaskBarIcon, new, 0}}, + {3521, {wxTaskBarIcon, destruct, 0}}, + {3522, {wxTaskBarIcon, popupMenu, 1}}, + {3523, {wxTaskBarIcon, removeIcon, 0}}, + {3524, {wxTaskBarIcon, setIcon, 2}}, {-1, {mod, func, -1}} ]. diff --git a/lib/wx/src/gen/wxe_funcs.hrl b/lib/wx/src/gen/wxe_funcs.hrl index e6aced6e09..b6e507b11d 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-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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 @@ -1881,1422 +1881,1423 @@ -define(wxTreeCtrl_IsSelected, 2058). -define(wxTreeCtrl_IsVisible, 2059). -define(wxTreeCtrl_ItemHasChildren, 2060). --define(wxTreeCtrl_PrependItem, 2061). --define(wxTreeCtrl_ScrollTo, 2062). --define(wxTreeCtrl_SelectItem_1, 2063). --define(wxTreeCtrl_SelectItem_2, 2064). --define(wxTreeCtrl_SetIndent, 2065). --define(wxTreeCtrl_SetImageList, 2066). --define(wxTreeCtrl_SetItemBackgroundColour, 2067). --define(wxTreeCtrl_SetItemBold, 2068). --define(wxTreeCtrl_SetItemData, 2069). --define(wxTreeCtrl_SetItemDropHighlight, 2070). --define(wxTreeCtrl_SetItemFont, 2071). --define(wxTreeCtrl_SetItemHasChildren, 2072). --define(wxTreeCtrl_SetItemImage_2, 2073). --define(wxTreeCtrl_SetItemImage_3, 2074). --define(wxTreeCtrl_SetItemText, 2075). --define(wxTreeCtrl_SetItemTextColour, 2076). --define(wxTreeCtrl_SetStateImageList, 2077). --define(wxTreeCtrl_SetWindowStyle, 2078). --define(wxTreeCtrl_SortChildren, 2079). --define(wxTreeCtrl_Toggle, 2080). --define(wxTreeCtrl_ToggleItemSelection, 2081). --define(wxTreeCtrl_Unselect, 2082). --define(wxTreeCtrl_UnselectAll, 2083). --define(wxTreeCtrl_UnselectItem, 2084). --define(wxScrollBar_new_0, 2085). --define(wxScrollBar_new_3, 2086). --define(wxScrollBar_destruct, 2087). --define(wxScrollBar_Create, 2088). --define(wxScrollBar_GetRange, 2089). --define(wxScrollBar_GetPageSize, 2090). --define(wxScrollBar_GetThumbPosition, 2091). --define(wxScrollBar_GetThumbSize, 2092). --define(wxScrollBar_SetThumbPosition, 2093). --define(wxScrollBar_SetScrollbar, 2094). --define(wxSpinButton_new_2, 2096). --define(wxSpinButton_new_0, 2097). --define(wxSpinButton_Create, 2098). --define(wxSpinButton_GetMax, 2099). --define(wxSpinButton_GetMin, 2100). --define(wxSpinButton_GetValue, 2101). --define(wxSpinButton_SetRange, 2102). --define(wxSpinButton_SetValue, 2103). --define(wxSpinButton_destroy, 2104). --define(wxSpinCtrl_new_0, 2105). --define(wxSpinCtrl_new_2, 2106). --define(wxSpinCtrl_Create, 2108). --define(wxSpinCtrl_SetValue_1_1, 2111). --define(wxSpinCtrl_SetValue_1_0, 2112). --define(wxSpinCtrl_GetValue, 2114). --define(wxSpinCtrl_SetRange, 2116). --define(wxSpinCtrl_SetSelection, 2117). --define(wxSpinCtrl_GetMin, 2119). --define(wxSpinCtrl_GetMax, 2121). --define(wxSpinCtrl_destroy, 2122). --define(wxStaticText_new_0, 2123). --define(wxStaticText_new_4, 2124). --define(wxStaticText_Create, 2125). --define(wxStaticText_GetLabel, 2126). --define(wxStaticText_SetLabel, 2127). --define(wxStaticText_Wrap, 2128). --define(wxStaticText_destroy, 2129). --define(wxStaticBitmap_new_0, 2130). --define(wxStaticBitmap_new_4, 2131). --define(wxStaticBitmap_Create, 2132). --define(wxStaticBitmap_GetBitmap, 2133). --define(wxStaticBitmap_SetBitmap, 2134). --define(wxStaticBitmap_destroy, 2135). --define(wxRadioBox_new, 2136). --define(wxRadioBox_destruct, 2138). --define(wxRadioBox_Create, 2139). --define(wxRadioBox_Enable_2, 2140). --define(wxRadioBox_Enable_1, 2141). --define(wxRadioBox_GetSelection, 2142). --define(wxRadioBox_GetString, 2143). --define(wxRadioBox_SetSelection, 2144). --define(wxRadioBox_Show_2, 2145). --define(wxRadioBox_Show_1, 2146). --define(wxRadioBox_GetColumnCount, 2147). --define(wxRadioBox_GetItemHelpText, 2148). --define(wxRadioBox_GetItemToolTip, 2149). --define(wxRadioBox_GetItemFromPoint, 2151). --define(wxRadioBox_GetRowCount, 2152). --define(wxRadioBox_IsItemEnabled, 2153). --define(wxRadioBox_IsItemShown, 2154). --define(wxRadioBox_SetItemHelpText, 2155). --define(wxRadioBox_SetItemToolTip, 2156). --define(wxRadioButton_new_0, 2157). --define(wxRadioButton_new_4, 2158). --define(wxRadioButton_Create, 2159). --define(wxRadioButton_GetValue, 2160). --define(wxRadioButton_SetValue, 2161). --define(wxRadioButton_destroy, 2162). --define(wxSlider_new_6, 2164). --define(wxSlider_new_0, 2165). --define(wxSlider_Create, 2166). --define(wxSlider_GetLineSize, 2167). --define(wxSlider_GetMax, 2168). --define(wxSlider_GetMin, 2169). --define(wxSlider_GetPageSize, 2170). --define(wxSlider_GetThumbLength, 2171). --define(wxSlider_GetValue, 2172). --define(wxSlider_SetLineSize, 2173). --define(wxSlider_SetPageSize, 2174). --define(wxSlider_SetRange, 2175). --define(wxSlider_SetThumbLength, 2176). --define(wxSlider_SetValue, 2177). --define(wxSlider_destroy, 2178). --define(wxDialog_new_4, 2180). --define(wxDialog_new_0, 2181). --define(wxDialog_destruct, 2183). --define(wxDialog_Create, 2184). --define(wxDialog_CreateButtonSizer, 2185). --define(wxDialog_CreateStdDialogButtonSizer, 2186). --define(wxDialog_EndModal, 2187). --define(wxDialog_GetAffirmativeId, 2188). --define(wxDialog_GetReturnCode, 2189). --define(wxDialog_IsModal, 2190). --define(wxDialog_SetAffirmativeId, 2191). --define(wxDialog_SetReturnCode, 2192). --define(wxDialog_Show, 2193). --define(wxDialog_ShowModal, 2194). --define(wxColourDialog_new_0, 2195). --define(wxColourDialog_new_2, 2196). --define(wxColourDialog_destruct, 2197). --define(wxColourDialog_Create, 2198). --define(wxColourDialog_GetColourData, 2199). --define(wxColourData_new_0, 2200). --define(wxColourData_new_1, 2201). --define(wxColourData_destruct, 2202). --define(wxColourData_GetChooseFull, 2203). --define(wxColourData_GetColour, 2204). --define(wxColourData_GetCustomColour, 2206). --define(wxColourData_SetChooseFull, 2207). --define(wxColourData_SetColour, 2208). --define(wxColourData_SetCustomColour, 2209). --define(wxPalette_new_0, 2210). --define(wxPalette_new_4, 2211). --define(wxPalette_destruct, 2213). --define(wxPalette_Create, 2214). --define(wxPalette_GetColoursCount, 2215). --define(wxPalette_GetPixel, 2216). --define(wxPalette_GetRGB, 2217). --define(wxPalette_IsOk, 2218). --define(wxDirDialog_new, 2222). --define(wxDirDialog_destruct, 2223). --define(wxDirDialog_GetPath, 2224). --define(wxDirDialog_GetMessage, 2225). --define(wxDirDialog_SetMessage, 2226). --define(wxDirDialog_SetPath, 2227). --define(wxFileDialog_new, 2231). --define(wxFileDialog_destruct, 2232). --define(wxFileDialog_GetDirectory, 2233). --define(wxFileDialog_GetFilename, 2234). --define(wxFileDialog_GetFilenames, 2235). --define(wxFileDialog_GetFilterIndex, 2236). --define(wxFileDialog_GetMessage, 2237). --define(wxFileDialog_GetPath, 2238). --define(wxFileDialog_GetPaths, 2239). --define(wxFileDialog_GetWildcard, 2240). --define(wxFileDialog_SetDirectory, 2241). --define(wxFileDialog_SetFilename, 2242). --define(wxFileDialog_SetFilterIndex, 2243). --define(wxFileDialog_SetMessage, 2244). --define(wxFileDialog_SetPath, 2245). --define(wxFileDialog_SetWildcard, 2246). --define(wxPickerBase_SetInternalMargin, 2247). --define(wxPickerBase_GetInternalMargin, 2248). --define(wxPickerBase_SetTextCtrlProportion, 2249). --define(wxPickerBase_SetPickerCtrlProportion, 2250). --define(wxPickerBase_GetTextCtrlProportion, 2251). --define(wxPickerBase_GetPickerCtrlProportion, 2252). --define(wxPickerBase_HasTextCtrl, 2253). --define(wxPickerBase_GetTextCtrl, 2254). --define(wxPickerBase_IsTextCtrlGrowable, 2255). --define(wxPickerBase_SetPickerCtrlGrowable, 2256). --define(wxPickerBase_SetTextCtrlGrowable, 2257). --define(wxPickerBase_IsPickerCtrlGrowable, 2258). --define(wxFilePickerCtrl_new_0, 2259). --define(wxFilePickerCtrl_new_3, 2260). --define(wxFilePickerCtrl_Create, 2261). --define(wxFilePickerCtrl_GetPath, 2262). --define(wxFilePickerCtrl_SetPath, 2263). --define(wxFilePickerCtrl_destroy, 2264). --define(wxDirPickerCtrl_new_0, 2265). --define(wxDirPickerCtrl_new_3, 2266). --define(wxDirPickerCtrl_Create, 2267). --define(wxDirPickerCtrl_GetPath, 2268). --define(wxDirPickerCtrl_SetPath, 2269). --define(wxDirPickerCtrl_destroy, 2270). --define(wxColourPickerCtrl_new_0, 2271). --define(wxColourPickerCtrl_new_3, 2272). --define(wxColourPickerCtrl_Create, 2273). --define(wxColourPickerCtrl_GetColour, 2274). --define(wxColourPickerCtrl_SetColour_1_1, 2275). --define(wxColourPickerCtrl_SetColour_1_0, 2276). --define(wxColourPickerCtrl_destroy, 2277). --define(wxDatePickerCtrl_new_0, 2278). --define(wxDatePickerCtrl_new_3, 2279). --define(wxDatePickerCtrl_GetRange, 2280). --define(wxDatePickerCtrl_GetValue, 2281). --define(wxDatePickerCtrl_SetRange, 2282). --define(wxDatePickerCtrl_SetValue, 2283). --define(wxDatePickerCtrl_destroy, 2284). --define(wxFontPickerCtrl_new_0, 2285). --define(wxFontPickerCtrl_new_3, 2286). --define(wxFontPickerCtrl_Create, 2287). --define(wxFontPickerCtrl_GetSelectedFont, 2288). --define(wxFontPickerCtrl_SetSelectedFont, 2289). --define(wxFontPickerCtrl_GetMaxPointSize, 2290). --define(wxFontPickerCtrl_SetMaxPointSize, 2291). --define(wxFontPickerCtrl_destroy, 2292). --define(wxFindReplaceDialog_new_0, 2295). --define(wxFindReplaceDialog_new_4, 2296). --define(wxFindReplaceDialog_destruct, 2297). --define(wxFindReplaceDialog_Create, 2298). --define(wxFindReplaceDialog_GetData, 2299). --define(wxFindReplaceData_new_0, 2300). --define(wxFindReplaceData_new_1, 2301). --define(wxFindReplaceData_GetFindString, 2302). --define(wxFindReplaceData_GetReplaceString, 2303). --define(wxFindReplaceData_GetFlags, 2304). --define(wxFindReplaceData_SetFlags, 2305). --define(wxFindReplaceData_SetFindString, 2306). --define(wxFindReplaceData_SetReplaceString, 2307). --define(wxFindReplaceData_destroy, 2308). --define(wxMultiChoiceDialog_new_0, 2309). --define(wxMultiChoiceDialog_new_5, 2311). --define(wxMultiChoiceDialog_GetSelections, 2312). --define(wxMultiChoiceDialog_SetSelections, 2313). --define(wxMultiChoiceDialog_destroy, 2314). --define(wxSingleChoiceDialog_new_0, 2315). --define(wxSingleChoiceDialog_new_5, 2317). --define(wxSingleChoiceDialog_GetSelection, 2318). --define(wxSingleChoiceDialog_GetStringSelection, 2319). --define(wxSingleChoiceDialog_SetSelection, 2320). --define(wxSingleChoiceDialog_destroy, 2321). --define(wxTextEntryDialog_new, 2322). --define(wxTextEntryDialog_GetValue, 2323). --define(wxTextEntryDialog_SetValue, 2324). --define(wxTextEntryDialog_destroy, 2325). --define(wxPasswordEntryDialog_new, 2326). --define(wxPasswordEntryDialog_destroy, 2327). --define(wxFontData_new_0, 2328). --define(wxFontData_new_1, 2329). --define(wxFontData_destruct, 2330). --define(wxFontData_EnableEffects, 2331). --define(wxFontData_GetAllowSymbols, 2332). --define(wxFontData_GetColour, 2333). --define(wxFontData_GetChosenFont, 2334). --define(wxFontData_GetEnableEffects, 2335). --define(wxFontData_GetInitialFont, 2336). --define(wxFontData_GetShowHelp, 2337). --define(wxFontData_SetAllowSymbols, 2338). --define(wxFontData_SetChosenFont, 2339). --define(wxFontData_SetColour, 2340). --define(wxFontData_SetInitialFont, 2341). --define(wxFontData_SetRange, 2342). --define(wxFontData_SetShowHelp, 2343). --define(wxFontDialog_new_0, 2347). --define(wxFontDialog_new_2, 2349). --define(wxFontDialog_Create, 2351). --define(wxFontDialog_GetFontData, 2352). --define(wxFontDialog_destroy, 2354). --define(wxProgressDialog_new, 2355). --define(wxProgressDialog_destruct, 2356). --define(wxProgressDialog_Resume, 2357). --define(wxProgressDialog_Update_2, 2358). --define(wxProgressDialog_Update_0, 2359). --define(wxMessageDialog_new, 2360). --define(wxMessageDialog_destruct, 2361). --define(wxPageSetupDialog_new, 2362). --define(wxPageSetupDialog_destruct, 2363). --define(wxPageSetupDialog_GetPageSetupData, 2364). --define(wxPageSetupDialog_ShowModal, 2365). --define(wxPageSetupDialogData_new_0, 2366). --define(wxPageSetupDialogData_new_1_0, 2367). --define(wxPageSetupDialogData_new_1_1, 2368). --define(wxPageSetupDialogData_destruct, 2369). --define(wxPageSetupDialogData_EnableHelp, 2370). --define(wxPageSetupDialogData_EnableMargins, 2371). --define(wxPageSetupDialogData_EnableOrientation, 2372). --define(wxPageSetupDialogData_EnablePaper, 2373). --define(wxPageSetupDialogData_EnablePrinter, 2374). --define(wxPageSetupDialogData_GetDefaultMinMargins, 2375). --define(wxPageSetupDialogData_GetEnableMargins, 2376). --define(wxPageSetupDialogData_GetEnableOrientation, 2377). --define(wxPageSetupDialogData_GetEnablePaper, 2378). --define(wxPageSetupDialogData_GetEnablePrinter, 2379). --define(wxPageSetupDialogData_GetEnableHelp, 2380). --define(wxPageSetupDialogData_GetDefaultInfo, 2381). --define(wxPageSetupDialogData_GetMarginTopLeft, 2382). --define(wxPageSetupDialogData_GetMarginBottomRight, 2383). --define(wxPageSetupDialogData_GetMinMarginTopLeft, 2384). --define(wxPageSetupDialogData_GetMinMarginBottomRight, 2385). --define(wxPageSetupDialogData_GetPaperId, 2386). --define(wxPageSetupDialogData_GetPaperSize, 2387). --define(wxPageSetupDialogData_GetPrintData, 2389). --define(wxPageSetupDialogData_IsOk, 2390). --define(wxPageSetupDialogData_SetDefaultInfo, 2391). --define(wxPageSetupDialogData_SetDefaultMinMargins, 2392). --define(wxPageSetupDialogData_SetMarginTopLeft, 2393). --define(wxPageSetupDialogData_SetMarginBottomRight, 2394). --define(wxPageSetupDialogData_SetMinMarginTopLeft, 2395). --define(wxPageSetupDialogData_SetMinMarginBottomRight, 2396). --define(wxPageSetupDialogData_SetPaperId, 2397). --define(wxPageSetupDialogData_SetPaperSize_1_1, 2398). --define(wxPageSetupDialogData_SetPaperSize_1_0, 2399). --define(wxPageSetupDialogData_SetPrintData, 2400). --define(wxPrintDialog_new_2_0, 2401). --define(wxPrintDialog_new_2_1, 2402). --define(wxPrintDialog_destruct, 2403). --define(wxPrintDialog_GetPrintDialogData, 2404). --define(wxPrintDialog_GetPrintDC, 2405). --define(wxPrintDialogData_new_0, 2406). --define(wxPrintDialogData_new_1_1, 2407). --define(wxPrintDialogData_new_1_0, 2408). --define(wxPrintDialogData_destruct, 2409). --define(wxPrintDialogData_EnableHelp, 2410). --define(wxPrintDialogData_EnablePageNumbers, 2411). --define(wxPrintDialogData_EnablePrintToFile, 2412). --define(wxPrintDialogData_EnableSelection, 2413). --define(wxPrintDialogData_GetAllPages, 2414). --define(wxPrintDialogData_GetCollate, 2415). --define(wxPrintDialogData_GetFromPage, 2416). --define(wxPrintDialogData_GetMaxPage, 2417). --define(wxPrintDialogData_GetMinPage, 2418). --define(wxPrintDialogData_GetNoCopies, 2419). --define(wxPrintDialogData_GetPrintData, 2420). --define(wxPrintDialogData_GetPrintToFile, 2421). --define(wxPrintDialogData_GetSelection, 2422). --define(wxPrintDialogData_GetToPage, 2423). --define(wxPrintDialogData_IsOk, 2424). --define(wxPrintDialogData_SetCollate, 2425). --define(wxPrintDialogData_SetFromPage, 2426). --define(wxPrintDialogData_SetMaxPage, 2427). --define(wxPrintDialogData_SetMinPage, 2428). --define(wxPrintDialogData_SetNoCopies, 2429). --define(wxPrintDialogData_SetPrintData, 2430). --define(wxPrintDialogData_SetPrintToFile, 2431). --define(wxPrintDialogData_SetSelection, 2432). --define(wxPrintDialogData_SetToPage, 2433). --define(wxPrintData_new_0, 2434). --define(wxPrintData_new_1, 2435). --define(wxPrintData_destruct, 2436). --define(wxPrintData_GetCollate, 2437). --define(wxPrintData_GetBin, 2438). --define(wxPrintData_GetColour, 2439). --define(wxPrintData_GetDuplex, 2440). --define(wxPrintData_GetNoCopies, 2441). --define(wxPrintData_GetOrientation, 2442). --define(wxPrintData_GetPaperId, 2443). --define(wxPrintData_GetPrinterName, 2444). --define(wxPrintData_GetQuality, 2445). --define(wxPrintData_IsOk, 2446). --define(wxPrintData_SetBin, 2447). --define(wxPrintData_SetCollate, 2448). --define(wxPrintData_SetColour, 2449). --define(wxPrintData_SetDuplex, 2450). --define(wxPrintData_SetNoCopies, 2451). --define(wxPrintData_SetOrientation, 2452). --define(wxPrintData_SetPaperId, 2453). --define(wxPrintData_SetPrinterName, 2454). --define(wxPrintData_SetQuality, 2455). --define(wxPrintPreview_new_2, 2458). --define(wxPrintPreview_new_3, 2459). --define(wxPrintPreview_destruct, 2461). --define(wxPrintPreview_GetCanvas, 2462). --define(wxPrintPreview_GetCurrentPage, 2463). --define(wxPrintPreview_GetFrame, 2464). --define(wxPrintPreview_GetMaxPage, 2465). --define(wxPrintPreview_GetMinPage, 2466). --define(wxPrintPreview_GetPrintout, 2467). --define(wxPrintPreview_GetPrintoutForPrinting, 2468). --define(wxPrintPreview_IsOk, 2469). --define(wxPrintPreview_PaintPage, 2470). --define(wxPrintPreview_Print, 2471). --define(wxPrintPreview_RenderPage, 2472). --define(wxPrintPreview_SetCanvas, 2473). --define(wxPrintPreview_SetCurrentPage, 2474). --define(wxPrintPreview_SetFrame, 2475). --define(wxPrintPreview_SetPrintout, 2476). --define(wxPrintPreview_SetZoom, 2477). --define(wxPreviewFrame_new, 2478). --define(wxPreviewFrame_destruct, 2479). --define(wxPreviewFrame_CreateControlBar, 2480). --define(wxPreviewFrame_CreateCanvas, 2481). --define(wxPreviewFrame_Initialize, 2482). --define(wxPreviewFrame_OnCloseWindow, 2483). --define(wxPreviewControlBar_new, 2484). --define(wxPreviewControlBar_destruct, 2485). --define(wxPreviewControlBar_CreateButtons, 2486). --define(wxPreviewControlBar_GetPrintPreview, 2487). --define(wxPreviewControlBar_GetZoomControl, 2488). --define(wxPreviewControlBar_SetZoomControl, 2489). --define(wxPrinter_new, 2491). --define(wxPrinter_CreateAbortWindow, 2492). --define(wxPrinter_GetAbort, 2493). --define(wxPrinter_GetLastError, 2494). --define(wxPrinter_GetPrintDialogData, 2495). --define(wxPrinter_Print, 2496). --define(wxPrinter_PrintDialog, 2497). --define(wxPrinter_ReportError, 2498). --define(wxPrinter_Setup, 2499). --define(wxPrinter_destroy, 2500). --define(wxXmlResource_new_1, 2501). --define(wxXmlResource_new_2, 2502). --define(wxXmlResource_destruct, 2503). --define(wxXmlResource_AttachUnknownControl, 2504). --define(wxXmlResource_ClearHandlers, 2505). --define(wxXmlResource_CompareVersion, 2506). --define(wxXmlResource_Get, 2507). --define(wxXmlResource_GetFlags, 2508). --define(wxXmlResource_GetVersion, 2509). --define(wxXmlResource_GetXRCID, 2510). --define(wxXmlResource_InitAllHandlers, 2511). --define(wxXmlResource_Load, 2512). --define(wxXmlResource_LoadBitmap, 2513). --define(wxXmlResource_LoadDialog_2, 2514). --define(wxXmlResource_LoadDialog_3, 2515). --define(wxXmlResource_LoadFrame_2, 2516). --define(wxXmlResource_LoadFrame_3, 2517). --define(wxXmlResource_LoadIcon, 2518). --define(wxXmlResource_LoadMenu, 2519). --define(wxXmlResource_LoadMenuBar_2, 2520). --define(wxXmlResource_LoadMenuBar_1, 2521). --define(wxXmlResource_LoadPanel_2, 2522). --define(wxXmlResource_LoadPanel_3, 2523). --define(wxXmlResource_LoadToolBar, 2524). --define(wxXmlResource_Set, 2525). --define(wxXmlResource_SetFlags, 2526). --define(wxXmlResource_Unload, 2527). --define(wxXmlResource_xrcctrl, 2528). --define(wxHtmlEasyPrinting_new, 2529). --define(wxHtmlEasyPrinting_destruct, 2530). --define(wxHtmlEasyPrinting_GetPrintData, 2531). --define(wxHtmlEasyPrinting_GetPageSetupData, 2532). --define(wxHtmlEasyPrinting_PreviewFile, 2533). --define(wxHtmlEasyPrinting_PreviewText, 2534). --define(wxHtmlEasyPrinting_PrintFile, 2535). --define(wxHtmlEasyPrinting_PrintText, 2536). --define(wxHtmlEasyPrinting_PageSetup, 2537). --define(wxHtmlEasyPrinting_SetFonts, 2538). --define(wxHtmlEasyPrinting_SetHeader, 2539). --define(wxHtmlEasyPrinting_SetFooter, 2540). --define(wxGLCanvas_new_2, 2542). --define(wxGLCanvas_new_3_1, 2543). --define(wxGLCanvas_new_3_0, 2544). --define(wxGLCanvas_GetContext, 2545). --define(wxGLCanvas_SetCurrent, 2547). --define(wxGLCanvas_SwapBuffers, 2548). --define(wxGLCanvas_destroy, 2549). --define(wxAuiManager_new, 2550). --define(wxAuiManager_destruct, 2551). --define(wxAuiManager_AddPane_2_1, 2552). --define(wxAuiManager_AddPane_3, 2553). --define(wxAuiManager_AddPane_2_0, 2554). --define(wxAuiManager_DetachPane, 2555). --define(wxAuiManager_GetAllPanes, 2556). --define(wxAuiManager_GetArtProvider, 2557). --define(wxAuiManager_GetDockSizeConstraint, 2558). --define(wxAuiManager_GetFlags, 2559). --define(wxAuiManager_GetManagedWindow, 2560). --define(wxAuiManager_GetManager, 2561). --define(wxAuiManager_GetPane_1_1, 2562). --define(wxAuiManager_GetPane_1_0, 2563). --define(wxAuiManager_HideHint, 2564). --define(wxAuiManager_InsertPane, 2565). --define(wxAuiManager_LoadPaneInfo, 2566). --define(wxAuiManager_LoadPerspective, 2567). --define(wxAuiManager_SavePaneInfo, 2568). --define(wxAuiManager_SavePerspective, 2569). --define(wxAuiManager_SetArtProvider, 2570). --define(wxAuiManager_SetDockSizeConstraint, 2571). --define(wxAuiManager_SetFlags, 2572). --define(wxAuiManager_SetManagedWindow, 2573). --define(wxAuiManager_ShowHint, 2574). --define(wxAuiManager_UnInit, 2575). --define(wxAuiManager_Update, 2576). --define(wxAuiPaneInfo_new_0, 2577). --define(wxAuiPaneInfo_new_1, 2578). --define(wxAuiPaneInfo_destruct, 2579). --define(wxAuiPaneInfo_BestSize_1, 2580). --define(wxAuiPaneInfo_BestSize_2, 2581). --define(wxAuiPaneInfo_Bottom, 2582). --define(wxAuiPaneInfo_BottomDockable, 2583). --define(wxAuiPaneInfo_Caption, 2584). --define(wxAuiPaneInfo_CaptionVisible, 2585). --define(wxAuiPaneInfo_Centre, 2586). --define(wxAuiPaneInfo_CentrePane, 2587). --define(wxAuiPaneInfo_CloseButton, 2588). --define(wxAuiPaneInfo_DefaultPane, 2589). --define(wxAuiPaneInfo_DestroyOnClose, 2590). --define(wxAuiPaneInfo_Direction, 2591). --define(wxAuiPaneInfo_Dock, 2592). --define(wxAuiPaneInfo_Dockable, 2593). --define(wxAuiPaneInfo_Fixed, 2594). --define(wxAuiPaneInfo_Float, 2595). --define(wxAuiPaneInfo_Floatable, 2596). --define(wxAuiPaneInfo_FloatingPosition_1, 2597). --define(wxAuiPaneInfo_FloatingPosition_2, 2598). --define(wxAuiPaneInfo_FloatingSize_1, 2599). --define(wxAuiPaneInfo_FloatingSize_2, 2600). --define(wxAuiPaneInfo_Gripper, 2601). --define(wxAuiPaneInfo_GripperTop, 2602). --define(wxAuiPaneInfo_HasBorder, 2603). --define(wxAuiPaneInfo_HasCaption, 2604). --define(wxAuiPaneInfo_HasCloseButton, 2605). --define(wxAuiPaneInfo_HasFlag, 2606). --define(wxAuiPaneInfo_HasGripper, 2607). --define(wxAuiPaneInfo_HasGripperTop, 2608). --define(wxAuiPaneInfo_HasMaximizeButton, 2609). --define(wxAuiPaneInfo_HasMinimizeButton, 2610). --define(wxAuiPaneInfo_HasPinButton, 2611). --define(wxAuiPaneInfo_Hide, 2612). --define(wxAuiPaneInfo_IsBottomDockable, 2613). --define(wxAuiPaneInfo_IsDocked, 2614). --define(wxAuiPaneInfo_IsFixed, 2615). --define(wxAuiPaneInfo_IsFloatable, 2616). --define(wxAuiPaneInfo_IsFloating, 2617). --define(wxAuiPaneInfo_IsLeftDockable, 2618). --define(wxAuiPaneInfo_IsMovable, 2619). --define(wxAuiPaneInfo_IsOk, 2620). --define(wxAuiPaneInfo_IsResizable, 2621). --define(wxAuiPaneInfo_IsRightDockable, 2622). --define(wxAuiPaneInfo_IsShown, 2623). --define(wxAuiPaneInfo_IsToolbar, 2624). --define(wxAuiPaneInfo_IsTopDockable, 2625). --define(wxAuiPaneInfo_Layer, 2626). --define(wxAuiPaneInfo_Left, 2627). --define(wxAuiPaneInfo_LeftDockable, 2628). --define(wxAuiPaneInfo_MaxSize_1, 2629). --define(wxAuiPaneInfo_MaxSize_2, 2630). --define(wxAuiPaneInfo_MaximizeButton, 2631). --define(wxAuiPaneInfo_MinSize_1, 2632). --define(wxAuiPaneInfo_MinSize_2, 2633). --define(wxAuiPaneInfo_MinimizeButton, 2634). --define(wxAuiPaneInfo_Movable, 2635). --define(wxAuiPaneInfo_Name, 2636). --define(wxAuiPaneInfo_PaneBorder, 2637). --define(wxAuiPaneInfo_PinButton, 2638). --define(wxAuiPaneInfo_Position, 2639). --define(wxAuiPaneInfo_Resizable, 2640). --define(wxAuiPaneInfo_Right, 2641). --define(wxAuiPaneInfo_RightDockable, 2642). --define(wxAuiPaneInfo_Row, 2643). --define(wxAuiPaneInfo_SafeSet, 2644). --define(wxAuiPaneInfo_SetFlag, 2645). --define(wxAuiPaneInfo_Show, 2646). --define(wxAuiPaneInfo_ToolbarPane, 2647). --define(wxAuiPaneInfo_Top, 2648). --define(wxAuiPaneInfo_TopDockable, 2649). --define(wxAuiPaneInfo_Window, 2650). --define(wxAuiNotebook_new_0, 2651). --define(wxAuiNotebook_new_2, 2652). --define(wxAuiNotebook_AddPage, 2653). --define(wxAuiNotebook_Create, 2654). --define(wxAuiNotebook_DeletePage, 2655). --define(wxAuiNotebook_GetArtProvider, 2656). --define(wxAuiNotebook_GetPage, 2657). --define(wxAuiNotebook_GetPageBitmap, 2658). --define(wxAuiNotebook_GetPageCount, 2659). --define(wxAuiNotebook_GetPageIndex, 2660). --define(wxAuiNotebook_GetPageText, 2661). --define(wxAuiNotebook_GetSelection, 2662). --define(wxAuiNotebook_InsertPage, 2663). --define(wxAuiNotebook_RemovePage, 2664). --define(wxAuiNotebook_SetArtProvider, 2665). --define(wxAuiNotebook_SetFont, 2666). --define(wxAuiNotebook_SetPageBitmap, 2667). --define(wxAuiNotebook_SetPageText, 2668). --define(wxAuiNotebook_SetSelection, 2669). --define(wxAuiNotebook_SetTabCtrlHeight, 2670). --define(wxAuiNotebook_SetUniformBitmapSize, 2671). --define(wxAuiNotebook_destroy, 2672). --define(wxMDIParentFrame_new_0, 2673). --define(wxMDIParentFrame_new_4, 2674). --define(wxMDIParentFrame_destruct, 2675). --define(wxMDIParentFrame_ActivateNext, 2676). --define(wxMDIParentFrame_ActivatePrevious, 2677). --define(wxMDIParentFrame_ArrangeIcons, 2678). --define(wxMDIParentFrame_Cascade, 2679). --define(wxMDIParentFrame_Create, 2680). --define(wxMDIParentFrame_GetActiveChild, 2681). --define(wxMDIParentFrame_GetClientWindow, 2682). --define(wxMDIParentFrame_Tile, 2683). --define(wxMDIChildFrame_new_0, 2684). --define(wxMDIChildFrame_new_4, 2685). --define(wxMDIChildFrame_destruct, 2686). --define(wxMDIChildFrame_Activate, 2687). --define(wxMDIChildFrame_Create, 2688). --define(wxMDIChildFrame_Maximize, 2689). --define(wxMDIChildFrame_Restore, 2690). --define(wxMDIClientWindow_new_0, 2691). --define(wxMDIClientWindow_new_2, 2692). --define(wxMDIClientWindow_destruct, 2693). --define(wxMDIClientWindow_CreateClient, 2694). --define(wxLayoutAlgorithm_new, 2695). --define(wxLayoutAlgorithm_LayoutFrame, 2696). --define(wxLayoutAlgorithm_LayoutMDIFrame, 2697). --define(wxLayoutAlgorithm_LayoutWindow, 2698). --define(wxLayoutAlgorithm_destroy, 2699). --define(wxEvent_GetId, 2700). --define(wxEvent_GetSkipped, 2701). --define(wxEvent_GetTimestamp, 2702). --define(wxEvent_IsCommandEvent, 2703). --define(wxEvent_ResumePropagation, 2704). --define(wxEvent_ShouldPropagate, 2705). --define(wxEvent_Skip, 2706). --define(wxEvent_StopPropagation, 2707). --define(wxCommandEvent_getClientData, 2708). --define(wxCommandEvent_GetExtraLong, 2709). --define(wxCommandEvent_GetInt, 2710). --define(wxCommandEvent_GetSelection, 2711). --define(wxCommandEvent_GetString, 2712). --define(wxCommandEvent_IsChecked, 2713). --define(wxCommandEvent_IsSelection, 2714). --define(wxCommandEvent_SetInt, 2715). --define(wxCommandEvent_SetString, 2716). --define(wxScrollEvent_GetOrientation, 2717). --define(wxScrollEvent_GetPosition, 2718). --define(wxScrollWinEvent_GetOrientation, 2719). --define(wxScrollWinEvent_GetPosition, 2720). --define(wxMouseEvent_AltDown, 2721). --define(wxMouseEvent_Button, 2722). --define(wxMouseEvent_ButtonDClick, 2723). --define(wxMouseEvent_ButtonDown, 2724). --define(wxMouseEvent_ButtonUp, 2725). --define(wxMouseEvent_CmdDown, 2726). --define(wxMouseEvent_ControlDown, 2727). --define(wxMouseEvent_Dragging, 2728). --define(wxMouseEvent_Entering, 2729). --define(wxMouseEvent_GetButton, 2730). --define(wxMouseEvent_GetPosition, 2733). --define(wxMouseEvent_GetLogicalPosition, 2734). --define(wxMouseEvent_GetLinesPerAction, 2735). --define(wxMouseEvent_GetWheelRotation, 2736). --define(wxMouseEvent_GetWheelDelta, 2737). --define(wxMouseEvent_GetX, 2738). --define(wxMouseEvent_GetY, 2739). --define(wxMouseEvent_IsButton, 2740). --define(wxMouseEvent_IsPageScroll, 2741). --define(wxMouseEvent_Leaving, 2742). --define(wxMouseEvent_LeftDClick, 2743). --define(wxMouseEvent_LeftDown, 2744). --define(wxMouseEvent_LeftIsDown, 2745). --define(wxMouseEvent_LeftUp, 2746). --define(wxMouseEvent_MetaDown, 2747). --define(wxMouseEvent_MiddleDClick, 2748). --define(wxMouseEvent_MiddleDown, 2749). --define(wxMouseEvent_MiddleIsDown, 2750). --define(wxMouseEvent_MiddleUp, 2751). --define(wxMouseEvent_Moving, 2752). --define(wxMouseEvent_RightDClick, 2753). --define(wxMouseEvent_RightDown, 2754). --define(wxMouseEvent_RightIsDown, 2755). --define(wxMouseEvent_RightUp, 2756). --define(wxMouseEvent_ShiftDown, 2757). --define(wxSetCursorEvent_GetCursor, 2758). --define(wxSetCursorEvent_GetX, 2759). --define(wxSetCursorEvent_GetY, 2760). --define(wxSetCursorEvent_HasCursor, 2761). --define(wxSetCursorEvent_SetCursor, 2762). --define(wxKeyEvent_AltDown, 2763). --define(wxKeyEvent_CmdDown, 2764). --define(wxKeyEvent_ControlDown, 2765). --define(wxKeyEvent_GetKeyCode, 2766). --define(wxKeyEvent_GetModifiers, 2767). --define(wxKeyEvent_GetPosition, 2770). --define(wxKeyEvent_GetRawKeyCode, 2771). --define(wxKeyEvent_GetRawKeyFlags, 2772). --define(wxKeyEvent_GetUnicodeKey, 2773). --define(wxKeyEvent_GetX, 2774). --define(wxKeyEvent_GetY, 2775). --define(wxKeyEvent_HasModifiers, 2776). --define(wxKeyEvent_MetaDown, 2777). --define(wxKeyEvent_ShiftDown, 2778). --define(wxSizeEvent_GetSize, 2779). --define(wxMoveEvent_GetPosition, 2780). --define(wxEraseEvent_GetDC, 2781). --define(wxFocusEvent_GetWindow, 2782). --define(wxChildFocusEvent_GetWindow, 2783). --define(wxMenuEvent_GetMenu, 2784). --define(wxMenuEvent_GetMenuId, 2785). --define(wxMenuEvent_IsPopup, 2786). --define(wxCloseEvent_CanVeto, 2787). --define(wxCloseEvent_GetLoggingOff, 2788). --define(wxCloseEvent_SetCanVeto, 2789). --define(wxCloseEvent_SetLoggingOff, 2790). --define(wxCloseEvent_Veto, 2791). --define(wxShowEvent_SetShow, 2792). --define(wxShowEvent_GetShow, 2793). --define(wxIconizeEvent_Iconized, 2794). --define(wxJoystickEvent_ButtonDown, 2795). --define(wxJoystickEvent_ButtonIsDown, 2796). --define(wxJoystickEvent_ButtonUp, 2797). --define(wxJoystickEvent_GetButtonChange, 2798). --define(wxJoystickEvent_GetButtonState, 2799). --define(wxJoystickEvent_GetJoystick, 2800). --define(wxJoystickEvent_GetPosition, 2801). --define(wxJoystickEvent_GetZPosition, 2802). --define(wxJoystickEvent_IsButton, 2803). --define(wxJoystickEvent_IsMove, 2804). --define(wxJoystickEvent_IsZMove, 2805). --define(wxUpdateUIEvent_CanUpdate, 2806). --define(wxUpdateUIEvent_Check, 2807). --define(wxUpdateUIEvent_Enable, 2808). --define(wxUpdateUIEvent_Show, 2809). --define(wxUpdateUIEvent_GetChecked, 2810). --define(wxUpdateUIEvent_GetEnabled, 2811). --define(wxUpdateUIEvent_GetShown, 2812). --define(wxUpdateUIEvent_GetSetChecked, 2813). --define(wxUpdateUIEvent_GetSetEnabled, 2814). --define(wxUpdateUIEvent_GetSetShown, 2815). --define(wxUpdateUIEvent_GetSetText, 2816). --define(wxUpdateUIEvent_GetText, 2817). --define(wxUpdateUIEvent_GetMode, 2818). --define(wxUpdateUIEvent_GetUpdateInterval, 2819). --define(wxUpdateUIEvent_ResetUpdateTime, 2820). --define(wxUpdateUIEvent_SetMode, 2821). --define(wxUpdateUIEvent_SetText, 2822). --define(wxUpdateUIEvent_SetUpdateInterval, 2823). --define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2824). --define(wxPaletteChangedEvent_SetChangedWindow, 2825). --define(wxPaletteChangedEvent_GetChangedWindow, 2826). --define(wxQueryNewPaletteEvent_SetPaletteRealized, 2827). --define(wxQueryNewPaletteEvent_GetPaletteRealized, 2828). --define(wxNavigationKeyEvent_GetDirection, 2829). --define(wxNavigationKeyEvent_SetDirection, 2830). --define(wxNavigationKeyEvent_IsWindowChange, 2831). --define(wxNavigationKeyEvent_SetWindowChange, 2832). --define(wxNavigationKeyEvent_IsFromTab, 2833). --define(wxNavigationKeyEvent_SetFromTab, 2834). --define(wxNavigationKeyEvent_GetCurrentFocus, 2835). --define(wxNavigationKeyEvent_SetCurrentFocus, 2836). --define(wxHelpEvent_GetOrigin, 2837). --define(wxHelpEvent_GetPosition, 2838). --define(wxHelpEvent_SetOrigin, 2839). --define(wxHelpEvent_SetPosition, 2840). --define(wxContextMenuEvent_GetPosition, 2841). --define(wxContextMenuEvent_SetPosition, 2842). --define(wxIdleEvent_CanSend, 2843). --define(wxIdleEvent_GetMode, 2844). --define(wxIdleEvent_RequestMore, 2845). --define(wxIdleEvent_MoreRequested, 2846). --define(wxIdleEvent_SetMode, 2847). --define(wxGridEvent_AltDown, 2848). --define(wxGridEvent_ControlDown, 2849). --define(wxGridEvent_GetCol, 2850). --define(wxGridEvent_GetPosition, 2851). --define(wxGridEvent_GetRow, 2852). --define(wxGridEvent_MetaDown, 2853). --define(wxGridEvent_Selecting, 2854). --define(wxGridEvent_ShiftDown, 2855). --define(wxNotifyEvent_Allow, 2856). --define(wxNotifyEvent_IsAllowed, 2857). --define(wxNotifyEvent_Veto, 2858). --define(wxSashEvent_GetEdge, 2859). --define(wxSashEvent_GetDragRect, 2860). --define(wxSashEvent_GetDragStatus, 2861). --define(wxListEvent_GetCacheFrom, 2862). --define(wxListEvent_GetCacheTo, 2863). --define(wxListEvent_GetKeyCode, 2864). --define(wxListEvent_GetIndex, 2865). --define(wxListEvent_GetColumn, 2866). --define(wxListEvent_GetPoint, 2867). --define(wxListEvent_GetLabel, 2868). --define(wxListEvent_GetText, 2869). --define(wxListEvent_GetImage, 2870). --define(wxListEvent_GetData, 2871). --define(wxListEvent_GetMask, 2872). --define(wxListEvent_GetItem, 2873). --define(wxListEvent_IsEditCancelled, 2874). --define(wxDateEvent_GetDate, 2875). --define(wxCalendarEvent_GetWeekDay, 2876). --define(wxFileDirPickerEvent_GetPath, 2877). --define(wxColourPickerEvent_GetColour, 2878). --define(wxFontPickerEvent_GetFont, 2879). --define(wxStyledTextEvent_GetPosition, 2880). --define(wxStyledTextEvent_GetKey, 2881). --define(wxStyledTextEvent_GetModifiers, 2882). --define(wxStyledTextEvent_GetModificationType, 2883). --define(wxStyledTextEvent_GetText, 2884). --define(wxStyledTextEvent_GetLength, 2885). --define(wxStyledTextEvent_GetLinesAdded, 2886). --define(wxStyledTextEvent_GetLine, 2887). --define(wxStyledTextEvent_GetFoldLevelNow, 2888). --define(wxStyledTextEvent_GetFoldLevelPrev, 2889). --define(wxStyledTextEvent_GetMargin, 2890). --define(wxStyledTextEvent_GetMessage, 2891). --define(wxStyledTextEvent_GetWParam, 2892). --define(wxStyledTextEvent_GetLParam, 2893). --define(wxStyledTextEvent_GetListType, 2894). --define(wxStyledTextEvent_GetX, 2895). --define(wxStyledTextEvent_GetY, 2896). --define(wxStyledTextEvent_GetDragText, 2897). --define(wxStyledTextEvent_GetDragAllowMove, 2898). --define(wxStyledTextEvent_GetDragResult, 2899). --define(wxStyledTextEvent_GetShift, 2900). --define(wxStyledTextEvent_GetControl, 2901). --define(wxStyledTextEvent_GetAlt, 2902). --define(utils_wxGetKeyState, 2903). --define(utils_wxGetMousePosition, 2904). --define(utils_wxGetMouseState, 2905). --define(utils_wxSetDetectableAutoRepeat, 2906). --define(utils_wxBell, 2907). --define(utils_wxFindMenuItemId, 2908). --define(utils_wxGenericFindWindowAtPoint, 2909). --define(utils_wxFindWindowAtPoint, 2910). --define(utils_wxBeginBusyCursor, 2911). --define(utils_wxEndBusyCursor, 2912). --define(utils_wxIsBusy, 2913). --define(utils_wxShutdown, 2914). --define(utils_wxShell, 2915). --define(utils_wxLaunchDefaultBrowser, 2916). --define(utils_wxGetEmailAddress, 2917). --define(utils_wxGetUserId, 2918). --define(utils_wxGetHomeDir, 2919). --define(utils_wxNewId, 2920). --define(utils_wxRegisterId, 2921). --define(utils_wxGetCurrentId, 2922). --define(utils_wxGetOsDescription, 2923). --define(utils_wxIsPlatformLittleEndian, 2924). --define(utils_wxIsPlatform64Bit, 2925). --define(wxPrintout_new, 2926). --define(wxPrintout_destruct, 2927). --define(wxPrintout_GetDC, 2928). --define(wxPrintout_GetPageSizeMM, 2929). --define(wxPrintout_GetPageSizePixels, 2930). --define(wxPrintout_GetPaperRectPixels, 2931). --define(wxPrintout_GetPPIPrinter, 2932). --define(wxPrintout_GetPPIScreen, 2933). --define(wxPrintout_GetTitle, 2934). --define(wxPrintout_IsPreview, 2935). --define(wxPrintout_FitThisSizeToPaper, 2936). --define(wxPrintout_FitThisSizeToPage, 2937). --define(wxPrintout_FitThisSizeToPageMargins, 2938). --define(wxPrintout_MapScreenSizeToPaper, 2939). --define(wxPrintout_MapScreenSizeToPage, 2940). --define(wxPrintout_MapScreenSizeToPageMargins, 2941). --define(wxPrintout_MapScreenSizeToDevice, 2942). --define(wxPrintout_GetLogicalPaperRect, 2943). --define(wxPrintout_GetLogicalPageRect, 2944). --define(wxPrintout_GetLogicalPageMarginsRect, 2945). --define(wxPrintout_SetLogicalOrigin, 2946). --define(wxPrintout_OffsetLogicalOrigin, 2947). --define(wxStyledTextCtrl_new_2, 2948). --define(wxStyledTextCtrl_new_0, 2949). --define(wxStyledTextCtrl_destruct, 2950). --define(wxStyledTextCtrl_Create, 2951). --define(wxStyledTextCtrl_AddText, 2952). --define(wxStyledTextCtrl_AddStyledText, 2953). --define(wxStyledTextCtrl_InsertText, 2954). --define(wxStyledTextCtrl_ClearAll, 2955). --define(wxStyledTextCtrl_ClearDocumentStyle, 2956). --define(wxStyledTextCtrl_GetLength, 2957). --define(wxStyledTextCtrl_GetCharAt, 2958). --define(wxStyledTextCtrl_GetCurrentPos, 2959). --define(wxStyledTextCtrl_GetAnchor, 2960). --define(wxStyledTextCtrl_GetStyleAt, 2961). --define(wxStyledTextCtrl_Redo, 2962). --define(wxStyledTextCtrl_SetUndoCollection, 2963). --define(wxStyledTextCtrl_SelectAll, 2964). --define(wxStyledTextCtrl_SetSavePoint, 2965). --define(wxStyledTextCtrl_GetStyledText, 2966). --define(wxStyledTextCtrl_CanRedo, 2967). --define(wxStyledTextCtrl_MarkerLineFromHandle, 2968). --define(wxStyledTextCtrl_MarkerDeleteHandle, 2969). --define(wxStyledTextCtrl_GetUndoCollection, 2970). --define(wxStyledTextCtrl_GetViewWhiteSpace, 2971). --define(wxStyledTextCtrl_SetViewWhiteSpace, 2972). --define(wxStyledTextCtrl_PositionFromPoint, 2973). --define(wxStyledTextCtrl_PositionFromPointClose, 2974). --define(wxStyledTextCtrl_GotoLine, 2975). --define(wxStyledTextCtrl_GotoPos, 2976). --define(wxStyledTextCtrl_SetAnchor, 2977). --define(wxStyledTextCtrl_GetCurLine, 2978). --define(wxStyledTextCtrl_GetEndStyled, 2979). --define(wxStyledTextCtrl_ConvertEOLs, 2980). --define(wxStyledTextCtrl_GetEOLMode, 2981). --define(wxStyledTextCtrl_SetEOLMode, 2982). --define(wxStyledTextCtrl_StartStyling, 2983). --define(wxStyledTextCtrl_SetStyling, 2984). --define(wxStyledTextCtrl_GetBufferedDraw, 2985). --define(wxStyledTextCtrl_SetBufferedDraw, 2986). --define(wxStyledTextCtrl_SetTabWidth, 2987). --define(wxStyledTextCtrl_GetTabWidth, 2988). --define(wxStyledTextCtrl_SetCodePage, 2989). --define(wxStyledTextCtrl_MarkerDefine, 2990). --define(wxStyledTextCtrl_MarkerSetForeground, 2991). --define(wxStyledTextCtrl_MarkerSetBackground, 2992). --define(wxStyledTextCtrl_MarkerAdd, 2993). --define(wxStyledTextCtrl_MarkerDelete, 2994). --define(wxStyledTextCtrl_MarkerDeleteAll, 2995). --define(wxStyledTextCtrl_MarkerGet, 2996). --define(wxStyledTextCtrl_MarkerNext, 2997). --define(wxStyledTextCtrl_MarkerPrevious, 2998). --define(wxStyledTextCtrl_MarkerDefineBitmap, 2999). --define(wxStyledTextCtrl_MarkerAddSet, 3000). --define(wxStyledTextCtrl_MarkerSetAlpha, 3001). --define(wxStyledTextCtrl_SetMarginType, 3002). --define(wxStyledTextCtrl_GetMarginType, 3003). --define(wxStyledTextCtrl_SetMarginWidth, 3004). --define(wxStyledTextCtrl_GetMarginWidth, 3005). --define(wxStyledTextCtrl_SetMarginMask, 3006). --define(wxStyledTextCtrl_GetMarginMask, 3007). --define(wxStyledTextCtrl_SetMarginSensitive, 3008). --define(wxStyledTextCtrl_GetMarginSensitive, 3009). --define(wxStyledTextCtrl_StyleClearAll, 3010). --define(wxStyledTextCtrl_StyleSetForeground, 3011). --define(wxStyledTextCtrl_StyleSetBackground, 3012). --define(wxStyledTextCtrl_StyleSetBold, 3013). --define(wxStyledTextCtrl_StyleSetItalic, 3014). --define(wxStyledTextCtrl_StyleSetSize, 3015). --define(wxStyledTextCtrl_StyleSetFaceName, 3016). --define(wxStyledTextCtrl_StyleSetEOLFilled, 3017). --define(wxStyledTextCtrl_StyleResetDefault, 3018). --define(wxStyledTextCtrl_StyleSetUnderline, 3019). --define(wxStyledTextCtrl_StyleSetCase, 3020). --define(wxStyledTextCtrl_StyleSetHotSpot, 3021). --define(wxStyledTextCtrl_SetSelForeground, 3022). --define(wxStyledTextCtrl_SetSelBackground, 3023). --define(wxStyledTextCtrl_GetSelAlpha, 3024). --define(wxStyledTextCtrl_SetSelAlpha, 3025). --define(wxStyledTextCtrl_SetCaretForeground, 3026). --define(wxStyledTextCtrl_CmdKeyAssign, 3027). --define(wxStyledTextCtrl_CmdKeyClear, 3028). --define(wxStyledTextCtrl_CmdKeyClearAll, 3029). --define(wxStyledTextCtrl_SetStyleBytes, 3030). --define(wxStyledTextCtrl_StyleSetVisible, 3031). --define(wxStyledTextCtrl_GetCaretPeriod, 3032). --define(wxStyledTextCtrl_SetCaretPeriod, 3033). --define(wxStyledTextCtrl_SetWordChars, 3034). --define(wxStyledTextCtrl_BeginUndoAction, 3035). --define(wxStyledTextCtrl_EndUndoAction, 3036). --define(wxStyledTextCtrl_IndicatorSetStyle, 3037). --define(wxStyledTextCtrl_IndicatorGetStyle, 3038). --define(wxStyledTextCtrl_IndicatorSetForeground, 3039). --define(wxStyledTextCtrl_IndicatorGetForeground, 3040). --define(wxStyledTextCtrl_SetWhitespaceForeground, 3041). --define(wxStyledTextCtrl_SetWhitespaceBackground, 3042). --define(wxStyledTextCtrl_GetStyleBits, 3043). --define(wxStyledTextCtrl_SetLineState, 3044). --define(wxStyledTextCtrl_GetLineState, 3045). --define(wxStyledTextCtrl_GetMaxLineState, 3046). --define(wxStyledTextCtrl_GetCaretLineVisible, 3047). --define(wxStyledTextCtrl_SetCaretLineVisible, 3048). --define(wxStyledTextCtrl_GetCaretLineBackground, 3049). --define(wxStyledTextCtrl_SetCaretLineBackground, 3050). --define(wxStyledTextCtrl_AutoCompShow, 3051). --define(wxStyledTextCtrl_AutoCompCancel, 3052). --define(wxStyledTextCtrl_AutoCompActive, 3053). --define(wxStyledTextCtrl_AutoCompPosStart, 3054). --define(wxStyledTextCtrl_AutoCompComplete, 3055). --define(wxStyledTextCtrl_AutoCompStops, 3056). --define(wxStyledTextCtrl_AutoCompSetSeparator, 3057). --define(wxStyledTextCtrl_AutoCompGetSeparator, 3058). --define(wxStyledTextCtrl_AutoCompSelect, 3059). --define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3060). --define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3061). --define(wxStyledTextCtrl_AutoCompSetFillUps, 3062). --define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3063). --define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3064). --define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3065). --define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3066). --define(wxStyledTextCtrl_UserListShow, 3067). --define(wxStyledTextCtrl_AutoCompSetAutoHide, 3068). --define(wxStyledTextCtrl_AutoCompGetAutoHide, 3069). --define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3070). --define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3071). --define(wxStyledTextCtrl_RegisterImage, 3072). --define(wxStyledTextCtrl_ClearRegisteredImages, 3073). --define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3074). --define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3075). --define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3076). --define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3077). --define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3078). --define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3079). --define(wxStyledTextCtrl_SetIndent, 3080). --define(wxStyledTextCtrl_GetIndent, 3081). --define(wxStyledTextCtrl_SetUseTabs, 3082). --define(wxStyledTextCtrl_GetUseTabs, 3083). --define(wxStyledTextCtrl_SetLineIndentation, 3084). --define(wxStyledTextCtrl_GetLineIndentation, 3085). --define(wxStyledTextCtrl_GetLineIndentPosition, 3086). --define(wxStyledTextCtrl_GetColumn, 3087). --define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3088). --define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3089). --define(wxStyledTextCtrl_SetIndentationGuides, 3090). --define(wxStyledTextCtrl_GetIndentationGuides, 3091). --define(wxStyledTextCtrl_SetHighlightGuide, 3092). --define(wxStyledTextCtrl_GetHighlightGuide, 3093). --define(wxStyledTextCtrl_GetLineEndPosition, 3094). --define(wxStyledTextCtrl_GetCodePage, 3095). --define(wxStyledTextCtrl_GetCaretForeground, 3096). --define(wxStyledTextCtrl_GetReadOnly, 3097). --define(wxStyledTextCtrl_SetCurrentPos, 3098). --define(wxStyledTextCtrl_SetSelectionStart, 3099). --define(wxStyledTextCtrl_GetSelectionStart, 3100). --define(wxStyledTextCtrl_SetSelectionEnd, 3101). --define(wxStyledTextCtrl_GetSelectionEnd, 3102). --define(wxStyledTextCtrl_SetPrintMagnification, 3103). --define(wxStyledTextCtrl_GetPrintMagnification, 3104). --define(wxStyledTextCtrl_SetPrintColourMode, 3105). --define(wxStyledTextCtrl_GetPrintColourMode, 3106). --define(wxStyledTextCtrl_FindText, 3107). --define(wxStyledTextCtrl_FormatRange, 3108). --define(wxStyledTextCtrl_GetFirstVisibleLine, 3109). --define(wxStyledTextCtrl_GetLine, 3110). --define(wxStyledTextCtrl_GetLineCount, 3111). --define(wxStyledTextCtrl_SetMarginLeft, 3112). --define(wxStyledTextCtrl_GetMarginLeft, 3113). --define(wxStyledTextCtrl_SetMarginRight, 3114). --define(wxStyledTextCtrl_GetMarginRight, 3115). --define(wxStyledTextCtrl_GetModify, 3116). --define(wxStyledTextCtrl_SetSelection, 3117). --define(wxStyledTextCtrl_GetSelectedText, 3118). --define(wxStyledTextCtrl_GetTextRange, 3119). --define(wxStyledTextCtrl_HideSelection, 3120). --define(wxStyledTextCtrl_LineFromPosition, 3121). --define(wxStyledTextCtrl_PositionFromLine, 3122). --define(wxStyledTextCtrl_LineScroll, 3123). --define(wxStyledTextCtrl_EnsureCaretVisible, 3124). --define(wxStyledTextCtrl_ReplaceSelection, 3125). --define(wxStyledTextCtrl_SetReadOnly, 3126). --define(wxStyledTextCtrl_CanPaste, 3127). --define(wxStyledTextCtrl_CanUndo, 3128). --define(wxStyledTextCtrl_EmptyUndoBuffer, 3129). --define(wxStyledTextCtrl_Undo, 3130). --define(wxStyledTextCtrl_Cut, 3131). --define(wxStyledTextCtrl_Copy, 3132). --define(wxStyledTextCtrl_Paste, 3133). --define(wxStyledTextCtrl_Clear, 3134). --define(wxStyledTextCtrl_SetText, 3135). --define(wxStyledTextCtrl_GetText, 3136). --define(wxStyledTextCtrl_GetTextLength, 3137). --define(wxStyledTextCtrl_GetOvertype, 3138). --define(wxStyledTextCtrl_SetCaretWidth, 3139). --define(wxStyledTextCtrl_GetCaretWidth, 3140). --define(wxStyledTextCtrl_SetTargetStart, 3141). --define(wxStyledTextCtrl_GetTargetStart, 3142). --define(wxStyledTextCtrl_SetTargetEnd, 3143). --define(wxStyledTextCtrl_GetTargetEnd, 3144). --define(wxStyledTextCtrl_ReplaceTarget, 3145). --define(wxStyledTextCtrl_SearchInTarget, 3146). --define(wxStyledTextCtrl_SetSearchFlags, 3147). --define(wxStyledTextCtrl_GetSearchFlags, 3148). --define(wxStyledTextCtrl_CallTipShow, 3149). --define(wxStyledTextCtrl_CallTipCancel, 3150). --define(wxStyledTextCtrl_CallTipActive, 3151). --define(wxStyledTextCtrl_CallTipPosAtStart, 3152). --define(wxStyledTextCtrl_CallTipSetHighlight, 3153). --define(wxStyledTextCtrl_CallTipSetBackground, 3154). --define(wxStyledTextCtrl_CallTipSetForeground, 3155). --define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3156). --define(wxStyledTextCtrl_CallTipUseStyle, 3157). --define(wxStyledTextCtrl_VisibleFromDocLine, 3158). --define(wxStyledTextCtrl_DocLineFromVisible, 3159). --define(wxStyledTextCtrl_WrapCount, 3160). --define(wxStyledTextCtrl_SetFoldLevel, 3161). --define(wxStyledTextCtrl_GetFoldLevel, 3162). --define(wxStyledTextCtrl_GetLastChild, 3163). --define(wxStyledTextCtrl_GetFoldParent, 3164). --define(wxStyledTextCtrl_ShowLines, 3165). --define(wxStyledTextCtrl_HideLines, 3166). --define(wxStyledTextCtrl_GetLineVisible, 3167). --define(wxStyledTextCtrl_SetFoldExpanded, 3168). --define(wxStyledTextCtrl_GetFoldExpanded, 3169). --define(wxStyledTextCtrl_ToggleFold, 3170). --define(wxStyledTextCtrl_EnsureVisible, 3171). --define(wxStyledTextCtrl_SetFoldFlags, 3172). --define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3173). --define(wxStyledTextCtrl_SetTabIndents, 3174). --define(wxStyledTextCtrl_GetTabIndents, 3175). --define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3176). --define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3177). --define(wxStyledTextCtrl_SetMouseDwellTime, 3178). --define(wxStyledTextCtrl_GetMouseDwellTime, 3179). --define(wxStyledTextCtrl_WordStartPosition, 3180). --define(wxStyledTextCtrl_WordEndPosition, 3181). --define(wxStyledTextCtrl_SetWrapMode, 3182). --define(wxStyledTextCtrl_GetWrapMode, 3183). --define(wxStyledTextCtrl_SetWrapVisualFlags, 3184). --define(wxStyledTextCtrl_GetWrapVisualFlags, 3185). --define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3186). --define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3187). --define(wxStyledTextCtrl_SetWrapStartIndent, 3188). --define(wxStyledTextCtrl_GetWrapStartIndent, 3189). --define(wxStyledTextCtrl_SetLayoutCache, 3190). --define(wxStyledTextCtrl_GetLayoutCache, 3191). --define(wxStyledTextCtrl_SetScrollWidth, 3192). --define(wxStyledTextCtrl_GetScrollWidth, 3193). --define(wxStyledTextCtrl_TextWidth, 3194). --define(wxStyledTextCtrl_GetEndAtLastLine, 3195). --define(wxStyledTextCtrl_TextHeight, 3196). --define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3197). --define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3198). --define(wxStyledTextCtrl_AppendText, 3199). --define(wxStyledTextCtrl_GetTwoPhaseDraw, 3200). --define(wxStyledTextCtrl_SetTwoPhaseDraw, 3201). --define(wxStyledTextCtrl_TargetFromSelection, 3202). --define(wxStyledTextCtrl_LinesJoin, 3203). --define(wxStyledTextCtrl_LinesSplit, 3204). --define(wxStyledTextCtrl_SetFoldMarginColour, 3205). --define(wxStyledTextCtrl_SetFoldMarginHiColour, 3206). --define(wxStyledTextCtrl_LineDown, 3207). --define(wxStyledTextCtrl_LineDownExtend, 3208). --define(wxStyledTextCtrl_LineUp, 3209). --define(wxStyledTextCtrl_LineUpExtend, 3210). --define(wxStyledTextCtrl_CharLeft, 3211). --define(wxStyledTextCtrl_CharLeftExtend, 3212). --define(wxStyledTextCtrl_CharRight, 3213). --define(wxStyledTextCtrl_CharRightExtend, 3214). --define(wxStyledTextCtrl_WordLeft, 3215). --define(wxStyledTextCtrl_WordLeftExtend, 3216). --define(wxStyledTextCtrl_WordRight, 3217). --define(wxStyledTextCtrl_WordRightExtend, 3218). --define(wxStyledTextCtrl_Home, 3219). --define(wxStyledTextCtrl_HomeExtend, 3220). --define(wxStyledTextCtrl_LineEnd, 3221). --define(wxStyledTextCtrl_LineEndExtend, 3222). --define(wxStyledTextCtrl_DocumentStart, 3223). --define(wxStyledTextCtrl_DocumentStartExtend, 3224). --define(wxStyledTextCtrl_DocumentEnd, 3225). --define(wxStyledTextCtrl_DocumentEndExtend, 3226). --define(wxStyledTextCtrl_PageUp, 3227). --define(wxStyledTextCtrl_PageUpExtend, 3228). --define(wxStyledTextCtrl_PageDown, 3229). --define(wxStyledTextCtrl_PageDownExtend, 3230). --define(wxStyledTextCtrl_EditToggleOvertype, 3231). --define(wxStyledTextCtrl_Cancel, 3232). --define(wxStyledTextCtrl_DeleteBack, 3233). --define(wxStyledTextCtrl_Tab, 3234). --define(wxStyledTextCtrl_BackTab, 3235). --define(wxStyledTextCtrl_NewLine, 3236). --define(wxStyledTextCtrl_FormFeed, 3237). --define(wxStyledTextCtrl_VCHome, 3238). --define(wxStyledTextCtrl_VCHomeExtend, 3239). --define(wxStyledTextCtrl_ZoomIn, 3240). --define(wxStyledTextCtrl_ZoomOut, 3241). --define(wxStyledTextCtrl_DelWordLeft, 3242). --define(wxStyledTextCtrl_DelWordRight, 3243). --define(wxStyledTextCtrl_LineCut, 3244). --define(wxStyledTextCtrl_LineDelete, 3245). --define(wxStyledTextCtrl_LineTranspose, 3246). --define(wxStyledTextCtrl_LineDuplicate, 3247). --define(wxStyledTextCtrl_LowerCase, 3248). --define(wxStyledTextCtrl_UpperCase, 3249). --define(wxStyledTextCtrl_LineScrollDown, 3250). --define(wxStyledTextCtrl_LineScrollUp, 3251). --define(wxStyledTextCtrl_DeleteBackNotLine, 3252). --define(wxStyledTextCtrl_HomeDisplay, 3253). --define(wxStyledTextCtrl_HomeDisplayExtend, 3254). --define(wxStyledTextCtrl_LineEndDisplay, 3255). --define(wxStyledTextCtrl_LineEndDisplayExtend, 3256). --define(wxStyledTextCtrl_HomeWrapExtend, 3257). --define(wxStyledTextCtrl_LineEndWrap, 3258). --define(wxStyledTextCtrl_LineEndWrapExtend, 3259). --define(wxStyledTextCtrl_VCHomeWrap, 3260). --define(wxStyledTextCtrl_VCHomeWrapExtend, 3261). --define(wxStyledTextCtrl_LineCopy, 3262). --define(wxStyledTextCtrl_MoveCaretInsideView, 3263). --define(wxStyledTextCtrl_LineLength, 3264). --define(wxStyledTextCtrl_BraceHighlight, 3265). --define(wxStyledTextCtrl_BraceBadLight, 3266). --define(wxStyledTextCtrl_BraceMatch, 3267). --define(wxStyledTextCtrl_GetViewEOL, 3268). --define(wxStyledTextCtrl_SetViewEOL, 3269). --define(wxStyledTextCtrl_SetModEventMask, 3270). --define(wxStyledTextCtrl_GetEdgeColumn, 3271). --define(wxStyledTextCtrl_SetEdgeColumn, 3272). --define(wxStyledTextCtrl_SetEdgeMode, 3273). --define(wxStyledTextCtrl_GetEdgeMode, 3274). --define(wxStyledTextCtrl_GetEdgeColour, 3275). --define(wxStyledTextCtrl_SetEdgeColour, 3276). --define(wxStyledTextCtrl_SearchAnchor, 3277). --define(wxStyledTextCtrl_SearchNext, 3278). --define(wxStyledTextCtrl_SearchPrev, 3279). --define(wxStyledTextCtrl_LinesOnScreen, 3280). --define(wxStyledTextCtrl_UsePopUp, 3281). --define(wxStyledTextCtrl_SelectionIsRectangle, 3282). --define(wxStyledTextCtrl_SetZoom, 3283). --define(wxStyledTextCtrl_GetZoom, 3284). --define(wxStyledTextCtrl_GetModEventMask, 3285). --define(wxStyledTextCtrl_SetSTCFocus, 3286). --define(wxStyledTextCtrl_GetSTCFocus, 3287). --define(wxStyledTextCtrl_SetStatus, 3288). --define(wxStyledTextCtrl_GetStatus, 3289). --define(wxStyledTextCtrl_SetMouseDownCaptures, 3290). --define(wxStyledTextCtrl_GetMouseDownCaptures, 3291). --define(wxStyledTextCtrl_SetSTCCursor, 3292). --define(wxStyledTextCtrl_GetSTCCursor, 3293). --define(wxStyledTextCtrl_SetControlCharSymbol, 3294). --define(wxStyledTextCtrl_GetControlCharSymbol, 3295). --define(wxStyledTextCtrl_WordPartLeft, 3296). --define(wxStyledTextCtrl_WordPartLeftExtend, 3297). --define(wxStyledTextCtrl_WordPartRight, 3298). --define(wxStyledTextCtrl_WordPartRightExtend, 3299). --define(wxStyledTextCtrl_SetVisiblePolicy, 3300). --define(wxStyledTextCtrl_DelLineLeft, 3301). --define(wxStyledTextCtrl_DelLineRight, 3302). --define(wxStyledTextCtrl_GetXOffset, 3303). --define(wxStyledTextCtrl_ChooseCaretX, 3304). --define(wxStyledTextCtrl_SetXCaretPolicy, 3305). --define(wxStyledTextCtrl_SetYCaretPolicy, 3306). --define(wxStyledTextCtrl_GetPrintWrapMode, 3307). --define(wxStyledTextCtrl_SetHotspotActiveForeground, 3308). --define(wxStyledTextCtrl_SetHotspotActiveBackground, 3309). --define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3310). --define(wxStyledTextCtrl_SetHotspotSingleLine, 3311). --define(wxStyledTextCtrl_ParaDownExtend, 3312). --define(wxStyledTextCtrl_ParaUp, 3313). --define(wxStyledTextCtrl_ParaUpExtend, 3314). --define(wxStyledTextCtrl_PositionBefore, 3315). --define(wxStyledTextCtrl_PositionAfter, 3316). --define(wxStyledTextCtrl_CopyRange, 3317). --define(wxStyledTextCtrl_CopyText, 3318). --define(wxStyledTextCtrl_SetSelectionMode, 3319). --define(wxStyledTextCtrl_GetSelectionMode, 3320). --define(wxStyledTextCtrl_LineDownRectExtend, 3321). --define(wxStyledTextCtrl_LineUpRectExtend, 3322). --define(wxStyledTextCtrl_CharLeftRectExtend, 3323). --define(wxStyledTextCtrl_CharRightRectExtend, 3324). --define(wxStyledTextCtrl_HomeRectExtend, 3325). --define(wxStyledTextCtrl_VCHomeRectExtend, 3326). --define(wxStyledTextCtrl_LineEndRectExtend, 3327). --define(wxStyledTextCtrl_PageUpRectExtend, 3328). --define(wxStyledTextCtrl_PageDownRectExtend, 3329). --define(wxStyledTextCtrl_StutteredPageUp, 3330). --define(wxStyledTextCtrl_StutteredPageUpExtend, 3331). --define(wxStyledTextCtrl_StutteredPageDown, 3332). --define(wxStyledTextCtrl_StutteredPageDownExtend, 3333). --define(wxStyledTextCtrl_WordLeftEnd, 3334). --define(wxStyledTextCtrl_WordLeftEndExtend, 3335). --define(wxStyledTextCtrl_WordRightEnd, 3336). --define(wxStyledTextCtrl_WordRightEndExtend, 3337). --define(wxStyledTextCtrl_SetWhitespaceChars, 3338). --define(wxStyledTextCtrl_SetCharsDefault, 3339). --define(wxStyledTextCtrl_AutoCompGetCurrent, 3340). --define(wxStyledTextCtrl_Allocate, 3341). --define(wxStyledTextCtrl_FindColumn, 3342). --define(wxStyledTextCtrl_GetCaretSticky, 3343). --define(wxStyledTextCtrl_SetCaretSticky, 3344). --define(wxStyledTextCtrl_ToggleCaretSticky, 3345). --define(wxStyledTextCtrl_SetPasteConvertEndings, 3346). --define(wxStyledTextCtrl_GetPasteConvertEndings, 3347). --define(wxStyledTextCtrl_SelectionDuplicate, 3348). --define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3349). --define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3350). --define(wxStyledTextCtrl_StartRecord, 3351). --define(wxStyledTextCtrl_StopRecord, 3352). --define(wxStyledTextCtrl_SetLexer, 3353). --define(wxStyledTextCtrl_GetLexer, 3354). --define(wxStyledTextCtrl_Colourise, 3355). --define(wxStyledTextCtrl_SetProperty, 3356). --define(wxStyledTextCtrl_SetKeyWords, 3357). --define(wxStyledTextCtrl_SetLexerLanguage, 3358). --define(wxStyledTextCtrl_GetProperty, 3359). --define(wxStyledTextCtrl_GetStyleBitsNeeded, 3360). --define(wxStyledTextCtrl_GetCurrentLine, 3361). --define(wxStyledTextCtrl_StyleSetSpec, 3362). --define(wxStyledTextCtrl_StyleSetFont, 3363). --define(wxStyledTextCtrl_StyleSetFontAttr, 3364). --define(wxStyledTextCtrl_StyleSetCharacterSet, 3365). --define(wxStyledTextCtrl_StyleSetFontEncoding, 3366). --define(wxStyledTextCtrl_CmdKeyExecute, 3367). --define(wxStyledTextCtrl_SetMargins, 3368). --define(wxStyledTextCtrl_GetSelection, 3369). --define(wxStyledTextCtrl_PointFromPosition, 3370). --define(wxStyledTextCtrl_ScrollToLine, 3371). --define(wxStyledTextCtrl_ScrollToColumn, 3372). --define(wxStyledTextCtrl_SetVScrollBar, 3373). --define(wxStyledTextCtrl_SetHScrollBar, 3374). --define(wxStyledTextCtrl_GetLastKeydownProcessed, 3375). --define(wxStyledTextCtrl_SetLastKeydownProcessed, 3376). --define(wxStyledTextCtrl_SaveFile, 3377). --define(wxStyledTextCtrl_LoadFile, 3378). --define(wxStyledTextCtrl_DoDragOver, 3379). --define(wxStyledTextCtrl_DoDropText, 3380). --define(wxStyledTextCtrl_GetUseAntiAliasing, 3381). --define(wxStyledTextCtrl_AddTextRaw, 3382). --define(wxStyledTextCtrl_InsertTextRaw, 3383). --define(wxStyledTextCtrl_GetCurLineRaw, 3384). --define(wxStyledTextCtrl_GetLineRaw, 3385). --define(wxStyledTextCtrl_GetSelectedTextRaw, 3386). --define(wxStyledTextCtrl_GetTextRangeRaw, 3387). --define(wxStyledTextCtrl_SetTextRaw, 3388). --define(wxStyledTextCtrl_GetTextRaw, 3389). --define(wxStyledTextCtrl_AppendTextRaw, 3390). --define(wxArtProvider_GetBitmap, 3391). --define(wxArtProvider_GetIcon, 3392). --define(wxTreeEvent_GetKeyCode, 3393). --define(wxTreeEvent_GetItem, 3394). --define(wxTreeEvent_GetKeyEvent, 3395). --define(wxTreeEvent_GetLabel, 3396). --define(wxTreeEvent_GetOldItem, 3397). --define(wxTreeEvent_GetPoint, 3398). --define(wxTreeEvent_IsEditCancelled, 3399). --define(wxTreeEvent_SetToolTip, 3400). --define(wxNotebookEvent_GetOldSelection, 3401). --define(wxNotebookEvent_GetSelection, 3402). --define(wxNotebookEvent_SetOldSelection, 3403). --define(wxNotebookEvent_SetSelection, 3404). --define(wxFileDataObject_new, 3405). --define(wxFileDataObject_AddFile, 3406). --define(wxFileDataObject_GetFilenames, 3407). --define(wxFileDataObject_destroy, 3408). --define(wxTextDataObject_new, 3409). --define(wxTextDataObject_GetTextLength, 3410). --define(wxTextDataObject_GetText, 3411). --define(wxTextDataObject_SetText, 3412). --define(wxTextDataObject_destroy, 3413). --define(wxBitmapDataObject_new_1_1, 3414). --define(wxBitmapDataObject_new_1_0, 3415). --define(wxBitmapDataObject_GetBitmap, 3416). --define(wxBitmapDataObject_SetBitmap, 3417). --define(wxBitmapDataObject_destroy, 3418). --define(wxClipboard_new, 3420). --define(wxClipboard_destruct, 3421). --define(wxClipboard_AddData, 3422). --define(wxClipboard_Clear, 3423). --define(wxClipboard_Close, 3424). --define(wxClipboard_Flush, 3425). --define(wxClipboard_GetData, 3426). --define(wxClipboard_IsOpened, 3427). --define(wxClipboard_Open, 3428). --define(wxClipboard_SetData, 3429). --define(wxClipboard_UsePrimarySelection, 3431). --define(wxClipboard_IsSupported, 3432). --define(wxClipboard_Get, 3433). --define(wxSpinEvent_GetPosition, 3434). --define(wxSpinEvent_SetPosition, 3435). --define(wxSplitterWindow_new_0, 3436). --define(wxSplitterWindow_new_2, 3437). --define(wxSplitterWindow_destruct, 3438). --define(wxSplitterWindow_Create, 3439). --define(wxSplitterWindow_GetMinimumPaneSize, 3440). --define(wxSplitterWindow_GetSashGravity, 3441). --define(wxSplitterWindow_GetSashPosition, 3442). --define(wxSplitterWindow_GetSplitMode, 3443). --define(wxSplitterWindow_GetWindow1, 3444). --define(wxSplitterWindow_GetWindow2, 3445). --define(wxSplitterWindow_Initialize, 3446). --define(wxSplitterWindow_IsSplit, 3447). --define(wxSplitterWindow_ReplaceWindow, 3448). --define(wxSplitterWindow_SetSashGravity, 3449). --define(wxSplitterWindow_SetSashPosition, 3450). --define(wxSplitterWindow_SetSashSize, 3451). --define(wxSplitterWindow_SetMinimumPaneSize, 3452). --define(wxSplitterWindow_SetSplitMode, 3453). --define(wxSplitterWindow_SplitHorizontally, 3454). --define(wxSplitterWindow_SplitVertically, 3455). --define(wxSplitterWindow_Unsplit, 3456). --define(wxSplitterWindow_UpdateSize, 3457). --define(wxSplitterEvent_GetSashPosition, 3458). --define(wxSplitterEvent_GetX, 3459). --define(wxSplitterEvent_GetY, 3460). --define(wxSplitterEvent_GetWindowBeingRemoved, 3461). --define(wxSplitterEvent_SetSashPosition, 3462). --define(wxHtmlWindow_new_0, 3463). --define(wxHtmlWindow_new_2, 3464). --define(wxHtmlWindow_AppendToPage, 3465). --define(wxHtmlWindow_GetOpenedAnchor, 3466). --define(wxHtmlWindow_GetOpenedPage, 3467). --define(wxHtmlWindow_GetOpenedPageTitle, 3468). --define(wxHtmlWindow_GetRelatedFrame, 3469). --define(wxHtmlWindow_HistoryBack, 3470). --define(wxHtmlWindow_HistoryCanBack, 3471). --define(wxHtmlWindow_HistoryCanForward, 3472). --define(wxHtmlWindow_HistoryClear, 3473). --define(wxHtmlWindow_HistoryForward, 3474). --define(wxHtmlWindow_LoadFile, 3475). --define(wxHtmlWindow_LoadPage, 3476). --define(wxHtmlWindow_SelectAll, 3477). --define(wxHtmlWindow_SelectionToText, 3478). --define(wxHtmlWindow_SelectLine, 3479). --define(wxHtmlWindow_SelectWord, 3480). --define(wxHtmlWindow_SetBorders, 3481). --define(wxHtmlWindow_SetFonts, 3482). --define(wxHtmlWindow_SetPage, 3483). --define(wxHtmlWindow_SetRelatedFrame, 3484). --define(wxHtmlWindow_SetRelatedStatusBar, 3485). --define(wxHtmlWindow_ToText, 3486). --define(wxHtmlWindow_destroy, 3487). --define(wxHtmlLinkEvent_GetLinkInfo, 3488). --define(wxSystemSettings_GetColour, 3489). --define(wxSystemSettings_GetFont, 3490). --define(wxSystemSettings_GetMetric, 3491). --define(wxSystemSettings_GetScreenType, 3492). --define(wxSystemOptions_GetOption, 3493). --define(wxSystemOptions_GetOptionInt, 3494). --define(wxSystemOptions_HasOption, 3495). --define(wxSystemOptions_IsFalse, 3496). --define(wxSystemOptions_SetOption_2_1, 3497). --define(wxSystemOptions_SetOption_2_0, 3498). --define(wxAuiNotebookEvent_SetSelection, 3499). --define(wxAuiNotebookEvent_GetSelection, 3500). --define(wxAuiNotebookEvent_SetOldSelection, 3501). --define(wxAuiNotebookEvent_GetOldSelection, 3502). --define(wxAuiNotebookEvent_SetDragSource, 3503). --define(wxAuiNotebookEvent_GetDragSource, 3504). --define(wxAuiManagerEvent_SetManager, 3505). --define(wxAuiManagerEvent_GetManager, 3506). --define(wxAuiManagerEvent_SetPane, 3507). --define(wxAuiManagerEvent_GetPane, 3508). --define(wxAuiManagerEvent_SetButton, 3509). --define(wxAuiManagerEvent_GetButton, 3510). --define(wxAuiManagerEvent_SetDC, 3511). --define(wxAuiManagerEvent_GetDC, 3512). --define(wxAuiManagerEvent_Veto, 3513). --define(wxAuiManagerEvent_GetVeto, 3514). --define(wxAuiManagerEvent_SetCanVeto, 3515). --define(wxAuiManagerEvent_CanVeto, 3516). --define(wxLogNull_new, 3517). --define(wxLogNull_destroy, 3518). --define(wxTaskBarIcon_new, 3519). --define(wxTaskBarIcon_destruct, 3520). --define(wxTaskBarIcon_PopupMenu, 3521). --define(wxTaskBarIcon_RemoveIcon, 3522). --define(wxTaskBarIcon_SetIcon, 3523). +-define(wxTreeCtrl_IsTreeItemIdOk, 2061). +-define(wxTreeCtrl_PrependItem, 2062). +-define(wxTreeCtrl_ScrollTo, 2063). +-define(wxTreeCtrl_SelectItem_1, 2064). +-define(wxTreeCtrl_SelectItem_2, 2065). +-define(wxTreeCtrl_SetIndent, 2066). +-define(wxTreeCtrl_SetImageList, 2067). +-define(wxTreeCtrl_SetItemBackgroundColour, 2068). +-define(wxTreeCtrl_SetItemBold, 2069). +-define(wxTreeCtrl_SetItemData, 2070). +-define(wxTreeCtrl_SetItemDropHighlight, 2071). +-define(wxTreeCtrl_SetItemFont, 2072). +-define(wxTreeCtrl_SetItemHasChildren, 2073). +-define(wxTreeCtrl_SetItemImage_2, 2074). +-define(wxTreeCtrl_SetItemImage_3, 2075). +-define(wxTreeCtrl_SetItemText, 2076). +-define(wxTreeCtrl_SetItemTextColour, 2077). +-define(wxTreeCtrl_SetStateImageList, 2078). +-define(wxTreeCtrl_SetWindowStyle, 2079). +-define(wxTreeCtrl_SortChildren, 2080). +-define(wxTreeCtrl_Toggle, 2081). +-define(wxTreeCtrl_ToggleItemSelection, 2082). +-define(wxTreeCtrl_Unselect, 2083). +-define(wxTreeCtrl_UnselectAll, 2084). +-define(wxTreeCtrl_UnselectItem, 2085). +-define(wxScrollBar_new_0, 2086). +-define(wxScrollBar_new_3, 2087). +-define(wxScrollBar_destruct, 2088). +-define(wxScrollBar_Create, 2089). +-define(wxScrollBar_GetRange, 2090). +-define(wxScrollBar_GetPageSize, 2091). +-define(wxScrollBar_GetThumbPosition, 2092). +-define(wxScrollBar_GetThumbSize, 2093). +-define(wxScrollBar_SetThumbPosition, 2094). +-define(wxScrollBar_SetScrollbar, 2095). +-define(wxSpinButton_new_2, 2097). +-define(wxSpinButton_new_0, 2098). +-define(wxSpinButton_Create, 2099). +-define(wxSpinButton_GetMax, 2100). +-define(wxSpinButton_GetMin, 2101). +-define(wxSpinButton_GetValue, 2102). +-define(wxSpinButton_SetRange, 2103). +-define(wxSpinButton_SetValue, 2104). +-define(wxSpinButton_destroy, 2105). +-define(wxSpinCtrl_new_0, 2106). +-define(wxSpinCtrl_new_2, 2107). +-define(wxSpinCtrl_Create, 2109). +-define(wxSpinCtrl_SetValue_1_1, 2112). +-define(wxSpinCtrl_SetValue_1_0, 2113). +-define(wxSpinCtrl_GetValue, 2115). +-define(wxSpinCtrl_SetRange, 2117). +-define(wxSpinCtrl_SetSelection, 2118). +-define(wxSpinCtrl_GetMin, 2120). +-define(wxSpinCtrl_GetMax, 2122). +-define(wxSpinCtrl_destroy, 2123). +-define(wxStaticText_new_0, 2124). +-define(wxStaticText_new_4, 2125). +-define(wxStaticText_Create, 2126). +-define(wxStaticText_GetLabel, 2127). +-define(wxStaticText_SetLabel, 2128). +-define(wxStaticText_Wrap, 2129). +-define(wxStaticText_destroy, 2130). +-define(wxStaticBitmap_new_0, 2131). +-define(wxStaticBitmap_new_4, 2132). +-define(wxStaticBitmap_Create, 2133). +-define(wxStaticBitmap_GetBitmap, 2134). +-define(wxStaticBitmap_SetBitmap, 2135). +-define(wxStaticBitmap_destroy, 2136). +-define(wxRadioBox_new, 2137). +-define(wxRadioBox_destruct, 2139). +-define(wxRadioBox_Create, 2140). +-define(wxRadioBox_Enable_2, 2141). +-define(wxRadioBox_Enable_1, 2142). +-define(wxRadioBox_GetSelection, 2143). +-define(wxRadioBox_GetString, 2144). +-define(wxRadioBox_SetSelection, 2145). +-define(wxRadioBox_Show_2, 2146). +-define(wxRadioBox_Show_1, 2147). +-define(wxRadioBox_GetColumnCount, 2148). +-define(wxRadioBox_GetItemHelpText, 2149). +-define(wxRadioBox_GetItemToolTip, 2150). +-define(wxRadioBox_GetItemFromPoint, 2152). +-define(wxRadioBox_GetRowCount, 2153). +-define(wxRadioBox_IsItemEnabled, 2154). +-define(wxRadioBox_IsItemShown, 2155). +-define(wxRadioBox_SetItemHelpText, 2156). +-define(wxRadioBox_SetItemToolTip, 2157). +-define(wxRadioButton_new_0, 2158). +-define(wxRadioButton_new_4, 2159). +-define(wxRadioButton_Create, 2160). +-define(wxRadioButton_GetValue, 2161). +-define(wxRadioButton_SetValue, 2162). +-define(wxRadioButton_destroy, 2163). +-define(wxSlider_new_6, 2165). +-define(wxSlider_new_0, 2166). +-define(wxSlider_Create, 2167). +-define(wxSlider_GetLineSize, 2168). +-define(wxSlider_GetMax, 2169). +-define(wxSlider_GetMin, 2170). +-define(wxSlider_GetPageSize, 2171). +-define(wxSlider_GetThumbLength, 2172). +-define(wxSlider_GetValue, 2173). +-define(wxSlider_SetLineSize, 2174). +-define(wxSlider_SetPageSize, 2175). +-define(wxSlider_SetRange, 2176). +-define(wxSlider_SetThumbLength, 2177). +-define(wxSlider_SetValue, 2178). +-define(wxSlider_destroy, 2179). +-define(wxDialog_new_4, 2181). +-define(wxDialog_new_0, 2182). +-define(wxDialog_destruct, 2184). +-define(wxDialog_Create, 2185). +-define(wxDialog_CreateButtonSizer, 2186). +-define(wxDialog_CreateStdDialogButtonSizer, 2187). +-define(wxDialog_EndModal, 2188). +-define(wxDialog_GetAffirmativeId, 2189). +-define(wxDialog_GetReturnCode, 2190). +-define(wxDialog_IsModal, 2191). +-define(wxDialog_SetAffirmativeId, 2192). +-define(wxDialog_SetReturnCode, 2193). +-define(wxDialog_Show, 2194). +-define(wxDialog_ShowModal, 2195). +-define(wxColourDialog_new_0, 2196). +-define(wxColourDialog_new_2, 2197). +-define(wxColourDialog_destruct, 2198). +-define(wxColourDialog_Create, 2199). +-define(wxColourDialog_GetColourData, 2200). +-define(wxColourData_new_0, 2201). +-define(wxColourData_new_1, 2202). +-define(wxColourData_destruct, 2203). +-define(wxColourData_GetChooseFull, 2204). +-define(wxColourData_GetColour, 2205). +-define(wxColourData_GetCustomColour, 2207). +-define(wxColourData_SetChooseFull, 2208). +-define(wxColourData_SetColour, 2209). +-define(wxColourData_SetCustomColour, 2210). +-define(wxPalette_new_0, 2211). +-define(wxPalette_new_4, 2212). +-define(wxPalette_destruct, 2214). +-define(wxPalette_Create, 2215). +-define(wxPalette_GetColoursCount, 2216). +-define(wxPalette_GetPixel, 2217). +-define(wxPalette_GetRGB, 2218). +-define(wxPalette_IsOk, 2219). +-define(wxDirDialog_new, 2223). +-define(wxDirDialog_destruct, 2224). +-define(wxDirDialog_GetPath, 2225). +-define(wxDirDialog_GetMessage, 2226). +-define(wxDirDialog_SetMessage, 2227). +-define(wxDirDialog_SetPath, 2228). +-define(wxFileDialog_new, 2232). +-define(wxFileDialog_destruct, 2233). +-define(wxFileDialog_GetDirectory, 2234). +-define(wxFileDialog_GetFilename, 2235). +-define(wxFileDialog_GetFilenames, 2236). +-define(wxFileDialog_GetFilterIndex, 2237). +-define(wxFileDialog_GetMessage, 2238). +-define(wxFileDialog_GetPath, 2239). +-define(wxFileDialog_GetPaths, 2240). +-define(wxFileDialog_GetWildcard, 2241). +-define(wxFileDialog_SetDirectory, 2242). +-define(wxFileDialog_SetFilename, 2243). +-define(wxFileDialog_SetFilterIndex, 2244). +-define(wxFileDialog_SetMessage, 2245). +-define(wxFileDialog_SetPath, 2246). +-define(wxFileDialog_SetWildcard, 2247). +-define(wxPickerBase_SetInternalMargin, 2248). +-define(wxPickerBase_GetInternalMargin, 2249). +-define(wxPickerBase_SetTextCtrlProportion, 2250). +-define(wxPickerBase_SetPickerCtrlProportion, 2251). +-define(wxPickerBase_GetTextCtrlProportion, 2252). +-define(wxPickerBase_GetPickerCtrlProportion, 2253). +-define(wxPickerBase_HasTextCtrl, 2254). +-define(wxPickerBase_GetTextCtrl, 2255). +-define(wxPickerBase_IsTextCtrlGrowable, 2256). +-define(wxPickerBase_SetPickerCtrlGrowable, 2257). +-define(wxPickerBase_SetTextCtrlGrowable, 2258). +-define(wxPickerBase_IsPickerCtrlGrowable, 2259). +-define(wxFilePickerCtrl_new_0, 2260). +-define(wxFilePickerCtrl_new_3, 2261). +-define(wxFilePickerCtrl_Create, 2262). +-define(wxFilePickerCtrl_GetPath, 2263). +-define(wxFilePickerCtrl_SetPath, 2264). +-define(wxFilePickerCtrl_destroy, 2265). +-define(wxDirPickerCtrl_new_0, 2266). +-define(wxDirPickerCtrl_new_3, 2267). +-define(wxDirPickerCtrl_Create, 2268). +-define(wxDirPickerCtrl_GetPath, 2269). +-define(wxDirPickerCtrl_SetPath, 2270). +-define(wxDirPickerCtrl_destroy, 2271). +-define(wxColourPickerCtrl_new_0, 2272). +-define(wxColourPickerCtrl_new_3, 2273). +-define(wxColourPickerCtrl_Create, 2274). +-define(wxColourPickerCtrl_GetColour, 2275). +-define(wxColourPickerCtrl_SetColour_1_1, 2276). +-define(wxColourPickerCtrl_SetColour_1_0, 2277). +-define(wxColourPickerCtrl_destroy, 2278). +-define(wxDatePickerCtrl_new_0, 2279). +-define(wxDatePickerCtrl_new_3, 2280). +-define(wxDatePickerCtrl_GetRange, 2281). +-define(wxDatePickerCtrl_GetValue, 2282). +-define(wxDatePickerCtrl_SetRange, 2283). +-define(wxDatePickerCtrl_SetValue, 2284). +-define(wxDatePickerCtrl_destroy, 2285). +-define(wxFontPickerCtrl_new_0, 2286). +-define(wxFontPickerCtrl_new_3, 2287). +-define(wxFontPickerCtrl_Create, 2288). +-define(wxFontPickerCtrl_GetSelectedFont, 2289). +-define(wxFontPickerCtrl_SetSelectedFont, 2290). +-define(wxFontPickerCtrl_GetMaxPointSize, 2291). +-define(wxFontPickerCtrl_SetMaxPointSize, 2292). +-define(wxFontPickerCtrl_destroy, 2293). +-define(wxFindReplaceDialog_new_0, 2296). +-define(wxFindReplaceDialog_new_4, 2297). +-define(wxFindReplaceDialog_destruct, 2298). +-define(wxFindReplaceDialog_Create, 2299). +-define(wxFindReplaceDialog_GetData, 2300). +-define(wxFindReplaceData_new_0, 2301). +-define(wxFindReplaceData_new_1, 2302). +-define(wxFindReplaceData_GetFindString, 2303). +-define(wxFindReplaceData_GetReplaceString, 2304). +-define(wxFindReplaceData_GetFlags, 2305). +-define(wxFindReplaceData_SetFlags, 2306). +-define(wxFindReplaceData_SetFindString, 2307). +-define(wxFindReplaceData_SetReplaceString, 2308). +-define(wxFindReplaceData_destroy, 2309). +-define(wxMultiChoiceDialog_new_0, 2310). +-define(wxMultiChoiceDialog_new_5, 2312). +-define(wxMultiChoiceDialog_GetSelections, 2313). +-define(wxMultiChoiceDialog_SetSelections, 2314). +-define(wxMultiChoiceDialog_destroy, 2315). +-define(wxSingleChoiceDialog_new_0, 2316). +-define(wxSingleChoiceDialog_new_5, 2318). +-define(wxSingleChoiceDialog_GetSelection, 2319). +-define(wxSingleChoiceDialog_GetStringSelection, 2320). +-define(wxSingleChoiceDialog_SetSelection, 2321). +-define(wxSingleChoiceDialog_destroy, 2322). +-define(wxTextEntryDialog_new, 2323). +-define(wxTextEntryDialog_GetValue, 2324). +-define(wxTextEntryDialog_SetValue, 2325). +-define(wxTextEntryDialog_destroy, 2326). +-define(wxPasswordEntryDialog_new, 2327). +-define(wxPasswordEntryDialog_destroy, 2328). +-define(wxFontData_new_0, 2329). +-define(wxFontData_new_1, 2330). +-define(wxFontData_destruct, 2331). +-define(wxFontData_EnableEffects, 2332). +-define(wxFontData_GetAllowSymbols, 2333). +-define(wxFontData_GetColour, 2334). +-define(wxFontData_GetChosenFont, 2335). +-define(wxFontData_GetEnableEffects, 2336). +-define(wxFontData_GetInitialFont, 2337). +-define(wxFontData_GetShowHelp, 2338). +-define(wxFontData_SetAllowSymbols, 2339). +-define(wxFontData_SetChosenFont, 2340). +-define(wxFontData_SetColour, 2341). +-define(wxFontData_SetInitialFont, 2342). +-define(wxFontData_SetRange, 2343). +-define(wxFontData_SetShowHelp, 2344). +-define(wxFontDialog_new_0, 2348). +-define(wxFontDialog_new_2, 2350). +-define(wxFontDialog_Create, 2352). +-define(wxFontDialog_GetFontData, 2353). +-define(wxFontDialog_destroy, 2355). +-define(wxProgressDialog_new, 2356). +-define(wxProgressDialog_destruct, 2357). +-define(wxProgressDialog_Resume, 2358). +-define(wxProgressDialog_Update_2, 2359). +-define(wxProgressDialog_Update_0, 2360). +-define(wxMessageDialog_new, 2361). +-define(wxMessageDialog_destruct, 2362). +-define(wxPageSetupDialog_new, 2363). +-define(wxPageSetupDialog_destruct, 2364). +-define(wxPageSetupDialog_GetPageSetupData, 2365). +-define(wxPageSetupDialog_ShowModal, 2366). +-define(wxPageSetupDialogData_new_0, 2367). +-define(wxPageSetupDialogData_new_1_0, 2368). +-define(wxPageSetupDialogData_new_1_1, 2369). +-define(wxPageSetupDialogData_destruct, 2370). +-define(wxPageSetupDialogData_EnableHelp, 2371). +-define(wxPageSetupDialogData_EnableMargins, 2372). +-define(wxPageSetupDialogData_EnableOrientation, 2373). +-define(wxPageSetupDialogData_EnablePaper, 2374). +-define(wxPageSetupDialogData_EnablePrinter, 2375). +-define(wxPageSetupDialogData_GetDefaultMinMargins, 2376). +-define(wxPageSetupDialogData_GetEnableMargins, 2377). +-define(wxPageSetupDialogData_GetEnableOrientation, 2378). +-define(wxPageSetupDialogData_GetEnablePaper, 2379). +-define(wxPageSetupDialogData_GetEnablePrinter, 2380). +-define(wxPageSetupDialogData_GetEnableHelp, 2381). +-define(wxPageSetupDialogData_GetDefaultInfo, 2382). +-define(wxPageSetupDialogData_GetMarginTopLeft, 2383). +-define(wxPageSetupDialogData_GetMarginBottomRight, 2384). +-define(wxPageSetupDialogData_GetMinMarginTopLeft, 2385). +-define(wxPageSetupDialogData_GetMinMarginBottomRight, 2386). +-define(wxPageSetupDialogData_GetPaperId, 2387). +-define(wxPageSetupDialogData_GetPaperSize, 2388). +-define(wxPageSetupDialogData_GetPrintData, 2390). +-define(wxPageSetupDialogData_IsOk, 2391). +-define(wxPageSetupDialogData_SetDefaultInfo, 2392). +-define(wxPageSetupDialogData_SetDefaultMinMargins, 2393). +-define(wxPageSetupDialogData_SetMarginTopLeft, 2394). +-define(wxPageSetupDialogData_SetMarginBottomRight, 2395). +-define(wxPageSetupDialogData_SetMinMarginTopLeft, 2396). +-define(wxPageSetupDialogData_SetMinMarginBottomRight, 2397). +-define(wxPageSetupDialogData_SetPaperId, 2398). +-define(wxPageSetupDialogData_SetPaperSize_1_1, 2399). +-define(wxPageSetupDialogData_SetPaperSize_1_0, 2400). +-define(wxPageSetupDialogData_SetPrintData, 2401). +-define(wxPrintDialog_new_2_0, 2402). +-define(wxPrintDialog_new_2_1, 2403). +-define(wxPrintDialog_destruct, 2404). +-define(wxPrintDialog_GetPrintDialogData, 2405). +-define(wxPrintDialog_GetPrintDC, 2406). +-define(wxPrintDialogData_new_0, 2407). +-define(wxPrintDialogData_new_1_1, 2408). +-define(wxPrintDialogData_new_1_0, 2409). +-define(wxPrintDialogData_destruct, 2410). +-define(wxPrintDialogData_EnableHelp, 2411). +-define(wxPrintDialogData_EnablePageNumbers, 2412). +-define(wxPrintDialogData_EnablePrintToFile, 2413). +-define(wxPrintDialogData_EnableSelection, 2414). +-define(wxPrintDialogData_GetAllPages, 2415). +-define(wxPrintDialogData_GetCollate, 2416). +-define(wxPrintDialogData_GetFromPage, 2417). +-define(wxPrintDialogData_GetMaxPage, 2418). +-define(wxPrintDialogData_GetMinPage, 2419). +-define(wxPrintDialogData_GetNoCopies, 2420). +-define(wxPrintDialogData_GetPrintData, 2421). +-define(wxPrintDialogData_GetPrintToFile, 2422). +-define(wxPrintDialogData_GetSelection, 2423). +-define(wxPrintDialogData_GetToPage, 2424). +-define(wxPrintDialogData_IsOk, 2425). +-define(wxPrintDialogData_SetCollate, 2426). +-define(wxPrintDialogData_SetFromPage, 2427). +-define(wxPrintDialogData_SetMaxPage, 2428). +-define(wxPrintDialogData_SetMinPage, 2429). +-define(wxPrintDialogData_SetNoCopies, 2430). +-define(wxPrintDialogData_SetPrintData, 2431). +-define(wxPrintDialogData_SetPrintToFile, 2432). +-define(wxPrintDialogData_SetSelection, 2433). +-define(wxPrintDialogData_SetToPage, 2434). +-define(wxPrintData_new_0, 2435). +-define(wxPrintData_new_1, 2436). +-define(wxPrintData_destruct, 2437). +-define(wxPrintData_GetCollate, 2438). +-define(wxPrintData_GetBin, 2439). +-define(wxPrintData_GetColour, 2440). +-define(wxPrintData_GetDuplex, 2441). +-define(wxPrintData_GetNoCopies, 2442). +-define(wxPrintData_GetOrientation, 2443). +-define(wxPrintData_GetPaperId, 2444). +-define(wxPrintData_GetPrinterName, 2445). +-define(wxPrintData_GetQuality, 2446). +-define(wxPrintData_IsOk, 2447). +-define(wxPrintData_SetBin, 2448). +-define(wxPrintData_SetCollate, 2449). +-define(wxPrintData_SetColour, 2450). +-define(wxPrintData_SetDuplex, 2451). +-define(wxPrintData_SetNoCopies, 2452). +-define(wxPrintData_SetOrientation, 2453). +-define(wxPrintData_SetPaperId, 2454). +-define(wxPrintData_SetPrinterName, 2455). +-define(wxPrintData_SetQuality, 2456). +-define(wxPrintPreview_new_2, 2459). +-define(wxPrintPreview_new_3, 2460). +-define(wxPrintPreview_destruct, 2462). +-define(wxPrintPreview_GetCanvas, 2463). +-define(wxPrintPreview_GetCurrentPage, 2464). +-define(wxPrintPreview_GetFrame, 2465). +-define(wxPrintPreview_GetMaxPage, 2466). +-define(wxPrintPreview_GetMinPage, 2467). +-define(wxPrintPreview_GetPrintout, 2468). +-define(wxPrintPreview_GetPrintoutForPrinting, 2469). +-define(wxPrintPreview_IsOk, 2470). +-define(wxPrintPreview_PaintPage, 2471). +-define(wxPrintPreview_Print, 2472). +-define(wxPrintPreview_RenderPage, 2473). +-define(wxPrintPreview_SetCanvas, 2474). +-define(wxPrintPreview_SetCurrentPage, 2475). +-define(wxPrintPreview_SetFrame, 2476). +-define(wxPrintPreview_SetPrintout, 2477). +-define(wxPrintPreview_SetZoom, 2478). +-define(wxPreviewFrame_new, 2479). +-define(wxPreviewFrame_destruct, 2480). +-define(wxPreviewFrame_CreateControlBar, 2481). +-define(wxPreviewFrame_CreateCanvas, 2482). +-define(wxPreviewFrame_Initialize, 2483). +-define(wxPreviewFrame_OnCloseWindow, 2484). +-define(wxPreviewControlBar_new, 2485). +-define(wxPreviewControlBar_destruct, 2486). +-define(wxPreviewControlBar_CreateButtons, 2487). +-define(wxPreviewControlBar_GetPrintPreview, 2488). +-define(wxPreviewControlBar_GetZoomControl, 2489). +-define(wxPreviewControlBar_SetZoomControl, 2490). +-define(wxPrinter_new, 2492). +-define(wxPrinter_CreateAbortWindow, 2493). +-define(wxPrinter_GetAbort, 2494). +-define(wxPrinter_GetLastError, 2495). +-define(wxPrinter_GetPrintDialogData, 2496). +-define(wxPrinter_Print, 2497). +-define(wxPrinter_PrintDialog, 2498). +-define(wxPrinter_ReportError, 2499). +-define(wxPrinter_Setup, 2500). +-define(wxPrinter_destroy, 2501). +-define(wxXmlResource_new_1, 2502). +-define(wxXmlResource_new_2, 2503). +-define(wxXmlResource_destruct, 2504). +-define(wxXmlResource_AttachUnknownControl, 2505). +-define(wxXmlResource_ClearHandlers, 2506). +-define(wxXmlResource_CompareVersion, 2507). +-define(wxXmlResource_Get, 2508). +-define(wxXmlResource_GetFlags, 2509). +-define(wxXmlResource_GetVersion, 2510). +-define(wxXmlResource_GetXRCID, 2511). +-define(wxXmlResource_InitAllHandlers, 2512). +-define(wxXmlResource_Load, 2513). +-define(wxXmlResource_LoadBitmap, 2514). +-define(wxXmlResource_LoadDialog_2, 2515). +-define(wxXmlResource_LoadDialog_3, 2516). +-define(wxXmlResource_LoadFrame_2, 2517). +-define(wxXmlResource_LoadFrame_3, 2518). +-define(wxXmlResource_LoadIcon, 2519). +-define(wxXmlResource_LoadMenu, 2520). +-define(wxXmlResource_LoadMenuBar_2, 2521). +-define(wxXmlResource_LoadMenuBar_1, 2522). +-define(wxXmlResource_LoadPanel_2, 2523). +-define(wxXmlResource_LoadPanel_3, 2524). +-define(wxXmlResource_LoadToolBar, 2525). +-define(wxXmlResource_Set, 2526). +-define(wxXmlResource_SetFlags, 2527). +-define(wxXmlResource_Unload, 2528). +-define(wxXmlResource_xrcctrl, 2529). +-define(wxHtmlEasyPrinting_new, 2530). +-define(wxHtmlEasyPrinting_destruct, 2531). +-define(wxHtmlEasyPrinting_GetPrintData, 2532). +-define(wxHtmlEasyPrinting_GetPageSetupData, 2533). +-define(wxHtmlEasyPrinting_PreviewFile, 2534). +-define(wxHtmlEasyPrinting_PreviewText, 2535). +-define(wxHtmlEasyPrinting_PrintFile, 2536). +-define(wxHtmlEasyPrinting_PrintText, 2537). +-define(wxHtmlEasyPrinting_PageSetup, 2538). +-define(wxHtmlEasyPrinting_SetFonts, 2539). +-define(wxHtmlEasyPrinting_SetHeader, 2540). +-define(wxHtmlEasyPrinting_SetFooter, 2541). +-define(wxGLCanvas_new_2, 2543). +-define(wxGLCanvas_new_3_1, 2544). +-define(wxGLCanvas_new_3_0, 2545). +-define(wxGLCanvas_GetContext, 2546). +-define(wxGLCanvas_SetCurrent, 2548). +-define(wxGLCanvas_SwapBuffers, 2549). +-define(wxGLCanvas_destroy, 2550). +-define(wxAuiManager_new, 2551). +-define(wxAuiManager_destruct, 2552). +-define(wxAuiManager_AddPane_2_1, 2553). +-define(wxAuiManager_AddPane_3, 2554). +-define(wxAuiManager_AddPane_2_0, 2555). +-define(wxAuiManager_DetachPane, 2556). +-define(wxAuiManager_GetAllPanes, 2557). +-define(wxAuiManager_GetArtProvider, 2558). +-define(wxAuiManager_GetDockSizeConstraint, 2559). +-define(wxAuiManager_GetFlags, 2560). +-define(wxAuiManager_GetManagedWindow, 2561). +-define(wxAuiManager_GetManager, 2562). +-define(wxAuiManager_GetPane_1_1, 2563). +-define(wxAuiManager_GetPane_1_0, 2564). +-define(wxAuiManager_HideHint, 2565). +-define(wxAuiManager_InsertPane, 2566). +-define(wxAuiManager_LoadPaneInfo, 2567). +-define(wxAuiManager_LoadPerspective, 2568). +-define(wxAuiManager_SavePaneInfo, 2569). +-define(wxAuiManager_SavePerspective, 2570). +-define(wxAuiManager_SetArtProvider, 2571). +-define(wxAuiManager_SetDockSizeConstraint, 2572). +-define(wxAuiManager_SetFlags, 2573). +-define(wxAuiManager_SetManagedWindow, 2574). +-define(wxAuiManager_ShowHint, 2575). +-define(wxAuiManager_UnInit, 2576). +-define(wxAuiManager_Update, 2577). +-define(wxAuiPaneInfo_new_0, 2578). +-define(wxAuiPaneInfo_new_1, 2579). +-define(wxAuiPaneInfo_destruct, 2580). +-define(wxAuiPaneInfo_BestSize_1, 2581). +-define(wxAuiPaneInfo_BestSize_2, 2582). +-define(wxAuiPaneInfo_Bottom, 2583). +-define(wxAuiPaneInfo_BottomDockable, 2584). +-define(wxAuiPaneInfo_Caption, 2585). +-define(wxAuiPaneInfo_CaptionVisible, 2586). +-define(wxAuiPaneInfo_Centre, 2587). +-define(wxAuiPaneInfo_CentrePane, 2588). +-define(wxAuiPaneInfo_CloseButton, 2589). +-define(wxAuiPaneInfo_DefaultPane, 2590). +-define(wxAuiPaneInfo_DestroyOnClose, 2591). +-define(wxAuiPaneInfo_Direction, 2592). +-define(wxAuiPaneInfo_Dock, 2593). +-define(wxAuiPaneInfo_Dockable, 2594). +-define(wxAuiPaneInfo_Fixed, 2595). +-define(wxAuiPaneInfo_Float, 2596). +-define(wxAuiPaneInfo_Floatable, 2597). +-define(wxAuiPaneInfo_FloatingPosition_1, 2598). +-define(wxAuiPaneInfo_FloatingPosition_2, 2599). +-define(wxAuiPaneInfo_FloatingSize_1, 2600). +-define(wxAuiPaneInfo_FloatingSize_2, 2601). +-define(wxAuiPaneInfo_Gripper, 2602). +-define(wxAuiPaneInfo_GripperTop, 2603). +-define(wxAuiPaneInfo_HasBorder, 2604). +-define(wxAuiPaneInfo_HasCaption, 2605). +-define(wxAuiPaneInfo_HasCloseButton, 2606). +-define(wxAuiPaneInfo_HasFlag, 2607). +-define(wxAuiPaneInfo_HasGripper, 2608). +-define(wxAuiPaneInfo_HasGripperTop, 2609). +-define(wxAuiPaneInfo_HasMaximizeButton, 2610). +-define(wxAuiPaneInfo_HasMinimizeButton, 2611). +-define(wxAuiPaneInfo_HasPinButton, 2612). +-define(wxAuiPaneInfo_Hide, 2613). +-define(wxAuiPaneInfo_IsBottomDockable, 2614). +-define(wxAuiPaneInfo_IsDocked, 2615). +-define(wxAuiPaneInfo_IsFixed, 2616). +-define(wxAuiPaneInfo_IsFloatable, 2617). +-define(wxAuiPaneInfo_IsFloating, 2618). +-define(wxAuiPaneInfo_IsLeftDockable, 2619). +-define(wxAuiPaneInfo_IsMovable, 2620). +-define(wxAuiPaneInfo_IsOk, 2621). +-define(wxAuiPaneInfo_IsResizable, 2622). +-define(wxAuiPaneInfo_IsRightDockable, 2623). +-define(wxAuiPaneInfo_IsShown, 2624). +-define(wxAuiPaneInfo_IsToolbar, 2625). +-define(wxAuiPaneInfo_IsTopDockable, 2626). +-define(wxAuiPaneInfo_Layer, 2627). +-define(wxAuiPaneInfo_Left, 2628). +-define(wxAuiPaneInfo_LeftDockable, 2629). +-define(wxAuiPaneInfo_MaxSize_1, 2630). +-define(wxAuiPaneInfo_MaxSize_2, 2631). +-define(wxAuiPaneInfo_MaximizeButton, 2632). +-define(wxAuiPaneInfo_MinSize_1, 2633). +-define(wxAuiPaneInfo_MinSize_2, 2634). +-define(wxAuiPaneInfo_MinimizeButton, 2635). +-define(wxAuiPaneInfo_Movable, 2636). +-define(wxAuiPaneInfo_Name, 2637). +-define(wxAuiPaneInfo_PaneBorder, 2638). +-define(wxAuiPaneInfo_PinButton, 2639). +-define(wxAuiPaneInfo_Position, 2640). +-define(wxAuiPaneInfo_Resizable, 2641). +-define(wxAuiPaneInfo_Right, 2642). +-define(wxAuiPaneInfo_RightDockable, 2643). +-define(wxAuiPaneInfo_Row, 2644). +-define(wxAuiPaneInfo_SafeSet, 2645). +-define(wxAuiPaneInfo_SetFlag, 2646). +-define(wxAuiPaneInfo_Show, 2647). +-define(wxAuiPaneInfo_ToolbarPane, 2648). +-define(wxAuiPaneInfo_Top, 2649). +-define(wxAuiPaneInfo_TopDockable, 2650). +-define(wxAuiPaneInfo_Window, 2651). +-define(wxAuiNotebook_new_0, 2652). +-define(wxAuiNotebook_new_2, 2653). +-define(wxAuiNotebook_AddPage, 2654). +-define(wxAuiNotebook_Create, 2655). +-define(wxAuiNotebook_DeletePage, 2656). +-define(wxAuiNotebook_GetArtProvider, 2657). +-define(wxAuiNotebook_GetPage, 2658). +-define(wxAuiNotebook_GetPageBitmap, 2659). +-define(wxAuiNotebook_GetPageCount, 2660). +-define(wxAuiNotebook_GetPageIndex, 2661). +-define(wxAuiNotebook_GetPageText, 2662). +-define(wxAuiNotebook_GetSelection, 2663). +-define(wxAuiNotebook_InsertPage, 2664). +-define(wxAuiNotebook_RemovePage, 2665). +-define(wxAuiNotebook_SetArtProvider, 2666). +-define(wxAuiNotebook_SetFont, 2667). +-define(wxAuiNotebook_SetPageBitmap, 2668). +-define(wxAuiNotebook_SetPageText, 2669). +-define(wxAuiNotebook_SetSelection, 2670). +-define(wxAuiNotebook_SetTabCtrlHeight, 2671). +-define(wxAuiNotebook_SetUniformBitmapSize, 2672). +-define(wxAuiNotebook_destroy, 2673). +-define(wxMDIParentFrame_new_0, 2674). +-define(wxMDIParentFrame_new_4, 2675). +-define(wxMDIParentFrame_destruct, 2676). +-define(wxMDIParentFrame_ActivateNext, 2677). +-define(wxMDIParentFrame_ActivatePrevious, 2678). +-define(wxMDIParentFrame_ArrangeIcons, 2679). +-define(wxMDIParentFrame_Cascade, 2680). +-define(wxMDIParentFrame_Create, 2681). +-define(wxMDIParentFrame_GetActiveChild, 2682). +-define(wxMDIParentFrame_GetClientWindow, 2683). +-define(wxMDIParentFrame_Tile, 2684). +-define(wxMDIChildFrame_new_0, 2685). +-define(wxMDIChildFrame_new_4, 2686). +-define(wxMDIChildFrame_destruct, 2687). +-define(wxMDIChildFrame_Activate, 2688). +-define(wxMDIChildFrame_Create, 2689). +-define(wxMDIChildFrame_Maximize, 2690). +-define(wxMDIChildFrame_Restore, 2691). +-define(wxMDIClientWindow_new_0, 2692). +-define(wxMDIClientWindow_new_2, 2693). +-define(wxMDIClientWindow_destruct, 2694). +-define(wxMDIClientWindow_CreateClient, 2695). +-define(wxLayoutAlgorithm_new, 2696). +-define(wxLayoutAlgorithm_LayoutFrame, 2697). +-define(wxLayoutAlgorithm_LayoutMDIFrame, 2698). +-define(wxLayoutAlgorithm_LayoutWindow, 2699). +-define(wxLayoutAlgorithm_destroy, 2700). +-define(wxEvent_GetId, 2701). +-define(wxEvent_GetSkipped, 2702). +-define(wxEvent_GetTimestamp, 2703). +-define(wxEvent_IsCommandEvent, 2704). +-define(wxEvent_ResumePropagation, 2705). +-define(wxEvent_ShouldPropagate, 2706). +-define(wxEvent_Skip, 2707). +-define(wxEvent_StopPropagation, 2708). +-define(wxCommandEvent_getClientData, 2709). +-define(wxCommandEvent_GetExtraLong, 2710). +-define(wxCommandEvent_GetInt, 2711). +-define(wxCommandEvent_GetSelection, 2712). +-define(wxCommandEvent_GetString, 2713). +-define(wxCommandEvent_IsChecked, 2714). +-define(wxCommandEvent_IsSelection, 2715). +-define(wxCommandEvent_SetInt, 2716). +-define(wxCommandEvent_SetString, 2717). +-define(wxScrollEvent_GetOrientation, 2718). +-define(wxScrollEvent_GetPosition, 2719). +-define(wxScrollWinEvent_GetOrientation, 2720). +-define(wxScrollWinEvent_GetPosition, 2721). +-define(wxMouseEvent_AltDown, 2722). +-define(wxMouseEvent_Button, 2723). +-define(wxMouseEvent_ButtonDClick, 2724). +-define(wxMouseEvent_ButtonDown, 2725). +-define(wxMouseEvent_ButtonUp, 2726). +-define(wxMouseEvent_CmdDown, 2727). +-define(wxMouseEvent_ControlDown, 2728). +-define(wxMouseEvent_Dragging, 2729). +-define(wxMouseEvent_Entering, 2730). +-define(wxMouseEvent_GetButton, 2731). +-define(wxMouseEvent_GetPosition, 2734). +-define(wxMouseEvent_GetLogicalPosition, 2735). +-define(wxMouseEvent_GetLinesPerAction, 2736). +-define(wxMouseEvent_GetWheelRotation, 2737). +-define(wxMouseEvent_GetWheelDelta, 2738). +-define(wxMouseEvent_GetX, 2739). +-define(wxMouseEvent_GetY, 2740). +-define(wxMouseEvent_IsButton, 2741). +-define(wxMouseEvent_IsPageScroll, 2742). +-define(wxMouseEvent_Leaving, 2743). +-define(wxMouseEvent_LeftDClick, 2744). +-define(wxMouseEvent_LeftDown, 2745). +-define(wxMouseEvent_LeftIsDown, 2746). +-define(wxMouseEvent_LeftUp, 2747). +-define(wxMouseEvent_MetaDown, 2748). +-define(wxMouseEvent_MiddleDClick, 2749). +-define(wxMouseEvent_MiddleDown, 2750). +-define(wxMouseEvent_MiddleIsDown, 2751). +-define(wxMouseEvent_MiddleUp, 2752). +-define(wxMouseEvent_Moving, 2753). +-define(wxMouseEvent_RightDClick, 2754). +-define(wxMouseEvent_RightDown, 2755). +-define(wxMouseEvent_RightIsDown, 2756). +-define(wxMouseEvent_RightUp, 2757). +-define(wxMouseEvent_ShiftDown, 2758). +-define(wxSetCursorEvent_GetCursor, 2759). +-define(wxSetCursorEvent_GetX, 2760). +-define(wxSetCursorEvent_GetY, 2761). +-define(wxSetCursorEvent_HasCursor, 2762). +-define(wxSetCursorEvent_SetCursor, 2763). +-define(wxKeyEvent_AltDown, 2764). +-define(wxKeyEvent_CmdDown, 2765). +-define(wxKeyEvent_ControlDown, 2766). +-define(wxKeyEvent_GetKeyCode, 2767). +-define(wxKeyEvent_GetModifiers, 2768). +-define(wxKeyEvent_GetPosition, 2771). +-define(wxKeyEvent_GetRawKeyCode, 2772). +-define(wxKeyEvent_GetRawKeyFlags, 2773). +-define(wxKeyEvent_GetUnicodeKey, 2774). +-define(wxKeyEvent_GetX, 2775). +-define(wxKeyEvent_GetY, 2776). +-define(wxKeyEvent_HasModifiers, 2777). +-define(wxKeyEvent_MetaDown, 2778). +-define(wxKeyEvent_ShiftDown, 2779). +-define(wxSizeEvent_GetSize, 2780). +-define(wxMoveEvent_GetPosition, 2781). +-define(wxEraseEvent_GetDC, 2782). +-define(wxFocusEvent_GetWindow, 2783). +-define(wxChildFocusEvent_GetWindow, 2784). +-define(wxMenuEvent_GetMenu, 2785). +-define(wxMenuEvent_GetMenuId, 2786). +-define(wxMenuEvent_IsPopup, 2787). +-define(wxCloseEvent_CanVeto, 2788). +-define(wxCloseEvent_GetLoggingOff, 2789). +-define(wxCloseEvent_SetCanVeto, 2790). +-define(wxCloseEvent_SetLoggingOff, 2791). +-define(wxCloseEvent_Veto, 2792). +-define(wxShowEvent_SetShow, 2793). +-define(wxShowEvent_GetShow, 2794). +-define(wxIconizeEvent_Iconized, 2795). +-define(wxJoystickEvent_ButtonDown, 2796). +-define(wxJoystickEvent_ButtonIsDown, 2797). +-define(wxJoystickEvent_ButtonUp, 2798). +-define(wxJoystickEvent_GetButtonChange, 2799). +-define(wxJoystickEvent_GetButtonState, 2800). +-define(wxJoystickEvent_GetJoystick, 2801). +-define(wxJoystickEvent_GetPosition, 2802). +-define(wxJoystickEvent_GetZPosition, 2803). +-define(wxJoystickEvent_IsButton, 2804). +-define(wxJoystickEvent_IsMove, 2805). +-define(wxJoystickEvent_IsZMove, 2806). +-define(wxUpdateUIEvent_CanUpdate, 2807). +-define(wxUpdateUIEvent_Check, 2808). +-define(wxUpdateUIEvent_Enable, 2809). +-define(wxUpdateUIEvent_Show, 2810). +-define(wxUpdateUIEvent_GetChecked, 2811). +-define(wxUpdateUIEvent_GetEnabled, 2812). +-define(wxUpdateUIEvent_GetShown, 2813). +-define(wxUpdateUIEvent_GetSetChecked, 2814). +-define(wxUpdateUIEvent_GetSetEnabled, 2815). +-define(wxUpdateUIEvent_GetSetShown, 2816). +-define(wxUpdateUIEvent_GetSetText, 2817). +-define(wxUpdateUIEvent_GetText, 2818). +-define(wxUpdateUIEvent_GetMode, 2819). +-define(wxUpdateUIEvent_GetUpdateInterval, 2820). +-define(wxUpdateUIEvent_ResetUpdateTime, 2821). +-define(wxUpdateUIEvent_SetMode, 2822). +-define(wxUpdateUIEvent_SetText, 2823). +-define(wxUpdateUIEvent_SetUpdateInterval, 2824). +-define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2825). +-define(wxPaletteChangedEvent_SetChangedWindow, 2826). +-define(wxPaletteChangedEvent_GetChangedWindow, 2827). +-define(wxQueryNewPaletteEvent_SetPaletteRealized, 2828). +-define(wxQueryNewPaletteEvent_GetPaletteRealized, 2829). +-define(wxNavigationKeyEvent_GetDirection, 2830). +-define(wxNavigationKeyEvent_SetDirection, 2831). +-define(wxNavigationKeyEvent_IsWindowChange, 2832). +-define(wxNavigationKeyEvent_SetWindowChange, 2833). +-define(wxNavigationKeyEvent_IsFromTab, 2834). +-define(wxNavigationKeyEvent_SetFromTab, 2835). +-define(wxNavigationKeyEvent_GetCurrentFocus, 2836). +-define(wxNavigationKeyEvent_SetCurrentFocus, 2837). +-define(wxHelpEvent_GetOrigin, 2838). +-define(wxHelpEvent_GetPosition, 2839). +-define(wxHelpEvent_SetOrigin, 2840). +-define(wxHelpEvent_SetPosition, 2841). +-define(wxContextMenuEvent_GetPosition, 2842). +-define(wxContextMenuEvent_SetPosition, 2843). +-define(wxIdleEvent_CanSend, 2844). +-define(wxIdleEvent_GetMode, 2845). +-define(wxIdleEvent_RequestMore, 2846). +-define(wxIdleEvent_MoreRequested, 2847). +-define(wxIdleEvent_SetMode, 2848). +-define(wxGridEvent_AltDown, 2849). +-define(wxGridEvent_ControlDown, 2850). +-define(wxGridEvent_GetCol, 2851). +-define(wxGridEvent_GetPosition, 2852). +-define(wxGridEvent_GetRow, 2853). +-define(wxGridEvent_MetaDown, 2854). +-define(wxGridEvent_Selecting, 2855). +-define(wxGridEvent_ShiftDown, 2856). +-define(wxNotifyEvent_Allow, 2857). +-define(wxNotifyEvent_IsAllowed, 2858). +-define(wxNotifyEvent_Veto, 2859). +-define(wxSashEvent_GetEdge, 2860). +-define(wxSashEvent_GetDragRect, 2861). +-define(wxSashEvent_GetDragStatus, 2862). +-define(wxListEvent_GetCacheFrom, 2863). +-define(wxListEvent_GetCacheTo, 2864). +-define(wxListEvent_GetKeyCode, 2865). +-define(wxListEvent_GetIndex, 2866). +-define(wxListEvent_GetColumn, 2867). +-define(wxListEvent_GetPoint, 2868). +-define(wxListEvent_GetLabel, 2869). +-define(wxListEvent_GetText, 2870). +-define(wxListEvent_GetImage, 2871). +-define(wxListEvent_GetData, 2872). +-define(wxListEvent_GetMask, 2873). +-define(wxListEvent_GetItem, 2874). +-define(wxListEvent_IsEditCancelled, 2875). +-define(wxDateEvent_GetDate, 2876). +-define(wxCalendarEvent_GetWeekDay, 2877). +-define(wxFileDirPickerEvent_GetPath, 2878). +-define(wxColourPickerEvent_GetColour, 2879). +-define(wxFontPickerEvent_GetFont, 2880). +-define(wxStyledTextEvent_GetPosition, 2881). +-define(wxStyledTextEvent_GetKey, 2882). +-define(wxStyledTextEvent_GetModifiers, 2883). +-define(wxStyledTextEvent_GetModificationType, 2884). +-define(wxStyledTextEvent_GetText, 2885). +-define(wxStyledTextEvent_GetLength, 2886). +-define(wxStyledTextEvent_GetLinesAdded, 2887). +-define(wxStyledTextEvent_GetLine, 2888). +-define(wxStyledTextEvent_GetFoldLevelNow, 2889). +-define(wxStyledTextEvent_GetFoldLevelPrev, 2890). +-define(wxStyledTextEvent_GetMargin, 2891). +-define(wxStyledTextEvent_GetMessage, 2892). +-define(wxStyledTextEvent_GetWParam, 2893). +-define(wxStyledTextEvent_GetLParam, 2894). +-define(wxStyledTextEvent_GetListType, 2895). +-define(wxStyledTextEvent_GetX, 2896). +-define(wxStyledTextEvent_GetY, 2897). +-define(wxStyledTextEvent_GetDragText, 2898). +-define(wxStyledTextEvent_GetDragAllowMove, 2899). +-define(wxStyledTextEvent_GetDragResult, 2900). +-define(wxStyledTextEvent_GetShift, 2901). +-define(wxStyledTextEvent_GetControl, 2902). +-define(wxStyledTextEvent_GetAlt, 2903). +-define(utils_wxGetKeyState, 2904). +-define(utils_wxGetMousePosition, 2905). +-define(utils_wxGetMouseState, 2906). +-define(utils_wxSetDetectableAutoRepeat, 2907). +-define(utils_wxBell, 2908). +-define(utils_wxFindMenuItemId, 2909). +-define(utils_wxGenericFindWindowAtPoint, 2910). +-define(utils_wxFindWindowAtPoint, 2911). +-define(utils_wxBeginBusyCursor, 2912). +-define(utils_wxEndBusyCursor, 2913). +-define(utils_wxIsBusy, 2914). +-define(utils_wxShutdown, 2915). +-define(utils_wxShell, 2916). +-define(utils_wxLaunchDefaultBrowser, 2917). +-define(utils_wxGetEmailAddress, 2918). +-define(utils_wxGetUserId, 2919). +-define(utils_wxGetHomeDir, 2920). +-define(utils_wxNewId, 2921). +-define(utils_wxRegisterId, 2922). +-define(utils_wxGetCurrentId, 2923). +-define(utils_wxGetOsDescription, 2924). +-define(utils_wxIsPlatformLittleEndian, 2925). +-define(utils_wxIsPlatform64Bit, 2926). +-define(wxPrintout_new, 2927). +-define(wxPrintout_destruct, 2928). +-define(wxPrintout_GetDC, 2929). +-define(wxPrintout_GetPageSizeMM, 2930). +-define(wxPrintout_GetPageSizePixels, 2931). +-define(wxPrintout_GetPaperRectPixels, 2932). +-define(wxPrintout_GetPPIPrinter, 2933). +-define(wxPrintout_GetPPIScreen, 2934). +-define(wxPrintout_GetTitle, 2935). +-define(wxPrintout_IsPreview, 2936). +-define(wxPrintout_FitThisSizeToPaper, 2937). +-define(wxPrintout_FitThisSizeToPage, 2938). +-define(wxPrintout_FitThisSizeToPageMargins, 2939). +-define(wxPrintout_MapScreenSizeToPaper, 2940). +-define(wxPrintout_MapScreenSizeToPage, 2941). +-define(wxPrintout_MapScreenSizeToPageMargins, 2942). +-define(wxPrintout_MapScreenSizeToDevice, 2943). +-define(wxPrintout_GetLogicalPaperRect, 2944). +-define(wxPrintout_GetLogicalPageRect, 2945). +-define(wxPrintout_GetLogicalPageMarginsRect, 2946). +-define(wxPrintout_SetLogicalOrigin, 2947). +-define(wxPrintout_OffsetLogicalOrigin, 2948). +-define(wxStyledTextCtrl_new_2, 2949). +-define(wxStyledTextCtrl_new_0, 2950). +-define(wxStyledTextCtrl_destruct, 2951). +-define(wxStyledTextCtrl_Create, 2952). +-define(wxStyledTextCtrl_AddText, 2953). +-define(wxStyledTextCtrl_AddStyledText, 2954). +-define(wxStyledTextCtrl_InsertText, 2955). +-define(wxStyledTextCtrl_ClearAll, 2956). +-define(wxStyledTextCtrl_ClearDocumentStyle, 2957). +-define(wxStyledTextCtrl_GetLength, 2958). +-define(wxStyledTextCtrl_GetCharAt, 2959). +-define(wxStyledTextCtrl_GetCurrentPos, 2960). +-define(wxStyledTextCtrl_GetAnchor, 2961). +-define(wxStyledTextCtrl_GetStyleAt, 2962). +-define(wxStyledTextCtrl_Redo, 2963). +-define(wxStyledTextCtrl_SetUndoCollection, 2964). +-define(wxStyledTextCtrl_SelectAll, 2965). +-define(wxStyledTextCtrl_SetSavePoint, 2966). +-define(wxStyledTextCtrl_GetStyledText, 2967). +-define(wxStyledTextCtrl_CanRedo, 2968). +-define(wxStyledTextCtrl_MarkerLineFromHandle, 2969). +-define(wxStyledTextCtrl_MarkerDeleteHandle, 2970). +-define(wxStyledTextCtrl_GetUndoCollection, 2971). +-define(wxStyledTextCtrl_GetViewWhiteSpace, 2972). +-define(wxStyledTextCtrl_SetViewWhiteSpace, 2973). +-define(wxStyledTextCtrl_PositionFromPoint, 2974). +-define(wxStyledTextCtrl_PositionFromPointClose, 2975). +-define(wxStyledTextCtrl_GotoLine, 2976). +-define(wxStyledTextCtrl_GotoPos, 2977). +-define(wxStyledTextCtrl_SetAnchor, 2978). +-define(wxStyledTextCtrl_GetCurLine, 2979). +-define(wxStyledTextCtrl_GetEndStyled, 2980). +-define(wxStyledTextCtrl_ConvertEOLs, 2981). +-define(wxStyledTextCtrl_GetEOLMode, 2982). +-define(wxStyledTextCtrl_SetEOLMode, 2983). +-define(wxStyledTextCtrl_StartStyling, 2984). +-define(wxStyledTextCtrl_SetStyling, 2985). +-define(wxStyledTextCtrl_GetBufferedDraw, 2986). +-define(wxStyledTextCtrl_SetBufferedDraw, 2987). +-define(wxStyledTextCtrl_SetTabWidth, 2988). +-define(wxStyledTextCtrl_GetTabWidth, 2989). +-define(wxStyledTextCtrl_SetCodePage, 2990). +-define(wxStyledTextCtrl_MarkerDefine, 2991). +-define(wxStyledTextCtrl_MarkerSetForeground, 2992). +-define(wxStyledTextCtrl_MarkerSetBackground, 2993). +-define(wxStyledTextCtrl_MarkerAdd, 2994). +-define(wxStyledTextCtrl_MarkerDelete, 2995). +-define(wxStyledTextCtrl_MarkerDeleteAll, 2996). +-define(wxStyledTextCtrl_MarkerGet, 2997). +-define(wxStyledTextCtrl_MarkerNext, 2998). +-define(wxStyledTextCtrl_MarkerPrevious, 2999). +-define(wxStyledTextCtrl_MarkerDefineBitmap, 3000). +-define(wxStyledTextCtrl_MarkerAddSet, 3001). +-define(wxStyledTextCtrl_MarkerSetAlpha, 3002). +-define(wxStyledTextCtrl_SetMarginType, 3003). +-define(wxStyledTextCtrl_GetMarginType, 3004). +-define(wxStyledTextCtrl_SetMarginWidth, 3005). +-define(wxStyledTextCtrl_GetMarginWidth, 3006). +-define(wxStyledTextCtrl_SetMarginMask, 3007). +-define(wxStyledTextCtrl_GetMarginMask, 3008). +-define(wxStyledTextCtrl_SetMarginSensitive, 3009). +-define(wxStyledTextCtrl_GetMarginSensitive, 3010). +-define(wxStyledTextCtrl_StyleClearAll, 3011). +-define(wxStyledTextCtrl_StyleSetForeground, 3012). +-define(wxStyledTextCtrl_StyleSetBackground, 3013). +-define(wxStyledTextCtrl_StyleSetBold, 3014). +-define(wxStyledTextCtrl_StyleSetItalic, 3015). +-define(wxStyledTextCtrl_StyleSetSize, 3016). +-define(wxStyledTextCtrl_StyleSetFaceName, 3017). +-define(wxStyledTextCtrl_StyleSetEOLFilled, 3018). +-define(wxStyledTextCtrl_StyleResetDefault, 3019). +-define(wxStyledTextCtrl_StyleSetUnderline, 3020). +-define(wxStyledTextCtrl_StyleSetCase, 3021). +-define(wxStyledTextCtrl_StyleSetHotSpot, 3022). +-define(wxStyledTextCtrl_SetSelForeground, 3023). +-define(wxStyledTextCtrl_SetSelBackground, 3024). +-define(wxStyledTextCtrl_GetSelAlpha, 3025). +-define(wxStyledTextCtrl_SetSelAlpha, 3026). +-define(wxStyledTextCtrl_SetCaretForeground, 3027). +-define(wxStyledTextCtrl_CmdKeyAssign, 3028). +-define(wxStyledTextCtrl_CmdKeyClear, 3029). +-define(wxStyledTextCtrl_CmdKeyClearAll, 3030). +-define(wxStyledTextCtrl_SetStyleBytes, 3031). +-define(wxStyledTextCtrl_StyleSetVisible, 3032). +-define(wxStyledTextCtrl_GetCaretPeriod, 3033). +-define(wxStyledTextCtrl_SetCaretPeriod, 3034). +-define(wxStyledTextCtrl_SetWordChars, 3035). +-define(wxStyledTextCtrl_BeginUndoAction, 3036). +-define(wxStyledTextCtrl_EndUndoAction, 3037). +-define(wxStyledTextCtrl_IndicatorSetStyle, 3038). +-define(wxStyledTextCtrl_IndicatorGetStyle, 3039). +-define(wxStyledTextCtrl_IndicatorSetForeground, 3040). +-define(wxStyledTextCtrl_IndicatorGetForeground, 3041). +-define(wxStyledTextCtrl_SetWhitespaceForeground, 3042). +-define(wxStyledTextCtrl_SetWhitespaceBackground, 3043). +-define(wxStyledTextCtrl_GetStyleBits, 3044). +-define(wxStyledTextCtrl_SetLineState, 3045). +-define(wxStyledTextCtrl_GetLineState, 3046). +-define(wxStyledTextCtrl_GetMaxLineState, 3047). +-define(wxStyledTextCtrl_GetCaretLineVisible, 3048). +-define(wxStyledTextCtrl_SetCaretLineVisible, 3049). +-define(wxStyledTextCtrl_GetCaretLineBackground, 3050). +-define(wxStyledTextCtrl_SetCaretLineBackground, 3051). +-define(wxStyledTextCtrl_AutoCompShow, 3052). +-define(wxStyledTextCtrl_AutoCompCancel, 3053). +-define(wxStyledTextCtrl_AutoCompActive, 3054). +-define(wxStyledTextCtrl_AutoCompPosStart, 3055). +-define(wxStyledTextCtrl_AutoCompComplete, 3056). +-define(wxStyledTextCtrl_AutoCompStops, 3057). +-define(wxStyledTextCtrl_AutoCompSetSeparator, 3058). +-define(wxStyledTextCtrl_AutoCompGetSeparator, 3059). +-define(wxStyledTextCtrl_AutoCompSelect, 3060). +-define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3061). +-define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3062). +-define(wxStyledTextCtrl_AutoCompSetFillUps, 3063). +-define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3064). +-define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3065). +-define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3066). +-define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3067). +-define(wxStyledTextCtrl_UserListShow, 3068). +-define(wxStyledTextCtrl_AutoCompSetAutoHide, 3069). +-define(wxStyledTextCtrl_AutoCompGetAutoHide, 3070). +-define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3071). +-define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3072). +-define(wxStyledTextCtrl_RegisterImage, 3073). +-define(wxStyledTextCtrl_ClearRegisteredImages, 3074). +-define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3075). +-define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3076). +-define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3077). +-define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3078). +-define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3079). +-define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3080). +-define(wxStyledTextCtrl_SetIndent, 3081). +-define(wxStyledTextCtrl_GetIndent, 3082). +-define(wxStyledTextCtrl_SetUseTabs, 3083). +-define(wxStyledTextCtrl_GetUseTabs, 3084). +-define(wxStyledTextCtrl_SetLineIndentation, 3085). +-define(wxStyledTextCtrl_GetLineIndentation, 3086). +-define(wxStyledTextCtrl_GetLineIndentPosition, 3087). +-define(wxStyledTextCtrl_GetColumn, 3088). +-define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3089). +-define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3090). +-define(wxStyledTextCtrl_SetIndentationGuides, 3091). +-define(wxStyledTextCtrl_GetIndentationGuides, 3092). +-define(wxStyledTextCtrl_SetHighlightGuide, 3093). +-define(wxStyledTextCtrl_GetHighlightGuide, 3094). +-define(wxStyledTextCtrl_GetLineEndPosition, 3095). +-define(wxStyledTextCtrl_GetCodePage, 3096). +-define(wxStyledTextCtrl_GetCaretForeground, 3097). +-define(wxStyledTextCtrl_GetReadOnly, 3098). +-define(wxStyledTextCtrl_SetCurrentPos, 3099). +-define(wxStyledTextCtrl_SetSelectionStart, 3100). +-define(wxStyledTextCtrl_GetSelectionStart, 3101). +-define(wxStyledTextCtrl_SetSelectionEnd, 3102). +-define(wxStyledTextCtrl_GetSelectionEnd, 3103). +-define(wxStyledTextCtrl_SetPrintMagnification, 3104). +-define(wxStyledTextCtrl_GetPrintMagnification, 3105). +-define(wxStyledTextCtrl_SetPrintColourMode, 3106). +-define(wxStyledTextCtrl_GetPrintColourMode, 3107). +-define(wxStyledTextCtrl_FindText, 3108). +-define(wxStyledTextCtrl_FormatRange, 3109). +-define(wxStyledTextCtrl_GetFirstVisibleLine, 3110). +-define(wxStyledTextCtrl_GetLine, 3111). +-define(wxStyledTextCtrl_GetLineCount, 3112). +-define(wxStyledTextCtrl_SetMarginLeft, 3113). +-define(wxStyledTextCtrl_GetMarginLeft, 3114). +-define(wxStyledTextCtrl_SetMarginRight, 3115). +-define(wxStyledTextCtrl_GetMarginRight, 3116). +-define(wxStyledTextCtrl_GetModify, 3117). +-define(wxStyledTextCtrl_SetSelection, 3118). +-define(wxStyledTextCtrl_GetSelectedText, 3119). +-define(wxStyledTextCtrl_GetTextRange, 3120). +-define(wxStyledTextCtrl_HideSelection, 3121). +-define(wxStyledTextCtrl_LineFromPosition, 3122). +-define(wxStyledTextCtrl_PositionFromLine, 3123). +-define(wxStyledTextCtrl_LineScroll, 3124). +-define(wxStyledTextCtrl_EnsureCaretVisible, 3125). +-define(wxStyledTextCtrl_ReplaceSelection, 3126). +-define(wxStyledTextCtrl_SetReadOnly, 3127). +-define(wxStyledTextCtrl_CanPaste, 3128). +-define(wxStyledTextCtrl_CanUndo, 3129). +-define(wxStyledTextCtrl_EmptyUndoBuffer, 3130). +-define(wxStyledTextCtrl_Undo, 3131). +-define(wxStyledTextCtrl_Cut, 3132). +-define(wxStyledTextCtrl_Copy, 3133). +-define(wxStyledTextCtrl_Paste, 3134). +-define(wxStyledTextCtrl_Clear, 3135). +-define(wxStyledTextCtrl_SetText, 3136). +-define(wxStyledTextCtrl_GetText, 3137). +-define(wxStyledTextCtrl_GetTextLength, 3138). +-define(wxStyledTextCtrl_GetOvertype, 3139). +-define(wxStyledTextCtrl_SetCaretWidth, 3140). +-define(wxStyledTextCtrl_GetCaretWidth, 3141). +-define(wxStyledTextCtrl_SetTargetStart, 3142). +-define(wxStyledTextCtrl_GetTargetStart, 3143). +-define(wxStyledTextCtrl_SetTargetEnd, 3144). +-define(wxStyledTextCtrl_GetTargetEnd, 3145). +-define(wxStyledTextCtrl_ReplaceTarget, 3146). +-define(wxStyledTextCtrl_SearchInTarget, 3147). +-define(wxStyledTextCtrl_SetSearchFlags, 3148). +-define(wxStyledTextCtrl_GetSearchFlags, 3149). +-define(wxStyledTextCtrl_CallTipShow, 3150). +-define(wxStyledTextCtrl_CallTipCancel, 3151). +-define(wxStyledTextCtrl_CallTipActive, 3152). +-define(wxStyledTextCtrl_CallTipPosAtStart, 3153). +-define(wxStyledTextCtrl_CallTipSetHighlight, 3154). +-define(wxStyledTextCtrl_CallTipSetBackground, 3155). +-define(wxStyledTextCtrl_CallTipSetForeground, 3156). +-define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3157). +-define(wxStyledTextCtrl_CallTipUseStyle, 3158). +-define(wxStyledTextCtrl_VisibleFromDocLine, 3159). +-define(wxStyledTextCtrl_DocLineFromVisible, 3160). +-define(wxStyledTextCtrl_WrapCount, 3161). +-define(wxStyledTextCtrl_SetFoldLevel, 3162). +-define(wxStyledTextCtrl_GetFoldLevel, 3163). +-define(wxStyledTextCtrl_GetLastChild, 3164). +-define(wxStyledTextCtrl_GetFoldParent, 3165). +-define(wxStyledTextCtrl_ShowLines, 3166). +-define(wxStyledTextCtrl_HideLines, 3167). +-define(wxStyledTextCtrl_GetLineVisible, 3168). +-define(wxStyledTextCtrl_SetFoldExpanded, 3169). +-define(wxStyledTextCtrl_GetFoldExpanded, 3170). +-define(wxStyledTextCtrl_ToggleFold, 3171). +-define(wxStyledTextCtrl_EnsureVisible, 3172). +-define(wxStyledTextCtrl_SetFoldFlags, 3173). +-define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3174). +-define(wxStyledTextCtrl_SetTabIndents, 3175). +-define(wxStyledTextCtrl_GetTabIndents, 3176). +-define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3177). +-define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3178). +-define(wxStyledTextCtrl_SetMouseDwellTime, 3179). +-define(wxStyledTextCtrl_GetMouseDwellTime, 3180). +-define(wxStyledTextCtrl_WordStartPosition, 3181). +-define(wxStyledTextCtrl_WordEndPosition, 3182). +-define(wxStyledTextCtrl_SetWrapMode, 3183). +-define(wxStyledTextCtrl_GetWrapMode, 3184). +-define(wxStyledTextCtrl_SetWrapVisualFlags, 3185). +-define(wxStyledTextCtrl_GetWrapVisualFlags, 3186). +-define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3187). +-define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3188). +-define(wxStyledTextCtrl_SetWrapStartIndent, 3189). +-define(wxStyledTextCtrl_GetWrapStartIndent, 3190). +-define(wxStyledTextCtrl_SetLayoutCache, 3191). +-define(wxStyledTextCtrl_GetLayoutCache, 3192). +-define(wxStyledTextCtrl_SetScrollWidth, 3193). +-define(wxStyledTextCtrl_GetScrollWidth, 3194). +-define(wxStyledTextCtrl_TextWidth, 3195). +-define(wxStyledTextCtrl_GetEndAtLastLine, 3196). +-define(wxStyledTextCtrl_TextHeight, 3197). +-define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3198). +-define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3199). +-define(wxStyledTextCtrl_AppendText, 3200). +-define(wxStyledTextCtrl_GetTwoPhaseDraw, 3201). +-define(wxStyledTextCtrl_SetTwoPhaseDraw, 3202). +-define(wxStyledTextCtrl_TargetFromSelection, 3203). +-define(wxStyledTextCtrl_LinesJoin, 3204). +-define(wxStyledTextCtrl_LinesSplit, 3205). +-define(wxStyledTextCtrl_SetFoldMarginColour, 3206). +-define(wxStyledTextCtrl_SetFoldMarginHiColour, 3207). +-define(wxStyledTextCtrl_LineDown, 3208). +-define(wxStyledTextCtrl_LineDownExtend, 3209). +-define(wxStyledTextCtrl_LineUp, 3210). +-define(wxStyledTextCtrl_LineUpExtend, 3211). +-define(wxStyledTextCtrl_CharLeft, 3212). +-define(wxStyledTextCtrl_CharLeftExtend, 3213). +-define(wxStyledTextCtrl_CharRight, 3214). +-define(wxStyledTextCtrl_CharRightExtend, 3215). +-define(wxStyledTextCtrl_WordLeft, 3216). +-define(wxStyledTextCtrl_WordLeftExtend, 3217). +-define(wxStyledTextCtrl_WordRight, 3218). +-define(wxStyledTextCtrl_WordRightExtend, 3219). +-define(wxStyledTextCtrl_Home, 3220). +-define(wxStyledTextCtrl_HomeExtend, 3221). +-define(wxStyledTextCtrl_LineEnd, 3222). +-define(wxStyledTextCtrl_LineEndExtend, 3223). +-define(wxStyledTextCtrl_DocumentStart, 3224). +-define(wxStyledTextCtrl_DocumentStartExtend, 3225). +-define(wxStyledTextCtrl_DocumentEnd, 3226). +-define(wxStyledTextCtrl_DocumentEndExtend, 3227). +-define(wxStyledTextCtrl_PageUp, 3228). +-define(wxStyledTextCtrl_PageUpExtend, 3229). +-define(wxStyledTextCtrl_PageDown, 3230). +-define(wxStyledTextCtrl_PageDownExtend, 3231). +-define(wxStyledTextCtrl_EditToggleOvertype, 3232). +-define(wxStyledTextCtrl_Cancel, 3233). +-define(wxStyledTextCtrl_DeleteBack, 3234). +-define(wxStyledTextCtrl_Tab, 3235). +-define(wxStyledTextCtrl_BackTab, 3236). +-define(wxStyledTextCtrl_NewLine, 3237). +-define(wxStyledTextCtrl_FormFeed, 3238). +-define(wxStyledTextCtrl_VCHome, 3239). +-define(wxStyledTextCtrl_VCHomeExtend, 3240). +-define(wxStyledTextCtrl_ZoomIn, 3241). +-define(wxStyledTextCtrl_ZoomOut, 3242). +-define(wxStyledTextCtrl_DelWordLeft, 3243). +-define(wxStyledTextCtrl_DelWordRight, 3244). +-define(wxStyledTextCtrl_LineCut, 3245). +-define(wxStyledTextCtrl_LineDelete, 3246). +-define(wxStyledTextCtrl_LineTranspose, 3247). +-define(wxStyledTextCtrl_LineDuplicate, 3248). +-define(wxStyledTextCtrl_LowerCase, 3249). +-define(wxStyledTextCtrl_UpperCase, 3250). +-define(wxStyledTextCtrl_LineScrollDown, 3251). +-define(wxStyledTextCtrl_LineScrollUp, 3252). +-define(wxStyledTextCtrl_DeleteBackNotLine, 3253). +-define(wxStyledTextCtrl_HomeDisplay, 3254). +-define(wxStyledTextCtrl_HomeDisplayExtend, 3255). +-define(wxStyledTextCtrl_LineEndDisplay, 3256). +-define(wxStyledTextCtrl_LineEndDisplayExtend, 3257). +-define(wxStyledTextCtrl_HomeWrapExtend, 3258). +-define(wxStyledTextCtrl_LineEndWrap, 3259). +-define(wxStyledTextCtrl_LineEndWrapExtend, 3260). +-define(wxStyledTextCtrl_VCHomeWrap, 3261). +-define(wxStyledTextCtrl_VCHomeWrapExtend, 3262). +-define(wxStyledTextCtrl_LineCopy, 3263). +-define(wxStyledTextCtrl_MoveCaretInsideView, 3264). +-define(wxStyledTextCtrl_LineLength, 3265). +-define(wxStyledTextCtrl_BraceHighlight, 3266). +-define(wxStyledTextCtrl_BraceBadLight, 3267). +-define(wxStyledTextCtrl_BraceMatch, 3268). +-define(wxStyledTextCtrl_GetViewEOL, 3269). +-define(wxStyledTextCtrl_SetViewEOL, 3270). +-define(wxStyledTextCtrl_SetModEventMask, 3271). +-define(wxStyledTextCtrl_GetEdgeColumn, 3272). +-define(wxStyledTextCtrl_SetEdgeColumn, 3273). +-define(wxStyledTextCtrl_SetEdgeMode, 3274). +-define(wxStyledTextCtrl_GetEdgeMode, 3275). +-define(wxStyledTextCtrl_GetEdgeColour, 3276). +-define(wxStyledTextCtrl_SetEdgeColour, 3277). +-define(wxStyledTextCtrl_SearchAnchor, 3278). +-define(wxStyledTextCtrl_SearchNext, 3279). +-define(wxStyledTextCtrl_SearchPrev, 3280). +-define(wxStyledTextCtrl_LinesOnScreen, 3281). +-define(wxStyledTextCtrl_UsePopUp, 3282). +-define(wxStyledTextCtrl_SelectionIsRectangle, 3283). +-define(wxStyledTextCtrl_SetZoom, 3284). +-define(wxStyledTextCtrl_GetZoom, 3285). +-define(wxStyledTextCtrl_GetModEventMask, 3286). +-define(wxStyledTextCtrl_SetSTCFocus, 3287). +-define(wxStyledTextCtrl_GetSTCFocus, 3288). +-define(wxStyledTextCtrl_SetStatus, 3289). +-define(wxStyledTextCtrl_GetStatus, 3290). +-define(wxStyledTextCtrl_SetMouseDownCaptures, 3291). +-define(wxStyledTextCtrl_GetMouseDownCaptures, 3292). +-define(wxStyledTextCtrl_SetSTCCursor, 3293). +-define(wxStyledTextCtrl_GetSTCCursor, 3294). +-define(wxStyledTextCtrl_SetControlCharSymbol, 3295). +-define(wxStyledTextCtrl_GetControlCharSymbol, 3296). +-define(wxStyledTextCtrl_WordPartLeft, 3297). +-define(wxStyledTextCtrl_WordPartLeftExtend, 3298). +-define(wxStyledTextCtrl_WordPartRight, 3299). +-define(wxStyledTextCtrl_WordPartRightExtend, 3300). +-define(wxStyledTextCtrl_SetVisiblePolicy, 3301). +-define(wxStyledTextCtrl_DelLineLeft, 3302). +-define(wxStyledTextCtrl_DelLineRight, 3303). +-define(wxStyledTextCtrl_GetXOffset, 3304). +-define(wxStyledTextCtrl_ChooseCaretX, 3305). +-define(wxStyledTextCtrl_SetXCaretPolicy, 3306). +-define(wxStyledTextCtrl_SetYCaretPolicy, 3307). +-define(wxStyledTextCtrl_GetPrintWrapMode, 3308). +-define(wxStyledTextCtrl_SetHotspotActiveForeground, 3309). +-define(wxStyledTextCtrl_SetHotspotActiveBackground, 3310). +-define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3311). +-define(wxStyledTextCtrl_SetHotspotSingleLine, 3312). +-define(wxStyledTextCtrl_ParaDownExtend, 3313). +-define(wxStyledTextCtrl_ParaUp, 3314). +-define(wxStyledTextCtrl_ParaUpExtend, 3315). +-define(wxStyledTextCtrl_PositionBefore, 3316). +-define(wxStyledTextCtrl_PositionAfter, 3317). +-define(wxStyledTextCtrl_CopyRange, 3318). +-define(wxStyledTextCtrl_CopyText, 3319). +-define(wxStyledTextCtrl_SetSelectionMode, 3320). +-define(wxStyledTextCtrl_GetSelectionMode, 3321). +-define(wxStyledTextCtrl_LineDownRectExtend, 3322). +-define(wxStyledTextCtrl_LineUpRectExtend, 3323). +-define(wxStyledTextCtrl_CharLeftRectExtend, 3324). +-define(wxStyledTextCtrl_CharRightRectExtend, 3325). +-define(wxStyledTextCtrl_HomeRectExtend, 3326). +-define(wxStyledTextCtrl_VCHomeRectExtend, 3327). +-define(wxStyledTextCtrl_LineEndRectExtend, 3328). +-define(wxStyledTextCtrl_PageUpRectExtend, 3329). +-define(wxStyledTextCtrl_PageDownRectExtend, 3330). +-define(wxStyledTextCtrl_StutteredPageUp, 3331). +-define(wxStyledTextCtrl_StutteredPageUpExtend, 3332). +-define(wxStyledTextCtrl_StutteredPageDown, 3333). +-define(wxStyledTextCtrl_StutteredPageDownExtend, 3334). +-define(wxStyledTextCtrl_WordLeftEnd, 3335). +-define(wxStyledTextCtrl_WordLeftEndExtend, 3336). +-define(wxStyledTextCtrl_WordRightEnd, 3337). +-define(wxStyledTextCtrl_WordRightEndExtend, 3338). +-define(wxStyledTextCtrl_SetWhitespaceChars, 3339). +-define(wxStyledTextCtrl_SetCharsDefault, 3340). +-define(wxStyledTextCtrl_AutoCompGetCurrent, 3341). +-define(wxStyledTextCtrl_Allocate, 3342). +-define(wxStyledTextCtrl_FindColumn, 3343). +-define(wxStyledTextCtrl_GetCaretSticky, 3344). +-define(wxStyledTextCtrl_SetCaretSticky, 3345). +-define(wxStyledTextCtrl_ToggleCaretSticky, 3346). +-define(wxStyledTextCtrl_SetPasteConvertEndings, 3347). +-define(wxStyledTextCtrl_GetPasteConvertEndings, 3348). +-define(wxStyledTextCtrl_SelectionDuplicate, 3349). +-define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3350). +-define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3351). +-define(wxStyledTextCtrl_StartRecord, 3352). +-define(wxStyledTextCtrl_StopRecord, 3353). +-define(wxStyledTextCtrl_SetLexer, 3354). +-define(wxStyledTextCtrl_GetLexer, 3355). +-define(wxStyledTextCtrl_Colourise, 3356). +-define(wxStyledTextCtrl_SetProperty, 3357). +-define(wxStyledTextCtrl_SetKeyWords, 3358). +-define(wxStyledTextCtrl_SetLexerLanguage, 3359). +-define(wxStyledTextCtrl_GetProperty, 3360). +-define(wxStyledTextCtrl_GetStyleBitsNeeded, 3361). +-define(wxStyledTextCtrl_GetCurrentLine, 3362). +-define(wxStyledTextCtrl_StyleSetSpec, 3363). +-define(wxStyledTextCtrl_StyleSetFont, 3364). +-define(wxStyledTextCtrl_StyleSetFontAttr, 3365). +-define(wxStyledTextCtrl_StyleSetCharacterSet, 3366). +-define(wxStyledTextCtrl_StyleSetFontEncoding, 3367). +-define(wxStyledTextCtrl_CmdKeyExecute, 3368). +-define(wxStyledTextCtrl_SetMargins, 3369). +-define(wxStyledTextCtrl_GetSelection, 3370). +-define(wxStyledTextCtrl_PointFromPosition, 3371). +-define(wxStyledTextCtrl_ScrollToLine, 3372). +-define(wxStyledTextCtrl_ScrollToColumn, 3373). +-define(wxStyledTextCtrl_SetVScrollBar, 3374). +-define(wxStyledTextCtrl_SetHScrollBar, 3375). +-define(wxStyledTextCtrl_GetLastKeydownProcessed, 3376). +-define(wxStyledTextCtrl_SetLastKeydownProcessed, 3377). +-define(wxStyledTextCtrl_SaveFile, 3378). +-define(wxStyledTextCtrl_LoadFile, 3379). +-define(wxStyledTextCtrl_DoDragOver, 3380). +-define(wxStyledTextCtrl_DoDropText, 3381). +-define(wxStyledTextCtrl_GetUseAntiAliasing, 3382). +-define(wxStyledTextCtrl_AddTextRaw, 3383). +-define(wxStyledTextCtrl_InsertTextRaw, 3384). +-define(wxStyledTextCtrl_GetCurLineRaw, 3385). +-define(wxStyledTextCtrl_GetLineRaw, 3386). +-define(wxStyledTextCtrl_GetSelectedTextRaw, 3387). +-define(wxStyledTextCtrl_GetTextRangeRaw, 3388). +-define(wxStyledTextCtrl_SetTextRaw, 3389). +-define(wxStyledTextCtrl_GetTextRaw, 3390). +-define(wxStyledTextCtrl_AppendTextRaw, 3391). +-define(wxArtProvider_GetBitmap, 3392). +-define(wxArtProvider_GetIcon, 3393). +-define(wxTreeEvent_GetKeyCode, 3394). +-define(wxTreeEvent_GetItem, 3395). +-define(wxTreeEvent_GetKeyEvent, 3396). +-define(wxTreeEvent_GetLabel, 3397). +-define(wxTreeEvent_GetOldItem, 3398). +-define(wxTreeEvent_GetPoint, 3399). +-define(wxTreeEvent_IsEditCancelled, 3400). +-define(wxTreeEvent_SetToolTip, 3401). +-define(wxNotebookEvent_GetOldSelection, 3402). +-define(wxNotebookEvent_GetSelection, 3403). +-define(wxNotebookEvent_SetOldSelection, 3404). +-define(wxNotebookEvent_SetSelection, 3405). +-define(wxFileDataObject_new, 3406). +-define(wxFileDataObject_AddFile, 3407). +-define(wxFileDataObject_GetFilenames, 3408). +-define(wxFileDataObject_destroy, 3409). +-define(wxTextDataObject_new, 3410). +-define(wxTextDataObject_GetTextLength, 3411). +-define(wxTextDataObject_GetText, 3412). +-define(wxTextDataObject_SetText, 3413). +-define(wxTextDataObject_destroy, 3414). +-define(wxBitmapDataObject_new_1_1, 3415). +-define(wxBitmapDataObject_new_1_0, 3416). +-define(wxBitmapDataObject_GetBitmap, 3417). +-define(wxBitmapDataObject_SetBitmap, 3418). +-define(wxBitmapDataObject_destroy, 3419). +-define(wxClipboard_new, 3421). +-define(wxClipboard_destruct, 3422). +-define(wxClipboard_AddData, 3423). +-define(wxClipboard_Clear, 3424). +-define(wxClipboard_Close, 3425). +-define(wxClipboard_Flush, 3426). +-define(wxClipboard_GetData, 3427). +-define(wxClipboard_IsOpened, 3428). +-define(wxClipboard_Open, 3429). +-define(wxClipboard_SetData, 3430). +-define(wxClipboard_UsePrimarySelection, 3432). +-define(wxClipboard_IsSupported, 3433). +-define(wxClipboard_Get, 3434). +-define(wxSpinEvent_GetPosition, 3435). +-define(wxSpinEvent_SetPosition, 3436). +-define(wxSplitterWindow_new_0, 3437). +-define(wxSplitterWindow_new_2, 3438). +-define(wxSplitterWindow_destruct, 3439). +-define(wxSplitterWindow_Create, 3440). +-define(wxSplitterWindow_GetMinimumPaneSize, 3441). +-define(wxSplitterWindow_GetSashGravity, 3442). +-define(wxSplitterWindow_GetSashPosition, 3443). +-define(wxSplitterWindow_GetSplitMode, 3444). +-define(wxSplitterWindow_GetWindow1, 3445). +-define(wxSplitterWindow_GetWindow2, 3446). +-define(wxSplitterWindow_Initialize, 3447). +-define(wxSplitterWindow_IsSplit, 3448). +-define(wxSplitterWindow_ReplaceWindow, 3449). +-define(wxSplitterWindow_SetSashGravity, 3450). +-define(wxSplitterWindow_SetSashPosition, 3451). +-define(wxSplitterWindow_SetSashSize, 3452). +-define(wxSplitterWindow_SetMinimumPaneSize, 3453). +-define(wxSplitterWindow_SetSplitMode, 3454). +-define(wxSplitterWindow_SplitHorizontally, 3455). +-define(wxSplitterWindow_SplitVertically, 3456). +-define(wxSplitterWindow_Unsplit, 3457). +-define(wxSplitterWindow_UpdateSize, 3458). +-define(wxSplitterEvent_GetSashPosition, 3459). +-define(wxSplitterEvent_GetX, 3460). +-define(wxSplitterEvent_GetY, 3461). +-define(wxSplitterEvent_GetWindowBeingRemoved, 3462). +-define(wxSplitterEvent_SetSashPosition, 3463). +-define(wxHtmlWindow_new_0, 3464). +-define(wxHtmlWindow_new_2, 3465). +-define(wxHtmlWindow_AppendToPage, 3466). +-define(wxHtmlWindow_GetOpenedAnchor, 3467). +-define(wxHtmlWindow_GetOpenedPage, 3468). +-define(wxHtmlWindow_GetOpenedPageTitle, 3469). +-define(wxHtmlWindow_GetRelatedFrame, 3470). +-define(wxHtmlWindow_HistoryBack, 3471). +-define(wxHtmlWindow_HistoryCanBack, 3472). +-define(wxHtmlWindow_HistoryCanForward, 3473). +-define(wxHtmlWindow_HistoryClear, 3474). +-define(wxHtmlWindow_HistoryForward, 3475). +-define(wxHtmlWindow_LoadFile, 3476). +-define(wxHtmlWindow_LoadPage, 3477). +-define(wxHtmlWindow_SelectAll, 3478). +-define(wxHtmlWindow_SelectionToText, 3479). +-define(wxHtmlWindow_SelectLine, 3480). +-define(wxHtmlWindow_SelectWord, 3481). +-define(wxHtmlWindow_SetBorders, 3482). +-define(wxHtmlWindow_SetFonts, 3483). +-define(wxHtmlWindow_SetPage, 3484). +-define(wxHtmlWindow_SetRelatedFrame, 3485). +-define(wxHtmlWindow_SetRelatedStatusBar, 3486). +-define(wxHtmlWindow_ToText, 3487). +-define(wxHtmlWindow_destroy, 3488). +-define(wxHtmlLinkEvent_GetLinkInfo, 3489). +-define(wxSystemSettings_GetColour, 3490). +-define(wxSystemSettings_GetFont, 3491). +-define(wxSystemSettings_GetMetric, 3492). +-define(wxSystemSettings_GetScreenType, 3493). +-define(wxSystemOptions_GetOption, 3494). +-define(wxSystemOptions_GetOptionInt, 3495). +-define(wxSystemOptions_HasOption, 3496). +-define(wxSystemOptions_IsFalse, 3497). +-define(wxSystemOptions_SetOption_2_1, 3498). +-define(wxSystemOptions_SetOption_2_0, 3499). +-define(wxAuiNotebookEvent_SetSelection, 3500). +-define(wxAuiNotebookEvent_GetSelection, 3501). +-define(wxAuiNotebookEvent_SetOldSelection, 3502). +-define(wxAuiNotebookEvent_GetOldSelection, 3503). +-define(wxAuiNotebookEvent_SetDragSource, 3504). +-define(wxAuiNotebookEvent_GetDragSource, 3505). +-define(wxAuiManagerEvent_SetManager, 3506). +-define(wxAuiManagerEvent_GetManager, 3507). +-define(wxAuiManagerEvent_SetPane, 3508). +-define(wxAuiManagerEvent_GetPane, 3509). +-define(wxAuiManagerEvent_SetButton, 3510). +-define(wxAuiManagerEvent_GetButton, 3511). +-define(wxAuiManagerEvent_SetDC, 3512). +-define(wxAuiManagerEvent_GetDC, 3513). +-define(wxAuiManagerEvent_Veto, 3514). +-define(wxAuiManagerEvent_GetVeto, 3515). +-define(wxAuiManagerEvent_SetCanVeto, 3516). +-define(wxAuiManagerEvent_CanVeto, 3517). +-define(wxLogNull_new, 3518). +-define(wxLogNull_destroy, 3519). +-define(wxTaskBarIcon_new, 3520). +-define(wxTaskBarIcon_destruct, 3521). +-define(wxTaskBarIcon_PopupMenu, 3522). +-define(wxTaskBarIcon_RemoveIcon, 3523). +-define(wxTaskBarIcon_SetIcon, 3524). diff --git a/lib/wx/src/wxe_server.erl b/lib/wx/src/wxe_server.erl index 689fe16a70..a8604c76b9 100644 --- a/lib/wx/src/wxe_server.erl +++ b/lib/wx/src/wxe_server.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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/test/wx_class_SUITE.erl b/lib/wx/test/wx_class_SUITE.erl index 22bfa53e0a..4186d73c88 100644 --- a/lib/wx/test/wx_class_SUITE.erl +++ b/lib/wx/test/wx_class_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2012. All Rights Reserved. +%% Copyright Ericsson AB 2008-2013. 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,11 +130,19 @@ treeCtrl(Config) -> wxWindow:setSizerAndFit(Panel, Sizer), wxFrame:show(Frame), + ok = wxTreeCtrl:expand(Tree, Root), ?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)), + {true, {X0,Y0,W0,H0}} = ?m({_,_},wxTreeCtrl:getBoundingRect(Tree, Item1, [{textOnly, true}])), + ?m({true, {_,Y1,_,_}} when Y1 > Y0, wxTreeCtrl:getBoundingRect(Tree, Item2)), + ?m({Item1, _}, wxTreeCtrl:hitTest(Tree, {X0+W0 div 2, Y0+H0 div 2})), + ?m(true, wxTreeCtrl:isTreeItemIdOk(Item1)), + ?m({0, _}, wxTreeCtrl:hitTest(Tree, {X0+W0 div 2, Y0+H0+H0})), + ?m(false, wxTreeCtrl:isTreeItemIdOk(0)), + wxFrame:connect(Tree, command_tree_item_expanded), wxFrame:connect(Tree, command_tree_item_collapsed), wxFrame:connect(Frame, close_window), diff --git a/lib/wx/vsn.mk b/lib/wx/vsn.mk index 719eb0daf0..1c406ccec6 100644 --- a/lib/wx/vsn.mk +++ b/lib/wx/vsn.mk @@ -1 +1 @@ -WX_VSN = 0.99.2 +WX_VSN = 1.0 diff --git a/lib/xmerl/doc/src/notes.xml b/lib/xmerl/doc/src/notes.xml index 056097ab2b..4f6a917de5 100644 --- a/lib/xmerl/doc/src/notes.xml +++ b/lib/xmerl/doc/src/notes.xml @@ -31,6 +31,29 @@ <p>This document describes the changes made to the Xmerl application.</p> +<section><title>Xmerl 1.3.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Where necessary a comment stating encoding has been + added to Erlang files. The comment is meant to be removed + in Erlang/OTP R17B when UTF-8 becomes the default + encoding. </p> + <p> + Own Id: OTP-10630</p> + </item> + <item> + <p> Some examples overflowing the width of PDF pages have + been corrected. </p> + <p> + Own Id: OTP-10665</p> + </item> + </list> + </section> + +</section> + <section><title>Xmerl 1.3.2</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/xmerl/vsn.mk b/lib/xmerl/vsn.mk index 599bc0b9d3..de809e8ce0 100644 --- a/lib/xmerl/vsn.mk +++ b/lib/xmerl/vsn.mk @@ -1 +1 @@ -XMERL_VSN = 1.3.2 +XMERL_VSN = 1.3.3 |